//******************************************************************************
//
// http://www.programanthos.org/
// ============================================
//
// Copyright (c) 2005 by Geodata Sistemas S.L.
// http://www.geodata.es
//
// General javascript functions
//
// This program is free software. You can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License.
//
//******************************************************************************

//******************************************************************************
// Global variables
//******************************************************************************

var MAX_FILTER = 3;

var species = new Array();
species[1] = {empty: true}
species[2] = {empty: true}
species[3] = {empty: true}

//******************************************************************************

// changes anthos menu images
function menu_image_OLD(id, mode) {
  if (el = document.getElementById('img_'+id)) {
  	el.src = 'img/'+id+'.'+mode+'.gif';
  }
}

// dec 19/02/07: Afegim variable d'idioma
function menu_image(id, mode, lang) {
  if (el = document.getElementById('img_'+id)) {
  	el.src = 'img/'+id+'.'+mode+'.'+lang+'.gif';
  	//alert ('el.src: ' + el.src);
  }
}


// expands specified id changing img
function expand(img, patern, id){
  i = 1;
  while (object = document.getElementById(patern+i)) {
    img = document.getElementById("img_"+patern+i);
    if ((id==i) && (object.style.display == "none")) {
      object.style.display = "";
      img.src = "img/minus.gif";
    } else if (object.style.display != "none") {
      object.style.display = "none";
      img.src = "img/plus.gif";
    }
    i++;
  }
}

// gets screen width
function get_window_width(value) {

  if( typeof( window.innerWidth ) == 'number' ) {
	  return window.innerWidth;
	} else if( document.documentElement && document.documentElement.clientWidth ) {
	  return document.documentElement.clientWidth;
	} else if( document.body && document.body.clientWidth ) {
	  return document.body.clientWidth;
  }

  return value;

}

// gets screen height
function get_window_height(value) {

  if( typeof( window.innerHeight ) == 'number' ) {
	  return window.innerHeight;
	} else if( document.documentElement && document.documentElement.clientHeight ) {
	  return document.documentElement.clientHeight;
	} else if( document.body && document.body.clientHeight ) {
	  return document.body.clientHeight;
  }

  return value;

}

function set_tab(name) {
  try {
    oTabManager.activate(name);
  } catch(e) {};
  /*
  try {
    //if (tabSystem && tabSystem.instances[0]) {
      //ts = tabSystem.instances[0];
      switch(name) {
        case 'text': oTabManager.activate('text'); break;
        case 'ficha': oTabManager.activate('ficha'); break;
        case 'map': oTabManager.activate('map'); break;
//        case 'text': ts.switchtab(0); break;
//        case 'ficha': ts.switchtab(1); break;
//        case 'map': ts.switchtab(2); break;
      //}
    }
  } catch(e) {}
   */
}

function get_element_width(id) {

  if (el = document.getElementById(id)) return el.style.width;
  return false;

}

function get_map_object() {
  return mapframe.myMap.map;
}

function get_species_name(index) {
  current = species[index];
  name = "<i>"+current.genero+" "+current.especie+"</i>";
  if (current.infra) name += (" "+current.infrank+" <i>"+current.infra+"</i>");
  if (current.autor) name += (" "+current.autor);
  if (current.familia) name += (" (Fam. "+current.familia+")");
  if (!current.infra) name += " y t&aacute;xones infraespec&iacute;ficos";
  return name;
}

function update_legend() {

  // build contents
  var content = "<table border='0'>";
  for (i=1; i<4; i++) {
    if (species[i].empty != true) {
      content += "<tr>";
      content += ("<td valing='top'><img src='img/dot_"+i+".gif' width='8' height='8' border='0' align='baseline' /></td>");
      content += ("<td><a href='page.php?page=ficha&ridesp="+species[i].idesp+"' target='fichaframe' onclick='set_tab(\"fichaframe\");'>"+get_species_name(i)+"</a></td>");
      content += "</tr>";
    }
  }
  content += "</table>";

  // update legend
  el = document.getElementById('legend');
  if (el) el.innerHTML = content;
  return true;

}

function filter_click(cb) {

  for (i=0; i<cb.form.elements.length; i++) {
    el = cb.form.elements[i];
    if (el.type == "checkbox") {
      if ((el.name != cb.name) && (el.value == cb.value)) el.disabled = cb.checked;
    }
  }

}

function set_filter(form) {

  // get filter
  var selection = Array();
  for (i=0; i<form.elements.length; i++) {
    el = form.elements[i];
    if (el.type == "checkbox") if (el.checked) selection.push(el.value);
  }
  return parent.filter(selection);

}

function clear_filters() {

  // get map object
  map = get_map_object();
  if (!map) return false;

  // set new filter
  for (var index=1; index < MAX_FILTER + 1; index++) {

    // send parameter to UMTG
    conn_name = 'Anthos '+index;
    conn_index = map._getserverindex(conn_name);
    if (conn_index != -1) {

      // get connection
      conn = map.connections[conn_index];

      // unset parameters
      conn.unsetparameter('INDEX');
      //conn.unsetparameter('IDESP');
      conn.unsetparameter('GENERO');
      conn.unsetparameter('ESPECIE');
      conn.unsetparameter('INFRANK');
      conn.unsetparameter('INFRA');

      // visible & locked status
      layer = conn.layers[0];
      layer.visible = false;
      layer.locked = true;

      // set filter as empty
      species[index].empty = true;

    }
  }
  update_legend();

}

