/*!
 * plum.Shop v1.2: A shopping cart for jQuery
 *
 * Copyright 2011 RoboCréatif, LLC
 * <http://robocreatif.com>
 *
 * Date: August 20, 2011
 */
var plum=plum||{};String.prototype.plum=Number.prototype.plum=jQuery.fn.plum=function(d,b){var c=d.split("."),a;d=c[0];if(c.length>1){a=b;b=c[1]}return typeof plum[d]==="function"?plum[d].call(this,b,a):this};(function(c,b){if(c.browser.msie&&parseInt(c.browser.version,10)<9){(function(){var d=c.fn.html;c.fn.html=function(){var e=d.apply(this,arguments);this.trigger("DOMNodeInserted",[e]);return e}}())}function a(d){c.extend(true,this.options,d);this.getCart();this.createCart(c("."+this.options.classes.cart));this.listen();this.options.ready.call(this)}a.prototype={cart:false,quantity:0,subtotal:0,shipping:0,tax:0,discount:0,total:0,options:{additem:function(){},cancelurl:null,cartitem:"",checkout:function(){},classes:{cart:"cart",cartlist:"cart-list",cartdiscount:"cart-discount",cartquantity:"cart-quantity",cartshipping:"cart-shipping",cartsubtotal:"cart-subtotal",carttax:"cart-tax",carttotal:"cart-total",checkout:"checkout",custom:"custom",description:"description",discount:"discount",empty:"empty",google:"google",id:"id",moneybookers:"moneybookers",paypal:"paypal",price:"price",product:"product",purchase:"purchase",quantity:"quantity",shipping:"shipping",remove:"remove",thumb:"thumb",title:"title"},cookie:"plum_shop",currency:"USD",currencyafter:"",currencybefore:"$",currencydecimal:".",currencythousands:",",discount:null,discountcodes:{},emptycart:function(){},googlemerchant:null,headerurl:null,limit:0,listen:{},localstorage:"plum_shop",moneybookersuser:null,moneybookersdomain:null,nofityurl:null,paypaluser:null,paypaldomain:null,ready:function(){},returnurl:null,session:"plum_shop",sessionurl:null,shipping:function(){},shippingexempt:0,shippingexemptover:true,shippingname:null,shippingrate:0,shippingtype:"variable",statusurl:null,taxcountry:"",taxexempt:0,taxexemptover:false,taxrate:0,updatetotals:function(){}},addItem:function(f,e){if(!f.id){return false}var d=this.getItem(f.id),h=this.options,j=h.classes,g=c("li[data-"+j.id+'="'+f.id+'"]');if(typeof f.thumb==="object"){f.thumb=f.thumb.src}if(typeof f.price==="string"){f.price=this.price(f.price)}if(h.additem.call(this,f)===false){return false}if(typeof d!=="undefined"){if(h.limit&&f.quantity>h.limit){return false}if(f.quantity<1){this.cart.items.splice(d,1);g.fadeOut(300,function(){g.remove()})}else{c.extend(this.cart.items[d],f);g.html(this.createItem(this.cart.items[d]))}}else{if(h.limit&&product.quantity>h.limit){return false}this.cart.items.push(f);c("ul."+j.cartlist).append("<li data-"+j.id+'="'+f.id+'">'+this.createItem(f)+"</li>")}this.updateCart(e)},cartCookie:function(f){var h=this.options,g,e,d;if(!f){d=document.cookie.split(";");for(e in d){g=d[e];while(g.charAt(0)===" "){g=g.substring(1)}if(g.indexOf(h.cookie+"=")===0){this.cart=unescape(g.substring((h.cookie+"=").length));this.cart=c.parseJSON(this.cart);break}}}else{g=h.cookie+"="+(typeof this.cart!=="object"?"":escape(this.json({items:this.cart.items,discount:this.cart.discount,shipping:this.cart.shipping})))+"; path=/";if(g.length<4049){document.cookie=g}}},cartSession:function(d){var f=this.options,e={};if(!d){e[f.session]=true;c.ajax(f.sessionurl,{asyn:false,type:"GET",data:e,dataType:"json",success:function(g){this.cart=g}})}else{e[f.session]={cart:this.cart};c.post(f.sessionurl,e)}},cartStorage:function(d){var e=this.options;if(!d){this.cart=window.localStorage[e.localstorage]?c.parseJSON(unescape(window.localStorage[e.localstorage])):false}else{window.localStorage[e.localstorage]=typeof this.cart!=="object"?"":escape(this.json({items:this.cart.items,discount:this.cart.discount,shipping:this.cart.shipping}))}},checkout:function(g,h){var e,d,f='<form style="display:none" action="'+g+'" method="post">';for(d in h){e=h[d];f+='<input type="hidden" name="'+e[0]+'" value="'+e[1]+'">'}return c(f+='<input type="submit"></form>').appendTo("body").submit()},checkoutCustom:function(d){if(!this.quantity){return}if(this.options.checkout.call(this,d)===true){this.emptyCart()}},checkoutGoogle:function(j){j.preventDefault();var f=this.cart.items.length+1,d,k=this.options,g="https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/",h=[];this.cart.each(function(m){var e=[],l;m++;h.push(["item_merchant_id_"+m,this.id]);h.push(["item_name_"+m,this.title]);h.push(["item_quantity_"+m,this.quantity]);h.push(["item_price_"+m,this.price]);h.push(["item_currency_"+m,k.currency]);for(l in this){if(!/^(?:description|id|price|quantity|title|thumb)$/.test(l)){e.push(l+": "+this[l])}}h.push(["item_description_"+m,e.length?e.join(", "):""])});if(this.discount){h.push(["item_merchant_id_"+f,this.cart.discount||0]);h.push(["item_name_"+f,this.cart.discount||this.format(-this.discount)]);h.push(["item_description_"+f,"Discount"]);h.push(["item_quantity_"+f,1]);h.push(["item_price_"+f,-this.discount]);h.push(["item_currency_"+f,k.currency])}if(this.tax){d=k.taxcountry.split(/\s*,\s*/);h.push(["checkout-flow-support.merchant-checkout-flow-support.tax-tables.default-tax-table.tax-rules.default-tax-rule-1.rate",k.taxrate]);for(f in d){h.push(["checkout-flow-support.merchant-checkout-flow-support.tax-tables.default-tax-table.tax-rules.default-tax-rule-1.tax-area.postal-area.country-code",d[f]])}}h.push(["checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.name",this.cart.shipping]);h.push(["checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price",this.shipping]);h.push(["checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price.currency",k.currency]);this.checkout(g+k.googlemerchant,h)},checkoutPaypal:function(h){h.preventDefault();var d=0,j=this.options,f="https://www.paypal.com/cgi-bin/webscr",g=[];this.cart.each(function(){var i,e=0;d++;g.push(["item_number_"+d,this.id]);g.push(["item_name_"+d,this.title||this.id]);g.push(["quantity_"+d,this.quantity]);g.push(["amount_"+d,this.price]);for(i in this){if(!/^(?:description|id|price|quantity|title|thumb)$/.test(i)&&e<7){g.push(["on"+e+"_"+d,i]);g.push(["os"+e+++"_"+d,this[i]])}}});g.push(["cmd","_cart"]);g.push(["upload","1"]);g.push(["currency_code",j.currency]);g.push(["business",j.paypaluser+"@"+j.paypaldomain]);g.push(["tax_cart",this.tax]);g.push(["discount_amount_cart",this.discount]);g.push(["custom","Shipping type: "+this.cart.shipping]);g.push(["handling_cart",this.shipping]);if(j.headerurl){g.push(["cpp_header_image",j.headerurl])}if(j.cancelurl){g.push(["cancel_return",j.cancelurl])}if(j.returnurl){g.push(["return",j.returnurl])}if(j.notifyurl){g.push(["notify_url",j.notifyurl])}this.checkout(f,g)},checkoutMoneybookers:function(h){h.preventDefault();var d=0,j=this.options,f="https://www.moneybookers.com/app/payment.pl",g=[];this.cart.each(function(){var i,e=[];d++;g.push(["detail"+d+"_description",this.title]);for(i in this){if(!/^(?:description|price|title|thumb)$/.test(i)){e.push(i+": "+this[i])}}g.push(["detail"+d+"_text",e.join(", ")])});d=2;if(this.discount){g.push(["amount"+d+"_description",this.cart.discount||"Discount"]);g.push(["amount"+d++,this.format(-this.discount)])}g.push(["amount"+d+"_description",this.cart.shipping]);g.push(["amount"+d++,this.format(this.shipping)]);g.push(["amount"+d+"_description","Tax"]);g.push(["amount"+d++,this.format(this.tax)]);g.push(["amount",this.total.toFixed(2)]);g.push(["currency",j.currency]);g.push(["pay_to_email",j.moneybookersuser+"@"+j.moneybookersdomain]);if(j.headerurl){g.push(["logo_url",j.headerurl])}if(j.cancelurl){g.push(["cancel_url",j.cancelurl])}if(j.returnurl){g.push(["return_url",j.returnurl])}if(j.notifyurl){g.push(["status_url",j.notifyurl])}this.checkout(f,g)},createCart:function(f){var e=this,d=[],g=this.options.classes;if(f.length){this.cart.each(function(){d.push("<li data-"+g.id+'="'+this.id+'">'+e.createItem(this)+"</li>")});f.html('<ul class="'+g.cartlist+'">'+d.join("")+"</ul>");c(":input",f).trigger("change")}this.updateCart()},createItem:function(h){var d,g=0,f=this.options.cartitem.replace(/{pricesingle}/g,this.format(h.price)).replace(/{pricetotal}/g,this.format(this.priceSubtotal(h))),e=f.match(/(\{[^\}\s]+\})/g);for(g in e){d=e[g].toString().substring(1,e[g].length-1);f=f.replace(new RegExp(e[g],"g"),h[d]||"")}return f},format:function(f){var h=this.options,g=Math.abs(+f||0).toFixed(2),e=parseInt(g,10)+"",d=(d=e.length)>3?d%3:0;return(f<0?"-":"")+h.currencybefore+(d?e.substr(0,d)+h.currencythousands:"")+e.substr(d).replace(/(\d{3})(?=\d)/g,"$1"+h.currencythousands)+h.currencydecimal+Math.abs(g-e).toFixed(2).slice(2)+h.currencyafter},each:function(g){var f,e=0,d=this.items.length;for(;e<d;e){f=g.call(this.items[e],e++);if(typeof f!=="undefined"&&f!==true){return f}}},emptyCart:function(){var e=this.options.classes,d=c("ul."+e.cartlist+" li").fadeOut(300,function(){d.remove()});c("."+e.discount).val("");this.cart={items:[],discount:false};this.cart.each=this.each;this.updateCart(true)},emptyConfirm:function(d){var e,f=this.options.classes;if(d){d.preventDefault()}if(!this.quantity){return}if(this.options.emptycart.call(this)!==false){this.emptyCart()}},getCart:function(){this["cart"+(this.options.session&&this.options.sessionurl?"Session":!!window.localStorage&&this.options.localstorage?"Storage":"Cookie")]();this.cart=this.cart||{};this.cart.items=this.cart.items||[];this.cart.discount=this.cart.discount||false;this.cart.shipping=this.cart.shipping||false;this.cart.each=this.each},getItem:function(d){return this.cart.each(function(e){return this.id===d?e:true})},json:function(d){var f=[],e;switch(typeof d){case"function":return"function";case"number":case"boolean":return d;case"string":return'"'+d.toString().replace(/(\"|\/|\{|\})/g,"\\$1")+'"';default:if(typeof d.length==="number"){for(e in d){f.push(this.json(d[e]))}return"["+f.join(",")+"]"}for(e in d){f.push('"'+e+'":'+this.json(d[e]))}return"{"+f.join(",")+"}"}},listen:function(){var d=this,e=d.options,h=e.classes,g=0,f=0;c("."+h.purchase).live("click",function(s){s.preventDefault();var k,n=0,r=c(this).closest("."+h.product),q,o={},j=r[0].attributes,m=j.length;for(;n<m;n++){k=new RegExp("^data-("+h.price+"|"+h.description+"|"+h.title+"|"+h.quantity+"|"+h.custom+"-(.+))$");k=j[n].name.match(k);if(k){k=k[2]||k[1];if(!o[k]){o[k]=j[n].value}}}c("[class]",r).each(function(){var i=c(this);k=new RegExp(h.price+"|"+h.description+"|"+h.title+"|"+h.thumb+"|"+h.quantity+"|"+h.custom+"-([^\\s]+)");k=i.attr("class").match(k);if(k){k=k[1]||k[0];if(!o[k]){o[k]=i.is(":input")?i.val():i.is("img")?i[0].src:i.text();if(i.is("select")){i=c("option:selected:eq(0)",i)}o.id=o.id||i.attr("id")||i.attr("data-"+h.id)}}});o.id=o.id||r.attr("id");o.quantity=parseInt(o.quantity||1,10);q=d.getItem(o.id);q=d.cart.items[q];q=typeof q==="undefined"?0:q.quantity;d.addItem(c.extend(o,{quantity:q+o.quantity,title:o.title||r[0].title}),true)});c("."+h.cart+" :input").live("change",function(j){if(f){return false}var i=c(this);f=setTimeout(function(){var k,l=d.cart.items[d.getItem(i.closest("li").attr("data-"+h.id))];f=0;if(i.hasClass(h.quantity)){return d.updateQuantity.call(i[0],d,l)}for(k in e.listen){if(typeof e.listen[k]==="function"){if(i.hasClass(k)){e.listen[k].call(i[0],d,l)}}}},0)});c("."+h.cart+" ."+h.remove).live("click",function(j){j.preventDefault();var i=d.getItem(c(this).closest("li").attr("data-"+h.id));i=d.cart.items[i];i.quantity=0;d.updateQuantity.call(this,shop,i)});c("."+h.empty).live("click",function(i){d.emptyConfirm.call(d,i)});c("select."+h.shipping).live("change",function(){d.cart.shipping=this.value;d.updateCart(true)});c("."+h.discount).live({blur:function(){d.cart.discount=this.value in e.discountcodes?this.value:false;d.updateCart(true)},keyup:function(i){if(i.which===13){i.preventDefault();c(this).trigger("blur")}}});c("."+h.checkout).live("click",function(i){d.checkoutCustom.call(d,i)});c("."+h.google).live("click",function(i){if(d.quantity&&/^[\d]{10,15}$/.test(e.googlemerchant)){d.checkoutGoogle.call(d,i)}});c("."+h.paypal).live("click",function(i){if(d.quantity&&e.paypaluser&&e.paypaldomain){d.checkoutPaypal.call(d,i)}});c("."+h.moneybookers).live("click",function(i){if(d.quantity&&e.moneybookersuser&&e.moneybookersdomain){d.checkoutMoneybookers.call(d,i)}});c("body").bind("DOMNodeInserted",function(k,i){var j=!c.browser.msie||parseInt(c.browser.version,10)>8?c(k.target):c("."+h.cart,i[0]);if(j.is("."+h.cart)){return setTimeout(function(){d.createCart(j)},20)}})},price:function(d){return parseFloat(d.replace(new RegExp("[^\\d"+this.options.currencydecimal+"]+"),""))},priceShipping:function(){var h=this,j=h.options,k=j.classes,d=0,g,f="",e=c("select."+k.shipping);this.shipping=0;if(typeof j.shippingrate!=="object"){j.shippingrate={Shipping:j.shippingrate}}for(g in j.shippingrate){f+='<option value="'+g+'">'+g+" (";switch(j.shippingtype){case"variable":f+=this.format(this.subtotal*j.shippingrate[g]);break;case"fixed":f+=this.format(this.quantity*j.shippingrate[g]);break;case"flat":f+=this.format(j.shippingrate[g]);break;default:this.cart.each(function(){d+=j.shipping.call(this,j.shippingrate[g])});f+=this.format(d);break}f+=")</option>"}e.html(f);f=c(f);this.cart.shipping=(h.cart.shipping?f.filter(function(){return this.value===h.cart.shipping}):f.eq(0));if(j.shippingexempt&&((j.shippingexemptover&&j.shippingexempt<this.subtotal)||(!j.shippingexemptover&&j.shippingexempt>this.subtotal))){c("option",e).each(function(){c(this).text(this.value+" ("+h.format(0)+")")})}else{this.shipping=this.price(this.cart.shipping.text().match(/ \((.+)\)$/)[1]);e.find('[value="'+this.cart.shipping[0].value+'"]').attr("selected",true)}this.cart.shipping=this.cart.shipping[0].value;return this.shipping=parseFloat(this.shipping.toFixed(2))},priceSubtotal:function(d){return d.price*d.quantity},priceTax:function(){var e=this.options,d=this;if(!e.taxcountry||(e.taxexempt&&((e.taxexemptover&&e.taxexempt<this.subtotal)||(!e.taxexemptover&&e.taxexempt>this.subtotal)))){this.tax=0}else{if(typeof e.tax==="function"){this.cart.each(function(){d.tax+=e.tax.call(d,this)})}else{this.tax=(this.subtotal-this.discount)*e.taxrate}}return this.tax=parseFloat(this.tax.toFixed(2))},updateQuantity:function(f,d){var e=(this.value?parseInt(this.value,10):0)-d.quantity;d.quantity+=isNaN(e)?-d.quantity:e;return(this.hasOwnProperty("value")&&this.value===this.defalutValue)||(f.options.limit&&d.quantity>f.options.limit)?this:f.addItem(d,true)},updateCart:function(f){var i={},h=this.options,e=this,g=0;this.quantity=0;this.subtotal=0;this.cart.each(function(){e.quantity+=this.quantity;e.subtotal+=e.priceSubtotal(this)});this.shipping=0;this.priceShipping();g=!this.quantity||!this.cart.discount?0:/%/.test(h.discountcodes[this.cart.discount])?this.subtotal*parseFloat(h.discountcodes[this.cart.discount])/100:h.discountcodes[this.cart.discount];g=g||0;g+=typeof h.discount==="function"?h.discount.call(this):0;this.discount=this.quantity?g:0;this.updateTotals();if(f){this["cart"+(h.sessionurl&&h.session?"Session":!!window.localStorage&&h.localstorage?"Storage":"Cookie")](true)}},updateTotals:function(){var d=this.options.classes;this.tax=0;this.priceTax();this.total=this.subtotal-this.discount+this.tax+this.shipping;this.total=parseFloat(this.total.toFixed(2));this.options.updatetotals.call(this);c("."+d.cartquantity).html(this.quantity);c("."+d.cartsubtotal).html(this.format(this.subtotal));c("."+d.cartdiscount).html(this.format(-this.discount));c("."+d.carttax).html(this.format(this.tax));c("."+d.cartshipping).html(this.format(this.shipping));c("."+d.carttotal).html(this.format(this.total));c("."+d.discount).val(this.cart.discount||"")}};b.shop=function(d){new a(d);return this};b.Shop=a}(jQuery,plum));
