

function makeRequest(url, onResponseHandler, valores,  method, isAsync )
{

  // por default, es asincrono
  var isAsync = (isAsync == null) ? true  : isAsync; 

  //alert("dentro de makeRequest");

    if(window.XMLHttpRequest)
    {
        request = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        request = new ActiveXObject("Msxml2.XMLHTTP");
    }

    sendRequest(url, onResponseHandler, valores, method, isAsync);

    // alert("antes de salir de makeReques");
}


function sendRequest(url, onResponseHandler, valores, method, isAsync )
{

  // por default, es asincrono
  var isAsync = (isAsync == null) ? true  : isAsync; 

  //alert('SendRquest, valores='+valores);
    request.onreadystatechange = onResponseHandler;

    //request.open(method, url, isAsync);    //true = Asincrono

    request.open(method, url, isAsync);

    //request.send(null);

if(method.toUpperCase()=='POST'){
  request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 }
    request.send(valores);
}


function checkReadyState(obj, id)
{
    switch(obj.readyState)
    {
        case 0:
            document.getElementById(id).innerHTML = "Sending Request...";
            break;
        case 1:
            document.getElementById(id).innerHTML = "Loading Response...";
            break;
        case 2:
            document.getElementById(id).innerHTML = "Response Loaded...";
            break;
        case 3:
            document.getElementById(id).innerHTML = "Response Ready...";
            break;
        case 4:
            document.getElementById(id).innerHTML = "";
            return (obj.status == 200);
            break;
        default:
            document.getElementById(id).innerHTML = "An unexpected error has occurred.";
    }
}



function onXMLResponse()
{
    if(checkReadyState(request, 'loading') == true)
    {
        var response = request.responseXML.documentElement;
        //Parse here

	// Categories
	document.getElementById("body").innerHTML = "------------<br/>";
	document.getElementById("body").innerHTML += "<b>Categories</b><br/>";
	document.getElementById("body").innerHTML += "------------<br/>";

	var categories = response.getElementsByTagName('category');
	for(var i=0; i<categories.length; i++)
	  {
	    document.getElementById("body").innerHTML += response.getElementsByTagName
	      ('category')[i].firstChild.data +"</br>";
	  }

	// Items
	document.getElementById("body").innerHTML += "------------<br/>";
	document.getElementById("body").innerHTML += "<b>Items</b><br/>";
	document.getElementById("body").innerHTML += "------------<br/>";

	var row = response.getElementsByTagName('row');
	for(var i=0; i<row.length; i++)
	  {
	    var action = response.getElementsByTagName('items')[i].getAttribute('action');
	    var icon = response.getElementsByTagName('items')[i].getAttribute('icon');

	    document.getElementById("body").innerHTML += action +"<br/>"+ icon +"</br>";

	    var items = response.getElementsByTagName('items')[i].childNodes;
	    for(var j=0; j<items.length; j++)
	      {
		for(var k=0; k<items[j].childNodes.length; k++)
		  {
		    document.getElementById("body").innerHTML +=
		      items[j].childNodes[k].nodeValue +"</br>";
		  }
	      }
	    document.getElementById("body").innerHTML += "------------<br/>";
	  }

    }
}


// <SEN:> Carga los controles iniciales de la pagina. Login, Rating video, etc.
// Cuando se cargan varios controles ajax al mismo tiempo, por ejemplo
// la primera carga de la pagina, hay que tener cuidado de invocar ajax en
// forma sincrona, dado que sino solo se carga solo el ultimo control ajax. 
// Notar el parametro puesto en false en las funciones cargarLogin() y cargarRatins() 

function cargarControles( str_idvideo, str_videofile ) {
  
  cargarLogin();
  
  cargarRatings( str_idvideo, str_videofile );


}


function cargarLogin() {
  makeRequest('login.ajax.php', onLogin, null, 'GET', false);   // false=sincrono
}


function cargarRatings( str_idvideo, str_videofile ) {

  //alert( str_idvideo + " " + str_videofile );
  makeRequest('votar_rating.ajax.php?idvideo='+str_idvideo+'&videofile='+str_videofile, onVotar_rating2, null, 'GET', false);  
//false = sincrono
}


function deshabilitarControl( str_idcontrol ) {

  idelem = document.getElementById( str_idcontrol );
  idelem.disabled = true;
}


function habilitarControl( str_idcontrol ) {

  idelem = document.getElementById("str_idcontrol");
  idelem.disabled = false;
}



