// Earthquake Map default style by Dawn Endico - endico@gmail.com 
//   Released under Creative Commons License
//   http://creativecommons.org/licenses/by-sa/2.5/
//
      
var teq_minmagnitude = 2;
var teq_dataFeed= "eqs7day-M2.5.xml";
var teq_latitude = 0;
var teq_longitude = 180;
var teq_zoom = 1;
var teq_type = "map";
var teq_map;
var teq_timeOut = 165;
var teq_i=0;
var teq_items;
var teq_yellowicon; var blueicon; var whiteicon; var greenicon;
var teq_isMSIE = false;
var teq_MSIEversion=0;
var teq_isFF3 = false;
var teq_useQualifiedNames = false;
var teq_searchControl;
if (navigator.appVersion.indexOf("MSIE")!=-1) {
  teq_temp=navigator.appVersion.split("MSIE");
  teq_MSIEversion=parseFloat(teq_temp[1]);
}
if (teq_MSIEversion>=5.5) { //NON IE browser will return 0
  teq_isMSIE = true;
}
if (navigator.userAgent.indexOf("Opera")!=-1) {
  teq_isMSIE = false;
}
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
 var ffversion=new Number(RegExp.$1); 
 if (ffversion>=3) {
   var teq_isFF3 = true;
 }
}

// IE5.5+ and Firefox 3+ use qualified namespaces like 'geo:lat', not 'lat'
if (teq_isMSIE || teq_isFF3) {
  teq_useQualifiedNames = true;
}

function onLoad() {
	/*
  // Create a search control
  teq_searchControl = new GSearchControl();

  var quakenews = new GnewsSearch();
  quakenews.setUserDefinedLabel(teq_quakeNewsTitle);
  teq_searchControl.setResultSetSize(GSearch.LARGE_RESULTSET);
  teq_searchControl.addSearcher(quakenews);
  teq_searchControl.addSearcher(new GblogSearch());
  teq_searchControl.addSearcher(new GvideoSearch());
  var drawOptions = new GdrawOptions();
  drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
  drawOptions.setSearchFormRoot(document.getElementById("searchcontrol"));
  // Tell the searcher to draw itself and tell it where to attach
  teq_searchControl.draw(document.getElementById("searchresults"),drawOptions);

  // Execute an inital search
  teq_searchControl.execute(teq_newsSearchString);
*/
  // load map
  if (false) {
    var err = document.getElementById("errmsg");
    err.style.visibility = "visible";
  } else {
    getParameters();
    var baseicon = new GIcon();
    baseicon.image = "http://labs.google.com/ridefinder/images/mm_20_white.png";
    baseicon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
    baseicon.iconSize = new GSize(12, 20);
    baseicon.shadowSize = new GSize(22, 20);
    baseicon.iconAnchor = new GPoint(6, 20);
    baseicon.infoWindowAnchor = new GPoint(5, 1);

    teq_whiteicon = new GIcon(baseicon);
    teq_whiteicon.image = "http://labs.google.com/ridefinder/images/mm_20_white.png";
    teq_yellowicon = new GIcon(baseicon);
    teq_yellowicon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
    teq_greenicon = new GIcon(baseicon);
    teq_greenicon.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
    teq_blueicon = new GIcon(baseicon);
    teq_blueicon.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";

    //teq_map = new GMap2(document.getElementById("map"));
    teq_map.addControl(new GLargeMapControl());
    teq_map.addControl(new GMapTypeControl());
    teq_map.addControl(new GScaleControl());
    if (teq_type == 'sat') {
      teq_map.setCenter(new GLatLng(teq_latitude, teq_longitude), teq_zoom, G_SATELLITE_MAP);
    } else if (teq_type == 'hybrid') {
      teq_map.setCenter(new GLatLng(teq_latitude, teq_longitude), teq_zoom, G_HYBRID_MAP);
    } else {
      teq_map.setCenter(new GLatLng(teq_latitude, teq_longitude), teq_zoom, G_NORMAL_MAP);
    }

    var request = GXmlHttp.create();
    request.open("GET", teq_dataFeed, true);
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        var xmlDoc = request.responseXML;
        var pubDate = xmlDoc.documentElement.getElementsByTagName("pubDate")[0].firstChild.nodeValue;
	document.getElementById('pubDate').firstChild.nodeValue = " " + teq_createdOn + " " + pubDate + ".";
        teq_items = xmlDoc.documentElement.getElementsByTagName("item");
        window.setTimeout(teq_mapOne,teq_timeOut);
      }
    }
    request.send(null);

    // Monitor the window resize event and let the teq_map know when it occurs
    if (window.attachEvent) { 
      window.attachEvent("onresize", function() {teq_map.checkResize()} );
    } else {
      window.addEventListener("resize", function() {teq_map.checkResize()} , false);
    }

    if (document.getElementById("latitude")) {
      var center = teq_map.getCenter();
      document.getElementById("latitude").innerHTML = center.lat();
      document.getElementById("longitude").innerHTML = center.lng();

      GEvent.addListener(teq_map, "moveend", function() {
        var center = teq_map.getCenter();
        document.getElementById("latitude").innerHTML = center.lat();
      document.getElementById("longitude").innerHTML = center.lng();
      });
    }
  }
}

