 
var locs = new Array(); 
locs["WORLD"]="0,0";
locs["USA"]="38.0000,-97.0000";
locs["CANADA"]="60.0000,-95.0000";
locs["INDIA"]="20.0000,77.0000";
locs["PUERICO"]="18.2500,-66.5000";
locs["GHANA"]="8.0000,-2.0000";
locs["NIGERIA"]="10.0000,8.0000";
locs["ETHOPIA"]="8.0000,38.0000";
locs["ZAMBIA"]="-15.0000,30.0000";
locs["CAMEROON"]="6.0000,12.0000";
locs["BULGARIA"]="43.0000,25.0000";
locs["FRANCE"]="46.0000,2.0000";
locs["UKRAINE"]="49.0000,32.0000";
locs["ROMANIA"]="46.0000,25.0000";
locs["INDONESIA"]="-7.00,110.00";
locs["SWITZERLAND"]="47.22,8.32";
locs["GERMANY"]="52.30,13.25";
locs["NORWAY"]="59.55,10.45";
locs["VENEZUELA"]="8.24,-71.08";
locs["BENIN"]="6.20,2.25";
locs["MEXICO"]="26.5,-107.00";
locs["TURKMENISTAN"]="38.00,57.00";
locs["PAKISTAN"]="29.00,70.00";
locs["CHINA"]="41.00,112.00";
locs["SWAZILAND"]="-26.00,31.00";
locs["UKRAINE"]="48.00,24.00";
locs["GAMBIA"]="13.00,-16.00";
locs["SINGAPORE"]="1.25,104";
locs["THAILAND"]="13.00,100";
locs["RUSSIA"]="45,40";


locs["AK"]="61.3850,-152.2683";
locs["AL"]="32.7990,-86.8073";
locs["AR"]="34.9513,-92.3809";
locs["AS"]="14.2417,-170.7197";
locs["AZ"]="33.7712,-111.3877";
locs["CA"]="36.1700,-119.7462";
locs["CO"]="39.0646,-105.3272";
locs["CT"]="41.5834,-72.7622";
locs["DC"]="38.8964,-77.0262";
locs["DE"]="39.3498,-75.5148";
locs["FL"]="27.8333,-81.7170";
locs["GA"]="32.9866,-83.6487";
locs["HI"]="21.1098,-157.5311";
locs["IA"]="42.0046,-93.2140";
locs["ID"]="44.2394,-114.5103";
locs["IL"]="40.3363,-89.0022";
locs["IN"]="39.8647,-86.2604";
locs["KS"]="38.5111,-96.8005";
locs["KY"]="37.6690,-84.6514";
locs["LA"]="31.1801,-91.8749";
locs["MA"]="42.2373,-71.5314";
locs["MD"]="39.0724,-76.7902";
locs["ME"]="44.6074,-69.3977";
locs["MI"]="43.3504,-84.5603";
locs["MN"]="45.7326,-93.9196";
locs["MO"]="38.4623,-92.3020";
locs["MP"]="14.8058,145.5505";
locs["MS"]="32.7673,-89.6812";
locs["MT"]="46.9048,-110.3261";
locs["NC"]="35.6411,-79.8431";
locs["ND"]="47.5362,-99.7930";
locs["NE"]="41.1289,-98.2883";
locs["NH"]="43.4108,-71.5653";
locs["NJ"]="40.3140,-74.5089";
locs["NM"]="34.8375,-106.2371";
locs["NV"]="38.4199,-117.1219";
locs["NY"]="42.1497,-74.9384";
locs["OH"]="40.3736,-82.7755";
locs["OK"]="35.5376,-96.9247";
locs["OR"]="44.5672,-122.1269";
locs["PA"]="40.5773,-77.2640";
locs["PR"]="18.2766,-66.3350";
locs["RI"]="41.6772,-71.5101";
locs["SC"]="33.8191,-80.9066";
locs["SD"]="44.2853,-99.4632";
locs["TN"]="35.7449,-86.7489";
locs["TX"]="31.1060,-97.6475";
locs["UT"]="40.1135,-111.8535";
locs["VA"]="37.7680,-78.2057";
locs["VI"]="18.0001,-64.8199";
locs["VT"]="44.0407,-72.7093";
locs["WA"]="47.3917,-121.5708";
locs["WI"]="44.2563,-89.6385";
locs["WV"]="38.4680,-80.9696";
locs["WY"]="42.7475,-107.2085";

 

function centerToLocation() {

var optionNumber = document.locform.location.selectedIndex
    
    if (optionNumber != 0) { //the first option is used as location holder
    var loc = document.locform.location.options[optionNumber].value;
    
    var coord = locs[loc];
    var coord_array=coord.split(",");
    var lat = coord_array[0];
    var lng = coord_array[1];
    var zoomlvl = 11;
    if (optionNumber < 30)
        zoomlvl = 13;
    if (optionNumber==1)
        zoomlvl = 16;
    
    recenter(lng,lat,zoomlvl,'map');
   }


} 

      
var minmagnitude = 2;
var url = "essay_locs.xml";
var latitude = 0;
var longitude = 0;
var zoom = 16;
var type = "map";
var map;
var timeOut = 150;
var i=0;
var items;
var yellowicon; var blueicon; var whiteicon; var greenicon;
//Detect IE5.5+
var isMSIE = false;
var isOpera = false;
var MSIEversion=0;

