<!-- 

// *** Version 1.09g *** 
//  Date            Name            Change Description                  
//  08 Feb 2006     Gary Kirk       Added method to record search box clicks
//  30 Mar 2006     Darragh Smyth   Changed tagging method for Inceptor
//  10 Apr 2006     Darragh Smyth   Test SmartSource IP address updated (from 192.168.0.81) and added test URL for Inceptor

var popup=0;
var testlogs=0;
var gSDCServer=(testlogs) ? "192.168.0.87" : "smartsource.cheapflights.co.uk";
var gParamPrefix="cf_cp_";
var sourceCookie="CFsource";

var isLogged=0;

//MiB: for flag page cliks (CFUK)
function CFFlags(fCheckBox) {
	var arglist = new Array();
	
	arglist[arglist.length] = 'DCS.dcsuri';
	arglist[arglist.length] = '/flag.html';

	arglist[arglist.length] = 'DCS.dcsref';
	arglist[arglist.length] = window.location.href;

	arglist[arglist.length] = 'WT.ti';
	arglist[arglist.length] = '';

	arglist[arglist.length] = 'WT.cg_n';
	arglist[arglist.length] = 'CFUK Flag Redirect';

	arglist[arglist.length] = 'DCSext.cf_fp_checkbox';
	arglist[arglist.length] = fCheckBox;

	arglist[arglist.length] = 'DCSext.cf_fp_cookie';
	arglist[arglist.length] = '';

	dcsMultiTrack(arglist);
}

function JSC(link){

	// log exit clicks on links to Inceptor
	log2inceptor();
    
	var Ucopy=link.href;
	if(Ucopy){
		var i=Ucopy.indexOf('/goto.asp?');
		if(i==-1 || Ucopy.length==i+10) return;

 		var uid= setUparameter(link);
		var U=link.href;

		var args = new Array();
		var GP = querystring2hash(U);	
		args=setWT(original_WT_cg_n+'(y='+GP.y+')',args,GP.y);
		args=setDCSext(GP,args);
		
		var cookieValue = getCookie(sourceCookie);
		if (cookieValue != null){
			args[args.length] = 'DCSext.cf_src';
			args[args.length] = cookieValue;
		}

		isLogged=0;		
		if(U.indexOf('&u=')>-1 || U.indexOf('?u=')>-1) dcsMultiTrack(args);
		if(isLogged==0) link.href=Ucopy;
	}
}

function setUparameter(L){
	var U=L.href;
	var dt=new Date();
	var id=dt.getTime();
	var ui=U.indexOf('&u=');
	if(ui==-1) ui=U.indexOf('?u=');
	if(ui==-1){
		var uv='u='+id;
 		if(U.indexOf('&t=')>-1) U=U.replace('&t=','&'+uv+'&t=');
		else if(U.indexOf('?t=')>-1) U=U.replace('?t=','?'+uv+'&t=');
 		else U+='&'+uv;
 	}else{
 		var us=U.substring(ui+3);
 		var uj=us.indexOf('&');
 		if(uj==-1) uj=us.length;
 		var oldid=us.substring(0,uj);
 		id=updateUparam(oldid,id);
 		if(U.indexOf('&u=')>-1) U=U.replace('&u='+oldid,'&u='+id);
 		else if(U.indexOf('?u=')>-1) U=U.replace('?u='+oldid,'?u='+id);
 	}
 	L.href=U;
 	return id;
}

function updateUparam(u,tn){
	if(u){
		var a=u.split('-');
		if(a.length>=2){
			var t0=parseInt(a[0]);
			var td=tn-t0;
			var cc=parseInt(a[1])+1;
			return a[0]+'-'+cc+'-'+td;
		}else if(a.length==1){
			var t0=parseInt(a[0]);
			var td=tn-t0;
			return a[0]+'-2-'+td;
		}else{
			return tn;
		}
	}else{
		return tn;
	}
}

function setWT(cgs,args,y)
{
	args[args.length] = 'DCS.dcsuri';
	args[args.length] = '/goto.asp';

	args[args.length] = 'DCS.dcsref';
	var ref=window.location.href;
	args[args.length] = (typeof(ref)!="undefined")?ref:"";

	args[args.length] = 'WT.ti';
	args[args.length] = '';

	args[args.length] = 'WT.cg_n';
	args[args.length] = 'Goto;Goto['+y+']';

	args[args.length] = 'WT.cg_s';
	args[args.length] = (typeof(cgs)!="undefined")?cgs+';':";";

	return args;
}

function setDCSext(GP,args)
{
	for (N in DCSext){
		if (N.indexOf(gParamPrefix)>-1){
			delete DCSext[N];
		}
	}
	for (N in GP){
		args[args.length] = 'DCSext.' + gParamPrefix + N;
		args[args.length] = GP[N];
	}
	return args;

}