function remove_filter(index) {

  // get map object
  map = get_map_object();
  if (!map) {
    alert(localize['error_nomap']);
    return false;
  }

  // send parameter to UMTG
  conn_name = 'Anthos '+index;
  conn_index = map._getserverindex(conn_name);
  if (conn_index != -1) {

    // get connection
    conn = map.connections[conn_index];

    // unset parameters
    conn.unsetparameter('INDEX');
    //conn.unsetparameter('IDESP');
    conn.unsetparameter('GENERO');
    conn.unsetparameter('ESPECIE');
    conn.unsetparameter('INFRANK');
    conn.unsetparameter('INFRA');

    // visible & locked status
    layer = conn.layers[0];
    layer.visible = false;
    layer.locked = true;

    // set filter as empty
    species[index].empty = true;

    // update ficha
    parent.fichaframe.location.href = "../page.php?page=ficha";

    // switch to map tab
    map.refresh();
    update_legend();
    return true;

  }
}

function filter(filter) {

  // check maximum number of filters
  if (filter.length > MAX_FILTER) {
    alert(localize["map_only3"]);
  }

  // get map object
  map = get_map_object();
  if (!map) {
    alert(localize["error_nomap"]);
    return;
  }

  // set new filter
  for (index=1; index < MAX_FILTER + 1; index++) {

    // send parameter to UMTG
    conn_name = 'Anthos '+index;
    conn_index = map._getserverindex(conn_name);
    if (conn_index != -1) {

      // get connection
      conn = map.connections[conn_index];

      if (index > filter.length) {

        // unset parameters
        conn.unsetparameter('INDEX');
        //conn.unsetparameter('IDESP');
        conn.unsetparameter('GENERO');
        conn.unsetparameter('ESPECIE');
        conn.unsetparameter('INFRANK');
        conn.unsetparameter('INFRA');

        // visible & locked status
        layer = conn.layers[0];
        layer.visible = false;
        layer.locked = true;

        // set filter as empty
        species[index].empty = true;

      } else {

        // parse parameters
        param = filter[index-1].split("|");

        // set parameters
        conn.setparameter('INDEX', index);
        //conn.setparameter('IDESP', param[0]);
        conn.setparameter('GENERO', param[1]);
        conn.setparameter('ESPECIE', param[2]);
        if (param[3])
          conn.setparameter('INFRANK', param[3]);
        else
          conn.unsetparameter('INFRANK');
        if (param[4])
          conn.setparameter('INFRA', param[4]);
        else
          conn.unsetparameter('INFRA');

        // visible & locked status
        layer = conn.layers[0];
        layer.visible = true;
        layer.locked = false;

        // save
        species[index].idesp = param[0];
        species[index].genero = param[1];
        species[index].especie = param[2];
        species[index].infrank = param[3];
        species[index].infra = param[4];
        if (param.length>5) species[index].autor = param[5];
        if (param.length>6) species[index].familia = param[6];
        species[index].empty = false;
      }

    } else alert(localize["error_servicenotfound"]+" '"+conn_name+"'.");

  }

  // update ficha
  parent.fichaframe.location.href = "page.php?page=ficha&item=menu";

  // switch to map tab
  //<xose>
  //map.setfullextent();
  map.setdefaultextent();
  //</xose>
  map.parent.toolbar.setstate(0);
  update_legend();
  //map.refresh();
  set_tab('mapframe');
  return;
}

function show_popup(src, width, height) {
  if (!src) src = "";
  if (!width) width = 400;
  if (!height) height = 300;
  popup = window.open(src, "popup", "width="+width+",height="+height+",left=100,top=100,menubar=no,toolbar=no,scrollbars=yes,status=yes,resizable=yes");
  popup.focus();
  return popup;
}

//******************************************************************************



// get the layer object called "name"
function getLayer(name) {
	if (isNav4)
	  return(document.layers[name]);
	else if (isIE4) {
	  layer = eval('document.all.' + name + '.style');
	  return(layer);
	} 
	else if (is5up) {
		var theObj = document.getElementById(name);
		return theObj.style
	}
	else
	  return(null);
}


// toggle layer to invisible
function hideLayer(name) {		
	var layer = getLayer(name);		
	if (isNav4)
  	layer.visibility = "hide";
  	//if (document.all)
	else
		layer.visibility = "hidden";
		 //layer.display="none";
}


// toggle layer to visible
function showLayer(name) {		
	var layer = getLayer(name);		
	if (isNav4)
		layer.visibility = "show";
  	//if (document.all)
	else
		layer.visibility = "visible";
	 //layer.display="block";
}

// enables lateral menu
function enableMenu() {
	els = document.getElementsByName("menulat");
	for (i = 0; i < els.length; i++) els[i].style.display = "";
}