Namespace("sol.events",{Eventable:function(){this.handlers={}}}),sol.events.Eventable.prototype={addHandler:function(n,t){if(typeof t!="function")throw"event handler must be of type function";typeof this.handlers[n]=="undefined"&&(this.handlers[n]=[]),this.handlers[n].push(t)},addOneTimeHandler:function(n,t){if(typeof t!="function")throw"event handler must be of type function";typeof this.handlers[n]=="undefined"&&(this.handlers[n]=[]),this.handlers[n].push(function(i){t(i),this.removeHandler(n,t)})},removeHandler:function(n,t){var r,i,u;if(this.handlers[n]instanceof Array){for(r=this.handlers[n],i=0,u=r.length;i<u;i++)if(r[i]===t)break;r.splice(i,1)}},removeAllHandlers:function(n){n?delete this.handler[n]:this.handlers={}},_triggerEvent:function(n,t,i){var r=r={type:n,data:t||{},sender:i||null},f,u,e;if(this.handlers[r.type]instanceof Array)for(f=this.handlers[r.type],u=0,e=f.length;u<e;u++)try{f[u](r)}catch(o){console.log(o)}}},Namespace("sol.controls",{ControlBase:function(){sol.events.Eventable.apply(this,arguments),this.element=null,this.dispose=function(){},this.position=function(n){this.element.css(n)},this.enabler=arguments.length>0&&arguments[0].enabler||function(){return!0},this.updateState=function(){},this.isEnabled=!0,this.validationRules=[],this.displayValidationError=function(n){this.removeValidationError(),this.element.after(String.format('<span class="field-validation-error"><span>{0}<\/span><\/span>',n))},this.removeValidationError=function(){var n=this.element.next();n.hasClass("field-validation-error")&&n.remove()},this.isValid=function(){for(var t="",n=0;n<this.validationRules.length;n++)if(this.validationRules[n].rule(this)!==!0){t=this.validationRules[n].message;break}return t.length>0?(this.displayValidationError(t),!1):(this.removeValidationError(),!0)}}}),sol.controls.ControlBase.prototype=new sol.events.Eventable,String.prototype.stripSpaces=function(){return this.replace(/\s/g,"")},String.prototype.stripNonAlphaNumeric=function(){return this.replace(/\W/g,"")},String.prototype.formatter=function(){return String.formatter(this,arguments.length==1?arguments[0]:arguments)},String.prototype.sanitise=function(){return String.sanitise(this)},String.prototype.toImageUrl=function(){return String.toImageUrl(this,arguments.length==1?arguments[0]:arguments)},String.sanitise=function(n){return n.replace(/\W/g,"").replace(/\s/g,"")},String.toImageUrl=function(n,t){var o="",i=new StringBuilder,e,s,f;i.append(n.toString().toLowerCase()),e=0;for(s in t)t.hasOwnProperty(s)&&e++;e>0&&i.append("?");var r="",h=!1,u="";try{u=sol.config.settings.getSetting("max").imageResizerPrefix}catch(c){}for(f in t){r=f.toLowerCase();switch(r){case"prefix":u=t[f];break;case"404":h=!0;default:i.appendFormat("&{0}={1}",r,t[f])}}return h||i.append("&404=default.jpg"),o=u.length>0?"{0}{1}".formatter(u,i.toString()):i.toString(),r=null,o},String.formatter=function(n,t){t==null&&(t=[""]);var i=function(n,t){var u=function(n){return typeof n=="number"?Number:typeof n=="boolean"?Boolean:typeof n=="string"?String:n.constructor}(n),i=u.prototype,r=typeof n!="string"?i?i.formatter||i.toString:n.format||n.toString:n.toString;return r?typeof t=="undefined"||t==""?r.call(n):r.call(n,t):""};return arguments.length==1?function(){return String.formatter.apply(null,[n].concat(Array.prototype.slice.call(arguments,0)))}:(arguments.length==2&&typeof t!="object"&&typeof t!="array"&&(t=[t]),arguments.length>2&&(t=Array.prototype.slice.call(arguments,1)),n=n.replace(/\{\{|\}\}|\{([^}: ]+?)(?::([^}]*?))?\}/g,function(n,r,u){return n=="{{"?"{":n=="}}"?"}":typeof t[r]!="undefined"&&t[r]!==null?i(t[r],u):""}))};var StringBuilder=function(){this.buffer=[]},StringBuilder=function(){this.buffer=[]};StringBuilder.prototype={append:function(n){return this.buffer.push(n),this},appendLine:function(n){return this.buffer.push("\n"),this.buffer.push(n),this},appendN:function(n,t){for(var i=0;i<t;i++)this.append(n);return this},appendIf:function(n,t){return t&&this.append(n),this},appendFormat:function(){return this.append(String.formatter.apply(this,arguments)),this},toString:function(n){return this.buffer.join(n||"")}},function(n){n.toJSON=function(t){var i,f,e,y,o,s,h,r,l,c,a,u,v,p;if(typeof JSON=="object"&&JSON.stringify)return JSON.stringify(t);if(i=typeof t,t===null)return"null";if(i=="undefined")return undefined;if(i=="number"||i=="boolean")return t+"";if(i=="string")return n.quoteString(t);if(i=="object"){if(typeof t.toJSON=="function")return n.toJSON(t.toJSON());if(t.constructor===Date)return f=t.getUTCMonth()+1,f<10&&(f="0"+f),e=t.getUTCDate(),e<10&&(e="0"+e),y=t.getUTCFullYear(),o=t.getUTCHours(),o<10&&(o="0"+o),s=t.getUTCMinutes(),s<10&&(s="0"+s),h=t.getUTCSeconds(),h<10&&(h="0"+h),r=t.getUTCMilliseconds(),r<100&&(r="0"+r),r<10&&(r="0"+r),'"'+y+"-"+f+"-"+e+"T"+o+":"+s+":"+h+"."+r+'Z"';if(t.constructor===Array){for(l=[],c=0;c<t.length;c++)l.push(n.toJSON(t[c])||"null");return"["+l.join(",")+"]"}a=[];for(u in t){if(i=typeof u,i=="number")v='"'+u+'"';else if(i=="string")v=n.quoteString(u);else continue;typeof t[u]!="function"&&(p=n.toJSON(t[u]),a.push(v+":"+p))}return"{"+a.join(", ")+"}"}},n.evalJSON=function(n){return typeof JSON=="object"&&JSON.parse?JSON.parse(n):eval("("+n+")")},n.secureEvalJSON=function(n){if(typeof JSON=="object"&&JSON.parse)return JSON.parse(n);var t=n;if(t=t.replace(/\\["\\\/bfnrtu]/g,"@"),t=t.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]"),t=t.replace(/(?:^|:|,)(?:\s*\[)+/g,""),/^[\],:{}\s]*$/.test(t))return eval("("+n+")");throw new SyntaxError("Error parsing JSON, source is not valid.");},n.quoteString=function(n){return n.match(t)?'"'+n.replace(t,function(n){var t=i[n];return typeof t=="string"?t:(t=n.charCodeAt(),"\\u00"+Math.floor(t/16).toString(16)+(t%16).toString(16))})+'"':'"'+n+'"'};var t=/["\\\x00-\x1f\x7f-\x9f]/g,i={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"}}(jQuery),Array.prototype.filter||(Array.prototype.filter=function(n){var f=this.length>>>0,i,u,t,r;if(typeof n!="function")throw new TypeError;for(i=[],u=arguments[1],t=0;t<f;t++)t in this&&(r=this[t],n.call(u,r,t,this)&&i.push(r));return i}),Namespace("sol.utilities",{stripHTML:function(n){var t=/(<([^>]+)>)/gi;return n.replace(t,"")},getQueryStringArgs:function(n){for(var u=$("a.url").data("name").toLowerCase(),f=u.indexOf("?")+1,h=f>0?u.substring(f):"",i={},e=h.split("&"),r=null,o=null,s=null,t=0;t<e.length;t++)r=e[t].split("="),o=decodeURIComponent(r[0]),s=decodeURIComponent(r[1]),i[o]=s;return(n||"").length>0?i[n]||"":i},getLinksStringArgs:function(){var n;if(location.hash.length<=1)return"";var e=location.hash.length>0?location.hash.substring(1):"",i={},r=e.split("&"),t=null,u=null,f=null;for(n=0;n<r.length;n++)t=r[n].split("="),u=decodeURIComponent(t[0]),f=decodeURIComponent(t[1]),i[u]=f;return i},updateHashStringParameter:function(n){var t="",o;if(typeof arguments[0]=="object"){for(i=0;i<=n.length-1;i++)n[i].value.length>0&&(t+=n[i].name+"="+n[i].value+"&");t.length>0&&(t=t.substring(0,t.length-1))}else{var r=location.hash,f=arguments[0],u=arguments[1],e=new RegExp("([#|&])"+f+"=.*?(&|$)","i"),s=r.indexOf("#")!==-1?"&":"#";r.match(e)?(t=r.replace(e,"$1"+f+"="+u+"$2"),(u.length==0||u==0)&&(t=r.replace(e,"&"))):t=r+s+f+"="+u}o=new RegExp("&$","i"),location.hash=t.match(o)?t.replace(o,""):t.length>0?t:""},createCookie:function(n){var t,i;n=$.extend({name:"",value:"",days:30,callback:""},n||{}),n.days>0?(t=new Date,t.setTime(t.getTime()+n.days*864e5),i="; expires="+t.toGMTString()):i="",document.cookie=n.name+"="+n.value+i+"; path=/"},readCookie:function(n){for(var r=n+"=",u=document.cookie.split(";"),t,i=0;i<u.length;i++){for(t=u[i];t.charAt(0)==" ";)t=t.substring(1,t.length);if(t.indexOf(r)==0)return t.substring(r.length,t.length)}return null},eraseCookie:function(n){this.createCookie({name:n,value:"",days:-1})},applyBrowserClasses:function(n){if(typeof(n=="object")){var t=navigator.userAgent.match(/iPad/i)!=null;n.addClass()}},encodeURI:function(n){return encodeURIComponent(n)},decodeURI:function(n){return decodeURIComponent(n)},editor:{keyup:function(){sol.aws.lookbook.showSaveWarningMessage(arguments[1]),sol.aws.lookbook.admin.popup.copyEditorHtml(arguments[1])},blur:function(){},mouseover:function(){},keydown:function(){},focus:function(){},commandExecuted:function(){setTimeout(function(){sol.aws.lookbook.admin.popup.copyEditorHtml(radEditor),sol.aws.lookbook.showSaveWarningMessage(radEditor)},10)}},ajax:{post:function(n,t,i,r,u,f){$.ajax({type:"POST",url:n,data:typeof t!="string"?JSON.stringify(t):t,dataType:"json",contentType:f?"application/x-www-form-urlencoded; charset=utf-8":"application/json; charset=utf-8",success:i||$.noop,complete:u||$.noop,error:r||$.noop})},get:function(n,t,i){$.get(n,t,i,"json")}}}),Namespace("sol.aws",{format:{PriceDisplay:{NONE:0,CALCULATED_PRICE_NO_MESSAGE:1,RRP_AND_MESSAGE:2,CALCULATED_PRICE_WITH_MESSAGE:3,RRP_ONLY:4},formatProductPrice:function(n){var u="",r=sol.config.settings.getSetting("max").priceRangeFormat,s=sol.config.settings.getSetting("max").combinedProductPrice,e=1,f="",i="",t=sol.aws.format.formatPrice,o=sol.aws.format.PriceDisplay;if(n=$.extend({MaxRRP:0,MaxPrice:0,MinPrice:0,MinRRP:0,Sale:0,Short:!1,Increaser:1},n||{}),n.MinPrice*=e,n.MaxPrice*=e,n.MinRRP*=e,n.MaxRRP*=e,n.Short)u=n.Sale&&n.MinPrice<n.MaxRRP?s.formatter(t(n.MaxRRP),t(n.MinPrice)):t(n.MaxRRP);else if(n.Sale)if(f=n.MaxRRP>n.MinRRP?r.formatter(t(n.MinRRP),t(n.MaxRRP)):t(n.MaxRRP),n.isOnPromotion){switch(n.ShowOnListingId){case o.CALCULATED_PRICE_NO_MESSAGE:i=n.MinPrice<n.MaxPrice?r.formatter(t(n.MinPrice),t(n.MaxPrice)):t(n.MaxPrice);break;case o.RRP_AND_MESSAGE:i=n.MinPrice<n.MaxPrice?r.formatter(t(n.MinPrice),t(n.MaxPrice)):t(n.MinRRP);break;case o.CALCULATED_PRICE_WITH_MESSAGE:i=n.MinPrice<n.MaxPrice?r.formatter(t(n.MinPrice),t(n.MaxPrice)):t(n.MaxPrice);break;case o.RRP_ONLY:i=t(n.MinRRP)}u=f!=i?s.formatter(f,i):t(n.MaxRRP)}else i=n.MinPrice<n.MaxPrice?r.formatter(t(n.MinPrice),t(n.MaxPrice)):t(n.MaxPrice),u=f!=i?s.formatter(f,i):t(n.MaxRRP);else u=n.MaxRRP>n.MinRRP&&n.MinRRP>0?r.formatter(t(n.MinRRP),t(n.MaxRRP)):t(n.MaxRRP);return u},formatSkuPrice:function(n){var r=sol.aws.format.PriceDisplay,i="",u=sol.config.settings.getSetting("max").combinedProductPrice,t=sol.aws.format.formatPrice;if(n.isOnPromotion)switch(n.ShowOnListingId){case r.CALCULATED_PRICE_NO_MESSAGE:i=u.formatter(t(n.RRP),t(n.CalculatedPrice));break;case r.RRP_AND_MESSAGE:i=t(n.RRP);break;case r.CALCULATED_PRICE_WITH_MESSAGE:i=u.formatter(t(n.RRP),t(n.CalculatedPrice));break;case r.RRP_ONLY:i=t(n.RRP);break;default:i=t(n.RRP)}else i=n.Sale&&n.CalculatedPrice<n.RRP?u.formatter(t(n.RRP),t(n.CalculatedPrice)):t(n.RRP);return i},productLink:function(n){var i=this.formatStrings,t;return n=$.extend({productId:0,categoryId:0,link:!0,text:"Visit Product Page"},n||{}),n.productId=n.productId>0?n.productId:settings("product").productId,n.categoryId=n.categoryId>0?n.categoryId:settings("product").categoryId,t="{0}?categoryId={1}&productId={2}".formatter(sol.config.settings.getSetting("max").productPage,n.categoryId,n.productId),n.link&&(t=i.link.formatter("productLink",t,n.text)),t},formatPrice:function(n){return accounting.formatMoney(n,sol.config.settings.getSetting("max").formatCurrencyShort.formatter(""))}}}),Namespace("sol.aws.format",{formatStrings:{button:"<a class='btnAction {0}' title='{1}'><span>{1}<\/span><\/a>",hyperlink:"<a class='{0}' href='{1}' title='{2}'>{3}<\/a>",img:"{0}?height={2}&width={1}&404=default.jpg",link:"<a class='btnAction {0}' href='{1}'><span>{2}<\/span><\/a>",p:"<p class='{0}'>{1}<\/p>",span:"<span class='{0}'>{1}<\/span>",error:"<p class='error {0}'>{1}<\/p>"}}),Namespace("sol.aws.format",{templates:{wishListPopup:function(n){n=$.extend({id:"WishListPop",title:"Popup",content:"<p>content<\/p>",footer:"",width:400,height:400},n||{});var t=['<div id="{0}" class="wishListPopup">'.formatter(n.id),'<div class="header">',"<h3>{0}<\/h3>".formatter(n.title),'<a class="close remove"><span>X<\/span><\/a>',"<\/div>",'<div class="content">',n.content,n.footer,"<\/div>"];return t.join("\n")},getProductLinks:function(){var n=[sol.aws.format.formatStrings.hyperlink.formatter("addToWishList","","Add to wish list","Add to wish list"),sol.aws.format.formatStrings.hyperlink.formatter("sendToFriend","","Send to a friend","Send to a friend"),];return n.join("\n")},getProductAddingLinks:function(n){var t=new StringBuilder;return n.showstockist&&n.isretail==1&&t.appendFormat(sol.aws.format.formatStrings.button,"findStockist","Find a stockist"),n.isretail==1&&t.appendFormat(sol.aws.format.formatStrings.button,"addToWishList","Add to wish list"),n.canbuy==1&&t.appendFormat(sol.aws.format.formatStrings.button,"addToCart","Add to Bag"),t.appendFormat(sol.aws.format.formatStrings.span,"outOfStock","<span>Temporarily out of stock. Please add to Wish List to be notified when it is back in stock shortly<\/span>"),t.toString()},getWishlistAddingLinks:function(){var n=new StringBuilder;return n.appendFormat(sol.aws.format.formatStrings.button,"addToCart","Add to Bag"),n.appendFormat(sol.aws.format.formatStrings.button,"updateSku","Update Wishlist"),n.toString()}}})