diff --git a/dist/paypal-button-minicart.min.js b/dist/paypal-button-minicart.min.js index e1b70f5..260b7c7 100644 --- a/dist/paypal-button-minicart.min.js +++ b/dist/paypal-button-minicart.min.js @@ -1,6 +1,6 @@ /*! * PayPalJSButtons * JavaScript integration for PayPal's payment buttons - * @version 1.0.0 - 2013-03-10, 11:53:45 PM + * @version 1.0.0 - 2013-03-15, 6:52:50 PM * @author Jeff Harrell - */if(PAYPAL===void 0||!PAYPAL)var PAYPAL={};if(PAYPAL.apps=PAYPAL.apps||{},function(){"use strict";var config={parent:document.body,displayEdge:"right",edgeDistance:"50px",formTarget:null,cookiePath:"/",strings:{button:"",subtotal:"",discount:"",shipping:"",processing:""},name:"PPMiniCart",peekEnabled:!0,paypalURL:"https://www.paypal.com/cgi-bin/webscr",assetURL:"http://www.minicartjs.com/build/",events:{onRender:null,afterRender:null,onHide:null,afterHide:null,onShow:null,afterShow:null,onAddToCart:null,afterAddToCart:null,onRemoveFromCart:null,afterRemoveFromCart:null,onCheckout:null,onReset:null,afterReset:null}};PAYPAL.apps.MiniCart=function(){var e={},t=!1,n=!1,o={_cart:!0,_xclick:!0},i="MiniCart_AddToCart_WPS_US",r=/^(?:business|currency_code|lc|paymentaction|no_shipping|cn|no_note|invoice|handling_cart|weight_cart|weight_unit|tax_cart|page_style|image_url|cpp_|cs|cbt|return|cancel_return|notify_url|rm|custom|charset)/,a=function(){var e,t,n=config.name,o=[];o.push("#"+n+" form { position:fixed; float:none; top:-250px; "+config.displayEdge+":"+config.edgeDistance+"; width:265px; margin:0; padding:50px 10px 0; min-height:170px; background:#fff url("+config.assetURL+"images/minicart_sprite.png) no-repeat -125px -60px; border:1px solid #999; border-top:0; font:13px/normal arial, helvetica; color:#333; text-align:left; -moz-border-radius:0 0 8px 8px; -webkit-border-radius:0 0 8px 8px; border-radius:0 0 8px 8px; -moz-box-shadow:1px 1px 1px rgba(0, 0, 0, 0.1); -webkit-box-shadow:1px 1px 1px rgba(0, 0, 0, 0.1); box-shadow:1px 1px 1px rgba(0, 0, 0, 0.1); } "),o.push("#"+n+" ul { position:relative; overflow-x:hidden; overflow-y:auto; height:130px; margin:0 0 7px; padding:0; list-style-type:none; border-top:1px solid #ccc; border-bottom:1px solid #ccc; } "),o.push("#"+n+" li { position:relative; margin:-1px 0 0; padding:6px 5px 6px 0; border-top:1px solid #f2f2f2; } "),o.push("#"+n+" li a { display: block; width: 155px; color:#333; text-decoration:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } "),o.push("#"+n+" li a span { color:#999; font-size:10px; } "),o.push("#"+n+" li .quantity { position:absolute; top:.5em; right:78px; width:22px; padding:1px; border:1px solid #83a8cc; text-align:right; } "),o.push("#"+n+" li .price { position:absolute; top:.5em; right:4px; } "),o.push("#"+n+" li .remove { position:absolute; top:9px; right:60px; width:14px; height:14px; background:url("+config.assetURL+"images/minicart_sprite.png) no-repeat -134px -4px; border:0; cursor:pointer; } "),o.push("#"+n+" p { margin:0; padding:0 0 0 20px; background:url("+config.assetURL+"images/minicart_sprite.png) no-repeat; font-size:13px; font-weight:bold; } "),o.push("#"+n+" p:hover { cursor:pointer; } "),o.push("#"+n+" p input { float:right; margin:4px 0 0; padding:1px 4px; text-decoration:none; font-weight:normal; color:#333; background:#ffa822 url("+config.assetURL+"images/minicart_sprite.png) repeat-x left center; border:1px solid #d5bd98; border-right-color:#935e0d; border-bottom-color:#935e0d; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } "),o.push("#"+n+" p .shipping { display:block; font-size:10px; font-weight:normal; color:#999; } "),e=document.createElement("style"),e.type="text/css",e.styleSheet?e.styleSheet.cssText=o.join(""):e.appendChild(document.createTextNode(o.join(""))),t=document.getElementsByTagName("head")[0],t.appendChild(e)},u=function(){var t,n,o,r,a,u=e.UI;u.wrapper=document.createElement("div"),u.wrapper.id=config.name,t=document.createElement("input"),t.type="hidden",t.name="cmd",t.value="_cart",n=t.cloneNode(!1),n.name="upload",n.value="1",o=t.cloneNode(!1),o.name="bn",o.value=i,u.cart=document.createElement("form"),u.cart.method="post",u.cart.action=config.paypalURL,config.formTarget&&(u.cart.target=config.formTarget),u.cart.appendChild(t),u.cart.appendChild(n),u.cart.appendChild(o),u.wrapper.appendChild(u.cart),u.itemList=document.createElement("ul"),u.cart.appendChild(u.itemList),u.summary=document.createElement("p"),u.cart.appendChild(u.summary),u.button=document.createElement("input"),u.button.type="submit",u.button.value=config.strings.button||"Checkout",u.summary.appendChild(u.button),u.subtotal=document.createElement("span"),u.subtotal.innerHTML=config.strings.subtotal||"Subtotal: ",u.subtotalAmount=document.createElement("span"),u.subtotalAmount.innerHTML="0.00",u.subtotal.appendChild(u.subtotalAmount),u.summary.appendChild(u.subtotal),u.shipping=document.createElement("span"),u.shipping.className="shipping",u.shipping.innerHTML=config.strings.shipping||"does not include shipping & tax",u.summary.appendChild(u.shipping),window.attachEvent&&!window.opera&&(a=navigator.userAgent.match(/MSIE\s([^;]*)/),a&&(a=parseFloat(a[1]),(7>a||a>=7&&"BackCompat"===document.compatMode)&&(u.cart.style.position="absolute",u.wrapper.style[config.displayEdge]="0",u.wrapper.style.setExpression("top","x = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop")))),r="string"==typeof config.parent?document.getElementById(config.parent):config.parent,r.appendChild(u.wrapper)},c=function(){var n,i,r,a=e.UI;for(n=document.getElementsByTagName("form"),r=0;n.length>r;r++)i=n[r],i.cmd&&o[i.cmd.value]&&e.bindForm(i);$.event.add(document,"click",function(n){if(t){var o=n.target,i=a.cart;if(!/input|button|select|option/i.test(o.tagName)){for(;1===o.nodeType;){if(o===i)return;o=o.parentNode}e.hide(null)}}}),$.event.add(a.cart,"submit",function(e){b(e)}),$.event.add(a.summary,"click",function(t){var n=t.target;n!==a.button&&e.toggle(t)}),window.attachEvent&&!window.opera?$.event.add(document,"storage",function(){setTimeout(f,100)}):$.event.add(window,"storage",function(e){(e.key&&e.key===config.name||!e.key)&&f()})},s=function(e){var t;for(t in e)void 0!==typeof config[t]&&(config[t]=e[t])},p=function(){var e,n,o;if(e=$.storage.load())for(n=e.length,o=0;n>o;o++)m(e[o])&&(t=!0)},d=function(e){var t,n,o,i,r=e.elements,a={};for(o=0,i=r.length;i>o;o++)t=r[o],(n=$.util.getInputValue(t))&&(a[t.name]=n);return a},l=function(t){var n,o,i,a,u,c,s,p={},d={};for(i in t)r.test(i)?d[i]=t[i]:p[i]=t[i];for(c=0,a=e.products.length;a>c;c++)if(n=e.products[c].product,p.item_name===n.item_name&&p.item_number===n.item_number){for(u=!0,s=0;n["os"+s];){if(p["os"+s]!==n["os"+s]){u=!1;break}s++}if(u){p.offset=n.offset;break}}for(p.href=p.href||window.location.href,p.quantity=p.quantity||1,p.amount=p.amount||0,d["return"]&&-1===d["return"].indexOf("#")&&(d["return"]+="#"+config.name+"=reset"),o=p.option_index?p.option_index:0;p["os"+o];){for(c=0;p["option_select"+c]!==void 0;){if(p["option_select"+c]===p["os"+o]){p.amount=p.amount+parseFloat(p["option_amount"+c]);break}c++}o++}return{product:p,settings:d}},f=function(){e.products=[],e.UI.itemList.innerHTML="",e.UI.subtotalAmount.innerHTML="",p(),e.updateSubtotal()},m=function(t){var n,o,i,r=e.UI,a=r.cart,u=new ProductNode(t,e.UI.itemList.children.length+1),c=t.product.offset;e.products[c]=u;for(i in t.settings)a.elements[i]?a.elements[i].value?a.elements[i].value=t.settings[i]:a.elements[i]=t.settings[i]:(o=document.createElement("input"),o.type="hidden",o.name=i,o.value=t.settings[i],a.appendChild(o));if(u.isPlaceholder)return!1;$.event.add(u.removeInput,"click",function(){h(u,c)});var s=u.quantityInput.value;return $.event.add(u.quantityInput,"keyup",function(){var t=this;n=setTimeout(function(){var n=parseInt(t.value,10);isNaN(n)||n===s||(s=n,u.setQuantity(n),u.getQuantity()||h(u,c),e.updateSubtotal(),$.storage.save(e.products))},250)}),r.itemList.insertBefore(u.liNode,r.itemList.firstChild),$.util.animate(u.liNode,"opacity",{from:0,to:1}),!0},h=function(t,n){var o=config.events,i=o.onRemoveFromCart,r=o.afterRemoveFromCart;("function"!=typeof i||i.call(e,t)!==!1)&&(t.setQuantity(0),t.quantityInput.style.display="none",$.util.animate(t.liNode,"opacity",{from:1,to:0},function(){$.util.animate(t.liNode,"height",{from:18,to:0},function(){try{t.liNode.parentNode.removeChild(t.liNode)}catch(n){}var o,i,a,u,c,s,p=e.UI.cart.getElementsByTagName("li"),d=p.length,l=1;for(c=0;d>c;c++){for(o=p[c].getElementsByTagName("input"),i=o.length,s=0;i>s;s++)a=o[s],u=/(.+)_[0-9]+$/.exec(a.name),u&&u[1]&&(a.name=u[1]+"_"+l);l++}"function"==typeof r&&r.call(e,t)})}),e.products[n].product.item_name="",e.products[n].product.item_number="",e.updateSubtotal(),$.storage.save(e.products))},b=function(t){var n=config.events.onCheckout;return"function"==typeof n&&n.call(e,t)===!1?(t.preventDefault(),void 0):(e.UI.button.value=config.strings.processing||"Processing...",void 0)};return e.products=[],e.UI={},e.render=function(o){var i,r,p=config.events,d=p.onRender,l=p.afterRender;("function"!=typeof d||d.call(e)!==!1)&&(n||(s(o),a(),u(),c(),i=location.hash.substring(1),0===i.indexOf(config.name+"=")&&(r=i.split("=")[1],"reset"===r&&(e.reset(),location.hash=""))),f(),n||(t?setTimeout(function(){e.hide(null)},500):$.storage.remove()),n=!0,"function"==typeof l&&l.call(e))},e.bindForm=function(t){if(t.add)$.event.add(t,"submit",function(t){t.preventDefault(t);var n=d(t.target);e.addToCart(n)});else{if(!t.display)return!1;$.event.add(t,"submit",function(t){t.preventDefault(),e.show(t)})}return!0},e.addToCart=function(t){var n,o,i=config.events,r=i.onAddToCart,a=i.afterAddToCart,u=!1;return t=l(t),o=t.product.offset,"function"!=typeof r||r.call(e,t.product)!==!1?((n=this.getProductAtOffset(o))?(n.product.quantity+=parseInt(t.product.quantity||1,10),n.setPrice(t.product.amount*n.product.quantity),n.setQuantity(n.product.quantity),u=!0):(t.product.offset=e.products.length,u=m(t)),e.updateSubtotal(),e.show(null),$.storage.save(e.products),"function"==typeof a&&a.call(e,t),u):void 0},e.getProductAtOffset=function(e){return e!==void 0&&this.products[e]},e.calculateSubtotal=function(){var t,n,o,i,r,a,u=0,c=e.products;for(a=0,r=c.length;r>a;a++)n=c[a],(t=n.product)&&t.quantity&&t.amount&&(o=t.amount,i=n.getDiscount(),u+=parseFloat(o*t.quantity-i));return u.toFixed(2)},e.updateSubtotal=function(){var t,n,o,i,r,a=e.UI,u=a.cart.elements,c=a.subtotalAmount,s=e.calculateSubtotal(),p=1;if(t="",n="",u.currency_code)t=u.currency_code.value||u.currency_code;else for(r=0,i=u.length;i>r;r++)if("currency_code"===u[r].name){t=u[r].value||u[r];break}c.innerHTML=$.util.formatCurrency(s,t),function d(){return o=p.toString(16),p++,c.style.backgroundColor="#ff"+o,p>=15?(c.style.backgroundColor="transparent","0.00"===s&&e.hide(null,!0),void 0):(setTimeout(d,30),void 0)}()},e.show=function(n){var o=parseInt(e.UI.cart.offsetTop,10),i=0,r=config.events,a=r.onShow,u=r.afterShow;n&&n.preventDefault&&n.preventDefault(),("function"!=typeof a||a.call(e,n)!==!1)&&($.util.animate(e.UI.cart,"top",{from:o,to:i},function(){"function"==typeof u&&u.call(e,n)}),e.UI.summary.style.backgroundPosition="-195px 2px",t=!0)},e.hide=function(n,o){var i,r=e.UI,a=r.cart,u=r.summary,c=a.offsetHeight?a.offsetHeight:document.defaultView.getComputedStyle(a,"").getPropertyValue("height"),s=u.offsetHeight?u.offsetHeight:document.defaultView.getComputedStyle(u,"").getPropertyValue("height"),p=parseInt(a.offsetTop,10),d=config.events,l=d.onHide,f=d.afterHide;i=o||0===e.products.length||!config.peekEnabled?-1*c:-1*(c-s-8),n&&n.preventDefault&&n.preventDefault(),("function"!=typeof l||l.call(e,n)!==!1)&&($.util.animate(a,"top",{from:p,to:i},function(){"function"==typeof f&&f.call(e,n)}),u.style.backgroundPosition="-195px -32px",t=!1)},e.toggle=function(n){t?e.hide(n):e.show(n)},e.reset=function(){var n=e.UI,o=config.events,i=o.onReset,r=o.afterReset;("function"!=typeof i||i.call(e)!==!1)&&(e.products=[],t&&(n.itemList.innerHTML="",n.subtotalAmount.innerHTML="",e.hide(null,!0)),$.storage.remove(),"function"==typeof r&&r.call(e))},e}();var ProductNode=function(e,t){this._view(e,t)};ProductNode.prototype={_view:function(e,t){var n,o,i,r,a,u,c;if(this.product=e.product,this.settings=e.settings,this.liNode=document.createElement("li"),this.nameNode=document.createElement("a"),this.metaNode=document.createElement("span"),this.discountNode=document.createElement("span"),this.discountInput=document.createElement("input"),this.priceNode=document.createElement("span"),this.quantityInput=document.createElement("input"),this.removeInput=document.createElement("input"),!this.product||!this.product.item_name&&!this.product.item_number)return this.isPlaceholder=!0,void 0;this.product.item_name&&(n=this.product.item_name),this.nameNode.innerHTML=n,this.nameNode.title=n,this.nameNode.href=this.product.href,this.nameNode.appendChild(this.metaNode),this.product.item_number&&(this.metaNode.innerHTML="
#"+this.product.item_number),a=this.getOptions();for(c in a)this.metaNode.innerHTML+="
"+c+": "+a[c];r=this.getDiscount(),this.discountInput.type="hidden",this.discountInput.name="discount_amount_"+t,this.discountInput.value=r,this.metaNode.appendChild(this.discountNode),o=this.getPrice(),this.priceNode.className="price",i=this.getQuantity(),this.quantityInput.name="quantity_"+t,this.quantityInput.className="quantity",this.quantityInput.setAttribute("autocomplete","off"),this.setQuantity(i),this.removeInput.type="button",this.removeInput.className="remove",this.liNode.appendChild(this.nameNode),this.liNode.appendChild(this.quantityInput),this.liNode.appendChild(this.discountInput),this.liNode.appendChild(this.removeInput),this.liNode.appendChild(this.priceNode);for(c in this.product)"quantity"!==c&&-1===c.indexOf("discount_")&&(u=document.createElement("input"),u.type="hidden",u.name=c+"_"+t,u.value=this.product[c],this.liNode.appendChild(u))},getDiscount:function(){var e,t=0,n=this.product.discount_num||-1;return this.product.discount_amount?(t=parseFloat(this.product.discount_amount),this.product.discount_amount2&&(e=this.getQuantity(),e>1&&(t+=Math.max(e-1,n)*parseFloat(this.product.discount_amount2)))):this.product.discount_rate&&(t=this.product.amount*parseFloat(this.product.discount_rate)/100,this.product.discount_rate2&&(e=this.getQuantity(),e>1&&(t+=Math.max(e-1,n)*this.product.amount*parseFloat(this.product.discount_amount2)/100))),t&&t.toFixed(2)},getOptions:function(){for(var e={},t=0;this.product["on"+t]!==void 0;)e[this.product["on"+t]]=this.product["os"+t],t++;return e},setQuantity:function(e){var t;e=parseInt(e,10),this.product.quantity=e,this.quantityInput.value!==e&&(this.quantityInput.value=e,(t=this.getDiscount())&&(this.discountInput.value=t,this.discountNode.innerHTML="
",this.discountNode.innerHTML+=config.strings.discount||"Discount: ",this.discountNode.innerHTML+=$.util.formatCurrency(t,this.settings.currency_code))),this.setPrice(this.product.amount*e)},getQuantity:function(){return void 0!==typeof this.product.quantity?this.product.quantity:1},setPrice:function(e){e=parseFloat(e,10),this.priceNode.innerHTML=$.util.formatCurrency(e.toFixed(2),this.settings.currency_code)},getPrice:function(){return(this.product.amount*this.getQuantity()).toFixed(2)}};var $={};$.storage=function(){var e=config.name;return window.localStorage?{load:function(){var t=localStorage.getItem(e);return t&&(t=JSON.parse(decodeURIComponent(t))),t},save:function(t){var n,o,i,r=[];if(t){for(i=0,o=t.length;o>i;i++)n=t[i],r.push({product:n.product,settings:n.settings});r=encodeURIComponent(JSON.stringify(r)),localStorage.setItem(e,r)}},remove:function(){localStorage.removeItem(e)}}:{load:function(){var t,n,o,i,r,a=e+"=";try{for(n=document.cookie.split(";"),r=0;n.length>r;r++){for(o=n[r];" "===o.charAt(0);)o=o.substring(1,o.length);0===o.indexOf(a)&&(i=o.substring(a.length,o.length),t=JSON.parse(decodeURIComponent(i)))}}catch(u){}return t},save:function(e,t){var n,o,i,r=new Date,a=[];if(e){for(i=0,o=e.length;o>i;i++)n=e[i],a.push({product:n.product,settings:n.settings});t=t||30,r.setTime(r.getTime()+1e3*60*60*24*t),document.cookie=config.name+"="+encodeURIComponent(JSON.stringify(a))+"; expires="+r.toGMTString()+"; path="+config.cookiePath}},remove:function(){this.save(null,-1)}}}(),$.event=function(){var e=[];return document.addEventListener?{add:function(t,n,o,i){i=i||t;var r=function(e){o.call(i,e)};t.addEventListener(n,r,!1),e.push([t,n,o,r])},remove:function(t,n,o){var i,r,a,u=e.length;for(a=0;u>a;a++)r=e[a],r[0]===t&&r[1]===n&&r[2]===o&&(i=r[3],i&&(t.removeEventListener(n,i,!1),delete e[a]))}}:document.attachEvent?{add:function(t,n,o,i){i=i||t;var r=function(){var e=window.event;e.target=e.target||e.srcElement,e.preventDefault=function(){e.returnValue=!1},o.call(i,e)};t.attachEvent("on"+n,r),e.push([t,n,o,r])},remove:function(t,n,o){var i,r,a,u=e.length;for(a=0;u>a;a++)r=e[a],r[0]===t&&r[1]===n&&r[2]===o&&(i=r[3],i&&(t.detachEvent("on"+n,i),delete e[a]))}}:void 0}(),$.util={animate:function(e,t,n,o){n=n||{},n.from=n.from||0,n.to=n.to||0,n.duration=n.duration||10,n.unit=/top|bottom|left|right|width|height/.test(t)?"px":"";var i=(n.to-n.from)/20,r=n.from;(function a(){return e.style[t]=r+n.unit,r+=i,i>0&&r>n.to||0>i&&n.to>r||0===i?(e.style[t]=n.to+n.unit,"function"==typeof o&&o(),void 0):(setTimeout(a,n.duration),void 0)})()},getInputValue:function(e){var t=e.tagName.toLowerCase();return"select"===t?e.options[e.selectedIndex].value:"textarea"===t?e.innerHTML:"radio"===e.type?e.checked?e.value:null:"checkbox"===e.type?e.checked?e.value:null:e.value},formatCurrency:function(e,t){var n={AED:{before:"ج"},ANG:{before:"ƒ"},ARS:{before:"$"},AUD:{before:"$"},AWG:{before:"ƒ"},BBD:{before:"$"},BGN:{before:"лв"},BMD:{before:"$"},BND:{before:"$"},BRL:{before:"R$"},BSD:{before:"$"},CAD:{before:"$"},CHF:{before:""},CLP:{before:"$"},CNY:{before:"¥"},COP:{before:"$"},CRC:{before:"₡"},CZK:{before:"Kc"},DKK:{before:"kr"},DOP:{before:"$"},EEK:{before:"kr"},EUR:{before:"€"},GBP:{before:"£"},GTQ:{before:"Q"},HKD:{before:"$"},HRK:{before:"kn"},HUF:{before:"Ft"},IDR:{before:"Rp"},ILS:{before:"₪"},INR:{before:"Rs."},ISK:{before:"kr"},JMD:{before:"J$"},JPY:{before:"¥"},KRW:{before:"₩"},KYD:{before:"$"},LTL:{before:"Lt"},LVL:{before:"Ls"},MXN:{before:"$"},MYR:{before:"RM"},NOK:{before:"kr"},NZD:{before:"$"},PEN:{before:"S/"},PHP:{before:"Php"},PLN:{before:"z"},QAR:{before:"﷼"},RON:{before:"lei"},RUB:{before:"руб"},SAR:{before:"﷼"},SEK:{before:"kr"},SGD:{before:"$"},THB:{before:"฿"},TRY:{before:"TL"},TTD:{before:"TT$"},TWD:{before:"NT$"},UAH:{before:"₴"},USD:{before:"$"},UYU:{before:"$U"},VEF:{before:"Bs"},VND:{before:"₫"},XCD:{before:"$"},ZAR:{before:"R"}},o=n[t]||{},i=o.before||"",r=o.after||"";return i+e+r}};var JSON;JSON||(JSON={}),function(){function f(e){return 10>e?"0"+e:e}function quote(e){return escapable.lastIndex=0,escapable.test(e)?'"'+e.replace(escapable,function(e){var t=meta[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,t){var n,o,i,r,a,u=gap,c=t[e];switch(c&&"object"==typeof c&&"function"==typeof c.toJSON&&(c=c.toJSON(e)),"function"==typeof rep&&(c=rep.call(t,e,c)),typeof c){case"string":return quote(c);case"number":return isFinite(c)?c+"":"null";case"boolean":case"null":return c+"";case"object":if(!c)return"null";if(gap+=indent,a=[],"[object Array]"===Object.prototype.toString.apply(c)){for(r=c.length,n=0;r>n;n+=1)a[n]=str(n,c)||"null";return i=0===a.length?"[]":gap?"[\n"+gap+a.join(",\n"+gap)+"\n"+u+"]":"["+a.join(",")+"]",gap=u,i}if(rep&&"object"==typeof rep)for(r=rep.length,n=0;r>n;n+=1)"string"==typeof rep[n]&&(o=rep[n],i=str(o,c),i&&a.push(quote(o)+(gap?": ":":")+i));else for(o in c)Object.prototype.hasOwnProperty.call(c,o)&&(i=str(o,c),i&&a.push(quote(o)+(gap?": ":":")+i));return i=0===a.length?"{}":gap?"{\n"+gap+a.join(",\n"+gap)+"\n"+u+"}":"{"+a.join(",")+"}",gap=u,i}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;"function"!=typeof JSON.stringify&&(JSON.stringify=function(e,t,n){var o;if(gap="",indent="","number"==typeof n)for(o=0;n>o;o+=1)indent+=" ";else"string"==typeof n&&(indent=n);if(rep=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw Error("JSON.stringify");return str("",{"":e})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(e,t){var n,o,i=e[t];if(i&&"object"==typeof i)for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(o=walk(i,n),void 0!==o?i[n]=o:delete i[n]);return reviver.call(e,t,i)}var j;if(text+="",cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}()}(),PAYPAL===void 0||!PAYPAL)var PAYPAL={};PAYPAL.apps=PAYPAL.apps||{},function(){"use strict";function e(e,t){var o,i,u,c,s,p,d,l=document.createElement("form"),f=document.createElement("input"),m=document.createElement("input"),h=e.items;f.type="image",m.type="hidden",l.method="post",l.action=a,l.className="paypal-button",l.target="_top";for(s in h)o=h[s],o.isEditable?(c=document.createElement("input"),c.type="text",c.className="paypal-input",c.name=o.key,c.value=o.value,u=document.createElement("label"),u.className="paypal-label",u.appendChild(document.createTextNode(r.config.labels[o.key]+" "||"")),u.appendChild(c),i=document.createElement("p"),i.className="paypal-group",i.appendChild(u)):(c=i=m.cloneNode(!0),c.name=o.key,c.value=o.value),l.appendChild(i);if(p=h.size&&h.size.value,d=h.lc&&h.lc.value,l.appendChild(f),f.src=n(t,p,d),PAYPAL.apps.MiniCart&&"_cart"===e.items.cmd.value){var b=PAYPAL.apps.MiniCart;b.UI.itemList||b.render(),b.bindForm(l)}return l}function t(e,t){var n,o,i=document.createElement("img"),r=a+"?",c=13,s=e.items;t=t&&t.value||250;for(o in s)n=s[o],r+=n.key+"="+encodeURIComponent(n.value)+"&";return r=encodeURIComponent(r),i.src=u.replace("{url}",r).replace("{pattern}",c).replace("{size}",t),i}function n(e,t,n){var o=p[e]||p.buynow;return n=n||"en_US",t="small"===t?"SM":"LG",o.replace(/\{locale\}/,n).replace(/\{size\}/,t)}function o(e){var t,n,o,i,r,a={};if(t=e.attributes)for(r=0,i=t.length;i>r;r++)n=t[r],(o=/^data-([a-z0-9]+)(-editable)?/i.exec(n.name))&&(a[o[1]]={value:n.value,isEditable:!!o[2]});return a}function i(){this.items={},this.add=function(e,t,n){this.items[e]={key:e,value:t,isEditable:n}},this.remove=function(e){delete this.items[e]}}var r={},a="https://www.paypal.com/cgi-bin/webscr",u="https://www.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}",c="JavaScriptButton_{type}",s={id:"hosted_button_id",name:"item_name",number:"item_number",lang:"lc",recurrence:"p3",period:"t3"},p={buynow:"//www.paypalobjects.com/{locale}/i/btn/btn_buynow_{size}.gif",cart:"//www.paypalobjects.com/{locale}/i/btn/btn_cart_{size}.gif",donate:"//www.paypalobjects.com/{locale}/i/btn/btn_donate_{size}.gif",subscribe:"//www.paypalobjects.com/{locale}/i/btn/btn_subscribe_{size}.gif"};if(PAYPAL.apps.ButtonFactory||(r.config={labels:{item_name:"Item",item_number:"Number",amount:"Amount",quantity:"Quantity"}},r.buttons={buynow:0,cart:0,hosted:0,donate:0,qr:0,subscribe:0},r.create=function(n,o,r,a){var u,p,d=new i;if(!n)return!1;for(p in o)d.add(s[p]||p,o[p].value,o[p].isEditable);return r=r||"buynow",d.items.hosted_button_id?(r="hosted",d.add("cmd","_s-xclick")):"cart"===r?(d.add("cmd","_cart"),d.add("add",!0)):"donate"===r?d.add("cmd","_donations"):"subscribe"===r?(d.add("cmd","_xclick-subscriptions"),d.items.amount&&!d.items.a3&&d.add("a3",d.items.amount.value)):d.add("cmd","_xclick"),d.add("business",n),d.add("bn",c.replace(/\{type\}/,r)),"qr"===r?(u=t(d,d.items.size),d.remove("size")):u=e(d,r),this.buttons[r]+=1,a&&a.appendChild(u),u},PAYPAL.apps.ButtonFactory=r),"undefined"!=typeof document){var d,l,f,m,h,b,g=PAYPAL.apps.ButtonFactory,y=document.getElementsByTagName("script");for(h=0,b=y.length;b>h;h++)d=y[h],d&&d.src&&(l=d&&o(d),f=l&&l.button&&l.button.value,m=d.src.split("?merchant=")[1],m&&(g.create(m,l,f,d.parentNode),d.parentNode.removeChild(d)))}}(),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=PAYPAL); \ No newline at end of file + */if(PAYPAL===void 0||!PAYPAL)var PAYPAL={};PAYPAL.apps=PAYPAL.apps||{},function(){"use strict";function e(e,t){var a,n,r,i,m,d,s,c,p=document.createElement("form"),l=document.createElement("button"),y=document.createElement("input"),A=e.items;p.method="post",p.action=u,p.className="paypal-button",p.target="_top",y.type="hidden",d=A.size&&A.size.value||"large",s=A.lc&&A.lc.value||"en_US",c=b[s]||b.en_US;for(m in A)a=A[m],a.isEditable?(i=document.createElement("input"),i.type="text",i.className="paypal-input",i.name=a.key,i.value=a.value,r=document.createElement("label"),r.className="paypal-label",r.appendChild(document.createTextNode(o.config.labels[a.key]||c[a.key])),r.appendChild(i),n=document.createElement("p"),n.className="paypal-group",n.appendChild(r)):(i=n=y.cloneNode(!0),i.name=a.key,i.value=a.value),p.appendChild(n);if(l.type="submit",l.className="paypal-button "+d,l.appendChild(document.createTextNode(c[t])),p.appendChild(l),PAYPAL.apps.MiniCart&&"_cart"===e.items.cmd.value){var g=PAYPAL.apps.MiniCart;g.UI.itemList||g.render(),g.bindForm(p)}return p}function t(){var e,t,a,n;document.getElementById("paypal-button")||(e="",t=document.createElement("style"),a=".paypal-button",n=a+" button[type=submit]",e+=a+" { white-space: nowrap; }",e+=n+' { white-space: nowrap; overflow: hidden; border-radius: 13px; font-family: "Arial", bold, italic; font-weight: bold; font-style: italic; border: 1px solid #ffa823; color: #0E3168; background: transparent; position: relative; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; }',e+=n+':before { content: " "; position: absolute; width: 100%; height: 100%; border-radius: 11px; top: 0; left: 0; background: #ffa823; background: -webkit-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: -moz-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: -ms-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); z-index: -2; }',e+=n+':after { content: " "; position: absolute; width: 98%; height: 60%; border-radius: 40px 40px 38px 38px; top: 0; left: 0; background: -webkit-linear-gradient(top, #fefefe 0%, #fed994 100%); background: -moz-linear-gradient(top, #fefefe 0%, #fed994 100%); background: -ms-linear-gradient(top, #fefefe 0%, #fed994 100%); background: linear-gradient(top, #fefefe 0%, #fed994 100%); z-index: -1; -webkit-transform: translateX(1%);-moz-transform: translateX(1%); -ms-transform: translateX(1%); transform: translateX(1%); }',e+=n+".small { padding: 3px 15px; font-size: 12px; line-height: 14px; }",e+=n+".large { padding: 4px 19px; font-size: 14px; line-height: 16px; }",t.type="text/css",t.id="paypal-button",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e)),document.getElementsByTagName("head")[0].appendChild(t))}function a(e,t){var a,n,r=document.createElement("img"),o=u+"?",m=13,d=e.items;t=t&&t.value||250;for(n in d)a=d[n],o+=a.key+"="+encodeURIComponent(a.value)+"&";return o=encodeURIComponent(o),r.src=i.replace("{url}",o).replace("{pattern}",m).replace("{size}",t),r}function n(e){var t,a,n,r,o,u={};if(t=e.attributes)for(o=0,r=t.length;r>o;o++)a=t[o],(n=/^data-([a-z0-9]+)(-editable)?/i.exec(a.name))&&(u[n[1]]={value:a.value,isEditable:!!n[2]});return u}function r(){this.items={},this.add=function(e,t,a){this.items[e]={key:e,value:t,isEditable:a}},this.remove=function(e){delete this.items[e]}}var o={},u="https://www.paypal.com/cgi-bin/webscr",i="https://www.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}",m="JavaScriptButton_{type}",d={name:"item_name",number:"item_number",lang:"lc",recurrence:"p3",period:"t3"},b={da_DK:{buynow:"Køb nu",cart:"Læg i indkøbsvogn",donate:"Doner",subscribe:"Abonner",item_name:"Vare",number:"Nummer",amount:"Pris",quantity:"Antal"},de_DE:{buynow:"Jetzt kaufen",cart:"In den Warenkorb",donate:"Spenden",subscribe:"Abonnieren",item_name:"Artikel",number:"Nummer",amount:"Betrag",quantity:"Menge"},en_AU:{buynow:"Buy Now",cart:"Add to Cart",donate:"Donate",subscribe:"Subscribe",item_name:"Item",number:"Number",amount:"Amount",quantity:"Quantity"},en_GB:{buynow:"Buy Now",cart:"Add to Cart",donate:"Donate",subscribe:"Subscribe",item_name:"Item",number:"Number",amount:"Amount",quantity:"Quantity"},en_US:{buynow:"Buy Now",cart:"Add to Cart",donate:"Donate",subscribe:"Subscribe",item_name:"Item",number:"Number",amount:"Amount",quantity:"Quantity"},es_ES:{buynow:"Comprar ahora",cart:"Añadir al carro",donate:"Donar",subscribe:"Suscribirse",item_name:"Artículo",number:"Número",amount:"Importe",quantity:"Cantidad"},es_XC:{buynow:"Comprar ahora",cart:"Añadir al carrito",donate:"Donar",subscribe:"Suscribirse",item_name:"Artículo",number:"Número",amount:"Importe",quantity:"Cantidad"},fr_CA:{buynow:"Acheter",cart:"Ajouter au panier",donate:"Faire un don",subscribe:"Souscrire",item_name:"Objet",number:"Numéro",amount:"Montant",quantity:"Quantité"},fr_FR:{buynow:"Acheter",cart:"Ajouter au panier",donate:"Faire un don",subscribe:"Souscrire",item_name:"Objet",number:"Numéro",amount:"Montant",quantity:"Quantité"},fr_XC:{buynow:"Acheter",cart:"Ajouter au panier",donate:"Faire un don",subscribe:"Souscrire",item_name:"Objet",number:"Numéro",amount:"Montant",quantity:"Quantité"},he_IL:{buynow:"וישכע הנק",cart:"תוינקה לסל ףסוה",donate:"םורת",subscribe:"יונמכ ףרטצה",item_name:"טירפ",number:"רפסמ",amount:"םוכס",quantity:"מותכ"},id_ID:{buynow:"Beli Sekarang",cart:"Tambah ke Keranjang",donate:"Donasikan",subscribe:"Berlangganan",item_name:"Barang",number:"Nomor",amount:"Harga",quantity:"Kuantitas"},it_IT:{buynow:"Paga adesso",cart:"Aggiungi al carrello",donate:"Donazione",subscribe:"Iscriviti",item_name:"Oggetto",number:"Numero",amount:"Importo",quantity:"Quantità"},ja_JP:{buynow:"今すぐ購入",cart:"カートに追加",donate:"寄付",subscribe:"購読",item_name:"商品",number:"番号",amount:"価格",quantity:"数量"},nl_NL:{buynow:"Nu kopen",cart:"Aan winkelwagentje toevoegen",donate:"Doneren",subscribe:"Abonneren",item_name:"Item",number:"Nummer",amount:"Bedrag",quantity:"Hoeveelheid"},no_NO:{buynow:"Kjøp nå",cart:"Legg til i kurv",donate:"Doner",subscribe:"Abonner",item_name:"Vare",number:"Nummer",amount:"Beløp",quantity:"Antall"},pl_PL:{buynow:"Kup teraz",cart:"Dodaj do koszyka",donate:"Przekaż darowiznę",subscribe:"Subskrybuj",item_name:"Przedmiot",number:"Numer",amount:"Kwota",quantity:"Ilość"},pt_BR:{buynow:"Comprar agora",cart:"Adicionar ao carrinho",donate:"Doar",subscribe:"Assinar",item_name:"Produto",number:"Número",amount:"Valor",quantity:"Quantidade"},ru_RU:{buynow:"Купить сейчас",cart:"Добавить в корзину",donate:"Пожертвовать",subscribe:"Подписаться",item_name:"Товар",number:"Номер",amount:"Сумма",quantity:"Количество"},sv_SE:{buynow:"Köp nu",cart:"Lägg till i kundvagn",donate:"Donera",subscribe:"Abonnera",item_name:"Objekt",number:"Nummer",amount:"Belopp",quantity:"Antal"},th_TH:{buynow:"ซื้อทันที",cart:"เพิ่มลงตะกร้า",donate:"บริจาค",subscribe:"บอกรับสมาชิก",item_name:"ชื่อสินค้า",number:"รหัสสินค้า",amount:"ราคา",quantity:"จำนวน"},tr_TR:{buynow:"Hemen Alın",cart:"Sepete Ekleyin",donate:"Bağış Yapın",subscribe:"Abone Olun",item_name:"Ürün",number:"Numara",amount:"Tutar",quantity:"Miktar"},zh_CN:{buynow:"立即购买",cart:"添加到购物车",donate:"捐赠",subscribe:"租用",item_name:"物品",number:"编号",amount:"金额",quantity:"数量"},zh_HK:{buynow:"立即買",cart:"加入購物車",donate:"捐款",subscribe:"訂用",item_name:"項目",number:"號碼",amount:"金額",quantity:"數量"},zh_TW:{buynow:"立即購",cart:"加到購物車",donate:"捐款",subscribe:"訂閱",item_name:"商品",number:"商品編號",amount:"單價",quantity:"數量"},zh_XC:{buynow:"立即购买",cart:"添加到购物车",donate:"捐赠",subscribe:"租用",item_name:"物品",number:"编号",amount:"金额",quantity:"数量"}};if(PAYPAL.apps.ButtonFactory||(o.config={labels:{}},o.buttons={buynow:0,cart:0,donate:0,qr:0,subscribe:0},o.create=function(n,o,u,i){var b,s,c=new r;if(!n)return!1;for(s in o)c.add(d[s]||s,o[s].value,o[s].isEditable);return u=u||"buynow","cart"===u?(c.add("cmd","_cart"),c.add("add",!0)):"donate"===u?c.add("cmd","_donations"):"subscribe"===u?(c.add("cmd","_xclick-subscriptions"),c.items.amount&&!c.items.a3&&c.add("a3",c.items.amount.value)):c.add("cmd","_xclick"),c.add("business",n),c.add("bn",m.replace(/\{type\}/,u)),"qr"===u?(b=a(c,c.items.size),c.remove("size")):b=e(c,u),t(),this.buttons[u]+=1,i&&i.appendChild(b),b},PAYPAL.apps.ButtonFactory=o),"undefined"!=typeof document){var s,c,p,l,y,A,g=PAYPAL.apps.ButtonFactory,f=document.getElementsByTagName("script");for(y=0,A=f.length;A>y;y++)s=f[y],s&&s.src&&(c=s&&n(s),p=c&&c.button&&c.button.value,l=s.src.split("?merchant=")[1],l&&(g.create(l,c,p,s.parentNode),s.parentNode.removeChild(s)))}}(),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=PAYPAL); \ No newline at end of file diff --git a/dist/paypal-button.min.js b/dist/paypal-button.min.js index 2c3202b..6ef82bf 100644 --- a/dist/paypal-button.min.js +++ b/dist/paypal-button.min.js @@ -1,6 +1,6 @@ /*! * PayPalJSButtons * JavaScript integration for PayPal's payment buttons - * @version 1.0.0 - 2013-03-10, 11:53:45 PM + * @version 1.0.0 - 2013-03-15, 6:52:49 PM * @author Jeff Harrell - */if(PAYPAL===void 0||!PAYPAL)var PAYPAL={};PAYPAL.apps=PAYPAL.apps||{},function(){"use strict";function e(e,t){var n,i,r,s,d,l,p,u=document.createElement("form"),m=document.createElement("input"),b=document.createElement("input"),y=e.items;m.type="image",b.type="hidden",u.method="post",u.action=c,u.className="paypal-button",u.target="_top";for(d in y)n=y[d],n.isEditable?(s=document.createElement("input"),s.type="text",s.className="paypal-input",s.name=n.key,s.value=n.value,r=document.createElement("label"),r.className="paypal-label",r.appendChild(document.createTextNode(o.config.labels[n.key]+" "||"")),r.appendChild(s),i=document.createElement("p"),i.className="paypal-group",i.appendChild(r)):(s=i=b.cloneNode(!0),s.name=n.key,s.value=n.value),u.appendChild(i);if(l=y.size&&y.size.value,p=y.lc&&y.lc.value,u.appendChild(m),m.src=a(t,l,p),PAYPAL.apps.MiniCart&&"_cart"===e.items.cmd.value){var f=PAYPAL.apps.MiniCart;f.UI.itemList||f.render(),f.bindForm(u)}return u}function t(e,t){var a,n,i=document.createElement("img"),o=c+"?",s=13,d=e.items;t=t&&t.value||250;for(n in d)a=d[n],o+=a.key+"="+encodeURIComponent(a.value)+"&";return o=encodeURIComponent(o),i.src=r.replace("{url}",o).replace("{pattern}",s).replace("{size}",t),i}function a(e,t,a){var n=l[e]||l.buynow;return a=a||"en_US",t="small"===t?"SM":"LG",n.replace(/\{locale\}/,a).replace(/\{size\}/,t)}function n(e){var t,a,n,i,o,c={};if(t=e.attributes)for(o=0,i=t.length;i>o;o++)a=t[o],(n=/^data-([a-z0-9]+)(-editable)?/i.exec(a.name))&&(c[n[1]]={value:a.value,isEditable:!!n[2]});return c}function i(){this.items={},this.add=function(e,t,a){this.items[e]={key:e,value:t,isEditable:a}},this.remove=function(e){delete this.items[e]}}var o={},c="https://www.paypal.com/cgi-bin/webscr",r="https://www.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}",s="JavaScriptButton_{type}",d={id:"hosted_button_id",name:"item_name",number:"item_number",lang:"lc",recurrence:"p3",period:"t3"},l={buynow:"//www.paypalobjects.com/{locale}/i/btn/btn_buynow_{size}.gif",cart:"//www.paypalobjects.com/{locale}/i/btn/btn_cart_{size}.gif",donate:"//www.paypalobjects.com/{locale}/i/btn/btn_donate_{size}.gif",subscribe:"//www.paypalobjects.com/{locale}/i/btn/btn_subscribe_{size}.gif"};if(PAYPAL.apps.ButtonFactory||(o.config={labels:{item_name:"Item",item_number:"Number",amount:"Amount",quantity:"Quantity"}},o.buttons={buynow:0,cart:0,hosted:0,donate:0,qr:0,subscribe:0},o.create=function(a,n,o,c){var r,l,p=new i;if(!a)return!1;for(l in n)p.add(d[l]||l,n[l].value,n[l].isEditable);return o=o||"buynow",p.items.hosted_button_id?(o="hosted",p.add("cmd","_s-xclick")):"cart"===o?(p.add("cmd","_cart"),p.add("add",!0)):"donate"===o?p.add("cmd","_donations"):"subscribe"===o?(p.add("cmd","_xclick-subscriptions"),p.items.amount&&!p.items.a3&&p.add("a3",p.items.amount.value)):p.add("cmd","_xclick"),p.add("business",a),p.add("bn",s.replace(/\{type\}/,o)),"qr"===o?(r=t(p,p.items.size),p.remove("size")):r=e(p,o),this.buttons[o]+=1,c&&c.appendChild(r),r},PAYPAL.apps.ButtonFactory=o),"undefined"!=typeof document){var p,u,m,b,y,f,v=PAYPAL.apps.ButtonFactory,h=document.getElementsByTagName("script");for(y=0,f=h.length;f>y;y++)p=h[y],p&&p.src&&(u=p&&n(p),m=u&&u.button&&u.button.value,b=p.src.split("?merchant=")[1],b&&(v.create(b,u,m,p.parentNode),p.parentNode.removeChild(p)))}}(),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=PAYPAL); \ No newline at end of file + */if(PAYPAL===void 0||!PAYPAL)var PAYPAL={};PAYPAL.apps=PAYPAL.apps||{},function(){"use strict";function e(e,t){var a,n,r,i,m,d,s,c,p=document.createElement("form"),l=document.createElement("button"),y=document.createElement("input"),A=e.items;p.method="post",p.action=u,p.className="paypal-button",p.target="_top",y.type="hidden",d=A.size&&A.size.value||"large",s=A.lc&&A.lc.value||"en_US",c=b[s]||b.en_US;for(m in A)a=A[m],a.isEditable?(i=document.createElement("input"),i.type="text",i.className="paypal-input",i.name=a.key,i.value=a.value,r=document.createElement("label"),r.className="paypal-label",r.appendChild(document.createTextNode(o.config.labels[a.key]||c[a.key])),r.appendChild(i),n=document.createElement("p"),n.className="paypal-group",n.appendChild(r)):(i=n=y.cloneNode(!0),i.name=a.key,i.value=a.value),p.appendChild(n);if(l.type="submit",l.className="paypal-button "+d,l.appendChild(document.createTextNode(c[t])),p.appendChild(l),PAYPAL.apps.MiniCart&&"_cart"===e.items.cmd.value){var g=PAYPAL.apps.MiniCart;g.UI.itemList||g.render(),g.bindForm(p)}return p}function t(){var e,t,a,n;document.getElementById("paypal-button")||(e="",t=document.createElement("style"),a=".paypal-button",n=a+" button[type=submit]",e+=a+" { white-space: nowrap; }",e+=n+' { white-space: nowrap; overflow: hidden; border-radius: 13px; font-family: "Arial", bold, italic; font-weight: bold; font-style: italic; border: 1px solid #ffa823; color: #0E3168; background: transparent; position: relative; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; }',e+=n+':before { content: " "; position: absolute; width: 100%; height: 100%; border-radius: 11px; top: 0; left: 0; background: #ffa823; background: -webkit-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: -moz-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: -ms-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); z-index: -2; }',e+=n+':after { content: " "; position: absolute; width: 98%; height: 60%; border-radius: 40px 40px 38px 38px; top: 0; left: 0; background: -webkit-linear-gradient(top, #fefefe 0%, #fed994 100%); background: -moz-linear-gradient(top, #fefefe 0%, #fed994 100%); background: -ms-linear-gradient(top, #fefefe 0%, #fed994 100%); background: linear-gradient(top, #fefefe 0%, #fed994 100%); z-index: -1; -webkit-transform: translateX(1%);-moz-transform: translateX(1%); -ms-transform: translateX(1%); transform: translateX(1%); }',e+=n+".small { padding: 3px 15px; font-size: 12px; line-height: 14px; }",e+=n+".large { padding: 4px 19px; font-size: 14px; line-height: 16px; }",t.type="text/css",t.id="paypal-button",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e)),document.getElementsByTagName("head")[0].appendChild(t))}function a(e,t){var a,n,r=document.createElement("img"),o=u+"?",m=13,d=e.items;t=t&&t.value||250;for(n in d)a=d[n],o+=a.key+"="+encodeURIComponent(a.value)+"&";return o=encodeURIComponent(o),r.src=i.replace("{url}",o).replace("{pattern}",m).replace("{size}",t),r}function n(e){var t,a,n,r,o,u={};if(t=e.attributes)for(o=0,r=t.length;r>o;o++)a=t[o],(n=/^data-([a-z0-9]+)(-editable)?/i.exec(a.name))&&(u[n[1]]={value:a.value,isEditable:!!n[2]});return u}function r(){this.items={},this.add=function(e,t,a){this.items[e]={key:e,value:t,isEditable:a}},this.remove=function(e){delete this.items[e]}}var o={},u="https://www.paypal.com/cgi-bin/webscr",i="https://www.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}",m="JavaScriptButton_{type}",d={name:"item_name",number:"item_number",lang:"lc",recurrence:"p3",period:"t3"},b={da_DK:{buynow:"Køb nu",cart:"Læg i indkøbsvogn",donate:"Doner",subscribe:"Abonner",item_name:"Vare",number:"Nummer",amount:"Pris",quantity:"Antal"},de_DE:{buynow:"Jetzt kaufen",cart:"In den Warenkorb",donate:"Spenden",subscribe:"Abonnieren",item_name:"Artikel",number:"Nummer",amount:"Betrag",quantity:"Menge"},en_AU:{buynow:"Buy Now",cart:"Add to Cart",donate:"Donate",subscribe:"Subscribe",item_name:"Item",number:"Number",amount:"Amount",quantity:"Quantity"},en_GB:{buynow:"Buy Now",cart:"Add to Cart",donate:"Donate",subscribe:"Subscribe",item_name:"Item",number:"Number",amount:"Amount",quantity:"Quantity"},en_US:{buynow:"Buy Now",cart:"Add to Cart",donate:"Donate",subscribe:"Subscribe",item_name:"Item",number:"Number",amount:"Amount",quantity:"Quantity"},es_ES:{buynow:"Comprar ahora",cart:"Añadir al carro",donate:"Donar",subscribe:"Suscribirse",item_name:"Artículo",number:"Número",amount:"Importe",quantity:"Cantidad"},es_XC:{buynow:"Comprar ahora",cart:"Añadir al carrito",donate:"Donar",subscribe:"Suscribirse",item_name:"Artículo",number:"Número",amount:"Importe",quantity:"Cantidad"},fr_CA:{buynow:"Acheter",cart:"Ajouter au panier",donate:"Faire un don",subscribe:"Souscrire",item_name:"Objet",number:"Numéro",amount:"Montant",quantity:"Quantité"},fr_FR:{buynow:"Acheter",cart:"Ajouter au panier",donate:"Faire un don",subscribe:"Souscrire",item_name:"Objet",number:"Numéro",amount:"Montant",quantity:"Quantité"},fr_XC:{buynow:"Acheter",cart:"Ajouter au panier",donate:"Faire un don",subscribe:"Souscrire",item_name:"Objet",number:"Numéro",amount:"Montant",quantity:"Quantité"},he_IL:{buynow:"וישכע הנק",cart:"תוינקה לסל ףסוה",donate:"םורת",subscribe:"יונמכ ףרטצה",item_name:"טירפ",number:"רפסמ",amount:"םוכס",quantity:"מותכ"},id_ID:{buynow:"Beli Sekarang",cart:"Tambah ke Keranjang",donate:"Donasikan",subscribe:"Berlangganan",item_name:"Barang",number:"Nomor",amount:"Harga",quantity:"Kuantitas"},it_IT:{buynow:"Paga adesso",cart:"Aggiungi al carrello",donate:"Donazione",subscribe:"Iscriviti",item_name:"Oggetto",number:"Numero",amount:"Importo",quantity:"Quantità"},ja_JP:{buynow:"今すぐ購入",cart:"カートに追加",donate:"寄付",subscribe:"購読",item_name:"商品",number:"番号",amount:"価格",quantity:"数量"},nl_NL:{buynow:"Nu kopen",cart:"Aan winkelwagentje toevoegen",donate:"Doneren",subscribe:"Abonneren",item_name:"Item",number:"Nummer",amount:"Bedrag",quantity:"Hoeveelheid"},no_NO:{buynow:"Kjøp nå",cart:"Legg til i kurv",donate:"Doner",subscribe:"Abonner",item_name:"Vare",number:"Nummer",amount:"Beløp",quantity:"Antall"},pl_PL:{buynow:"Kup teraz",cart:"Dodaj do koszyka",donate:"Przekaż darowiznę",subscribe:"Subskrybuj",item_name:"Przedmiot",number:"Numer",amount:"Kwota",quantity:"Ilość"},pt_BR:{buynow:"Comprar agora",cart:"Adicionar ao carrinho",donate:"Doar",subscribe:"Assinar",item_name:"Produto",number:"Número",amount:"Valor",quantity:"Quantidade"},ru_RU:{buynow:"Купить сейчас",cart:"Добавить в корзину",donate:"Пожертвовать",subscribe:"Подписаться",item_name:"Товар",number:"Номер",amount:"Сумма",quantity:"Количество"},sv_SE:{buynow:"Köp nu",cart:"Lägg till i kundvagn",donate:"Donera",subscribe:"Abonnera",item_name:"Objekt",number:"Nummer",amount:"Belopp",quantity:"Antal"},th_TH:{buynow:"ซื้อทันที",cart:"เพิ่มลงตะกร้า",donate:"บริจาค",subscribe:"บอกรับสมาชิก",item_name:"ชื่อสินค้า",number:"รหัสสินค้า",amount:"ราคา",quantity:"จำนวน"},tr_TR:{buynow:"Hemen Alın",cart:"Sepete Ekleyin",donate:"Bağış Yapın",subscribe:"Abone Olun",item_name:"Ürün",number:"Numara",amount:"Tutar",quantity:"Miktar"},zh_CN:{buynow:"立即购买",cart:"添加到购物车",donate:"捐赠",subscribe:"租用",item_name:"物品",number:"编号",amount:"金额",quantity:"数量"},zh_HK:{buynow:"立即買",cart:"加入購物車",donate:"捐款",subscribe:"訂用",item_name:"項目",number:"號碼",amount:"金額",quantity:"數量"},zh_TW:{buynow:"立即購",cart:"加到購物車",donate:"捐款",subscribe:"訂閱",item_name:"商品",number:"商品編號",amount:"單價",quantity:"數量"},zh_XC:{buynow:"立即购买",cart:"添加到购物车",donate:"捐赠",subscribe:"租用",item_name:"物品",number:"编号",amount:"金额",quantity:"数量"}};if(PAYPAL.apps.ButtonFactory||(o.config={labels:{}},o.buttons={buynow:0,cart:0,donate:0,qr:0,subscribe:0},o.create=function(n,o,u,i){var b,s,c=new r;if(!n)return!1;for(s in o)c.add(d[s]||s,o[s].value,o[s].isEditable);return u=u||"buynow","cart"===u?(c.add("cmd","_cart"),c.add("add",!0)):"donate"===u?c.add("cmd","_donations"):"subscribe"===u?(c.add("cmd","_xclick-subscriptions"),c.items.amount&&!c.items.a3&&c.add("a3",c.items.amount.value)):c.add("cmd","_xclick"),c.add("business",n),c.add("bn",m.replace(/\{type\}/,u)),"qr"===u?(b=a(c,c.items.size),c.remove("size")):b=e(c,u),t(),this.buttons[u]+=1,i&&i.appendChild(b),b},PAYPAL.apps.ButtonFactory=o),"undefined"!=typeof document){var s,c,p,l,y,A,g=PAYPAL.apps.ButtonFactory,f=document.getElementsByTagName("script");for(y=0,A=f.length;A>y;y++)s=f[y],s&&s.src&&(c=s&&n(s),p=c&&c.button&&c.button.value,l=s.src.split("?merchant=")[1],l&&(g.create(l,c,p,s.parentNode),s.parentNode.removeChild(s)))}}(),"object"==typeof module&&"object"==typeof module.exports&&(module.exports=PAYPAL); \ No newline at end of file diff --git a/src/paypal-button.js b/src/paypal-button.js index f835e20..37754c5 100644 --- a/src/paypal-button.js +++ b/src/paypal-button.js @@ -15,18 +15,39 @@ PAYPAL.apps = PAYPAL.apps || {}; qrCodeURL = 'https://www.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}', bnCode = 'JavaScriptButton_{type}', prettyParams = { - id: 'hosted_button_id', name: 'item_name', number: 'item_number', lang: 'lc', recurrence: 'p3', period: 't3' }, - buttonImgs = { - buynow: '//www.paypalobjects.com/{locale}/i/btn/btn_buynow_{size}.gif', - cart: '//www.paypalobjects.com/{locale}/i/btn/btn_cart_{size}.gif', - donate: '//www.paypalobjects.com/{locale}/i/btn/btn_donate_{size}.gif', - subscribe: '//www.paypalobjects.com/{locale}/i/btn/btn_subscribe_{size}.gif' + buttonText = { + da_DK: { buynow: 'Køb nu', cart: 'Læg i indkøbsvogn', donate: 'Doner', subscribe: 'Abonner', item_name: 'Vare', number: 'Nummer', amount: 'Pris', quantity: 'Antal' }, + de_DE: { buynow: 'Jetzt kaufen', cart: 'In den Warenkorb', donate: 'Spenden', subscribe: 'Abonnieren', item_name: 'Artikel', number: 'Nummer', amount: 'Betrag', quantity: 'Menge' }, + en_AU: { buynow: 'Buy Now', cart: 'Add to Cart', donate: 'Donate', subscribe: 'Subscribe', item_name: 'Item', number: 'Number', amount: 'Amount', quantity: 'Quantity' }, + en_GB: { buynow: 'Buy Now', cart: 'Add to Cart', donate: 'Donate', subscribe: 'Subscribe', item_name: 'Item', number: 'Number', amount: 'Amount', quantity: 'Quantity' }, + en_US: { buynow: 'Buy Now', cart: 'Add to Cart', donate: 'Donate', subscribe: 'Subscribe', item_name: 'Item', number: 'Number', amount: 'Amount', quantity: 'Quantity' }, + es_ES: { buynow: 'Comprar ahora', cart: 'Añadir al carro', donate: 'Donar', subscribe: 'Suscribirse', item_name: 'Artículo', number: 'Número', amount: 'Importe', quantity: 'Cantidad' }, + es_XC: { buynow: 'Comprar ahora', cart: 'Añadir al carrito', donate: 'Donar', subscribe: 'Suscribirse', item_name: 'Artículo', number: 'Número', amount: 'Importe', quantity: 'Cantidad' }, + fr_CA: { buynow: 'Acheter', cart: 'Ajouter au panier', donate: 'Faire un don', subscribe: 'Souscrire', item_name: 'Objet', number: 'Numéro', amount: 'Montant', quantity: 'Quantité' }, + fr_FR: { buynow: 'Acheter', cart: 'Ajouter au panier', donate: 'Faire un don', subscribe: 'Souscrire', item_name: 'Objet', number: 'Numéro', amount: 'Montant', quantity: 'Quantité' }, + fr_XC: { buynow: 'Acheter', cart: 'Ajouter au panier', donate: 'Faire un don', subscribe: 'Souscrire', item_name: 'Objet', number: 'Numéro', amount: 'Montant', quantity: 'Quantité' }, + he_IL: { buynow: 'וישכע הנק', cart: 'תוינקה לסל ףסוה', donate: 'םורת', subscribe: 'יונמכ ףרטצה', item_name: 'טירפ', number: 'רפסמ', amount: 'םוכס', quantity: 'מותכ' }, + id_ID: { buynow: 'Beli Sekarang', cart: 'Tambah ke Keranjang', donate: 'Donasikan', subscribe: 'Berlangganan', item_name: 'Barang', number: 'Nomor', amount: 'Harga', quantity: 'Kuantitas' }, + it_IT: { buynow: 'Paga adesso', cart: 'Aggiungi al carrello', donate: 'Donazione', subscribe: 'Iscriviti', item_name: 'Oggetto', number: 'Numero', amount: 'Importo', quantity: 'Quantità' }, + ja_JP: { buynow: '今すぐ購入', cart: 'カートに追加', donate: '寄付', subscribe: '購読', item_name: '商品', number: '番号', amount: '価格', quantity: '数量' }, + nl_NL: { buynow: 'Nu kopen', cart: 'Aan winkelwagentje toevoegen', donate: 'Doneren', subscribe: 'Abonneren', item_name: 'Item', number: 'Nummer', amount: 'Bedrag', quantity: 'Hoeveelheid' }, + no_NO: { buynow: 'Kjøp nå', cart: 'Legg til i kurv', donate: 'Doner', subscribe: 'Abonner', item_name: 'Vare', number: 'Nummer', amount: 'Beløp', quantity: 'Antall' }, + pl_PL: { buynow: 'Kup teraz', cart: 'Dodaj do koszyka', donate: 'Przekaż darowiznę', subscribe: 'Subskrybuj', item_name: 'Przedmiot', number: 'Numer', amount: 'Kwota', quantity: 'Ilość' }, + pt_BR: { buynow: 'Comprar agora', cart: 'Adicionar ao carrinho', donate: 'Doar', subscribe: 'Assinar', item_name: 'Produto', number: 'Número', amount: 'Valor', quantity: 'Quantidade' }, + ru_RU: { buynow: 'Купить сейчас', cart: 'Добавить в корзину', donate: 'Пожертвовать', subscribe: 'Подписаться', item_name: 'Товар', number: 'Номер', amount: 'Сумма', quantity: 'Количество' }, + sv_SE: { buynow: 'Köp nu', cart: 'Lägg till i kundvagn', donate: 'Donera', subscribe: 'Abonnera', item_name: 'Objekt', number: 'Nummer', amount: 'Belopp', quantity: 'Antal' }, + th_TH: { buynow: 'ซื้อทันที', cart: 'เพิ่มลงตะกร้า', donate: 'บริจาค', subscribe: 'บอกรับสมาชิก', item_name: 'ชื่อสินค้า', number: 'รหัสสินค้า', amount: 'ราคา', quantity: 'จำนวน' }, + tr_TR: { buynow: 'Hemen Alın', cart: 'Sepete Ekleyin', donate: 'Bağış Yapın', subscribe: 'Abone Olun', item_name: 'Ürün', number: 'Numara', amount: 'Tutar', quantity: 'Miktar' }, + zh_CN: { buynow: '立即购买', cart: '添加到购物车', donate: '捐赠', subscribe: '租用', item_name: '物品', number: '编号', amount: '金额', quantity: '数量' }, + zh_HK: { buynow: '立即買', cart: '加入購物車', donate: '捐款', subscribe: '訂用', item_name: '項目', number: '號碼', amount: '金額', quantity: '數量' }, + zh_TW: { buynow: '立即購', cart: '加到購物車', donate: '捐款', subscribe: '訂閱', item_name: '商品', number: '商品編號', amount: '單價', quantity: '數量' }, + zh_XC: { buynow: '立即购买', cart: '添加到购物车', donate: '捐赠', subscribe: '租用', item_name: '物品', number: '编号', amount: '金额', quantity: '数量' } }; if (!PAYPAL.apps.ButtonFactory) { @@ -35,12 +56,7 @@ PAYPAL.apps = PAYPAL.apps || {}; * Initial config for the app. These values can be overridden by the page. */ app.config = { - labels: { - item_name: 'Item', - item_number: 'Number', - amount: 'Amount', - quantity: 'Quantity' - } + labels: {} }; /** @@ -49,7 +65,6 @@ PAYPAL.apps = PAYPAL.apps || {}; app.buttons = { buynow: 0, cart: 0, - hosted: 0, donate: 0, qr: 0, subscribe: 0 @@ -77,12 +92,8 @@ PAYPAL.apps = PAYPAL.apps || {}; // Defaults type = type || 'buynow'; - // Hosted buttons - if (data.items.hosted_button_id) { - type = 'hosted'; - data.add('cmd', '_s-xclick'); // Cart buttons - } else if (type === 'cart') { + if (type === 'cart') { data.add('cmd', '_cart'); data.add('add', true); // Donation buttons @@ -114,6 +125,9 @@ PAYPAL.apps = PAYPAL.apps || {}; button = buildForm(data, type); } + // Inject CSS + injectCSS(); + // Register it this.buttons[type] += 1; @@ -139,18 +153,22 @@ PAYPAL.apps = PAYPAL.apps || {}; */ function buildForm(data, type) { var form = document.createElement('form'), - btn = document.createElement('input'), + btn = document.createElement('button'), hidden = document.createElement('input'), items = data.items, - item, child, label, input, key, size, locale; + item, child, label, input, key, size, locale, localeText; - btn.type = 'image'; - hidden.type = 'hidden'; form.method = 'post'; form.action = paypalURL; form.className = 'paypal-button'; form.target = '_top'; + hidden.type = 'hidden'; + + size = items.size && items.size.value || 'large'; + locale = items.lc && items.lc.value || 'en_US'; + localeText = buttonText[locale] || buttonText.en_US; + for (key in items) { item = items[key]; @@ -163,7 +181,7 @@ PAYPAL.apps = PAYPAL.apps || {}; label = document.createElement('label'); label.className = 'paypal-label'; - label.appendChild(document.createTextNode(app.config.labels[item.key] + ' ' || '')); + label.appendChild(document.createTextNode(app.config.labels[item.key] || localeText[item.key])); label.appendChild(input); child = document.createElement('p'); @@ -178,11 +196,11 @@ PAYPAL.apps = PAYPAL.apps || {}; form.appendChild(child); } - size = items.size && items.size.value; - locale = items.lc && items.lc.value; + btn.type = 'submit'; + btn.className = 'paypal-button ' + size; + btn.appendChild(document.createTextNode(localeText[type])); form.appendChild(btn); - btn.src = getButtonImg(type, size, locale); // If the Mini Cart is present then register the form if (PAYPAL.apps.MiniCart && data.items.cmd.value === '_cart') { @@ -198,6 +216,42 @@ PAYPAL.apps = PAYPAL.apps || {}; return form; } + /** + * Injects button CSS in the + * + * @return {void} + */ + function injectCSS() { + var css, styleEl, paypalButton, paypalInput; + + if (document.getElementById('paypal-button')) { + return; + } + + css = ''; + styleEl = document.createElement('style'); + paypalButton = '.paypal-button'; + paypalInput = paypalButton + ' button[type=submit]'; + + css += paypalButton + ' { white-space: nowrap; }'; + css += paypalInput + ' { white-space: nowrap; overflow: hidden; border-radius: 13px; font-family: "Arial", bold, italic; font-weight: bold; font-style: italic; border: 1px solid #ffa823; color: #0E3168; background: transparent; position: relative; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; }'; + css += paypalInput + ':before { content: " "; position: absolute; width: 100%; height: 100%; border-radius: 11px; top: 0; left: 0; background: #ffa823; background: -webkit-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: -moz-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: -ms-linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); background: linear-gradient(top, #FFAA00 0%,#FFAA00 80%,#FFF8FC 100%); z-index: -2; }'; + css += paypalInput + ':after { content: " "; position: absolute; width: 98%; height: 60%; border-radius: 40px 40px 38px 38px; top: 0; left: 0; background: -webkit-linear-gradient(top, #fefefe 0%, #fed994 100%); background: -moz-linear-gradient(top, #fefefe 0%, #fed994 100%); background: -ms-linear-gradient(top, #fefefe 0%, #fed994 100%); background: linear-gradient(top, #fefefe 0%, #fed994 100%); z-index: -1; -webkit-transform: translateX(1%);-moz-transform: translateX(1%); -ms-transform: translateX(1%); transform: translateX(1%); }'; + css += paypalInput + '.small { padding: 3px 15px; font-size: 12px; line-height: 14px; }'; + css += paypalInput + '.large { padding: 4px 19px; font-size: 14px; line-height: 16px; }'; + + styleEl.type = 'text/css'; + styleEl.id = 'paypal-button'; + + if (styleEl.styleSheet) { + styleEl.styleSheet.cssText = css; + } else { + styleEl.appendChild(document.createTextNode(css)); + } + + document.getElementsByTagName('head')[0].appendChild(styleEl); + } + /** * Builds the image for a QR code @@ -228,25 +282,6 @@ PAYPAL.apps = PAYPAL.apps || {}; } - /** - * Utility function to return the rendered button image URL - * - * @param type {String} The type of button to render - * @param size {String} The size of button (small/large) - * @param locale {String} The locale - * @return {String} - */ - function getButtonImg(type, size, locale) { - var img = buttonImgs[type] || buttonImgs.buynow; - - // Image defaults - locale = locale || 'en_US'; - size = (size === 'small') ? 'SM' : 'LG'; - - return img.replace(/\{locale\}/, locale).replace(/\{size\}/, size); - } - - /** * Utility function to polyfill dataset functionality with a bit of a spin * diff --git a/test/index.html b/test/index.html index 0619911..eeabc6d 100644 --- a/test/index.html +++ b/test/index.html @@ -28,7 +28,7 @@

Buy Now (Large)

-

Buy Now (Spanish)

+

Buy Now (Large/Spanish)

-
-

Buy Now (French)

+
+

Buy Now (Large/Japanese)

-

Buy Now (German)

+

Buy Now (Large/German)

-

Cart (Small)

+

Cart (Small/Italian)

-

Cart (Large)

+

Cart (Large/English)