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 tmTurnPreCheckSwfUrl = 'http://objects.tremormedia.com/net/swf/turnprecheck.swf';
//var tmTurnCookieExistByteSize = 784;


var tmReady = {quantcast:false, exelate:false};

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

//tmAddTurnPreCheckSwf(tmTurnPreCheckSwfUrl);
tmGetQuantcastTargeting(tmQuantcastJsonUrl);
tmLoadExelate(tmExelateJsonUrl);

//---------------functions-------------------------//
function getTremorParams() {
	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=1");
	}
}

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;
	}
	
	if (newParams.length > 0){
		tmCreateCookie("tmq",encodeURIComponent(newParams),1);
		tmAppendToTremorParams("tm1", newParams);
	}
	
	tmReady.quantcast = 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]);
		}
	}
	
	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;
}

//-----------------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);
}

