var track_URL = "://sftrack.searchforce.net/SFConversionTracking/img.jpg?";

var sf_cookie_name = "sf_conv_info";
var jIncludeCustomParams = false; var jtrackOrganic = false; var jtrackDirect = false;
var jSEOPubName = 'SEO'; var jDirectCampName='Direct Traffic';
var jFlIncluded = false;var jLandEvtRec = false;var sfcookData;var jexecLngCode = false;var jexecConvCode = false;

var SFCookie =
{
	movie_id : 'sfFlsPix',
	swfSrc: '://sftrack.searchforce.net/SFConversionTracking/SFCookie.swf',
	flashIsInstalled : null,
	defaultFlashVersion : 9,
	swf_ready : false,
	flash_cookie : null,
	
	include : function(){
		jFlIncluded = false;
		var jprotocol = "http";
		if(window.location.protocol == "https:"){jprotocol = "https";}
		var src = jprotocol + this.swfSrc;
		var elmToReplace = document.getElementById('sf_fl_content');
		this.flashIsInstalled = this.checkForFlash(this.defaultFlashVersion);
		if(elmToReplace && this.flashIsInstalled){
			if (navigator.appName.indexOf("Microsoft") != -1){
				var obj = '<object id="' + this.movie_id + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1" height="1">';
				var param = '<param name="allowScriptAccess" value="always"/>';
				param += '<param name="movie" value="' + src + '"/>';
				var objEnd = '</object>';
				elmToReplace.innerHTML = obj + param + objEnd;	
			}else{
				var embed = '<embed id="' + this.movie_id + '" src="' + src + '" type="application/x-shockwave-flash" width="1" height="1" allowScriptAccess="always"/>';
				elmToReplace.innerHTML = embed;	
			}	
			jFlIncluded = true;
		}
	},
	checkForFlash : function (version){
		this.flashIsInstalled = false;
		if (navigator.plugins != null && (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]))
			this.flashIsInstalled = true;
		if(navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"])
			this.flashIsInstalled = true;
		 if(this.flashIsInstalled == false){
	        try{
	           var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
	           if(axo)this.flashIsInstalled = true;
	        } catch (e) {
	           this.flashIsInstalled = false;
	        }
	    }
		return this.flashIsInstalled;
	},
	initC: function()
	{
		this.swf_ready = this.get_movie();
	},
	delC: function(cookieName, key)
	{
		if(this.swf_ready && this.flash_cookie != null) 
			this.flash_cookie.sfDeleteCookie(cookieName, key);
	},
	getC: function(cookieName, key)
	{
		if(this.swf_ready && this.flash_cookie != null){
			var ret = this.flash_cookie.sfGetCookie(cookieName, key);
			return ((ret == 'null') ? '' : ret);
		}
	},
	setC: function(cookieName, key, val)
	{
		if(this.swf_ready && this.flash_cookie != null)
			this.flash_cookie.sfSetCookie(cookieName, key, val);
		
	},
	get_movie: function()
	{
		if (navigator.appName.indexOf("Microsoft") != -1)
			this.flash_cookie = document.getElementById(this.movie_id);
		else
			this.flash_cookie = document.embeds[this.movie_id];
		return ((this.flash_cookie) ? true : false);
	}
};

function sfFlashReady()
{
	SFCookie.initC();
	if(jexecLngCode == true && jLandEvtRec == false){
		trigger_sf_landing();
		jexecLngCode = false;
		sfcookData = '';
	}else if(jexecConvCode == true){
		ImageJSConversionProcess();
		jexecConvCode = false;
	}
}
window.onunload = function(){
	if(jexecLngCode == true && jLandEvtRec == false){
		trigger_sf_landing();
		jexecLngCode = false;
		sfcookData = '';
	}
};

