/**
 *
 *
 * @filename croquiteca.js
 * @author Miguel Freitas
 * @copyright Miguel Freitas (some code borrowed from MAB - Mozilla Amazon Browser)
 * @license Mozilla Public License Version 1.1
 *
*/


var croquisTree, guiListTree;
var cur_img = -1;

var lastCroquiSortColumn = "";
var lastCroquiSortAscending = false;
var comentario_url = "";
var curIdx = 0;
var lastTimeoutID = 0;

function escapeXML(str) {
	var newString = "";
	newString = str.replace(/&/g,"&amp;");
	newString = newString.replace(/</g,"&lt;");
	newString = newString.replace(/>/g,"&gt;");
	//To prevent xul errors
	newString = newString.replace(/"/g,"''");

	return newString;
}

function converte_romano(s)
{
    graus_roman = [ "XIII", "XII", "XI", 
                    "IX", "X",
                    "VIII", "VII", "VI", 
                    "IV", "V",
                    "III", "II", "I"];
    graus_arab = [ "13", "12", "11", 
                   "09", "10",
                   "08", "07", "06", 
                   "04", "05",
                   "03", "02", "01"];
    for (var i = 0; i < graus_roman.length; i++)
    {
        s = s.replace(graus_roman[i],graus_arab[i]);
    }
    return s;
}
    
function sem_acento(s)
{
    acentos = {'á':'a','é':'e','í':'i','ó':'o','ú':'u','ç':'c',
               'à':'a','è':'e','ì':'i','ò':'o','ù':'u',
               'ä':'a','ë':'e','ï':'i','ö':'o','ü':'u',
               'ã':'a','õ':'o','ñ':'n',
               'â':'a','ê':'e','î':'i','ô':'o','û':'u',
               'Á':'A','É':'E','Í':'I','Ó':'O','Ú':'U','Ç':'C',
               'À':'A','È':'E','Ì':'I','Ò':'O','Ù':'U',
               'Ä':'A','Ë':'E','Ï':'I','Ö':'O','Ü':'U',
               'Ã':'A','Õ':'O','Ñ':'N',
               'Â':'A','Ê':'E','Î':'I','Ô':'O','Û':'U',
               '°':' ','º':' '};
    s2 = "";
    for (var i = 0; i < s.length; i++)
    {
        c = s.charAt(i);
        if ( acentos[c] )
        {
            s2 = s2 + acentos[c]
        }
        else
        {
            s2 = s2 + c
        }
    }
    return s2;
}


function Startup() {
  lastCroquiSortColumn = "";
  lastCroquiSortAscending = false;
  CroquiColumnSort('nomeSort');
}

/*** =================== CROQUIS CODE =================== ***/

function Croqui(numero,nome,grau,montanha,local,cidade,ano,conquistadores,clube,imagens) {
  this.numero = numero;
  this.nome = nome;
  this.nomeSort = sem_acento(nome);
  this.grau = grau;
  this.grauSort = converte_romano(grau);
  this.montanha = montanha;
  this.montanhaSort = sem_acento(montanha);
  this.local = local;
  this.localSort = sem_acento(local);
  this.cidade = cidade;
  this.cidadeSort = sem_acento(cidade);
  this.ano = ano;
  this.conquistadores = conquistadores;
  this.clube = clube;
  this.imagens = imagens;
}


function loadCroquis() {

  var filterStr = sem_acento( document.getElementById('procura').value ).toLowerCase();
  
  lastTimeoutID = 0;
  
  croquisTree = document.getElementById("croquisTree");
  guiListTree = document.getElementById('list-tree');

  var strRow = '<table width="100%"><tbody>';
  strRow += '<col width="10px"/> <col width="30%"/> <col width="10%"/> <col width="20%"/> <col width="20%" /> <col width="*">'
  for(var i=0; i<croquis.length; i++) {
    var hidden = ( croquis[i].nomeSort.toLowerCase().indexOf(filterStr) == -1 &&
                            croquis[i].montanhaSort.toLowerCase().indexOf(filterStr) == -1 &&
                            croquis[i].localSort.toLowerCase().indexOf(filterStr) == -1 && 
                            croquis[i].cidadeSort.toLowerCase().indexOf(filterStr) == -1 &&
                            croquis[i].grau.toLowerCase().indexOf(filterStr) == -1);
    if( filterStr == "" || !hidden ) {
      strRow += ''+
        '<tr>\n' +
        '			<td><input type="radio" name="curNumero" value="'+ croquis[i].numero +'" onclick="CroquiSelected('+ i +');"> </td>\n' +
        '			<td>'+ escapeXML(croquis[i].nome) + '</td>\n' +
        '			<td>'+ escapeXML(croquis[i].grau) + '</td>\n' +
        '			<td>'+ escapeXML(croquis[i].montanha) + '</td>\n' +
        '			<td>'+ escapeXML(croquis[i].local) + '</td>\n' +
        '			<td>'+ escapeXML(croquis[i].cidade) + '</td>\n' +
        '</tr>\n';
    }
  }
  strRow += '</tbody></table>';
  guiListTree.innerHTML = strRow;
  
  ClearCroquiProperties();
}


function AtualizaImg(idx, img) {
  var ifl_img = document.getElementById("ifl_img");
  
  ifl_img.src = "imagens/" + croquis[idx].imagens[img] + "ss.gif";
  cur_img = img;
  
  document.getElementById("imgPrev").disabled = (img == 0);
  document.getElementById("imgNext").disabled = (img+1 == croquis[idx].imagens.length);
}

function CroquiSelected(idx) {

  var nome, localizacao;

  curIdx = idx;
    
  nome = croquis[idx].nome;
  if( croquis[idx].grau && croquis[idx].grau.length > 1 )
    nome = nome + " (" + croquis[idx].grau + ")";
  if( croquis[idx].montanha && croquis[idx].montanha.length > 1) {
    localizacao = croquis[idx].montanha;
    if( croquis[idx].local && croquis[idx].local.length > 1)
        localizacao = localizacao + " - ";
  } else {
    localizacao = "";
  }
  if( croquis[idx].local && croquis[idx].local.length > 1)
        localizacao = localizacao + croquis[idx].local;
  if( croquis[idx].cidade && croquis[idx].cidade.length > 1)
        localizacao = localizacao + " (" + croquis[idx].cidade + ")";

  var props = [
    {id: "ifl_nome", field:"innerHTML", value: nome },
    {id: "ifl_localizacao", field:"innerHTML", value: localizacao },
    {id: "ifl_ano", field:"innerHTML", value: croquis[idx].ano },
    {id: "ifl_conquistadores", field:"innerHTML", value: croquis[idx].conquistadores },
    {id: "ifl_clube", field:"innerHTML", value: croquis[idx].clube }
  ];

  for (var i = 0; i < props.length; i++)
  {
    document.getElementById(props[i].id)[props[i].field] = props[i].value;
  }

  document.getElementById("pagVia").disabled = 0;
  
  document.getElementById('ifl_carregando').hidden = '';
  ObtemComentarios(croquis[idx].numero);
  AtualizaImg(idx,0);
  
  return true;
}

function ClearCroquiProperties() {
  var props = [
    {id: "ifl_nome", field:"innerHTML" },
    {id: "ifl_localizacao", field:"innerHTML" },
    {id: "ifl_ano", field:"innerHTML" },
    {id: "ifl_conquistadores", field:"innerHTML" },
    {id: "ifl_clube", field:"innerHTML" }
  ];

  for (var i = 0; i < props.length; i++)
  {
    document.getElementById(props[i].id)[props[i].field] = "&nbsp;";
  }

  var ifl_img = document.getElementById("ifl_img");
  ifl_img.src = "newcroquiteca.gif";
  cur_img = -1;

  document.getElementById("imgPrev").disabled = 1;
  document.getElementById("imgNext").disabled = 1;
  document.getElementById("pagVia").disabled = 1;

  comentario_url = "";
  document.getElementById('ifl_comentarios').setAttribute("src", "");
  document.getElementById('ifl_comentarios').setAttribute("src", "about:blank");
}

function ImagePrevious() {
  var idx = curIdx;

  AtualizaImg(idx,cur_img-1);
  
  return true;
}

function ImageNext() {
  var idx = curIdx;

  AtualizaImg(idx,cur_img+1);
  
  return true;
}

function HandleCroquiKeyPress(e) {
  if (e.keyCode == 46) {
    //DeleteCroqui();
  }
}

function SortTable(table, column, lastSortColumn, lastSortAscending) {

  // determine if sort is to be ascending or descending
  var ascending = (column == lastSortColumn) ? !lastSortAscending : true;

  // do the sort or re-sort
  var compareFunc = function compare(first, second) {
    return first[column].toLowerCase().localeCompare(second[column].toLowerCase());
  }
  table.sort(compareFunc);
  if (!ascending)
    table.reverse();

  return ascending;
}


function CroquiColumnSort(column) {
  lastCroquiSortAscending = SortTable(croquis, column, lastCroquiSortColumn, lastCroquiSortAscending);
  lastCroquiSortColumn = column;
  
  loadCroquis();
}

var req;

function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            document.getElementById('ifl_comentarios').value=req.responseText;
        } else {
            alert("Problema recebendo croqui_comentarios:\n" +
                req.statusText);
        }
    }
}

function ObtemComentarios(numero)
{
   comentario_url = "croqui_comentario.psp?"+numero;
   document.getElementById('ifl_comentarios').setAttribute("src", "");
   document.getElementById('ifl_comentarios').setAttribute("src", "about:blank");
    
//    document.getElementById('ifl_comentarios').setAttribute("src", "croqui_comentario.psp?"+numero);
/*
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", "croqui_comentario.psp?"+numero, true);
        req.send(null);
*/
}

function AbreImagem()
{
  var idx = curIdx;
  if( cur_img != -1 )
    window.open("pdf/" + croquis[idx].imagens[cur_img] + ".pdf");
}

function AbreCroquiPage()
{
  var idx = curIdx;
  window.open("croqui-cec.psp?" + croquis[idx].numero);
}

function ComentariosLoaded(event)
{
    if( comentario_url ) {
        document.getElementById('ifl_comentarios').setAttribute("src", comentario_url);
        comentario_url = 0;
    } else {
        document.getElementById('ifl_carregando').hidden = '1';
    }

    event.stopPropagation();
}

function ProcuraRapida() {
  if( lastTimeoutID ) {
    clearTimeout( lastTimeoutID );
  }
  lastTimeoutID = setTimeout("loadCroquis();", 500);
}

