function JSONscriptRequest(fullUrl) {
    this.fullUrl = fullUrl; 
    this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
    this.headLoc = document.getElementsByTagName("head").item(0);
    this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++;
}

JSONscriptRequest.scriptCounter = 1;

JSONscriptRequest.prototype.buildScriptTag = function () {

    this.scriptObj = document.createElement("script");
    
    this.scriptObj.setAttribute("type", "text/javascript");
    this.scriptObj.setAttribute("charset", "utf-8");
    this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
    this.scriptObj.setAttribute("id", this.scriptId);
}
 
JSONscriptRequest.prototype.removeScriptTag = function () {
    this.headLoc.removeChild(this.scriptObj);  
}

JSONscriptRequest.prototype.addScriptTag = function () {
    this.headLoc.appendChild(this.scriptObj);
}


var sequenceId = 0;
var sequenceGuid = guid();
trackInit();

function S4() {
   return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}

function guid() {
   return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

function registerElementClick(regElement) {
	$(regElement).observe('click', trackElement);
}

function trackFlash(elId, elName) {
	var uniqueCode;
        if (!ReadCookie('bd-'+bd_clientId)) {
        	uniqueCode = guid();
        	Set_Cookie('bd-'+bd_clientId, uniqueCode, '365','/');
        } else {
        	uniqueCode = ReadCookie('bd-'+bd_clientId);
        }
	sequenceId ++;
	var elemId = elId;
	var elemName = elName;
	var elemURL = location.href;
	req='http://staging-101.bluediesel.com/tracking/services/tracker.php?output=json&callback=getGeo&clientId=' + bd_clientId + '&visitorId=' + uniqueCode + '&eventId=' + elemId + '&eventName=' + elemName + '&eventPage=' + elemURL + '&eventSeqId=' + sequenceId + '&eventSeqGuid=' + sequenceGuid;
	bObj = new JSONscriptRequest(req);
	bObj.buildScriptTag();
	bObj.addScriptTag();
	//new Ajax.Request('http://www.threegerbers.com/tracking/includes/tracking/lib/php/tracker.php', {
  	//	parameters: { clientId: bd_clientId, visitorId: uniqueCode, eventId: elemId, eventName:  elemName, eventPage: elemURL, eventSeqId: sequenceId, eventSeqGuid: sequenceGuid }}
	//)
}

function trackInit() {
	var uniqueCode;
        if (!ReadCookie('bd-'+bd_clientId)) {
        	uniqueCode = guid();
        	Set_Cookie('bd-'+bd_clientId, uniqueCode, '365','/');
        } else {
        	uniqueCode = ReadCookie('bd-'+bd_clientId);
        }
	sequenceId ++;
	var elemId = "PageView";
	//var elemName = location.href;
        var elemName = document.title;
	var elemURL = location.href;
	req='http://staging-101.bluediesel.com/tracking/services/tracker.php?output=json&callback=getGeo&clientId=' + bd_clientId + '&visitorId=' + uniqueCode + '&eventId=' + elemId + '&eventName=' + elemName + '&eventPage=' + elemURL + '&eventSeqId=' + sequenceId + '&eventSeqGuid=' + sequenceGuid;
	bObj = new JSONscriptRequest(req);
	bObj.buildScriptTag();
	bObj.addScriptTag();
	//new Ajax.Request('http://threegerbers.com/tracking/includes/tracking/lib/php/tracker.php', {
  	//	parameters: { clientId: bd_clientId, visitorId: uniqueCode, eventId: elemId, eventName:  elemName, eventPage: elemURL, eventSeqId: sequenceId, eventSeqGuid: sequenceGuid }}
	//)
}

function trackElement(event) {
	var uniqueCode;
        if (!ReadCookie('bd-'+bd_clientId)) {
        	uniqueCode = guid();
        	Set_Cookie('bd-'+bd_clientId, uniqueCode, '365','/');
        } else {
        	uniqueCode = ReadCookie('bd-'+bd_clientId);
        }
	sequenceId ++;
	var element = event.element();
	var elemId = element.id;
	var elemName = element.name;
	var elemURL = location.href;
	req='http://staging-101.bluediesel.com/tracking/services/tracker.php?output=json&callback=getGeo&clientId=' + bd_clientId + '&visitorId=' + uniqueCode + '&eventId=' + elemId + '&eventName=' + elemName + '&eventPage=' + elemURL + '&eventSeqId=' + sequenceId + '&eventSeqGuid=' + sequenceGuid;
	bObj = new JSONscriptRequest(req);
	bObj.buildScriptTag();
	bObj.addScriptTag();
	//new Ajax.Request('http://www.threegerbers.com/tracking/includes/tracking/lib/php/tracker.php', {
  	//	parameters: { clientId: bd_clientId, visitorId: uniqueCode, eventId: elemId, eventName:  elemName, eventPage: elemURL, eventSeqId: sequenceId, eventSeqGuid: sequenceGuid }}
	//)
}

function ReadCookie(cookieName) {
	var theCookie=""+document.cookie;
	var ind=theCookie.indexOf(cookieName);
	if (ind==-1 || cookieName=="") return null;
	var ind1=theCookie.indexOf(';',ind);
	if (ind1==-1) ind1=theCookie.length;
	return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
}

function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}

	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ( ( path ) ? ";path=" + path : "" ) + ( ( domain ) ? ";domain=" + domain : "" ) + ( ( secure ) ? ";secure" : "" );
}

