/**
 * @copyright Keyade, 2008-2009
 */
var ___kCk = {
	set : function( n, v, d, dmn ) {
		var exp = '';
		if ( d != undefined && d != -1 ) {
			var dt = new Date();
			dt.setTime( dt.getTime() + ( 86400000 * parseFloat( d ) ) );
			exp = '; expires=' + dt.toGMTString();
		}
		if ( dmn == undefined ) {
			var loc = ( window.top != window ) ? window.parent.location : window.location;
			dmn = loc.hostname.replace( /^www\./i, '.' );
		}
		return ( document.cookie = escape( n ) + '=' + escape( v || '' ) + exp + '; domain=' + dmn + '; path=/' );
	},
	get : function( n ) {
		var c = document.cookie.match( new RegExp( '(^|;)\\s*' + escape( n ) + '=([^;\\s]*)' ) );
		return ( c ? unescape( c[2] ) : null );
	},
	erase : function( n ) {
		var c = ___kCk.get( n ) || true;
		___kCk.set( n, '', -1 );
		return c;
	},
	accept : function() {
		if ( typeof navigator.cookieEnabled == 'boolean' ) {
			return navigator.cookieEnabled;
		}
		___kCk.set( '_test', '1' );
		return ( ___kCk.erase( '_test' ) ===  '1' );
	}
};

var ___kPQs = function() {
	var a = this;
	a.params = {};
	a.qs = '';
		
	a.get = function( key, default_ ) {
		var value = a.params[key];
		return ( value != null ) ? value : default_ ;
	};
	
	a.contains = function( key ) {
		var value = a.params[key];
		return ( value != null );
	};
	
	a.loc = ( window.top != window ) ? window.parent.location : window.location;
	a.qs = a.loc.search.substring( 1, a.loc.search.length ).replace( /\?/g, '&' );
	
	if ( a.qs.length == 0 ) return;

	a.qs = a.qs.replace(/\+/g, ' ');
	
	var args = a.qs.split( '&' ); 
	
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split( '=' );
		var name = decodeURIComponent( pair[0] );
		
		var value = ( pair.length == 2 )
			? decodeURIComponent( pair[1] )
			: name;
		
		a.params[name] = value;
	}
};

