var __cp_params = new Array( "xp", "xm", "xr" );
var __cp_ktrack = new Array( "ktr_cpid", "ktr_mid", "ktr_crid" );
var __max_zero = "0000000000";
var __max_zero_len = 10;

var __is_send_referer = 0;
var __tracking_cookie = null;

function __getURL() {
    var url = __decodeURL(window.document.URL);
    var qs = "";
    if( typeof(__add_params) != "undefined" ) {
        qs = __pickupParams(__add_params, __add_params, 0);
    }
    if( qs != "" ) {
        url = url.split("?")[0] + "?" + qs;
    }
    else {
        if( window.location.search != "" ) {
            url = url.split("?")[0];
        }
   }
   return (url);
}
function __getReferrer() {
    var ref;
    var qs;
    if( window.document.referrer == "" || window.document.referrer == "-" ) {
        return "";
    }
    else {
        return __encodeURL(window.document.referrer);
    }
}

function __pickupParams(p, r, m) {
    var qs = window.location.search;
    var params;
    var wd;
    var i,j;
    var ret = "";

    if( qs == "" || typeof(qs) != "string" ) {
        return "";
    }
    if( qs.indexOf("?") > -1 ) {
        qs = qs.replace("?","");
    }

    if( typeof(p) != "object" || typeof(r) != "object" ) {
        return "";
    }
    if( p.length < 1 || r.length < 1 || p.length != r.length ) {
        return "";
    }

    if( qs.indexOf("&") > -1 ) {
        params = qs.split("&");
    }
    else {
        params = new Array( qs );
    }
    for(i=0; i<params.length; i++) {

        if( params[i].indexOf("=") < 0 ) {
            continue;
        }
        wd = params[i].split("=");
        if( wd.length < 2 ) {
		    continue;
		}
        for(j=0; j<p.length; j++) {
            if( wd[0] == p[j] ) {
                if( m = 1 && (wd[0] == "xp" || wd[0] == "xm" ) ) {
					var _pudlen = __max_zero_len - wd[1].length;
				    wd[1] = __max_zero.substring(0,_pudlen) + wd[1];
                }
                ret += (((ret != "") ? "&" : "") + (r[j] + "=" + wd[1]));
            }
        }
    }
    return ret;
}

function __getCampaign() {
    return __pickupParams(__cp_params, __cp_ktrack, 1)
}

function __getProtocol() {
    return location.protocol;
}

function __getAttributeItem() {
	var attrdata = "";
	if( typeof(__mobylog_attribute_item) != "object" ) {
		return "";
	}
	for(var key in __mobylog_attribute_item) {
		attrdata += ((attrdata != "") ? "&" : "") +
			(key + "=" + __encodeURL(__mobylog_attribute_item[key]));
	}
	return attrdata;
}

function __build_img_url(_url, _track) {
    var cp  = __getCampaign();
    var ref = "";
    var attr = "";
    var url = __getProtocol() + "//" + __call_domain +
              "/dot.php?ktr_site=" + __site_id +
                      "&" + _url +
                      ((cp != "")  ? ("&"+cp)  : "");

	if( __tracking_cookie ) {
		var _cval = __buildBeaconParamsFromCookie(__tracking_cookie, cp);
		if( _cval ) {
			url += "&" + _cval;
		}
	}

	if( (attr = __getAttributeItem()) != "" ) {
		url += "&" + attr;
	}

	if( !__is_send_referer ) {
		ref = __getReferrer();
		__is_send_referer = 1;
		url += ((ref != "") ? ("&ktr_httpref="+ref) : "");
	}

	if( typeof(__ip_notify) == "number" && __ip_notify == 1 ) {
		url += "&__ip=1"
	}

    return url;
}

function __encodeURL(str) {
    if( typeof(encodeURIComponent) == "function" ) {
        return encodeURIComponent(str);
    }
    else {
        return escape(str);
    }
}
function __decodeURL(str) {
    if( typeof(decodeURIComponent) == "function" ) {
        return decodeURIComponent(str);
    }
    else {
        return unescape(str);
    }
}

function __write_imgtag(url) {
    var __write_imgtag;
    var __imgobj;
    if( typeof(url) != "string" ) {
        return;
    }
    
//    __write_imgtag = "<img src=\"" + url + "\" border=0 width=1 height=1>";
//    document.write(__write_imgtag);
    __imgobj = new Image(1,1);
    __imgobj.src = url+"&lt="+(new Date).getTime();
    __imgobj.onLoad = __beacon_load;
}

function __push_beacon(_url) {
	var f = function( u ) {
	    var _bu;
	    var _u;
	    _u = "ktr_url=" + __encodeURL(u);
	    _bu = __build_img_url(_u);
	    __write_imgtag(_bu);
	};
	var _cnt = 0;

	if( typeof(__build_session) == "number" 
	    && __build_session == 1
	    && !__tracking_cookie ) {
		__requestSessionValue();
		setTimeout(
			function() {
				_cnt++;
				if( _cnt > 5 ) {
					return;
				}
				if( !__tracking_cookie ) {
					setTimeout( arguments.callee, 500 );
				}
				else {
					f(_url);
				}
			}, 200);
	}
	else {
		f(_url);
	}
}

