/**
 * JS used for events
 *
 * @author Imagini 
 */

// generates a random session ID to (length) characters
generateSessionId = function(){
	var length = 32, // length
	chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
	sessionId = "";
	for(var x = 0 ; x < length ; x++){
	i = Math.floor(Math.random() * 62);
	sessionId += chars.charAt(i);
	}
	return sessionId;
}

// gets session cookie value
getSessionCookieValue = function(cookieName){
	var exp = new RegExp (escape(cookieName) + "=([^;]+)");
	if(exp.test(document.cookie + ";")){
		exp.exec(document.cookie + ";");
		return unescape(RegExp.$1);
	}else{
		return false;
	}
}

// tests if session cookies enabled
testSessionCookie = function(){
	document.cookie = "testSessionCookie=Enabled";
	if(getSessionCookieValue("testSessionCookie")!="Enabled"){
		return false;
	}
	return true;
}

// sets the session cookie
setSessionCookieTest = function(name, value){
	if(testSessionCookie()){
	document.cookie = escape(name) + "=" + escape(value) + "; path=/";
		return true;
	}else{
		return false;
	}
}

// pop up window script (used for when tracking links)
openNewWindow = function(url){
	var popupWin = window.open(url,
 					'open_window',
 					'menubar, toolbar, location, directories, status, scrollbars, resizable, dependent, width=640, height=480, left=0, top=0')
}

// track user clicks
trackUserClick = function(o, objType, extra, objId){
	var sType = objType,
	sData = extra,
	sAction = 'CLICK',
	linkConfig = null;
	
	if(o.href){
		var linkConfig = {
			url : o.href,
			target : (o.target)? 'blank':'self'
		};
	}

	var sId = (objId)? objId:o.href;
	sendUserActionEvent(sAction, sType, sData, sId, linkConfig);
	return true;
}

// share events
sendShareEvent = function(obj){

	var action = 'CLICK';
	var type = 'SHARE';
	var data = '';
	
	switch(obj){
		case 'vdna_share_em':
			var id = 'EMAIL';
		break;
		case 'vdna_share_fb':
			var id = 'FACEBOOK';
		break;
		case 'vdna_share_tw':
			var id = 'TWITTER';
		break;
		case 'vdna_share_my':
			var id = 'MYSPACE';
		break;
		default:
			var id = '';
		break;
	}
	
	sendUserActionEvent(action, type, data, id);

}

// clicked on the form
clickedForm = function(){

	var action = 'CLICK';
	var type = 'REGFORM';
	var data = '';
	
	switch(obj){
		case 'vdna_share_em':
			var id = 'EMAIL';
		break;
		case 'vdna_share_fb':
			var id = 'FACEBOOK';
		break;
		case 'vdna_share_tw':
			var id = 'TWITTER';
		break;
		case 'vdna_share_my':
			var id = 'MYSPACE';
		break;
		default:
			var id = '';
		break;
	}
	
	sendUserActionEvent(action, type, data, id);

}

// adds tracking image
createEventImage = function(url){
	
	var img = document.createElement('IMG');
	
	img.src = url;
	img.alt = '';
	img.style.visibility = 'hidden';
	img.height = '1';
	img.width = '1';
	
	document.body.appendChild(img);
	
	/*
	$(img).attr('src',url);
	$(img).attr('alt','');
	$(img).css('visibility', 'hidden');
	$(img).css('height', '1px');
	$(img).css('width', '1px');
	$('body').append($(img));
	*/
}

