vendor: 7,199 bytes, lines 1-2
1/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */ 2jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var o=e("<input/>",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window);
vendor: 3,027 bytes, lines 2-19
2 3var stacks = {}; 4stacks.jQuery = jQuery.noConflict(true); 5stacks.com_elixir_stacks_foundryBanner = {}; 6stacks.com_elixir_stacks_foundryBanner = (function(stack) { 7var jQuery = stacks.jQuery;var $ = jQuery;/* 8 * jQuery Easing v1.3.2 - http://gsgd.co.uk/sandbox/jquery/easing/ 9 * Open source under the BSD License. 10 * Copyright © 2008 George McGinley Smith 11 * All rights reserved. 12 * https://raw.github.com/gdsmith/jquery-easing/master/LICENSE 13*/ 14(function(h){h.easing.jswing=h.easing.swing;h.extend(h.easing,{def:"easeOutQuad",swing:function(e,a,c,b,d){return h.easing[h.easing.def](e,a,c,b,d)},easeInQuad:function(e,a,c,b,d){return b*(a/=d)*a+c},easeOutQuad:function(e,a,c,b,d){return-b*(a/=d)*(a-2)+c},easeInOutQuad:function(e,a,c,b,d){return 1>(a/=d/2)?b/2*a*a+c:-b/2*(--a*(a-2)-1)+c},easeInCubic:function(e,a,c,b,d){return b*(a/=d)*a*a+c},easeOutCubic:function(e,a,c,b,d){return b*((a=a/d-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,b,d){return 1> 15(a/=d/2)?b/2*a*a*a+c:b/2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,b,d){return b*(a/=d)*a*a*a+c},easeOutQuart:function(e,a,c,b,d){return-b*((a=a/d-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,b,d){return 1>(a/=d/2)?b/2*a*a*a*a+c:-b/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,b,d){return b*(a/=d)*a*a*a*a+c},easeOutQuint:function(e,a,c,b,d){return b*((a=a/d-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,b,d){return 1>(a/=d/2)?b/2*a*a*a*a*a+c:b/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e,a, 16c,b,d){return-b*Math.cos(a/d*(Math.PI/2))+b+c},easeOutSine:function(e,a,c,b,d){return b*Math.sin(a/d*(Math.PI/2))+c},easeInOutSine:function(e,a,c,b,d){return-b/2*(Math.cos(Math.PI*a/d)-1)+c},easeInExpo:function(e,a,c,b,d){return 0==a?c:b*Math.pow(2,10*(a/d-1))+c},easeOutExpo:function(e,a,c,b,d){return a==d?c+b:b*(-Math.pow(2,-10*a/d)+1)+c},easeInOutExpo:function(e,a,c,b,d){return 0==a?c:a==d?c+b:1>(a/=d/2)?b/2*Math.pow(2,10*(a-1))+c:b/2*(-Math.pow(2,-10*--a)+2)+c},easeInCirc:function(e,a,c,b,d){return-b* 17(Math.sqrt(1-(a/=d)*a)-1)+c},easeOutCirc:function(e,a,c,b,d){return b*Math.sqrt(1-(a=a/d-1)*a)+c},easeInOutCirc:function(e,a,c,b,d){return 1>(a/=d/2)?-b/2*(Math.sqrt(1-a*a)-1)+c:b/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(0==a)return c;if(1==(a/=d))return c+b;f||(f=.3*d);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return-(g*Math.pow(2,10*--a)*Math.sin(2*(a*d-e)*Math.PI/f))+c},easeOutElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(0== 18a)return c;if(1==(a/=d))return c+b;f||(f=.3*d);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return g*Math.pow(2,-10*a)*Math.sin(2*(a*d-e)*Math.PI/f)+b+c},easeInOutElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(0==a)return c;if(2==(a/=d/2))return c+b;f||(f=.3*d*1.5);g<Math.abs(b)?(g=b,e=f/4):e=f/(2*Math.PI)*Math.asin(b/g);return 1>a?-.5*g*Math.pow(2,10*--a)*Math.sin(2*(a*d-e)*Math.PI/f)+c:g*Math.pow(2,-10*--a)*Math.sin(2*(a*d-e)*Math.PI/f)*.5+b+c},easeInBack:function(e,a,c,b,d,f){void 0== 19f&&(f=1.70158);return b*(a/=d)*a*((f+1)*a-f)+c}
19,easeOutBack:function(e,a,c,b,d,f){void 0==f&&(f=1.70158);return b*((a=a/d-1)*a*((f+1)*a+f)+1)+c},easeInOutBack:function(e,a,c,b,d,f){void 0==f&&(f=1.70158);return 1>(a/=d/2)?b/2*a*a*(((f*=1.525)+1)*a-f)+c:b/2*((a-=2)*a*(((f*=1.525)+1)*a+f)+2)+c},easeInBounce:function(e,a,c,b,d){return b-h.easing.easeOutBounce(e,d-a,0,b,d)+c},easeOutBounce:function(e,a,c,b,d){return(a/=d)<1/2.75?7.5625*b*a*a+c:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+.75)+c:a<2.5/2.75?b*(7.5625* 20(a-=2.25/2.75)*a+.9375)+c:b*(7.5625*(a-=2.625/2.75)*a+.984375)+c},easeInOutBounce:function(e,a,c,b,d){return a<d/2?.5*h.easing.easeInBounce(e,2*a,0,b,d)+c:.5*h.easing.easeOutBounce(e,2*a-d,0,b,d)+.5*b+c}})})(jQuery); 21return stack;})(stacks.com_elixir_stacks_foundryBanner); 22stacks.com_elixir_stacks_foundryNavigationBar = {}; 23stacks.com_elixir_stacks_foundryNavigationBar = (function(stack) { 24var jQuery = stacks.jQuery;var $ = jQuery;// Sticky Plugin v1.0.4 for jQuery 25// ============= 26// Author: Anthony Garand 27// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk) 28// Improvements by Leonardo C. Daronco (daronco) 29// Created: 02/14/2011 30// Date: 07/20/2015 31// Website: http://stickyjs.com/ 32// Description: Makes an element on the page stick on the screen as you scroll 33// It will only set the 'top' and 'position' of your element, you 34// might need to adjust the width in some cases. 35 36(function (factory) { 37 if (typeof define === 'function' && define.amd) { 38 // AMD. Register as an anonymous module. 39 define(['jquery'], factory); 40 } else if (typeof module === 'object' && module.exports) { 41 // Node/CommonJS 42 module.exports = factory(require('jquery')); 43 } else { 44 // Browser globals 45 factory(jQuery); 46 } 47}(function ($) { 48 var slice = Array.prototype.slice; // save ref to original slice() 49 var splice = Array.prototype.splice; // save ref to original slice() 50 51 var defaults = { 52 topSpacing: 0, 53 bottomSpacing: 0, 54 className: 'is-sticky', 55 wrapperClassName: 'sticky-wrapper', 56 center: false, 57 getWidthFrom: '', 58 widthFromWrapper: true, // works only when .getWidthFrom is empty 59 responsiveWidth: false, 60 zIndex: 'auto' 61 }, 62 $window = $(window), 63 $document = $(document), 64 sticked = [], 65 windowHeight = $window.height(), 66 scroller = function() { 67 var scrollTop = $window.scrollTop(), 68 documentHeight = $document.height(), 69 dwh = documentHeight - windowHeight, 70 extra = (scrollTop > dwh) ? dwh - scrollTop : 0; 71 72 for (var i = 0, l = sticked.length; i < l; i++) { 73 var s = sticked[i], 74 elementTop = s.stickyWrapper.offset().top, 75 etse = elementTop - s.topSpacing - extra; 76 77 //update height in case of dynamic content 78 s.stickyWrapper.css('height', s.stickyElement.outerHeight()); 79 s.stickyElement.css('transform', 'translate3d(0px, 0px, 0px)'); 80 81 if (scrollTop < etse) { 82 if (s.currentTop !== null) { 83 s.stickyElement 84 .css({ 85 'width': '', 86 'position': '', 87 'top': '', 88 'left': '', 89 'right': '', 90 'z-index': '' 91 }); 92 s.stickyElement.parent().removeClass(s.className); 93 s.stickyElement.trigger('sticky-end', [s]); 94 s.currentTop = null; 95 } 96 } 97 else { 98 var newTop = documentHeight - s.stickyElement.outerHeight() 99 - s.topSpacing - s.bottomSpacing - scrollTop - extra; 100 if (newTop < 0) { 101 newTop = newTop + s.topSpacing; 102 } else { 103 newTop = s.topSpacing; 104 } 105 if (s.currentTop !== newTop) { 106 var newWidth; 107 if (s.getWidthFrom) { 108 newWidth = $(s.getWidthFrom).width() || null; 109 } else if (s.widthFromWrapper) { 110 newWidth = s.stickyWrapper.width(); 111 } 112 if (newWidth == null) { 113 newWidth = s.stickyElement.width(); 114 } 115 s.stickyElement 116 .css('width', newWidth) 117 .css('position', 'fixed') 118 .css('top', newTop) 119 .css('left', '0') 120 .css('right', '0') 121 .css('z-index', s.zIndex); 122 123 s.stickyElement.parent().addClass(s.className); 124 125 if (s.currentTop === null) { 126 s.stickyElement.trigger('sticky-start', [s]); 127 } else { 128 // sticky is started but it have to be repositioned 129 s.stickyElement.trigger('sticky-update', [s]); 130 } 131 132 if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) { 133 // just reached bottom || just started to stick but bottom is already reached 134 s.stickyElement.trigger('sticky-bottom-reached', [s]); 135 } else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) { 136 // sticky is started && sticked at topSpacing && overflowing from top just finished 137 s.stickyElement.trigger('sticky-bottom-unreached', [s]); 138 } 139 140 s.currentTop = newTop; 141 } 142 143 // Check if sticky has reached end of container and stop sticking 144 var stickyWrapperContainer = s.stickyWrapper.parent(); 145 var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing); 146 147 148 if( unstick ) { 149 s.stickyElement 150 .css('position', 'relative') 151 .css('top', '') 152 .css('left', '') 153 .css('right', '') 154 .css('bottom', 0) 155 .css('z-index', ''); 156 } else { 157 s.stickyElement 158 .css('position', 'fixed') 159 .css('top', newTop) 160 .css('left', '0') 161 .css('right', '0') 162 .css('bottom', '') 163 .css('z-index', s.zIndex); 164 } 165 } 166 } 167 }, 168 resizer = function() { 169 windowHeight = $window.height(); 170 171 for (var i = 0, l = sticked.length; i < l; i++) { 172 var s = sticked[i]; 173 var newWidth = null; 174 if (s.getWidthFrom) { 175 if (s.responsiveWidth) { 176 newWidth = $(s.getWidthFrom).width(); 177 } 178 } else if(s.widthFromWrapper) { 179 newWidth = s.stickyWrapper.width(); 180 } 181 if (newWidth != null) { 182 s.stickyElement.css('width', newWidth); 183 } 184 } 185 186 scroller(); 187 188 }, 189 methods = { 190 init: function(options) { 191 var o = $.extend({}, defaults, options); 192 return this.each(function() { 193 var stickyElement = $(this); 194 195 var stickyId = stickyElement.attr('id'); 196 var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;
197 var wrapper = $('<div></div>') 198 .attr('id', wrapperId) 199 .addClass(o.wrapperClassName); 200 201 stickyElement.wrapAll(function() { 202 if ($(this).parent("#" + wrapperId).length == 0) { 203 return wrapper; 204 } 205}); 206 207 var stickyWrapper = stickyElement.parent(); 208 209 if (o.center) { 210 stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"}); 211 } 212 213 if (stickyElement.css("float") === "right") { 214 stickyElement.css({"float":"none"}).parent().css({"float":"right"}); 215 } 216 217 o.stickyElement = stickyElement; 218 o.stickyWrapper = stickyWrapper; 219 o.currentTop = null; 220 221 sticked.push(o); 222 223 methods.setWrapperHeight(this); 224 methods.setupChangeListeners(this); 225 }); 226 }, 227 228 setWrapperHeight: function(stickyElement) { 229 var element = $(stickyElement); 230 var stickyWrapper = element.parent(); 231 if (stickyWrapper) { 232 stickyWrapper.css('height', element.outerHeight()); 233 } 234 }, 235 236 setupChangeListeners: function(stickyElement) { 237 if (window.MutationObserver) { 238 var mutationObserver = new window.MutationObserver(function(mutations) { 239 if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) { 240 methods.setWrapperHeight(stickyElement); 241 } 242 }); 243 mutationObserver.observe(stickyElement, {subtree: true, childList: true}); 244 } else { 245 if (window.addEventListener) { 246 stickyElement.addEventListener('DOMNodeInserted', function() { 247 methods.setWrapperHeight(stickyElement); 248 }, false); 249 stickyElement.addEventListener('DOMNodeRemoved', function() { 250 methods.setWrapperHeight(stickyElement); 251 }, false); 252 } else if (window.attachEvent) { 253 stickyElement.attachEvent('onDOMNodeInserted', function() { 254 methods.setWrapperHeight(stickyElement); 255 }); 256 stickyElement.attachEvent('onDOMNodeRemoved', function() { 257 methods.setWrapperHeight(stickyElement); 258 }); 259 } 260 } 261 }, 262 update: scroller, 263 unstick: function(options) { 264 return this.each(function() { 265 var that = this; 266 var unstickyElement = $(that); 267 268 var removeIdx = -1; 269 var i = sticked.length; 270 while (i-- > 0) { 271 if (sticked[i].stickyElement.get(0) === that) { 272 splice.call(sticked,i,1); 273 removeIdx = i; 274 } 275 } 276 if(removeIdx !== -1) { 277 unstickyElement.unwrap(); 278 unstickyElement 279 .css({ 280 'width': '', 281 'position': '', 282 'top': '', 283 'left': '', 284 'right': '', 285 'float': '', 286 'z-index': '' 287 }); 288 } 289 }); 290 } 291 }; 292 293 // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer): 294 if (window.addEventListener) { 295 window.addEventListener('scroll', scroller, false); 296 window.addEventListener('resize', resizer, false); 297 } else if (window.attachEvent) { 298 window.attachEvent('onscroll', scroller); 299 window.attachEvent('onresize', resizer); 300 } 301 302 $.fn.sticky = function(method) { 303 if (methods[method]) { 304 return methods[method].apply(this, slice.call(arguments, 1)); 305 } else if (typeof method === 'object' || !method ) { 306 return methods.init.apply( this, arguments ); 307 } else { 308 $.error('Method ' + method + ' does not exist on jQuery.sticky'); 309 } 310 }; 311 312 $.fn.unstick = function(method) { 313 if (methods[method]) { 314 return methods[method].apply(this, slice.call(arguments, 1)); 315 } else if (typeof method === 'object' || !method ) { 316 return methods.unstick.apply( this, arguments ); 317 } else { 318 $.error('Method ' + method + ' does not exist on jQuery.sticky'); 319 } 320 }; 321 $(function() { 322 setTimeout(scroller, 0); 323 }); 324})); 325 326return stack;}
326)(stacks.com_elixir_stacks_foundryNavigationBar); 327stacks.stacks_in_2 = {}; 328stacks.stacks_in_2 = (function(stack) { 329var jQuery = stacks.jQuery;var $ = jQuery;// Set Language for Document 330document.documentElement.lang = "en"; 331 332$(document).ready(function(){ 333 334 335 336}); 337 338$.fn.elementRealHeight = function () { 339 $clone = this.clone() 340 .css("visibility","hidden") 341 .appendTo($('body')); 342 var $height = $clone.outerHeight(); 343 $clone.remove(); 344 return $height; 345 }; 346 347 $.fn.elementRealWidth = function () { 348 $clone = this.clone() 349 .css("visibility","hidden") 350 .appendTo($('body')); 351 var $width = $clone.outerWidth(); 352 $clone.remove(); 353 return $width; 354 }; 355 356 357 // Handles offsets for anchor tags 358 // (function(document, history, location) { 359 // var HISTORY_SUPPORT = !!(history && history.pushState); 360 // 361 // var anchorScrolls = { 362 // ANCHOR_REGEX: /^#[^ ]+$/, 363 // OFFSET_HEIGHT_PX: 0, 364 // 365 // /** 366 // * Establish events, and fix initial scroll position if a hash is provided. 367 // */ 368 // init: function() { 369 // this.scrollToCurrent(); 370 // window.addEventListener('hashchange', this.scrollToCurrent.bind(this)); 371 // document.body.addEventListener('click', this.delegateAnchors.bind(this)); 372 // }, 373 // 374 // /** 375 // * Return the offset amount to deduct from the normal scroll position. 376 // * Modify as appropriate to allow for dynamic calculations 377 // */ 378 // getFixedOffset: function() { 379 // return this.OFFSET_HEIGHT_PX; 380 // }, 381 // 382 // /** 383 // * If the provided href is an anchor which resolves to an element on the 384 // * page, scroll to it. 385 // * @param {String} href 386 // * @return {Boolean} - Was the href an anchor. 387 // */ 388 // scrollIfAnchor: function(href, pushToHistory) { 389 // var match, rect, anchorOffset; 390 // 391 // if(!this.ANCHOR_REGEX.test(href)) { 392 // return false; 393 // } 394 // 395 // match = document.getElementById(href.slice(1)); 396 // 397 // if(match) { 398 // rect = match.getBoundingClientRect(); 399 // anchorOffset = window.pageYOffset + rect.top - this.getFixedOffset(); 400 // window.scrollTo(window.pageXOffset, anchorOffset); 401 // 402 // // Add the state to history as-per normal anchor links 403 // if(HISTORY_SUPPORT && pushToHistory) { 404 // history.pushState({}, document.title, location.pathname + href); 405 // } 406 // } 407 // 408 // return !!match; 409 // }, 410 // 411 // /** 412 // * Attempt to scroll to the current location's hash. 413 // */ 414 // scrollToCurrent: function() { 415 // this.scrollIfAnchor(window.location.hash); 416 // }, 417 // 418 // /** 419 // * If the click event's target was an anchor, fix the scroll position. 420 // */ 421 // delegateAnchors: function(e) { 422 // var elem = e.target; 423 // 424 // if( 425 // elem.nodeName === 'A' && 426 // this.scrollIfAnchor(elem.getAttribute('href'), true) 427 // ) { 428 // e.preventDefault(); 429 // } 430 // } 431 // }; 432 // 433 // window.addEventListener( 434 // 'DOMContentLoaded', anchorScrolls.init.bind(anchorScrolls) 435 // ); 436 // })(window.document, window.history, window.location); 437 438return stack;})(stacks.stacks_in_2); 439stacks.stacks_in_101 = {}; 440stacks.stacks_in_101 = (function(stack) { 441var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 442 443 444 445 446 447 448}); 449 450return stack;})(stacks.stacks_in_101); 451stacks.stacks_in_103 = {}; 452stacks.stacks_in_103 = (function(stack) { 453var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 454 455}); 456 457return stack;})(stacks.stacks_in_103); 458stacks.stacks_in_94 = {}; 459stacks.stacks_in_94 = (function(stack) { 460var jQuery = stacks.jQuery;var $ = jQuery;function foundry_navigation_bar() { 461 // Removes overflow hidden so dropdowns can show as they should. 462 $('#stacks_in_94 .navigation_bar ').parentsUntil('.stacks_top').css({'overflow' : 'visible'}); 463 $('.stacks_top').css({'overflow' : 'visible'}); 464 465 // Unwraps the link from dividers and small subheaders 466 $('#stacks_in_94 .navigation_bar div.nav_divider, #stacks_in_94 .navigation_bar .small_hdr').unwrap(); 467 468 469 470 // Removes href attributes from parent navigation links. 471 // This could be offered as an option possibly. 472 $('#stacks_in_94 .navigation_bar .navigation_container > ul > li > a.parent').removeAttr("href").addClass('closed'); 473 474 // 475 // Handles displaying drop down navigation. 476 // 477 $('#stacks_in_94 .navigation_bar .navigation_container ul').find("li").each(function() { 478 if ($(this).find("ul:first").length > 0) { 479 480 $(this).click(function() { 481 482 483 // 484 // Close all navigation drop downs when another is opened. 485 // 486 $("#stacks_in_94 .navigation_bar .navigation_container ul li").removeClass('clicked'); 487 488 $(this).addClass('clicked'); 489 490 $("#stacks_in_94 .navigation_bar .navigation_container ul li:not(.clicked) a.open").parent().find('ul:first').stop(true, true).slide
490Up(200); 491 492 493 $("#stacks_in_94 .navigation_bar .navigation_container ul li").find("> a").addClass('closed').removeClass('open'); 494 495 496 // 497 // Show child-level menu items 498 // 499 $(this).find("ul:first").stop(true, true).animate({height: 'toggle' , opacity: 'toggle'}, 200); 500 501 $(this).find("> a").toggleClass('closed').toggleClass('open'); 502 }); 503 } 504 }); 505 506 507 // 508 // Handles showing and hiding the navigation when the navigation toggle is clicked or tapped. 509 // 510 $('#stacks_in_94_mobile_navigation_toggle').click(function(){ 511 $('#stacks_in_94 .navigation_bar .navigation_container > ul').slideToggle(175, function(){}); 512 }); 513 514 // 515 // Handles pairing navigation with parent banner 516 // 517 518} 519 520 521 522 // Sticky Navigation 523 524 function stickIt() { 525 $("#stacks_in_94 .navigation_bar").sticky({ 526 topSpacing: 0, 527 bottomSpacing: 0, 528 className: 'is-sticky', 529 wrapperClassName: 'sticky-wrapper', 530 center: true, 531 getWidthFrom: 'body', 532 widthFromWrapper: false, // works only when .getWidthFrom is empty 533 responsiveWidth: false, 534 zIndex: '3000' 535 }); 536 } 537 538 function stickItUpdate() { 539 $("#stacks_in_94 .navigation_bar").sticky('update'); 540 } 541 542 $(document).ready(function(){ 543 foundry_navigation_bar(); 544 545 var navTop = $("#stacks_in_94 .navigation_bar").offset().top; 546 547 if (navTop > 0) { 548 stickIt(); 549 } else { 550 $("#stacks_in_94 .navigation_bar").addClass('sticky simple-sticky'); 551 } 552 553 }); 554 555 $(window).load(function(){ 556 stickItUpdate(); 557 }); 558 559 document.addEventListener("orientationchange", stickItUpdate); 560 561 562 563return stack;})(stacks.stacks_in_94); 564stacks.stacks_in_113 = {}; 565stacks.stacks_in_113 = (function(stack) { 566var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 567 568 569 570 571 572 573}); 574 575return stack;})(stacks.stacks_in_113); 576stacks.stacks_in_115 = {}; 577stacks.stacks_in_115 = (function(stack) { 578var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 579 580}); 581 582return stack;})(stacks.stacks_in_115); 583stacks.stacks_in_71 = {}; 584stacks.stacks_in_71 = (function(stack) { 585var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 586 $('#stacks_in_71 > .container').parentsUntil('.stacks_top').css('overflow', 'visible'); 587 588 // $('#stacks_in_71 > .container').parentsUntil('.stacks_top').css({'overflow' : 'visible'}); 589 // $('.stacks_top').css({'overflow' : 'visible'}); 590 591 592}); 593 594return stack;})(stacks.stacks_in_71); 595stacks.stacks_in_149 = {}; 596stacks.stacks_in_149 = (function(stack) { 597var jQuery = stacks.jQuery;var $ = jQuery;//----------------------------------------------------------// 598// + PAYSNAP v.2.0.3 (START) 599// - 2013-11-23 05:35 am 600//----------------------------------------------------------// 601 602//----------------------------------------------------------// 603// + PLUGINS 604//----------------------------------------------------------// 605 606/* 607* jQuery BlockUI; v20130718 608* http://jquery.malsup.com/block/ 609* Copyright (c) 2013 M. Alsup; Dual licensed: MIT/GPL 610*/ 611(function(){"use strict";function e(e){function o(o,i){var s,h,k=o==window,v=i&&void 0!==i.message?i.message:void 0;if(i=e.extend({},e.blockUI.defaults,i||{}),!i.ignoreIfBlocked||!e(o).data("blockUI.isBlocked")){if(i.overlayCSS=e.extend({},e.blockUI.defaults.overlayCSS,i.overlayCSS||{}),s=e.extend({},e.blockUI.defaults.css,i.css||{}),i.onOverlayClick&&(i.overlayCSS.cursor="pointer"),h=e.extend({},e.blockUI.defaults.themedCSS,i.themedCSS||{}),v=void 0===v?i.message:v,k&&b&&t(window,{fadeOut:0}),v&&"string"!=typeof v&&(v.parentNode||v.jquery)){var y=v.jquery?v[0]:v,m={};e(o).data("blockUI.history",m),m.el=y,m.parent=y.parentNode,m.display=y.style.display,m.position=y.style.position,m.parent&&m.parent.removeChild(y)}e(o).data("blockUI.onUnblock",i.onUnblock);var g,I,w,U,x=i.baseZ;g=r||i.forceIframe?e('<iframe class="blockUI" style="z-index:'+x++ +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+i.iframeSrc+'"></iframe>'):e('<div class="blockUI" style="display:none"></div>'),I=i.theme?e('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+x++ +';display:none"></div>'):e('<div class="blockUI blockOverlay" style="z-index:'+x++ +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'),i.theme&&k?(U='<div class="blockUI '+i.blockMsgClass+' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(x+10)+';display:none;position:fixed">',i.title&&(U+='<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(i.title||" ")+"</div>"),U+='<div class="ui-widget-content ui-dialog-content"></div>',U+="</div>"):i.theme?(U='<div class="blockUI '+i.blockMsgClass+' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(x+10)+';display:none;position:absolute">',i.title&&(U+='<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(i.title||" ")+"</div>"),U+='<div class="ui-widget-content ui-dialog-content"></div>',U+="</div>"):U=k?'<div class="blockUI '+i.blockMsgClass+' blockPage" style="z-index:'+(x+10)+';display:none;position:fixed"></div>':'<div class="blockUI '+i.blockMsgClass+' blockElement" style="z-index:'+(x+10)+';display:none;position:absolute"></div>',w=e(U),v&&(i.theme?(w.css(h),w.addClass("ui-widget-content")):w.css(s)),i.theme||I.css(i.overlayCSS),I.css("position",k?"fixed":"absolute"),(r||i.forceIframe)&&g.css("opacity",0);var C=[g,I,w],S=k?e("body"):e(o);e.each(C,function(){this.appendTo(S)}),i.theme&&i.draggable&&e.fn.draggable&&w.draggable({handle:".ui-dialog-titlebar",cancel:"li"});
vendor: 5,846 bytes, line 611
611var O=f&&(!e.support.boxModel||e("object,embed",k?null:o).length>0);if(u||O){if(k&&i.allowBodyStretch&&e.support.boxModel&&e("html,body").css("height","100%"),(u||!e.support.boxModel)&&!k)var E=d(o,"borderTopWidth"),T=d(o,"borderLeftWidth"),M=E?"(0 - "+E+")":0,B=T?"(0 - "+T+")":0;e.each(C,function(e,o){var t=o[0].style;if(t.position="absolute",2>e)k?t.setExpression("height","Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:"+i.quirksmodeOffsetHack+') + "px"'):t.setExpression("height",'this.parentNode.offsetHeight + "px"'),k?t.setExpression("width",'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):t.setExpression("width",'this.parentNode.offsetWidth + "px"'),B&&t.setExpression("left",B),M&&t.setExpression("top",M);else if(i.centerY)k&&t.setExpression("top",'(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'),t.marginTop=0;else if(!i.centerY&&k){var n=i.css&&i.css.top?parseInt(i.css.top,10):0,s="((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "+n+') + "px"';t.setExpression("top",s)}})}if(v&&(i.theme?w.find(".ui-widget-content").append(v):w.append(v),(v.jquery||v.nodeType)&&e(v).show()),(r||i.forceIframe)&&i.showOverlay&&g.show(),i.fadeIn){var j=i.onBlock?i.onBlock:c,H=i.showOverlay&&!v?j:c,z=v?j:c;i.showOverlay&&I._fadeIn(i.fadeIn,H),v&&w._fadeIn(i.fadeIn,z)}else i.showOverlay&&I.show(),v&&w.show(),i.onBlock&&i.onBlock();if(n(1,o,i),k?(b=w[0],p=e(i.focusableElements,b),i.focusInput&&setTimeout(l,20)):a(w[0],i.centerX,i.centerY),i.timeout){var W=setTimeout(function(){k?e.unblockUI(i):e(o).unblock(i)},i.timeout);e(o).data("blockUI.timeout",W)}}}function t(o,t){var s,l=o==window,a=e(o),d=a.data("blockUI.history"),c=a.data("blockUI.timeout");c&&(clearTimeout(c),a.removeData("blockUI.timeout")),t=e.extend({},e.blockUI.defaults,t||{}),n(0,o,t),null===t.onUnblock&&(t.onUnblock=a.data("blockUI.onUnblock"),a.removeData("blockUI.onUnblock"));var r;r=l?e("body").children().filter(".blockUI").add("body > .blockUI"):a.find(">.blockUI"),t.cursorReset&&(r.length>1&&(r[1].style.cursor=t.cursorReset),r.length>2&&(r[2].style.cursor=t.cursorReset)),l&&(b=p=null),t.fadeOut?(s=r.length,r.stop().fadeOut(t.fadeOut,function(){0===--s&&i(r,d,t,o)})):i(r,d,t,o)}function i(o,t,i,n){var s=e(n);if(!s.data("blockUI.isBlocked")){o.each(function(){this.parentNode&&this.parentNode.removeChild(this)}),t&&t.el&&(t.el.style.display=t.display,t.el.style.position=t.position,t.parent&&t.parent.appendChild(t.el),s.removeData("blockUI.history")),s.data("blockUI.static")&&s.css("position","static"),"function"==typeof i.onUnblock&&i.onUnblock(n,i);var l=e(document.body),a=l.width(),d=l[0].style.width;l.width(a-1).width(a),l[0].style.width=d}}function n(o,t,i){var n=t==window,l=e(t);if((o||(!n||b)&&(n||l.data("blockUI.isBlocked")))&&(l.data("blockUI.isBlocked",o),n&&i.bindEvents&&(!o||i.showOverlay))){var a="mousedown mouseup keydown keypress keyup touchstart touchend touchmove";o?e(document).bind(a,i,s):e(document).unbind(a,s)}}function s(o){if("keydown"===o.type&&o.keyCode&&9==o.keyCode&&b&&o.data.constrainTabKey){var t=p,i=!o.shiftKey&&o.target===t[t.length-1],n=o.shiftKey&&o.target===t[0];if(i||n)return setTimeout(function(){l(n)},10),!1}var s=o.data,a=e(o.target);return a.hasClass("blockOverlay")&&s.onOverlayClick&&s.onOverlayClick(),a.parents("div."+s.blockMsgClass).length>0?!0:0===a.parents().children().filter("div.blockUI").length}function l(e){if(p){var o=p[e===!0?p.length-1:0];o&&o.focus()}}function a(e,o,t){var i=e.parentNode,n=e.style,s=(i.offsetWidth-e.offsetWidth)/2-d(i,"borderLeftWidth"),l=(i.offsetHeight-e.offsetHeight)/2-d(i,"borderTopWidth");o&&(n.left=s>0?s+"px":"0"),t&&(n.top=l>0?l+"px":"0")}function d(o,t){return parseInt(e.css(o,t),10)||0}e.fn._fadeIn=e.fn.fadeIn;var c=e.noop||function(){},r=/MSIE/.test(navigator.userAgent),u=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent);document.documentMode||0;var f=e.isFunction(document.createElement("div").style.setExpression);e.blockUI=function(e){o(window,e)},e.unblockUI=function(e){t(window,e)},e.growlUI=function(o,t,i,n){var s=e('<div class="growlUI"></div>');o&&s.append("<h1>"+o+"</h1>"),t&&s.append("<h2>"+t+"</h2>"),void 0===i&&(i=3e3);var l=function(o){o=o||{},e.blockUI({message:s,fadeIn:o.fadeIn!==void 0?o.fadeIn:700,fadeOut:o.fadeOut!==void 0?o.fadeOut:1e3,timeout:o.timeout!==void 0?o.timeout:i,centerY:!1,showOverlay:!1,onUnblock:n,css:e.blockUI.defaults.growlCSS})};l(),s.css("opacity"),s.mouseover(function(){l({fadeIn:0,timeout:3e4});var o=e(".blockMsg");o.stop(),o.fadeTo(300,1)}).mouseout(function(){e(".blockMsg").fadeOut(1e3)})},e.fn.block=function(t){if(this[0]===window)return e.blockUI(t),this;var i=e.extend({},e.blockUI.defaults,t||{});return this.each(function(){var o=e(this);i.ignoreIfBlocked&&o.data("blockUI.isBlocked")||o.unblock({fadeOut:0})}),this.each(function(){"static"==e.css(this,"position")&&(this.style.position="relative",e(this).data("blockUI.static",!0)),this.style.zoom=1,o(this,t)})},e.fn.unblock=function(o){return this[0]===window?(e.unblockUI(o),this):this.each(function(){t(this,o)})},e.blockUI.version=2.6,e.blockUI.defaults={message:"<h1>Please wait...</h1>",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",o
611pacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1};var b=null,p=[]}"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],e):e(jQuery)})(); 612 613//----------------------------------------------------------// 614// + VARS 615//----------------------------------------------------------// 616 617if (window.paysnapisloaded) 618 return; 619window.paysnapisloaded = 1; 620 621var scripts = document.getElementsByTagName( 'script' ); 622var src = scripts[scripts.length-1].getAttribute( 'src' ); 623 624var empty_cart_at_checkout = false; 625var cart_expire_hours = 24; 626 627var paypal_url = 'https://www.paypal.com/cgi-bin/webscr'; 628var paypal_sandbox_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; 629var use_sandbox = 'false'; 630var checkout_button_string = 'Checkout with #paypal#'; 631var cart_title = ' My Cart '; 632var footer_text = 'Powered by PaySnap'; 633var currency_format = 'USD'; 634var iPad = /iPad/i.test(navigator.userAgent); 635var mobile = /(iPhone|iPod|Android)/i.test(navigator.userAgent); 636 637// messages 638var checkout_warning = 'Checkout not possible with zero total.'; // displayed when cart total == 0 639var delete_confirm = 'Delete this item?'; 640var ok_string = ' OK '; 641var cancel_string = ' Cancel '; 642var empty_cart = 'Cart is empty.'; 643 644// PAYPAL DATA 645var paypalData = { 646 business: '[email protected]', 647 paymentaction: 'sale', 648 currency_code: 'USD', // https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_currency_codes 649 custom: '', 650 tax_cart: '', 651 weight_cart: '', 652 weight_unit: 'lbs', 653 handling_cart: '', 654 'return': '', 655 return_url: '', 656 cancel_return: '', 657 notify_url: '', 658 no_shipping: '0', 659 lc: 'US', 660 bn: 'CartLoom_Cart_WPS' 661}; 662 663// Used to validate before publishing 664var business = '[email protected]'; 665var return_url = '<a href="">'; 666var cancel_url = '<a href="">'; 667var notify_url = '<a href="">'; 668 669var iPad = /iPad/i.test(navigator.userAgent); 670var mobile = /(iPhone|iPod|Android)/i.test(navigator.userAgent); 671 672var debug = 'False'; 673var stack_id = 'stacks_in_149'; 674 675// Modal Styling 676var bui_overlay_opacity = '0.75'; 677var outer_overlay = '#000000'; 678var inner_overlay = '#FFFFFF'; 679var ok_btn_text = "OK"; 680 681// modal template 682var modal_tpl = '<div id="ps-modal-wrap-details">'+ 683 '<div>'+ 684 '<div id="ps-modal-heading-details">{{title}}</div>'+ 685 '<div id="paysnap-close-details"><i class="ps-icon-remove"></i></div>'+ 686 '<div id="ps-modal-body-details"><div class="inner">'+ 687 '{{message}}'+ 688 //'<p><button alt="OK" id="block-button" class="btn-paysnap btn-default btn-paysnap" >' + ok_btn_text + '</button></p>'+ 689 '</div></div>'+ 690 '</div>'+ 691 '</div>'; 692 693//----------------------------------------------------------// 694// + BRAINS 695//----------------------------------------------------------// 696 697function paysnap($) { 698 699// cleartype fixes (by malsup) 700$.fn.fadeIn=function(A,B){return this.animate({opacity:"show"},A,function(){if($.browser.msie){this.style.removeAttribute("filter")}if($.isFunction(B)){B()}})};$.fn.fadeOut=function(A,B){return this.animate({opacity:"hide"},A,function(){if($.browser.msie){this.style.removeAttribute("filter")}if($.isFunction(B)){B()}})};$.fn.fadeTo=function(A,C,B){return this.animate({opacity:C},A,function(){if(C==1&&$.browser.msie){this.style.removeAttribute("filter")}if($.isFunction(B)){B()}})}; 701 702// clear default block styles 703$.blockUI.defaults.css = {}; 704 705// create locally scoped default settings 706var blockUIoptions = { 707 blockMsgClass: 'paysnap-modal', 708 centerY: false, 709 overlayCSS: { opacity: bui_overlay_opacity, backgroundColor: outer_overlay } 710}; 711 712 713// create insulator function 714$.blockUIPaysnap = function(options) { 715 var opts = $.extend(true, blockUIoptions, options); 716 $.blockUI( opts ); 717}; 718 719$.paysnapRenderTemplate = function(title, message){ 720 var filled_template = modal_tpl; 721 filled_template = filled_template.replace('{{title}}', title).replace('{{message}}', message); 722 return filled_template; 723} 724 725$.fn.blockAndSpin = function() { 726 return this.block({ message: null, overlayCSS: { backgroundColor: inner_overlay } }).spinLoad(); 727}; 728$.fn.unblockAndSpin = function() { 729 return this.unblock().spinLoad('stop'); 730}; 731 732$.fn.spinLoad = function(opt) { 733 734$("#paysnap-co-btn").addClass("disabled");
735$("#paysnap-cart").addClass("blur"); 736$("#paysnap-progress-bar").show(); 737 738}; 739 740 741$.fn.fixPNG = function() { 742 return this.each(function () { 743 var image = $(this).css('backgroundImage'); 744 745 if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) { 746 image = RegExp.$1; 747 $(this).css({ 748 'backgroundImage': 'none', 749 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + ($(this).css('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale') + ", src='" + image + "')" 750 }).each(function () { 751 var position = $(this).css('position'); 752 if (position != 'absolute' && position != 'relative') 753 $(this).css('position', 'relative'); 754 }); 755 } 756 }); 757}; 758 759 760 761//Sheet function 762// used within cart for alerts 763$.fn.blockWithSheet = function(markup, callback) { 764 return this.each(function() { 765 var $this = $(this); 766 $this.css('overflow','hidden'); 767 $this.block({ message: null, fadeIn:200, overlayCSS: { backgroundColor: inner_overlay } }); 768 $("#paysnap-cart").addClass("blur"); 769 var $sheet = $(markup).hide().appendTo(this); 770 771 $sheet.find(".paysnap-close-sheet").unbind().click(function(e) { 772 var h = $sheet.outerHeight(); 773 $("#paysnap-cart").removeClass("blur"); 774 $sheet.animate({ top: -h }, 400); 775 $this.unblock({ 776 onUnblock: function() { 777 $sheet.remove(); 778 779 } 780 }); 781 callback.call(this, e); 782 }); 783 784 setTimeout(function() { 785 var h = $sheet.outerHeight(); 786 $sheet.css({ top: -h }).show(); 787 $sheet.animate({ top: 0 }, 400); 788 }, 200); 789 }); 790}; 791 792// 793// bootstrap 794// 795 796$(document).ready(function() { 797 paysnap.initialize(); 798}); 799 800var Currency = { 801 AUD: { dec: '.', grp: ',', sym: '$' }, // Australian Dollar 802 BRL: { dec: '.', grp: '.', sym: 'R' }, //Brazilian Real 803 CAD: { dec: '.', grp: ',', sym: '$' }, // Canadian Dollar 804 CHF: { dec: '.', grp: "'", sym: 'SFr ' }, // Swiss Franc 805 CZK: { dec: ',', grp: '.', sym: ' Kc' }, // Czech Koruna 806 DKK: { dec: '.', grp: '.', sym: ' kr' }, //Danish Krone 807 EUR: { dec: '.', grp: ',', sym: '€ ' }, // Euro 808 GBP: { dec: '.', grp: ',', sym: '£ ' }, // GB Pound 809 HKD: { dec: '.', grp: ',', sym: 'HK$' }, // Hong Kong Dollar 810 HUF: { dec: '.', grp: ',', sym: 'HK$' }, // Hungarian Forint 811 ILS: { dec: '.', grp: ',', sym: '$' }, // Israeli New Sheqel 812 JPY: { dec: '', grp: ',', sym: '¥', noDecimals: 1 }, // Japanese Yen 813 MYR: { dec: '.', grp: '.', sym: 'R' }, // malaysian ringgit 814 MXN: { dec: '.', grp: ',', sym: '$' }, // Mexican Peso 815 NOK: { dec: ',', grp: '.', sym: ' kr' }, // Norwegian Krone 816 NZD: { dec: '.', grp: ',', sym: ' $' }, // New Zealand Dollar 817 PHP: { dec: '.', grp: ',', sym: 'PhP ' }, // Phillippine Peso 818 PLN: { dec: '.', grp: ',', sym: ' zł' }, // Polish Zloty 819 SEK: { dec: '.', grp: ' ', sym: ' SEK' }, // Swedish Krona 820 SGD: { dec: '.', grp: ',', sym: 'SGD $' }, //Singapore Dollar 821 TWD: { dec: '.', grp: ',', sym: 'NT$ ', noDecimals: 1 }, // Taiwan New Dollar 822 THB: { dec: '.', grp: ',', sym: '฿ ' }, // Tai Baht 823 'TRY': { dec: ',', grp: '.', sym: ' TL' }, // turkish lira 824 825 826 format: function(floatVal) { 827 var val = floatVal.toFixed(2); 828 var hash = Currency[this.currId] || { dec: '.', grp: ',', sym: '$' }; 829 if (hash.noDecimals) 830 val = val.replace(/\..*/,''); // discard decimal and everything after it 831 val = val.replace(/\,/g, hash.grp); // replace grouping chars 832 val = val.replace(/\.([\d]{0,2})$/, hash.dec + '$1'); // replace last decimal '.' 833 if (/^ /.test(hash.sym)) 834 val = val + hash.sym; 835 else 836 val = hash.sym + val; 837 return val; 838 }, 839 840 currId: 'usd' 841}; 842 843 844// helpers functions 845var Util = { 846 debug: function(s) { 847 if (window.console && window.console.log) window.console.log('[paysnap.js] '+s); 848 }, 849 addParam: function(url, key, value) { 850 if (!key || !value) return url; 851 return url + (/\?/.test(url) ? '&' : '?') + key + '=' + value; 852 }, 853 setCookie: function(name, value) { 854 var exp = ''; 855 var hours = 1000 * 60 * 60 * cart_expire_hours; 856 var expires = new Date((new Date().getTime()) + hours ); 857 858 if (value) { 859 value = encodeURIComponent(value); 860 if ( cart_expire_hours ) // in case it's zero 861 exp = ';expires=' + expires.toGMTString(); 862 } 863 864 if (window.localStorage) { 865 localStorage.setItem(name, value); 866 localStorage.setItem('paysnap-cart-expire', expires); 867 } 868 else { 869 document.cookie = name+'='+value + exp + '; path=/'; // ticket#94 870 } 871 }, 872 getCookie: function(name) { 873 var val, expires; 874 if (window.localStorage) { 875 expires = localStorage.getItem('paysnap-cart-expire'); 876 if (expires && new Date(expires).getTime() < new Date().getTime() ) 877 return null; 878 879 val = localStorage.getItem(name); 880 if (val) 881 return decodeURIComponent(val); 882 return val; 883 } 884 if (document.cookie && document.cookie != '') { 885 var cookies = document.cookie.split(';'); 886 for (var i=0, max=cookies.length; i < max; i++) { 887 var cookie = $.trim(cookies[i]); 888 if (cookie.substring(0, name.length + 1) == (name + '=')) 889 //return cookie.substring(name.length + 1); 890 return decodeURIComponent(cookie.substring(name.length + 1)); 891 } 892 } 893 return null; 894 }, 895 896 897 guid: function() { 898 var result=''; 899 for(var i=0; i<32; i++) 900 result += Math.floor(Math.random()*16).toString(16).toUpperCase(); 901 return result 902 }, 903 param: function(a) { 904 var s = []; 905 jQuery.each( a, function(){ 906 s.push(this.name + '=' + this.value); 907 }); 908 return s.join("&"); 909 } 910 911}; 912 913Currency.currId = currency_format; 914 915var paysnap = {}, SC = paysnap; 916 917$.extend(paysnap, { 918 919 timeouts: { 920 cartUpdate: 10000, 921 search: 10000 922 }, 923
924 slideOutWidth: 0, 925 isOpen: false, 926 $slideoutPanel: null, 927 928 initialize: function() { 929 // see if we have a cid session cookie; otherwise create one 930 var cid = Util.getCookie('cid'); 931 if (!cid) { 932 cid = Util.guid(); 933 Util.setCookie('cid', cid); 934 Util.debug('cid='+cid); 935 } 936 this.cid = cid; 937 this.buildDOM(); 938 this.bindSellerForms(); 939 940 941 $("a.paysnap-show-details").click(function(e) { 942 // Get modal content via template 943 var target = $(this).attr('href'); 944 var title = $(this).attr('title'); 945 var $target = $(target); 946 947 var styles = $target.attr('style'); 948 var w = (/width\s*\:\s*(\d+px)/.exec(styles) || [])[1]; 949 var h = (/height\s*\:\s*(\d+px)/.exec(styles) || [])[1]; 950 951 // malsup-09-17 952 var winH = $(window).height(); 953 var winW = $(window).width(); 954 955 var message = $target.html(); 956 var msg = $.paysnapRenderTemplate(title, message); 957 var bgcolor = $target.data('bgcolor'); // my 10-16-2013 10:32:12 am 958 var color = $target.data('color'); // my 10-16-2013 10:32:17 959 var fullscreen = $target.data('fullscreen'); 960 var css = {}; 961 962 if ( !fullscreen && h >= winH ) { 963 css.height = '100%'; 964 css.marginTop = css.marginBottom = 0; 965 } 966 if ( !fullscreen && w >= winW ) { 967 css.width = '100%'; 968 css.marginLeft = css.marginRight = 0; 969 } 970 971 if ( fullscreen || mobile ) { 972 css.width = '100%'; 973 css.height = '100%'; 974 css.margin = 0; 975 css.left = css.top = 0; 976 } 977 else { 978 979 if ( w ) { 980 w = Math.min( parseInt(w, 10), winW ); 981 css.width = w + 'px'; 982 // css.maxWidth = w + 'px'; 983 css.left = Math.max( ((winW - w) / 2), 0) +'px'; 984 css.marginLeft = 0; 985 } 986 if ( h ) { 987 h = Math.min( parseInt(h, 10), winH ); 988 css.height = h + 'px'; 989 css.maxHeight = h + 'px'; 990 css.top = Math.max( (( winH - h) / 2) - 20, 0) +'px'; 991 css.marginTop = 0; 992 } 993 } 994 $.blockUIPaysnap({ message : msg, css: css }); 995 $('body').css('overflow-y', 'hidden'); 996 $('#block-button', '.paysnap-modal').click($.unblockUI); 997 998 setTimeout(function() { 999 // height corrections 1000 var wrap = $('#ps-modal-wrap-details'); 1001 var body = $('#ps-modal-body-details'); 1002 var head = $('#ps-modal-heading-details'); 1003 var wrapOH = wrap.outerHeight(); 1004 var wrapH = wrap.height(); 1005 var headH = head.outerHeight(); 1006 var bodyH = body.height(); 1007 var bodyOH = body.outerHeight(); 1008 var delta; 1009 1010 // body.css('maxHeight', wrapOH - headH ); 1011 delta = wrapH - headH - bodyOH - 1; 1012 1013 if ( delta > 0 ) { 1014 body.height('+='+delta); 1015 } 1016 else if ( delta < 0 ) { 1017 body.height( bodyH + delta ); 1018 } 1019 1020 // set new colors 1021 if(bgcolor && color){ 1022 $('#ps-modal-heading-details').css('background-color', bgcolor).css('color', color); 1023 $('#paysnap-close-details').css('color', color); 1024 $('#ps-modal-body-details').css('background-color', bgcolor); 1025 } 1026 1027 $('#paysnap-close-details').on("click", function(){ 1028 $.unblockUI(); 1029 $('body').css('overflow-y', 'auto'); 1030 }); 1031 1032 setTimeout(function() { 1033 body.scrollTop(0); 1034 },10); 1035 1036 }, 15); 1037 1038 return false; 1039 }); 1040 1041 try { 1042 Cart.initialize(true, this); 1043 } 1044 catch(e) { 1045 Util.debug('error initializing cart: ' + e); 1046 } 1047 1048 // $('#paysnap-container').hide().fadeIn(); 1049 }, 1050 1051 1052 $cartTab: null, 1053 $checkoutTab: null, 1054 $searchTab: null, 1055 checkoutTemplates: [], 1056 1057 addOptVal: function(hash, key, name, value) { 1058 var o = hash[key]; 1059 if (!o) { 1060 o = hash[key] = { arr: [] }; 1061 if (name) 1062 o.name = name; 1063 } 1064 if (value) 1065 o.arr.push(value); 1066 }, 1067 1068 submitToPaypal: function() { 1069 1070 // build new hidden form 1071 // iterate products and add inputs to form 1072 // iterate "paypalData" and add to form 1073 // submit form 1074
1075 var actionUrl = paypal_url; 1076 1077 if(use_sandbox == 'true') 1078 actionUrl = paypal_sandbox_url; 1079 1080 1081 var f = '<form action="'+actionUrl+'" method="POST">'; 1082 f += '<input type="hidden" name="cmd" value="_cart" />'; 1083 f += '<input type="hidden" name="upload" value="1" />'; 1084 $('#paysnap-cart tbody tr').each(function(itemIndex,o) { 1085 itemIndex = itemIndex + 1; // 1 based 1086 var optionIndex = 0; 1087 var $this = $(this), data = $this.data('paysnap'); 1088 var s = data.s; 1089 s = s.replace(/&thumb.*/,''); // drop extra data used by script 1090 var arr = s.split('&'); 1091 var optHash = {}; 1092 $.each(arr, function() { 1093 var param = this.split('='); 1094 var n = param[0], v = $.trim(param[1]); 1095 1096 if (n == 'cid') return; // dump cid per mike (10/06) 1097 if (n == 'base_price') return; // dump base_price 1098 1099 v = v.replace(/\+/g, ' '); 1100 v = decodeURIComponent(v); 1101 1102 if (v && /^(on|os)\d+/.test(n)) { 1103 if (/^on\d+/.test(n)) { // on - only add it if there is a cooresponding os 1104 var os = n.replace("on","os"); 1105 if (s.indexOf(os) > -1) 1106 SC.addOptVal(optHash, n, v, null); 1107 } 1108 else // os - add it 1109 SC.addOptVal(optHash, n.replace('os','on'), null, v); 1110 } 1111 else if (v) { 1112 n = n+'_'+itemIndex; 1113 f += '<input type="hidden" name="'+n+'" value="'+v+'" />'; 1114 } 1115 }); 1116 1117 var optionIndex = 0; 1118 for (var p in optHash) { 1119 var o = optHash[p], os = ''; 1120 if (!o.name || o.arr.length == 0) 1121 continue; 1122 for (var i=0; i < o.arr.length; i++) { 1123 if (os.length > 0) 1124 os += ', '; 1125 os += o.arr[i]; 1126 } 1127 f += '<input type="hidden" name="on'+optionIndex+'_'+itemIndex+'" value="'+o.name+'">'; 1128 f += '<input type="hidden" name="os'+optionIndex+'_'+itemIndex+'" value="'+os+'" />'; 1129 optionIndex++; 1130 } 1131 1132 }); 1133 1134 // add global paypal data 1135 for (var p in paypalData) { 1136 if (!paypalData.hasOwnProperty(p)) 1137 continue; 1138 var v = paypalData[p]; 1139 if (!v) 1140 continue; 1141 if (p == 'cancel_return' || p == 'return_url' || p == 'return' || p == 'notify_url') 1142 v = $('<a href="'+ v +'">')[$.fn.prop ? 'prop' : 'attr']('href'); 1143 f += '<input type="hidden" name="'+p+'" value="'+v+'" />'; 1144 } 1145 f += '</form>'; 1146 var $f = $(f); 1147 1148 if ( empty_cart_at_checkout ) { 1149 Cart.emptyCart(); 1150 } 1151 1152 //alert('this is what is going to paypal:\n\n' + $f.serialize()); 1153 $f.appendTo('body').submit(); 1154 1155 }, 1156 1157 buildDOM: function() { 1158 1159 // 1160 // build the paysnap DOM 1161 // 1162 1163 1164// ! TAB TEMPLATE 1165 1166 // Add PayPal logo if needed 1167 checkout_button_string = checkout_button_string.replace('#paypal#', '<i class="ps-icon-paypal-logo"></i>'); 1168 1169 var tabsTemplate = '<div id="paysnap-container" style="display:none;"><div id="ps-modal-wrap" class="paysnap"><div id=ps-stretch>' 1170 + ' <div id="paysnap-progress-bar"><div><i class="ps-icon-refresh ps-icon-spin ps-icon-2x"></i></div></div>' 1171 + ' <div id="ps-modal-heading">'+cart_title+'</div>' 1172 + ' <div id="paysnap-close"><i class="ps-icon-remove"></i></div>' 1173 + ' <div id="ps-modal-body">' 1174 + ' <div id="paysnap-contents">' 1175 + ' <div class="paysnap-content"></div>' 1176 + ' </div>' 1177 + ' <div class="paysnap-cart-total"></div>' 1178 + ' <div class="paysnap-cart-checkout"><button class="btn-paysnap btn-default btn-lg btn-block paysnap-co-btn">'+checkout_button_string+'</button></span></div>' 1179 + ' </div><!--body-->' 1180 + '</div></div></div>'; 1181 1182// ! CART TEMPLATE 1183 var cartTemplate = 1184 '<form id="paysnap-cart" method="GET" action="#" target="paysnap-checkout-src">' 1185 + ' <div id="paysnap-cart-contents">' 1186 + '<table>' 1187 + ' <tbody></tbody>' 1188 + ' <tfoot></tfoot></table></div>' 1189 + '</form>' 1190 + '<div id="paysnap-cart-empty">'+empty_cart+'</div>'; 1191 1192 1193 1194 SC.$slideoutPanel = $(tabsTemplate).appendTo('body').css('zIndex',150000); 1195 1196 SC.$cartTab = $('#paysnap-contents div.paysnap-content:eq(0)'); 1197 SC.$cartTab.append(cartTemplate); 1198 SC.$checkoutTab = $('div.paysnap-content'); 1199 1200 $('#paysnap-container').mousedown(function(e) { 1201 var targ = $(e.target); 1202 if ( targ.is('#paysnap-close,paysnap-co-btn,.paysnap-qty,paysnap-delete') ) 1203 return true; 1204 return false;
1205 }); 1206 1207 $('#paysnap-cart').submit(function(e) { 1208 e.preventDefault(); 1209 var data = $(this).serialize(); 1210 data = Util.addParam(data, 'cid', SC.cid); 1211 $.event.trigger('yabdab-cart-item-update', [data]); 1212 return false; 1213 }); 1214 1215 1216 // MY - block and spin on checkout link click 1217 $('.paysnap-co-btn').click(function() { 1218 // ticket#89 - do not allow cart with zero total to be submitted 1219 var cost = Cart.calcCartTotal(); 1220 if (cost <= 0) { 1221 var msg = '<div class="paysnap-sheet">' + 1222 '' + checkout_warning + '' + 1223 '<div><button class="paysnap-close-sheet">'+ ok_string +'</button></div></div>'; 1224 var $block = $('#paysnap-contents').blockWithSheet(msg, function(e) { 1225 e.preventDefault(); 1226 $block.unblock(); 1227 return false; 1228 }); 1229 return; 1230 } 1231 1232 SC.$checkoutTab.blockAndSpin(); 1233 setTimeout(SC.submitToPaypal, 500); 1234 return false; 1235 }); 1236 1237 1238 // close cart drawer button 1239 $('#paysnap-close').click(function() { 1240 SC.showTabs(SC.isOpen ? 0 : 1); 1241 return false; 1242 }); 1243 1244 // view cart drawer button 1245 $('.paysnap-viewcart').click(function() { 1246 Cart.updateTotal(); 1247 SC.showTabs(SC.isOpen ? 0 : 1); 1248 return false; 1249 }); 1250 1251 // SC.$slideoutPanel.show(); 1252 }, 1253 1254 bindSellerForms: function() { 1255 // product forms 1256 $('.paysnap-addtocart').click(function(e) { 1257 e.preventDefault(); 1258 var $dl = $(this).closest('div.paysnap-item'); // changed from li to div.paysnap-item 1259 1260 // 09-19-13 malsup: validate amount is number 1261 var amount = $dl.find('input.item_price').val(); 1262 if ( amount === '' || isNaN( amount )) { 1263 var msg = $.paysnapRenderTemplate('Invalid Amount', 'The amount must be a valid number.'); 1264 $.blockUIPaysnap({ message : msg, css: { top: '20%'} }); 1265 $('#block-button', '.paysnap-modal').click($.unblockUI); 1266 } 1267 1268 var data = $.param($dl.find(':input').filter(function() { 1269 return ! $(this).is('[name^=on]') && ! $(this).is('[name^=os]'); 1270 }).serializeArray()); 1271 $dl.find('div.paysnap-option').each(function(i) { 1272 var optData = $(this).find(':input').serialize(); 1273 if (! /os=/.test(optData)) 1274 return; // discard options with no selections 1275 optData = optData.replace(/on=/g, 'on' + i + '=').replace(/os=/g, 'os' + i + '='); 1276 optData = optData.replace(/\%7C\%7C[^\&\|]*/g, ''); // discard double pipe and option amounts 1277 if (data && optData) 1278 data += ('&' + optData); 1279 else if (optData) 1280 data = optData; 1281 }); 1282 var details = ''; 1283 $dl.find(':input[name^=os]:visible').each(function() { 1284 var $this = $(this); 1285 if (!this.checked && !this.selected) { 1286 // is it a select? (also, ticket#91, look for text inputs too) 1287 if (($this.find('option:selected').length == 0) && (this.type != 'text')) 1288 return; 1289 } 1290 var vn, v = $this.val(); 1291 if (v) { 1292 vn = v.split('||')[0] || ''; 1293 if (vn) { 1294 if (details.length > 0) 1295 details += ', '; 1296 details += vn; 1297 } 1298 } 1299 }); 1300 data += ('&cid=' + SC.cid); 1301 1302 if (false !== Cart.addItem(true, data, details)) 1303 SC.showTabs(1); 1304 return false; 1305 }); 1306 1307 // bind product change event (by MikeY) 1308 $('.pp-amt').bind('change blur', function() { 1309 var $dl = $(this).closest('div.paysnap-item'); 1310 var p = (this.name || ''); // name is 'os' on all products 1311 var start = parseFloat($dl.find(':input[name^=base_price]').val()); 1312 var add = parseFloat(0.00); 1313 var amt = parseFloat(0.00); 1314 if ( isNaN( start ) ) 1315 start = 0; 1316 1317 // loop through all amt triggers 1318 //$('#paysnap-p-'+p+' .pp-amt').each(function (i) { 1319 $dl.find(':input[name^=os]').each(function(i) { 1320 var $this = $(this); 1321 var name = this.name || ''; 1322 var va, vn, v = $this.val(); 1323 var temp = []; 1324 if(v) { 1325 temp = v.split("||"); 1326 vn = temp[0]; 1327 va = temp[1] || v; // detail amount 1328 } 1329
1330 if(this.type == "select-one"){ 1331 amt = parseFloat(va);// get new per item amount 1332 } 1333 else if(this.type =="radio" && this.checked){ // radio option 1334 amt = parseFloat(va);// get new per item amount 1335 } 1336 else if(this.type =="checkbox" && this.checked){ // checkbox option 1337 amt = parseFloat(va);// get new per item amount 1338 } 1339 else if(this.type =="text"){ 1340 //amt = parseFloat(v); 1341 //if (isNaN(amt)) 1342 amt = 0; // text option never effects price 1343 } 1344 1345 if (isNaN(amt)) { 1346 Util.debug('NaN amount for input: ' + vn || name); 1347 return; 1348 } 1349 1350 add = amt + add; 1351 amt=0; // zero it out to start next loop 1352 });//each 1353 1354 // Ticket#88 - don't allow negative product values 1355 var tempTotal = start + add; 1356 if (tempTotal < 0) 1357 tempTotal = 0; 1358 1359 var newtotal = (tempTotal).toFixed(2); 1360 var newFormattedTotal = Currency.format(tempTotal); 1361 1362 $dl.find(':input[name^=amount]').val(newtotal);// change form input value for amount 1363 $dl.find('.paysnap-amount').html(newFormattedTotal); // so we can see new amount 1364 1365 }); // change 1366 1367 // function to get psuedo selectedIndex from radio buttons and checkboxes. 1368 function getCheckedValue(n,v) { 1369 var index = 0 ; 1370 $('input[name='+n+']').each(function (i) { 1371 if (this.value == v) 1372 index = i; 1373 }); 1374 return index; 1375 } 1376 }, 1377 1378 showTabs: function(show) { 1379 var footer = '<div class="ps-overlay-footer"><span>' + footer_text + '</span></div>'; 1380 1381 if ( mobile ) 1382 $('body').addClass('ps-mobile'); 1383 1384 $[show ? 'blockUIPaysnap' : 'unblockUI']({ message: footer, bindEvents: 0 }); 1385 1386 if ( show ) { 1387 SC.$slideoutPanel.fadeIn(); 1388 SC.isOpen = true; 1389 if ( mobile ) 1390 setTimeout(function() { 1391 SC.resizeCartForMobile(); 1392 }, 100); 1393 } 1394 else { 1395 SC.$slideoutPanel.fadeOut(); 1396 SC.isOpen = false; 1397 if ( mobile ) 1398 $('#paysnap-contents').height( 'auto' ); 1399 1400 } 1401 }, 1402 1403 resizeCartForMobile: function() { 1404 var h1 = $('#ps-modal-wrap').height(); 1405 var h2 = $('#ps-stretch').height(); 1406 $('#paysnap-contents').height( h1 - h2 ); 1407 } 1408 1409}); 1410 1411 1412 1413/////////////////////////////////// 1414// 1415// Cart definition 1416// 1417/////////////////////////////////// 1418 1419var Cart = { 1420 1421 TOKEN: '{YDPS}', 1422 1423 deleteSheet: '', // see "initialize" fn below 1424 1425 autoUpdate: true, 1426 stringFactory: null, 1427 /* 1428 getString: function(key) { 1429 return this.stringFactory.getString(key); 1430 }, 1431*/ 1432 1433 initialize: function(autoUpdate, stringFactory) { 1434 this.stringFactory = stringFactory; 1435 this.autoUpdate = autoUpdate; 1436 this.loadFromCookie(); 1437 1438 this.deleteSheet = '<div id="paysnap-delete-sheet" class="paysnap-sheet">' 1439 + ''+ delete_confirm +'' 1440 + '<div>' 1441 + '<button class="btn-paysnap btn-danger paysnap-close-sheet"><i class="ps-icon-remove"></i> '+ cancel_string +'</button>' 1442 + ' <button id="paysnap-del-yes" class="btn-paysnap btn-success paysnap-close-sheet"><i class="ps-icon-ok"></i> '+ ok_string +'</button> ' 1443 + '</div></div>'; 1444 }, 1445 1446 updateTotal: function() { 1447 if (!Cart.autoUpdate) { 1448 // read cart grandtotal from cookie 1449 var gt = Util.getCookie('total'); 1450 if (gt) { 1451 gt = parseFloat(gt.replace(',','')); 1452 $('#paysnap-container .paysnap-cart-total').html(Currency.format(gt)); 1453 } 1454 return; 1455 } 1456 1457 var cost = Cart.calcCartTotal(); 1458 $('#paysnap-container .paysnap-cart-total').html(Currency.format(cost)); 1459 }, 1460 1461 calcCartTotal: function() { 1462 var qty = 0, cost = 0; 1463 $('#paysnap-cart tbody tr').each(function(i,o) { 1464 var $this = $(this), data = $this.data('paysnap'); 1465 var q = parseInt(data.qty, 10); 1466 var c = parseFloat(data.cost.replace(',','')); 1467 qty += q; 1468 cost += parseFloat(q*c); 1469 }); 1470 return cost; 1471 }, 1472 1473 updateCookie: function() { 1474 var s = ''; 1475 $('#paysnap-cart tbody tr').each(function(i,o) { 1476 var $this = $(this); 1477 var data = $this.data('paysnap'); 1478 if (s.length) 1479 s += Cart.TOKEN; 1480 s += data.s; 1481 if (!/details=/.test(data.s)) 1482 s += '&details=' + data.details; 1483 });
1484 Util.setCookie('cart',s); 1485 }, 1486 1487 addItem: function(updateCookie, s, details) { 1488 var item 1489 try { 1490 item = s.match(/(item_name+=[^&]+)/)[1].split('=')[1]; 1491 } 1492 catch(x) { 1493 item = 'Untitled Product'; 1494 } 1495 1496 item = decodeURIComponent(item); 1497 1498 var pid = item; 1499 details = details || (s.match(/(details=[^&]+)/)||['','='])[1].split('=')[1]; 1500 1501 var cost, qty; 1502 try { 1503 cost = s.match(/(amount+=[^&]+)/)[1].split('=')[1]; 1504 } 1505 catch(x) { 1506 cost = '0'; 1507 } 1508 if (isNaN(parseFloat(cost))) { 1509 Util.debug('invalid cost: ' + cost); 1510 return false; 1511 } 1512 1513 try { 1514 qty = s.match(/(quantity+=[^&]+)/)[1].split('=')[1]; 1515 } 1516 catch(x) { 1517 qty = 1; 1518 s = s + '&quantity=1'; 1519 } 1520 1521 if (isNaN(parseInt(qty, 10))) { 1522 Util.debug('invalid qty, setting to 1'); 1523 qty = 1; 1524 } 1525 var total = parseFloat(cost) * parseFloat(qty); 1526 item = item.replace(/\+/g, '%20'); 1527 item = decodeURIComponent(item); 1528 1529 var key = item + '%%' + details + '%%' + cost; 1530 1531 // see if this product/options combo already exists in cart - if so, just bump the qty 1532 var bail = false; 1533 $('#paysnap-cart table tbody tr').each(function() { 1534 var $this = $(this); 1535 var data = $this.data('paysnap'); 1536 if (data.key != key) 1537 return; // keep looping 1538 data.qty = parseInt(data.qty, 10) + parseInt(qty, 10); 1539 data.s = data.s.replace(/quantity+=\d+/,'quantity='+data.qty); //[yd] 1540 var cost = data.s.match(/(amount+=[^&]+)/)[1].split('=')[1]; //[yd] 1541 var total = parseFloat(cost) * parseFloat(data.qty); 1542 $this.find('input.paysnap-qty').val(data.qty); 1543 $this.find('.paysnap-row-total').html(data.qty+' x ' + Currency.format(parseFloat(cost.replace(',',''))) 1544 + ' = ' + Currency.format(parseFloat(total))); 1545 1546 Cart.updateCookie(); 1547 Cart.updateTotal(); 1548 bail = true; 1549 }); 1550 if (bail) 1551 return; 1552 1553 // add item to cart 1554 var row = '<tr>' 1555 + '<td><input class="paysnap-qty paysnap-number form-control input-sm" style="width:40" type="number" value="'+qty+'" name="qty" size="4" /></td>' 1556 + '<td class="paysnap-delete"><i class="ps-icon-remove-circle ps-icon-2x"></i>' 1557 + '<input type="hidden" name="item" value="'+item+'" /><input type="hidden" name="pid" value="'+pid+'" />' 1558 + '</td><td>' 1559 + '<input type="hidden" name="cost" value="'+cost+'" />' 1560 + '<span class="paysnap-product-name">' + item + '</span>'; 1561 if (details) 1562 row += '<span class="paysnap-product-details">' + details + '</span>'; 1563 row += '<span class="paysnap-product-details paysnap-row-total">'+qty+' x ' + Currency.format(parseFloat(cost.replace(',',''))) 1564 + ' = ' + Currency.format(parseFloat(total)) + '</span>'; 1565 row += '</td>'; 1566 1567 var $row = $(row).appendTo('#paysnap-cart tbody'); 1568 1569 $('.paysnap-delete',$row).click(function() { 1570 var $block = $('#paysnap-contents').blockWithSheet(Cart.deleteSheet, function(e) { 1571 e.preventDefault(); 1572 $block.unblock(); 1573 if (this.id == 'paysnap-del-yes') { 1574 $.event.trigger('yabdab-cart-item-delete', ['pid='+pid]); 1575 Cart.tiger(); 1576 if (!Cart.autoUpdate) 1577 return false; 1578 1579 $row.remove(); 1580 1581 Cart.updateCookie(); 1582 1583 if ($('#paysnap-cart tbody tr').size() === 0) { 1584 $('#paysnap-cart').hide(); 1585 $('#paysnap-cart-empty').show(); 1586 Cart.updateTotal(); 1587 } 1588 else { 1589 Cart.updateTotal(); 1590 } 1591 Cart.tiger(); 1592 } 1593 return false; 1594 }); 1595 }); 1596 1597 $('.paysnap-qty',$row).bind('keydown', function(e) { 1598 var w = e.which; 1599 if ((w >= 48 || w <= 57) || (w >= 96 && w <= 105)) 1600 return true; 1601 return false; 1602 }).bind('focus', function() { 1603 this.select(); 1604 }).bind('change', function(e) { 1605 var $this = $(this); 1606 var $currRow = $this.parents('tr:first'); 1607 var data = $currRow.data('paysnap'); 1608 1609 var q = parseInt($this.val(), 10); 1610 if (isNaN(q)) { 1611 e.preventDefault(); 1612 var prevQty = (data.s.match(/quantity=(\d+)/)||[])[1]; 1613 setTimeout(function(){ 1614 $this.val(prevQty).focus() 1615 },20); 1616 return; 1617 } 1618 if (q === 0) { 1619 $('.paysnap-delete',$row).triggerHandler('click'); 1620 return; 1621 } 1622 $(this).val(q); 1623 1624 var cartContents = $('#paysnap-cart').serialize(); 1625 $.event.trigger('yabdab-cart-item-update', [cartContents]); 1626 if (!Cart.autoUpdate) 1627 return; 1628 1629 // update meta 1630 1631 data.s = data.s.replace(/quantity+=\d+/,'quantity='+q); 1632 1633 data.qty = q; 1634 var rowTotal = parseFloat(q * data.cost.replace(',','')); 1635 1636 var details2 = q +' x ' + Currency.format(parseFloat(data.cost.replace(',',''))) 1637 + ' = ' + Currency.format(rowTotal); 1638 1639 $('.paysnap-row-total',$currRow).html(details2); 1640 Cart.updateCookie(); 1641 Cart.updateTotal(); 1642 }); 1643
1644 $row.data('paysnap', { s: s, qty: qty, cost: cost, details: details, key: key }); 1645 1646 setTimeout(function() { 1647 $('#paysnap-cart-empty').hide(); 1648 $('#paysnap-cart').show(); 1649 }, 200); 1650 1651 if (updateCookie) 1652 Cart.updateCookie(); 1653 Cart.updateTotal(); 1654 this.tiger(); 1655 }, 1656 1657 tiger: function() { 1658 if (this.noTiger) return; 1659 // tiger stripe 1660 // $('#paysnap-cart tbody tr').css('backgroundColor','#fff').filter(':even').css('backgroundColor', '#eaf3ff'); 1661 // Use addClass instead - MY 040609 1662 $('#paysnap-cart tbody tr').removeClass().addClass('paysnap-row-one').filter(':even').addClass('paysnap-row-two'); 1663 }, 1664 1665 setCookie: function(cart, grandtotal) { 1666 Util.setCookie('cart', cart); 1667 Util.setCookie('total', grandtotal); 1668 }, 1669 1670 emptyCart: function() { 1671 // $('#paysnap-cart table tbody tr').remove(); 1672 Util.setCookie('cart', ''); 1673 Util.setCookie('total', ''); 1674 }, 1675 1676 loadFromCookie: function() { 1677 var c = Util.getCookie('cart'); 1678 if (!$.trim(c)) { 1679 $('#paysnap-cart').hide(); 1680 $('#paysnap-cart-empty').show(); 1681 return; 1682 } 1683 1684 $('#paysnap-cart table tbody tr').remove(); 1685 1686 this.noTiger = true; // raise fence 1687 1688 //c = c.replace(/lang=[^&]*/,''); 1689 c = c.replace(/callback=jsonp[0-9]*/,''); 1690 c = c.replace(/_=[0-9]*/,''); 1691 c = c.replace(/pid=/g,Cart.TOKEN+'pid='); 1692 c = c.replace(/^&*/,''); 1693 var re = new RegExp('^'+Cart.TOKEN); 1694 c = c.replace(re,''); 1695 1696 var a = c.split(Cart.TOKEN); 1697 for (var i=0; i < a.length; i++) { 1698 var s = a[i]; 1699 s = s.replace(/&+/,'&'); 1700 s = s.replace(/^&/,''); 1701 s = s.replace(/&$/,''); 1702 if ($.trim(s) == '') 1703 continue; 1704 Cart.addItem(false,s); 1705 } 1706 1707 if ($('#paysnap-cart tbody tr').length == 0) { 1708 $('#paysnap-cart').hide(); 1709 $('#paysnap-cart-empty').show(); 1710 } 1711 1712 this.noTiger = false; // lower fence 1713 this.updateTotal(); 1714 this.tiger(); 1715 } 1716}; 1717 1718 1719$(window).load(function(){ 1720 1721 if(debug == 'True') { 1722 // load debug window 1723 var debugInfo = $("#"+stack_id+" .ydps-debug").html(); 1724 $.blockUIPaysnap({ message : debugInfo }); 1725 //$('#block-button', '.blockMsg').click($.unblockUI); 1726 } 1727 1728 // Make sure everything is entered.... 1729 1730 if(!business) 1731 $('#'+stack_id).before('<p class="ydps-error"><b>PayPal Email</b> is Required for PaySnap to Function Properly.</p>'); 1732 1733 if(!return_url) 1734 $('#'+stack_id).before('<p class="ydps-error"><b>Return URL</b> is Required for PaySnap to Function Properly.</p>'); 1735 1736 if(!cancel_url) 1737 $('#'+stack_id).before('<p class="ydps-error"><b>Cancel URL</b> is Required for PaySnap to Function Properly.</p>'); 1738 1739 1740}); 1741 1742 1743}; // paysnap fn 1744 1745paysnap($); // call it 1746//----------------------------------------------------------// 1747// + PAYSNAP v.2.0.3 (END) 1748//----------------------------------------------------------// 1749 1750return stack;})(stacks.stacks_in_149); 1751stacks.stacks_in_237 = {}; 1752stacks.stacks_in_237 = (function(stack) { 1753var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 1754 1755}); 1756 1757return stack;})(stacks.stacks_in_237); 1758stacks.stacks_in_250 = {}; 1759stacks.stacks_in_250 = (function(stack) { 1760var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 1761 1762}); 1763 1764return stack;})(stacks.stacks_in_250); 1765stacks.stacks_in_204 = {}; 1766stacks.stacks_in_204 = (function(stack) { 1767var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 1768 1769}); 1770 1771return stack;})(stacks.stacks_in_204); 1772stacks.stacks_in_205 = {}; 1773stacks.stacks_in_205 = (function(stack) { 1774var jQuery = stacks.jQuery;var $ = jQuery;$(document).ready(function(){ 1775 1776}); 1777 1778return stack;})(stacks.stacks_in_205);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.