/*
*
* 10/10/2008 - craig.wilson@cityindex.co.uk
*
* Whitelabel cookie tracking javascript
*/
$(document).ready(init);

function track() {
    var appFormUrl = 'http://pkh-ppe-web05:8088/FSB';
    //The hidden value is set within "Apply for account link" content block of the Global folder
    var strUrl = document.getElementById("appforaccount").value;
    if (strUrl != null && strUrl != '') {
        appFormUrl = strUrl;
    }

    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) {
    window.open(pageTracker._getLinkerUrl(appFormUrl), '', 'width=830,height=720,left=100,top=50,resizable=yes,status=yes,scrollbars=yes');
}

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);
}
