var localSearch = new GlocalSearch();
initMaps();

var maps = new Array();
var markers = new Array();

function usePointFromPostcode(postcode, callbackFunction, map_index) {
  
  localSearch.setSearchCompleteCallback(null,
    function() {
      
      if (localSearch.results[0]) {    
        var resultLat = localSearch.results[0].lat;
        var resultLng = localSearch.results[0].lng;
        var point = new GLatLng(resultLat,resultLng);
        callbackFunction(point, map_index);
      }else{
        //alert("Postcode not found!");
      }
    });  
    
  localSearch.execute(postcode + ", UK");
}

function initMaps() {
	var oldOnload = window.onload;

	if (typeof(window.onload) != "function") {
		window.onload = showMaps;
	}
	else {
		window.onload = function() {
			oldOnload();
			showMaps();
		}
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function showMaps() {
  if(!GBrowserIsCompatible()) {
    return;
  }
  
  map_divs = getElementsByClass('map', document, 'div');
  var i;
  for(i = 0; i < map_divs.length; i++) {
    span = document.getElementById(map_divs[i].id + '_latitude')
    latitude = span.childNodes[0].nodeValue

    span = document.getElementById(map_divs[i].id + '_longitude')
    longitude = span.childNodes[0].nodeValue

    span = document.getElementById(map_divs[i].id + '_postcode')
    postcode = span.childNodes[0].nodeValue

    address = map_divs[i].title

    maps[i] = new GMap2(map_divs[i]);
    maps[i].addControl(new GSmallMapControl());
    point = new GLatLng(latitude, longitude);
    maps[i].setCenter(point, 13);
    markers[i] = new GMarker(point);
    maps[i].addOverlay(markers[i]);
    //marker.openInfoWindowHtml(address, {pixelOffset:new GSize(100,100)});

    setTimeout('usePointFromPostcode("' + postcode + '", updateMap, ' + i + ')', i * 500);
  }
}

function updateMap(point, map_index) {
  maps[map_index].removeOverlay(markers[map_index])
  markers[map_index] = new GMarker(point)
  maps[map_index].setCenter(point)
  maps[map_index].addOverlay(markers[map_index])
}