function querystring2hash(U)
{
	var H=new Object();
	
	var i=U.indexOf('/goto.asp?');
 	if(i==-1 || U.length==i+10){
 	
 		i=U.indexOf('mailto');
 		if(i>-1){
 			H['y']='ml';
 			H['bi']=-1;
 			H['reftyp']='EL';
 			H['trfgrp']='EL';
 			return H;
 		}
 		
 		i=U.indexOf('agents');
 		if (i>=0){
 			H['y']='ac';
 			H['bi']=-1;
 			H['reftyp']='PL';
 			H['trfgrp']='PL';
 			return H;
 		}
 		return H;
 	}
 	
	var k=U.indexOf('?');
	if(k==-1) return H;
	
	var S=U.substring(k+1,U.length);

	k=S.indexOf('&t=');
	if(k==-1){
	 	k=S.length;		// no t-param, for whatever reason
	}else{
		var tp=S.substring(k+3,S.length);
		var a=tp.indexOf('agents');
		if(a>-1){
			H['reftyp']=(a>=0 && a<=3)?'PL':'WL';
		}else{
			H['reftyp']='WL';
		}
		H['t']=tp;
	}
	S=S.substring(0,k);		
	
	var A=S.split('&');
	for(var i=0;i<A.length;i++){
		var P=A[i].split('=');
		if(P[1]==0) P[1]='';
		H[P[0]]=P[1];
	}

	if (H['p']){
		H['postyp']=(H['p']>10000) ?'SP':'PP';
		H['lnkpos']=(H['p']>10000) ? H['p']-10000 : H['p'];
	}

	H=setwhichtab(H);
	H=gentarifftype(H);
	return H;
}

function setwhichtab(H){

	var ref=window.location.pathname;

	if (H['y']=='o'){
		H['tab']=getsubdir(ref,2);
	}
	else if (H['y']=='f'){
		if (H['c']==1){
			var val=getsubdir(ref,4);
			H['tab']=(val)?val:'Cheapest';
		}else if (H['c']==2){
			H['tab']='Business';
		}
	}
	else if (H['y']=='h'){
		H['tab']=getsubdir(ref,3);
	}
	else if (H['y']=='hs'){
		H['tab']=getsubdir(ref,4);
	}

	return H;
}

function getsubdir(url,n){
	for (var i=0;i<n;i++){
		var p=url.indexOf('/');
		if (p>-1) url=url.substring(p+1,url.length);
	}
	if (url){
		var p=url.indexOf('/');
		return url.substring(0,p);
	}else{
		return '';
	}
}

function gentarifftype(H)
{
	var fields = new Array("postyp","reftyp","c","tab");
	var tariff='';
	for (var f=0;f<fields.length;f++){
		if (H[fields[f]]){
			if(tariff.length) tariff=tariff+';';
			tariff=tariff+H[fields[f]];
		}
	}
	H['trfgrp']=tariff;
	return H;
}

function BESS(isOfferPage,depID,depIATA,destID,destIATA,biid,ticket,adult,child,infant,senior,rooms,oDateRel,nights,lnkpos,u)
{
	// log exit clicks on booking engine to Inceptor
	log2inceptor();
	
	var H=new Object();
	
	H['isop']=isOfferPage;
	H['f']=depID;
	H['dep']=depIATA;
	H['d']=destID;
	H['dest']=destIATA;
	H['bi']=biid;
	H['c']=ticket;
	H['adt']=adult;
	H['inf']=infant;
	H['sen']=senior;
	H['chd']=child;
	H['pax']=parseInt(adult)+parseInt(child)+parseInt(infant)+parseInt(senior);
	H['odat']=oDateRel;
	H['stay']=nights;
	H['rms']=rooms;
	H['reftyp']='BE';
	H['y']='be';
	H['lnkpos']=lnkpos;
	
	var dt=new Date();
	H['u'] = (u) ? updateUparam(new String(u),dt.getTime()) : dt.getTime();

	H=gentarifftype(H);
	
	var arglist = new Array();
	arglist=setWT(original_WT_cg_n+'(y=be)',arglist,'be');
	arglist=setDCSext(H,arglist);
	
	var cookieValue = getCookie(sourceCookie);
	if (cookieValue != null){
		arglist[arglist.length] = 'DCSext.cf_src';
		arglist[arglist.length] = cookieValue;
	}

	isLogged=0;
	if(H['u']) dcsMultiTrack(arglist);

	return (isLogged) ? H['u'] : '';
}

