// General functions 
// handles ajax calls and hiding, showing, positioning and populating the how to buy div
var IE = document.all?true:false;
function createRequestObject() {
  var ro;
  ro = window.XMLHttpRequest
       ? new XMLHttpRequest() :
         new ActiveXObject("Microsoft.XMLHTTP");
  return ro;
}

var http = createRequestObject();
var fs;

/**********************************************************************************************************/
function hideFlashAndSelects(){
	if(document.getElementById('flash')){
		document.getElementById('flash').style.display='none';	
	}
	
	if(IE)
	{ 
		var objects = document.getElementsByTagName("SELECT");
		for(var no=0;no<objects.length;no++)
		{
			  objects[no].style.display = "none";
		}
	}	
}

function fnGetTimeSuffix(){
	var sDate = new Date();
	return sDate.getMinutes() + '' + sDate.getSeconds() + '' + sDate.getMilliseconds();
}

function fnHowToBuy(handler){
	hideFlashAndSelects();
	
	http.open('get', handler + '?time=' + fnGetTimeSuffix());
	http.onreadystatechange = handleResponseHowToBuy;
	http.send(null);
	return false;
}

function fnMoreInfo(handler){
	hideFlashAndSelects();
	http.open('get', handler + '?time=' + fnGetTimeSuffix());
	http.onreadystatechange = genericPopupHandler;
}

function handleResponseHowToBuy(){
	if(genericPopupHandler()){
		fnLoadMap();
	}
}

function removeChildren(el){
	while(e = el.childNodes[0]){
		e.parentNode.removeChild(e);
	}
}

function removePopup(){
	hideLayer('holdingDiv');
	
	if(fs){
		fs.remove();
		fs = null;
	}
	return false;
}

function genericPopup(title , tBody){
	var al = document.createElement("div");
	var cl = document.createElement("div");
	var header = document.createElement("h3");
	var comm = document.createElement("div");
	var clA = document.createElement("a");
	var hD = document.getElementById("holdingDiv");
	var layer;
	removePopup();
	al.style["zIndex"] = 10;
	
	fs = new MagicFullScreen();
	fs.create();
	layer = fs.getElement();
	
	removeChildren(hD);
	
	layer.onmouseup = function(){
		removePopup();
		
	}
	
	cl.setAttribute("id" , "close");
	cl.className = "hC";
	
	al.setAttribute("id" , "alert");
	
	clA.setAttribute("href" , "#");
	clA.onclick = removePopup;
	clA.appendChild(document.createTextNode("Close"));
	
	cl.appendChild(clA);
	
	comm.setAttribute("id" , "comment");
	comm.className = "clearfix";
	
	header.appendChild(document.createTextNode(title));
		
	comm.innerHTML = tBody;
	al.appendChild(header);
	al.appendChild(cl);
	al.appendChild(comm)
	
	hD.appendChild(al);

	PositionLayerThisIsStupid('holdingDiv' , 'large');
	
	showHoldingDiv();
}


function genericPopupHandler() {
	if(http.readyState == 4){
		var response = http.responseText;
		document.getElementById('holdingDiv').innerHTML =response;
		showHoldingDiv();
		PositionLayer('holdingDiv','large');
		return true;
	}
	return false;
}

function showHoldingDiv(){
	document.getElementById('holdingDiv').style.display = 'block';
}







