var markers = new Array();
var coords  = new Coords();
var ICON_DEL= '/images/bicing/icon_trash.gif';
var ICON_DEF= '/images/bicing/star_high.png';
var ICON_NOR= '/images/bicing/star_base.png';
var CLASS_DEF='defaultloc';
var CLASS_NOR='normalloc';

function create_marker(name,lat,lng)
{
  var point = new GLatLng(lat,lng);
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() {
       marker.openInfoWindowHtml(name);
  });
  return marker;
} // create_marker

function set_lat(newlat)
{
  document.getElementById("latbox").value = newlat;
} // set_lat

function get_lat()
{
  return document.getElementById("latbox").value;
} // get_lat

function set_lng(newlng)
{
  document.getElementById("lngbox").value = newlng;
} // set_lng

function get_lng()
{
  return document.getElementById("lngbox").value;
} // get_lng

function add_coords(lang)
{
  var prompts = new Array();
  prompts['ca'] = 'Entra un nom per aquesta ubicacio';
  prompts['es'] = 'Entra un nombre para esta ubicacion';
  prompts['en'] = 'Enter a name for this location';
  var errors  = new Array();
  errors['ca'] = 'Error afegint coordinades';
  errors['es'] = 'Error anadiendo coordenadas';
  errors['en'] = 'Error while trying to add coordinates';

  var lat=get_lat();
  var lng=get_lng();
  var name=prompt(prompts[lang]+" ("+lat+","+lng+")", "");
  var id = coords.add(name,lat,lng);
  if ( id != -1 )
  {
      show_coords(id,name,lat,lng);
  }
  else {
     window.alert(errors[lang]);
  }
} // add_coords

function init()
{
  var length= coords.get_length();
  for ( var i=0; i < length; i++)
  { 
     var values=coords.get_elements(i);
     if  ( values != null ) 
     {
        show_coords(i,values[0],values[1],values[2]);
     }
  }
} // show_all_coords

function show_coords(id,name,lat,lng)
{
  var cnt=coords.get_length();
  var def=coords.get_default();
  var is_default = false;
  if ( id == def || cnt == 1 ) 
  {
     is_default = true;
  }
  //debug_msg("SHOW COORDS "+def+","+id+","+lat+","+lng);
  var newcontent = document.createElement('li'); 
  newcontent.id = 'location' + id ; 
  if ( is_default )
  {
     newcontent.className = CLASS_DEF;
  } else {
     newcontent.className = CLASS_NOR;
  }

  var newtxt = document.createTextNode('('+lat+', '+lng+') - '+name);

  var delimg = document.createElement('img');
  delimg.src = ICON_DEL;
  delimg.onclick = function() { remove(id) };

  var defimg = document.createElement('img');
  defimg.id = 'defimg'+id;
  if ( is_default )
  {
     defimg.src = ICON_DEF;
  } else {
     defimg.src = ICON_NOR;
  }
  defimg.onclick = function() { change_default(id) };

  newcontent.appendChild(defimg);
  newcontent.appendChild(delimg);
  newcontent.appendChild(newtxt);

  var scr = document.getElementById('locs'); 
  scr.appendChild(newcontent); 

  var marker = create_marker(name,lat,lng);
  map.addOverlay(marker);
  markers.push(marker);
} // show_coords

function remove(id)
{
  var def	= coords.get_default();

  coords.remove(id);
  if ( markers[id] != null )
  {
    map.removeOverlay( markers[id] ); 
    markers[id] = null; 
  }

  if ( id == def )
  {
    set_default(coords.get_default());
  }

  var loc = document.getElementById('location'+id);
  var scr = document.getElementById('locs');
  scr.removeChild(loc);
}

function set_default(i)
{
  var dst = document.getElementById('location'+i);
  if ( dst != null ) 
  {
     dst.className = CLASS_DEF;
     var defimg = document.getElementById('defimg'+i);
     defimg.src = ICON_DEF;
  }
  coords.set_default(i);
}

function change_default(i)
{
  var j		= coords.get_default();

  var src = document.getElementById('location'+j);
  src.className = CLASS_NOR;
  var defimg = document.getElementById('defimg'+j);
  defimg.src = ICON_NOR;

  set_default(i);
}

function debug_msg(msg)
{
//  window.alert(msg);
} // debug_msg
