function addLoadListener(fn) {
  if (typeof window.addEventListener != 'undefined') {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined') {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined') {
    window.attachEvent('onload', fn);
  } else {
    var oldfn = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = fn;
    } else {
      window.onload = function() {
	oldfn();
	fn();
      };
    }
  }
}

addLoadListener(init);

var xhr = false;

function init() {
  // Funzione iniziale
  
  // Registra la selezione di regioni
//   document.getElementById("find_regioni").selectedIndex = 0;
  if (document.getElementById("find_regioni")) {
    document.getElementById("find_regioni").onchange = function() {
      updateRegione();
      resetComuni();
      return false;
    };
  }
  // Ricerca tutti i comuni della provincia
  if (document.getElementById("find_province")) {
    document.getElementById("find_province").onchange = function() {
      updateComuni();
      return false;
    };
  }
  // Ajax classifica dei più cliccati
  var inputChart = document.getElementsByTagName("a");
  for(var i = 0; i < inputChart.length; i++) {
    // Aggiunge utente al promemoria
    if(inputChart[i].className == "viewlist_link") {
      inputChart[i].onclick = function() {
	var add_id = this.id.substr(11);
	viewlist_save(add_id);
	return false;
      };
    }
    // Rimuove utente dal promemoria
    else if(inputChart[i].className == "viewlist_remove") {
      inputChart[i].onclick = function() {
	var rem_id = this.id.substr(11);
	viewlist_remove(rem_id);
	return false;
      };
    }
    // Album
    else if(inputChart[i].className == "album_pic") {
      inputChart[i].onclick = function() {
        load_foto(this);
        return false;
      };
    }
    
  }
  // Aggiorna la lista dei generi nella ricerca
  if(document.getElementById("find_cat")) {
    document.getElementById("find_cat").onchange = function() {
      // carica i generi della categoria
      updateSearchGeneri();
      return false;
    };
  }
  
}

function limitText(limitField, limitCount, limitNum) {
  if (limitField.value.length > limitNum) {
    limitField.value = limitField.value.substring(0, limitNum);
  } else {
    limitCount.value = limitNum - limitField.value.length;
  }
}

function updateRegione() {
  var regioneId = document.getElementById("find_regioni").value;
  var findProvince = document.getElementById("find_province");
  var url = "includes/xml_geo.php?regione=" + regioneId;
  
  // Rimuove tutte le province
  findProvince.length = 1;
  
  // Carica la lista delle province
  ajax(showProvince, url);
}

function updateComuni() {
  var provinciaId = document.getElementById("find_province").value;
  var findComuni = document.getElementById("find_comuni");
//   var url = "includes/xml_geo.php?regione=" + regioneId;
  var url = "includes/xml_geo.php?provincia=" + provinciaId;
  
  // Rimuove tutti i comuni
  findComuni.length = 1;
  
  // Carica la lista dei comuni
  ajax(showComuni, url);

}

function updateSearchGeneri() {
  var divGeneri = document.getElementById("search_generi");
  // Rimuove contenuto div generi
  divGeneri.innerHTML = "";
  
  // Carica l'id della categoria
  var categoriaId = document.getElementById("find_cat").value;
  
  // Carica la lista dei generi se è stata selezionata una categoria
  if(categoriaId > 0) {
    var url = "includes/xml_generi.php?cat=" + categoriaId;
    ajax(showGeneri, url);
  }
}

function showProvince() {
// AJAX RISPOSTA inizio
  if(xhr.readyState == 4) {
    if(xhr.status == 200) {
      if(xhr.responseXML) {
	var geoLoc = xhr.responseXML;
	var geoId = geoLoc.getElementsByTagName("id");
	var geoNome = geoLoc.getElementsByTagName("nome");
	
      }
    } else {
      var outMsg = "Problema con la richiesta " + xhr.status;
    }
    // Visualizza la risposta
    for(var i=0; i<geoId.length; i++) {
      var prov = document.createElement("option");
      prov.value = geoId[i].firstChild.nodeValue;
      prov.text = geoNome[i].firstChild.nodeValue;
//       document.getElementById("find_province").add(prov,null);
      try {
	document.getElementById("find_province").add(prov,null); // Firefox
      } catch(ex) {
	document.getElementById("find_province").add(prov); document.getElementById("find_province").selectedIndex; // IE
      }
    }
  }
// AJAX RISPOSTA fine
}

