//---------- GLOBAL VARS ---------- 

// Remember the key of most recent expand
var ads_lightboxGlobalCurrentKey;
// Remember the Node position of most recent lightbox
var ads_lightboxGlobalObjNode;

// Loading image, close button, and close button visibility
var ads_lightboxLoadingImage = 'http://i.i.com.com/cnwk.1d/Ads/common/css/lightbox/lightboxLoader.gif';		
var ads_lightboxCloseButton = 'http://i.i.com.com/cnwk.1d/Ads/common/css/lightbox/lightboxClose.gif';

var compatmode = document.compatMode;
if (IEversion == 8) compatmode=document.documentMode;
if(compatmode){
	if(compatmode=='BackCompat') pagemode='quirks';
	else if(compatmode=='CSS1Compat') pagemode='standards';
	else pagemode='almost';
}

//---------- END GLOBAL VARS ----------

// EXPAND - REQUIRES KEY AS NUMBER
function cnetExpand(key) {
	// Global Var to set most recent Lightbox
	ads_lightboxGlobalCurrentKey = key;
	
	// Retrieve lightbox Obj to access all data
	var lightboxObj = adsLightbox_getObj(key);	
	ads_lightboxGlobalObjNode = adsLightbox_getObjNode(ads_lightboxGlobalCurrentKey);
	
	
	// prep objects
	var objOverlay = document.getElementById('ads_lightboxOverlay');
	var objLightbox = document.getElementById('ads_lightboxLightbox');
	//var objLoadingImage = document.getElementById('ads_lightboxLoadingImage');
	var objCloseButton = document.getElementById('ads_lightboxCloseButton');
	var arrayPageSize = getPageSize();

	// center loadingImage if it exists
	/*if (objLoadingImage) {
		objLoadingImage.style.top = (windowHeight -  - objLoadingImage.height) / 2 + 'px';
		objLoadingImage.style.left = (windowWidth - objLoadingImage.width) / 2 + 'px';
		objLoadingImage.style.display = 'block';
	}*/
		
	// Hide select boxes as they will 'peek' through the image in IE
	if (!window.innerHeight){ 
		selects = document.getElementsByTagName("select"); 
		for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "hidden"; }
	}

	// set height of Overlay to take up whole page and show
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';
		
	// Set the lightbox container's width & height and position
	if (windowHeight < lightboxObj.adsLightbox_heightLightbox){ //lightbox height is smaller that browser window height
		if (IEversion == 6 || (pagemode=="quirks" && IEversion !=0)){
			objLightbox.style.top = windowHeight / 2 + "px";
		} else {
			objLightbox.style.top = "5px";
		}
		objLightbox.style.left = (windowWidth - lightboxObj.adsLightbox_widthLightbox) / 2 + "px";
		objLightbox.style.width = lightboxObj.adsLightbox_widthLightbox + 20 + 'px';
		objLightbox.style.height = windowHeight - 25 + 'px';
		objLightbox.style.overflow = 'auto';
	} else {
		if (IEversion == 6 || (pagemode=="quirks" && IEversion !=0)){
			objLightbox.style.top = windowHeight / 2 + "px";
		} else {
			objLightbox.style.top = (windowHeight - lightboxObj.adsLightbox_heightLightbox) / 2 + "px";
		}
		objLightbox.style.left = (windowWidth - lightboxObj.adsLightbox_widthLightbox) / 2 + "px";
		objLightbox.style.width = lightboxObj.adsLightbox_widthLightbox + 'px';
		objLightbox.style.height = lightboxObj.adsLightbox_heightLightbox + 'px';
	}
	objLightbox.style.display = 'block';
	objLightbox.style.visibility = 'visible';
	
	// Display close button if one is needed
	lightboxObj.lightboxCloseButton == true ? objCloseButton.style.display = 'block' : objCloseButton.style.display = 'none';
	
	// Check for extension
	if(lightboxObj.adsLightbox_srcLightbox.indexOf(".swf") == -1){
		lightboxObj.adsLightbox_srcLightbox = lightboxObj.adsLightbox_srcLightbox+".swf";
	}
	
	// Load swf
	if(isIE && isWin && !isOpera){
		var objSwfHtml = "<object id='lightboxSwfObject' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' height='"+lightboxObj.adsLightbox_heightLightbox+"' width='"+lightboxObj.adsLightbox_widthLightbox+"'>";
		objSwfHtml += "<param name='type' value='application/x-shockwave-flash' />";
		objSwfHtml += "<param name='name' value='lightboxSwf' />";
		objSwfHtml += "<param name='allowScriptAccess' value='always' />";
		objSwfHtml += "<param name='quality' value='high' />";
		objSwfHtml += "<param name='movie' value='"+lightboxObj.adsLightbox_srcLightbox+"' />";
		objSwfHtml += "<param name='wmode' value='"+lightboxObj.adsLightbox_wmodeLightbox+"' />";
		objSwfHtml += "<param name='bgcolor' value='"+lightboxObj.adsLightbox_bgcolorLightbox+"' />";
		objSwfHtml += "<param name='flashvars' value='"+lightboxObj.adsLightbox_flashVarsLightbox+"' />";
		objSwfHtml += "</object>";
		var objSwfContainer = document.createElement("div");
		objSwfContainer.setAttribute('id','ads_lightboxLightboxSwf');
		objSwfContainer.innerHTML = objSwfHtml;
		objLightbox.appendChild(objSwfContainer);
	} else {
		var objSwf = document.createElement("embed");
		objSwf.setAttribute('id','ads_lightboxLightboxSwf');
		objSwf.setAttribute('pluginspace','http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash');
		objSwf.setAttribute('type','application/x-shockwave-flash');
		objSwf.setAttribute('name','lightboxSwf');
		objSwf.setAttribute('allowscriptaccess','always');
		objSwf.setAttribute('quality','high');
		objSwf.setAttribute('src',lightboxObj.adsLightbox_srcLightbox);
		objSwf.setAttribute('width',lightboxObj.adsLightbox_widthLightbox);
		objSwf.setAttribute('height',lightboxObj.adsLightbox_heightLightbox);
		objSwf.setAttribute('wmode',lightboxObj.adsLightbox_wmodeLightbox);
		objSwf.setAttribute('bgcolor',lightboxObj.adsLightbox_bgcolorLightbox);
		objSwf.setAttribute('flashvars',lightboxObj.adsLightbox_flashVarsLightbox);
		objLightbox.appendChild(objSwf);
	}
	document.getElementById('ads_lightboxLightboxSwf').style.display = 'block';
	//objLoadingImage.style.display = 'none';
	
	// Check for 'Esc' keypress
	adsLightbox_listenKey();	
	
	// reload tracking gif to track the lightbox action
	document.getElementById(lightboxObj.impTrack_name).src=lightboxObj.lightboxImpTrack;

	// If 3rd Party Expand Tracking supported
	if(lightboxObj.lightboxImpTrack3P){
		// reload tracking gif to track the expand action
		document.getElementById(lightboxObj.impTrack_name3P).src=lightboxObj.lightboxImpTrack3P;
	}
}

