/*
   1. проверяем наличие параметров pid/pid-priority в URL, если есть то сохраняем их в переменных. Если pid задан и pid-priority не задан, то в переменную приоритета пишем значение = 100;
   2. проверяем наличие параметров параметров pid/pid-priority в куках текущего сайта, если есть то сохраняем их в переменных только если приоритет больше значения уже прочитанного из URL;
   3. обновляем куки pid/pid-priority текущего сайта значениями из переменных;
   4. обновляем куки pid/pid-priority сайта 4game.ru значениями из переменных;
   5. обновляем ссылку на запускатр значением pid из переменной;
   6. обновляем значения pid/pid-priority виджета регистрации значениями из переменных;

 */

var pid = null;
var pidPriority = null;

function addEventBR(elem, evType, fn) {
    if (elem.addEventListener) {
        elem.addEventListener(evType, fn, false)
                return fn
    }

        iefn = function() {fn.call(elem)}
        elem.attachEvent('on' + evType, iefn)
    return iefn
};

addEventBR(window, 'load', setPid);

function setPid() {

	function g(n) {
		var result;
		result = (result = new RegExp('(?:^|; )' + encodeURIComponent(n) + '=([^;]*)').exec(document.cookie)) ? decodeURIComponent(result[1]) : null;
		return result;
	}
	
	function getRequestParam(paramName, defaultValue, requestString) {
		if (!requestString) requestString = window.location.search;
		var regExp = new RegExp(paramName + '=([^\=&]+)[&]?', 'i');
		var match = null;
		match = requestString.match(regExp);
		return match ? match[1] : defaultValue;
	}
	
	function getScriptParam(scriptName, paramName, defaultValue) {
		var scriptList = document.getElementsByTagName("script");
		for (var i = 0; i < scriptList.length; i++) {
			if (scriptList[i].src.indexOf(scriptName + '.js') != -1) {
				return getRequestParam(paramName, defaultValue, scriptList[i].src); 
			}
		}
		return defaultValue;
	}	

	if (window.location.search) {
		var pid = getRequestParam('pid', null);
		var pidPriority = getRequestParam('pid-priority', 100);
		var fourGameUrl = getScriptParam('regpid', '4gameUrl', 'https://ru.4game.com');
		if (pid) {
			var cPid = g("pid");
			var cPriority = parseInt(g("pid-priority") || 0);
			if (pidPriority >= cPriority) {
				var e = new Date();e.setDate(e.getDate() + 90);
				document.cookie = "pid=" + pid + "; path=/; expires=" + e.toUTCString();
				document.cookie = "pid-priority=" + pidPriority + "; path=/; expires=" + e.toUTCString();
				(new Image).src = fourGameUrl + '/ptracker?pid=' + pid + '&pid\-priority=' + pidPriority;
			} else {
				pid = cPid;
				pidPriority = cPriority;
			}
		}
	}
	
	var auid = g('tracker_id');
	
	var replace;
	if (auid) {
		replace = auid;
	} else if (pid || (pid = g("pid"))) { // if window.location.search is empty getting pid from cookies
		replace = pid;
	}

	if (replace) { 
		var links = document.getElementsByTagName("a");
		for (var i = 0; i < links.length; i++) {
			var href = links[i].getAttribute("href");
			if (!href) continue; // skipping anchors
			href = href && href.replace(/(.*_(zapuskatr|installer)_S\d+P)\d+Z\.exe/i, "$1" + replace + "Z.exe") || '';
			links[i].setAttribute("href", href);
		}
	}
}

