/*
*
* 10/10/2008 - craig.wilson@cityindex.co.uk
*
* Whitelabel cookie tracking javascript
*/
$(document).ready(init);

function track(url)
{
    var appFormUrl = url; 
    var trackingStr = appFormUrl += '?'+readCookie('tracking');
    launchAppFormWindow(trackingStr);
    return false;
}

function trackLogin(url)
{
    var appFormUrl = url; 
    launchLoginWindow(appFormUrl);
    return false;
}

function init()
{
    initCookie();
}

function launchAppFormWindow(appFormUrl)
{
    var height = screen.height  - 150;
    window.open(pageTracker._getLinkerUrl(appFormUrl),'','width=1060,height=' + height+ ',left=100,top=50,resizable=no,status=yes,menubar=no,scrollbars=yes,location=0');                 
}

function launchLoginWindow(url) {
    window.open(pageTracker._getLinkerUrl(url),'IRMASTERgc','scrollbars=0,resizable=yes,location=no,directories=no,menubar=no,toolsbar=no,status=no,top=0,left=0,height=690,width=1019');
}
  

function QueryString()
{
	this.params = {};
	var qs = location.search.substring(1, location.search.length);
	var args = qs.split('&');
	
	for(var i=0; i<args.length; i++)
	{
		var namevaluepair = args[i].split('=');
		var name = decodeURIComponent(namevaluepair[0]);
		var value = (namevaluepair.length==2)
			? decodeURIComponent(namevaluepair[1])
			: name;
			
		this.params[name] = value;
	}
    //Yahoo search
    var searchTermsFromP = getRefQueryParam('p').toString();
    //Google search and Bing
    var searchTermsFromQ = getRefQueryParam('q').toString();
    //Lycos
    var searchTermsFromQuery = getRefQueryParam('query').toString();
    if (searchTermsFromP.length > 0)
        this.params['searchTerms'] = searchTermsFromP;

    if (searchTermsFromQ.length > 0)
        this.params['searchTerms'] = searchTermsFromQ;

    if (searchTermsFromQuery.length > 0)
        this.params['searchTerms'] = searchTermsFromQuery;
}

QueryString.prototype.get = function(key)
{
	var value = this.params[key];
	return (value != null) ? value : '';
}

function getReferrer()
{
	return ((document.referrer != null) ? document.referrer : '');
}

function getRefQueryParam(a) { a = a.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); a = RegExp("[\\?&]" + a + "=([^&#]*)").exec(document.referrer); return a == null ? "" : a[1] };

function getIBMediaChannelAndSource(ib) {
    return 'mediachannelid=' + ((ib != '') ? parseInt(ib.substr(0, 3), 10) : '') +
	'&mediasourceid=' + ((ib != '') ? parseInt(ib.substr(3), 10) : '');
}

function buildCookieValue()
{
	var q = new QueryString();
	
	return getIBMediaChannelAndSource(q.get('ib'))+
		   '&txtWebSourceRef='+q.get('cid')+','+q.get('chl')+q.get('wm')+
		   '&txtSearchTerm=' + q.get('searchTerms') +
		   '&txtWebSourceUrl='+getReferrer();
}

function initCookie()
{
	var fn = new QueryString();
	
    if (( (fn.get('searchTerms') !== '') | (fn.get('wm') != '') | (fn.get('cid') != '') | (fn.get('chl') != '') | (fn.get('ib') != '')) && (readCookie('tracking') != '')) 
	{
		/* we've seen a previous advert, so create a new cookie*/
		deleteCookie('tracking');
		createCookie('tracking',buildCookieValue(),31);
	}
    else if (( (fn.get('searchTerms') !== '') | (fn.get('wm') != '') | (fn.get('cid') != '') | (fn.get('chl') != '') | (fn.get('ib') != '')) && (readCookie('tracking') == '')) 
	{
		/* we've not seen a previous advert, so create one from scratch */
		createCookie('tracking',buildCookieValue(),31);
	}
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return '';
}

function deleteCookie(name) {
	createCookie(name,"",-1);
}