function getSFQueryVariable(variable, query)
{
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable)
			return pair[1];
	}
	return "";
}
function generateGUID()
{
	var result, i, j;
	result = '';
	for(j=0; j<32; j++)
	{
		if( j == 8 || j == 12 || j == 16 || j == 20)
			result = result + '-';
		i = Math.floor(Math.random()*16).toString(16).toUpperCase();
		result = result + i;
	}
	return result;
}
function juump_set_cookie(jData)
{
	var expiryDate = getExpiryDate(window.jcexpire);
	
	var domain = juump_get_domain();
	if(jFlIncluded == true){
		SFCookie.setC(getSFFLCookieName(), sf_cookie_name, jData);
		SFCookie.setC(getSFFLCookieName(), 'expiry_date', expiryDate.toString());
	}
	//save browser cookie
	document.cookie= sf_cookie_name + "=" + escape(jData) + ((expiryDate) ? ";expires=" + expiryDate.toGMTString() : "") + ";path=/" +  ((domain) ? ";domain=" + domain : "");		
}
function juump_get_cookie(name)
{
	//Look for flash cookie
	if(jFlIncluded == true){
		var flCookData = SFCookie.getC(getSFFLCookieName(), sf_cookie_name);
		if(flCookData != undefined && flCookData != null && flCookData != ''){
			var flExpiresOn = SFCookie.getC(getSFFLCookieName(), 'expiry_date');
			if(new Date(flExpiresOn) >= new Date())
				return flCookData;
			else
				SFCookie.delC(getSFFLCookieName(), sf_cookie_name);
		}
	}
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf(prefix);
	if (begin == -1)
		return null;
	
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
	        end = dc.length;
	
	return unescape(dc.substring(begin + prefix.length, end));
}
function getExpiryDate(days)
{
	if(days == null || days == "null" || days == "")
        days = "30";
    if(days == "0" || days == 0) return null;
    var d = new Date();
    d.setDate(d.getDate()+ parseInt(days));
    return d;
}
function juump_get_domain(){
	var hostname = window.location.hostname;
	var tmpArray = hostname.split(".");
	var domain = "";
	if(tmpArray[tmpArray.length-1].length == 2 && (tmpArray[tmpArray.length-2].length == 2 || tmpArray[tmpArray.length-2].length == 3)){
		domain = "."+tmpArray[tmpArray.length-3]+"."+ tmpArray[tmpArray.length-2]+"."+ tmpArray[tmpArray.length-1];
	}else{
		domain = "."+tmpArray[tmpArray.length-2]+"."+tmpArray[tmpArray.length-1];
	}
	return domain;
}
function useCustomParams(){jIncludeCustomParams = true;}
function trackSEO(publisherName){
	if(publisherName != null && publisherName != undefined)
		jSEOPubName = publisherName;
	jtrackOrganic = true;
}
function trackDirectTraffic(campName){
	if(campName != null && campName != undefined)
		jDirectCampName = campName;
	jtrackDirect = true;
}
function getSFFLCookieName(){
	return 'sf_conv' + juump_get_domain();
}
function ImageJSConversionProcess(ctype,cval, coid, cvar1, cvar2, cvar3)
{
	var jprotocol = "http";
	if(window.location.protocol == "https:"){jprotocol = "https";}
	var trackUrl = jprotocol + track_URL;
	var jData = "" + juump_get_cookie(sf_cookie_name);
	var juAgent = navigator.userAgent;
	if (jData && jData != null && jData != "null" && jData.length > 0)
	{
		jData = jData.replace("je=", "_dummy=");
     	trackUrl = trackUrl + jData;
	
		if(!ctype) ctype = window.jconversion_type;
		if(!cval) cval = window.jValue;
		if(!coid) coid = window.jOrderID;
		if(!cvar1) cvar1 = window.jvar1;
		if(!cvar2) cvar2 = window.jvar2;
		if(!cvar3) cvar3 = window.jvar3;
		
		var jru = window.location;
		if(window.jru)
			jru = window.jru;
		
		trackUrl = trackUrl + "&joid=" + coid + "&jcv=" + cval + "&je=" + ctype + "&uag=" + juAgent;
		if(cvar1)
			trackUrl = trackUrl + "&jvar1=" + escape(cvar1);
		if(cvar2)
			trackUrl = trackUrl + "&jvar2=" + escape(cvar2);
		if(cvar3)
			trackUrl = trackUrl + "&jvar3=" + escape(cvar3);
			
		var convImg = new Image();
		convImg.src = trackUrl + "&jru=" + jru;
		convImg.onload=function() { jVoid(); };
	}else if(jFlIncluded == true){//try to see if there is flash cookie
		jexecConvCode = true;
	}
}
function jVoid() { return; }
function ImageJSLandingProcess()
{
	var acctId, adOutletName, trackerType, mediaType, cName;
	var cName='', adgName='', kwName='', matchType='', adName='';
	var isSEO = false;
	if(jURLData.indexOf("jsid=") < 0){
		trackerType = 1;//JS tracking mech
		acctId = window.jAccountID;
		if(jIncludeCustomParams == true && jURLData != undefined && jURLData != null && jURLData != ""){
			adOutletName = getSFQueryVariable(window.jSource, jURLData);
			cName = getSFQueryVariable(window.jCampaignName, jURLData);
			mediaType = getSFQueryVariable(window.jMedium, jURLData);
			adgName = getSFQueryVariable(window.jAdGroupName, jURLData);
			kwName = getSFQueryVariable(window.jKeyword, jURLData);
			matchType = getSFQueryVariable(window.jKeywordMatchType, jURLData);
			adName = getSFQueryVariable(window.jCreative, jURLData);
		}else if(jtrackOrganic == true){
			var wdom = juump_get_domain();
			var wref = document.referrer;
			if(wref != 'undefined' && wref != null && wref.length > 0){
				var refDomain = wref;
				if(refDomain.indexOf('?') > 0)
					refDomain = wref.substr(0, refDomain.indexOf('?'));
				if(refDomain.indexOf(wdom) < 0){//compare if from same domain
					mediaType = "seo";
					cName = "SEO Campaign";//required
					adOutletName = jSEOPubName;
					isSEO = true;
				}
			}else if(jtrackDirect == true && (wref == null || wref.length == 0  || wref == window.location)){
				var jCookie = juump_get_cookie(sf_cookie_name);
				if(jCookie == null || jCookie == '' || jCookie == undefined){//record only direct
					mediaType = "direct";
					cName = jDirectCampName;
					adOutletName = jSEOPubName;
					isSEO = true;
				}
			}
		}
		
		jURLData = "jt="+trackerType+"&jaid="+acctId+"&jm="+mediaType+"&jsrc="+adOutletName+"&jcp="+cName
					+"&jag="+adgName+"&jk="+kwName+"&jm="+matchType+"&jcr="+adName+"&isseo="+isSEO;
	}
	if(jURLData.indexOf("jsid=") != -1 || (acctId != null && acctId != undefined && adOutletName != undefined && adOutletName != ''))
	{
		sfcookData = jURLData;
		jexecLngCode = true;
		if(jFlIncluded == true){//wait for flash file to load or page to unload before sending landing event
			jLandEvtRec = false;
		}else{
			trigger_sf_landing();
		}
	}
}