function showComuni() {
// AJAX RISPOSTA inizio
  if(xhr.readyState == 4) {
    if(xhr.status == 200) {
      if(xhr.responseXML) {
	var geoLoc = xhr.responseXML;
	var geoId = geoLoc.getElementsByTagName("id");
	var geoNome = geoLoc.getElementsByTagName("nome");
	
      }
    } else {
      var outMsg = "Problema con la richiesta " + xhr.status;
    }
    // Visualizza la risposta
    for(var i=0; i<geoId.length; i++) {
      var com = document.createElement("option");
      com.value = geoId[i].firstChild.nodeValue;
      com.text = geoNome[i].firstChild.nodeValue;
//       document.getElementById("find_comuni").add(com,null);
      try {
	document.getElementById("find_comuni").add(com,null); // Firefox
      } catch(ex) {
	document.getElementById("find_comuni").add(com); document.getElementById("find_comuni").selectedIndex; // IE
      }
    }
  }
// AJAX RISPOSTA fine
}

function resetComuni() {
  document.getElementById("find_comuni").length = 1;
}

// GENERI
function showGeneri() {
// AJAX RISPOSTA inizio
  if(xhr.readyState == 4) {
    if(xhr.status == 200) {
      if(xhr.responseXML) {
	var gen = xhr.responseXML;
	var genId = gen.getElementsByTagName("id");
	var genNome = gen.getElementsByTagName("genere");
      }
    } else {
      var outMsg = "Problema con la richiesta " + xhr.status;
    }
    // Visualizza la risposta
    var divGeneri = document.getElementById("search_generi");

    for(var i=0; i<genId.length; i++) {
      var genereNome = document.createTextNode(" " + genNome[i].firstChild.nodeValue);
      var cbGen = document.createElement("input");
      var div = document.createElement("div");
      var label = document.createElement("label");
      div.style.width = "140px";
      div.style.cssFloat = "left";
      cbGen.type = "checkbox";
      cbGen.name = "catgenere[]";
      cbGen.value = genId[i].firstChild.nodeValue;
      cbGen.setAttribute("id", "cbGen"+i);
      label.htmlFor = "cbGen"+i;
      label.appendChild(genereNome);
      div.appendChild(cbGen);
      div.appendChild(label);
      divGeneri.appendChild(div);
    }
  }
// AJAX RISPOSTA fine
}

function load_foto(url) {
  // 1. Rimuovi la foto attuale
  var album_main = document.getElementById("album_main");
  document.getElementById("album_testo").innerHTML = "";
  document.getElementById("album_stars").innerHTML = "";
  album_main.innerHTML = "";
//   document.getElementById("album.testo").innerHTML = "";
  var start_var = url.toString().indexOf("user.php?");
  var foto_request = url.toString().substr(start_var+9);
  // 2. Richiedi la nuova foto
  var url_new = "ajax.php?" + foto_request;
  // 3. Carica la lista con AJAX
  ajax(load_new_foto, url_new);
}

function viewlist_save(id) {
  // Salva il cookie, scadenza il giorno dopo
//   var scadenza = new Date();
//   scadenza.setDate(scadenza.getDate()+1);
  var viewlist_frame = document.getElementById("viewlist_frame");
  viewlist=getCookie("viewlist");
  
  var content = id;
  var presente = false;

  if(viewlist !== null && viewlist !== "") {
    // Il cookie esiste
    content = viewlist.toString() + "-" + id;
    viewlist_array = viewlist.split("-");
    for(var i=0; i<viewlist.length; i++) {
      if(viewlist_array[i] == id) {
	presente = true;
      }
    }
  } else {
    viewlist_frame.innerHTML = "<div id=\"viewlist_frame_title\"><img src=\"img/viewlist_top01.png\" alt=\"promemoria\" class=\"promemoria\" /><a href=\"javascript:void(0)\" onClick=\"viewlist_close()\" title=\"Svuota il promemoria\" ><img src=\"img/viewlist_top02.png\" alt=\"x\" class=\"promemoria\" /></a></div>";
  }
  
  if(presente === false) {
    // Aggiunge l'id solo se non è presente nel cookie
//     document.cookie = "viewlist=" + content + "; expires=" + scadenza.toGMTString();
    document.cookie = "viewlist=" + content + ";";
    viewlist_add(id);
  }
}

