var eventMailer={ url:"http://seo.dev.artwebua.com.ua/event_mailer?", key:null, item_data:null, event:null, email:null, name:null, customers_id:null, response:null, event_id:null, params:null, expires:30, event_type:'online_event', time: 0, timer_start: false, active_item_id: false, start_quantity:null, old_quantity:null, error: false }; eventMailer.doCallOtherDomain=function(){ var userEmail = eventMailer.getCookie("userEmail"); console.log(userEmail+' && '+eventMailer.email+' && '+eventMailer.error); if(!userEmail && eventMailer.email && !eventMailer.error){ console.log("send"); document.cookie = eventMailer.setCookie("userEmail",this.email,{expires:eventMailer.expires}); var XHR=window.XDomainRequest||window.XMLHttpRequest; var xhr=new XHR(); var params = eventMailer.getParams().params; xhr.open('POST',eventMailer.url,true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onload=function(){eventMailer.response=null;}; xhr.onerror=function(){eventMailer.response="Error";}; xhr.send(params); } else { console.log(eventMailer.error); console.log("not send"); } }; eventMailer.callOtherDomain=function(){ try{eventMailer.doCallOtherDomain()} catch(e){console.log("В этом браузере данная фича не поддерживается."); } return this; }; eventMailer.getUrl=function(){ for(p in eventMailer){ if(eventMailer[p]!==null&&typeof(eventMailer[p])!=='function'&&p!=='url'){ eventMailer.url=eventMailer.getCorrectUrl()+p+'='+eventMailer[p]; } } return this; }; eventMailer.getCorrectUrl=function(){ if(this.url.indexOf('?')+1){ return this.url+'&'; }else{ return this.url+'?'; } }; eventMailer.getParams=function(){ eventMailer.params = null; for(p in eventMailer){ if(eventMailer[p]!==null&&typeof(eventMailer[p])!=='function'&&p!=='url'){ eventMailer.params=eventMailer.getCorrectParams()+p+'='+eventMailer[p]; } } return this; }; eventMailer.getCorrectParams=function(){ if(this.params !== null){ return this.params+'&'; } else { return ''; } }; eventMailer.getCookie = function(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; }; eventMailer.setCookie = function(name, value, options) { options = options || {}; var expires = options.expires; if (typeof expires == "number" && expires) { var d = new Date(); d.setTime(d.getTime() + expires * 1000); expires = options.expires = d; } if (expires && expires.toUTCString) { options.expires = expires.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for (var propName in options) { updatedCookie += "; " + propName; var propValue = options[propName]; if (propValue !== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie; }; eventMailer.deleteCookie = function(name) { eventMailer.setCookie(name, "", { expires: -1 }) }; eventMailer.setStartQuantity = function(){ if(eventMailer.action == 'order_add' ){ eventMailer.start_quantity = +eventMailer.quantity-1; } else if(eventMailer.action == 'order_delete'){ eventMailer.start_quantity = +eventMailer.quantity+1; }else if(eventMailer.action == 'order_change'){ eventMailer.start_quantity = +eventMailer.quantity; } }; eventMailer.getFinalQuantity = function(){ eventMailer.error = false; if(eventMailer.start_quantity){ if(eventMailer.start_quantity == eventMailer.old_quantity){ eventMailer.error = true; } else { eventMailer.action = 'order_add'; eventMailer.quantity = eventMailer.old_quantity; } } }; eventMailer.timer = function() { eventMailer.time -= 1000; console.log(eventMailer.time); if(!eventMailer.time){ console.log('here'); clearInterval(eventMailer.interval); /*send data*/ console.log("data send"); eventMailer.getFinalQuantity(); eventMailer.doCallOtherDomain(); console.log("after send "+eventMailer.quantity); eventMailer.timer_start = false; eventMailer.active_item_id=false; eventMailer.start_quantity=null; } }; eventMailer.sendWithTimeOut = function(){ if(eventMailer.active_item_id == false){ eventMailer.active_item_id = eventMailer.item_id; eventMailer.setStartQuantity(); } if(eventMailer.active_item_id != eventMailer.item_id ){ /*send data*/ console.log("data send"); var new_quantity = eventMailer.quantity; var new_item_id = eventMailer.item_id; var old_action = eventMailer.action; console.log(old_action); eventMailer.item_id = eventMailer.active_item_id; eventMailer.getFinalQuantity(); eventMailer.doCallOtherDomain(); console.log( eventMailer.action ); eventMailer.quantity = new_quantity; eventMailer.action = old_action; eventMailer.setStartQuantity(); eventMailer.active_item_id = new_item_id; } eventMailer.old_quantity = eventMailer.quantity; console.log(eventMailer.old_quantity); console.log(eventMailer.start_quantity); eventMailer.time = 1000; //console.log(eventMailer.time); //console.log(eventMailer.old_quantity); if(eventMailer.timer_start == false){ eventMailer.interval = setInterval(eventMailer.timer, 1000); eventMailer.timer_start = true; } }; eventMailer.deleteOneItem = function(){ eventMailer.active_item_id = false; eventMailer.doCallOtherDomain(); }; eventMailer.startChanging = function(){ if(eventMailer.active_item_id == false){ eventMailer.active_item_id = eventMailer.item_id; eventMailer.setStartQuantity(); } if(eventMailer.active_item_id != eventMailer.item_id ){ /*send data*/ console.log("data send"); var new_quantity = eventMailer.quantity; var new_item_id = eventMailer.item_id; var old_action = eventMailer.action; eventMailer.item_id = eventMailer.active_item_id; eventMailer.getFinalQuantity(); eventMailer.doCallOtherDomain(); eventMailer.action = old_action; eventMailer.quantity = new_quantity; eventMailer.setStartQuantity(); eventMailer.active_item_id = new_item_id; } eventMailer.old_quantity = eventMailer.quantity; console.log(eventMailer.old_quantity); console.log(eventMailer.start_quantity); eventMailer.time = 1000; //console.log(eventMailer.time); //console.log(eventMailer.old_quantity); };