var Fload=false;

// Popup code
var gPopupMask = null;
var gPopupContainer = null;
var gPopFrame = null;
var gReturnFunc;
var gPopupIsShown = false;
var gHideSelects = false;

var gTabIndexes = new Array();
// Pre-defined list of tags we want to disable/enable tabbing into
var gTabbableTags = new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME");	

// If using Mozilla or Firefox, use Tab-key trap.
if (!document.all) 
{
	document.onkeypress = keyDownHandler;
}

/**
 * Initializes popup code on load.	
 */
function initPopUp(_url) 
{
	// Add the HTML to the body
	if ((Fload == undefined) || (!Fload))
	{
		return;
	}
	var qs=new Querystring(_url);
	sHTML="<div style=\"font-family:Arial;font-weight:bold;font-size:16px;color:#d8f2c2;padding-top:14px;\" > - Get " + qs._msite + " on your mobile</div>";
  theBody = document.getElementsByTagName('BODY')[0];
	popmaskIframe=document.createElement('iframe');
	/*popmaskIframe.id="popmaskIframe";
	popmaskIframe.style.position = "absolute";
	popmaskIframe.style.top="0";*/
	popmask = document.createElement('div');
	popmask.id = 'popupMask';
	popcont = document.createElement('div');
	popcont.id = 'popupContainer';
	popcont.innerHTML = '' +
		'<div id="popupInner">' +
			'<div id="popupTitleBar">' +
				'<div id="popupTitle">' + '<div id="popupControlHeaderImg">' + '<img src="http://mobile.ninemsn.com.au/mobile/gomobile/img/gm_popup_05.gif" id="popCloseBox"/>' +  '</div>' + sHTML + '</div>' +
				'<div id="popupControls">' +
					'<img src="http://mobile.ninemsn.com.au/mobile/gomobile/img/gm_pop_close.gif" onclick="hidePopWin(false);" id="popCloseBox" />' +
				'</div>' +
			'</div>' +
			'<iframe src="" scrolling="no" frameborder="0" allowtransparency="true" id="popupFrame" name="popupFrame"></iframe>' 
		'</div>';
	//theBody.appendChild(popmaskIframe);
	theBody.appendChild(popmask);
	theBody.appendChild(popcont);
	
	gPopupMask = document.getElementById("popupMask");
	gPopupContainer = document.getElementById("popupContainer");
	gPopFrame = document.getElementById("popupFrame");	
	
	// check to see if this is IE version 6 or lower. hide select boxes if so
	// maybe they'll fix this in version 7?
	var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10);
	if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE") > -1)
	{
		gHideSelects = true;
	}
	var width = 400;
	var height = 200;
	// Parse out optional width and height from className
	params = document.getElementById("lnkPopUp").className.split('-');
	
	/*
	if (params.length == 3)
	{
		width = parseInt(params[1]);
		height = 465; //parseInt(params[2]);
	}
	*/
	
	var browser = '';
    if (browser == '')
    {
      if (navigator.appName.indexOf('Microsoft') != -1)
        {
                browser = 'IE'
        }
    }
    if (browser == 'IE') 
    {
       width = 737//parseInt(params[1]);
	   height = 445;
    }
    else
    {
	   width = 737//parseInt(params[1]);
	   height = 455;
	}
	

	showPopWin(_url,width,height,null); // return false; -> used in the future
}


 /**
	* @argument width - int in pixels
	* @argument height - int in pixels
	* @argument url - url to display
	* @argument returnFunc - function to call when returning true from the window.
	* @argument showCloseBox - show the close box - default true
	*/

function showPopWin(url, width, height, returnFunc, showCloseBox) 
{
	// show or hide the window close widget
	if (showCloseBox == null || showCloseBox == true) 
	{
		document.getElementById("popCloseBox").style.display = "block";
	} 
	else 
	{
		document.getElementById("popCloseBox").style.display = "none";
	}
	gPopupIsShown = true;
	disableTabIndexes();
	gPopupMask.style.display = "block";
	gPopupContainer.style.display = "block";
	// calculate where to place the window on screen
	centerPopWin(width, height);
	
	var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);


	gPopupContainer.style.width = width + "px";
	gPopupContainer.style.height = (height+titleBarHeight) + "px";
	
	setMaskSize();

	// need to set the width of the iframe to the title bar width because of the dropshadow
	// some oddness was occuring and causing the frame to poke outside the border in IE6
	//gPopFrame.style.width = parseInt(document.getElementById("popupTitleBar").offsetWidth, 10) + "px";
	//gPopFrame.style.height = (height) + "px";
	
	// set the url
	gPopFrame.src = url;
	
	gReturnFunc = returnFunc;
	// for IE
	if (gHideSelects == true) 
	{
		hideSelectBoxes();
	}
	
	window.setTimeout("setPopTitle();", 600);
}

//
function centerPopWin(width, height) 
{
	if (gPopupIsShown == true)
	{
		if (width == null || isNaN(width))
		{
			width = gPopupContainer.offsetWidth;
		}
		if (height == null) 
		{
			height = gPopupContainer.offsetHeight;
		}
		
		var theBody = document.getElementsByTagName("BODY")[0];
		//theBody.style.overflow = "hidden"; //maybe used in the future
		
		var scTop = parseInt(getScrollTop(),10);
		var scLeft = parseInt(theBody.scrollLeft,10);
		
		gPopupMask.style.top = scTop + "px";
		gPopupMask.style.left = scLeft + "px";
	
		setMaskSize();
		
		var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);
		
		var fullHeight = getViewportHeight();
		var fullWidth = getViewportWidth();
		_hdHeigth=fixPosition();
		gPopupContainer.style.top = (scTop + _hdHeigth +((fullHeight - (height+titleBarHeight)) / 2)) + "px";
		gPopupContainer.style.left =  (scLeft + ((fullWidth - width) / 2)) + "px";
	}
}
addEvent(window, "resize", centerPopWin);
window.onscroll = centerPopWin;

