/*!
 * Copyright (C) 2006-2011 IP Labs GmbH <http://www.iplabs.de/>
 * All rights reserved.
 * 
 * @require jade/HTMLUtils.js
 */
function PrintsBasket(a,c,b){this.basketId=a;
this.oBasket=null;this.printsFormats=[];this.simpleDepotId=c;this.detailDepotId=b;
this.simpleDepotVisible=true;this.detailDepotVisible=false;this.totalCount=0;this.selectedDetailDepotItems=0;
this.thumbnailSizes=[{width:40,height:40}];this.thumbnailSize=this.thumbnailSizes[0];
this.simpleDepotHoverEnabled=true;this.dropTargets=[];this.dropTargetPositions=[];
this.clientType="prints";this.ajaxObj=null;this.onAddClick=null;this.onSimpleDepotChange=null;
this.onDetailDepotChange=null;this.onDetailDepotSelect=null;this.profiUser=false;
this.ajaxReceiveFunc=null;this.detailDepotShowQty1Always=true;this.detailDepotShowDeleteAlways=false;
this.detailDepotAutoCropItemsEnabled=false;this.detailDepotShowEmptyFormats=true;
this.detailDepotInsertBefore=true;this.detailViewDisableImgContextMenu=true;this.isSomethingChanged=false;
this.detailDepotAmountContext=null;this.detailDepotOrderItemIconsPos={qty:"rb",warning:"lt",remove:"rt",aspectRatioWarning:"rt"};
this.detailDepotThumbSizeIndex=0;this.spacerImg=null;this.hasFormatOptions=false;
this.onShowDepot=null;this.onEditItem=null;this.onCropItem=null;this.onSetFormatOption=null
}PrintsBasket.prototype.init=function(){var c,a,b;if(QualityMeter===undefined){alert("PrintsBasket depends on QualityMeter")
}if(PictureBarFile===undefined){alert("PrintsBasket depends on PictureBarFile")}if(VarUtils===undefined){alert("PrintsBasket depends on VarUtils")
}if(Buttons===undefined){alert("PrintsBasket depends on Buttons")}if(PrintsBasketFormat===undefined){alert("PrintsBasket depends on PrintsBasketFormat")
}if(PrintsBasketOrderItem===undefined){alert("PrintsBasket depends on PrintsBasketOrderItem")
}this.setThumbnailSize(this.detailDepotThumbSizeIndex);this.oBasket=document.getElementById(this.basketId);
if(this.oBasket===null){return false}b=this.oBasket.getElementsByTagName("th");for(c=0,a=b.length;
c<a;c++){b[c].onmouseover=this.simpleDepotItemMouseOver;b[c].onmouseout=this.simpleDepotItemMouseOut;
b[c].onclick=this.simpleDepotItemClick;b[c].control=this}this.updateSimpleDepots(false);
this.updateDetailDepots(false);this.showDepot((this.simpleDepotVisible&&this.detailDepotVisible?"all":(this.simpleDepotVisible&&!this.detailDepotVisible?"simple":(!this.simpleDepotVisible&&this.detailDepotVisible?"detail":"none"))));
this.orderItemSelectHandler(null,0)};PrintsBasket.prototype.setPrintsFormats=function(){var b,a;
for(b=0,a=this.setPrintsFormats.arguments.length;b<a;++b){if(this.setPrintsFormats.arguments[b] instanceof PrintsBasketFormat){this.setPrintsFormats.arguments[b].parent=this;
this.printsFormats.push(this.setPrintsFormats.arguments[b])}}};PrintsBasket.prototype.getFormat=function(c){var b,a;
for(b=0,a=this.printsFormats.length;b<a;b++){if(this.printsFormats[b].format==c){return this.printsFormats[b]
}}return null};PrintsBasket.prototype.getFormatByName=function(c){var b,a;for(b=0,a=this.printsFormats.length;
b<a;b++){if(this.printsFormats[b].formatName==c){return this.printsFormats[b]}}return null
};PrintsBasket.prototype.updateSimpleDepots=function(b){var c,a;if(b===undefined){b=true
}for(c=0,a=this.printsFormats.length;c<a;c++){this.printsFormats[c].updateSimpleDepot()
}if(b){this.getOrderItemsTotalPrice()}this.refreshDepotLegend("simple")};PrintsBasket.prototype.updateDetailDepots=function(b){var c,a;
if(b===undefined){b=true}for(c=0,a=this.printsFormats.length;c<a;c++){this.printsFormats[c].updateDetailDepot("new")
}if(b){this.getOrderItemsTotalPrice()}this.refreshDepotLegend("detail")};PrintsBasket.prototype.updateAllDepots=function(){this.updateSimpleDepots();
if(this.detailDepotVisible){this.updateDetailDepots(false)}};PrintsBasket.prototype.detailDepotItemMouseOver=function(a,b){if(this.control){return this.control.detailDepotItemMouseOver(a?a:event,this)
}this.showDetailDepotHover(b)};PrintsBasket.prototype.showDetailDepotHover=function(a){jade.HTMLUtils.addClassName(a,"detailDepotHover")
};PrintsBasket.prototype.detailDepotItemMouseOut=function(a,b){if(this.control){return this.control.detailDepotItemMouseOut(a?a:event,this)
}this.hideDetailDepotHover(b)};PrintsBasket.prototype.hideDetailDepotHover=function(a){jade.HTMLUtils.removeClassName(a,"detailDepotHover")
};PrintsBasket.prototype.enableSimpleDepotHover=function(){this.simpleDepotHoverEnabled=true
};PrintsBasket.prototype.disableSimpleDepotHover=function(){this.simpleDepotHoverEnabled=false
};PrintsBasket.prototype.simpleDepotItemMouseOver=function(a,b){if(this.control){return this.control.simpleDepotItemMouseOver(a?a:event,this)
}if(this.simpleDepotHoverEnabled){this.showSimpleDepotHover(b)}};PrintsBasket.prototype.showSimpleDepotHover=function(c,b){var a;
a=(b===undefined)?(this.profiUser?"editinfo":"addinfo"):b;jade.HTMLUtils.addClassName(c,"hover");
jade.HTMLUtils.getElementsByClassName(c,a)[0].style.visibility="visible";jade.HTMLUtils.addClassName(jade.HTMLUtils.getElementsByClassName(c,"depot")[0],"depothover")
};PrintsBasket.prototype.simpleDepotItemMouseOut=function(a,b){if(this.control){return this.control.simpleDepotItemMouseOut(a?a:event,this)
}if(this.simpleDepotHoverEnabled){this.hideSimpleDepotHover(b)}};PrintsBasket.prototype.hideSimpleDepotHover=function(a){jade.HTMLUtils.removeClassName(a,"hover");
jade.HTMLUtils.getElementsByClassName(a,"addinfo")[0].style.visibility="hidden";jade.HTMLUtils.getElementsByClassName(a,"editinfo")[0].style.visibility="hidden";
jade.HTMLUtils.removeClassName(jade.HTMLUtils.getElementsByClassName(a,"depot")[0],"depothover")
};PrintsBasket.prototype.simpleDepotItemClick=function(a,b){if(this.control){return this.control.simpleDepotItemClick(a?a:event,this)
}if((this.onAddClick!==null)&&(typeof(this.onAddClick)=="function")){this.onAddClick(b,(b.id.indexOf("format-")>-1)?b.id.substr(7):null)
}};PrintsBasket.prototype.selectAll=function(c){var b,a;if(c===undefined){c=false
}if(c||this.selectedDetailDepotItems==this.getOrderItemsCount()){for(b=0,a=this.printsFormats.length;
b<a;b++){this.selectedDetailDepotItems-=this.printsFormats[b].deselectAllOrderItems()
}}else{this.selectedDetailDepotItems=0;for(b=0,a=this.printsFormats.length;b<a;b++){this.selectedDetailDepotItems+=this.printsFormats[b].selectAllOrderItems()
}}this.recalcualteSelectedOrderItems();if((this.onDetailDepotSelect!==null)&&(typeof(this.onDetailDepotSelect)=="function")){this.onDetailDepotSelect(this.selectedDetailDepotItems,null,null,this.calcTotalCount())
}};PrintsBasket.prototype.deselectAll=function(){this.selectAll(true)};PrintsBasket.prototype.selectFormat=function(d,a){var c,b;
if(a===undefined){a=false}c=this.getFormat(d);b=c.getSelectedOrderItemsCount();if(b==0&&!a){this.selectedDetailDepotItems+=c.selectAllOrderItems()
}else{if(b<c.orderItems.length&&!a){this.selectedDetailDepotItems+=c.selectAllOrderItems()
}else{this.selectedDetailDepotItems-=c.deselectAllOrderItems()}}if((this.onDetailDepotSelect!==null)&&(typeof(this.onDetailDepotSelect)=="function")){this.onDetailDepotSelect(this.selectedDetailDepotItems,null,d,this.calcTotalCount())
}};PrintsBasket.prototype.showDepot=function(b,a){if(a===undefined){a=true}switch(b){case"simple":this.updateSimpleDepots(false);
document.getElementById(this.simpleDepotId).style.display="block";document.getElementById(this.detailDepotId).style.display="none";
this.simpleDepotVisible=true;this.detailDepotVisible=false;break;case"detail":this.updateDetailDepots(false);
document.getElementById(this.simpleDepotId).style.display="none";document.getElementById(this.detailDepotId).style.display="block";
this.simpleDepotVisible=false;this.detailDepotVisible=true;break;case"none":document.getElementById(this.simpleDepotId).style.display="none";
document.getElementById(this.detailDepotId).style.display="none";this.simpleDepotVisible=false;
this.detailDepotVisible=false;break;default:this.updateDetailDepots(false);document.getElementById(this.simpleDepotId).style.display="block";
document.getElementById(this.detailDepotId).style.display="block";this.simpleDepotVisible=true;
this.detailDepotVisible=true;break}if(a){this.getOrderItemsTotalPrice()}if((this.onShowDepot!==null)&&(typeof(this.onShowDepot)=="function")){this.onShowDepot(b)
}};PrintsBasket.prototype.setThumbnailSizes=function(a){this.thumbnailSizes=a};PrintsBasket.prototype.setThumbnailSize=function(b){var c,a;
this.thumbnailSize=this.thumbnailSizes[b];for(c=0,a=this.printsFormats.length;c<a;
c++){this.printsFormats[c].setThumbnailSize(this.thumbnailSize)}};PrintsBasket.prototype.getOrderItemsTotalAmount=function(){var c,b,a;
for(a=0,c=0,b=this.printsFormats.length;c<b;c++){a+=this.printsFormats[c].count}return a
};PrintsBasket.prototype.getOrderItemsCount=function(){var c,b,a;for(a=0,c=0,b=this.printsFormats.length;
c<b;c++){a+=this.printsFormats[c].orderItems.length}return a};PrintsBasket.prototype.getOrderItemsTotalPrice=function(){var c,a,b;
b={};for(c=0,a=this.printsFormats.length;c<a;c++){b[this.printsFormats[c].format]={productId:this.printsFormats[c].format,quantity:this.printsFormats[c].count,options:this.printsFormats[c].getOptions()}
}if(this.ajaxObj!==null){this.ajaxObj.send(VarUtils.serialize(b),this.ajaxReceiveFunc)
}return true};PrintsBasket.prototype.changeSelectedDetailItemsAmount=function(d){var c,a,b;
b=this.getSelectedOrderItems();for(c=0,a=b.length;c<a;c++){b[c].parent.count-=b[c].count;
b[c].parent.count+=d;b[c].parent.amountInfo=(!b[c].parent.amountInfo&&(d>1))?true:b[c].parent.amountInfo;
b[c].count=d;b[c].detailDepotUpdate()}for(c=0,a=this.printsFormats.length;c<a;c++){this.printsFormats[c].updateDetailDepot("refresh");
this.printsFormats[c].updateSimpleDepot()}this.getOrderItemsTotalPrice()};PrintsBasket.prototype.getSelectedOrderItems=function(){var c,d,a,f,b,e;
b=[];for(c=0,a=this.printsFormats.length;c<a;c++){e=this.printsFormats[c].getSelectedOrderItems();
for(d=0,f=e.length;d<f;d++){b.push(e[d])}}return b};PrintsBasket.prototype.orderItemRemoveHandler=function(a,b){this.recalcualteSelectedOrderItems();
if(this.calcTotalCount()<=0){this.showDepot("simple",false)}this.refreshDepotLegend("detail");
this.getOrderItemsTotalPrice()};PrintsBasket.prototype.orderItemSelectHandler=function(a,b){if(a===null){this.selectedDetailDepotItems=0
}else{if(a.selected){this.selectedDetailDepotItems++}else{this.selectedDetailDepotItems--
}}if((this.onDetailDepotSelect!==null)&&(typeof(this.onDetailDepotSelect)=="function")){this.onDetailDepotSelect(this.selectedDetailDepotItems,a,b,this.calcTotalCount())
}};PrintsBasket.prototype.refreshDepotLegend=function(f){var b,a,d,e,c;d=false;e=false;
c=false;for(b=0,a=this.printsFormats.length;b<a;b++){if(!d&&this.printsFormats[b].qualityWarning){d=true
}if(!e&&this.printsFormats[b].amountInfo){e=true}if(!c&&this.printsFormats[b].aspectRatioWarning){c=true
}}if(f=="simple"){document.getElementById("printsbasket-legend").style.visibility=d?"visible":"hidden"
}else{document.getElementById("detaildepot-legend-quality").style.display=d?"inline":"none";
document.getElementById("detaildepot-legend-amount").style.display=e?"inline":"none";
if(document.getElementById("detaildepot-legend-aspectRatio")){document.getElementById("detaildepot-legend-aspectRatio").style.display=c?"inline":"none"
}document.getElementById("detaildepot-legend").style.display=d||e||c?"block":"none"
}};PrintsBasket.prototype.saveOrder=function(){var c,l,j,k,g,b,f,e,h=null,d,a;f=[];
e={};formatOptions={};for(c=0,k=this.printsFormats.length;c<k;c++){for(l=0,g=this.printsFormats[c].orderItems.length;
l<g;l++){d=this.printsFormats[c].orderItems[l];for(a=false,j=0,b=f.length;j<b;j++){if(f[j].uniqueId==d.pbFile.uniqueId){a=true;
break}}if(!a){f.push(d.pbFile)}if(typeof(e[d.pbFile.id])=="undefined"){e[d.pbFile.id]={}
}e[d.pbFile.id][this.printsFormats[c].format]=d.count;if(null!=d.editImageSessionId){h=new Object();
h[d.pbFile.id]=new Object();h[d.pbFile.id].format=this.printsFormats[c].format;h[d.pbFile.id].editImageSessionId=d.editImageSessionId
}}formatOptions[this.printsFormats[c].format]=this.printsFormats[c].getOptions()}return{orderFiles:VarUtils.serialize(f),orderData:VarUtils.serialize(e),optionalParams:h==null?"":VarUtils.serialize(h),formatOptions:formatOptions==null?"":VarUtils.serialize(formatOptions)}
};PrintsBasket.prototype.submitOrder=function(){var a;a=this.saveOrder();if(a.orderFiles.length>0){Buttons.disable(document.getElementById("simpleBtnContinue"));
Buttons.disable(document.getElementById("complexBtnContinue"));document.getElementById("orderFiles").value=a.orderFiles;
document.getElementById("orderData").value=a.orderData;document.getElementById("optionalParams").value=a.optionalParams;
if(this.hasFormatOptions){document.getElementById("formatOptions").value=a.formatOptions
}document.getElementById("orderPrintsForm").submit()}return false};PrintsBasket.prototype.loadOrder=function(){var e,k,j,g,f,m,h,c,l,d,a,b;
j=[];g=[];c=document.getElementById("orderFiles").value;l=document.getElementById("orderData").value;
if(this.hasFormatOptions){a=document.getElementById("formatOptions").value}if(c&&c!=""&&l&&l!=""){j=VarUtils.unserialize(c);
g=VarUtils.unserialize(l);for(e=0,k=j.length;e<k;e++){d=PictureBarFile.fromJSONObject(j[e]);
for(h in g[j[e].id]){if(!g[j[e].id].hasOwnProperty(h)){continue}m=this.getFormat(h);
if(!m){continue}f=new PrintsBasketOrderItem(d,g[j[e].id][h]);m.addOrderItem(f)}}}if(a&&a!=""){b=VarUtils.unserialize(a);
for(h in b){if(!b.hasOwnProperty(h)){continue}for(optionName in b[h]){if(!b[h].hasOwnProperty(optionName)){continue
}this.getFormat(h).setOption(optionName,b[h][optionName])}}}this.isSomethingChanged=false
};PrintsBasket.prototype.cutOrderItems=function(b){var c,a;for(c=0,a=b.length;c<a;
c++){b[c].parent.cutOrderItem(b[c])}};PrintsBasket.prototype.removeAllOrderItems=function(){var b,a;
for(b=0,a=this.printsFormats.length;b<a;b++){this.printsFormats[b].removeAllOrderItems()
}this.recalcualteSelectedOrderItems();this.getOrderItemsTotalPrice()};PrintsBasket.prototype.removeOrderItems=function(b){var c,a;
for(c=0,a=b.length;c<a;c++){b[c].parent.removeOrderItem(b[c],undefined,false)}if(this.orderItemRemoveHandler!==null){this.orderItemRemoveHandler(b,null)
}this.recalcualteSelectedOrderItems();this.getOrderItemsTotalPrice()};PrintsBasket.prototype.removeSelectedOrderItems=function(){var a;
a=this.getSelectedOrderItems();this.removeOrderItems(a);return a};PrintsBasket.prototype.removeFormatOrderItems=function(a){this.getFormat(a).removeAllOrderItems();
this.recalcualteSelectedOrderItems()};PrintsBasket.prototype.calcTotalCount=function(){var b,a;
this.totalCount=0;for(b=0,a=this.printsFormats.length;b<a;b++){this.totalCount+=this.printsFormats[b].count
}return this.totalCount};PrintsBasket.prototype.moveSelectedOrderItemsToFormat=function(c,b){var a;
if(b===undefined){b=false}a=this.getSelectedOrderItems();this.moveOrderItemsToFormat(a,c,b)
};PrintsBasket.prototype.moveFormatOrderItemsToFormat=function(b,c,a){if(a===undefined){a=false
}this.moveOrderItemsToFormat(this.getFormat(b).orderItems,c,a)};PrintsBasket.prototype.moveOrderItemsToFormat=function(b,f,d){var c,a,e;
this.cutOrderItems(b);e=this.getFormat(f);for(c=0,a=b.length;c<a;c++){b.selected=!d;
e.addOrderItem(b[c],false)}this.updateAllDepots()};PrintsBasket.prototype.recalcualteSelectedOrderItems=function(){var b,a;
this.selectedDetailDepotItems=0;for(b=0,a=this.printsFormats.length;b<a;b++){this.selectedDetailDepotItems+=this.printsFormats[b].getSelectedOrderItemsCount()
}if((this.onDetailDepotSelect!==null)&&(typeof(this.onDetailDepotSelect)=="function")){this.onDetailDepotSelect(this.selectedDetailDepotItems,null,null,this.calcTotalCount())
}};PrintsBasket.prototype.updateDropTargetPositions=function(){var c,b,d,a;for(c=0,b=this.dropTargets.length;
c<b;c++){d=this.dropTargets[c];a=jade.HTMLUtils.getDocumentOffset(d[1]);a.width=d[1].offsetWidth;
a.height=d[1].offsetHeight;this.dropTargetPositions[c]=a}};PrintsBasket.prototype.setDropTargets=function(a){this.dropTargets=a;
this.updateDropTargetPositions()};PrintsBasket.prototype.setSpacerImage=function(a){this.spacerImg=document.createElement("img");
this.spacerImg.src=a};PrintsBasket.prototype.findImprovedFormat=function(b,a,g){var f,c,n,m,k,s,o,j,l,r,e,q,p;
for(f=0,n=g.length;f<n;f++){k=true;r=g[f][0];e=g[f][1];p=this.getFormat(e);q=p.formatPrintWidth>p.formatPrintHeight?Math.round((p.formatPrintWidth/p.formatPrintHeight)*100):Math.round((p.formatPrintHeight/p.formatPrintWidth)*100);
if(b.format==r){for(c=0,m=a.length;c<m;c++){s=a[c];o=parseInt(s.width);j=parseInt(s.height);
l=(o>j)?Math.round((o/j)*100):Math.round((j/o)*100);if(k&&(((l/10-0.5)<=(q/10))&&((l/10+0.5)>=(q/10)))){return p
}}}}return false};
