// Russell Thompson
// Project: modal & popup layers - stand alone
// Page: JavaScript / AJAX code modal layers
// May, 2008
// copyright 2008 - you are welcome to copy and use / distribute this code as much as you want. THIS FILE MAY NOT BE ALTERED. Altering this file is illegal under copyright and anti-hacker laws! 

// ******************************************
// -Use with modalStylesV1.css
// ******************************************

// GLOBAL VARIABLES

var windowX = 0;
var windowY = 0;
var divTop = 0;
var divLeft = 0;
var isIE = (navigator.userAgent.indexOf("MSIE") != -1); // this is to handle javascript bugs with older versions of IE

// AJAX FUNCTIONS

function runajax(objId, serverPage, post_get)
{
	// check for a valid IE instance
	var xmlhttp = false;
	
	// using IE?
	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		// check for older versions of IE
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E)
		{
			// using a non-Microshit browser
			xmlhttp = false;
		}
	}
	
	// if not using IE, create an instand of the object
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		xmlhttp = new XMLHttpRequest();
	}
	
	// decide to do POST or GET
	if (post_get)
	{
		// since this is added late, and only for GET instances, post_get should always = get
		var obj = document.getElementById(objId);
		xmlhttp.open("GET", serverPage);
		xmlhttp.onreadystatechange = function()
		{
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
			{
				obj.innerHTML = xmlhttp.responseText;
			}
		}
		
		xmlhttp.send(null);
	}
	else
	{
	
		// extract the server page and the variable strings from 'serverPage' to be send using POST
		var findChar = "?";
		var indexSpot = serverPage.indexOf(findChar);
		var pageString = serverPage.substring(0, indexSpot);
		// for testing -> alert("pageSting = " + pageString + ".");
		var varString = serverPage.substring(indexSpot+1);
		// for testing -> alert("varString = " + varString + ".");
		var obj = document.getElementById(objId);
		xmlhttp.open("POST", pageString, true);
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
		xmlhttp.onreadystatechange = function()
		{
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
			{
				obj.innerHTML = xmlhttp.responseText;
			}
		}
		
		xmlhttp.send(varString);
	} // end if-else 
}

// Delay in milliseconds before refreshing gallery
var refreshrate = 1000;

function refreshView()
{
	// reload the full size image
	setTimeout('runajax("middiv", "../includes/midpic.php")', refreshrate);
	
	// reload the navigation images
	setTimeout('runajax("picdiv", "../includes/picnav.php")', refreshrate);
}



// FUNCTION TO CALC BROWSER SIZE

function calcWindowXY()
{
	if (typeof window.innerWidth == 'number')
	{
		windowX = window.innerWidth;
		windowY = window.innerHeight;
	}
	else if(document.documentElement && document.documentElement.clientWidth)
	{
		windowX = document.documentElement.clientWidth;
		windowY = document.documentElement.clientHeight;
	}
	else
	{
		windowX = document.body.clientWidth;
		windowY = document.body.clientHeight;
	}
}

function calcDivTopLeft(givenWidth, givenHeight)
{
	displayX = givenWidth / 2;
	displayY = givenHeight / 2;
	
	centerX = windowX / 2;
	centerY = windowY / 2;
	
	divTop = centerY - displayY;
	divLeft = centerX - displayX;
}

function modalLayer(passWidth, passHeight, objId, serverPage, post_get)
{
	calcWindowXY();
	calcDivTopLeft(passWidth, passHeight);
	
	// make sure the window is at the top, left
	window.scrollTo(0, 0);
	
	// if user's browser is IE6 or lower, hide selects because of IE bug
	if (isIE)
	{
		for (var i = 0; i < document.getElementsByTagName('select').length; i++)
		{
			document.getElementsByTagName('select')[i].style.visibility = "hidden";
		}
	}
	
	// give div's some 'body'
	document.getElementById('modalLayerBackground').style.visibility = "visible";
	
	document.getElementById('modalLayerHolder').style.top = divTop + "px";
	document.getElementById('modalLayerHolder').style.left = divLeft + "px";
	document.getElementById('modalLayerHolder').style.width = passWidth + "px";
	document.getElementById('modalLayerHolder').style.height = passHeight + "px";
	document.getElementById('modalLayerHolder').style.visibility = "visible";
	
	// for testing
	// alert("serverPage = " + serverPage + ".");
	// alert("objId = " + objId + ".");
	// end test code
	
	runajax(objId, serverPage, post_get);
}

function modalLayerOff()
{
	// hide the popup divs
	document.getElementById('modalLayerHolder').innerHTML = "";
	document.getElementById('modalLayerHolder').style.visibility = "hidden";
	document.getElementById('modalLayerBackground').style.visibility = "hidden";
	document.getElementById('index_flash').style.visibility = "visible";
	
	// if user's browser is IE6 or lower, the selects have been hidden because of IE bug
	// now must un-hide them
	if (isIE)
	{
		for (var i = 0; i < document.getElementsByTagName('select').length; i++)
		{
			document.getElementsByTagName('select')[i].style.visibility = "visible";
		}
	}
}

