/*
 * ajax.js
 * Ajax Functions
 * The following functions support the AJAX requests needed in this application
 * to include:
 *  sendRequest - submit he request the the request server
 *  getFilter - get a list of filters by application
 *  getContent - get a list of videos, clips, movies given a filter
 *
 * TAP.tv
 * TAP Development Team
 * 7 August 2007
 */


var http = false;

// Request Constants
var req_limit = 5;
var req_timeout = 2; // minutes
var req_resend_freq = 30000; // 30 seconds;

if(navigator.appName == "Microsoft Internet Explorer") 
{
	http = new ActiveXObject("Microsoft.XMLHTTP");
} 
else 
{
	http = new XMLHttpRequest();
}

function sendRequest(app, sms_code, filter) {

	var location_code = document.getElementById("selectedLocation_"+app).value;

	if (location_code==null || location_code==0)
	{
		document.getElementById(sms_code).innerHTML = "No Location!";
		setTimeout("resend('"+app+"', '"+sms_code+"', '"+filter+"')", 5000);
	}
	else
	{
		document.getElementById(sms_code).innerHTML = "Sending...";

		//document.getElementById(sms_code).innerHTML = "Req: " + sms_code + " SMS: " + sms_code + "Loc: " + location_code;

		// Set Cookie to track requests
		num_req = GetCookie("requests");
		if (num_req==null || num_req==0 || num_req < req_limit)
		{
			var uri = "sendRequest.php?location_code="+location_code+"&sms_code="+sms_code+"&app="+app;
			http.open("GET", uri, true);
			http.onreadystatechange=function() 

			{

				//if(http.readyState == 1) {
				//  document.getElementById(sms_code).innerHTML = "Connecting";
				//}

				if(http.readyState == 2) {
				  document.getElementById(sms_code).innerHTML = "Connected";
				}

				if(http.readyState == 3) {
				  document.getElementById(sms_code).innerHTML = "Received";
				}


				if(http.readyState == 4) {


				  if (http.responseText == "Requested")
				  {
				  	num_req++
				  	SetCookie("requests", num_req, req_timeout);
				  }
		
				  document.getElementById(sms_code).innerHTML = http.responseText;
				  setTimeout("resend('"+app+"','"+sms_code+"','"+filter+"')",60000);
				  document.write = location_code;
				}
			}
		
			try
			{
				http.send(null);
			}
			catch(err)
			{
				document.getElementById(sms_code).innerHTML = "Busy..";
			}
		}
		else
		{
			document.getElementById(sms_code).innerHTML = "Queue Full";
		}
		
		setTimeout("resend('"+app+"','"+sms_code+"','"+filter+"')",req_resend_freq);
	}
}

function getFilter(app) {

	switch (app){
		case "Xtreme":
		message = "Getting Categories...";
		break;
	case "Tunes":
		message = "Getting Artists...";
		break;
	case "LiveBar":
		message = "Getting Channels...";
		break;
	default : message = "Getting Data...";
	}


	document.getElementById('frm'+app).innerHTML = message;

	var uri = "getFilter.php?app="+app;
	
	http.open("GET", uri, true);
	http.onreadystatechange=function() 
	{

		//if(http.readyState == 1) 
		//{
		//  document.getElementById('frm'+app).innerHTML = "Connecting";
		//}

		if(http.readyState == 2) 
		{
		  document.getElementById('frm'+app).innerHTML = "Connected";
		}

		if(http.readyState == 3) 
		{
		  document.getElementById('frm'+app).innerHTML = "Received";
		}


		if(http.readyState == 4) 
		{
		  document.getElementById('frm'+app).innerHTML = http.responseText;
		  //document.write = location_code;
		}
	}

http.send(null);
}

function getResults(app) {
    
 
	switch (app){
		case "Xtreme":
		message = "Getting X-treme Clips...";
		break;
	case "Tunes":
		message = "Getting Music Titles...";
		break;
	case "LiveBar":
		message = "Getting Video Clips...";
		break;
	default : message = "Getting Data...";
	}


	document.getElementById('res'+app).innerHTML = message;	
	
   // alert(document.getElementById('sel'+app).options[document.getElementById('sel'+app).selectedIndex].value)
	var filter = document.getElementById('sel'+app).options[document.getElementById('sel'+app).selectedIndex].value
     
	var uri = "getContent.php?app="+app+"&filter="+filter;
	
	http.open("GET", uri, true);
	http.onreadystatechange=function() 
	{

		//if(http.readyState == 1) 
		//{
		//  document.getElementById('res'+app).innerHTML = "Connecting";
		//}

		if(http.readyState == 2) 
		{
		  document.getElementById('res'+app).innerHTML = "Connected";
		}

		if(http.readyState == 3) 
		{
		  document.getElementById('res'+app).innerHTML = "Received";
		}


		if(http.readyState == 4) 
		{
		  document.getElementById('res'+app).innerHTML = http.responseText;
		  //document.write = location_code;
		}
	}

http.send(null);

}


function SetCookie(cookieName,cookieValue,nMins) 
{
 	var today = new Date();
	var expire = new Date();
 	if (nMins==null || nMins==0) 
 		nMins=720*60; //default 30 days
 		
 		expire.setTime(today.getTime() + 60000*nMins);
 	document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

function GetCookie(cookiename) 
{
 	var cookiestring=""+document.cookie;
 	var index1=cookiestring.indexOf(cookiename);
 	if (index1==-1 || cookiename=="") return ""; 
 		var index2=cookiestring.indexOf(';',index1);
 	if (index2==-1) 
 		index2=cookiestring.length; 
 	return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
}


// Show resend button only if appropriate.
function resend(app, sms_code, filter)
{
	num_req = GetCookie("requests");
	current_filter = document.getElementById('sel'+app).options[document.getElementById('sel'+app).selectedIndex].value;
	
	if ((num_req==null) || (num_req==0) || (num_req < req_limit))
	{
		document.getElementById(sms_code).innerHTML = "<a href=\"javascript:sendRequest('"+app+"','"+sms_code+"', '"+filter+"');\">Resend</a>";
	}

	// Only recheck if the user is on the same page.
	if (filter == current_filter)
		setTimeout("resend('"+app+"','"+sms_code+"','"+filter+"')",req_resend_freq);
}

