var map = null;
var req = false;
var gbranch ="";
function doMap(lng,lat,zoom,move) {

	try {

		if (GBrowserIsCompatible()) {

			if (map == null) {
				map = new GMap2(document.getElementById("mapdiv"));
				map.setCenter(new GLatLng(lat,lng));
			}
			else map.clearOverlays();

			// TBD use hsid to change hs href to use new lng,lat

			if (move == "move") 
				map.panTo(new GLatLng(lat,lng));
			else 
			if (move != "move") {
				map.setMapType(G_NORMAL_MAP);
				map.addControl(new GLargeMapControl());
				map.addControl(new GMapTypeControl());
//				map.addControl(new GNavLabelControl());
				map.addControl(new GOverviewMapControl());
				map.setZoom(zoom);
			}
		}
	} catch(e) { alert(e);}
}
function myshow(d) {
	if(d.length < 1) { return; }
	document.getElementById(d).style.visibility = "visible";
	document.getElementById(d).style.display = "block";
}
function myhide(d) {
	if(d.length < 1) { return; }
	document.getElementById(d).style.visiblity = "hidden";
	document.getElementById(d).style.display = "none";
}
function mydecode (s) {
	var pattern = /[+]/g;
	s = unescape(s);
	s = s.replace(pattern, ' ');

	return s;
}
function createMarker(point, code, msg, drag,id) {
	var BranchIcon = new GIcon();

	var name = "";
	if (code=="ANZ") {
		name = "ANZ";
		BranchIcon.image = "images/banks/anz.jpg";
	} else if (code=="HBC") {
		name = "HSBC";
		BranchIcon.image = "images/banks/hbc.jpg";
	} else if (code=="BW") {
		name = "Bank West";
		BranchIcon.image = "images/banks/bw.jpg";
	} else if (code=="CBA") {
		name = "Commonwealth Bank";
		BranchIcon.image = "images/banks/cba.jpg";
	} else if (code=="NAB") {
		name = "National Australia Bank";
		BranchIcon.image = "images/banks/nab.jpg";
	} else if (code=="STG") {
		name = "St George";
		BranchIcon.image = "images/banks/stg.jpg";
	} else if (code=="WBC") {
		name = "Westpac";
		BranchIcon.image = "images/banks/westpac.jpg";
	}  else if (code=="CTB") {
		name = "Citibank";
		BranchIcon.image = "images/banks/cb.jpg";
	}  
	BranchIcon.shadow = "images/banks/shadow.png";
	BranchIcon.iconSize = new GSize(22, 22);
	BranchIcon.shadowSize = new GSize(34, 25);
	BranchIcon.iconAnchor = new GPoint(6, 20);
	BranchIcon.infoWindowAnchor = new GPoint(5, 1);
	
	if (code=="default") {
		BranchIcon = new GIcon(G_DEFAULT_ICON);
	}
	
	var marker = null;
	if (drag!="drag") 
		marker = new GMarker(point, {icon:BranchIcon});
	else
		marker = new GMarker(point, {icon:BranchIcon, draggable: true});
	
	msg = "<b>" + name + "</b><br/>" + msg;
	marker.value = msg;
	
	GEvent.addListener(marker, "click", function() {map.openInfoWindowHtml(point, msg);});
	if (drag =="drag")
		GEvent.addListener(marker, "dragend", function() {
			var newLoc = new GLatLng(); 
			newLoc = marker.getLatLng();
			document.getElementById(id+'lng').value = newLoc.lng();
			document.getElementById(id+'lng').style.color = "red";
			document.getElementById(id+'lat').value = newLoc.lat();
			document.getElementById(id+'lat').style.color = "red";
			document.getElementById(id+'save').style.color = "red";
			});

	return marker;
}
function ajaxcall(url,type) {
	//alert("ajaxcall");
	req = false;
	callbackflag = false;
	
	if (type!=null) 
		callbackflag = true;
	//alert(url+" "+callbackflag);
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {	
				req = false;
			}
		}
	}
	if(req) {
		if (callbackflag) {
			if (type == "findbranches") {
				req.onreadystatechange = processBranches; 
			} else if (type == "geo") {
					req.onreadystatechange = processGeo; 
			}
		}
	}
	try {
		req.open("GET", url, callbackflag);
	} catch(e) {
	}
	req.send("");
	if (callbackflag)
		document.body.style.cursor = 'wait';
} 
function processBranches() {
	//alert("processBranchRequest"+req.readyState);
	try {
		// only if req shows "loaded"
		if (req.readyState == 4) {
			// only if "OK"
			//alert("processBranchRequest"+req.readyState+" " + req.status);
			if (req.status == 200 ) {
				
				//alert("processBranchRequest"+req.responseText);
				r = eval('(' + req.responseText + ')');

				if (r[0].lng == 0.0 && r[0].lat == 0.0) {document.getElementById('error').innerHTML="Sorry area not found.";return;}	

				if (r[0].move =="move")
					doMap(r[0].lng, r[0].lat, -1, "move");

				if (map == null) 
					map = new GMap2(document.getElementById("mapdiv"));
				else
					map.clearOverlays();
				
				for (i=1;i<r.length-1;i++)
				{
					var lng = r[i].lng;
					var lat = r[i].lat;
					if (lat =="" || lng == "") return;
					var tel ="";
					var fax="";
					var bsb="";
					if (r[i].phone != "") tel = "<br/>Tel: "+r[i].phone;
					if (r[i].fax != "") fax = "<br/>Fax: "+r[i].fax;
					if (r[i].bsb != "") bsb = "<br/>BSB: "+r[i].bsb;

					var point = new GLatLng(lat,lng); 
					map.addOverlay(createMarker(point, r[i].code, r[i].address+"<br/>"+
							r[i].town+"<br/>"+r[i].state+" "+r[i].postcode+tel+fax+bsb,"nodrag"));

				}

			} else {
				document.getElementById('error').innerHTML =  "Sorry XML data error." + req.responseText;

			}
		}
	} catch (e) { alert(e); }
	document.body.style.cursor = 'default';
}
function processGeo() {
	alert("processGeo"+req.responseText);
	try {
		
		if (req.readyState == 4) {
			// only if "OK"
			//alert("processBranchRequest"+req.readyState+" " + req.status);
			if (req.status == 200 ) {
				
				alert("processGeo"+req.responseText);
				r = eval('(' + req.responseText + ')');

				var lng = r.Placemark[0].Point.coordinates[0];
				var lat = r.Placemark[0].Point.coordinates[1];
				
				document.getElementById('newlng').value = lng;
				document.getElementById('newlat').value = lat;
				
				//if (document.getElementById('newpostcode').value =="") {
					//var postcode = r.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.PostalCode.PostalCodeNumber;
					//document.getElementById('newpostcode').value = postcode;
				//}
				
				var point = new GLatLng(lat,lng); 
				if (map == null) 
					map = new GMap2(document.getElementById("mapdiv"));
				
				doMap(lng,lat,15,"move");
				
				map.addOverlay(createMarker(point, "default", "", "drag"));

			} else {
				alert("There was a problem retrieving the XML data, status: " + req.status+" data:" + req.responseText);
				document.getElementById('newlng').value = "";
				document.getElementById('newlat').value = "";
			}
		}
	} catch (e) { 
		alert(e);
		document.getElementById('newlng').value = "";
		document.getElementById('newlat').value = "";
	}
	document.body.style.cursor = 'default';
}
function checkEnter(e){ //e is event object passed from function invocation
	var characterCode //literal character code will be stored in this variable

	if(e && e.which){ //if which property of event object is supported (NN4)
	e = e
	characterCode = e.which //character code is contained in NN4's which property
	}
	else{
	e = event
	characterCode = e.keyCode //character code is contained in IE's keyCode property
	}

	if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
	findBranches('move');
	//document.forms[0].submit() //submit the form
	return false
	}
	else{
	return true
	}
	}
