var gaSwfHandle;
var country = null; 
var gaAcctId = null;
var gaReportingPageRoot = null;
var siteMode = 'unknown';
var affiliate = 'unknown';
var pathToGaSwf = 'gaTracker.swf';
var heartbeatTimeInSec = 0;

// in order for this to work, calling page must have an empty div named "gaSwf" to populate with swf
// also the page must have swfobject defined
function configureGa(gaId, aff, mode, pathToSwf) {
	setGaAcctId(gaId);
	setTrackingRoot(aff, mode);
	setPathToGaSwf(pathToSwf);
	createGaSwf();
}

function setGaAcctId(value) {
	gaAcctId = value;
}

function setTrackingRoot(aff, mode) {
	// e.g. aff="zain", mode="standard"
	siteMode = mode; // should be standard.  just putting in hook to add future embed
	affiliate = aff;
	gaReportingPageRoot = "ga/"+affiliate+"/"+siteMode+"/";
}


function setPathToGaSwf(path) {
	pathToGaSwf = path;
}

function createGaSwf() {
	// build the swf for flash GA
	var gaObj = new SWFObject(pathToGaSwf,'ga',1,1,'9');
	gaObj.addParam("allowScriptAccess","always");
	gaObj.addParam("wmode","transparent");
	gaObj.addVariable("gaAcctNumber",gaAcctId);
	gaObj.addVariable("onReadyFnName","gaSwfReady");
	gaObj.write("gaSwf");
	gaSwfHandle = getGaSwf("ga");
}

function getGaSwf(gid) {
	if(navigator.appName.indexOf("Microsoft") != -1) return window[gid];
	else return document[gid];
}

function gaSwfReady() {
	//trackPageView();
}	

function trackCategoryClick(name) {
	var virtualPageName = gaReportingPageRoot+"category_click/"+name;
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackCategoryChannelClick(catName, chanName) {
	var virtualPageName = gaReportingPageRoot+"category_click/"+catName+"/"+chanName;
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackChannelClick(name) {
	var virtualPageName = gaReportingPageRoot+"channel_click/"+name;
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackVideoStart(encodedChannelTitle,encodedVideoTitle) {
	var virtualPageName = gaReportingPageRoot+"video_start/"+encodedChannelTitle+"/"+encodedVideoTitle;
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackVideoEnd(encodedChannelTitle,encodedVideoTitle) {
	var virtualPageName = gaReportingPageRoot+"video_end/"+encodedChannelTitle+"/"+encodedVideoTitle;
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackHeartbeat() {
	var virtualPageName = gaReportingPageRoot+"heartbeat/"+heartbeatTimeInSec+"s";
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
	setTimeout(trackHeartbeat,15000);
	heartbeatTimeInSec += 15;
}

function trackPageView() {
	var virtualPageName = gaReportingPageRoot+"pageview";
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackAdClick(ad_src) {
	var virtualPageName = gaReportingPageRoot+"ad/"+ad_src;
	if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
}

function trackSave(fid) {
	try {
		var virtualPageName = gaReportingPageRoot+"save/"+fid;
		if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
	} catch (err) {}
}

function trackContributor(loggedInUser, nightOwner) {
	try {
		var virtualPageName = gaReportingPageRoot+"contribute/"+loggedInUser+"/"+nightOwner;
		if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
	} catch (err) {}
}

function trackStartClicked() {
	try {
		var virtualPageName = gaReportingPageRoot+"startClicked";
		if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
	} catch (err) {}
}

function trackContributeClicked() {
	try {
		var virtualPageName = gaReportingPageRoot+"contributeClicked";
		if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
	} catch (err) {}
}

function trackOwnNightClicked() {
	try {
		var virtualPageName = gaReportingPageRoot+"ownNightClicked";
		if (gaSwfHandle) gaSwfHandle.trackPageview(virtualPageName);
	} catch (err) {}
}