function deshabilitarVotacion() {

  //alert("DeshabilitarVotacion");
  deshabilitarControl("btnsubmit");

  deshabilitarControl("votarvalues");

}



function onGetInfoTestVida() {

  //alert("dentro de onGetInfoTestVida");
 
      if(checkReadyState(request, 'loading') == true)
    {
        var response = request.responseText;

	 divError=document.getElementById("mensajeUsuarioNoRegistrado");

	if ( response.indexOf('mostrarErrorUsuarioNoLogueado') != -1 ) {
	  //alert('Usuario no logueado');

	   divError.innerHTML = "<span style=\"color:red\">Somente dispon&iacute;vel para usu&aacute;rios registrados</span>";


	   return;
	}
	else {
	  divError.innerHTML = "";
	}



	var divInfoTestVida = document.getElementById("test-vida");
	//var divInfoTestVida = document.getElementById("div_test_vida");
	
	divInfoTestVida.innerHTML = response;

	showTest("test-vida");
	//showTest("div_test_vida");
    }

}



function onGrabarVotacion()
{
  //alert("dentro de onGrabarVotacion");

    if(checkReadyState(request, 'loading') == true)
    {
        var response = request.responseText;

	if ( response == 'OK' ) {
	  alert('Gracias por votar');

	  deshabilitarVotacion();

	}
	else {
	  alert(response);
	}

    }
}


function onVotar_rating2() 
{
    if (checkReadyState(request, 'loading') == true)
    {  
      // alert('onVotar_rating2');

       var response = request.responseText;

       var divrating2 = document.getElementById("divrating2");
 
       //alert(divrating2);
       divrating2.innerHTML = response;
 
       // si esta pueta la marca para deshabilitar controles de votacion ...
       if ( response.indexOf('disableVoteCtrls') != -1 )
	 deshabilitarVotacion();
       
    }
}


function onListarPeliculas() {

    if (checkReadyState(request, 'loading') == true)
    {  
      var response = request.responseText;

      var listavideoscontainerZZZ = document.getElementById("listavideoscontainer");
      listavideoscontainerZZZ.innerHTML = response;

    }

}

function onModerarPendientes() {
    if (checkReadyState(request, 'loading') == true)
    {  
      //alert('onModerarPendientes');

       var response = request.responseText;

       var divrating2 = document.getElementById("divrating2");
 
       //alert(divrating2);
       divrating2.innerHTML = response;
 
       // si esta pueta la marca para deshabilitar controles de votacion ...
       if ( response.indexOf('disableVoteCtrls') != -1 )
	 deshabilitarVotacion();
    
    }
}



function onLogin() {

  //alert("dentro de onLogin");

    if(checkReadyState(request, 'loading') == true)
    {
        var response = request.responseText;

	//alert( response );

	divlogin = document.getElementById("memberlogin");
	divlogin.innerHTML = response;

    }


}





function onXMLResponse2()
{
    if(checkReadyState(request, 'loading') == true)
    {
        var response = request.responseText;
        alert(response);
    }
}


function onXMLResponse3()
{
    if(checkReadyState(request, 'loading') == true)
    {
        var response = request.responseXML.documentElement;
        //Parse here

	document.getElementById("body").innerHTML = "<div id='icon'></div>";
	var categories = response.getElementsByTagName('category');
	for(var i=0; i<categories.length; i++)
	  {
	    document.getElementById("body").innerHTML += "<div id='header'>&nbsp;"+response.
	      getElementsByTagName('category')[i].firstChild.data +"</div>";
	  }
	

	var row = response.getElementsByTagName('row');
	for(var i=0; i<row.length; i++)
	  {
	    var action = response.getElementsByTagName('items')[i].getAttribute('action');
	    var icon = response.getElementsByTagName('items')[i].getAttribute('icon');
	    var items = response.getElementsByTagName('items')[i].childNodes;
	    document.getElementById("body").innerHTML += "<div id='icon'><img src='"+ icon +"' width=20 heigth=20 /></div>";
	    for(var j=0; j<items.length; j++)
	      {
		for(var k=0; k<items[j].childNodes.length; k++)
		  {
		    document.getElementById("body").innerHTML += "<div id='item' onclick=\""+
		      action +"\">&nbsp;"+ items[j].childNodes[k].nodeValue +"</div>";
		  }
	      }
	  }

    }
}