/**********************************************************************************************************/
function PositionLayer(layerName, size)
{	
	if(size == 'large'){
		
		var nTop = 135;
		var framewidth = '565px';
		var nLeft = 282;
	}else{
		
		var nTop = 62;
		var framewidth = '265px';
		var nLeft = 132;
	}
	
	var IE = document.all?true:false;
	if(navigator.userAgent.indexOf('Netscape/7.0') != -1) var ns7 = true;
	layer = document.getElementById(layerName);
	
	document.getElementById("alert").style.width = framewidth;
	
	if(IE)
	{ 
		layer.style.top = (document.documentElement.clientHeight / 2) - nTop;
		layer.style.left = ( document.body.clientWidth / 2 ) - nLeft;
	}
	else
	{
		var newTop = ( window.innerHeight / 2) - nTop;
		var newLeft = ( document.body.clientWidth / 2 ) - nLeft;
		newTop += 'px';
		newLeft += 'px';
		layer.style.top = newTop;
		layer.style.left = newLeft;
	}
	if(ns7)
	{			
		sNetscapeLeft = (window.innerWidth / 2) - nLeft + 'px';
		sNetscapeTop = window.pageYOffset + 300 + 'px';
		layer.style.left = sNetscapeLeft;
		layer.style.top = sNetscapeTop;
	}
	if(navigator.userAgent.indexOf('MSIE 5.5') != -1) 
	{
		sIE5Left = (document.body.clientWidth / 2) - nLeft + 'px';
		layer.style.left = sIE5Left;
	}
	
	/*
	if (document.getElementById('errorFrame')) {
		
		frame = document.getElementById('errorFrame'); // find iFrame to position behind layer to fix selects breaking layer.
	
		if(layerName == 'holdingDiv')
		{
			var errorFrameTop = layer.style.top.substring(0, layer.style.top.indexOf('px')) - 0;
			var errorFrameLeft = layer.style.left.substring(0, layer.style.left.indexOf('px')) - 0;
			if(document.getElementById('alert'))
			{
				var errorFrameHeight = document.getElementById('alert').clientHeight - 0;
				errorFrameHeight = 300;
			}
			else
			{
				var errorFrameHeight = 120;
			}
			frame.style.top = errorFrameTop+5;
			frame.style.left = errorFrameLeft+5;
			frame.style.width = framewidth;//'265px';
			frame.style.height = errorFrameHeight - 19;
			frame.style.display = "block";
			frame.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
		}
		else
		{
		}
	}
	*/
	
	
	
}

// this is the function above it duplicated.  Why?  Because another javascript file
// includes the same function name and overwrites it.  Genius.
function PositionLayerThisIsStupid(layerName, size)
{	
	if(size == 'large'){
		
		var nTop = 135;
		var framewidth = '565px';
		var nLeft = 282;
	}else{
		
		var nTop = 62;
		var framewidth = '265px';
		var nLeft = 132;
	}
	
	var IE = document.all?true:false;
	if(navigator.userAgent.indexOf('Netscape/7.0') != -1) var ns7 = true;
	layer = document.getElementById(layerName);
	
	document.getElementById("alert").style.width = framewidth;
	
	if(IE)
	{ 
		layer.style.top = (document.documentElement.clientHeight / 2) - nTop;
		layer.style.left = ( document.body.clientWidth / 2 ) - nLeft;
	}
	else
	{
		var newTop = ( window.innerHeight / 2) - nTop;
		var newLeft = ( document.body.clientWidth / 2 ) - nLeft;
		newTop += 'px';
		newLeft += 'px';
		layer.style.top = newTop;
		layer.style.left = newLeft;
	}
	if(ns7)
	{			
		sNetscapeLeft = (window.innerWidth / 2) - nLeft + 'px';
		sNetscapeTop = window.pageYOffset + 300 + 'px';
		layer.style.left = sNetscapeLeft;
		layer.style.top = sNetscapeTop;
	}
	if(navigator.userAgent.indexOf('MSIE 5.5') != -1) 
	{
		sIE5Left = (document.body.clientWidth / 2) - nLeft + 'px';
		layer.style.left = sIE5Left;
	}
}

function hideLayer(layerName)
{
	document.getElementById(layerName).style.display = 'none';
	if(document.getElementById('errorFrame')) document.getElementById('errorFrame').style.display = 'none';
	if(document.getElementById('flash')){
		document.getElementById('flash').style.display='block';	
	}
	if(IE)
	{ 
		var objects = document.getElementsByTagName("SELECT");
		for(var no=0;no<objects.length;no++)
		{
			  objects[no].style.display = "block";
		}
	}
}