var startingPath = "http://www.adphreak.com/AdPhreakWeb/IOServlet";
//var startingPath = "http://127.0.0.1:8080/AdPhreakWeb/IOServlet";

var adCkLocalPhreak = "localPhreak";
var adCkId = "adi_af";
var adCkLst = "ulst";
var dcApCkExpireDays = 720;
var ckUpdateDelta = 0.01;
var ckMaxInt = 2;
var ckBlank = "BLANK";
var ckGen = "ad0=";
var ckRef = "ref=";
var ckLast = "lst=";
var ckInt = "ad1=";
var ckDel = "&";
var ckDateStart = "_*";
var ckDateEnd = "*_";
var ckRecUrlAdd = "&ro=rcy";

function apGetRef() {

	try {

		var ckRefData = apReadCookie(adCkLst);

		if (ckRefData == null || ckRefData == ckBlank)
			return '';

		var dcRefIndex = ckRefData.indexOf(ckRef);

		if (dcRefIndex == -1)
			return '';

		var dcRefEndIndex = ckRefData.indexOf(ckDel, dcRefIndex);

		if (dcRefEndIndex == -1)
			return ckRefData.substring(dcRefIndex + ckRef.length);

		return ckRefData.substring(dcRefIndex + ckRef.length, dcRefEndIndex);

	} catch (exception) {
	}

	return '';

}

function apGetLst() {

	try {
		var ckLstData = apReadCookie(adCkLst);

		if (ckLstData == null || ckLstData == ckBlank)
			return '';

		var dcLstIndex = ckLstData.indexOf(ckLast);
		if (dcLstIndex == -1)
			return '';

		var dcLstEndIndex = ckLstData.indexOf(ckDel);

		if (dcLstEndIndex == -1)
			return ckLstData.substring(dcLstIndex + ckLast.length);

		return ckLstData.substring(dcLstIndex + ckLast.length, dcLstEndIndex);

	} catch (exception) {
	}

	return '';

}

function apA0() {

	try {
		var ckGenData = apReadCookie(adCkId);

		if (ckGenData == null || ckGenData == ckBlank)
			return '';

		var dcGenIndex = ckGenData.indexOf(ckGen);

		if (dcGenIndex == -1)
			return '';

		var dcGenEndIndex = ckGenData.indexOf(ckDel);

		if (dcGenEndIndex == -1)
			return ckGenData.substring(dcGenIndex + ckGen.length);

		return ckGenData.substring(dcGenIndex + ckGen.length, dcGenEndIndex);

	} catch (exception) {
	}

	return '';

}

function apGetDate() {

	try {
		var ckGenDataDate = apReadCookie(adCkId);

		if (ckGenDataDate == null || ckGenDataDate == ckBlank)
			return '';

		var dcAfDateIndex = ckGenDataDate.indexOf(ckDateStart);
		if (dcAfDateIndex == -1)
			return '';

		var dcAfDateEndIndex = ckGenDataDate.indexOf(ckDateEnd);
		if (dcAfDateEndIndex == -1)
			return ckGenDataDate.substring(dcAfDateIndex + ckDateStart.length);

		return ckGenDataDate.substring(dcAfDateIndex + ckDateStart.length,
				dcAfDateEndIndex);

	} catch (exception) {
	}

	return '';

}

function apA1() {

	try {
		var ckGenIntData = apReadCookie(adCkId);
		if (ckGenIntData == null || ckGenIntData == ckBlank)
			return '';

		var ckIntIndex = ckGenIntData.indexOf(ckInt);

		if (ckIntIndex == -1)
			return '';

		return ckGenIntData.substring(ckIntIndex + ckInt.length);

	} catch (exception) {
	}

	return '';

}

function request_send(siteId, adId, cbId) {
	try {
		var request_script = document.createElement("script");
		request_script.src = startingPath + "?ss=" + siteId + "&s="
				+ parentSite + "&e=eua&ur=" + encodeURIComponent(pageUrl)
				+ "&tkey=" + encodeURIComponent(content) + "&r="
				+ encodeURIComponent(ureferrer) + "&ro=rcy";
		document.getElementsByTagName("head")[0].appendChild(request_script);

	} catch (exception) {
	}
}

function request_receive(data, pid) {
	try {
		apWriteCk(adCkId, data);
		apWriteSimpleCk(adCkLocalPhreak, pid);

		document.getElementsByTagName("head")[0].removeChild(request_script);

	} catch (exception) {
	}

}

function apValidateCookie(data) {
	var lcdate = new Date();

	try {
		apWriteCk(adCkId, data);
		document.getElementsByTagName("head")[0].removeChild(request_script);

	} catch (exception) {
	}

}