// adsLightbox_getKey(key) > Gets keycode. If 'esc' is pressed then it hides the lightbox.
function adsLightbox_getKey(e){
	// Retrieve current lightbox key
	var key = ads_globalCurLightboxArray[0];

	if(e.keyCode==27)
		cnetCollapse();
}
function adsLightbox_listenKey () {	document.onkeyup = adsLightbox_getKey; }

// COLLAPSE
function cnetCollapse(key) {
	// Retrieve current lightbox key
	if(!key) { var key = ads_globalCurLightboxArray[0]; }
	
	// Retrieve lightbox Obj to access all data
	var lightboxObj = adsLightbox_getObj(key);	
	var lightboxObjNode = adsLightbox_getObjNode(key);
	
	
	// prep objects
	var objOverlay = document.getElementById('ads_lightboxOverlay');
	var objLightbox = document.getElementById('ads_lightboxLightbox');
	//var objLoadingImage = document.getElementById('ads_lightboxLoadingImage');
	var objCloseButton = document.getElementById('ads_lightboxCloseButton');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';
	objLightbox.style.visibility = 'hidden';
	
	// hide close button if one is being used
	lightboxObj.lightboxCloseButton == true ? objCloseButton.style.display = 'none' : null;
	
	// remove swf div
	removeElement('ads_lightboxLightboxSwf');

	// make select boxes visible
	if (!window.innerHeight){ 
		selects = document.getElementsByTagName("select");
		for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "visible"; }
	}

	// disable keypress listener
	document.onkeyup = '';
		
	
	// Record Collapse impression
	document.getElementById(lightboxObj.impTrack_name).src=lightboxObj.collapseImpTrack;

	// If 3rd Party Lightbox Tracking supported
	if(lightboxObj.collapseImpTrack3P){
		// reload tracking gif to track the lightbox action
		document.getElementById(lightboxObj.impTrack_name3P).src=lightboxObj.collapseImpTrack3P;
	} 
}