function viewlist_remove(id) {
  // Rimuove un utente dalla viewlist
//   alert("rimuovi");
//   var scadenza = new Date();
//   scadenza.setDate(scadenza.getDate()+1);
  viewlist=getCookie("viewlist");
  var content = "";
  var viewlistline = document.getElementById("viewlistline"+id);
  var viewlist_frame = document.getElementById("viewlist_frame");
//   var viewlist_frame_users = document.getElementById("viewlist_frame_users");
  
  if(viewlist !== null && viewlist !== "") {
    viewlist_array = viewlist.split("-");
    for(var i=0; i<viewlist.length; i++) {
      if(viewlist_array[i] != id && !isNaN(viewlist_array[i])) {
	if(content !== "") { content += "-"; }
	content = content + viewlist_array[i];
      }
    }
    if(content === "") {
      viewlist_delete();
      viewlist_frame.innerHTML = "";
    } else {
//       document.cookie = "viewlist=" + content + "; expires=" + scadenza.toGMTString();
      document.cookie = "viewlist=" + content + ";";
    }
    // Rimuove il div
    viewlistline.parentNode.removeChild(viewlistline);
  } 
}

function viewlist_close() {
  // Cancella il cookie e chiude il promemoria
  var viewlist_frame = document.getElementById("viewlist_frame");
  viewlist_delete();
  viewlist_frame.innerHTML = "";
  // Toglie il promemoria dal menu in alto se presente
  if(document.getElementById("viewlist_frame_top")) {
    document.getElementById("viewlist_frame_top").style.visibility = "hidden";
  }
}

function viewlist_delete() {
  // elimina il cookie
  var scadenza = new Date();
  scadenza.setDate(scadenza.getDate()-1);
  document.cookie = "viewlist=" + "" + "; expires=" + scadenza.toGMTString();
}

function getCookie(name) {
  var start = document.cookie.indexOf(name+"=");
  var len = start+name.length+1;
  if ((!start) && (name != document.cookie.substring(0,name.length))) { return null; }
  if (start == -1) { return null; }
  var end = document.cookie.indexOf(";",len);
  if (end == -1) {end = document.cookie.length;}
  return(unescape(document.cookie.substring(len,end)));
}

function updateCaptcha() {
//   alert("captcha");
  var captcha = document.getElementById("img_captcha");
  captcha.src = "img/captcha.php?" + Math.random();
}

function viewlist_add(id) {
  // 2. Cerca la variabile della lista
  var url = "ajax.php?uid=" + id;
  // 3. Carica la lista con AJAX
  ajax(viewlist_add_show, url);
}

function voti_stars(uid, score, nvoti, idpic) {
  var media = 0; 
  var media_dec = "";
  if (nvoti > 0) {
    media = score/nvoti;
    media_dec = Math.floor(media*100)/100;
    media_dec += ",";
  }
  
  var echo_stelle = "<div class=\"voti_star\">";
  for(i=1; i<=5; i++) {
    echo_stelle += "<div>";
    echo_stelle += "<a href=\"vote.php?voto="+i+"&uid="+uid+"&idpic="+idpic+"\" class=\"link_star\" title=\"voto "+i+"\" >";
    if(i <= Math.floor(media)) {
      echo_stelle += "<img src=\"img/star1.gif\" class=\"imgstar"+i+"\" />";
    } else if(Math.round(media) > Math.floor(media)) {
      echo_stelle += "<img src=\"img/star2.gif\" class=\"imgstar"+i+"\" />";
      media = 0;
    } else {
      echo_stelle += "<img src=\"img/star0.gif\" class=\"imgstar"+i+"\" />";
    } 
    echo_stelle += "</a></div>";
  }
  echo_stelle += "</div>";
  echo_stelle += "<span class=\"voti_text\">"+media_dec+" voti: "+nvoti+"</span>";
  $("#album_stars").html("<div>"+echo_stelle+"</div>");
  
  starsOver();
  loadFoto();
}

