eventMailer.js 7.03 KB
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;
    console.log('eventMailer.start_quantity = '+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);


};