var _kCk = {
	set : function( _kN, _kV, _kD, _kDmn ) {
		var expire = '';
		if ( _kD != undefined ) {
			var d = new Date();
			d.setTime( d.getTime() + ( 86400000 * parseFloat( _kD ) ) );
			_kExp = '; expires=' + d.toGMTString();
		}
		if ( _kDmn == undefined ) {
			_kDmn = document.location.hostname;
		}
		return ( document.cookie = escape( _kN ) + '=' + escape( _kV || '' ) + _kExp + '; domain=' + _kDmn + '; path=/' );
	},
	get : function( _kN ) {
		var _kC = document.cookie.match( new RegExp( '(^|;)\\s*' + escape( _kN ) + '=([^;\\s]*)' ) );
		return ( _kC ? unescape( _kC[2] ) : null );
	},
	erase : function( _kN ) {
		var _kC = _kCk.get( _kN ) || true;
		_kCk.set( _kN, '', -1 );
		return _kC;
	},
	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._kParams = {};
	a._kQs = '';
		
	a.get = function( key, default_ ) {
		var kValue = a._kParams[key];
		return ( kValue != null ) ? kValue : default_ ;
	};
	
	a.contains = function( key ) {
		var kValue = a._kParams[key];
		return ( kValue != null );
	};
	
	a._kQs = location.search.substring( 1, location.search.length ).replace( /\?/g, '&' );
	
	if ( a._kQs.length == 0 ) return;

	a._kQs = a._kQs.replace(/\+/g, ' ');
	
	var kArgs = a._kQs.split( '&' ); 
	
	for (var i = 0; i < kArgs.length; i++) {
		var kPair = kArgs[i].split( '=' );
		var kName = decodeURIComponent( kPair[0] );
		
		var kValue = ( kPair.length == 2 )
			? decodeURIComponent( kPair[1] )
			: kName;
		
		a._kParams[kName] = kValue;
	}
};

var ___kTpv = function( cId, domain ) {
	var a = this;
	a._cIdTag = 'cId';
	a._eIdTag = 'eId';
	a._trIdTag = 'trackingId';
	
	a._kcCId = ( cId !== undefined ) ? cId : 0;
	a._kcEId = 0;	a._kcTrId = null;

	a._tckDomain = ( domain !== undefined ) ? domain : '';

	a._kLoc = document.location;
	a._kHost = a._kLoc.hostname.replace( /^www\./ig, '.' );
	
	a._kUrl = '';

	a._imgPath = '/kpv/pageview.gif';
	
	a._kPrevCalls = {};
	
	// functions
	a._kFoo = function() { return; };
	
	a.setEventId = function( id ) {
		a._kcEId = id;
	}
	
	a.setClientId = function( id ) {
		a._kcCId = id;
	}

	a.setTckId = function( id ) {
		a._kcTrId = id;
	}

	a.addTckIdToLink = function( anc ) {
		a._kcTrId = _kCk.get( 'K_' + a._kcCId );
		if ( a._kcTrId !== null ) {
			anc.href += ( ( anc.href.indexOf( '?' ) > -1 ) ? '&' : '?' ) + 'kTckId=' + a._kcTrId;
		}
	};
	
	a.trackPageView = function( eId ) {
	}
	
	if ( !_kTck.idCatched ) {
		var _kQs = new _kPQs();
		if ( _kQs.contains( 'trackingId' ) ) {
			_kCk.set( 'K_' + a._kcCId, _kQs.get( 'trackingId' ), 30, a._kHost );
		}
		else if ( _kQs.contains( 'kTckId' ) ) {
			_kCk.set( 'K_' + a._kcCId, _kQs.get( 'kTckId' ), 30, a._kHost);
		}
	}	
}