function load_new_foto() {
  // AJAX RISPOSTA inizio
  if(xhr.readyState == 4) {
    if(xhr.status == 200) {
      if(xhr.responseXML) {
        var result = xhr.responseXML;
        var fotoSrc = result.getElementsByTagName("src");
        var fotoLink = result.getElementsByTagName("link");
        var fotoTesto = result.getElementsByTagName("testo");
        var voti_tot = result.getElementsByTagName("voti_tot");
        var voti_num = result.getElementsByTagName("voti_num");
        var uid = result.getElementsByTagName("uid");
        var idpic = result.getElementsByTagName("idpic");
      }
    } else {
      var outMsg = "Problema con la richiesta " + xhr.status;
    }
    
    
    // Carica la nuova foto
    var album_main = document.getElementById("album_main");
    var album_testo = document.getElementById("album_testo");
    var img = document.createElement("img");
    var a = document.createElement("a");
    a.setAttribute("href", fotoLink[0].firstChild.nodeValue);
    a.className = "load";
    
    var pic = fotoSrc[0].firstChild.nodeValue;
    img.setAttribute("src", pic);
    a.appendChild(img);
    album_main.appendChild(a);
    
    var foto_testo = fotoTesto[0].firstChild.nodeValue;
//     var foto_testo = "";
//     if(fotoTesto) { foto_testo = fotoTesto[0].firstChild.nodeValue; }
//     try {
      album_testo.innerHTML = foto_testo;
//     } catch {
//       album_testo.innerHTML = "";
//     }
    
    voti_stars(uid[0].firstChild.nodeValue, voti_tot[0].firstChild.nodeValue,  voti_num[0].firstChild.nodeValue, idpic[0].firstChild.nodeValue);
    
  }
}
    
function viewlist_add_show() {
  // AJAX RISPOSTA inizio
  if(xhr.readyState == 4) {
    if(xhr.status == 200) {
      if(xhr.responseXML) {
	var result = xhr.responseXML;
	var usrId = result.getElementsByTagName("id");
	var usrNome = result.getElementsByTagName("nome");
	var usrPic = result.getElementsByTagName("pic");
      }
    } else {
      var outMsg = "Problema con la richiesta " + xhr.status;
    }
    
    var viewlist_frame = document.getElementById("viewlist_frame");
    var viewlist_frame_users;
    if(document.getElementById("viewlist_frame_users")) {
      viewlist_frame_users = document.getElementById("viewlist_frame_users");
    } else {
      viewlist_frame_users = document.createElement("div");
      viewlist_frame_users.id = "viewlist_frame_users";
      viewlist_frame.appendChild(viewlist_frame_users);
    }
    var line = document.createElement("div");
    var img = document.createElement("img");
    var img_rem = document.createElement("img");
    var line_close = document.createElement("div");
    var a = document.createElement("a");
    var a_close = document.createElement("a");
    line_close.className = "viewlist_line_close";
    line.className = "viewlist_line";
    
    var nome = usrNome[0].firstChild.nodeValue;
    var testoNome;
    if(nome.length > 15) {
      testoNome = document.createTextNode(nome.substr(0,13) + "..");
    } else {
      testoNome = document.createTextNode(nome);
    }
    var testo = document.createTextNode("x");
    img_rem.setAttribute("src", "img/viewlist_rem.png");
    
    // Imposto l'immagine
    var pic = usrPic[0].firstChild.nodeValue;
    img.setAttribute("src", pic);
    img.setAttribute("width", 30);
    img.setAttribute("height", 30);
    
    // Imposto il link
    var uid = usrId[0].firstChild.nodeValue;
    a.setAttribute("href", "user.php?cat=0&gen=0&uid="+uid);
    
    line.id = "viewlistline" + uid;
    a_close.className = "viewlist_remove";
    a_close.setAttribute("href", "javascript:void(0)");
    a_close.onclick = function() { viewlist_remove(uid); return false;};
    a_close.appendChild(img_rem);
    
    line_close.appendChild(a_close);
    a.appendChild(img);
    a.appendChild(testoNome);
    line.appendChild(a);
    line.appendChild(line_close);

  //   viewlist_frame.appendChild(line);
    viewlist_frame_users.appendChild(line);
  
  }
  
}


