
ad_init(get_param());


/*  This file must be placed before the VS code */

/*
*
*   Calculates the number of ads needed to fill all ad slots on the page
*
*/
function ad_init(searchterm) {
	var adflag = /\badslot\b/i;
	var adconfig = /\bad\-(\w+)\-((\w|\-)+)\b/i;
	var elements = document.getElementsByTagName("div");
	var adslots = [];
	var i=0, w=0, n=0, afc=0, afs=0;
	var ao = get_param("ad-override");
  	
	while (el = elements[i++]) if (adflag.test(el.className)) {
		var adobj = { el: el, count:0, html:"", actual:0, type:"AFS" };
		var attr = el.className.split(" ");
		for (var j in attr) if (m = adconfig.exec(attr[j])) {
			if (is_int(m[2])) { 
				adobj[m[1].toLowerCase()] = parseInt(m[2]); 
			} else { 
				adobj[m[1].toLowerCase()] = m[2];
			}
		}

		switch (adobj.type.toLowerCase()) {
			case "AFS":
				afs++;
				break;

			case "AFC":
				afc++;
				break;
		}

		/* Exception for weblab testing */
		if (typeof(webadSlotCount) != 'undefined')
			if (webadSlotCount == 1)
				if (adobj.id == "c1-3" || adobj.id == "c2-3" || adobj.id == "s-4") continue;

		if (is_int(adobj.wide)) {
			w += adobj.wide;
			adobj.count += adobj.wide;
			adslots.push(adobj);
		}
		else if (is_int(adobj.narrow)) {
			n += adobj.narrow;
			adobj.count += adobj.narrow;
			adslots.push(adobj);
		}
	}

	adslots.sort( function (a,b) { return a.priority - b.priority; });

	google_ad_slots = adslots;
	if (ao) {
		google_afs_query = ao;
	} else {
		google_afs_query = searchterm;
	}
	google_afs_ad = 'w'+w+'n'+n;				// specify the number of ads to request

	if (get_param("field-keywords") || ao || get_param("keywords")){ 
		google_afs_client = 'targetcorp_js';

		/*var page = get_param("page");

		if (page) {
			google_afs_adpage = page;
		} else {
			google_afs_adpage = 1;
		}*/
	} else {
		google_afs_client = 'targetcorp-browse_js';
	}
	google_afs_adsafe = 'high';				// specify level for filtering non-family-safe ads

	var filter = /target\.com/;
	if (filter.test(document.domain) == false) {
		google_afs_adtest = 'on';
		//google_afs_client = 'googlepsotest-afsjs';
	}


	//document.write('<script language="JavaScript1.1" src="http://www.google.com/afsonline/show_afs_ads.js"></script>');
}

function is_int(s) {
	if (s == null) return false;
	return (s.toString().search(/^-?[0-9]+$/) == 0);
}

/*
*
*   Creates the html for an ad, given google ad data array
*
*/
function ad_generate(data,type,adid,adnum) {
	var html = '<a href="' + data.url + '" ' + 
		'target="_blank" ' +
		'onclick="ad_track(\''+ type +'\',\'' + adid + '\',\'' + adnum + '\',\'' + data.visible_url + '\');return true;" ' +
		'onmouseout="window.status=\'\';return true" ' +
		'onmouseover="window.status=\'go to ' +
		data.visible_url + '\';return true" ' +
		'style="text-decoration:none;font-size:11px;font-family:verdana;">' +
		'<span style="text-decoration:underline;color:#333333;">' +
		'<b>' + data.line1 +
		'</b><br></span>' +
		'<span style="color:#333333;">' +
		data.line2;

	if (data.type == "text/narrow") {
		html += /*'<br>' +*/ " " + data.line3;
	}

	html += '<br></span><span style="color:#999999;font-size:10px;">';
	
	if (data.visible_url.length > 20 && data.type == "text/narrow") {
		var slashloc = data.visible_url.indexOf('/');
		var trunc = data.visible_url;
		if (slashloc < 20 && slashloc > 0) {
			html += data.visible_url.substring(0,slashloc);
		} else if (data.visible_url.length < 28) {
			html += '<span style="font-size:9px;">' + data.visible_url + '</span>';
		} else if (data.visible_url.length < 33) {
			html += '<span style="font-size:8px;">' + data.visible_url + '</span>';
		} else {
			html += '<span style="font-size:7px;">' + data.visible_url + '</span>';
		}
	} else {
		html += data.visible_url;
	}
	
	html +=	'</span></a><BR><BR style="line-height:10px;">';

	return html;
}

function ad_track(type,adid,adnum,url) {
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = "http://vs.target.com/interaction.txt?Log=1&event=offsite_google&hosturl="+ escape(window.location) +"&clickloc="+type+"|"+adid+"|"+adnum+"&exiturl=" + escape(url) + "&cb=" + Math.random();
	document.body.appendChild(script);
}

function get_param(name) {
	var q = "";

	if (name) {
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( window.location.href );

		if (results) q = results[1];
	} else {
		q = document.title;
	}

	return q.replace(/(target\ssearch\sresults)|(target)|(\ball\b)|(hidden nodes)|(new arrivals)/ig,"").replace(/\s\:\s/g," ").replace(/^\s*/, "").replace(/\s*$/, "");
}

/*
*
*   The callback executed when google returns ad data, which populates the ad slots with rendered ad html
*
*/

function google_afs_request_done(google_ads) {
	if (google_ads.length) {
		for (var i in google_ad_slots) {
			for (var j=0; j < google_ad_slots[i].count; j++) {
				
				var k=0;
					while (k < google_ads.length) {
					if ((google_ads[k].type == "text/wide" && google_ad_slots[i].wide > 0) || (google_ads[k].type == "text/narrow" && google_ad_slots[i].narrow > 0)) {
						google_ad_slots[i].actual++;
						google_ad_slots[i].html += ad_generate(google_ads[k],google_ad_slots[i].type,google_ad_slots[i].id,google_ad_slots[i].actual);
						google_ads.splice(k,1);
						break;
					}
					k++;
				}
			}
		}
	}

	var tag="";
	var maxslots = 100;
	if (typeof(webadSlotCount) != 'undefined') maxslots = webadSlotCount;


	for (var i=0; (i < google_ad_slots.length) && (i < maxslots); i++) {
		var el = google_ad_slots[i].el;
		if (google_ad_slots[i].actual) {
			if (google_ad_slots[i].header == "hide") {
				el.innerHTML = google_ad_slots[i].html
			} else {
				el.innerHTML = '<h5 style="color:#333333;font-weight:bold;font-family:Verdana;font-size:10px;margin:0px;">Ads by Google</h5><br style="line-height:10px;">' + google_ad_slots[i].html
			}
		} else {
			el.style.padding = 0;
		}
		tag += google_ad_slots[i].type + "|" + google_ad_slots[i].id + "|" + google_ad_slots[i].actual;
		if (i < google_ad_slots.length-1) tag += "^";
	}

	/* set variable used for impression tracking */
	waimploc = tag;

}