// function to prepare the serverPage string for AJAX
function prepAJAX(theSwitch, theForm, theObj, special)
{
	switch (theSwitch)
	{
		case "test":
			var mydocument = document.residentialForm;
			var myform = theForm;
			// this is for testing -> alert ("myform is: " + myform + ".");
			
			// this is for testing -> var sendPage = "../pages/checkValues.php?";
			if (special)
			{
				var sendPage = "../pages/residential.php?";
			}
			else
			{
				var sendPage = "pages/residential.php?";
			}
			
			for (var i = 0; i < myform.elements.length; i++)
			{
				// this is for testing -> alert ("Element Name: " + myform.elements[i].name + ", Element Value: " + myform.elements[i].value + ".");
				sendPage += myform.elements[i].name + "=" + myform.elements[i].value + "&";
			}
			
			runajax(theObj, sendPage, 'get');
		break;
		
		case "testCommercial":
			var mydocument = document.commercialForm;
			var myform = theForm;
			// this is for testing -> alert ("myform is: " + myform + ".");
			
			// this is for testing -> var sendPage = "../pages/checkValues.php?";
			if (special)
			{
				var sendPage = "../pages/commercial.php?";
			}
			else
			{
				var sendPage = "pages/commercial.php?";
			}
			
			for (var i = 0; i < myform.elements.length; i++)
			{
				// this is for testing -> alert ("Element Name: " + myform.elements[i].name + ", Element Value: " + myform.elements[i].value + ".");
				sendPage += myform.elements[i].name + "=" + myform.elements[i].value + "&";
			}
			
			runajax(theObj, sendPage, 'get');
		break;
		
		case "process":
			var mydocument = document.peopleCheckForm;
			var myform = theForm;
			// this is for testing -> alert ("myform is: " + myform + ".");
			
			// this is for testing -> var sendPage = "../pages/checkValues.php?";
			if (special)
			{
				var sendPage = "../pages/residential.php?";
			}
			else
			{
				var sendPage = "pages/residential.php?";
			}
			
			for (var i = 0; i < myform.elements.length; i++)
			{
				// this is for testing -> alert ("Element Name: " + myform.elements[i].name + ", Element Value: " + myform.elements[i].value + ".");
				sendPage += myform.elements[i].name + "=" + myform.elements[i].value + "&";
			}
			
			runajax(theObj, sendPage, 'get');
		break;
		
		case "processCommercial":
			var mydocument = document.peopleCheckForm;
			var myform = theForm;
			// this is for testing -> alert ("myform is: " + myform + ".");
			
			// this is for testing -> var sendPage = "../pages/checkValues.php?";
			if (special)
			{
				var sendPage = "../pages/commercial.php?";
			}
			else
			{
				var sendPage = "pages/commercial.php?";
			}
			
			for (var i = 0; i < myform.elements.length; i++)
			{
				// this is for testing -> alert ("Element Name: " + myform.elements[i].name + ", Element Value: " + myform.elements[i].value + ".");
				sendPage += myform.elements[i].name + "=" + myform.elements[i].value + "&";
			}
			
			runajax(theObj, sendPage, 'get');
		break;
		
		case "reset":
			// this case simply takes the user back to the (php) general case and displays the empty form again
			if (special == "residential")
			{
				var sendPage = "../pages/residential.php?section=general";
			}
			else if (special == "commercial")
			{
				var sendPage = "pages/commercial.php?section=general";
			}
			else if (special == "residentialIndex")
			{
				var sendPage = "pages/residential.php?section=general";
			}
			
			runajax(theObj, sendPage, 'get');
		break;
		
	} // end switch
	
	// for testing
	// alert("The URL = " + sendPage + ".");
	// end testing
	
} // end prepAJAX function

// validation function(s)
/*
function validateForm(theForm)
{
	switch (theForm)
	{
		case "tellAFriend_form":
			var returnValue = false;
			var myForm = document.tellAFriend_form;
			
			if (myForm.rName.value == "" || myForm.rName.value == " ")
			{
				alert("The recipient's name is required.");
				myForm.rName.focus();
			}
			else if (myForm.rEmail.value == "" || myForm.rEmail.value == " ")
			{
				alert("The recipient's e-mail address is required.");
				myForm.rEmail.focus();
			}
			else if (myForm.sName.value == "" || myForm.sName.value == " ")
			{
				alert("Please enter your name.  It is required to send this message.");
				myForm.sName.focus();
			}
			else if (myForm.sEmail.value == "" || myForm.sEmail.value == " ")
			{
				alert("Please enter your e-mail address.  It is required to send this message.");
				myForm.sEmail.focus();
			}
			else
			{
				returnValue = true;
			}
			
			return returnValue;
		break;
	} // end switch
} // end validateForm function
*/
