var tmParams = { tm1 : ";" };
var tmQuantcastJsonUrl = 'http://pixel.quantserve.com/api/segments.json?a=p-05mj7FO2c-yBQ&callback=tmQuantcastResults';
//var tmExelateJsonUrl = 'http://load.exelator.com/load/?p=173&g=002&j=j';
//var tmPeer39JsonUrl = 'http://stags.peer39.net/1161/trg_1161.js';
var tmBlueKaiJsonUrl = 'http://tags.bluekai.com/site/2954?ret=js';
//var tmTargusJsonUrl = 'http://adadvisor.net/adscores/g.json?sid=9201310668';
//var tmTurnPreCheckSwfUrl = 'http://objects.tremormedia.com/net/swf/turnprecheck.swf';
//var tmTurnCookieExistByteSize = 784;


var tmReady = {
	quantcast:false, 
	//exelate:false, 
	bluekai:false, 
	targus:false
};

var tmOptedOut = true;

var tmExelateExcludeList = new Array;
tmExelateExcludeList[0] = "nytimes.com";


function tmIsOptedOut(optedOut) {
	if (optedOut == undefined) {
		return tmOptedOut;
	} else if (optedOut == "false") {
		//tmAddTurnPreCheckSwf(tmTurnPreCheckSwfUrl);
		tmGetQuantcastTargeting(tmQuantcastJsonUrl);
		tmLoadExternalJS(tmBlueKaiJsonUrl);
		//tmLoadExternalJS(tmTargusJsonUrl);
		//tmLoadExelate(tmExelateJsonUrl);
		//tmLoadExternalJS(tmPeer39JsonUrl);
		tmOptedOut = false;
	} else {
		optedOut = true;
	}
}
var tmOnMessageReceived = function(e) {
    tmIsOptedOut(e.data);
}
if (window.postMessage) {
    if (typeof window.addEventListener != 'undefined') {
        window.addEventListener('message', tmOnMessageReceived, false);
    } else if (typeof window.attachEvent != 'undefined') {
        window.attachEvent('onmessage', tmOnMessageReceived);
    }
} else {
	var html = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://active.macromedia.com/shockwave/cabs/swflash.cab#version=8,0,0,0' width='1' height='1'>";
	html += " <param name='movie' value='http://objects.tremormedia.com/net/swf/optout.swf'>";  
	html += " <param name='allowScriptAccess' value='always'>";
	html += "</object>";
	var div = document.createElement("DIV");
	div.style.position = 'absolute';
	div.style.left = '0px';
	div.style.top = '0px';
	div.style.width = '1px';
	div.style.height = '1px';
	div.style.visibility = 'hidden';
	div.innerHTML = html;
	document.body.appendChild(div);
}
var iframeDiv = document.createElement("DIV");
iframeDiv.style.position = 'absolute';
iframeDiv.style.left = '0px';
iframeDiv.style.top = '0px';
iframeDiv.style.width = '1px';
iframeDiv.style.height = '1px';
iframeDiv.style.visibility = 'hidden';
var iframe = document.createElement("IFRAME");
iframe.width = "0px";
iframe.height = "0px";
iframe.border = "0px";
iframe.style.visibility = "hidden";
iframe.src = "http://static.scanscout.com/optout/iframe.html?" + document.location.href;
iframeDiv.appendChild(iframe);
appendIframeDiv();

//delay if document body is not ready
function appendIframeDiv(){
	if (document.body){
		document.body.appendChild(iframeDiv);
	}else{
		setTimeout(appendIframeDiv,100);
	}
}
	 
//---------------functions-------------------------//
function getTremorParams() {
	try {
		if ((!tmReady.bluekai) && (typeof(bk_results) != "undefined")) {
			tmReady.bluekai = true;
			for (var i=0; i<bk_results.campaigns.length; i++) {
				var campaign = bk_results.campaigns[i];
				tmAppendToTremorParams('tm1', 'kvbkcamp' + campaign.campaign + '=T');
				for (var j=0; j<campaign.categories.length; j++) {
					var category = campaign.categories[j];
					tmAppendToTremorParams('tm1', 'kvbkcat' + category.categoryID + '=T');
				}
			}
		}
	} catch (e) {
	}
	return tmParams;
}

function isTremorReady(){
	return tmReady.quantcast;
}

function tmLoadExternalJS(url) {
	var e = document.createElement("script");
	e.src = url;
	e.type="text/javascript";
	document.getElementsByTagName("head")[0].appendChild(e);
}

