var ShoppingCartModel=Class.extend({subscriberId:7,cartItems:[],init:function(){postal.subscribe("removeCartItem",this)},fetchCartItems:function(a){$.ajax({type:"POST",url:cartItemsAction,dataType:"json",success:function(e){var b=e,c,d;for(c in b)if(b.hasOwnProperty(c)){d={};d.id=parseInt(b[c].Id,10);if(this.validateQuantity(b[c].Quantity))d.quantity=parseInt(b[c].Quantity,10);else d.quantity=1;d.category=b[c].Category;d.product=b[c].Product;d.price=b[c].Price;d.subtotal=b[c].Quantity*b[c].Price;this.cartItems.push(d)}a()}.bind(this),error:function(){window.location.href=indexAction}})},getCartItemsCount:function(){var b=0,a;for(a in this.cartItems)if(this.cartItems.hasOwnProperty(a))if(typeof this.cartItems[a]!=="undefined"&&this.cartItems[a]!==null)b+=1;return b},removeCartItem:function(b){var a;for(a in this.cartItems)if(this.cartItems.hasOwnProperty(a))if(this.cartItems[a].id===parseInt(b,10)){delete this.cartItems[a];$.ajax({type:"POST",url:removeFromCartAction,data:{cartItemId:parseInt(b,10)},success:function(){postal.notify("cartItemRemoved",b);postal.notify("cartTotalDueChanged")}.bind(this),error:function(){window.location.href=indexAction}});return}throw new Error("Cart item does not exist");},validateQuantity:function(b){var c,a;c=/^\d+$/;a=c.test(b);return!a||parseInt(b,10)<1?false:true},getCartItemQuantity:function(a){var b=this.getCartItemWithId(a);return b.quantity},setCartItemQuantity:function(a,b){var c=this.validateQuantity(b);c&&$.ajax({type:"POST",url:setQuantityAction,data:{cartItemId:a,quantity:b},success:function(e){var d=parseInt(e,10);if(d===0)window.location.href=indexAction;d!==parseInt(b,10)&&postal.notify("showLimitedStockMessage");var c;for(c in this.cartItems)if(this.cartItems.hasOwnProperty(c))if(this.cartItems[c].id===a){this.cartItems[c].quantity=d;this.cartItems[c].subtotal=this.cartItems[c].quantity*this.cartItems[c].price;postal.notify("cartItemSubtotalChanged",a);postal.notify("cartTotalDueChanged")}}.bind(this),error:function(){window.location.href=indexAction}});return c},getCartItemSubtotal:function(a){var b=this.getCartItemWithId(a);return b.subtotal},getCartTotalDue:function(){var b=0,a;for(a in this.cartItems)if(this.cartItems.hasOwnProperty(a))b+=this.cartItems[a].subtotal;return b},getCartItemWithId:function(b){var a;for(a in this.cartItems)if(this.cartItems.hasOwnProperty(a))if(this.cartItems[a].id===b)return this.cartItems[a];throw new Error("Cart item does not exist");}}),ShoppingCartView=Class.extend({model:null,subscriberId:8,init:function(){postal.subscribe("showCartItems",this);postal.subscribe("cartItemRemoved",this);postal.subscribe("cartItemSubtotalChanged",this);postal.subscribe("cartTotalDueChanged",this);postal.subscribe("setIllegalQuantityDialog",this);postal.subscribe("setLimitedStockDialog",this);postal.subscribe("showLimitedStockMessage",this)},showCartItems:function(){var b,c,a;c="<tr id='cartItem_${id}'><td class='proddel'><a href='javascript:void(0)' onclick='postal.notify(\"removeCartItem\", ${id})'><img src='"+deleteIcon+"' alt='Remove from Cart' /></a></td><td class='prodtab'><input class='prodquan' name='quantity_${id}' value='${quantity}'/></td><td class='proddesc'><span id='category_${id}'><b>${category}</b></span><br /><span id='product_${id}'>${product}</span></td><td class='prodtab'><span id='price_${id}'>${$item.getPrice()}</span></td><td class='prodtab'><span id='subtotal_${id}'>${$item.getSubtotal()}</span></td></tr>";a=this.model.cartItems;for(var b=a.length-1;b>=0;b--){$.tmpl(c,a[b],{getPrice:function(){return this.formatCurrency(a[b].price)}.bind(this),getSubtotal:function(){return this.formatCurrency(a[b].subtotal)}.bind(this)}).prependTo("#cartItems");$("input[name='quantity_"+a[b].id+"']").keyup(this.cartItemQuantityChanged.bind(this))}this.cartTotalDueChanged()},cartItemRemoved:function(b){var a=this.model.getCartItemsCount()===0;if(a)window.location.href=indexAction;else $("#cartItem_"+b).remove()},illegalQuantityDialog:null,limitedStockDialog:null,cartItemQuantityChanged:function(c){var d,b,a,e;d=$("input[name='"+c.target.name+"']");b=parseInt(c.target.name.substring(c.target.name.lastIndexOf("_")+1),10);a=d.val();e=this.model.setCartItemQuantity(b,a);if(!e){a=this.model.getCartItemQuantity(b);d.val(a);this.illegalQuantityDialog!==null&&this.illegalQuantityDialog()}},cartItemSubtotalChanged:function(a){var b,c;b=this.model.getCartItemQuantity(a);$("input[name='quantity_"+a+"']").val(b);c=this.model.getCartItemSubtotal(a);$("#subtotal_"+a).text(this.formatCurrency(c))},cartTotalDueChanged:function(){var a=this.model.getCartTotalDue();$("#totalDue").text(this.formatCurrency(a));$("input[name=totalDue]").val(a)},formatCurrency:function(a){return"$"+$.global.format(a,"N")},setIllegalQuantityDialog:function(a){this.illegalQuantityDialog=a},setLimitedStockDialog:function(a){this.limitedStockDialog=a},showLimitedStockMessage:function(){this.limitedStockDialog()}}),ShoppingCartController=new(Class.extend({model:new ShoppingCartModel,view:new ShoppingCartView,subscriberId:9,init:function(){this.view.model=this.model;postal.subscribe("fetchCartItems",this)},fetchCartItems:function(){this.model.fetchCartItems(this.doneFetching.bind(this))},doneFetching:function(){this.view.showCartItems()}}));var CountryModel=Class.extend({subscriberId:1,init:function(){},countries:[],selectedCountryId:0,setCountries:function(b){var a;this.countries=[];for(a=0;a<b.length;a+=1)this.countries.push(b[a])},fetchCountries:function(a,b){$.ajax({type:"POST",url:countriesAction,data:{fullList:a.fullList},dataType:"json",success:function(c){this.setCountries(c);this.selectedCountryId=a.selectedCountryId;b()}.bind(this)})}}),CountryView=Class.extend({model:null,subscriberId:2,init:function(){postal.subscribe("showCountries",this);$("#selectCountry").live("change",function(c){var a,b,d;c.preventDefault();a=parseInt($("#country").val(),10);$("input[name*='CountryId']").val(a);b=$("#selectCountry").find("[data-valmsg-for*='CountryId']");b.addClass("field-validation-valid").removeClass("field-validation-error");b.empty();postal.notify("countryChanged",a)})},setCountry:function(a){var b=false;$("#selectCountry option").each(function(){if($(this).val()==a)b=true});if(!b)postal.notify("fetchCountries",{fullList:true,selectedCountryId:a});else{$("input[name*='CountryId']").val(a);$("#country").val(a);postal.notify("countryChanged",a)}},showCountries:function(b,a){var b,a,c;b=this.model.countries;a=this.model.selectedCountryId;$("#country").remove();$("#selectCountry").prepend("<select id='country'></select>");c="<option value='${CountryId}'>${Name}</option>";$.tmpl(c,b).appendTo("#country");$("#country").val(a);$("input[name*='CountryId']").val(a)}}),CountryController=new(Class.extend({model:new CountryModel,view:new CountryView,subscriberId:3,init:function(){this.view.model=this.model;postal.subscribe("fetchCountries",this);postal.subscribe("countryChanged",this);postal.subscribe("setCountry",this)},fetchCountries:function(a){this.model.fetchCountries(a,this.doneFetching.bind(this))},countryChanged:function(a){a===otherCountriesId&&this.model.fetchCountries({fullList:true,selectedCountryId:-1},this.doneFetching.bind(this))},setCountry:function(a){this.view.setCountry(a)},doneFetching:function(){this.view.showCountries()}}));$.validator.addMethod("numbertype",function(e,f,b){var a,d,c;switch(b[0]){case"byte":case"sbyte":case"short":case"ushort":case"int":case"uint":case"long":case"ulong":a=$.global.parseInt(e);d=$.global.parseInt(b[1]);c=$.global.parseInt(b[2]);break;case"float":case"double":case"decimal":a=$.global.parseFloat(e);d=$.global.parseFloat(b[1]);c=$.global.parseFloat(b[2]);break;default:return false}return a.toString()==="NaN"||a<d||a>c?false:true});$.validator.unobtrusive.adapters.add("numbertype",["type","min","max"],function(a){a.rules.numbertype=[a.params.type,a.params.min,a.params.max];if(a.message)a.messages.numbertype=a.message});$.each($.validator.unobtrusive.adapters,function(){if(this.name==="number")this.adapt=function(){}});$.validator.methods.number=function(b){var a=$.global.parseFloat(b);return a.toString()!=="NaN"};$.validator.methods.min=function(c,d,b){var a=$.global.parseFloat(c);return a.toString()==="NaN"||a>=b};$.validator.methods.max=function(c,d,b){var a=$.global.parseFloat(c);return a.toString()==="NaN"||a<=b};$.validator.methods.range=function(c,d,b){var a=$.global.parseFloat(c);return a.toString()==="NaN"||a>=b[0]&&a<=b[1]};$.validator.methods.date=function(a){var b=$.global.parseDate(a+" 0","dd/MM/yyyy HH:mm:ss z");return!/Invalid|NaN/.test(b)};function setupGalleries(){$("#galleries").accordion({autoHeight:false,change:function(){$("#images").remove();$("#thumbnails").remove();$("#viewer").append("<div id='images'></div><div id='thumbnails'></div>");var b=$(".ui-accordion-content-active").children(),a=b.first().find(".category");a.trigger("click")}}).css("visibility","visible");$(".category").click(function(b){b.preventDefault();$("#selectedCategory").removeAttr("id");$(this).attr("id","selectedCategory");$("#images").remove();$("#viewer").prepend("<div id='images'></div>");var a=this.href.substring(this.href.lastIndexOf("/")+1).split("#"),c=$("#thumbnails").width();$.ajax({type:"POST",url:thumbnailsAction,data:{gallery:a[0],category:a[1],page:0,width:c},success:function(b){$("#thumbnails").html(b);$.ajax({type:"POST",url:imageAction,data:{gallery:a[0],category:a[1],index:0},success:function(a){$("#images").html(a)}})}})});var b=$(".ui-accordion-content-active").children(),a=b.first().find(".category");a.attr("id","selectedCategory");a.trigger("click")}function setupThumbnails(c,b,a){$(".pageLink").click(function(e){e.preventDefault();var d=parseInt(this.href.substring(this.href.lastIndexOf("/")+1),10);if(isNaN(d))d=0;var f=$("#thumbnails").width();$.ajax({type:"POST",url:thumbnailsAction,data:{gallery:b,category:a,page:d,width:f},success:function(f){$("#thumbnails").html(f);var e=d*c;if(isNaN(e))e=0;$.ajax({type:"POST",url:imageAction,data:{gallery:b,category:a,index:e},success:function(a){$("#images").html(a)}})}})});$(".imagelink").click(function(d){d.preventDefault();var c=parseInt(this.href.substring(this.href.lastIndexOf("/")+1),10);if(isNaN(c))c=0;$.ajax({type:"POST",url:imageAction,data:{gallery:b,category:a,index:c},success:function(a){$("#images").html(a)}})})}function setupImage(b,a){$(".indexLink").click(function(i){i.preventDefault();var c=parseInt(this.href.substring(this.href.lastIndexOf("/")+1),10);if(isNaN(c))c=0;$.ajax({type:"POST",url:imageAction,data:{gallery:b,category:a,index:c},success:function(a){$("#images").html(a)}});var f=parseInt($("input[name='curThumbPage']").val(),10),d=parseInt($("input[name='numThumbsInPage']").val(),10),g=f*d,h=(f+1)*d-1;if(c<g||c>h){var e=Math.floor(c/d);if(isNaN(e))e=0;var j=$("#thumbnails").width();$.ajax({type:"POST",url:thumbnailsAction,data:{gallery:b,category:a,page:e,width:j},success:function(a){$("#thumbnails").html(a)}})}})}function loadImages(a){$("."+a+"-loader").each(function(){var c=$(this),e=c.attr("data-src"),b=c.attr("data-alt"),f="<img class='"+a+"' id='"+a+"_"+b+"' src='"+e+"' alt='"+b+"' />";c.replaceWith(f);var d=$("#"+a+"_"+b);d.hide().load(function(){d.show();$("#spinner_"+a+"_"+b).remove()}).error(function(){$("#spinner_"+a+"_"+b).attr("src",notfoundIcon)})})};var shownLicense=false,acceptedLicense=false;function setupProducts(d,b,c,a){$("#checkoutBtn").click(function(b){b.preventDefault();var a=ItemsInCart();if(a>0)window.location.href=cartAction});$("#productInfo").dialog({autoOpen:false,closeOnEscape:false,draggable:false,width:535,modal:true,resizable:false,title:d}).css("visibility","visible");$(".previewLink").click(function(e){e.preventDefault();var a=$(this).attr("data-href"),c=a.substring(a.lastIndexOf("/")+1,a.lastIndexOf("?")),d=a.substring(a.lastIndexOf("=")+1),b=scribd.Document.getDoc(c,d);b.addParam("jsapi_version",1);b.addParam("width","500");b.addParam("height","667");b.write("productInfo");$("#productInfo").dialog("open")});$("#licensing").dialog({autoOpen:false,closeOnEscape:false,dialogClass:"no-close",draggable:false,width:580,modal:true,resizable:false,title:b,buttons:[{text:c,click:function(){acceptedLicense=true;$(this).dialog("close")}},{text:a,click:function(){acceptedLicense=false;$(this).dialog("close")}}]}).bind("dialogclose",function(){if(acceptedLicense){var a=$("input[name='licenseForProductId']").val();AddRemove(a)}$("input[name='licenseForProductId']").val("0")}).css("visibility","visible");$(".product").click(function(d){d.preventDefault();var a=this.id.substring(this.id.lastIndexOf("_")+1),b=$("input[name='isPhysical_"+a+"']").val();if(b==="False"){var c=$("input[name='isInCart_"+a+"']").val();if(c==="True"){shownLicense=true;acceptedLicense=true}if(!shownLicense||!acceptedLicense){$("input[name='licenseForProductId']").val(a);$("#licensing").dialog("open");shownLicense=true}else AddRemove(a)}else AddRemove(a)});$(".product").each(function(){var a=this.id.substring(this.id.lastIndexOf("_")+1);UpdateAddToCartIcon(a)});UpdateCartIcon()}function ItemsInCart(){var a=0;$(".isInCart").each(function(){if(this.value==="True")a=a+1});return a}function AddRemove(a){$.ajax({type:"POST",url:addRemoveAction,data:{productId:parseInt(a,10)},success:function(){var b=$("input[name='isInCart_"+a+"']").val();if(b==="False")$("input[name='isInCart_"+a+"']").val("True");else $("input[name='isInCart_"+a+"']").val("False");UpdateAddToCartIcon(a);UpdateCartIcon()},error:function(){window.location.href=indexAction}})}function UpdateAddToCartIcon(a){var b=$("input[name='isInCart_"+a+"']").val();if(b==="False")$("#product_"+a).css("background-position",cartSpriteAddToEmptyCart+"px 0px").mouseover(function(){$("#product_"+a).css("background-position",cartSpriteAddToFullCart+"px 0px")}).mouseout(function(){$("#product_"+a).css("background-position",cartSpriteAddToEmptyCart+"px 0px")});else $("#product_"+a).css("background-position",cartSpriteRemoveFromFullCart+"px 0px").mouseover(function(){$("#product_"+a).css("background-position",cartSpriteRemoveFromEmptyCart+"px 0px")}).mouseout(function(){$("#product_"+a).css("background-position",cartSpriteRemoveFromFullCart+"px 0px")})}function UpdateCartIcon(){var a=ItemsInCart();if(a>0){$("#cartIcon").css("background-position",cartSpriteFullCart+"px 0px").mouseover(function(){$("#cartIcon").css("background-position",cartSpriteFullCartCheckOut+"px 0px")}).mouseout(function(){$("#cartIcon").css("background-position",cartSpriteFullCart+"px 0px")});$("#amountInCart").html(a+"&nbsp;&nbsp;&nbsp;").css("background-image","url('"+bubbleIcon+"')")}else{$("#cartIcon").css("background-position",cartSpriteEmptyCart+"px 0px").mouseover(function(){$("#cartIcon").css("background-position",cartSpriteEmptyCart+"px 0px")}).mouseout(function(){$("#cartIcon").css("background-position",cartSpriteEmptyCart+"px 0px")});$("#amountInCart").text("").css("background-image","none")}}
