//Streaming Video AJAX updater
// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// how many seconds to wait to get a new number
var updateInterval = 900; 
// holds the remote server address and parameters
var serverAddress = "vid_data.php";
//Holds Current Serial number
var currentSerialNumber = "";
//Holds New Serial number
var newSerialnumber = "";
//holds action var
var action = "getUpdate";
//Holds Current Reload Toggle
var currentReloadToggle = "";
//Holds New Reload Toggle
var newReloadToggle = "";
//Reload Trigger
var reloader = false;

function tester()
{

}

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() 
{
  
  //netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
  
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // this should work for all browsers except IE6 and older
  try
  {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  } catch(e){
    // assume IE6 or older
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    // try every prog id until one works
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // try to create XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      }catch (e){}
    }
  }
  // return the created object or display an error message
  
 // if (xmlHttp)
  //{
 //   alert("Created the XMLHttpRequest object!");
  //}
  
  //if (!xmlHttp){
  //  alert("Error creating the XMLHttpRequest object.");
  //}else{ 
    return xmlHttp;
  //}
  

  
}

//Main Process Loop
function process()
{
	//If just starting, get a serial number, this will trigger an update
	if (action == "")
	{
	action = "getUpdate";
	}
		
	if (xmlHttp)
  	{
    // try to connect to the server
	    try
	    { 
	      if (action == "getSerial") 
	      {
	        //Get Current Serial
			xmlHttp.open("GET", serverAddress + "?action = getSerial", true);
	        xmlHttp.onreadystatechange = handleGetSerial;
	        xmlHttp.send(null);
	      }
	      else
	      {
	        //Get Update
			xmlHttp.open("GET", serverAddress + "?action = getUpdate", true);
	        xmlHttp.onreadystatechange = handleGetUpdate;
	        xmlHttp.send(null);
	      }
	    }
	    catch(e)
	    {
	      //alert("Can't connect to server:\n" + e.toString() + " -p:1");
		  setTimeout("process();", updateInterval * 1000);
	    }
  	}
}

//Handle Serial Request
function handleGetSerial()
{
	// when readyState is 4, we are ready to read the server response
	if (xmlHttp.readyState == 4) 
	{
	  // continue only if HTTP status is "OK"
	  if (xmlHttp.status == 200) 
	  {
	    try
	    {
	        // do something with the response from the server
	      
		  	//Get current serial number
			var newSerialNumber = xmlHttp.responseXML.getElementsByTagName("video_counter")[0].firstChild.data;
			//alert("1\ncurrentSerialNumber = " + currentSerialNumber + "\nnewSerialNumber = " + newSerialNumber + "\naction = " + action);
			
			//Compare current Serial with retrieved Serial
			if (currentSerialNumber != newSerialNumber)
			{
				//Reset timer on process loop
				//alert("one");
				action = "getUpdate";
				setTimeout("process();", updateInterval * 1000);
			}else{
				//alert("two");
				action = "getSerial";
				setTimeout("process();", updateInterval * 1000);
			}
			//alert("2\ncurrentSerialNumber = " + currentSerialNumber + "\nnewSerialNumber = " + newSerialNumber + "\naction = " + action);
	    }
	    catch(e)
	    {
	      // display error message
	      //alert("Error receiving new serial number:\n" + e.toString() + " -hgs:2");
		  setTimeout("process();", updateInterval * 1000);
	    }
	  }else{
	    // display status message
	    //alert("Error receiving new serial number:\n" + xmlHttp.statusText + " -hgs:3");
		setTimeout("process();", updateInterval * 1000);
	  }
	}
}


//Handle Update Request
function handleGetUpdate()
{
	// when readyState is 4, we are ready to read the server response
	if (xmlHttp.readyState == 4) 
	{
	  // continue only if HTTP status is "OK"
	  if (xmlHttp.status == 200) 
	  {
	    try
	    {
	        // do something with the response from the server
	      
		  	//Get data
			
			var video_title =  xmlHttp.responseXML.getElementsByTagName("video_title")[0].firstChild.data; 
			var title_span = document.getElementById("video_title");
			title_span.innerHTML = video_title;
			
			var video_message =  xmlHttp.responseXML.getElementsByTagName("video_message")[0].firstChild.data;
			var message_span = document.getElementById("video_message");
			message_span.innerHTML = video_message;
	
			var video_right_side =  xmlHttp.responseXML.getElementsByTagName("video_right_side")[0].firstChild.data; 
			var right_span = document.getElementById("video_right_content");
			right_span.innerHTML = video_right_side;
			
			//Get current serial number
			var newSerialNumber = xmlHttp.responseXML.getElementsByTagName("video_counter")[0].firstChild.data;
			//alert(" newSerialNumber = " + newSerialNumber);
			currentSerialNumber = newSerialNumber;

			var newReloadToggle = xmlHttp.responseXML.getElementsByTagName("video_reload")[0].firstChild.data; 
			if (currentReloadToggle == "")
			{
				currentReloadToggle = newReloadToggle;
			}else{
				if(currentReloadToggle != newReloadToggle)
				{
					document.location.reload();
				}
			}

			action = "getSerial";
			setTimeout("process();", updateInterval * 1000);
			
	    }catch(e){
			// display error message
			//alert("Error receiving data:\n" + e.toString() + " -hgu:1");
			action = "getSerial";
			setTimeout("process();", updateInterval * 1000);
	    }
	  }else{
			// display status message
			//alert("Error receiving data:\n" + xmlHttp.statusText + " -hgu:2");
			action = "getSerial";
			setTimeout("process();", updateInterval * 1000);
	  }
	}
}






