var ad_int = {
	//local variables
	adCookie: '',
	adObj: {},
	
	// init function
	init: function() {
		ad_int.initCookieClass();
		ad_int.userAgentCheck();
	},
		
	// user-agent check
	userAgentCheck: function() {
		var passCheck = false;
		for (var i in Prototype.Browser) {
		    var testString = 'Prototype.Browser.' + i;
		    if(eval(testString)) {
				passCheck = true;
			}
		}
		if (passCheck) {
			ad_int.checkCookie();
		} else {
			return false;
		}
	},
	
	// cookie stuff
	initCookieClass: function() {
		ad_int.cookieClass = new Cookies();
	},
	getCookie: function() {
		ad_int.adCookie = ad_int.cookieClass.get('ad-int');
		if (!ad_int.adCookie) {
			return false;
		} else {
			return $H(ad_int.adCookie);
		}
	},
	setCookie: function() {
		var cookieValue = $H(ad_int.adObj).toJSON();
		ad_int.cookieClass.set('ad-int',cookieValue.toString(),1);
	},
	
	checkCookie: function() {
		if (!ad_int.getCookie()) {
			ad_int.setNewCookie();
		} else {
			ad_int.resetCookie();
		}
	},
	setNewCookie: function() {
		ad_int.adObj = { "currentView": 0 };
		ad_int.setCookie();
		if (dart.interstitial_max_views != 0) {
			ad_int.setAd();
		}
	},
	resetCookie: function() {
		ad_int.adObj = ad_int.getCookie();
		if (dart.interstitial_max_views <= 1) {
			return false;
		}
		if (ad_int.adObj.currentView / dart.interstitial_freq > dart.interstitial_max_views) {
			//trace('over the limit');
			return false;
		} else {
			/* Store the pre update value */
			var cookie_check = ad_int.adObj.currentView;

			/* Update the value and set the cookie */
			ad_int.adObj.currentView++;
			ad_int.setCookie();

			/* Verify the cookie update stuck */
			ad_int.adObj = ad_int.getCookie();
			if(cookie_check != ad_int.adObj.currentView)
				ad_int.adFreqCheck();
		}
	},
	
	// frequency check logic
	adFreqCheck: function() {
		if (ad_int.adObj.currentView % dart.interstitial_freq == 0) {
			ad_int.setAd();
		}
	},

	// actual ad dhtml overlay stuff
	setAd: function() {
		// build main overlay
		var widthOffset = 0;
		var newWidth = ($$('body')[0].getWidth() - widthOffset) + "px;";
		var newHeight = screen.height + "px;";
		var newOrd = Math.floor(Math.random() * 1000000000);
		
		if(ad_int.adObj.currentView == 0) {
			// Welcome Mat / Prestitial / First view of the day
			if(!dart.interstitial_show_prestitial) {
				// Just count the prestitial inventory
				document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.'+dart.dartSite+'/'+dart.dartZone+';dartGenre='+dart.dartGenre+';dartSubGenre=' +dart.dartSubGenre + ';dartGlobalID='+dart.dartGlobalID + ';dartArticleID='+dart.dartArticleID +';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';pos=top;tile=1;sz=20x1;ord=' + newOrd + '?"></scr' + 'ipt>');
			}
			else {
				// Show the take over and count the inventory
				document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.'+dart.dartSite+'/'+dart.dartZone+';dartGenre='+dart.dartGenre+';dartSubGenre=' +dart.dartSubGenre + ';dartGlobalID='+dart.dartGlobalID + ';dartArticleID='+dart.dartArticleID +';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';pos=top;tile=1;sz=20x1;ord=' + newOrd + '?"></scr' + 'ipt>');
				document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.'+dart.dartSite+'/'+dart.dartZone+';dartGenre='+dart.dartGenre+';dartSubGenre=' +dart.dartSubGenre + ';dartGlobalID='+dart.dartGlobalID + ';dartArticleID='+dart.dartArticleID +';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';pos=top;tile=1;sz=700x500;ord=' + newOrd + '?"></scr' + 'ipt>');

	
				// Resize and move interstital to the viewport
				ad_int.adTakeover();
	
				// set auto-close timer
				(function(){
					ad_int.removeAd();
				}).delay(dart.interstitial_duration);
			}
		}
		else {
			// Interstitial
			if(!dart.interstitial_show_interstitial) {
				// Just count the interstitial inventory
				document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.'+dart.dartSite+'/'+dart.dartZone+';dartGenre='+dart.dartGenre+';dartSubGenre=' +dart.dartSubGenre + ';dartGlobalID='+dart.dartGlobalID + ';dartArticleID='+dart.dartArticleID +';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';pos=top;tile=1;sz=20x2;ord=' + newOrd + '?"></scr' + 'ipt>');
			}
			else {
				// Show the take over and count the inventory
				document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.'+dart.dartSite+'/'+dart.dartZone+';dartGenre='+dart.dartGenre+';dartSubGenre=' +dart.dartSubGenre + ';dartGlobalID='+dart.dartGlobalID + ';dartArticleID='+dart.dartArticleID +';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';pos=top;tile=1;sz=20x2;ord=' + newOrd + '?"></scr' + 'ipt>');
				document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.'+dart.dartSite+'/'+dart.dartZone+';dartGenre='+dart.dartGenre+';dartSubGenre=' +dart.dartSubGenre + ';dartGlobalID='+dart.dartGlobalID + ';dartArticleID='+dart.dartArticleID +';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';pos=top;tile=1;sz=600x400;ord=' + newOrd + '?"></scr' + 'ipt>');

				// Resize and move interstital to the viewport
				ad_int.adTakeover();

				// set auto-close timer
				(function(){
					ad_int.removeAd();
				}).delay(dart.interstitial_duration);
			}
		}

	},
	adTakeover: function(){
		if($('ad_int')) {
			$('ad_int').setStyle({
				'width': '100%',
				'height': '100%',
				'zIndex':'9999999',
				'display':'block'
			});

			$('pixel').setStyle({
				'visibility':'visible'
			});
		}
	},
	removeAd: function() {
		if($('ad_int')) {
			$('ad_int').remove();
		}
	}
}

ad_int.init();

document.write('<scr'+'ipt type="text/javascript" src="http://ad.doubleclick.net/adj/idg.us.gamepro.' + dart.dartSite + '/' + dart.dartZone + ';dartGenre=' + dart.dartGenre + ';dartSubGenre=' + dart.dartSubGenre + ';dartGlobalID=' + dart.dartGlobalID + ';dartArticleID=' + dart.dartArticleID + ';dartESRB=' + dart.dartESRB+ ';dartEnv=' + dart.dartEnvType + ';dartEvent=' + dart.dartEvent + ';tile=1;dcopt=ist;sz=1x1;tile=1;ord=' + dart.dartTimestamp + '?" type="text/javascript"></scr'+'ipt>');