// esVDNAAppImpressionEvent
sendImpressionEvent = function(type){
	var impressionEvent = {
		"esVDNAAppImpressionEvent" : [
			{
				"Ba4":trackingData.Ba4,
				"Ba5":window.location.href,
				"Ba6":(document.referrer == "" || document.referrer == null || document.referrer == "null") ? (typeof(window.http_referrer) == "undefined" ? "" : window.http_referrer) : document.referrer,
				"Ba20":trackingData.Ba20,
				"Ba24":(VDNA_config.userID)? VDNA_config.userID:'0',
				"Ba25":getSessionCookieValue('vdnaSessionId'),
				"Ba26":type
			}
		]
	};
	
	var eventsurl = 'http://general.visualdna-stats.com/events';
	if(window.location.href.toLowerCase().indexOf('.vm.')!=-1 || window.location.href.toLowerCase().indexOf('.staging.')!=-1){
		eventsurl = 'http://events.test.visualdna.com/events';
	}
	var imgSrc = eventsurl + '?b=GenericApp_v_0.1&enc=json&e=' + encodeURIComponent(JSON.stringify(impressionEvent));
	createEventImage(imgSrc);

	// google analytics event tracking
	VDNA_GAET.track(trackingData.Ba4, type, trackingData.Ba24, "");
	
	return true;
}

// esVDNAAppStatementEvent
sendStatementEvent = function(statement,action){
	var statementEvent = {
		"esVDNAAppStatementEvent" : [
			{
				"Ba4":trackingData.Ba4,
				"Ba11":trackingData.Ba11,
				"Ba13":statement,
				"Ba18":action,
				"Ba20":trackingData.Ba20,
				"Ba24":(VDNA_config.userID)? VDNA_config.userID:'0',
				"Ba25":getSessionCookieValue('vdnaSessionId')
			}
		]
	};
	/*
	var ifr = document.createElement("DIV");
	ifr.innerHTML = '<iframe style="visibility:hidden" height="1" width="1" name="ImTrackingStatement'+action+statement+'"></iframe>';
	document.body.appendChild(ifr);

	document.forms.ImTrackingForm.e.value= JSON.stringify(statementEvent);
	document.forms.ImTrackingForm.target="ImTrackingStatement"+action+statement;
	document.forms.ImTrackingForm.submit();
	return true;
	*/
	
	var eventsurl = 'http://general.visualdna-stats.com/events';
	if(window.location.href.toLowerCase().indexOf('.vm.')!=-1 || window.location.href.toLowerCase().indexOf('.staging.')!=-1){
		eventsurl = 'http://events.test.visualdna.com/events';
	}
	var imgSrc = eventsurl + '?b=GenericApp_v_0.1&enc=json&e=' + encodeURIComponent(JSON.stringify(statementEvent));
	createEventImage(imgSrc);
	
	// google analytics event tracking
	VDNA_GAET.track(trackingData.Ba4, statement, action, "");
	
	return true;
}

// esVDNAAppModuleStartEvent
sendModuleStartEvent = function(){
	var statementEvent = {
		"esVDNAAppModuleStartEvent" : [
			{
				"Ba4":trackingData.Ba4,
				"Ba11":trackingData.Ba11,
				"Ba20":trackingData.Ba20,
				"Ba24":(VDNA_config.userID)? VDNA_config.userID:'0',
				"Ba25":getSessionCookieValue('vdnaSessionId')
			}
		]
	};
	/*
	var ifr = document.createElement("DIV");
	ifr.innerHTML = '<iframe style="visibility:hidden" height="1" width="1" name="ImTrackingModuleStart"></iframe>';
	document.body.appendChild(ifr);
	
	document.forms.ImTrackingForm.e.value= JSON.stringify(statementEvent);
	document.forms.ImTrackingForm.target="ImTrackingModuleStart";
	document.forms.ImTrackingForm.submit();
	return true;
	*/
	
	var eventsurl = 'http://general.visualdna-stats.com/events';
	if(window.location.href.toLowerCase().indexOf('.vm.')!=-1 || window.location.href.toLowerCase().indexOf('.staging.')!=-1){
		eventsurl = 'http://events.test.visualdna.com/events';
	}
	var imgSrc = eventsurl + '?b=GenericApp_v_0.1&enc=json&e=' + encodeURIComponent(JSON.stringify(statementEvent));
	createEventImage(imgSrc);
	
	// google analytics event tracking
	VDNA_GAET.track(trackingData.Ba4, trackingData.Ba11, "VDNAAppModuleStartEvent", "");
	
	return true;
}