function tmAppendToTremorParams(name, value) {
	var param = tmParams[name];
	if (param.length > 0 && param != ";"){
		param += ";";
	}
	
	param += value;
	tmParams[name] = param;
}

//----------------Turn Pre Check-------------------//
function turnPreCheck(totalBytes){
	if (totalBytes == tmTurnCookieExistByteSize){
		tmAppendToTremorParams("tm1", "kvt=T");
	}
}

function tmAddTurnPreCheckSwf(url){
  e = document.createElement("div");
  e.style.position = "absolute";
  e.style.top="0px";
  e.style.left="0px";
  e.style.width="0px";
  e.style.height="0px";
  e.style.overflow="hidden";
  
  //e.style.visibility = "hidden";
  
  e.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ' +
						'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" ' +
						'width="1" ' +
						'height="1" ' +
						'id="turnPreCheck" ' +
						'align="middle">' + 
						'<param name="allowScriptAccess" value="always" />' +
						'<param name="allowFullScreen" value="false" />' +
						'<param name="movie" value="' + url + '" />' +
					'<embed type="application/x-shockwave-flash" ' + 
						'pluginspage="http://www.macromedia.com/go/getflashplayer" ' +
						'src="' + url + '" ' +
						'width="1" height="1" name="turnPreCheck" align="middle" ' +
						'allowScriptAccess="always" allowFullScreen="false" />' +
					'</object>';

  document.getElementsByTagName("body")[0].appendChild(e);
}

//----------------Quantcast------------------------//
function tmGetQuantcastTargeting(jsUrl){
	var storedValue = tmReadCookie('tmq');
	
	if (storedValue == null){
		tmLoadExternalJS(jsUrl);
	}else{
		tmAppendToTremorParams("tm1", decodeURIComponent(storedValue));
		tmReady.quantcast = true;
	}
}

function tmQuantcastResults(result) {
	var newParams = "";
	for (var i = 0; i < result.segments.length; i++) {
		if (i > 0){
			newParams += ";";
		}
		newParams += 'kvq' + result.segments[i].id + '=T';
	}
	
	if (newParams.length > 0){
		tmCreateCookie("tmq",encodeURIComponent(newParams),1);
		tmAppendToTremorParams("tm1", newParams);
	}
	
	tmReady.quantcast = true;
}

//----------------Targus-------------------------//
function targusTemorData(result) {
	//{"targus": { "segment": "%{score}", "zip": "%{zip}", "BirthYear": "%{indiv1.year}", "gender": "%{indiv1.gender}" } }

	if (result.targus){
		if (result.targus.segment && result.targus.segment != ""){
			tmAppendToTremorParams("tm1", 'kvts=' + result.targus.segment);
		}
		
		if (result.targus.zip && result.targus.zip != ""){
			tmAppendToTremorParams("tm1", 'kvtz=' + result.targus.zip);
		}
		
		if (result.targus.BirthYear && result.targus.BirthYear != ""){
			tmAppendToTremorParams("tm1", 'kvty=' + result.targus.BirthYear);
		}
		
		if (result.targus.gender && result.targus.gender != ""){
			tmAppendToTremorParams("tm1", 'kvtg=' + result.targus.gender);
		}
	}
	
	tmReady.targus = true;
}

//----------------Exelate------------------------//
function callback_function(result) {
	//result = {"service" : "on", "segments" : ["seg1", "seg2"]};
	var newParams = "";
	if (result.service == "on"){
		for (var i = 0; i < result.segments.length; i++) {
			tmAppendToTremorParams("tm1", 'kve' + result.segments[i] + '=T');
		}
	}
	
	tmReady.exelate = true;
}

function tmLoadExelate(jsUrl){
	if (tmShouldCallExelate()){
		tmLoadExternalJS(jsUrl);
	}
}

function tmShouldCallExelate(){
	var siteDomain = document.domain;
	
	for (var i=0; i<tmExelateExcludeList.length; i++){
		if (siteDomain.indexOf(tmExelateExcludeList[i]) >= 0){
			return false;
		}
	}

	return true;
}

//----------------Peer39------------------------//
function afterFinished_1161(){
	var kvpList = kvp_list(getTargetingTags_1161());
	
	//remove the end semicolon if exist
	if (kvpList.substring(kvpList.length - 1) == ";"){
		kvpList = kvpList.substring(0, kvpList.length - 1);
	}
	
	tmAppendToTremorParams("tm1", kvpList);
}

//-----------------cookie functions------------------//
function tmCreateCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function tmReadCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function tmEraseCookie(name) {
	createCookie(name,"",-1);
}