var ___kTev = function( cId, tckDomain, ckeDomain ) {
	var a = this;
	a.cIdTag = 'kaPcId';
	a.eIdTag = 'kaEvId';
	
	a.clkIdTag = 'kaClkId';

	a.eCt1Tag = 'kaEvCt1';
	a.eCt2Tag = 'kaEvCt2';
	a.eCt3Tag = 'kaEvCt3';
	
	a.eVal1Tag = 'kaEvVal1';
	a.eVal2Tag = 'kaEvVal2';
	a.eVal3Tag = 'kaEvVal3';
	
	a.eAcIdTag = 'kaEvAcId';
	
	a.eStTag = 'kaEvSt';
	a.eMcIdTag = 'kaEvMcId';
	a.eCurTag = 'kaEvCur';

	a.cId = ( cId !== undefined && cId != 'undefined' ) ? cId : 0;
	a.eId = 0;
	
	a.eMcId = '';

	a.eCt1 = 0;
	a.eCt2 = 0;
	a.eCt3 = 0;

	a.eVal1 = 0;
	a.eVal2 = 0;
	a.eVal3 = 0;

	a.eAcId = '';
	
	a.eSt = 'confirmed';
	
	a.eCur = '';
	
	a.clkId = null;

	a.tckDomain = ( tckDomain !== undefined && tckDomain != 'undefined' ) ? tckDomain : '';

	a.loc = ( window.top != window ) ? window.parent.location : window.location;
	a.host = a.loc.hostname.replace( /^www\./ig, '' );
	
	a.ckeDomain = ( ckeDomain !== undefined && ckeDomain != 'undefined'  ) ? ckeDomain : '.' + a.host;

	a.inSession = -1;
	
	a.imgPath = '/kev/1/';
	
	a.prevCalls = new Array();

	a.foo = function() { return; };
	
	a.sleep = function( delta ) {
		var start = (new Date()).getTime();
		while( (new Date()).getTime() - start < delta );
	}

	a.setEventId = function( id ) {
		a.eId = id;
	}

	a.setClientId = function( id ) {
		a.cId = id;
	}

	a.setClkId = function( id ) {
		a.clkId = id;
	}
	
	a.setMerchantId = function ( id ) {
		a.eMcId = id;
	}
	
	a.setCurrency = function( curr ) {
		a.eCur = curr;
	};
	
	a.setStatus = function ( st ) {
		a.eSt = st;
	}
	
	a.setEvAccountId = function ( id ) {
		a.eAcId = id;
	}
	
	a.setValues = function( val1, val2, val3 ) {
		if ( val1 !== undefined ) {
			a.eVal1 = val1;
		}
		else {
			a.eVal1 = 0.0;
		}
		if ( val2 !== undefined ) {
			a.eVal2 = val2;
		}
		else {
			a.eVal2 = 0.0;
		}
		if ( val3 !== undefined ) {
			a.eVal3 = val3;
		}
		else {
			a.eVal3 = 0.0;
		}
	};
	
	a.setCounts = function( ct1, ct2, ct3 ) {
		if ( ct1 !== undefined ) {
			a.eCt1 = ct1;
		}
		else {
			a.eCt1 = 1;
		}
		if ( ct2 !== undefined ) {
			a.eCt2 = ct2;
		}
		else {
			a.eCt2 = 0;
		}
		if ( ct3 !== undefined ) {
			a.eCt3 = ct3;
		}
		else {
			a.eCt3 = 0;
		}
	};
	
	a.setDomain = function( ckeDomain ) {
		ckeDomain = ckeDomain.replace( /^www\./i, '.' );
		if ( ckeDomain.indexOf( '.' ) == 0 ) {
			a.ckeDomain = ckeDomain;
		}
		else {
			a.ckeDomain = '.' + ckeDomain;
		}
	};
	
	a.setTckDomain = function( tckDomain ) {
		a.tckDomain = tckDomain;
	};
	
	
	a.trackEvent = function( eId, eMcId, eStatus, eCur ) {
		a.checkSession();
		
		var qs = '';
		
		if ( eId !== undefined && eId != 'undefined' ) {
			a.eId = eId;
		}
		
		if ( eMcId !== undefined && eMcId != 'undefined' ) {
			a.eMcId = eMcId;
		}

		if ( eStatus !== undefined && eStatus != 'undefined' ) {
			a.eSt = eStatus;
		}

		if ( eCur !== undefined && eCur != 'undefined' ) {
			a.eCur = eCur;
		}

		var currentCall = a.cId + a.eId + a.eMcId + a.eCur + a.eSt;
		for( call in a.prevCalls ) {
			if ( a.prevCalls[call] == currentCall ) {
				return true;
			}
		}
		a.prevCalls.push( currentCall );

		qs += '?' + a.cIdTag + '=' + encodeURIComponent( a.cId );
		qs += '&' + a.eIdTag + '=' + encodeURIComponent( a.eId );

		if ( a.eMcId != '' ) {
			qs += '&' + a.eMcIdTag + '=' + encodeURIComponent( a.eMcId );
		}

		if ( a.eCt1 != 0 ) {
			qs += '&' + a.eCt1Tag + '=' + encodeURIComponent( a.eCt1 );	
		}
		if ( a.eCt2 != 0 ) {
			qs += '&' + a.eCt2Tag + '=' + encodeURIComponent( a.eCt2 );	
		}
		if ( a.eCt3 != 0 ) {
			qs += '&' + a.eCt3Tag + '=' + encodeURIComponent( a.eCt3 );	
		}
	
		if ( a.eVal1 != 0.0 ) {
			qs += '&' + a.eVal1Tag + '=' + encodeURIComponent( a.eVal1 );	
		}
		if ( a.eVal2 != 0.0 ) {
			qs += '&' + a.eVal2Tag + '=' + encodeURIComponent( a.eVal2 );	
		}
		if ( a.eVal3 != 0.0 ) {
			qs += '&' + a.eVal3Tag + '=' + encodeURIComponent( a.eVal3 );	
		}

		if ( a.eCur != '' ) {
			qs += '&' + a.eCurTag + '=' + encodeURIComponent( a.eCur );
		}

		if ( a.eAcId != '' ) {
			qs += '&' + a.eAcIdTag + '=' + encodeURIComponent( a.eAcId );
		}
		
		if ( a.clkId == null ) {
			a.clkId = ___kCk.get( 'K_' + a.cId );
			if ( a.clkId !== null ) {
				qs += '&' + a.clkIdTag + '=' + encodeURIComponent( a.clkId );
			}
		}
		else {
			qs += '&' + a.clkIdTag + '=' + encodeURIComponent( a.clkId );
		}	

		a.url = '';
		if ( a.loc.protocol == 'https:' || a.tckDomain == '' ) {
			a.url = 'k.keyade.com'
		}
		else if ( a.tckDomain != '' ) {
			a.url = a.tckDomain;
		}

		a.url = a.loc.protocol + '//' + a.url + a.imgPath + qs;	
		var img = new Image( 1, 1 );
		img.src = a.url;
		img.onload = function() { a.foo() };

		return true;
	}
	
	a.createWrapper = function( obj, method ) {
		return function(){
			return method.apply( obj, arguments );
		};
	}

	a.addEventCallback = function( obj, eventName, callback ) {
		if( obj.addEventListener ) { 
			obj.addEventListener( eventName, callback, false );
		}
		else if( obj.attachEvent ) {
			obj.attachEvent( 'on' + eventName, callback );
		}
		return;
	}

	a.checkSession = function() {
		if ( a.inSession == -1 ) {
			_kTck.catchId( a.cId, 30, a.ckeDomain );
			if ( _kTck.clkId != null ) {
				a.clkId = _kTck.clkId;
				a.inSession = 1;
			}
			else {
				a.inSession = 0;
			}
		}
	}
}