var ___kTck = function( cId, domain ) {
	var a = this;
	a._cIdTag = 'cId';
	a._eIdTag = 'eId';
	a._mtEIdTag = 'tId';
	a._eValTag = 'tVal';
	a._eCurTag = 'tCur';
	a._trIdTag = 'trackingId';
	
	a._kcCId = ( cId !== undefined ) ? cId : 0;
	a._kcEId = 0;
	a._kcMtEId = '';
	a._kcEVal = 0;
	a._kcECur = '';
	a._kcTrId = null;

	a._tckDomain = ( domain !== undefined ) ? domain : '';

	a._kLoc = document.location;
	a._kHost = a._kLoc.hostname.replace( /^www\./ig, '.' );
	
	a._kUrl = '';

	a._imgPath = '/kc/conversions.gif';
	
	a._kPrevCalls = {};
	
	// functions
	a._kSleep = function( delay ) {
	    var start = new Date().getTime();
	    while ( new Date().getTime() < start + delay );
	    return true;
	}

	a._kFoo = function() { return; };
	
	a.setEventId = function( id ) {
		a._kcEId = id;
	}
	
	a.setClientId = function( id ) {
		a._kcCId = id;
	}

	a.setTckId = function( id ) {
		a._kcTrId = id;
	}
	
	a.setMerchantEventId = function ( id ) {
		a._kcMtEId = id;
	}
	
	a.setCurrency = function( curr ) {
		a._kcECur = curr;
	};
	
	a.setOrderValue = function( value ) {
		a._kcEVal = value;
	};
	
	a.addTckIdToLink = function( anc ) {
		a._kcTrId = _kCk.get( 'K_' + a._kcCId );
		if ( a._kcTrId !== null ) {
			anc.href += ( ( anc.href.indexOf( '?' ) > -1 ) ? '&' : '?' ) + 'kTckId=' + a._kcTrId;
		}
	};
	
	a.trackEvent = function( eId, id, value, curr ) {
		var _u = '';

		a._kcEId = eId;
		
		if ( id !== undefined ) {
			a._kcMtEId = id;
		}
		
		if ( value !== undefined ) {
			a._kcEVal = value;
		}
		
		if ( curr !== undefined ) {
			a._kcECur = curr;
		}
		
		var _call = a._kcCId + a._kcEId + a._kcMtEId + a._kcEVal + a._kcECur;
		if ( a._kPrevCalls[_call] !== true ) {
			a._kPrevCalls[_call] = true;
		}
		else {
			return true;
		}
		
		// mandatory values
		_u += '?' + a._cIdTag + '=' + encodeURIComponent( a._kcCId );
		_u += '&' + a._eIdTag + '=' + encodeURIComponent( a._kcEId );
		
		if ( a._kcMtEId != '' ) {
			_u += '&' + a._mtEIdTag + '=' + encodeURIComponent( a._kcMtEId );
		}
		
		if ( a._kcEVal != 0 ) {
			_u += '&' + a._eValTag + '=' + encodeURIComponent( a._kcEVal );
		}
		
		if ( a._kcECur != '' ) {
			_u += '&' + a._eCurTag + '=' + encodeURIComponent( a._kcECur );
		}
		
		if ( a._kcTrId == null ) {
			a._kcTrId = _kCk.get( 'K_' + a._kcCId );
			if ( a._kcTrId !== null ) {
				_u += '&' + a._trIdTag + '=' + encodeURIComponent( a._kcTrId );
			}
		}
		else {
			_u += '&' + a._trIdTag + '=' + encodeURIComponent( a._kcTrId );
		}	

		a._kUrl = '';
		if ( a._kLoc.protocol == 'https:' || a._tckDomain == '') {
			a._kUrl = 'k.keyade.com'
		}
		else {
			a._kUrl = a._tckDomain;
		}
		
		a._kUrl = a._kLoc.protocol + '//' + a._kUrl + a._imgPath + _u;
	
		var _img = new Image( 1, 1 );
		_img.onload = function() { a._kFoo(); };
		_img.src = a._kUrl;
	//	a._kSleep( 300 );
		
		return true;
	}
		
	if ( !_kTck.idCatched ) {
		var _kQs = new _kPQs();
		if ( _kQs.contains( 'trackingId' ) ) {
			_kCk.set( 'K_' + a._kcCId, _kQs.get( 'trackingId' ), 30, a._kHost );
		}
		else if ( _kQs.contains( 'kTckId' ) ) {
			_kCk.set( 'K_' + a._kcCId, _kQs.get( 'kTckId' ), 30, a._kHost);
		}
	}
}

var _kTck = {
	idCatched : false,
	getTracker : function( cId, domain ) {
		return new ___kTck( cId, domain );
	},
	getViewTracker : function( cId, domain ) {
		return new ___kTpv( cId, domain );	
	},
	catchId : function( cId, lifeTime ) {
		if ( lifeTime === undefined ) {
			lifeTime = 30;
		}
		
		cookieDomain = document.location.hostname.replace( /^www\./ig, '.' );

		var _kQs = new _kPQs();
		if ( _kQs.contains( 'trackingId' ) ) {
			_kCk.set( 'K_' + cId, _kQs.get( 'trackingId' ), lifeTime, cookieDomain );
		}
		else if ( _kQs.contains( 'kTckId' ) ) {
			_kCk.set( 'K_' + cId, _kQs.get( 'kTckId' ), lifeTime, cookieDomain );
		}
		_kTck.idCatched = true;
	}
};
