//2/9/2010 - support for hillgradecalc page
//Copyright 2010 (c) veloroutes.org

function validate() {
 if(!_validate("loc1")){return false;}
 return _validate("loc2");
}

function _validate(id) {
 var loc = getEle(id);
 var ret = false;
 if(loc) {
  if(loc.value == "") { ret = false; }
  else if(!loc.value) { ret = false; }
  else if(loc.value.length < 5 || loc.value.length > 80) { ret = false }
  else if(loc.value.match(/http/i)){ret = false}
  else if(loc.value.match(/\|<>`~:!@#\$%^\*\(\)\+=}{\[\]/)) { ret = false }
  else { ret= true}
 }
 
 if(!ret) { alert("Please enter a valid location."); if(loc){loc.focus();} }     
 return ret;
}

function getEle(id) { return document.getElementById(id); }

function load(lat1,long1,lat2,long2) {

if(!lat1) { lat1 = 0 }
if(!long1) { long1 = 0 }


if (!GBrowserIsCompatible()) {
alert("Either your browswer can't handle Google Maps, or my google API key is wrong...");
return;
}

var mapOptions = {
    googleBarOptions : {      style : "new",
      adsOptions: {        client: "pub-0412558566882978",
        channel: "veloroutes.org_elevationmap",
        adsafe: "high",
        language: "en"      }  } 
}

var publisher_id = 'pub-0412558566882978';
var adsManagerOptions = {  maxAdsOnMap : 2,  style: 'adunit' };  
// The channel field is optional - replace this field with a channel number   
// for Google AdSense tracking  channel: 'your_channel_id'  

//draggableCursor: 'crosshair', 
//draggingCursor: 'crosshair'

	var map = new GMap2(document.getElementById("map"),mapOptions);
	this.map = map;

adsManager = new GAdsManager(map, publisher_id, adsManagerOptions);
adsManager.enable();
	map.enableGoogleBar(); //ads!
	map.addMapType(G_PHYSICAL_MAP);
	map.setMapType(G_PHYSICAL_MAP);
	if(map != null) {
		//show lat & long on load
		/*GEvent.addListener(map, "load", function() {
			showCrossHair();
		});*/

		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GScaleControl());
				
		// create crosshair icon
		this.crosshairicon = new GIcon();
		crosshairicon.image = "/images/crosshair1.png";
		crosshairicon.shadow = "";
		crosshairicon.iconSize = new GSize(15, 15);
		crosshairicon.shadowSize = new GSize(0, 0);
		crosshairicon.iconAnchor = new GPoint(7, 7);
		crosshairicon.infoWindowAnchor = new GPoint(7, 7);
		
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		var z=1;
		if(lat1) { z='';  //we calc zoom
                  map.setCenter(new GLatLng((lat1+lat2)/2, (long1+long2)/2),z);
                  drawLine(map, lat1,long1,lat2,long2);
                }
                else { map.setCenter(new GLatLng(45.583290, -2.109375),z); }
		}

	if(map && lat1 && long1) {
		var ll = new GLatLng(lat1,long1);
		/*map.setCenter(ll,z);*/

		loadIcon(map, ll, 1);
		ll = new GLatLng(lat2, long2);
		loadIcon(map, ll, 2); 
	}

} //end method

function loadIcon(map, ll,num) {
   // base icon for all markers
                var ico = new GIcon({image:"/images/markers2/lightblue"+num+".png"});
                ico.shadow = "";  /* no marker shadow used in favour of map usability */
                ico.iconSize = new GSize(17, 19);
                ico.iconAnchor = new GPoint(0, 19);
                ico.infoWindowAnchor = new GPoint(15, 1);

                var mkr = new GMarker(ll, ico);
                mkr.setLatLng(ll);
                map.addOverlay(mkr);
}

function drawLine(map, lat1, long1, lat2, long2) {
 var lls = new Array();
 lls.push(new GLatLng(lat1, long1));
 lls.push(new GLatLng(lat2, long2));
 var line = new GPolyline(lls);
 map.addOverlay(line);
 var bounds = line.getBounds();
 map.setZoom(map.getBoundsZoomLevel(bounds));
}

//show/hide the crosshair in center of map
function showCrossHair() {
	if(this.recording) { return; }
	var centerpoint = this.map.getCenter();
		//remove old icon
		if (this.centericon) {
			map.removeOverlay(centericon)
		}
}

//eof
