
function AJAX(cargador)
{
  var obj;

  if (cargador) mostrarCargador();

  try
  {
    obj = new XMLHttpRequest();
  }
  catch (error)
  {
    try
    {
      obj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (error)
    {
      try
      {
        obj = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (error)
      {
        return false;
      }
    }
  }

  return obj;
}


var ajax_obj = AJAX(false);
hay_ajax = (ajax_obj) ? true : false;
delete ajax_obj;


function cerrarAjax()
{
  if (ajax_obj)
  {
    try { ajax_obj.abort();  delete ajax_obj; } catch(error) { }
  }
}


function mostrarCargador()
{
  document.getElementById('cargador').style.visibility = "visible";
}

function ocultarCargador()
{
  document.getElementById('cargador').style.visibility = "hidden";
  dlz_iniciar();
}



function escapar(texto)
{
  if (encodeURIComponent) return encodeURIComponent(texto);
  return escape(texto);
}



function mostrar_categoria_click(coment)
{
  cerrarAjax();

  if (!hay_ajax)
  {
    return true;
  }

//  cerrarIntro();

  ajax_obj = AJAX(true);

  var args = "action=categoria_ajax&cat_id=" + document.form_sel_cat.idcat.value + "&coments=" + document.form_sel_cat.poncoment0.checked + "&destac_mostrar="+document.form_sel_cat.destacado_mostrar.value;

  if (coment) args += "&ver_coment=" + coment;

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = mostrar_libros_update;
  ajax_obj.send(args);

  return false;
}



function mostrar_autores_click()
{
  cerrarAjax();

  if (!hay_ajax)
  {
    return true;
  }

  if (!escapar(document.form_sel_autor.autorexp.value)) return false;

//  cerrarIntro();

  ajax_obj = AJAX(true);

  var args = "action=regexp_ajax&cat_id=" + document.form_sel_autor.idcatautor.value + "&searchkind=1&coments=" + document.form_sel_autor.poncoment1.checked + "&match=" + document.form_sel_autor.match1.value + "&buscarexp="+escapar(document.form_sel_autor.autorexp.value);

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = mostrar_libros_update;
  ajax_obj.send(args);

  return false;
}




function mostrar_titulo_click()
{
  cerrarAjax();

  if (!hay_ajax)
  {
    return true;
  }

  if (!escapar(document.form_sel_titulo.tituloexp.value)) return false;

//  cerrarIntro();

  ajax_obj = AJAX(true);

  var args = "action=regexp_ajax&cat_id=" + document.form_sel_titulo.idcattitulo.value + "&searchkind=2&coments=" + document.form_sel_titulo.poncoment2.checked + "&match=" + document.form_sel_titulo.match2.value + "&buscarexp="+escapar(document.form_sel_titulo.tituloexp.value);

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = mostrar_libros_update;
  ajax_obj.send(args);

  return false;
}




function mostrar_valora_click()
{
  cerrarAjax();

  if (!hay_ajax)
  {
    return true;
  }

//  cerrarIntro();

  ajax_obj = AJAX(true);

  var args = "action=valora_ajax&cat_id=" + document.form_sel_valora.idcatvalora.value + "&coments=" + document.form_sel_valora.poncoment3.checked + "&minvoto=" + escapar(document.form_sel_valora.minvoto.value) + "&maxvoto=" + escapar(document.form_sel_valora.maxvoto.value) + "&solocoments=" + document.form_sel_valora.solocoments.checked ;

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = mostrar_libros_update;
  ajax_obj.send(args);

  return false;
}




function mostrar_libros_update()
{
  if (ajax_obj.readyState == 4)
  {
    if (ajax_obj.status == 200)
    {
      document.getElementById("libros_contenido").innerHTML = ajax_obj.responseText;
      delete ajax_obj;
      ocultarCargador();
    }
  }
}




var id_votada;


function vota( id )
{
  voto = eval("document.form_vota"+id+".votacion.value");

//  cerrarIntro();

  if (voto == "#") return;

  if (ajax_obj)
  {
    try { ajax_obj.abort();  delete ajax_obj;} catch(error) { }
  }

  id_votada = id;

  ajax_obj = AJAX(true);

  var args = "action=votar&id=" + id + "&voto=" + voto;

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = votar_update;
  ajax_obj.send(args);
}



function votar_update()
{
  if (ajax_obj.readyState == 4)
  {
    if (ajax_obj.status == 200)
    {
      elemento = "vot" + id_votada;
      document.getElementById( elemento ).innerHTML = ajax_obj.responseText;
      delete ajax_obj;
      ocultarCargador();
    }
  }
}



function mostrar_uncoment_click(idlibro)
{
  if (!hay_ajax) return true;

//  cerrarIntro();

  if (ajax_obj)
  {
    try { ajax_obj.abort(); delete ajax_obj;} catch(error) { }

  }

  ajax_obj = AJAX(true);

  var args = "action=mostrar_uncoment&libro_id=" + idlibro;

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = mostrar_uncoment_update;
  ajax_obj.send(args);

  return false;
}



function mostrar_uncoment_update()
{
  if (ajax_obj.readyState == 4)
  {
    if (ajax_obj.status == 500)
    {
      alert("Ha ocurrido un error!\n"+ajax_obj.responseText);
    }

    if (ajax_obj.status == 401)
    {
      alert("Error en la identificación.");
    }

    if (ajax_obj.status == 200)
    {
      XML = ajax_obj.responseXML;
  //alert("text "+ajax_obj.responseText+"\n XML: \n"+ajax_obj.responseXML);
      idlibro = XML.getElementsByTagName('comentarios')[0].getAttribute('libro_id');

      lista = XML.getElementsByTagName('coment');
      num_coments = lista.length;

      borrar_coment(idlibro, true);

      num_coments_div = document.getElementById('num_coments'+idlibro);

      if (num_coments == 0)
      {
        num_coments_div.innerHTML = '<i>Sin comentarios</i>';
        document.getElementById('mostrar_link'+idlibro).style.display = 'none';
        return;
      }

      if (num_coments == 1)
      {
        num_coments_div.innerHTML = 'Un comentario';
      }
      else
      {
        num_coments_div.innerHTML = num_coments + ' comentarios';
      }

      var tabla     = document.getElementById("libros_tabla");
      var separador = document.getElementById('separador'+idlibro);
      var comentario;
      var coment;
      var fila, celda;

      fila = document.createElement('tr');
      fila.setAttribute('id',"coment"+idlibro+"blanca");

      celda = document.createElement('td');
      celda.setAttribute('colspan', 5);
      celda.innerHTML = '&nbsp;';
      fila.appendChild(celda);

      tabla.insertBefore(fila,separador);

      for (var i = 0; i<num_coments; i++)
      {
        comentario = lista[i];
        titulo = lista[i].getAttribute('usuario');
        coment = lista[i].firstChild.data;

        fila = document.createElement('tr');
        fila.className = 'libros_titulo';
        fila.setAttribute('id', 'coment'+idlibro+'row'+i+'a');

        celda = document.createElement('td','&nbsp;');
        celda.innerHTML = '&nbsp;';
        fila.appendChild(celda);

        celda = document.createElement('td');
        celda.setAttribute('colSpan',4);
        celda.innerHTML = titulo;
        fila.appendChild(celda);

        tabla.insertBefore(fila,separador);

        fila = document.createElement('tr');
        fila.setAttribute('id', 'coment'+idlibro+'row'+i+'b');

        celda = document.createElement('td');
        celda.className = 'libros_comentetiqueta';
        celda.innerHTML = 'Comentario:';
        fila.appendChild(celda);

        celda = document.createElement('td');
        celda.className = 'libros_comentario';
        celda.setAttribute('colSpan', 4);
        celda.innerHTML = coment;
        fila.appendChild(celda);

        tabla.insertBefore(fila,separador);

      }

      document.getElementById("mostrar_link"+idlibro).style.display = "none";
      document.getElementById("ocultar_link"+idlibro).style.display = "inline";
      delete ajax_obj;
    }
    ocultarCargador();
  }
}

function borrar_coment(idlibro, borrando_coment)
{
//  cerrarIntro();

  try
  {
    var i=0;
    var tabla = document.getElementById("libros_tabla");

    tra = document.getElementById("coment"+idlibro+"blanca");
    if (tra) tabla.removeChild(tra);

    while (tra = document.getElementById("coment"+idlibro+"row"+i+"a"))
    {
      trb = document.getElementById("coment"+idlibro+"row"+i+"b")
      tabla.removeChild(tra);
      tabla.removeChild(trb);
      i++;
    }

    document.getElementById("ocultar_link"+idlibro).style.display = "none";

    if (borrando_coment || document.getElementById("mostrar_link"+idlibro).style.display!="")
      document.getElementById("mostrar_link"+idlibro).style.display = "inline";
  }
  catch (error) { alert("error"); return true; }
  return false;
}



function nou_coment_id_click(idlibro)
{
  if (!hay_ajax) return true;

//  cerrarIntro();

  if (ajax_obj)
  {
    try { ajax_obj.abort(); delete ajax_obj;} catch(error) { }

  }

  ajax_obj = AJAX(true);

  var args = "action=noucoment_id&libro_id=" + idlibro;

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = nou_coment_id_result;
  ajax_obj.send(args);

  return false;
}


function nou_coment_id_result()
{
  if (ajax_obj.readyState == 4)
  {
    if (ajax_obj.status == 401)
    {
      alert("Identificación incorrecta\nPara introducir o modificar comentarios es necesario introducir un nombre de usuario y contraseña correctos, correspondientes a los foros de La Web de Física.");
    }
    if (ajax_obj.status == 200)
    {
      XML = ajax_obj.responseXML;

      var obj_data;
      var titulo;
      var texto;
      var existe;
      var idlibro;
      var idcoment;
      var fila;
      var celda;
      var tabla = document.getElementById("libros_tabla");

      obj_data = XML.getElementsByTagName('data')[0];
      idcoment = obj_data.getAttribute('id');
      idlibro  = obj_data.getAttribute('idlibro');
      iduser   = obj_data.getAttribute('iduser');
      existe = (idcoment != 'none');

      var separador = document.getElementById('separador'+idlibro);

      titulo = XML.getElementsByTagName('titulo')[0].firstChild.data;

      if (document.getElementById("coment"+idlibro+"blanca")) borrar_coment(idlibro, false);

      fila = document.createElement('tr');
      fila.setAttribute('id',"coment"+idlibro+"blanca");

      celda = document.createElement('td');
      celda.setAttribute('colspan', 5);
      celda.innerHTML = '&nbsp;';
      fila.appendChild(celda);

      tabla.insertBefore(fila,separador);


      fila = document.createElement('tr');
      fila.className = 'libros_titulo';
      fila.setAttribute('id', 'coment'+idlibro+'row0a');

      celda = document.createElement('td','&nbsp;');
      celda.innerHTML = '&nbsp;';
      fila.appendChild(celda);

      celda = document.createElement('td');
      celda.setAttribute('colSpan',4);
      celda.innerHTML = titulo;
      fila.appendChild(celda);

      tabla.insertBefore(fila,separador);


      var formulario = document.createElement('form');

      var textarea = document.createElement('textarea');
      textarea.setAttribute('name', 'nou_coment_texto'+idlibro);
      textarea.setAttribute('id',   'nou_coment_texto'+idlibro);
      textarea.setAttribute('rows', '10');
      textarea.setAttribute('cols', '50');
      textarea.setAttribute('style','width: 100%;');
      if (existe)
      {
        textarea.value = unescape(XML.getElementsByTagName('texto')[0].firstChild.data);
      }


      formulario.appendChild(textarea);

      var objbr = document.createElement('br');
      formulario.appendChild(objbr);

      var boton = document.createElement('input');
      boton.setAttribute('type', 'button');
      boton.setAttribute('name', 'submit_noucoment'+idlibro);
      boton.setAttribute('id',   'submit_noucoment'+idlibro);
      boton.setAttribute('onclick', 'return submit_noucoment('+idlibro+');');
      boton.onclick = function() { return submit_noucoment(idlibro); };
      boton.setAttribute('value', 'Enviar')
      formulario.appendChild(boton);

      var oculto = document.createElement('input');
      oculto.setAttribute('type', 'hidden');
      oculto.setAttribute('name', 'oculto_idcoment'+idlibro);
      oculto.setAttribute('id',   'oculto_idcoment'+idlibro);
      oculto.value = idcoment;
      formulario.appendChild(oculto);

      oculto = document.createElement('input');
      oculto.setAttribute('type', 'hidden');
      oculto.setAttribute('name', 'oculto_iduser'+idlibro);
      oculto.setAttribute('id',   'oculto_iduser'+idlibro);
      oculto.value = iduser;
      formulario.appendChild(oculto);

      fila = document.createElement('tr');
      fila.setAttribute('id', 'coment'+idlibro+'row0b');

      celda = document.createElement('td');
      celda.className = 'libros_comentetiqueta';
      celda.innerHTML = 'Comentario:';
      fila.appendChild(celda);

      celda = document.createElement('td');
      celda.className = 'libros_comentario';
      celda.setAttribute('colSpan', 4);
      celda.appendChild(formulario);
      fila.appendChild(celda);

      tabla.insertBefore(fila, separador);
    }
    ocultarCargador();
  }
}


function submit_noucoment(idlibro)
{
  //alert("El sistema de introducción de comentarios aún no está acabado de implementar. Has intentado comentar el libro id = "+idlibro+".\n Comentario:\n '"+document.getElementById("nou_coment_texto"+idlibro).value+"'");

  texto    = escapar(document.getElementById("nou_coment_texto"+ idlibro).value);
  idcoment =        document.getElementById("oculto_idcoment" + idlibro).value;
  iduser   =        document.getElementById("oculto_iduser"   + idlibro).value;

  if (texto.length = 0)
  {
    alert("Debes introducir un comentario obligatoriamente.");
    return false;
  }

  if (texto.length < 10)
  {
    alert("El comentario enviado es demasiado corto.");
    return false;
  }

  document.getElementById('submit_noucoment'+idlibro).disabled = true;

  if (!hay_ajax) return true;

  if (ajax_obj)
  {
    try { ajax_obj.abort(); delete ajax_obj;} catch(error) { }

  }

  ajax_obj = AJAX(true);


  var args = "action=noucoment_add&libro_id=" + idlibro+"&idcoment=" + idcoment + "&iduser=" + iduser + "&coment=" + texto;

  ajax_obj.open("POST", "query.php");
  ajax_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  ajax_obj.onreadystatechange = mostrar_uncoment_update;
  ajax_obj.send(args);

  return false;
}


function display_search(tabnum)
{
//  cerrarIntro();

  for (var i = 0; document.getElementById("tab"+i); i++)
  {
    document.getElementById("tab"+i).className = 'normal';
    document.getElementById("viewtab"+i).className = 'noviewtab';
  }

  document.getElementById("tab"+tabnum).className = 'actual';
  document.getElementById("viewtab"+tabnum).className = 'viewtab';
  try
  {
    document.getElementById("tab"+tabnum).blur();
  }
  catch(error) {};

  if (tabnum == 4) mostrar_destac_click();

  return false;
}



function cerrarIntro()
{
  //document.getElementById("libros_intro").style.display = "none";
}



function PonComent(actual)
{
  var valor = actual.checked;

  document.getElementById("poncoment0").checked = valor;
  document.getElementById("poncoment1").checked = valor;
  document.getElementById("poncoment2").checked = valor;
  document.getElementById("poncoment3").checked = valor;
}


function portadita(id)
{
  window.open( 'portada.php?id='+id);
  return false;
}
