function trackPage(ref) {
    // senity
    if (!pageTracker || !pageTracker._trackPageview || !ref) {
        return;
    }

    var pageUrl = '/' + window.location.hostname + window.location.pathname;
    pageUrl = pageUrl.replace(/\/$/, '');
    pageTracker._trackPageview(pageUrl + ref);
}

function trackDownload(obj) {
	var href = obj.href.replace(/^http:\/\//,'/');
	trackPage(href + '/download/button');
}

function goto(url, googleCode, target) {
	trackPage(googleCode);

	if (target) {
		window.open(url, target);
	} else {
		window.open(url);
	}
}

function popup(obj) {
	return popupURL(obj.getAttribute('href'), obj.getAttribute('ref'));
}

function popupURL(url, googleCode) {
	if (googleCode) {
		trackPage(googleCode);
	}

	var width = screen.availWidth - 20;
	var height = screen.availHeight - 180;
	var top = 0;
	var left = 0;

	// fix absolute https url
	if (url.substr(0, 1) == '/') {
		url = 'https://www.555.co.il' + url;
	}

	// pass top page parameters
	url += window.location.search;
	url = PayrollData.addParametersToUrl(url);

	// open popup
	window.open(url, '_blank', 'top=' + top + ',left=' + left + ', width=' + width + ',height=' + height + ',scrollbars=yes,status=yes,titlebar=yes,toolbar=yes,resizable=yes,menubar=yes,location=yes');
	return false;
}

function addFlash(url, id, w, h, bgcolor, wmode) {
	var str = '<embed swLiveConnect="true" quality=best type="application/x-shockwave-flash" menu=false  ' +
	          ' name="' + id + '" id="' + id + '" ' +
	          ' src="' + url + '" ' +
	          ' wmode="' + wmode + '" ' +
	          ' bgcolor="' + bgcolor + '" ' +
	          ' width=' + w + ' height=' + h +
	          ' swLiveConnect=true ' +
	          ' allowScriptAccess="sameDomain" ' +
	          ' type="application/x-shockwave-flash" ' +
	          ' pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" ></embed>';

	document.write(str);
}

function menu_onclick(obj) {
	try {
		var link = obj.getElementsByTagName('a')[0]
		window.open(link.href, '_self');
	} catch (e) {
	}

	return false;
}

function foreach(array, func) {
	for (var i = 0, len = array.length; i < len; i++) {
		var retValue = func(array[i], i);
		if (retValue != undefined) {
			return retValue;
		}
	}
	return undefined;
}

var PayrollData = {
	// NOTICE: uid and utm_attn are not a PayrollData parameters!
	parameters: [
		'utm_campaign','utm_source','utm_medium','utm_ref',  // parameters
		'utm_dsnr','utm_cid','utm_tact','utm_oridian'  // vendors
	],
	UNSET: '-1',

	cookies: {},
	queryString:{},

	init: function() {
		PayrollData.fetchQueryString();
		PayrollData.fetchCookies();
		PayrollData.updateCookies();
	},

	addParametersToUrl: function(url) {
		if (url.indexOf('?') < 0) {
			url += '?from_cookies=true';
		}

		foreach(PayrollData.parameters, function(param) {
			if (!PayrollData.queryString[param] && PayrollData.isSet(param)) {
				url += '&' + param + '=' + escape(PayrollData.cookies[param]);
			}
		});

		return url;
	},

	isAnyPropertySet: function() {
		return foreach(PayrollData.parameters, function(param) {
			if (PayrollData.isSet(param)) {
				return true;
			}
		});
	},

	updateCookies: function() {
		// return if cookies already set.
		if (PayrollData.isAnyPropertySet()) {
			return;
		}

		// update cookies from parameters
		foreach(PayrollData.parameters, function(param) {
			PayrollData.setCookie(param, PayrollData.queryString[param]);
		});

		// if no 'utm_source' passed set it to refferer
		if (!PayrollData.queryString['utm_source']) {
			PayrollData.setCookie('utm_source', document.referrer);
		}
	},

	isSet: function(param) {
		var value = PayrollData.cookies[param];
		return value && value != PayrollData.UNSET
	},

	fetchCookies: function() {
		foreach(PayrollData.parameters, function(param) {
			PayrollData.cookies[param] = PayrollData.getCookie(param);
		});
	},

	fetchQueryString: function() {
		var query = window.location.search.substring(1);
		var parms = query.split('&');
		for (var i = 0; i < parms.length; i++) {
			var pos = parms[i].indexOf('=');
			if (pos > 0) {
				var key = parms[i].substring(0, pos);
				var val = parms[i].substring(pos + 1);
				PayrollData.queryString[key] = val;
			}
		}
	},

	getCookie: function(c_name) {
		if (document.cookie.length > 0) {
			var c_start = document.cookie.indexOf(c_name + '=');
			if (c_start != -1) {
				c_start = c_start + c_name.length + 1;
				var c_end = document.cookie.indexOf(';', c_start);
				if (c_end == -1)
					c_end = document.cookie.length;
				return unescape(document.cookie.substring(c_start, c_end));
			}
		}
		return '';
	},

	setCookie: function (key, value) {
		PayrollData.cookies[key] = value;

		if (!value) {
			value = PayrollData.UNSET;
		}

		var msInDay = 1000 * 60 * 60 * 24;
		var exdate = new Date(new Date().getTime() + (msInDay * 7));
		document.cookie = key + '='
				+ escape(value)
				+ ';expires=' + exdate.toGMTString() + ';path=/';
	}
};

PayrollData.init();