var original_WT_cg_n="";
var gHost = window.location.hostname;
var gImages=new Array;
var gIndex=0;
var DCS=new Object();
var WT=new Object();
var DCSext=new Object();
var gDomain= gSDCServer; 
var gDcsId="";
DCS.dcssip=gHost;        
if (gDcsId==""){
	var gTagPath=gDomain;
}
else{
	var gTagPath=gDomain+"/"+gDcsId;
}
function dcsVar(){
	var dCurrent=new Date();
	WT.tz=dCurrent.getTimezoneOffset()/60*-1;
	WT.bh=dCurrent.getHours();
	WT.ul=navigator.appName=="Netscape"?navigator.language:navigator.userLanguage;
	if (typeof(screen)=="object"){
		WT.cd=screen.colorDepth;
		WT.sr=screen.width+"x"+screen.height;
	}
	if (typeof(navigator.javaEnabled())=="boolean"){
		WT.jo=navigator.javaEnabled()?"Yes":"No";
	}
	WT.ti=document.title;
	WT.js="Yes";
	if (typeof(gVersion)!="undefined"){
		WT.jv=gVersion;
	}
	WT.sp = gSplitCode; 
	DCS.dcsuri=window.location.pathname;
	DCS.dcsqry=window.location.search;
	if ((window.document.referrer!="")&&(window.document.referrer!="-")){
		if (!(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)<4)){
			DCS.dcsref=window.document.referrer;
		}
	}
	
	DCS.dcsdat=dCurrent.getTime();
}
function A(N,V){
	return "&"+N+"="+escape(V);
}
function dcsCreateImage(dcsSrc){
	if (document.images){
		gImages[gIndex]=new Image;
		gImages[gIndex].src=dcsSrc;
		gIndex++;
	}
	else{
		document.write('<IMG BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="'+dcsSrc+'">');
	}
	isLogged=1;
}
function dcsMeta(){
	var myDocumentElements;
	if (document.all){
		myDocumentElements=document.all.tags("meta");
	}
	else if (document.documentElement){
		myDocumentElements=document.getElementsByTagName("meta");
	}
	if (typeof(myDocumentElements)!="undefined"){
		for (var i=1;i<=myDocumentElements.length;i++){
			myMeta=myDocumentElements.item(i-1);
			if (myMeta.name){
				if (myMeta.name.indexOf('WT.')==0){
					WT[myMeta.name.substring(3)]=myMeta.content;
				}
				else if (myMeta.name.indexOf('DCSext.')==0){
					DCSext[myMeta.name.substring(7)]=myMeta.content;
				}
				else if (myMeta.name.indexOf('DCS.')==0){
					DCS[myMeta.name.substring(4)]=myMeta.content;
				}
			}
		}
	}
	if(typeof(WT.cg_n)!="undefined") original_WT_cg_n=WT.cg_n;
}

function dcsTag(TagImage,onclickevent){
	var P="http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+TagImage+"/dcs.gif?";
	for (N in DCS){
		if (DCS[N]) {
			P+=A(N,DCS[N]);
		}
	}
	for (N in WT){
		if (WT[N]) {
			P+=A("WT."+N,WT[N]);
		}
	}
	for (N in DCSext){

		if (DCSext[N]) {
			P+=A(N,DCSext[N]);
		}
	}
	if (P.length>2048&&navigator.userAgent.indexOf('MSIE')>=0){
		P=P.substring(0,2040)+"&WT.tu=1";
	}
	dcsCreateImage(P);
	if(popup && onclickevent) alert('['+DCSext.cf_cp_u+'] SmartSource Query String: ' + P);
}

// called upon loading of the JS file, logging hit to the containing page.
dcsVar();
dcsMeta();
dcsTag(gTagPath,0);

function dcsMultiTrack(args)
{
	for (var i=0;i<args.length;i++){

		if (args[i].indexOf('WT.')==0){
				WT[args[i].substring(3)]=args[i+1];
				i++;
		}
		if (args[i].indexOf('DCS.')==0){
				DCS[args[i].substring(4)]=args[i+1];
				i++;
		}
		if (args[i].indexOf('DCSext.')==0){
				DCSext[args[i].substring(7)]=args[i+1];
				i++;
		}
	}
	var dCurrent=new Date();
	DCS.dcsdat=dCurrent.getTime();
	dcsTag(gTagPath,1);
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  var val = unescape(dc.substring(begin + prefix.length, end));
  return val;
}

// DSm: log search form entries
function SFSS(F)
{
	var A = new Array();
	
	A[A.length] = 'DCS.dcsuri';
	A[A.length] = F.action;

	A[A.length] = 'DCS.dcsref';
	A[A.length] = window.location.href;

	A[A.length] = 'WT.ti';
	A[A.length] = '';

	A[A.length] = 'WT.cg_n';
	A[A.length] = 'Search';

	A[A.length] = 'WT.cg_s';
	A[A.length] = WT.cg_n;
	
	A[A.length] = 'DCSext.cf_sp_from';
	A[A.length] = F.from.value;
	
	A[A.length] = 'DCSext.cf_sp_to';
	A[A.length] = F.to.value;
	
	A[A.length] = 'WT.si_n'; 
	A[A.length] = 's1';

	A[A.length] = 'WT.si_x';
	A[A.length] = '2';

	A[A.length] = 'WT.srch';
	A[A.length] = '';
	
	A[A.length] = 'WT.mc_id';
	A[A.length] = '';
	
	A[A.length] = 'WT.mc_r';
	A[A.length] = '';

	dcsMultiTrack(A)
}

