var i;
var divtoupdate;
var update;
var related_id;
var set_platform;
var ppage = 1;
var prev_page = 1;
var queueWatcher = setInterval(callQueue, 100);
var httpTesting = 0;

var http = createRequestObject();
var inCall = false;
var callToArray = new Array();
var returnToArray = new Array();

function createRequestObject() {
  var reqObj;
  var browser = navigator.appName;
  if(browser == "Microsoft Internet Explorer"){
    reqObj = new ActiveXObject("Microsoft.XMLHTTP");
    isIE = true;
  }else{
    reqObj = new XMLHttpRequest();
  }
  return reqObj;
}


function callQueue(){
  // IF WE HAVE A WAY OF MONITORING THE QUEUE, UPDATE IT
  if(httpTesting){
    calls = "";
    for(i=0;i<callToArray.length;i++){
      calls += callToArray[i] + "n";
    }
    document.getElementsByName("queueTest")[0].value = calls;
    document.getElementsByName("queueInCall")[0].value = inCall;
    document.getElementsByName("queueReadyState")[0].value = http.readyState;
  }
  // CHECK THE QUEUE AND SEND THE NEXT CALL IN LINE
  if(!inCall && callToArray.length > 0){
    // DO WE HAVE ANYTHING IN THE QUEUE?
    if(callToArray.length > 0){
      // WE DO, SO GET THE FIRST ITEM IN THE CALL ARRAY AND REMOVE IT
      whereTo = callToArray.shift();
      returnTo = returnToArray.shift();
      // SEND THAT CALL
      doCall(whereTo, returnTo);
    }else{
      // UPDATE DEBUG QUEUE
      if(httpTesting){
        document.getElementsByName("queueMsg")[0].value = "no items in queue.";
      }
    }
  }else{
    // UPDATE DEBUG QUEUE
    if(httpTesting){
      if(inCall){
        document.getElementsByName("queueMsg")[0].value = "currently in a call.";
      }else{
        document.getElementsByName("queueMsg")[0].value = "no items in queue.";
      }
    }
  }
}

function doCall(whereTo, returnTo)
{
  inCall = true;
  http.open('get', whereTo);
  
  if(returnTo.length > 0){
    eval("http.onreadystatechange = "+returnTo);
  }
  http.send(null);
}

function hr_inCall()
{
  if(http.readyState == 4)
  {
    inCall = false;
  }
}

function sendCall(whereTo, returnTo)
{
  callToArray.push(whereTo);
  returnToArray.push(returnTo);
}

var queueWatcher = setInterval(callQueue, 100);

function RefreshProcess()
{
    if (http.readyState == 4)
        {
            if (http.status == 200)
            {
			var result = http.responseText.split("||");
			if(update != 0) {			document.getElementById('playlistdiv').innerHTML = result[0]; }
			if(update != 1)
				{
				document.getElementById('ajaxdiv').innerHTML = result[1]; 

				document.getElementById('videopagingleft').style.visibility = "visible";
				document.getElementById('videopagingright').style.visibility = "visible";
				
				}
            }
            else
            {
                
            }
        }
	hr_inCall();
}

function SearchProcess()
{
    if (http.readyState == 4)
        {
            if (http.status == 200)
            {
				document.getElementById('ajaxdiv').innerHTML = http.responseText;
            }
            else
            {
                
            }
        }
	hr_inCall();
}

function VoteProcess()
{
    if (http.readyState == 4)
        {
            if (http.status == 200)
            {
			
				if(http.responseText > -1 && http.responseText < 6)
				{
				document.getElementById('videostar').className = "currentstars star" + http.responseText;
				}
				document.getElementById('starrating').style.visibility = "hidden";
            }
            else
            {
				alert ( "Voting failed. Please try again later" );	    
            }
        }
	hr_inCall();
}

function LoadVoteProcess()
{
    if (http.readyState == 4)
        {
            if (http.status == 200)
            {
				if( http.responseText == "0")
				{
					document.getElementById('videostar').className = "currentstars star0";
				}
				else
				{
					document.getElementById('videostar').className = "currentstars star" + http.responseText;
				}	
            }
            else
            {
				
            }
        }
	hr_inCall();
}

function MoreViews()
{
	hr_inCall();
}

function PlayList(id,platform,trigger,page)
{
		document.getElementById('videopagingleft').style.visibility = "hidden";
		document.getElementById('videopagingright').style.visibility = "hidden";

		if(trigger != "1")
		{
			document.getElementById('ajaxdiv').innerHTML = '<img src="images/ajax-loader.gif" style="border: none;" /> Loading...';
		}

		if(page == "next")
		{ ppage = ppage + 1; }
		
		else if(page == "prev")
		{ ppage = ppage - 1; }
		
		else { ppage = 1; } 
		
		if(ppage < 1) { ppage = 1; }

		update = trigger;
		set_platform = platform;
		
		sendCall("aja.x?id=" + id + "&p=" + platform + "&page=" + ppage, "RefreshProcess");
}

function PlayListTop(what,trigger,page)
{
		document.getElementById('videopagingleft').style.visibility = "hidden";
		document.getElementById('videopagingright').style.visibility = "hidden";

		if(trigger != "1")
		{
			document.getElementById('ajaxdiv').innerHTML = '<img src="images/ajax-loader.gif" style="border: none;" /> Loading...';
		}
		
		if(page == "next")
		{ ppage = ppage + 1; }
		
		else if(page == "prev")
		{ ppage = ppage - 1; }
		
		else { ppage = 1; } 
		
		if(ppage < 1) { ppage = 1; }
	
		update = trigger;
		sendCall("ajax_by.x?o=" + what + "&page=" + ppage + "&p=" + set_platform, "RefreshProcess");
}

function Vote(score)
{
		id = related_id;
		sendCall("submit_vote.x?video=" + id + "&score=" + score, "VoteProcess");
}

function View()
{
	if(previous_id != "undefined")
	{
		id = related_id;
		sendCall("submit_view.x?id=" + id, "MoreViews");
	}
	
	previous_id = related_id;
}

function LoadVote()
{
		sendCall("submit_vote.x?video=" + related_id + "&score=x", "LoadVoteProcess");
}

function Search()
{
			term = document.getElementById('search_video').value;
			sendCall("search_inline.x?term=" + term, "SearchProcess");
			return false;
}

function ShowList(list)
{
	if(list == "latest")
	{
		document.getElementById('vid_prev').setAttribute("onClick","javascript:PlayList('x',set_platform,'0','prev');");
		document.getElementById('vid_next').setAttribute("onClick","javascript:PlayList('x',set_platform,'0','next');");
		PlayList('x','' + set_platform + '','0');
	}
	if(list == "related")
	{
		document.getElementById('vid_prev').setAttribute("onClick","javascript:PlayList(related_id,set_platform,'0','prev');");
		document.getElementById('vid_next').setAttribute("onClick","javascript:PlayList(related_id,set_platform,'0','next');");	
		PlayList(related_id,'x','0');
	}
	if(list == "topviewed")
	{
		document.getElementById('vid_prev').setAttribute("onClick","javascript:PlayListTop('views','0','prev');");
		document.getElementById('vid_next').setAttribute("onClick","javascript:PlayListTop('views','0','next');");	
		PlayListTop('views',0);
	}
	if(list == "toprated")
	{
		document.getElementById('vid_prev').setAttribute("onClick","javascript:PlayListTop('rating','0','prev');");
		document.getElementById('vid_next').setAttribute("onClick","javascript:PlayListTop('rating','0','next');");		
		PlayListTop('rating',0);
	}	
}
		