function trigger_sf_landing(){
	var jru = escape(document.referrer);
	var jlp = escape(window.location);//landing page URL
	
	if(sfcookData.indexOf("jtest=") != -1)
		jru = escape(window.location);
	
	//if conversation id exists, then this might be from different domain, just create cookie and skip landing event
	if(jURLData.indexOf("jcid=") != -1){
		juump_set_cookie(jURLData);
		return;
	}
	var jConversationID = "";
	var isNewVisit = 0;
			
	var jCookieData = "" + juump_get_cookie(sf_cookie_name);
	if (jCookieData && (jCookieData != null) && (jCookieData != "null") && (jCookieData.length > 0) )
		jConversationID = getSFQueryVariable("jcid", jCookieData);
	
	if(jConversationID == "" || jConversationID == "null" || jConversationID == null){
		jConversationID = generateGUID();
		isNewVisit = 1;
	}

	var jData = sfcookData + "&jcid=" + jConversationID;
	juump_set_cookie(jData);
	
	var jprotocol = "http";
	if(window.location.protocol == "https:"){jprotocol = "https";}
		
	var trackUrl = jprotocol+ track_URL + "je=landing&" + jData + "&jru=" + jru + "&jlp=" + jlp + "&jnv=" + isNewVisit;
	var convImg = new Image();
	convImg.src = trackUrl;
	convImg.onload=function() { jVoid(); };
	jLandEvtRec = true;
}