function teq_getValueByTagName(node, tag) {
  var a = node[teq_i].getElementsByTagName(tag)[0];
  if (a) {
    if (a.firstChild && a.firstChild.nodeValue) {
      return(a.firstChild.nodeValue);
    }
  } else {
  GLog.write("node[" + teq_i + "] is null: tag=" + tag);
  }
}

function teq_mapOne() {
  if ( teq_i < teq_items.length ) {
    var max=Math.min(teq_i+10, teq_items.length);
    while (teq_i < max) {
      if (teq_useQualifiedNames) {
        var point = new GLatLng(parseFloat(teq_getValueByTagName(teq_items,'geo:lat')),
                               parseFloat(teq_getValueByTagName(teq_items,'geo:long')));
      } else {
        var point = new GLatLng(parseFloat(teq_getValueByTagName(teq_items,'lat')),
                               parseFloat(teq_getValueByTagName(teq_items,'long')));
      }
      var title = teq_getValueByTagName(teq_items,'title');
      var link = teq_getValueByTagName(teq_items,'link');
      var date = teq_getValueByTagName(teq_items,'description');
      if (teq_useQualifiedNames) {
        var magnitude = teq_getValueByTagName(teq_items,'dc:subject');
      } else {
        var magnitude = teq_getValueByTagName(teq_items,'subject');
      }
      if (magnitude >= teq_minmagnitude) {
        var marker = createMarker(point, magnitude, link, title, date);
        teq_map.addOverlay(marker);
      }
      teq_i++;
    }
    if (document.getElementById('loadingMessage')) {
      document.getElementById('loadingMessage').innerHTML = teq_loading + " " + max + " " + teq_pageOf + " " + teq_items.length ;
    }
    window.setTimeout(teq_mapOne,teq_timeOut);
  } else {
    document.getElementById('loading').style.visibility='hidden';
  }
}

function linkToThisPage() {
  var curURL = new String(location.href);
  var baseURL = curURL.split('?')[0];
  var curzoom = teq_map.getZoom();
  var center = teq_map.getCenter();
  var curlat = center.lat();
  var curlon = center.lng();
  var curtype;
  if (teq_map.getCurrentMapType() == G_SATELLITE_MAP) {
    curtype = 'sat';
  } else if (teq_map.getCurrentMapType() == G_HYBRID_MAP) {
    curtype = 'hybrid';
  } else {
    curtype = 'map';
  }
  var url = baseURL + "?lat=" + curlat + "&lon=" + curlon + "&type=" + curtype + "&zoom=" + curzoom;
  if (typeof(teq_language) != "undefined") {
    url += "&hl=" + teq_language;
  }
  location.href = url;
}

function getParameters() {
  var url = new String(location.href);
  if (url.indexOf('?') > -1) {
    var queryString = url.split('?');
    if (queryString[1].length > 0) {
      var paramString = queryString[1];
      var params = paramString.split("&");
      for (var i=0; i<= params.length-1; i++){
        var curParam= params[i].split("=");
        if (curParam[1].length > 0) {
	  var param=curParam[0].toLowerCase();
          switch (param) {
            case "lon":
              var curlon = curParam[1];
	      if ((curlon >=-180 ) && (curlon <= 180)) {
                teq_longitude = curParam[1];
	      }
              break;
            case "lat":
              var curlat = curParam[1];
	      if ((curlat >=-180 ) && (curlat <= 180)) {
                teq_latitude = curlat;
	      }
              break;
            case "zoom":
              var curzoom = curParam[1];
	      if ((curzoom >=1 ) && (curzoom <= 18)) {
	        teq_zoom = parseInt(curzoom);
	      }
              break;
            case "type":
              if ( curParam[1].toLowerCase() == 'sat' ) {
                teq_type = "sat";
              } else if ( curParam[1].toLowerCase() == 'hybrid' ) {
                teq_type = "hybrid";
              } else {
                teq_type = "map";
              }
              break;
          }
	}
      }
    }
  }
}

// Centers the map on the given coordinates and chooses either
// satellite, hybrid or map type
function recenter(latitude, longitude, zoom, type) {
  teq_map.setCenter(new GLatLng(latitude, longitude));
  teq_map.setZoom(zoom);
  if (type == 'sat') {
    teq_map.setMapType(G_SATELLITE_MAP);
  } else if (type == 'hybrid') {
    teq_map.setMapType(G_HYBRID_MAP);
  } else {
    teq_map.setMapType(G_NORMAL_MAP);
  }
}

// Creates a marker whose info window displays the given text
function createMarker(point, magnitude, link, title, date) {
   switch (magnitude) {
   case "2":
        var marker = new GMarker(point,teq_whiteicon);
	break;
   case "3":
        var marker = new GMarker(point,teq_greenicon);
	break;
   case "4":
        var marker = new GMarker(point,teq_blueicon);
	break;
   case "5":
        var marker = new GMarker(point,teq_yellowicon);
	break;
   default:
        var marker = new GMarker(point);
   }

   var html = '<div id="marker"> <p><a href="'+ link +'" onclick="window.open(this.href,\'newwin\'); return false;">' + title + '</a><br>' + date + '</p></div>';
   GEvent.addListener(marker, "click", function() {
     marker.openInfoWindowHtml(html);
   });

   return marker;
}