// *** Start of custom Inceptor code ***
function log2inceptor()
{
	// only log clicks from Cheapflights.co.uk (not HOL, ACC or SB)
	if (gSplitCode=='CFUK')
	{
		// assign the domain and path to log the exit click
		var incDomain='cust057.pool001.bidcenter.inceptor.com';
		var incPath= (testlogs) ? '/50719304/marker/Vanilla+test' : '/281579/marker/Conversion';

		// create a random number as the order ID
		var incOrderID=Math.floor(Math.random()*10000001);
		
		// specify the revenue (average)
		var incRevenue='0.29';
		
		// create and log the tag with Inceptor
		var incTag = getTag(incDomain,incPath,'orderid',incOrderID,'revenue',incRevenue);

		// use the SmartSource logging method cause the Inceptor doesn't work (?!)		
		dcsCreateImage(incTag);
	}
}
// *** End of custom Inceptor code ***



// *** Start of standard Inceptor code ***
// (http://cust057.pool001.bidcenter.inceptor.com/tag.js)

function getQueryString() {
    if (location.href.lastIndexOf('?') ==-1) {
	return "";
    }	
    return location.search.substring(1,location.search.length);
}	
function split(str, search, keepBefore) {
    var index = str.indexOf(search);
    if (index!=-1) {
	if (keepBefore) {
	    return str.substring(0, str.indexOf(search));
	} else {
	    return str.substring(index+search.length, str.length)
		}	    
    }
    return str;
}   
function extractDomain(url) {
    url = split(url, "http://", false);
    url = split(url, "https://", false);
    url = split(url, "/", true);
    url = split(url, ":", true);
    return url;
}   
function extractPathName(url) {
    url = split(url, "http://", false);
    url = split(url, "https://", false);
    url = split(url, "?", true);
    url = split(url, "/", false);
    return "/" + url;
}   
function extractQueryString(url) {
    if (url.indexOf("?")==-1) {
	return "";
    }
    url = split(url, "http://", false);
    url = split(url, "https://", false);
    url = split(url, "?", false);
    return url;
}   
function extractCookie(name, abbrvName) {
    var cookies = document.cookie + ";";
    if (cookies.length!=0) {
	var cookie = split(cookies, name+"=", false);
	cookie = split(cookie, ";", true);
	return "&pC" + escape(abbrvName) + "=" + escape(cookie);
    }
    return "";
}   
function getProcessParams(prefix, qs) {
    if (qs.length == 0) {
	return "";
    } 
    var tmp="";
    var list = qs.split('&');
    for (var i=0;i<list.length;i++) {
	var key_value = list[i].split('=');
	tmp = tmp + "&" + prefix + "P" + escape(key_value[0]) + "=" + escape(key_value[1]);
    }
    return tmp;
}
function getTag(domain, virtualPath,orderIdParam,orderId,revenueParam,revenue) {
	
	var orderIdInclude;
	if (orderIdParam) {
		orderIdInclude = "&" + orderIdParam + "=" + orderId;
	} else {
		orderIdInclude="";
	}
	
	var revenueInclude;
	if (revenueParam) {
		revenueInclude = "&" + revenueParam + "=" + revenue;
	} else {
		revenueInclude="";
	}


    var r = Math.random();
    var d = new Date();
    var protocol = location.protocol;
    var tag = protocol + "//" + domain + virtualPath + "?ts=" +
	escape(d.getTime()) +
	"&r=" + escape(r) +
	"&pDom=" + escape(location.host) + 
	"&pPath=" + escape(location.pathname) +
	getProcessParams("p", getQueryString()) +
	"&rDom=" + escape(extractDomain(document.referrer)) + 
	"&rPath=" + escape(extractPathName(document.referrer)) +
	getProcessParams("r", extractQueryString(document.referrer)) +
	orderIdInclude +
	revenueInclude;
		
    return tag;
}
function tag(domain,virtualPath) {
	document.write("<img alt=\"\" height=\"1\" width=\"1\" src=\"" + getTag(domain, virtualPath, null, null, null, null) + "\">");
}	

function tag(domain,virtualPath,orderIdParam,orderId,revenueParam,revenue) {
	document.write("<img alt=\"\" height=\"1\" width=\"1\" src=\"" + 
              getTag(domain, virtualPath, orderIdParam, orderId, revenueParam, revenue) + 
              "\">");
}	
// *** End of standard Inceptor code ***

//-->


