/*
CLEAFS tracker

Author: HC Designs <http://www.hcdesigns.nl>
*/
var _cl_md   = "";
var _cl_ad   = 0;
var _cl_d    = document;
var _cl_dc   = _cl_d.cookie;
var _cl_dr   = _cl_d.referrer;
var _cl_cex  = 1;   //cookie expiration duration
var _cl_dl   = _cl_d.location;
var _cl_pr   = _cl_dl.protocol;
var _cl_host = _cl_dl.hostname;
var _cl_home = _cl_pr + "//www.cleafs.com";
//var _cl_trd  = _cl_home + "/tracker";
var _cl_ecms = false;
var _cl_onr  = "";
var _cl_amt  = 0;
var _cl_em   = "";
var _cl_ecml = false;
var _cl_lem  = "";
var _cl_sp   = 0;
var _cl_dbg  = false;
var _cl_msg  = 0;

function _cltracker() {
    _cl_dbgmsg('S1');
    if(_cl_md.length>0) {
        _cl_dbgmsg('S2');
        //_clson('checktracker/m='+_cl_md);
        if(!_cl_ecms && !_cl_ecml) {
            _cl_dbgmsg('S3a');
            _cl_trt1();
        }
        else {
            _cl_dbgmsg('S3b');
            if(!_clson('checktracker/m='+_cl_md)) {
                _cl_dbgmsg('S4');
                _cl_trt2();
                _cl_trt1();
            }
        }
    }
}

function _cl_trt1() {
    if(_cl_dr) {
        //referrer is bekend
        //var _cl_re = new RegExp("http://(www\.)?([\\w\.-]+)", "i");
        //var _cl_re = new RegExp("[^.]*\.\([^:/]*\).*", "i");
        _cl_dr = _cl_getHN(_cl_dr);//_cl_re.exec(_cl_dr)[0];

        //_cl_re = new RegExp("(www\.)?([\\w\.-]+)", "i");
        _cl_host = _cl_getHN(_cl_host);//_cl_re.exec(_cl_host)[0];

        _cl_dbgmsg("_cl_dr = " + _cl_dr + " - _cl_host = " + _cl_host);

        //check if referrer is from other domain
        if(_cl_dr != _cl_host) {
            //check if referrer is valid affiliate for this merchant website, also check if merchant website is the same as the hostname
            _clson('getaffiliate/m='+_cl_md+'&h='+_cl_host+'&r='+_cl_dr);
            //_clinit wordt gecalled in de _clson hierboven via _clprcs
            _cl_msg = 1;
        }
        else if(_cl_md.length>0 && _cl_getc('_cl_ad')>0) {
            //cookie is geset, dus in var zetten
            _cl_ad = _cl_getc('_cl_ad');
            if(_cl_sp == 0) _cl_sp = _cl_getc('_cl_sp');
            //overige acties verwerken
            _clinit(false);
            _cl_msg = 2;
        }
    }
    else if(_cl_getc('_cl_ad')>0) {
        //cookie is geset, dus in var zetten
        _cl_ad = _cl_getc('_cl_ad');
        if(_cl_sp == 0) _cl_sp = _cl_getc('_cl_sp');
        //overige acties verwerken
        _clinit(false);
        _cl_msg = 3;
    }
    else if(!_cl_dr) {
        //_clson('checkredir/m='+_cl_md);
        _cl_msg = 4;
    }

    //_clson('dbg/m='+_cl_md+'&a='+_cl_ad+'&msg='+_cl_msg);
}