if (navigator.appVersion.indexOf("MSIE")!=-1) {
  temp=navigator.appVersion.split("MSIE");
  MSIEversion=parseFloat(temp[1]);
}
if (MSIEversion>=5.5) { //NON IE browser will return 0
  isMSIE = true;
}
if (navigator.userAgent.indexOf("Opera")!=-1) {
  isOpera = true;
  isMSIE = false;
}

// Centers the map on the given coordinates and chooses either
// satellite, hybrid or map type

function recenter(latitude, longitude, zoom, type) {
  map.centerAndZoom(new GPoint(latitude, longitude), zoom);
  if (type == 'sat') {
    map.setMapType(G_SATELLITE_TYPE);
  } else if (type == 'hybrid') {
    map.setMapType(G_HYBRID_TYPE);
  } else {
    map.setMapType(G_MAP_TYPE);
  }
}

// Creates a marker whose info window displays the given text
function createMarker(point, magnitude, city, state) {
   switch (magnitude) {
   case "2":
        var marker = new GMarker(point,whiteicon);
	break
   case "3":
        var marker = new GMarker(point,greenicon);
	break
   case "4":
        var marker = new GMarker(point,blueicon);
	break
   case "5":
        var marker = new GMarker(point,yellowicon);
	break
   default:
        var marker = new GMarker(point);
   }

   var html = '<div id="marker"> <p>' + city + '</a><br>' + state + '</p></div>';
   GEvent.addListener(marker, "click", function() {
   marker.openInfoWindowHtml(html);
   });

   return marker;
}

function onLoad() {
  if (!GBrowserIsCompatible()) {
    var err = document.getElementById("errmsg");
    err.style.visibility = "visible";
  } else {

  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);

  whiteicon = new GIcon(baseicon);
  whiteicon.image = "http://labs.google.com/ridefinder/images/mm_20_white.png";
  yellowicon = new GIcon(baseicon);
  yellowicon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
  greenicon = new GIcon(baseicon);
  greenicon.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
  blueicon = new GIcon(baseicon);
  blueicon.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";

  map = new GMap(document.getElementById("map"));
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  map.addControl(new GScaleControl());
  map.centerAndZoom(new GPoint(latitude, longitude), zoom);

  if (type == 'sat') {
    map.setMapType(G_SATELLITE_TYPE);
  } else if (type == 'hybrid') {
    map.setMapType(G_HYBRID_TYPE);
  } else {
    map.setMapType(G_MAP_TYPE);
  }

  var request = GXmlHttp.create();
  request.open("GET", url, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      items = xmlDoc.documentElement.getElementsByTagName("city");
      window.setTimeout(mapOne,timeOut);
    }
  }
  request.send(null);
  var center = map.getCenterLatLng();
  document.getElementById("latitude").innerHTML = center.y;
  document.getElementById("longitude").innerHTML = center.x;

  GEvent.addListener(map, "moveend", function() {
    var center = map.getCenterLatLng();
    document.getElementById("latitude").innerHTML = center.y;
    document.getElementById("longitude").innerHTML = center.x;
  });
  }
}

function getValueByTagName(node, tag) {
  var a = node[i].getElementsByTagName(tag)[0];
  if (a) {
    if (GXml.value(a)) {
      return(GXml.value(a));
    } else {
      alert('value of ' + tag + ' is null');
    }
  } else {
  alert ('node[i] is null: tag=' + tag);
  }
}

function getValueByAttrName(node, tag) {
  var a = node[i].getAttribute(tag)[0];
  if (a) {
    if (GXml.value(a)) {
      return(GXml.value(a));
    } else {
      alert('value of attr ' + tag + ' is null');
    }
  } else {
  alert ('node[i] is null: tag=' + tag);
  }
}


function mapOne() {
  
  if ( i < items.length ) {
    var max=Math.min(i+10, items.length);
    while (i < max) {
      var point = new GPoint(parseFloat(getValueByTagName(items,'long')),
                               parseFloat(getValueByTagName(items,'lat')));
      
      var city = getValueByTagName(items,'name');
      //var state = getValueByAttrName(items,'code');
      var state = "";
     
      var marker = createMarker(point, "2", city, state);
      map.addOverlay(marker);
      i++;
    }
    if (document.getElementById('loadingMessage')) {
      document.getElementById('loadingMessage').innerHTML= "Loading " + max + " of " + items.length ;
    }
    window.setTimeout(mapOne,timeOut);
  } else {
    document.getElementById('loading').style.visibility='hidden';
  }

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


