// ************ Global definitions ...
var xmlTimer = new Array();	// Separate timer to handle separate AJAX panels
var arContent = new Array();	// Fader panel content
var arLink = new Array();	// Fader panel content
var lenContent = 0;		// Array size for fader panel content
var indexContent= 1;		// Wierd, but true... index must start at 2...
var fadeId = 0;			// Fader ID catch

var isWorking = false;
var http1 = getHTTPObject(); 	// We create the HTTP Object
var userAgent = navigator.userAgent.toLowerCase();
var isMSIE = false;		// Internet Explorer flag initialize
isMSIE = (document.all && userAgent.indexOf('msie')!=-1)? true: false;

var vTarget = "/cgibin/boxOutput.cgi"


// ******* AJAX Functions

function handler(vTargetPanel) {
//		if (!isWorking && vTargetPanel != "BoxCalendarContent" && vTargetPanel != "BoxCalendarContent") { return;}

		if (http1.readyState == 4 ) {	

				if (xmlTimer[vTargetPanel]) clearTimeout(xmlTimer[vTargetPanel]); 
				var x; var y; var z; var results;
				i = 0;
				/** Split data incoming with a double percentage sign parameter **/
				/** first parameter = div, second parameter = content **/
				results = http1.responseText.split("%%||%%");
				while (results[i] && results[i] != " coding ")
				{	
					if (results[0].indexOf("error")>0) alert(results);
					x = document.all?document.all[results[i]]:document.getElementById(results[i]); 
					if ( (x==null) && results[i].indexOf("small") == 0 ) {alert("NO div FOUND : " + results[i])}
					else {  x.innerHTML = results[i+1] ; 
						x.style.visibility="visible";}
					i += 2;
				}
				/** Make Execute coding line **/				
				eval (results[i+1]);

				lenContent = arContent.length;
				isWorking = false;
					}
	}


function fileData(vTargetPanel, vScript, vData) {
	if (isWorking) { return; }	
	var vMethod = "POST";	
	var x = document.getElementById(vTargetPanel); 
	x.style.visibility="visible";
	isWorking = true;
	if (!vScript) {vScript=vTarget;} if (!vData) {vData="";} //else {alert(vTargetPanel + "   vData:" + vData);}
	var url = vScript;
	//  ****** Default to cgibin, but if with a [backslash] or [php], take the whole url
	//var url = "/cgibin/" + vScript;  

	//  ****** Default to Earth, but use deer when going to focus area
	var waitText = "<br><center><img src='images/Child_drawing.gif' width='74' height='81'><br><blockquote><b> Retrieving Information ...</b></blockquote></center>" ;
	x.innerHTML = waitText;

	// ************ Get down to business ... **************
    	  http1.open(vMethod, url, true);
	  http1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	  http1.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');
	  http1.onreadystatechange = function() {handler(vTargetPanel);	}

	// **** Get timeout coding ****
	  
	  xmlTimer[vTargetPanel] = window.setTimeout('xmlTimeoutGeneric("'+vTargetPanel+'")', 7*1000);
 	  http1.send(vData);
}


function xmlTimeoutGeneric(vTargetPanel) {
	// Check if not done or if is working
	if (http1.readyState != 4 ) {	
		http1.abort();
		isWorking = false;
		var waitText = "<br><br><br><center><blockquote><b> A timeout was detected on your data request.<br><br><input type='button' onclick='javascript:window.location.reload()' value='Back'></b></blockquote></center>" ;
		var x = document.all?document.all[vTargetPanel]:document.getElementById(vTargetPanel); 
		x.innerHTML = waitText;	
	}
	else {	handler(vTargetPanel);}
}

function getHTTPObject() 
	{
  		var xmlhttp;

		/*@cc_on	
		@if (@_jscript_version >= 5)
		try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
		catch (e) {
		      try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (E) { xmlhttp = false; }
		}
		@else
		xmlhttp = false;
		@end @*/

		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
			try { xmlhttp = new XMLHttpRequest(); }
			catch (e) { xmlhttp = false; }
		}
		return xmlhttp;
	}


// *****************************************

// ************ Fader Functions ...
var TimeToFade = 1000.0;
var TimeToStay = 7000.0;

function jump(vIndex)
{  
	var vIndex
	var element = document.getElementById('BoxMainContent');
	var element1 = document.getElementById('BoxMain1Content');
	if (Math.abs(element.FadeState) != 2 && element.FadeState != null) return;  // go back if still fading...

	indexContent = vIndex;
	clearTimeout(fadeId);

	var nextContent = (indexContent == arContent.length-1)? 0 : indexContent+1 ;
		
	if (element.FadeState == -2)
	{ element.innerHTML = arContent[indexContent]; element1.innerHTML = arContent[nextContent]; fade();}
	if (element.FadeState == 2 || element.FadeState == null)
	{ element1.innerHTML = arContent[indexContent]; element.innerHTML = arContent[nextContent]; fade();}
}


function animateFade(lastTick)
{  
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
	var element = document.getElementById('BoxMainContent');
	var element1 = document.getElementById('BoxMain1Content');
 
	if(element.FadeTimeLeft <= elapsedTicks)
	{
		element.style.opacity = element.FadeState == 1 ? '1' : '0';
		element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
		element.FadeState = element.FadeState == 1 ? 2 : -2;

		// handle the fade image indicator
		var y = 0;
		while (y < lenContent)
		{
			var x = "faderIndex"+y;
			document.getElementById(x).style.backgroundColor= (y == indexContent) ? "blue":"white";
			y++;
		}

		// Reset fader issues.
		// FadeState: 2 = solid first panel; -2 = solid second panel
		indexContent = (indexContent == arContent.length-1)? 0 : indexContent+1 ;
		if (element.FadeState == -2)
		{ 	element.style.filter = 'alpha(opacity = 0)'; element.innerHTML = arContent[indexContent]; }
		if (element.FadeState == 2)
		{ 	element1.style.filter = 'alpha(opacity = 0)'; element1.innerHTML = arContent[indexContent];}
		fadeId = setTimeout("fade();", TimeToStay);
  		return;
	}
 
	element.FadeTimeLeft -= elapsedTicks;
	var newOpVal = element.FadeTimeLeft/TimeToFade;
	var newOpVal1 = 1 - newOpVal;

	if(element.FadeState == 1) { newOpVal = 1 - newOpVal; newOpVal1 = element.FadeTimeLeft/TimeToFade;}

	element.style.opacity = newOpVal;
	element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
 
	element1.style.opacity = newOpVal1;
	element1.style.filter = 'alpha(opacity = ' + (newOpVal1*100) + ')';

	fadeId = setTimeout("animateFade(" + curTick + ")", 33);
}

function fade()
{
	var element = document.getElementById('BoxMainContent');
	if(element.FadeState == null)
	{
		if(element.style.opacity == null
		    || element.style.opacity == ''
		    || element.style.opacity == '1')
		{ element.FadeState = 2;}
		else
		{ element.FadeState = -2;}
	}
	 
	if(element.FadeState == 1 || element.FadeState == -1)
	{
		element.FadeState = element.FadeState == 1 ? -1 : 1;
		element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
	}
	else
	{
		element.FadeState = element.FadeState == 2 ? -1 : 1;
		element.FadeTimeLeft = TimeToFade;
		fadeId = setTimeout("animateFade(" + new Date().getTime() + ")", 33);
	}  
}


// ** Fader detains Functions ...
function faderMessage()
{ 
	var vTrueIndex = (indexContent == 0)? arContent.length -1: indexContent -1; 
	fileData('messageBox','','proc=fader&id=' + arLink[vTrueIndex]) 
}

// *****************************************