function _cl_trt2() {
	_cl_dbgmsg('TR2');
    var clpar;

	clpar  = _cl_ecms ? '/sale/' : '/lead/';
	clpar += _cl_md + '/';
	if (_cl_ecms) {
		clpar += _cl_onr + '/';
		clpar += _cl_amt + '/';
		clpar += _cl_em + '/';
	} else {
		clpar += _cl_lem + '/';
	}

	clpar += _cl_sp + '/';

	_cl_dbgmsg(_cl_home + clpar);

    if(clpar.length > 0) {
        var html = '<img src="'+_cl_home+clpar+'" />';

        if (document.all) {
            document.body.insertAdjacentHTML('beforeEnd', html);
        }
        else if (document.createRange) {
            var range = document.createRange();
            range.setStartAfter(document.body.lastChild);
            var docFrag = range.createContextualFragment(html);
            document.body.appendChild(docFrag);
        }
        else if (document.layers) {
            var l = new Layer(window.innerWidth);
            l.document.open();
            l.document.write(html);
            l.document.close();
            l.top = document.height;
            document.height += l.document.height;
            l.visibility = 'show';
        }
    }
}

function _cl_getHN(sourceUri){
    var uriParts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);

    return uriParts[3];
}

//ctr
function _clctr() {
    if(_cl_md.length>0 && _cl_ad>0 && _cl_dr!='') {
        //ook checken op referrer (_cl_dr), omdat een refresh niet telt als een click
        _clson('click/m='+_cl_md+'&a='+_cl_ad+'&h='+_cl_host+'&sp='+_cl_sp);
    }
}

//leads
function _clecml(em) {
    if(_cl_md.length>0) {
        //lead toevoegen, wordt later gecalled vanuit _clprcs()
        _cl_ecml  = true;
        _cl_lem   = escape(em);
    }
}

//sales
function _clecms(onr,amt,em) {
    if(_cl_md.length>0 && onr!='') {
        //sale toevoegen, wordt later gecalled vanuit _clprcs()
        _cl_ecms = true;
        _cl_onr  = escape(onr);
        _cl_amt  = amt;
        _cl_em   = escape(em);
    }
}

function _clprcs() {
    if(_cl_ad == 0 && _cl_getc('_cl_ad') > 0) {
        _cl_ad = _cl_getc('_cl_ad');
    }
    if(_cl_ad>0) {
        _cl_setc('_cl_ad',_cl_ad);
        _cl_setc('_cl_sp',_cl_sp);
        _clinit(true);
    }
}

function _clinit(ctr) {
    if(_cl_ecms) {
        _clson('sale/m='+_cl_md+'&a='+_cl_ad+'&onr='+_cl_onr+'&amt='+_cl_amt+'&em='+_cl_em+'&h='+_cl_host+'&sp='+_cl_sp);
    }

    if(_cl_ecml) {
        _clson('lead/m='+_cl_md+'&a='+_cl_ad+'&em='+_cl_lem+'&h='+_cl_host+'&sp='+_cl_sp);
    }

    if(ctr) {
        _clctr();
    }
}

function _clson(tr) {
    try {
        var sc=document.createElement('script');
        sc.type='text/javascript';
        sc.src=_cl_home + '/tracker/'+tr+'&'+Math.random(); //random is voor cache
        _cl_dbgmsg(_cl_home + '/tracker/'+tr+'&'+Math.random());
        _cl_d.getElementsByTagName('head')[0].appendChild(sc);
        return true;
    }
    catch(err) {
        _cl_dbgmsg(tr);
        return false;
    }
    return false;
}

function _cl_setc(cn,cv) {
    var cexd=new Date();
    cexd.setDate(cexd.getDate()+_cl_cex);
    _cl_d.cookie = cn+"="+escape(cv)+';expires='+cexd.toGMTString()+_cl_dc+';path=/;';
}

function _cl_getc(cn) {
    var _cl_dc = _cl_d.cookie;
    if (_cl_dc.length>0) {
        var c_start=_cl_dc.indexOf(cn+'=');
        if (c_start!=-1) {
            c_start=c_start+cn.length+1;
            var c_end=_cl_dc.indexOf(';',c_start);
            if (c_end==-1) c_end=_cl_dc.length;
            return unescape(_cl_dc.substring(c_start,c_end));
        }
    }
    return "";
}

function _cl_dbgmsg(msg) {
    if(_cl_dbg) alert("Debug message: " + msg);
}
