/*

    Copyright © 2000-2010 Apple Inc. All Rights Reserved.
    
*/

Package("apple.fn");apple.fn.Executor=function(C,B,A){if("function"==typeof (C)){this.actions=[C]}else{if(C){this.actions=C.filter(function(D){return null!==D&&"undefined"!=typeof (D)})}}this.callback={success:B,error:A};this.pending=false;this.resubmit=false;return this.execute.bind(this)};apple.fn.Executor.prototype={execute:function(A){if(this.actions){if(!this.pending){this.pending=true;this.i=0;this._timer=window.setTimeout(this.next.bind(this,A),0)}else{this.resubmit=true;this.resubmitValue=A}}},next:function(A){if(this.i<this.actions.length){var B=this.actions[this.i++];B(A,this.next.bind(this),this.error.bind(this))}else{this.success(A)}},success:function(A){this.finish(this.callback.success,A)},error:function(A){this.finish(this.callback.error,A)},finish:function(B,A){if(B){B(A)}this.pending=false;this._timer=null;if(this.resubmit){this.resubmit=false;this.execute(this.resubmitValue)}},__executeContinuationally:function(E){if(!this.pending&&this.actions){var C=this.success.bind(this);var A=this.error.bind(this);for(var B=this.actions.length-1;B>=0;B--){var D=this.actions[B];C=function(F){return D(F,C,A)}}C(E)}}};Package("apple.controller");apple.controller.FunctionController=Class.create(coherent.Controller,{exposedBindings:["input"],constructor:function(B,A){this.base(A);this.pending=false;this.resubmit=false;this.setFunctions(B)},setFunctions:function(B){if("function"==typeof (B)){this.functions=[B]}else{if(B){this.functions=B.filter(function(D){return null!==D&&"undefined"!=typeof (D)})}}if(this.functions){var C=this.success.bind(this);var A=this.failure.bind(this);this.executor=new apple.fn.Executor(this.functions,C,A)}},observeInputChange:function(C,B,A){this.change=C.newValue;this.execute()},execute:function(){if(this.executor){if(!this.pending){this.pending=true;this.resubmit=false;this.executor(this.change)}else{this.resubmit=true}}},success:function(A){this.setValue(A);this.setError(null);this.finish()},failure:function(A){this.setValue(null);this.setError(A);this.finish()},finish:function(){this.pending=false;if(this.resubmit){this.resubmit=false;this.execute()}},getValue:function(){return this.value},setValue:function(A){this.value=A},getError:function(){return this.error},setError:function(A){this.error=A}});Package("apple.widget");apple.widget.GiftCard=function(B){this.id=B;var A=$("cardIcon-"+this.id);if(A.className=="error"){this.error=true}};apple.widget.GiftCard.prototype={refresh:function(){this.updateCardIcon()},getRef:function(){return $("card-"+this.id)},setDisplay:function(A){this.getRef().style.display=(A)?"inline":"none";this.getRef().style.opacity=(A)?1:0},setState:function(A){this.getRef().getElementsByTagName("a")[0].className=A},setSelected:function(A){var B=$("card-"+this.id);if(A){B.className="selected"}else{B.className=""}},getMessage:function(){return $("msg-"+this.id).value},setMessage:function(A){$("msg-"+this.id).value=A;this.updateCardIcon()},setError:function(A){this.error=(A===true||(A&&A.length));this.updateCardIcon()},updateCardIcon:function(){var B=$("cardIcon-"+this.id);if(this.error){B.className="error"}else{var A=this.getMessage();if(A&&A.length>0){B.className="edited"}else{B.className=""}}}};Package("apple.controller");apple.controller.GiftCardGalleryController=Class.create(coherent.Controller,{exposedBindings:["amount","product","sampleImagePath"],constructor:function(A){this.base(A)},observeAmountChange:function(C,B,A){},setAmount:function(A){if(this.bindings.amount){this.bindings.amount.setValue(A)}},observeProductChange:function(C,B,A){},setProduct:function(A){if(this.bindings.product){this.bindings.product.setValue(A)}},observeSampleImagePathChange:function(C,B,A){},setSampleImagePath:function(A){if(this.bindings.sampleImagePath){this.bindings.sampleImagePath.setValue(A)}}});Package("apple.widget");apple.widget.GiftCardPersonalization=function(B,A){this.controller=A;this.formId=B.formId;this.maxNumOfCards=B.maxNumOfCards;this.quantityId=B.quantityId;this.uniqueId=B.uniqueId;this.cardSelectorId=B.cardSelectorId;this.giftMsgTxtBoxId=B.giftMsgTxtBoxId;this.giftMsgInstructionsId=B.giftMsgInstructionsId;this.uniqueMessageAlertId=B.uniqueMessageAlertId;this.messageIndexId=B.messageIndexId;this.singleMsgTxt=B.singleMsgTxt;this.multipleMsgTxt=B.multipleMsgTxt;this.currentQuantity=1;this.isUniqueMessageAlertVisible=false;this.isUniqueCheckboxVisible=false;Event.onDomReady(this.init.bind(this))};apple.widget.GiftCardPersonalization.prototype={init:function(){var B;var A;this.cards=new Array(this.maxNumOfCards);for(B=0;B<this.maxNumOfCards;B++){this.cards[B]=new apple.widget.GiftCard(B)}if(!this.controller){Event.observe($(this.quantityId),"change",this.quantityChanged.bindAsEventListener(this));Event.observe($(this.uniqueId),"change",this.uniqueCheckboxChanged.bindAsEventListener(this));Event.observe($(this.giftMsgTextBoxId),"keyup",this.giftMessageChanged.bindAsEventListener(this));Event.observe($(this.formId),"onsubmit",this.formSubmitted.bindAsEventListener(this))}for(B=0,A;A=this.cards[B];B++){Event.observe(A.getRef(),"click",this.cardChanged.bindAsEventListener(this,B))}this.setCurrentQuantity(this.getSelectedQuantity());if(this.getCurrentQuantity()>1){$(this.uniqueId).parentNode.style.display="inline"}},quantityChanged:function(A){this.recordCurrentMessage();this.toggleUniqueCheckbox();this.toggleMessageLabel();this.updateCardSelector();this.toggleCardSelector();this.toggleMessageAlert();this.setCurrentQuantity(this.getSelectedQuantity())},uniqueCheckboxChanged:function(A){this.recordCurrentMessage();this.toggleCardSelector();this.toggleMessageLabel();this.updateCardSelector();this.toggleMessageAlert()},giftMessageChanged:function(A){this.recordCurrentMessage()},giftMessageErrorChanged:function(A){this.cards[this.getMessageIndex()].setError(A)},cardChanged:function(B,A){this.changeSelectedGiftCard(A)},formSubmitted:function(A){this.recordCurrentMessage()},hasUniqueMessages:function(){return((this.getSelectedQuantity()>1)&&this.isUnique())},toggleUniqueCheckbox:function(){var A=new apple.fx.Animator({duration:300});if(!this.isUniqueCheckboxVisible&&(this.getSelectedQuantity()>1)){A.play(apple.fx.FadeIn(apple.fx.linearTween,$(this.uniqueId).parentNode));this.isUniqueCheckboxVisible=true}else{if(this.isUniqueCheckboxVisible&&(this.getSelectedQuantity()<=1)){A.play(apple.fx.FadeOut(apple.fx.linearTween,$(this.uniqueId).parentNode));this.isUniqueCheckboxVisible=false}}},toggleCardSelector:function(){$(this.cardSelectorId).style.display=this.hasUniqueMessages()?"inline":"none"},toggleMessageLabel:function(){this.setMsgInstructions(this.hasUniqueMessages()?this.multipleMsgTxt:this.singleMsgTxt)},updateCardSelector:function(){var E=(this.getSelectedQuantity()<this.getCurrentQuantity());var A=(E)?this.getSelectedQuantity()-1:this.getCurrentQuantity()-1;var H=(E)?this.getCurrentQuantity()-1:this.getSelectedQuantity()-1;var F;var D;var C;if(!this.isUnique()||(this.getSelectedQuantity()<=1)){if(E){H=A}else{A=H}}var G=[];if((!this.isUnique()&&this.getMessageIndex()>0)||(E&&(this.getSelectedQuantity()<=this.getMessageIndex()))){this.changeSelectedGiftCard(0)}for(F=0,D=0;C=this.cards[F];F++){if(F<=A){C.setDisplay(true)}else{if(F<=H){G[D++]=E?new apple.fx.FadeOut(apple.fx.linearTween,C.getRef()):new apple.fx.FadeIn(apple.fx.linearTween,C.getRef())}else{C.setDisplay(false)}}}if(G.length>0){var B=new apple.fx.Animator({duration:(G.length*300)});if(E){G.reverse()}B.play(apple.fx.Chain(G))}},toggleMessageAlert:function(){var A=new apple.fx.Animator({duration:500});for(var C=1,B;B=this.cards[C];C++){if((B.getMessage().length>0)&&(!this.isUnique()||(C>=this.getSelectedQuantity()))){if(!this.uniqueMessageAlertVisible){A.play(apple.fx.FadeIn(apple.fx.linearTween,this.getUniqueMessageAlert()));this.uniqueMessageAlertVisible=true}return }}if(this.uniqueMessageAlertVisible&&this.isUnique()){A.play(apple.fx.FadeOut(apple.fx.linearTween,this.getUniqueMessageAlert()));this.uniqueMessageAlertVisible=false}},changeSelectedGiftCard:function(B){var A=this.cards[this.getMessageIndex()];var C=this.cards[B];A.setMessage(this.getGiftMsgTextareaText());A.setSelected(false);C.setSelected(true);this.setMessageIndex(B);if(this.controller){this.controller.setMessage(C.getMessage())}else{this.setGiftMsgTextareaText(C.getMessage())}$(this.giftMsgTxtBoxId).focus()},recordCurrentMessage:function(){this.cards[this.getMessageIndex()].setMessage(this.getGiftMsgTextareaText())},getSelectedQuantity:function(){return parseInt($(this.quantityId).value,10)},getCurrentQuantity:function(){return this.currentQuantity},setCurrentQuantity:function(A){this.currentQuantity=A},isUnique:function(){return !!$(this.uniqueId).checked},setUnique:function(A){$(this.uniqueId).checked=A},getGiftMsgTextareaText:function(){return $(this.giftMsgTxtBoxId).value},setGiftMsgTextareaText:function(A){$(this.giftMsgTxtBoxId).value=A},getUniqueMessageAlert:function(){return $(this.uniqueMessageAlertId)},setMsgInstructions:function(B){var C=$(this.giftMsgInstructionsId);var A=document.createTextNode(B);C.innerHTML="";C.appendChild(A)},getMessageIndex:function(){return parseInt($(this.messageIndexId).value,10)},setMessageIndex:function(A){$(this.messageIndexId).value=A}};Package("apple.controller");apple.controller.GiftCardPersonalizationController=Class.create(coherent.Controller,{exposedBindings:["quantity","unique","message","messageError"],constructor:function(A,B){this.base(B);this.widget=new apple.widget.GiftCardPersonalization(A,this)},observeQuantityChange:function(C,B,A){if(!this.__initialising){this.widget.quantityChanged(C)}},getQuantity:function(){return this.bindings.quantity.value()},observeUniqueChange:function(C,B,A){if(!this.__initialising){this.widget.uniqueCheckboxChanged(C)}},getUnique:function(){return this.bindings.unique.value()},observeMessageChange:function(C,B,A){if(!this.__initialising){this.widget.giftMessageChanged(C)}},getMessage:function(){return this.bindings.message.value()},setMessage:function(A){if(this.bindings.message){this.bindings.message.setValue(A)}},observeMessageErrorChange:function(C,B,A){if(!this.__initialising){this.widget.giftMessageErrorChanged(C.newValue)}}});Package("apple.fn");apple.fn.NumberValidator=function(A){this.min=A.min;this.max=A.max;this.outOfRangeError=A.outOfRangeError;this.notIntegerError=A.notIntegerError;this.notNumberError=A.notNumberError;this.emptyError=A.emptyError;return this.execute.bind(this)};apple.fn.NumberValidator.prototype={execute:function(C,D,B){var A=this.validate(C);if(!A&&D){D(C);D=undefined}else{if(A&&B){B(A);B=undefined}}},validate:function(B){var A=null;if(B){if(!isNaN(B)){var C=parseFloat(B,10);if(C<this.min||C>this.max){A=this.outOfRangeError}if(!A&&C!=parseInt(B,10)){A=this.notIntegerError}}else{A=this.notNumberError}}else{A=this.emptyError}return A}};Package("apple.controller");apple.controller.PriceController=Class.create(apple.controller.FunctionController,{exposedBindings:["amount","quantity"],constructor:function(A,C,B){this.base(A,C,B);this.change={}},getAmount:function(){return this.change.a},setAmount:function(A){this.change.a=A},observeAmountChange:function(D,C,B){var A=(undefined===this.getAmount());if(!A||null!==D.newValue||"undefined"!==typeof (D.newValue)){this.setAmount(D.newValue)}if(!A){this.validateAndExecute()}},getQuantity:function(){return this.change.q},setQuantity:function(A){this.change.q=A},observeQuantityChange:function(D,C,B){var A=(undefined===this.getQuantity());if(!A||null!==D.newValue||"undefined"!==typeof (D.newValue)){this.setQuantity(D.newValue)}if(!A){this.validateAndExecute()}},validateAndExecute:function(){if(!this.getAmount()){this.setAmount(0)}if(this.getQuantity()){this.execute()}else{this.setValue(null);this.setError(null)}}});Package("apple.fn");apple.fn.ServerResult=function(B){if(B){if(B.head&&B.body){if(B.body.status){var A=B.body;this.status=A.status.toLowerCase();this.message=A.message?A.message:A.error;this.value=A.value?A.value:A.text}else{if(B.head.status=="200"){this.status="ok";this.value=B.body.content}else{this.status="error";this.message=B.body}}}else{this.status="ok";this.value=B}}};apple.fn.ServerResult.prototype={OK:"ok",WARN:"warn",ERROR:"error",isOK:function(){return this.status==this.OK},isWarn:function(){return this.status==this.WARN},isError:function(){return this.status==this.ERROR}};Package("apple.fn");apple.fn.ServerAction=function(A){this.url=A.url;this.args=A.args?A.args:{};this.key=A.key?A.key:"v";this.communicationErrorMessage=A.communicationErrorMessage;this.enabled=true;return this.execute.bind(this)};apple.fn.ServerAction.prototype={execute:function(B,C,A){if(this.enabled){this.appendArgument(B);this.success=C;this.failure=A;this.callServer()}else{console.log("ServerAction> DISABLED")}},callServer:function(){if(this.url){this.received=false;var B=this.getContent();var A=XHR.post(this.url,B);A.addMethods(this.handleDataReceived.bind(this),this.handleErrorReceived.bind(this))}},handleDataReceived:function(B){if(B){this.received=true;var A=new apple.fn.ServerResult(B);this.forwardResult(A)}},handleErrorReceived:function(B){if(!this.received){this.enabled=false;var A=new apple.fn.ServerResult();A.status=A.OK;this.forwardResult(A)}},forwardResult:function(A){if(!A.isError()&&this.success){this.success(A.value);this.success=undefined}if(A.isError()&&this.failure){this.failure(A.message);this.failure=undefined}},getContent:function(){return Object.merge(this.args,this.appendage)},appendArgument:function(A){if("object"==typeof (A)){this.appendage=A}else{if(this.key){this.appendage={};this.appendage[this.key]=A}else{this.appendage={}}}}};
