/*!
 * plum.Shop v1.1: A shopping cart for jQuery
 *
 * Copyright 2011 RoboCréatif, LLC
 * <http://robocreatif.com>
 *
 * Date: August 7, 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",thumb:"thumb",title:"title"},cookie:"plum_shop",currency:"USD",currencyafter:"",currencybefore:"$",currencydecimal:".",currencythousands:",",discount:null,discountcodes:{},emptycart:function(){},googlemerchant:null,headerurl:null,limit:0,localstorage:"plum_shop",moneybookersuser:null,moneybookersdomain:null,nofityurl:null,paypaluser:null,paypaldomain:null,ready:function(){},returnurl:null,session:"plum_shop",sessionurl:null,shipping:null,shippingexempt:0,shippingexemptover:true,shippingname:null,shippingrate:0,shippingtype:"variable",statusurl:null,taxcountry:null,taxexempt:0,taxexemptover:false,taxrate:0},addItem:function(e){if(!e.id){return false}var d=this.getItem(e.id),f=this.options,g=f.classes;if(typeof e.thumb==="object"){e.thumb=e.thumb.src}if(typeof e.price==="string"){e.price=this.price(e.price)}if(f.additem.call(e,f)===false){return false}if(typeof d==="number"){e.quantity+=parseInt(this.cart.items[d].quantity);if(f.limit&&e.quantity>f.limit){return false}if(e.quantity<1){this.cart.items.splice(d,1)}else{c.extend(this.cart.items[d],e);c("li[data-"+g.id+'="'+e.id+'"]').html(this.createItem(this.cart.items[d]))}}else{if(f.limit&&e.quantity>f.limit){return false}this.cart.items.push(e);c("ul."+g.cartlist).append("<li data-"+g.id+'="'+e.id+'">'+this.createItem(e)+"</li>")}this.updateCart(true)},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}));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}this.options.checkout.call(this,d)},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;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>");this.updateCart();return true},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(/(\{[^\}]+\})/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]||"&nbsp;")}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?"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||"Shipping";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,g=e.classes,f=0;c("."+g.purchase).live("click",function(q){q.preventDefault();var j,m=0,o=c(this).closest("."+g.product),n={},h=o[0].attributes,k=h.length;for(;m<k;m++){j=new RegExp("^data-"+g.custom+"-(.+)$");j=h[m].name.match(j);if(j){n[j[1]]=!/^[\d\.]+$/.test(h[m].value)?h[m].value:parseFloat(h[m].value)}}c('[class|="'+g.custom+'"]',o).each(function(){j=new RegExp(g.custom+"-([^\\s]+)");j=c(this).attr("class").match(j);n[j[1]]=this.nodeName.toLowerCase()==="input"?this.value:c(this).text()});d.addItem(c.extend(n,{description:o.attr("data-"+g.description)||c("input."+g.description,o).val()||c("."+g.description,o).text(),id:o.attr("id")||o.attr("data-"+g.id)||c("input."+g.id,o).val()||c("."+g.id,o).text(),price:o.attr("data-"+g.price)||c("input."+g.price,o).val()||c("."+g.price,o).text(),quantity:parseInt(c("input."+g.quantity,o).val()||1),title:o[0].title||o.attr("data-"+g.title)||c("input."+g.title,o).val()||c("."+g.title,o).text(),thumb:c("img."+g.thumb,o)[0]||o.attr("data-"+g.thumb)||c("input."+g.thumb,o).val()||c("."+g.thumb,o).text()}))});c("."+g.cart+" input."+g.quantity).live({blur:function(){var l={},k=c(this).closest("li[data-"+g.id+"]"),j=d.cart.items[d.getItem(k.attr("data-"+g.id))],m=-j.quantity,h=this.value?parseInt(this.value,10)+m:m;h=isNaN(h)?0+m:h;l={id:j.id,quantity:h};if(this.value===this.defaultValue||(e.limit&&l.quantity+j.quantity>e.limit)){return false}d.addItem(l);if(!this.value||h<=m){k.fadeOut(300,function(){k.remove()})}else{if(h){k.html(d.createItem(c.extend({},j,l)))}}},keydown:function(h){if(h.which===13){h.preventDefault();c(this).trigger("blur")}}});c("."+g.empty).live("click",function(h){d.emptyConfirm.call(d,h)});c("select."+g.shipping).live("change",function(){d.cart.shipping=this.value;d.updateCart(true)});c("."+g.discount).live({blur:function(){d.cart.discount=this.value in e.discountcodes?this.value:false;d.updateCart(true)},keyup:function(h){if(h.which===13){h.preventDefault();c(this).trigger("blur")}}});c("."+g.checkout).live("click",function(h){d.checkoutCustom.call(d,h)});c("."+g.google).live("click",function(h){if(d.quantity&&/^[\d]{10,15}$/.test(e.googlemerchant)){d.checkoutGoogle.call(d,h)}});c("."+g.paypal).live("click",function(h){if(d.quantity&&e.paypaluser&&e.paypaldomain){d.checkoutPaypal.call(d,h)}});c("."+g.moneybookers).live("click",function(h){if(d.quantity&&e.moneybookersuser&&e.moneybookersdomain){d.checkoutMoneybookers.call(d,h)}});c("body").bind("DOMNodeInserted",function(j,h){var i=!c.browser.msie||parseInt(c.browser.version,10)>8?c(j.target):c("."+g.cart,h[0]);if(i.is("."+g.cart)){return setTimeout(function(){d.createCart(i)},20)}})},price:function(d){return parseFloat(d.replace(new RegExp("[^\\d"+this.options.currencydecimal+"]+"),""))},priceShipping:function(){var g=this,h=g.options,j=h.classes,f,e="",d=c("select."+j.shipping);if(typeof h.shipping==="function"){this.cart.each(function(){g.shipping+=h.shipping.call(this)})}else{h.shippingrate=typeof h.shippingrate==="object"?h.shippingrate:{Shipping:h.shippingrate};for(f in h.shippingrate){if(h.shippingrate.hasOwnProperty(f)){e+='<option value="'+f+'">'+f+" (";switch(h.shippingtype){case"variable":e+=this.format(this.subtotal*h.shippingrate[f]);break;case"fixed":e+=this.format(this.quantity*h.shippingrate[f]);break;default:e+=this.format(h.shippingrate[f]);break}e+=")</option>"}}e=c(e);this.cart.shipping=e.filter(function(){return this.value===g.cart.shipping});if(!this.cart.shipping.length){this.cart.shipping=e.eq(0)}this.shipping=this.price(this.cart.shipping.text().match(/ \((.+)\)$/)[1]);this.cart.shipping=this.cart.shipping[0].value;if(d.length){d.html(e).find('[value="'+this.cart.shipping+'"]')[0].selected=true}if(h.shippingexempt&&((h.shippingexemptover&&h.shippingexempt<this.subtotal)||(!h.shippingexemptover&&h.shippingexemptover>this.subtotal))){this.shipping=0;c("option",d).each(function(){c(this).text(this.value+" ("+g.format(0)+")")})}}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(typeof e.tax==="function"){this.cart.each(function(){d.tax+=e.tax.call(this)})}else{this.tax=(this.subtotal-this.discount)*e.taxrate;if(!e.taxcountry||(e.taxexempt&&((e.taxexemptover&&e.taxexempt<this.subtotal)||(!e.taxexemptover&&e.taxexempt>this.subtotal)))){this.tax=0}}return this.tax=parseFloat(this.tax.toFixed(2))},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?"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));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));
