/***************** AD/ANALYTICS ************/
// Double Click
var site = "Nation and World";
var zone = "Nation World Home";
var citation = "none";
var source = "none";
var keys;
var path = document.location.pathname;
var dirsArr = path.split("/");
var ord = Math.round(10000000*Math.random())
while (ord.length<9){
	ord="0"+ord
}
var metaSet=false;
var tile = 0;
var adPositions = {
leaderboardA: {name:'leaderboardA',dim:'728x90',vendor:'dblclick'},
leaderboardB: {name:'leaderboardB',dim:'468x60',vendor:'dblclick'},
badgeA: {name:'badgeA',dim:'180x90',vendor:'dblclick'},
badgeB: {name:'badgeB',dim:'120x90',vendor:'dblclick'},
badgeC: {name:'badgeC',dim:'120x90',vendor:'dblclick'},
badgeD: {name:'badgeD',dim:'120x90',vendor:'dblclick'},
rectangleA: {name:'rectangleA',dim:'300x250',vendor:'dblclick'},
rectangleB: {name:'rectangleB',dim:'300x250',vendor:'dblclick'},
skyscraperA: {name:'skyscraperA',dim:'160x600',vendor:'dblclick'},
skyscraperB: {name:'skyscraperB',dim:'160x600',vendor:'dblclick'},
skyscraperC: {name:'skyscraperC',dim:'160x600',vendor:'dblclick'},
verticalA: {name:'verticalA',dim:'120x240',vendor:'dblclick'},
video1: {name:'video1',dim:'468x60',vendor:'dblclick'},
boxA: {name:'boxA',dim:'300x125',vendor:'dblclick'},
boxB: {name:'boxB',dim:'330x140',vendor:'dblclick'}
}

function dblclick(pos)
{
	if (!metaSet) {
		setMetaValues();
	}
	var posObj = adPositions[pos];
	if (!posObj) {
		return ''; // need better error handling
	}
	var adSrc = getAdSrc(posObj);
	renderAd(adSrc,posObj);
}

function setMetaValues()
{
	var metas = document.getElementsByTagName('meta');
	for (var i=0; i < metas.length; i++) {
		if (metas[i].name == "keys") {
			keys = eval(metas[i].content);
		}

		if (metas[i].name == "keywords") {
			var tags = metas[i].content.split("; ");
			if (tags.length > 0) {
				var kindex=0;
				if (!keys) {
					keys = Array();
				}
				else {
					kindex = keys.length;
				}
				for (var j=0; j < tags.length; j++) {
					var obj = Object();
					obj.key = "kw";
					obj.val = escape(tags[j]);
					keys[j+kindex] = obj;
				}
			}
		}
		if (metas[i].name == "site")  site = metas[i].content;
		if (metas[i].name == "zone")  zone = metas[i].content;
		if (metas[i].name == "citation")  citation = metas[i].content;
		if (metas[i].name == "source")  source = metas[i].content;
	}
	metaSet = true;
}
setMetaValues();


function getQueryKeys()
{
	var qPos = location.search.indexOf("q1=");
	if (qPos != -1) {
		var valStr = location.search.substring(qPos+3);
		var sep = valStr.indexOf("&");
		if (sep != -1) {
			valStr = valStr.substring(0,sep);
		}
		valStr = filterChars(valStr);
		setQueryKey(valStr);
	}
}
getQueryKeys();