function __beacon_load() {
    return;
}

function __getMOBYLOGTrackingCookie(n) {
	var track = null;

	switch(n) {
	case "ENGINE":
		track = __getEngineCookie();
		break;
	case "HandloaD":
		track = __getHandloaDCookie();
		break;
	}

	return track;
}

function __getEngineCookie() {
	var cookie_name;
	var val;
	var arr;
	var tracking_data = null;
	var cookie_domain = (typeof(__cookie_domain_name) == "string") ? __cookie_domain_name : "";

	if( typeof(__site_id) == "undefined" ) {
		return null;
	}
	cookie_name = "MOBYLOGTracking_Params_u_" + __site_id;
	if( (val = __getCookieValue(cookie_name)) ) {
		arr = val.split(":");
		if( arr.length == 2 ) {
			if( !tracking_data ) {
				tracking_data = new Array();
			}
			tracking_data[arr[0]] = arr[1];
		}
	}
	__setCookieValue(cookie_name, val, cookie_domain, (3600*24*365*5));

	cookie_name = "MOBYLOGTracking_Params_t_" + __site_id;
	if( (val = __getCookieValue(cookie_name)) ) {
		arr = val.split("|");
		for( var i in arr ) {
			var earr = arr[i].split(':');
			if( earr.length == 2 ) {
				if( !tracking_data ) {
					tracking_data = new Array();
				}
				tracking_data[earr[0]] = earr[1];
			}
		}
	}
	__setCookieValue(cookie_name, val, cookie_domain, 1800);

	return tracking_data;
}

function __getHandloaDCookie() {
	var tracking_data;
	var cnames = new Array( "MOBYLOG_HANDLOAD_TAG_SID", "MOBYLOG_HANDLOAD_TAG_UID" );
	var cookie_name = "";
	var cookie_domain = (typeof(__cookie_domain_name) == "string") ? __cookie_domain_name : "";
	var val;

	for( var i in cnames ) {
		if( (val = __getCookieValue(cnames[i])) ) {
			tracking_data = new Array();
			tracking_data['ktr_uid'] = val;
			tracking_data['ktr_sid'] = val;
			cookie_name = cnames[i];
			break;
		}
	}
	__setCookieValue(cookie_name, val, cookie_domain, (3600*24*365*5));

	return tracking_data;
}


function __getCookieValue(n) {
	var carr;
	if( !document.cookie ) {
		return '';
	}
	
	carr = document.cookie.split(";");
	for( var k in carr ) {
		carr[k] = carr[k].replace(/^\s+|\s+$/g, '');
		var ck = unescape(carr[k]);
		if( ck.indexOf(n) == 0 ) {
			var karr = carr[k].split('=');
			if( karr.length != 2 ) {
				return '';
			}
			return unescape(karr[1]);
		}
	}

	return '';
}

function __setCookieValue( n, v, d, e )
{
	var exp = "";
	var dmn = "";
	var val = "";

	if( (typeof(n) == "undefined" || !n || n == "") ||
	    (typeof(v) == "undefined" || !v || v == "") ) {
		return;
	}
	
	val = n + "=" + (v.match(/[^0-9a-zA-Z:|_]/) ? escape(v) : v) + "; ";
	
	if( typeof(d) == "string" && d != "" ) {
		if( d.match(/^[a-zA-Z0-9\.][a-zA-Z0-9\.-]*[a-zA-Z0-9]$/) != null ) {
			dmn = "domain=" + d + "; "
		}
	}
	if( typeof(e) == "number" ) {
		var expdate = new Date();
		expdate.setTime(expdate.getTime()+(e*1000));
		exp = "expires=" + expdate.toGMTString() + "; ";
	}
	
	document.cookie = val + "path=/; " + dmn + exp;
}


function __buildCampaignParams(k, v) {
	var _val = '';
	var _h = { "xp" : "ktr_cpid", "xm" : "ktr_mid", "xr" : "ktr_crid" };

	if( typeof(k) != "string" || typeof(v) != "string" ) {
		return '';
	}
	
	switch( k ) {
	case "xp":
	case "xm":
		var _pl = __max_zero_len - v.length;
		_val = __max_zero.substring(0,_pl) + v;
		break;
	case "xr":
		_val = v;
		break;
	default:
		return '';
	}

	return _h[k] + "=" + __encodeURL(_val);
}

function __buildBeaconParamsFromCookie(t, c) {
	var p = '';

	if( typeof(t) != "object" ) {
		return '';
	}
	for( var k in t ) {
		var v = __buildCampaignParams(k, t[k]);
		if( !v ) {
			v = k + "=" + __encodeURL(t[k]);
		}
		else {
			if( c ) {
				continue;
			}
		}
		p += (p ? "&" : "") + v
	}
	
	return p;
}