// CLASSIFICA
function showClassifica() {
// AJAX RISPOSTA inizio
  if(xhr.readyState == 4) {
    if(xhr.status == 200) {
      if(xhr.responseXML) {
	var chart = xhr.responseXML;
	var usrId = chart.getElementsByTagName("id");
	var usrNome = chart.getElementsByTagName("nome");
	var usrVisite = chart.getElementsByTagName("visite");
	var usrPic = chart.getElementsByTagName("pic");
	var usrCategoria = chart.getElementsByTagName("categoria");
	var usrQuando = chart.getElementsByTagName("quando");
      }
    } else {
      var outMsg = "Problema con la richiesta " + xhr.status;
    }
    // Visualizza la risposta
    // Scrivi di quando
//     var quando = usrQuando[0].firstChild.nodeValue;
//     document.getElementById("topview_title").childNodes[0].nodeValue = "[" + quando + "]";
    
    // Stampa lista
    for(var i=0; i<usrNome.length; i++) {
      var classifica = document.getElementById("classifica");
      var nome = usrNome[i].firstChild.nodeValue;
      var visite = usrVisite[i].firstChild.nodeValue;
      var pic = usrPic[i].firstChild.nodeValue;
      var uid = usrId[i].firstChild.nodeValue;
      var categoria = usrCategoria[i].firstChild.nodeValue;
      var newLista = document.createElement("li");
      var newImg = document.createElement("img");
      var br = document.createElement("br");
      var span = document.createElement("span");
      var userLink = document.createElement("a");
      var strong = document.createElement("strong");
      
      userLink.setAttribute("href", "user.php?uid="+uid);
      newImg.setAttribute("src", pic);
      
      var testoNome;
      if(nome.length > 10) {
        testoNome = document.createTextNode(nome.substr(0,9) + "..");
      } else {
        testoNome = document.createTextNode(nome);
      }
      var testoNumVisite = document.createTextNode(" (" + visite + ") ");
      var testoVisite = document.createTextNode(categoria);
      
      strong.appendChild(testoNome);
      span.appendChild(testoVisite);
      newLista.setAttribute("title", nome);
      
      userLink.appendChild(newImg);
      userLink.appendChild(strong);
      userLink.appendChild(testoNumVisite);
      userLink.appendChild(br);
      userLink.appendChild(span);
      newLista.appendChild(userLink);

      document.getElementById("classifica").appendChild(newLista);
      
    }
  }
// AJAX RISPOSTA fine
}

function ajax(funzione, url) {
//   var url = "ajax.php";
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  }
  else {
    if (window.ActiveXObject) {
      try {
	xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e) { }
    }
  }

  if (xhr) {
    // RISPOSTA AJAX (funzione)
    xhr.onreadystatechange = funzione;
    xhr.open("GET", url, true);
    xhr.send(null);
  }
  else {
	  alert("Impossibile creare XMLHttpRequest");
  }
  return false;
}

function openAlbum() {
	$("#foto_menu a").click(function() {
		var par = $(this).attr("href").substr(1);
		$.ajax({
      type:"POST", url:"ajax.php", data:par+"&action=album", 
      success: function(response) {
        $("#album_browse").html(response);
        openAlbum();
        openThumb();
      }
    });
    return false;
	});
}
function openThumb() {
	$(".album_pic").click(function() {
		var par = $(this).attr("href");
		load_foto(par);
		return false;
	});
}

$("document").ready(function() {
	openAlbum();
});