function ads_createLightbox(o) {
	if(o.adsLightbox_srcBase.indexOf(".swf") == -1){
		o.adsLightbox_srcBase = o.adsLightbox_srcBase+".swf";
	}
	if(o.adsLightbox_srcLightbox.indexOf(".swf") == -1){
		o.adsLightbox_srcLightbox = o.adsLightbox_srcLightbox+".swf";
	}
	// List Defaults for 3rd Party tracking GIFs for backwards compatability
	if ( typeof(o.impTrack_name3P) == "undefined" ) {
		o.lightboxImpTrack3P=""; 
		o.collapseImpTrack3P=""; 
		o.flashImpTrack3P=""; 
		o.impTrack_name3P = "ads_impTrack3P7777";
	}
	
	if(isIE && isWin && !isOpera){
		document.write('<div align="center" id="'+o.adsLightbox_baseDiv+'" style="position:relative; width:'+o.adsLightbox_widthBase+'px; height:'+o.adsLightbox_heightBase+'px; text-align:center; margin:0 auto; z-index:0;">');
		document.write('	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+o.adsLightbox_widthBase+'" height="'+o.adsLightbox_heightBase+'" id="'+o.adsLightbox_baseName+'" align="middle">');
		document.write('	<param name="allowScriptAccess" value="always" />');
		document.write('	<param name="FlashVars" value="'+o.adsLightbox_flashVarsBase+'" />');
		document.write('	<param name="movie" value="'+o.adsLightbox_srcBase+'" /><param name="quality" value="high" /><param name="wmode" value="'+o.adsLightbox_wmodeBase+'" /><param name="bgcolor" value="'+o.adsLightbox_bgcolorBase+'" /></object>');		
		document.write('<br /><img src="'+o.flashImpTrack+'" border="0" height="1" width="1" name="'+o.impTrack_name+'" id="'+o.impTrack_name+'" style="position:absolute; top:0px; left:0px;" />');
		document.write('</div>');		
	} else {
		document.write('<div align="center" id="'+o.adsLightbox_baseDiv+'" style="position:relative; width:'+o.adsLightbox_widthBase+'px; height:'+o.adsLightbox_heightBase+'px; text-align:center; margin:0 auto; z-index:0;">');
		document.write('	<embed src="'+o.adsLightbox_srcBase+'" quality="high" wmode="'+o.adsLightbox_wmodeBase+'" bgcolor="'+o.adsLightbox_bgcolorBase+'" width="'+o.adsLightbox_widthBase+'" height="'+o.adsLightbox_heightBase+'" name="'+o.adsLightbox_baseName+'" align="middle" allowScriptAccess="always" FlashVars="'+o.adsLightbox_flashVarsBase+'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
		document.write('<br /><img src="'+ o.flashImpTrack +'" alt="impTrack" border="0" height="1" width="1" name="'+o.impTrack_name+'" id="'+o.impTrack_name+'" />');
		document.write('</div>');
	}

	// If Third Party Tracking GIF
	if(o.flashImpTrack3P!="" && o.lightboxImpTrack3P!=""){
		document.write('<br /><img src="'+ o.flashImpTrack3P +'" border="0" height="1" width="1" name="'+o.impTrack_name3P+'" id="'+o.impTrack_name3P+'" style="position:absolute; top:0px; left:0px;" />');
	}	
}

// LAUNCH THE LIGHTBOX AD WHEN CALLED
function ads_goAdLightbox(o){
	// Version check based upon the values entered above in "Globals"
	var hasReqestedVersion = DetectFlashVer(o.requiredMajorVersion, o.requiredMinorVersion, o.requiredRevision);

	// Check to see if the version meets the requirements for playback
	if (hasReqestedVersion && !ads_inFIF) {
		// if we've detected an acceptable version
		// embed the Flash Content SWF when all tests are passed	
		ads_createLightbox(o);
	} else {
		document.write(o.defaultGIF);
	}
}

// initLightbox()
// Function runs on window load, going through link tags looking for rel="lightbox".
// These links receive onclick events that enable the lightbox display for their targets.
// The function also inserts html markup at the top of the page which will be used as a
// container for the overlay pattern and the inline image.
function ads_lightboxInit(){
	// the rest of this code inserts html at the top of the page that looks like this:
	//
	// <div id="ads_lightboxOverlay">
	//		<a onclick="cnetCollapse(); return false;"><img id="ads_lightboxLoadingImage" /></a>
	//	</div>
	// <div id="ads_lightboxLightbox">
	//		<a onclick="cnetCollapse(); return false;" title="Click anywhere to close image">
	//			<img id="ads_lightboxCloseButton" />
	//		</a>
	// </div>
	
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','ads_lightboxOverlay');
	objOverlay.setAttribute('title','Click to close');
	objOverlay.onclick = function () {cnetCollapse(); return false;}
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var arrayPageSize = getPageSize();

	// preload and create loader image
	//var imgPreloader = new Image();	
	// if loader image found, create link to hide lightbox and create loadingimage
	/*imgPreloader.onload=function(){
		var objLoadingImageLink = document.createElement("a");
		objLoadingImageLink.onclick = function () {cnetCollapse(); return false;}
		objOverlay.appendChild(objLoadingImageLink);

		var objLoadingImage = document.createElement("img");
		objLoadingImage.src = ads_lightboxLoadingImage;
		objLoadingImage.setAttribute('id','ads_lightboxLoadingImage');
		objLoadingImageLink.appendChild(objLoadingImage);
		
		imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs

		return false;
	}
	imgPreloader.src = ads_lightboxLoadingImage;*/

	// create lightbox div, same note about styles as above
	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','ads_lightboxLightbox');
	objBody.insertBefore(objLightbox, objOverlay.nextSibling);
	
	// create link
	var objLink = document.createElement("a");
	objLink.setAttribute('title','Click to close');
	objLink.onclick = function () {cnetCollapse(); return false;}
	objLightbox.appendChild(objLink);

	// preload and create close button image
	var imgPreloadCloseButton = new Image();
	// if close button image found, 
	imgPreloadCloseButton.onload=function(){
		var objCloseButton = document.createElement("img");
		objCloseButton.src = ads_lightboxCloseButton;
		objCloseButton.setAttribute('id','ads_lightboxCloseButton');
		objLink.appendChild(objCloseButton);
		return false;
	}
	imgPreloadCloseButton.src = ads_lightboxCloseButton;
}

if(ads_globalCurLightboxArray.length!=0){
	// Get Lightbox Object from Global Array 'ads_lightboxObjArray'
	for(x=0;x<ads_lightboxObjArray.length;x++){
		if(ads_lightboxObjArray[x].objKey==ads_globalCurLightboxArray[(ads_globalCurLightboxArray.length-1)]){
			ads_goAdLightbox(ads_lightboxObjArray[x]);		
		}
	}
}

// Check to see if this is an Ajax Friendly IFrame Environment
var ads_inFIF = false;
if ( typeof(inFIF) == "undefined" ) {
    // Action to take if variableName is not defined - NO ACTION
} else {
    // Action to take if variableName *is* defined
    ads_inFIF = true;
}

// UTILITY TO RETURN LIGHTBOX OBJECT
function adsLightbox_getObj(objKey){
	for (adsLightbox_tempX = 0; adsLightbox_tempX < ads_lightboxObjArray.length; adsLightbox_tempX++){
		if(ads_lightboxObjArray[adsLightbox_tempX].objKey == objKey)
			return ads_lightboxObjArray[adsLightbox_tempX];
	}
}
// UTILITY TO RETURN LIGHTBOX ARRAY POSITION
function adsLightbox_getObjNode(objKey){
	for (adsLightbox_tempX = 0; adsLightbox_tempX < ads_lightboxObjArray.length; adsLightbox_tempX++){
		if(ads_lightboxObjArray[adsLightbox_tempX].objKey == objKey)
			return adsLightbox_tempX;
	}
}

// addLoadEvent() > Adds event to window.onload without overwriting currently assigned onload functions.
function addLoadEvent(func){	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
			oldonload();
			func();
		}
	}
}
addLoadEvent(ads_lightboxInit);	// run initLightbox onLoad

// removes element from the page
function removeElement(id)	{
	var Node = document.getElementById(id);
	Node.parentNode.removeChild(Node);
}

// getPageSize() > Returns array with page width, height and window width, height
// Core code from - quirksmode.org	
var xScroll, yScroll;
var windowWidth, windowHeight;
function getPageSize(){	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	
	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}
	
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

var IEversion=0;
if(navigator.appName.indexOf('Internet Explorer') != -1){
	temp=navigator.appVersion.split('MSIE');
	IEversion = parseFloat(temp[1]);
}