/*
* www.gianlucabertelli.it
* Funzioni Javascript generali
*
* date: 25/09/06
* author: Gianluca Bertelli 
*/

var open = false;
var toolBox = null;
var hide = null;
var show = null;
var ajax = null;
    
function CheckBrowser()
{
    toolBox = getElement("toolBox");
	hide = "hidden";
	show = "visible";
}

function changeArrow(control){

   var open_img = "Images/opentriangle.gif";
   var close_img = "Images/triangle.gif";
   
   if(open == true)
   {
        //freccia aperta, la metto chiusa, chiudo il pannello
        control.src = close_img;
		toolBox.style.visibility = hide;
        open = false;    
   }
   else
   {
        //freccia chiusa la apro e visualizzo il pannello
         control.src = open_img;
	     toolBox.style.visibility = show;
         open = true;   
   }

}

/*
* Funzioni AJAX
*/

// Crea l'oggetto XMLHttpRequest, in base al browser
function CreateXMLHttpRequest(){

    var XHR = null,
    browserUtente = navigator.userAgent.toUpperCase();

    // browser standard con supporto nativo
    if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
        XHR = new XMLHttpRequest();

    // browser Internet Explorer
    // è necessario filtrare la versione 4
    else 
        if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
        {
            // la versione 6 di IE ha un nome differente
            // per il tipo di oggetto ActiveX
            if(browserUtente.indexOf("MSIE 5") < 0)
                XHR = new ActiveXObject("Msxml2.XMLHTTP");
            else
                XHR = new ActiveXObject("Microsoft.XMLHTTP");
        }

 return XHR;
}

function getElement(id_elemento) {
    
    var elemento;
    if(document.getElementById)
        elemento = document.getElementById(id_elemento);
    else
        elemento = document.all[id_elemento];

    return elemento;
}

//partendo dalla foto corrente, carica la successiva
function NextPhoto()
{
    var idAlbum = getElement("ctl00_centralContent__idAlbumHidden").value;
    var nextId = getElement("ctl00_centralContent__nextHidden").value;
    ChangePhoto(idAlbum,nextId);
}

//partendo dalla foto corrente, carica la precedente
function PrevPhoto()
{
    var idAlbum = getElement("ctl00_centralContent__idAlbumHidden").value;
    var prevId = getElement("ctl00_centralContent__prevHidden").value;
    ChangePhoto(idAlbum,prevId);
}


//carica la nuova foto nel controllo
function ChangePhoto(idAlbum,idFoto)
{   
  ajax = CreateXMLHttpRequest();
  if(ajax) {       
        //alert("foto.aspx?ajax=&album="+idAlbum+"&photo="+idFoto);
        ajax.open("get", "foto.aspx?ajax=&album="+idAlbum+"&photo="+idFoto, true);
        ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        ajax.setRequestHeader("connection", "close"); 
        ajax.onreadystatechange = ChangePhotoParseXML;
        ajax.send(null);
  }  
}

function ChangePhotoParseXML()
{
    if(ajax.readyState == 4) {
        if(ajax.status == 200){
            //alert(ajax.getAllResponseHeaders());
            if(ajax.responseXML){
                xml = ajax.responseXML;
                //ricavare l'url dalla pagina
                photoEL = getElement("ctl00_centralContent_foto");
                descEL = getElement("ctl00_centralContent_desc");
                prevEL = getElement("ctl00_centralContent__prevHidden");
                currentEL = getElement("ctl00_centralContent__currentHidden");                
                nextEL = getElement("ctl00_centralContent__nextHidden");
                           
                href = xml.getElementsByTagName("href");
                desc = xml.getElementsByTagName("desc");
                curr = xml.getElementsByTagName("current");
                prev = xml.getElementsByTagName("prev");
                next = xml.getElementsByTagName("next");

                
                //basta controllare un solo tag,se null sono null tutti
                //ritorno a visualizzare la foto corrente
                if(ReadNode(href, "href")!="null")
                {
                    photoEL.src = ReadNode(href, "href");
                    descEL.innerHTML = ReadNode(desc, "desc");
                    currentEL.value = ReadNode(curr,"current");
                    prevEL.value = ReadNode(prev,"prev");
                    nextEL.value = ReadNode(next,"next");
                    
                    
                    //mettere timeout con clessidra
                    //gestire errori nei parametri album sbagliato? cosa ritorno?
                    //visualizzare quante foto mancano ???
                }
                else 
                {
                    //Errore nei parametri inviati al server
                    alert("Error");
                    //ritorno all'home page degli album
                    //response
                }
                
                UpdateButtonStatus();
 
            }
        }
    }
    //inattivo - caricamento
    if(ajax.readyState == 1)
    {
        //visualizzo un'immagine di attesa
        photoEL = getElement("ctl00_centralContent_foto"); 
        photoEL.src = "Images/loading.gif"; //immagine di attesa
        //disabilito i pulsanti
        next = getElement("nextButt");
        prev = getElement("prevButt");
        prev.disabled = false;
        next.disabled = false;
    }
};

function ReadNode(item, nomeNodo) {
  return item.item(0).firstChild.nodeValue;
};

function UpdateButtonStatus()
{
  next = getElement("nextButt");
  prev = getElement("prevButt");
  prevEL = getElement("ctl00_centralContent__prevHidden");
  nextEL = getElement("ctl00_centralContent__nextHidden");
  
  prev.disabled = false;
  next.disabled = false;
  
  //valori max e min per interi, restituiti quando non ci sono 
  //foto consecutive
  if(prevEL.value == "null" || prevEL.value == "-2147483648")
  {
    prevEL.value = 0;
    prev.disabled = true;
  }
   
  if(nextEL.value == "null" || nextEL.value == "2147483647")
  {
    nextEL.value = 0;
    next.disabled = true;
  }
}

//per link nel toolbox
function redirect(url,param){
    var base_url = ""+url;
    if(base_url.indexOf("?")==-1){
        var final_url = base_url+"?"+param+"=";
        
    }
    else
    {
       var final_url = base_url+"&"+param+"=";
       
    }
    location.replace(final_url);
}