function filterChars(str)
{
	str = str.replace(/[\[\]\.<>\(\)'"#\?\=]/g,"");
	str = str.replace(/[\+ ,]/g,"%20");
	return str;
}

function setQueryKey(str)
{
	var obj = Object();
	obj.key="q1";
	obj.val=str;
	if (!keys) {
		keys = Array();
		keys[0] = obj;
	} else {
		keys[keys.length]=obj;
	}
}

function getAdSrc(posObj)
{
	if (!posObj.vendor) {
		return ''; 
	}
	switch (posObj.vendor) {
	case 'dblclick':
		return getDblClickSrc(posObj);
	case 'usnews':
		return getUsnSrc(posObj);
	case 'google':
		return getGoogleSrc(posObj);
	default:
		return '';
	}
}

function getDblClickSrc (posObj)
{
	var sz = posObj.dim;
	var dbkeyval='';

	if (keys) {
		for (var j=0; j < keys.length; j++) {
			var key = keys[j].key;
			var val = keys[j].val;
			dbkeyval += ";"+key+"="+val;
		}
	}
	tile++;

	var dbksite = site.toLowerCase();
	var dbkzone = zone.toLowerCase();
	dbksite = dbksite.substring(dbksite.lastIndexOf(":")+1);
	dbksite = dbksite.replace(/[ '"\?\=]/g,"");
	dbkzone = dbkzone.replace(/[ '"\?\=]/g,"");
	//can't start with numbers  ?needs testing
	dbksite = dbksite.replace(/^[0-9]+/g,"");
	dbkzone = dbkzone.replace(/^[0-9]+/g,"");
	//64 chars max, incl usn.
	dbksite = dbksite.substring(0,60);
	//zone length restriction?
	dbkzone = dbkzone.substring(0,64);
	var exclusion = checkReferer();
	exclusion = (exclusion) ? exclusion : "";
	var returnArray = new Array;
	returnArray[0] = "http://ad.doubleclick.net/adj/usn.";
	returnArray[1] = dbksite;
	returnArray[2] = "/";
	returnArray[3] = dbkzone;
	returnArray[4] = dbkeyval;
	returnArray[5] = ";sz="
	returnArray[6] = sz;
	returnArray[7] = ";tile=";
	returnArray[8] = tile;
	returnArray[9] = ";pos=";
	returnArray[10] = posObj.name;
	returnArray[11] = ";";
	returnArray[12] = "ord=";
	returnArray[13] = ord;
	returnArray[14] = exclusion;
	returnArray[15] = (posObj.name == 'rectangleA' && dbkzone=='home') ? "dcopt=ist" : "";
	returnArray[16] = "?";

	return returnArray.join('');
}

function getUsnSrc (posObj)
{
	return '/usnews/biz/scripts/usn_house_ad.js';
}

function getGoogleSrc (posObj)
{
	google_ad_client = "pub-6095852326547760";
		google_ad_width = 160;
		google_ad_height = 600;
		google_ad_format = "160x600_as";
		google_ad_channel ="";
		google_ad_type = "text";
		google_color_border = "FFFFFF";
		google_color_bg = "FFFFFF";
		google_color_link = "B90000";
		google_color_url = "006699";
		google_color_text = "000000";
		return 'http://pagead2.googlesyndication.com/pagead/show_ads.js';

}

function renderAd (adSrc, posObj)
{
	document.write("<script type=\"text/javascript\" src=\""+adSrc+"\"><\/script>");
} 

/* Clear Default Text fields on Focus  */

function addEvent(element, eventType, lamdaFunction, useCapture) {
	if (element.addEventListener) {
		element.addEventListener(eventType, lamdaFunction, useCapture);
		return true;
	}
	else if (element.attachEvent) {
		var r = element.attachEvent('on' + eventType, lamdaFunction);
		return r;
	}
	else {
		return false;
	}
}
addEvent(window, 'load', init, false);

function init() {
	var formInputs = document.getElementsByTagName('input');
	for (var i = 0; i < formInputs.length; i++) {
		var theInput = formInputs[i];

		if (theInput.type == 'text') {
			if (theInput.value == 'Search U.S. News' || theInput.value == 'Enter E-mail address' ){
				/* Add event handlers */
				addEvent(theInput, 'focus', clearDefaultText, false);
				addEvent(theInput, 'blur', replaceDefaultText, false);
				/* Save the current value */
				if (theInput.value != '') {
					theInput.defaultText = theInput.value;
				}
			}
		}
	}
}

function clearDefaultText(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) return;

	if (target.value == target.defaultText) {
		target.value = '';
	}
}

function replaceDefaultText(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) return;

	if (target.value == '' && target.defaultText) {
		target.value = target.defaultText;
	}
}

function checkReferer() {
	var refs = {
		'aol.money' : /^http:\/\/money\.aol\.com/
	};
	var exclusions = {
		'aol.money': "aolmoney"
	};
	var exclusion = false;
	for (ref in refs) {
		ref_id = ref
		regexp = refs[ref];
		if (document.referrer.match(regexp)) {
			exclusion = "!c=" + exclusions[ref_id] + ";";
		}
	}
	return exclusion;
}