/**
 * Sets the size of the popup mask.
 *
 */
function setMaskSize()
{
	var theBody = document.getElementsByTagName("BODY")[0];
			
	var fullHeight = getViewportHeight();
	var fullWidth = getViewportWidth();
	
	// Determine what's bigger, scrollHeight or fullHeight / width
	if (fullHeight > theBody.scrollHeight) 
	{
		popHeight = fullHeight;
	} 
	else
	{
		popHeight = theBody.scrollHeight;
	}
	
	if (fullWidth > theBody.scrollWidth)
	{
		popWidth = fullWidth;
	} 
	else
	{
		popWidth = theBody.scrollWidth;
	}
	
	
	gPopupMask.style.height = popHeight + "px";
	gPopupMask.style.width = popWidth + "px";
	
	//Fix white space in IE
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
		gPopFrame.style.height = "400px";
		if (window.parent.document.location.href.indexOf("ninemsn")<0)
      document.getElementById("popupTitleBar").style.width="733px";
	}
	
	//Iframe
	/*
	_popmaskIframe=document.getElementById("popmaskIframe");
	_popmaskIframe.style.height = popHeight + "px";
	_popmaskIframe.style.width = popWidth + "px";
	_popmaskIframe=null;*/
	
}

/**
 * @argument callReturnFunc - bool - determines if we call the return function specified
 * @argument returnVal - anything - return value 
 */
function hidePopWin(callReturnFunc)
{
	gPopupIsShown = false;
	var theBody = document.getElementsByTagName("BODY")[0];
	theBody.style.overflow = "";
	restoreTabIndexes();
	if (gPopupMask == null)
	{
		return;
	}
	gPopupMask.style.display = "none";
	gPopupContainer.style.display = "none";
	if (callReturnFunc == true && gReturnFunc != null)
    {
		gReturnFunc(window.frames["popupFrame"].returnVal);
	}
	gPopFrame.src = '';
	// display all select boxes
	if (gHideSelects == true)
	{
		displaySelectBoxes();
	}
	removeNode(gPopupContainer);
	removeNode(gPopupMask);
}

/**
 * Sets the popup title based on the title of the html document it contains.
 * Uses a timeout to keep checking until the title is valid.
 */
function setPopTitle()
{
	return;
	if (window.frames["popupFrame"].document.title == null) 
	{
		window.setTimeout("setPopTitle();", 10);
	} 
	else
	{
		document.getElementById("popupTitle").innerHTML = window.frames["popupFrame"].document.title;
	}
}

// Tab key trap. iff popup is shown and key was [TAB], suppress it.
// @argument e - event - keyboard event that caused this function to be called.
function keyDownHandler(e)
{
    if (gPopupIsShown && e.keyCode == 9) 
    {
		 return false;
	}
}

// For IE.  Go through predefined tags and disable tabbing into them.
function disableTabIndexes() 
{
	if (document.all) 
	{
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++)
		{
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) 
			{
				gTabIndexes[i] = tagElements[k].tabIndex;
				tagElements[k].tabIndex="-1";
				i++;
			}
		}
	}
}

// For IE. Restore tab-indexes.
function restoreTabIndexes()
{
	if (document.all) 
	{
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) 
		{
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) 
			{
				tagElements[k].tabIndex = gTabIndexes[i];
				tagElements[k].tabEnabled = true;
				i++;
			}
		}
	}
}


/**
* Hides all drop down form select boxes on the screen so they do not appear above the mask layer.
* IE has a problem with wanted select form tags to always be the topmost z-index or layer
*
*/
function hideSelectBoxes() 
{
	for(var i = 0; i < document.forms.length; i++) 
	{
		for(var e = 0; e < document.forms[i].length; e++)
		{
			if(document.forms[i].elements[e].tagName == "SELECT") 
			{
				document.forms[i].elements[e].style.visibility="hidden";
			}
		}
	}
}

/**
* Makes all drop down form select boxes on the screen visible so they do not reappear after the dialog is closed.
* IE has a problem with wanted select form tags to always be the topmost z-index or layer
*/
function displaySelectBoxes() 
{
	for(var i = 0; i < document.forms.length; i++)
	{
		for(var e = 0; e < document.forms[i].length; e++)
		{
			if(document.forms[i].elements[e].tagName == "SELECT")
			{
				document.forms[i].elements[e].style.visibility="visible";
			}
		}
	}
}
/**
* Attach a function to the load event of the page
*/
window.onload=function()
{
	init();
}

function init()
{
   Fload=true;
}

/**
* Added by fix problem with 9msn header
*/
function fixPosition()
{
  if(window.parent.document.getElementById('hd_navUL') !=undefined)
  {
		if (navigator.appName.indexOf('Microsoft') != -1)
			return window.parent.document.getElementById('hd_navUL').offsetHeight;
		else
			return window.parent.document.getElementById('hd_navUL').offsetHeight + 20;
  }
  else
		return 0;
}

function getScrollTop()
{
	_scroll=0;
	if (window.parent.document.location.href.indexOf("ninemsn")>0)
	{
			var theBody = document.getElementsByTagName("BODY")[0];
			_scroll= parseInt(theBody.scrollTop,10);
			theBody =null;
	}
	else
	{
			_scroll=document.documentElement.scrollTop;
	}
	return _scroll;
}

removeNode = function(n)
{
  fIE=(navigator.appName.indexOf('Microsoft') != -1);
  if (fIE)
        n.removeNode(true);
	else if (n.parentNode)
		return n.parentNode.removeChild(n);
};



