// index.js
// Copyright (C) 2008 University of California - San Diego

var objMap;        // Google Map object


GMap2.prototype.updateAltimetryLayer = function() { 
  if( typeof(this.altLayer) != "undefined" ) { 
    this.removeOverlay(this.altLayer);
    this.addOverlay(this.altLayer);
  }
};


GMap2.prototype.setAltimetryLayer = function(o) { 
  this.altLayer = o;
  return true;
}

GMap2.prototype.getAltimetryLayer = function() { 
  if( typeof(this.altLayer) != "undefined" ) { 
    return this.altLayer.getTileLayer();
  }
  return null;
}



/**
 * Writes current link
 */
function writeLinkForBookmarks() { 
  var mt = objMap.getCurrentMapType().getUrlArg();
  var ll = objMap.getCenter().toUrlValue();
  var zz = objMap.getZoom();

  var url = '?ll='+ll + '&zz='+zz + '&mt='+mt;
  // TODO -- add more parameters
  location.href = url;
}
  

function inc_day(n) { 
  var d = objMap.getAltimetryLayer().getDate();
  var ms = d.getTime() + (n*86400000);
  objMap.getAltimetryLayer().setDate(new Date(ms));
}


/**
 * map initialization
 */
function init_map() { 
  var el = document.getElementById("Gmap");
  if( !el ) { 
    return;
  }
  if(!GBrowserIsCompatible()) {
    alert("Your browser is not compatible with google maps.");
    return false;
  }

  objMap = new GMap2(document.getElementById("Gmap"));

  objMap.addMapType(G_PHYSICAL_MAP);
  objMap.addControl(new GSmallMapControl());
  objMap.addControl(new GMenuMapTypeControl());
  objMap.addControl(new GScaleControl());


  var zoom = get_url_parameter("zz");
  zoom = (!zoom) ? 2 : parseInt(zoom,10);

  var ll = get_url_parameter('ll');
  var latlng;
  if( !ll ) { 
    latlng = new GLatLng(15,-160);
  } else { 
    ll = ll.split(",");
    latlng = new GLatLng(parseFloat(ll[0]),parseFloat(ll[1]));
  }

  objMap.setCenter(latlng,zoom,G_PHYSICAL_MAP);

  var mt = get_url_parameter('mt');
  if( mt != null ) { 
    var types = objMap.getMapTypes();
    for(var m in types) { 
      if( types[m].getUrlArg() == mt ) { 
        objMap.setMapType(types[m]);
        break;
      }
    }
  }
}


function displayLatestTimestamp(elID) { 
  var el = document.getElementById(elID);
  if( !el ) { 
    return;
  }

  var dom = GXml.parse(cached["listAltimetry"]);
  var stamps = dom.getElementsByTagName("stamp");
  var maxStamp = null;
  for(var i=0,n=stamps.length;i<n;i++) {
    var stamp = stamps[i].firstChild.nodeValue;
    if( !maxStamp || stamp.toString() > maxStamp ) {
      maxStamp = stamp.toString();
    }
  }
  if( !maxStamp ) {
    return false;
  }
  var yr = maxStamp.substr(0,4);
  var mo = maxStamp.substr(4,2);
  var da = maxStamp.substr(6,2);
  el.innerHTML = yr+"-"+mo+"-"+da;
}



function init() { 
  init_map();

  if( !objMap ) { 
    return;
  }

  objAlt = new GTileLayerOverlay(new GAltimetryLayer());
  GEvent.addListener(objAlt.getTileLayer(),"load",function() { 
    document.getElementById("altimetryTime").innerHTML = this.dateToString();
    objMap.setAltimetryLayer(objAlt);
    objMap.updateAltimetryLayer();
  });

  GEvent.addListener(objAlt.getTileLayer(),"datechange",function(d) { 
    objMap.updateAltimetryLayer();
    document.getElementById("altimetryTime").innerHTML = this.dateToString();
  });
}


window.onload = init;
window.onunload = GUnload;
window.onbeforeunload = GUnload;
