(function($) { if (!$.TLW) { $.TLW = new Object(); }; $.TLW.FCart = function(el, options) { // To avoid scope issues, use 'base' instead of 'this' // to reference this class from internal events and functions. var base = this; // Access to jQuery and DOM versions of element base.$el = $(el); base.el = el; // Add a reverse reference to the DOM object base.$el.data("TLW.FCart", base); base.init = function(){ base.options = $.extend({},$.TLW.FCart.defaultOptions, options); base.storage = $.localStorage; base.currentUrl = $(location).attr('host'); base.makeExist(); base.setFormPostEvent(); base.setEventListener(); base.render(base.storage.get('TLWCart')); $(document).ready(function() { /*var iframeId = 'tlUpdateCart'; var iframed = $(''); /!* //document.createElement('iframe'); $(iframed).css('display','none'); $(iframed).attr('src',base.options.cartUrl); $(iframed).attr('name',iframeId);*!/ $('body').append(iframed);*/ $('.item-description h3').click(function () { var iframe = $('iframe[name="tlCartTarget"]')[0]; var iframewindow = iframe.contentWindow ? iframe.contentWindow : iframe.contentDocument.defaultView; console.log(iframewindow); iframewindow.postMessage("test", "*"); }) }); }; base.makeExist = function(){ var iframe=document.createElement('iframe'); $(iframe).css('display','none'); $(iframe).attr('name','tlCartTarget'); $(iframe).attr('src',base.options.cartUrl); $('body').append(iframe); }; base.setFormPostEvent = function(){ base.$el.on('submit', function(){ if($('iframe[name="tlCartTarget"]').length < 1){ var iframe=document.createElement('iframe'); $(iframe).css('display','none'); $(iframe).attr('src',base.options.cartUrl); $(iframe).attr('name','tlCartTarget'); $('body').append(iframe); $(this).attr('target','tlCartTarget'); }else{ $(this).attr('target','tlCartTarget'); } }); }; base.setEventListener = function(){ var memoryObj = base.storage.get('TLWCart'); var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window eventer(messageEvent,function(e) { if(typeof(e.data) === 'object' && e.data.storeId === base.options.storeId) { if(memoryObj.orderTotal != e.data.orderTotal){//!initial Load base.setStorage(e.data); if(e.data.numOfItems > memoryObj.numOfItems){ base.moveImage("to"); }else{ base.moveImage("from"); } base.render(e.data); } } },false); }; base.render = function(obj){ $.each(base.options.layouts, function(cntr1, layouts){ var layout = layouts.layout; if(layout.indexOf('{{isOrAre}}') > -1){ var isOrAre = 'is'; if(obj.numOfItems > 1){ var isOrAre = 'are'; } layout = base.replaceHtml(layout, "{{isOrAre}}", isOrAre); } if(layout.indexOf('{{sOrNo}}') > -1){ var sOrNo = ''; if(obj.numOfItems > 1){ var sOrNo = 's'; } layout = base.replaceHtml(layout, "{{sOrNo}}", sOrNo); } $.each(layouts.replace, function(cntr2, replaceItem){ var replaceHolder = '{{'+replaceItem+'}}'; if(typeof(obj[replaceItem]) === 'object' && layouts["layout"+replaceItem+"replace"] && layouts["layout"+replaceItem]){ var subMasterLayout = ''; $.each(obj[replaceItem], function(cntr3, sublayoutitems){ var sublayout = layouts["layout"+replaceItem]; $.each(layouts["layout"+replaceItem+"replace"], function(cntr4, sublayoutreplace){ var subReplaceHolder = '{{'+sublayoutreplace+'}}'; if(layouts.vartype && layouts.vartype[sublayoutreplace]){ switch(layouts.vartype[sublayoutreplace]){ case 'dollar': sublayoutitems[sublayoutreplace] = base.formatCurrency(sublayoutitems[sublayoutreplace]); break; } } sublayout = base.replaceHtml(sublayout, subReplaceHolder, sublayoutitems[sublayoutreplace]); }); subMasterLayout += sublayout; }); layout = base.replaceHtml(layout, replaceHolder, subMasterLayout); }else { if(layouts.vartype && layouts.vartype[replaceItem]){ switch(layouts.vartype[replaceItem]){ case 'dollar': obj[replaceItem] = base.formatCurrency(obj[replaceItem]); break; } } layout = base.replaceHtml(layout, replaceHolder, obj[replaceItem]); } }); if(layouts.insertLocation === 'append' && $("."+layouts.cssClass).length < 1){ $(layouts.selector).append('
'); }else if(layouts.insertLocation === 'prepend' && $("."+layouts.cssClass).length < 1){ $(layouts.selector).prepend(''); } $("."+layouts.cssClass).empty(); $("."+layouts.cssClass).append(layout); }); }; base.formatCurrency = function(num){ num = num.toString().replace(/\$|\,/g, ''); if (isNaN(num)){ num = "0"; } sign = (num == (num = Math.abs(num))); num = Math.floor(num * 100 + 0.50000000001); cents = num % 100; num = Math.floor(num / 100).toString(); if (cents < 10){ cents = "0" + cents; } for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++){ num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3)); } return (((sign) ? '' : '-') + '$' + num + '.' + cents); }; base.replaceHtml = function(html, replaceme, replacewith){ return html.replace(new RegExp(replaceme, 'g'), replacewith); //return html.split(replaceme).join(replacewith); }; base.setStorage = function(obj){ base.storage.set('TLWCart', obj); }; base.moveImage = function(direction){ var dragToElem = $(base.options.dragTo); var imgtodrag = $(base.options.dragImg); if(direction === 'to'){ var fromtop = imgtodrag.offset().top; var fromleft = imgtodrag.offset().left; var totop = dragToElem.offset().top; var toleft = dragToElem.offset().left; }else if(direction === "from"){ var fromtop = dragToElem.offset().top; var fromleft = dragToElem.offset().left; var totop = imgtodrag.height() - imgtodrag.offset().top; var toleft = imgtodrag.offset().left + (imgtodrag.width() / 2); } if (imgtodrag) { var imgclone = imgtodrag.clone() .offset({ top: fromtop, left: fromleft }) .css({ 'opacity': '0.5', 'position': 'absolute', 'height': '150px', 'width': '150px', 'z-index': '100' }) .appendTo($('body')) .animate({ 'top': totop + 10, 'left': toleft + 10, 'width': 75, 'height': 75 }, 600, 'linear'); if(direction === 'to') { setTimeout(function () { dragToElem.shake(); }, 1500); } imgclone.animate({ 'width': 0, 'height': 0 }, function () { $(this).detach() }); } } // Run initializer base.init(); }; $.TLW.FCart.defaultOptions = { cartUrl: '', storeId: '', dragTo: '.search-login', dragImg: '.item-main-image-inner .image .fancybox img', layouts:[ { selector: '.div-main', cssClass: 'tltopcart', insertLocation: 'append', replace: ["numOfItems"], layout: '