var _kTck = {
	clkId: null,
	nav : '',
	getNav : function() {
		if ( _kTck.nav == '' ) {
			if ( navigator.userAgent ) {
				if ( navigator.userAgent.indexOf( 'MSIE' ) != -1 ) {
					_kTck.nav = 'ie';
				}
				else if ( navigator.userAgent.indexOf( 'AppleWebKit' ) != -1
					|| navigator.userAgent.indexOf( 'Safari' ) != -1
					|| navigator.userAgent.indexOf( 'KHTML' ) != -1
					|| navigator.userAgent.indexOf( 'Chrome' ) != -1
					|| navigator.userAgent.indexOf( 'OmniWeb' ) != -1
					|| navigator.userAgent.indexOf( 'iCab' ) != -1 ) {
					_kTck.nav = 'sf'
				}
				else if ( navigator.userAgent.indexOf( 'Firefox' ) != -1
					|| navigator.userAgent.indexOf( 'Camino' ) != -1
					|| navigator.userAgent.indexOf( 'Netscape' ) != -1 
					|| navigator.userAgent.indexOf( 'Gecko' ) != -1 ) {
					_kTck.nav = 'ns';
				}
				else {
					_kTck.nav = 'ot';
				}
			}
			else {
				_kTck.nav = 'ot';
			}
		}
		return _kTck.nav;
	},
	idCatched : false,
	addEventCallback : function( obj, eventName, callback ) {
		if( obj.addEventListener ) { 
			obj.addEventListener( eventName, callback, false );
		}
		else if( obj.attachEvent ) {
			obj.attachEvent( 'on' + eventName, callback );
		}
		return;
	},
	getTracker : function( cId, tckDomain, ckeDomain ) {
		return new ___kTev( cId, tckDomain, ckeDomain  );
	},
	getViewTracker : function( cId, tckDomain, ckeDomain ) {
		return new ___kTpv( cId, tckDomain, ckeDomain );	
	},
	catchId : function( cId, lifeTime, ckeDomain ) {
		if ( _kTck.idCatched ) {
			return _kTck.clkId;
		}
		
		if ( lifeTime === undefined || lifeTime == 'undefined' ) {
			lifeTime = 30;
		}
		if ( ckeDomain === undefined || ckeDomain == 'undefined' ) {
			var loc = ( window.top != window ) ? window.parent.location : window.location;
			ckeDomain = loc.hostname.replace( /^www\./ig, '.' );
		}
		else if ( ckeDomain.indexOf( '.' ) != 0 ) {
			ckeDomain = '.' + ckeDomain;
		}
	
		var qs = new ___kPQs();
		
		if ( qs.contains( 'trackingId' ) ) {
			_kTck.clkId = qs.get( 'trackingId' );
		}
		else if ( qs.contains( 'kTckId' ) ) {
			_kTck.clkId = qs.get( 'kTckId' );
		}
		else if ( qs.contains( 'kaClkId' ) ) {
			_kTck.clkId = qs.get( 'kaClkId' );
		}
		else if ( qs.contains( 'kClkId' ) ) {
			_kTck.clkId = qs.get( 'kClkId' );
		}
		else if ( qs.contains( 'slid' ) ) {
			_kTck.clkId = qs.get( 'slid' );
		}
	
		if ( _kTck.clkId != null ) {
			___kCk.set( 'K_' + cId, _kTck.clkId, 30, ckeDomain );
			___kCk.set( 'K_lm_' + cId, _kTck.clkId, 1 / 24 / 2, ckeDomain );
			___kCk.set( 'K_sess_' + cId, _kTck.clkId, -1, ckeDomain );
		}
		else {
			_kTck.clkId = ___kCk.get( 'K_' + cId );
		}
		_kTck.idCatched = true;
		return _kTck.clkId;
	}
};