function apWriteSimpleCk(name, value) {
	try {
		var dcAfdate = new Date();
		var ckCurrMil = dcAfdate.getTime();
		var dcApCkExpireDaysInMillis = dcApCkExpireDays * 24 * 60 * 60 * 1000;
		dcAfdate.setTime(ckCurrMil + dcApCkExpireDaysInMillis);

		document.cookie = name + "=" + value + "; expires="
				+ dcAfdate.toGMTString() + ";path=/";

	} catch (exception) {
	}
}

function apWriteCk(name, dcAfValue) {
	try {
		var dcAfdate = new Date();
		var ckCurrMil = dcAfdate.getTime();
		var dcApCkExpireDaysInMillis = dcApCkExpireDays * 24 * 60 * 60 * 1000;
		dcAfdate.setTime(ckCurrMil + dcApCkExpireDaysInMillis);

		document.cookie = name + "=" + '_*' + ckCurrMil + '*_' + dcAfValue
				+ "; expires=" + dcAfdate.toGMTString() + ";path=/";

	} catch (exception) {
	}

}

function apWriteLstCk(name, value) {
	try {
		document.cookie = name + "=" + value + ";path=/";
	} catch (exception) {
	}
}

function apReadCookie(name) {
	name = name + '=';
	try {
		var dcAfCookies = document.cookie.split(';');
		for (x in dcAfCookies) {
			var dcAfcookie = dcAfCookies[x].replace(/^\s+/, '');
			if (dcAfcookie.indexOf(name) == 0)
				return dcAfcookie.substring(name.length);
		}
	} catch (exception) {
	}
	return null;
}

function apValidateLast(pageUrl, ureferrer) {

	var afValid = true;
	try {
		var lastSiteStr = apGetLst();
		var lastSiteRef = apGetRef();

		if (pageUrl != null && lastSiteStr != null && lastSiteStr != '') {
			if (pageUrl == lastSiteStr) {
				afValid = (lastSiteRef != null || ureferrer != null)
						&& (lastSiteRef != '' || ureferrer != '')
						&& (lastSiteRef != ureferrer);
			}
		}

		var afUpStr = ckLast + pageUrl + ckDel;
		if (ureferrer != null && ureferrer != '') {
			afUpStr = afUpStr + ckRef + ureferrer;
		}

		apWriteLstCk(adCkLst, afUpStr);

	} catch (exception) {
	}

	return afValid;

}

function timeExpired(lcDateString) {

	if (lcDateString == null || lcDateString == '')
		return true;

	var lcCurrDate = new Date();
	var lcDate = new Date();
	lcDate.setTime(lcDateString);

	var ckTimeDel = (lcCurrDate.getTime() - lcDate.getTime()) / 1000;
	var ckDateDef = 60 * 60 * ckUpdateDelta;
	if (ckTimeDel > ckDateDef)
		return true;

	return false;
}

function apValidateCk(afRecUrl) {

	try {
		if (timeExpired(apGetDate()))
			return afRecUrl + ckRecUrlAdd;

		return afRecUrl;

	} catch (exception) {
	}
	return afRecUrl + ckRecUrlAdd;
}

function getPid() {
	var ckPid = apReadCookie(adCkLocalPhreak);

	if (ckPid == null || ckPid == ckBlank)
		return 'null';

	return ckPid;
}

function adPhreakLogEvent(parentSite, siteId, content, pageUrl, ureferrer) {
	try {
		var dcAfContent = "a";

		var lcValidate = apValidateLast(pageUrl, ureferrer);
		if (lcValidate) {
			var pid = getPid();
			var afUrl = startingPath + "?ss=" + siteId + "&s=" + parentSite
					+ "&e=eua&ur=" + encodeURIComponent(pageUrl) + "&tkey="
					+ encodeURIComponent(dcAfContent) + "&pid=" + pid;
			afUrl = apValidateCk(afUrl);

			if (afUrl == null)
				afUrl = startingPath + "?ss=" + siteId + "&s=" + parentSite
						+ "&e=eua&ur=" + encodeURIComponent(pageUrl) + "&tkey="
						+ encodeURIComponent(dcAfContent);

			if (ureferrer != null && ureferrer != '') {
				afUrl = afUrl + "&r=" + encodeURIComponent(ureferrer);
			}

			request_script = document.createElement("script");
			request_script.src = afUrl;
			document.getElementsByTagName("head")[0]
					.appendChild(request_script);
		}
	} catch (exception) {
	}
}