// esVDNAAppModuleCompleteEvent
function sendModuleCompleteEvent(responseId){
	var statementEvent = {
		"esVDNAAppModuleCompleteEvent" : [
			{
				"Ba4":trackingData.Ba4,
				"Ba11":trackingData.Ba11,
				"Ba20":trackingData.Ba20,
				"Ba23":responseId,
				"Ba24":(VDNA_config.userID)? VDNA_config.userID:'0',
				"Ba25":getSessionCookieValue('vdnaSessionId')
			}
		]
	};
	/*
	var ifr = document.createElement("DIV");
	ifr.innerHTML = '<iframe style="visibility:hidden" height="1" width="1" name="ImTrackingModuleEnd"></iframe>';
	document.body.appendChild(ifr);
	document.forms.ImTrackingForm.e.value= JSON.stringify(statementEvent);
	document.forms.ImTrackingForm.target="ImTrackingModuleEnd";
	document.forms.ImTrackingForm.submit();
	*/
	
	var eventsurl = 'http://general.visualdna-stats.com/events';
	if(window.location.href.toLowerCase().indexOf('.vm.')!=-1 || window.location.href.toLowerCase().indexOf('.staging.')!=-1){
		eventsurl = 'http://events.test.visualdna.com/events';
	}
	var imgSrc = eventsurl + '?b=GenericApp_v_0.1&enc=json&e=' + encodeURIComponent(JSON.stringify(statementEvent));
	createEventImage(imgSrc);
	
	// google analytics event tracking
	VDNA_GAET.track(trackingData.Ba4, trackingData.Ba11, "VDNAAppModuleCompleteEvent", "");
	return true;
}

// esVDNAUserActionEvent
sendUserActionEvent = function(sAction, sType, sData, sId, linkConfig){
	
	var actionEvent = {
		"esVDNAAppUserActionEvent" : [
			{
				"Ba4":trackingData.Ba4,
				"Ba5":window.location.href,
				"Ba6":(document.referrer == "" || document.referrer == null || document.referrer == "null") ? (typeof(window.http_referrer) == "undefined" ? "" : window.http_referrer) : document.referrer,
				"Ba18":sAction,
				"Ba20":trackingData.Ba20,
				"Ba24":(VDNA_config.userID)? VDNA_config.userID:'0',
				"Ba25":getSessionCookieValue('vdnaSessionId'),
				"Ba26":sType,
				"Ba27":sId,
				"Ba28":sData
			}
		]
	};
	
	var eventsurl = 'http://general.visualdna-stats.com/events';
	if(window.location.href.toLowerCase().indexOf('.vm.')!=-1 || window.location.href.toLowerCase().indexOf('.staging.')!=-1){
		eventsurl = 'http://events.test.visualdna.com/events';
	}
	var imgSrc = eventsurl + '?b=GenericApp_v_0.1&enc=json&e=' + encodeURIComponent(JSON.stringify(actionEvent));
	createEventImage(imgSrc);
	
	// google analytics event tracking
	VDNA_GAET.track(trackingData.Ba4, sAction + " - " + sType, sData + " / " + sId, "");
	
	return true;
}

// Google Analytics Event Tracking
var VDNA_GAET = {
	active: true,
	tries: 0,
	
	track: function(page, action, label, value)
	{
		if (VDNA_GAET.active && typeof(pageTracker) != "undefined")
		{
			// separate vm+staging events from live ones
			var env = "Live";
			if (window.location.href.toLowerCase().indexOf('.vm.') != -1 || window.location.href.toLowerCase().indexOf('.staging.') != -1)
			{
				env = "Dev + Staging";
			}

			if (value == null || value == '')
			{
		        pageTracker._trackEvent(env, page, action + " - " + label);
		    } 
			else 
			{
		        pageTracker._trackEvent(env, page, action + " - " + label, value);
		    }
		}
		else
		{
			if (VDNA_GAET.tries < 10)
			{
				setTimeout(function() { VDNA_GAET.track(page, action, label, value); }, 500);
			}
			
			VDNA_GAET.tries++;
		}
	}
};


// create session if not already there - must remain at end of file
if(!getSessionCookieValue('vdnaSessionId')){
	var sessionId = generateSessionId();
	setSessionCookieTest('vdnaSessionId', sessionId);
}