function __getSessionValue( data ) {
	var d = (typeof(__cookie_domain_name) == "string") ? __cookie_domain_name : "";
	var exp = 3600*24*365*5;

	if( typeof(data) != "object"
	    || typeof(data.sid) == "undefined"
	    || data.sid == "error"
	    || !(data.sid.match(/^[0-9a-fA-F]{32}$/)) ) {
		return;
	}
	if( !__tracking_cookie ) {
		__tracking_cookie = new Array()
	}
	__tracking_cookie["ktr_sid"] = data.sid;
	if( __tracking_cookie["ktr_uid"] == "undefined" ) {
		__tracking_cookie["ktr_uid"] = data.sid;
	}
	
	if( typeof(__tracking_cookie_type) != "string" ) {
		return;
	}
	
	switch(__tracking_cookie_type) {
	case "ENGINE":
		if( typeof(__site_id) == "undefined" ) {
			return;
		}
		var cn = "MOBYLOGTracking_Params_";
		__setCookieValue((cn + "u_" + __site_id), ("ktr_uid:"+data.sid), d, exp);
		__setCookieValue((cn + "t_" + __site_id), ("ktr_sid:"+data.sid), d, 1800);
		break;
	case "HandloaD":
		__setCookieValue( "MOBYLOG_HANDLOAD_TAG_SID", data.sid, d, exp );
		break;
	}
}

function __requestSessionValue()
{
	var ele = null;
	var uri = "";
	var t = null;

	if( typeof(__site_id) == "undefined" ||
	    typeof(__call_domain) == "undefined" ) {
		return;
	}
	if( __existSession() ) {
		return;
	}
	if( typeof(__tracking_cookie_type) == "string" ) {
		t = __getMOBYLOGTrackingCookie(__tracking_cookie_type);
		if( t && typeof(t["ktr_sid"]) != "undefined" ) {
			__tracking_cookie = t;
			return;
		}
	}

	uri = (("https:" == document.location.protocol) ? "https://" : "http://") +
	      __call_domain + "/msb.php?ktr_site=" + escape(__site_id) +
	     "&ktr_atime=" + (new Date().getTime());

	ele = document.createElement('script');
	ele.src = uri;
	ele.type = "text/javascript";
	document.getElementsByTagName("head")[0].appendChild(ele);
}

function __getSessionParameter()
{
	var arr = new Array("ktr_sid");
	var sprm = __pickupParams(arr, arr, 0);
	if( sprm == "" || sprm.indexOf("=") < 1 ) {
		return;
	}

	var sa = sprm.split("=");
	__getSessionValue( {"sid" : sa[1]} );
}

function __existSession()
{
	if( !__tracking_cookie ) {
		return false;
	}
	if( typeof(__tracking_cookie["ktr_sid"]) == "undefined"
	 || !__tracking_cookie["ktr_sid"]
	 ||__tracking_cookie["ktr_sid"] == "" ) {
		return false;
	}
	if( !__tracking_cookie["ktr_sid"].match(/^[0-9a-fA-F]{1,32}$/) ) {
		return false;
	}
	
	return true;
}

var __mhta = {
	link : function (l) {
		if( typeof(l) != "object" ||
		    typeof(l.href) == "undefined" ||
		    typeof(l.href) != "string" || 
		    l.href == "" || !l.href ) {
			return true;
		}
		if( !__existSession() ) {
			return true;
		}
		var dl = (l.href.indexOf("?") > -1 ) ? "&" : "?";
		l.href+=(dl+"ktr_sid="+__tracking_cookie["ktr_sid"]);
		return true;
	},
	submit : function(f, t) {
		if( typeof(f) != "object" ||
		    typeof(f.action) == "undefined" ||
		    typeof(f.action) != "string" ||
		    f.action == "" || !f.action ) {
			return true;
		}
		if( !__existSession() ) {
			return true;
		}
		switch( t ) {
		case "element":
			var ele = document.createElement("input");
			ele.name  = "ktr_sid";
			ele.type  = "hidden";
			ele.value = __tracking_cookie["ktr_sid"];
			f.appendChild(ele);
			break;
		case "action":
			var dl = (f.action.indexOf("?") > -1 ) ? "&" : "?";
			f.action += (dl + "ktr_sid=" + __tracking_cookie["ktr_sid"]);
			break;
		}
		return true;
	}
};

var __imgurl;
var __callurl;

if( typeof(__tracking_cookie_type) == "string" ) {
	__tracking_cookie = __getMOBYLOGTrackingCookie(__tracking_cookie_type);
}
if( !__tracking_cookie || typeof(__tracking_cookie["ktr_sid"]) == "undefined" ) {
	__tracking_cookie = null;
	__getSessionParameter();
}


if( typeof(__call_domain) != "undefined" &&
    typeof(__site_id) != "undefined" &&
    typeof(__no_init) == "undefined" ) {
	
    __callurl = __getURL();
    __push_beacon(__callurl);
}

