//<!--
/* compat: common browsers (IE5+,FF1+,Konq,Saf,Opera7+) except mac/ie5 */
boonity = {
	client: null,
	options: null,
	Ftid: { adsense:  2,
			ebay: 3,
			cj: 4,
			adsense_linkunit: 5,
			ypd: 6 
	},
	fetch_ads: function(location)
	{
		if (typeof boonity_ads == "undefined") 
		{
			var url = "http://"+ boonity.host() +"/ad/inline?";
			url += 'url='+ escape(window.location);
			url += '&location='+ escape(location);
			url += '&client_id='+ boonity.client;
		
			if (document.referrer) {
				url += '&referrer='+ escape(document.referrer);
			}

			if (boonity.options.cj_pid) {
				url += '&cj_pid='+ boonity.options.cj_pid;
			}

			if (boonity.options.google_adclient) {
				url += '&google_adclient='+ boonity.options.google_adclient;
			}

			if (boonity.options.google_channels) {
				url += '&google_channels='+ boonity.options.google_channels;
			}

			if (boonity.options.google_hints) {
				url += '&google_hints='+ boonity.options.google_hints;
			}

			if (boonity.options.provision == 'true') {
				url += '&provision='+	boonity.options.provision;
			}
			if (boonity.options.force_baseline == 'true') {
				url += '&force_baseline='+ boonity.options.force_baseline;
			}

			var date=new Date(),r=date.getTime();
			url += '&rand='+r;
		
			document.write('<sc'+'ri'+'pt src="'+ url +'" language="javascript" type="text/javascript"> </sc'+'ript>');
		}
	},
	render_ad: function() 
	{
		if (typeof boonity_ads == "undefined")
		{
			boonity.fetch_ads(boonity_loc);
		}
		else
		{
			ad_html = boonity_ads[boonity_loc];
			if (ad_html && ad_html.length > 0) 
			{
				document.write(ad_html);
				boonity.render_payload();
				boonity.reveal_wrapper(boonity_loc);
			}
			else if (ad_html.length == 0 && boonity_payload)
			{
				if (!boonity.get_wrapper(boonity_loc)) { boonity.render_payload(); }
			}
			else if (boonity.options.provision)
			{
				var provision_html = '<div style="border:dashed 2px #aaa; width:100%;">'+
										'Future Boonity Ad: '+ boonity_loc +
									 '</div>';
				document.write(provision_html);
				boonity.reveal_wrapper(boonity_loc);
			}
		}
	},
	render_payload: function()
	{
		if (boonity_payload && boonity_payload.length > 0)
		{
			document.write(boonity_payload);
			boonity_payload = false;
		}
	},
	get_wrapper: function(location)
	{
		wrapper_ele = document.getElementById(location +'_wrapper');
		if (wrapper_ele) { return wrapper_ele; }
		else { return false; }
	},
	reveal_wrapper: function(location)
	{
		wrapper_ele = boonity.get_wrapper(location)
		if (wrapper_ele) { wrapper_ele.style.display = ""; }
	},
	log_feedback: function(ft_id_name)
	{
		img_ele = boonity.assure_fimg();
		ft_id = boonity.Ftid[ft_id_name];
		// ag_id is set in the payload
		if (img_ele && ft_id && ag_id) 
		{
			var rand_int = Math.floor(Math.random() * 1000);
			var feedback_url = 'http://'+ boonity.host() +'/log/click?ag_id='+ ag_id +'&t_id='+ ft_id +'&'+ rand_int;
			img_ele.src = feedback_url;
		}
		if (window.urchinTracker) { urchinTracker('/analytics/boonity_click'); }
	},
	addEvent: function(obj, type, fn)
	{
		if (obj.addEventListener)
		{
			// standards browsers
			obj.addEventListener(type, fn, false);
		}
		else if (obj.attachEvent)
		{
			//.. win/ie
			obj['e'+type+fn] = fn;
			obj[type+fn] = function() { obj['e'+type+fn](window.event); }
			obj.attachEvent("on"+type, obj[type+fn]);
		}
		// otherwise it's mac/ie5, oh well
	},
	ct_init: function() 
	{
		var st = new Date();
		if (document.all)  // IE
		{ 
			// as
			var els = document.getElementsByTagName("iframe");
			for(var i = 0; i < els.length; i++) 
			{
				var ele = els[i];
				
				if (ele.src.indexOf('googlesyndication.com') > -1) 
				{
					if (boonity.is_lu(ele.src))
					{
						ele.onfocus = function() { boonity.log_feedback('adsense_linkunit'); return false; }
					}
					else
					{
						ele.onfocus = function() { boonity.log_feedback('adsense'); return false; }
					}
				}
				else if (ele.src.indexOf('lapi.ebay.com') > -1) 
				{
					ele.onfocus = function() { boonity.log_feedback('ebay'); return false; }
				}
			}
		} 
		else // firefox
		{   
			window.addEventListener('beforeunload', boonity.doAsExit, false);
			window.addEventListener('mousemove', boonity.getMouse, true);
		}

		// regular links can be used by all browsers because not in an iframe
		var el = document.getElementsByTagName("a");
		for(var i = 0; i < el.length; i++) 
		{
			ele = el[i];
			if (boonity.is_contextual_ebay(ele.href))
			{
				boonity.addEvent(ele, 'click', function() { boonity.log_feedback('ebay'); });
			}
			else if (ele.href.indexOf('jdoqocy.com') > -1) 
			{
				boonity.addEvent(ele, 'click', function() { boonity.log_feedback('cj'); });
			}
		}
		//alert((new Date()).getTime() - st +'ms');
	},
	// onload hooks
	hookem: function() {
		if (document.body.hooked) { return; }
		document.body.hooked = true;

		if (typeof window.addEventListener != 'undefined')
		{
			// standard browsers
			window.addEventListener('load', boonity.ct_init, false);
		}
		else if (typeof document.addEventListener != 'undefined')
		{
			// opera 7.x
			document.addEventListener('load', boonity.ct_init, false);
		}
		else if (typeof window.attachEvent != 'undefined')
		{
			// win/ie older than 7
			window.attachEvent('onload', boonity.ct_init);
		}
		else
		{
			// mac/ie5 and anything else that gets this far
			// if there's an existing onload function
			// unfortunately, this just does not really work
			if (typeof window.onload == 'function')
			{
				var existing = onload;
				window.onload = function()
				{
					existing();
					boonity.ct_init();
				};
			}
			else
			{
				window.onload = boonity.ct_init;
			}
		}
	},
	is_lu: function(url) 
	{ 
		return (url.search(/\&format=(fp_al_lp|(.*)_0ads_al(_s)?)\&/) != -1);
	},
	is_contextual_ebay: function(url) 
	{ 
		return (url.indexOf('rover.ebay.com') > -1) && (url.search(/\&AID=10420678\&/) != -1);
	},
	host: function() 
	{
		return ("deployed" == "deployed") ? "yieldbuild.com" : boonity.options.server;
	},
	assure_fimg: function()
	{
		var fimg_id = 'boon_fimg';
		var fimg = document.getElementById(fimg_id);
		if (!fimg) 
		{
			fimg = document.createElement('img');
			fimg.setAttribute('id', fimg_id);
			fimg.setAttribute('src', '#');
			document.body.appendChild(fimg);
		}
		return fimg;
	},
	// FF only below
	px: null,
	py: null,
	getMouse: function(e)
	{
		boonity.px=e.pageX;
		boonity.py=e.pageY;
	},
	findY: function(obj) 
	{
		var y = 0;
		while (obj) {
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}
		return(y);
	},
	findX: function(obj) 
	{
		var x = 0;
		while (obj) {
			x += obj.offsetLeft;
			obj = obj.offsetParent;
		}
		return(x);
	},
	doAsExit: function(e) 
	{
		// 
		ads = document.getElementsByTagName("iframe");
		for (i=0; i<ads.length; i++) {
			var ad = ads[i];
			var adLeft = boonity.findX(ad);
			var adTop = boonity.findY(ad);
			var inFrameX = (boonity.px > (adLeft - 10) && boonity.px < (parseInt(adLeft) + parseInt(ad.width) + 15));
			var inFrameY = (boonity.py > (adTop - 10) && boonity.py < (parseInt(adTop) + parseInt(ad.height) + 10));
			
			if (inFrameY && inFrameX) 
			{
				if (boonity.is_lu(ad.src)) { boonity.log_feedback('adsense_linkunit'); }
				else { boonity.log_feedback('adsense'); }

				return; // only one ad can be clicked at a time
			}
		}
	}
}

///////
// MAIN
///////

// inject bootstrap now
if (boonity_client, boonity_loc) { 
	boonity.client = boonity_client;
	boonity.options = boonity_options;
	boonity.render_ad(boonity_loc);
}

// hook onload
if (!document.body.hooked) {
	boonity.hookem();
}

// cting -->

