var Price=new new Class({providers:{1:{caption:"Capital",icon:"0d14.gif"},2:{caption:"Centralfield",icon:"8d26.gif"}},viewSavedList:false,records:{},sections:["component","manufacturer","specification"],selections:{},generateList:function(C,A){this[C+"Input"].set({value:0}).getElements("option[value!=0]").destroy();this.quickSelect.removeClass("hidden");this[C+"QuickSelectContainer"].empty();$each(A,function(D){this[C+"Input"].adopt(new Element("option",{value:D.id,text:D.caption.replace(/(^| )\w/g,function(E){return E.toUpperCase();})}));},this);if(A){A.sort(function(E,D){return D.match-E.match;});var B=0;$each(A,function(D){if(B+D.caption.length<this.quickSelectLimit){new Element("a",{text:D.caption.replace(/(^| )\w/g,function(E){return E.toUpperCase();}),events:{click:(function(E){if((E.target||E.srcElement).hasClass("disabled")){return false;}this[C+"QuickSelectContainer"].getElements("a").removeClass("selected");(E.target||E.srcElement).addClass("selected");this[C+"Input"].set("value",D.id);this.refreshList(C);}).bindWithEvent(this)}}).inject(this[C+"QuickSelectContainer"]);}B+=D.caption.length+1;},this);}else{this[C+"QuickSelectContainer"].getParent().addClass("hidden");}},generateProductList:function(C){if(this.viewSavedList){C=this.selections;}else{if(C){this.records=C;}else{C=this.records;}}var A=this.list.getElement("tbody").empty();var B=false;$each(C,function(D,E){A.adopt(new Element("tr",{className:"shine"}).adopt(new Element("td",{colspan:5,text:E.replace(/(^| )\w/g,function(F){return F.toUpperCase();})})));$each(D,function(G){B=G.brand;var F=new Element("tr",{className:"product"}).adopt([new Element("td",{className:"model",text:G.model,title:G.description?G.description:null}),new Element("td",{align:"center",className:"specification",text:G.specification?G.specification:"-"}),new Element("td",{className:"function"}).adopt([new Element("div",{className:"trend",title:'<img src="/price/trend/'+G.id+'"/>'}),new Element("div",{className:"quantity"+(this.selections[E]&&this.selections[E][G.id]?"":" hidden"),text:this.selections[E]&&this.selections[E][G.id]?this.selections[E][G.id].quantity:"",title:"從清單移除 "+G.model,events:{click:(function(){this.selections[E][G.id].quantity--;if(!this.selections[E][G.id].quantity){F.getElement(".quantity").addClass("hidden");delete this.selections[E][G.id];if(!$H(this.selections[E]).getLength()){delete this.selections[E];}}else{F.getElement(".quantity").set("text",this.selections[E][G.id].quantity);}this.updateSelection();this.updateTotal();}).bind(this)}})]),new Element("td",{className:"provider"}),new Element("td",{className:"price"}).adopt([new Element("div",{className:"add",title:"新增 "+G.model+" 至清單內",events:{click:(function(){if(!this.selections[E]){this.selections[E]={};}if(this.selections[E][G.id]){this.selections[E][G.id].quantity++;}else{this.selections[E][G.id]=$merge(G,{component:this.component,quantity:1});}F.getElement(".quantity").removeClass("hidden").set("text",this.selections[E][G.id].quantity);this.updateSelection();this.updateTotal();}).bind(this)}}),new Element("span",{text:"$"+G.price})])]);$each(G.prices.split("|"),function(H){var I=H.split(";");F.getElement(".provider").adopt(new Element("div",{className:"icon inline",title:this.providers[I[0].toInt()].caption+" 價格 : $"+I[1]+" ("+I[2]+")"}).adopt(new Element("img",{src:"/prepared/images/"+this.providers[I[0].toInt()].icon})));},this);A.adopt(F);},this);},this);if(this.tips){this.tips.tip.destroy();}if(this.trend){this.trend.tip.destroy();}this.tips=new Tips(".model[title] , .icon, .add, .quantity",{offsets:{x:20,y:20}});this.trend=new Tips(".trend",{className:"trend",offsets:{x:20,y:20}});$("separator").set("styles",{height:Math.max($("defaultLeft").getSize()["y"],$("defaultRight").getSize()["y"])});},makeQuickSelectFromNativeCode:function(A){$each(this[A+"Input"].getElements("option"),function(B){var C=B.get("value");if(C){this[A+"QuickSelect"][C]=B.get("text");}},this);$each(this[A+"QuickSelectContainer"].getElements("a"),function(B){B.set("events",{click:(function(C){if((C.target||C.srcElement).hasClass("disabled")){return false;}$each(this[A+"QuickSelect"],function(D,E){if(D==B.get("text")){this[A+"Input"].set("value",E);this.refreshList(A);}},this);}).bindWithEvent(this)});},this);},refreshList:function(C){var D={section:"price",action:"list"};var A=this.sections.indexOf(C);$each(this.sections,function(F,E){D[F+"List"]=E>A;D[F]=this[F]=E<=A?this[F+"Input"].get("value").toInt():null;},this);if(!this.component){return false;}this.status.set("text","").addClass("loading");var B=new Request.JSON({link:"cancel",url:"/action",onSuccess:(function(F){var E=0;$each(this.sections,function(H,G){if(G&&F[H+"s"]){E++;}},this);if(E){this.quickSelectLimit=(70-E*10)/E;}$each(this.sections,function(H,G){if(G>A){this.generateList(H,F[H+"s"]);}},this);this.generateProductList(F.products);this.status.removeClass("loading").set("text","最後更新: "+F.lastUpdate);}).bind(this)}).post(D);},start:function(){if(!$("quotation")){return false;}$$("#viewList, #total").addEvent("click",(function(){this.viewSavedList=!this.viewSavedList;$each(this.sections,function(A){this[A+"Input"].set("disabled",this.viewSavedList);if(this.viewSavedList){this[A+"QuickSelectContainer"].getElements("a").addClass("disabled");}else{this[A+"QuickSelectContainer"].getElements("a").removeClass("disabled");}},this);if(this.viewSavedList){this.viewList.addClass("backward");}else{this.viewList.removeClass("backward");}this.generateProductList(this.viewSavedList?null:this.records);}).bind(this));this.status=$("status");this.viewList=$("viewList");this.total=$("total");this.selection=$("selection");this.quickSelect=$("quickSelect").getElements(".container");this.list=$("list");$each(this.sections,function(A){this[A+"Input"]=$(A).addEvent("change",this.refreshList.pass(A,this));this[A+"QuickSelectContainer"]=$(A+"QuickSelect");this[A+"QuickSelect"]={};},this);this.makeQuickSelectFromNativeCode("component");$("quotation").removeClass("hidden");this.selection.getElements("select").set("disabled",false);this.refreshList("component");new Tips(this.selection.getElements("img, a").include(this.viewList),{offsets:{x:20,y:20}});},updateSelection:function(){this.componentQuickSelectContainer.getElements(".status").removeClass("listed");$each(this.selections,function(A){$each(A,function(B){$each(this.componentQuickSelectContainer.getElements("a"),function(C){if(C.get("text")==this.componentQuickSelect[B.component]){C.getParent().getElement(".status").addClass("listed");}},this);},this);},this);},updateTotal:function(){var A=0;$each(this.selections,function(B){$each(B,function(C){A+=C.price*C.quantity;});});this.total.set("text","$ "+A);}});window.addEvent("domready",Price.start.bind(Price));
