

/*--------------------Start Google Mapping------------------------*/

/*---Intialisation---*/
var map;
var maps = Array();
var localSearch = new GlocalSearch();
var gmarkers = [];
var i = 0;
var side_bar_html = "";
var lastLinkId = "map"; //set to div id known to exist

//var icon = new GIcon();
//icon.image = "http://www.google.com/mapfiles/marker.png";
//icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
//icon.image = "http://82.138.226.79/Styles/StyleImages/GMapIconOBC.gif";
//icon.iconSize = new GSize(51, 35);
//icon.shadowSize = new GSize(37, 34);
//icon.iconAnchor = new GPoint(10, 34);


/*---Load/Unload functions---*/
function mapLoad(mapDivId) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(mapDivId));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(54.622978,-2.592773), 5, G_NORMAL_MAP);
	}
}

function loadMapNoControls(mapDivId) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(mapDivId));
		map.setCenter(new GLatLng(54.622978,-2.592773), 5, G_NORMAL_MAP);
	}
}

function loadMultipleMaps() {
	if (GBrowserIsCompatible()) {
	    for(i=1;i<=10;i++)
	    {
	        var mapDiv = document.getElementById("map" + i);
	        if(mapDiv)
	        {
		        maps[i] = new GMap2(mapDiv);
		        maps[i].setCenter(new GLatLng(54.622978,-2.592773), 5, G_NORMAL_MAP);
		    }
		}
	}
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function addUnLoadEvent(func) {
	var oldonunload = window.onunload;
	if (typeof window.onunload != 'function') {
	  window.onunload = func;
	} else {
	  window.onunload = function() {
	    oldonunload();
	    func();
	  }
	}

}

/*---Basic Methods---*/
function usePointFromPostcode(postcode, callbackFunction) {

	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);
			}else{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
}

function placeMarkerAtPoint(point)
{
	var marker = new GMarker(point,getIcon('', false));
	map.addOverlay(marker);
}

function placeMarkerAtPointMultipleMaps(mapDivNo, point, zoom)
{
    var marker = new GMarker(point,getIcon('', false));
    maps[mapDivNo].addOverlay(marker);
    maps[mapDivNo].setCenter(point, zoom);
}

function setCenterToPoint(point, zoom)
{
	map.setCenter(point, zoom);
}

// This function picks up the click and opens the corresponding info window
function myclick(i) 
{
    GEvent.trigger(gmarkers[i], "click");
}


/*---Single Map point---*/

function createInfoMarker(point, iconWithLetter, address, name, fullName, addSideBarHtml) 
{
    // use a custom icon with letter A - Z
    var myIcon;
    var letter = String.fromCharCode("A".charCodeAt(0) + i);
    if(iconWithLetter == "no")
    {
        var myIcon = getIcon('', false);
        //myIcon = new GIcon(G_DEFAULT_ICON, "http://www.google.com/mapfiles/marker.png");
        //myIcon.printImage = "http://maps.google.com/mapfiles/markerie.gif"
        //myIcon.mozPrintImage = "http://maps.google.com/mapfiles/markerff.gif"
    }
    else
    {
        var myIcon = getIcon(letter, false);
        //myIcon = new GIcon(G_DEFAULT_ICON, "http://www.google.com/mapfiles/marker" + letter + ".png");
        //myIcon.printImage = "http://maps.google.com/mapfiles/marker"+letter+"ie.gif"
        //myIcon.mozPrintImage = "http://maps.google.com/mapfiles/marker"+letter+"ff.gif"
    }
        
    var linkId = "link" + i;
    
    var marker = new GMarker(point, {icon:myIcon});
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(address, {maxWidth: 250});
        if(iconWithLetter != "no")
        {
            document.getElementById(linkId).style.background="#ffff00";
        }
        lastLinkId=linkId;}
        );
        
    map.addOverlay(marker);
    gmarkers[i] = marker;
    
    if(iconWithLetter != "no")
    {
        side_bar_html += '<div id="' + linkId + '" class="gmaplink"><b>'+letter+'</b> <a href="javascript:myclick(' + i + ')" title="' + fullName + '">' + name + '</a><br></div>';
        i++;
        side_bar_html += addSideBarHtml + '</div>';
    }    
    
    GEvent.addListener(map,"infowindowclose", function() {
        if(iconWithLetter != "no")
        {
            document.getElementById(lastLinkId).style.background="#ffffff";
        }
    });
} 

/*---Single map point with no side bar---*/
function createInfoMarkerWithNoSideBar(point) 
{
    // use a custom icon with letter A - Z
    var letter = String.fromCharCode("A".charCodeAt(0) + i);
    var myIcon = getIcon(letter, false);
    //var myIcon = new GIcon(G_DEFAULT_ICON, "http://www.google.com/mapfiles/marker" + letter + ".png");
    //myIcon.printImage = "http://maps.google.com/mapfiles/marker"+letter+"ie.gif"
    //myIcon.mozPrintImage = "http://maps.google.com/mapfiles/marker"+letter+"ff.gif"
        
    var linkId = "link" + i;
    
    var marker = new GMarker(point, {icon:myIcon});
        
    map.addOverlay(marker);
    gmarkers[i] = marker;
    
    i++;
} 

/*---Single map point with tabs---*/
function createTwoTabbedInfoMarker(point, iconWithLetter, displayStar, label1, html1, label2, html2, name, addSideBarHtml, fullName) 
{
    // use a custom icon with letter A - Z
    var letter = String.fromCharCode("A".charCodeAt(0) + i);
    if(iconWithLetter == "no")
    {
        var myIcon = getIcon('', displayStar);
        //var myIcon = new GIcon(G_DEFAULT_ICON, "http://www.google.com/mapfiles/marker.png");
        //myIcon.printImage = "http://maps.google.com/mapfiles/markerie.gif"
        //myIcon.mozPrintImage = "http://maps.google.com/mapfiles/markerff.gif"
    }
    else
    {
        var myIcon = getIcon(letter, displayStar);
        //var myIcon = new GIcon(G_DEFAULT_ICON, "http://www.google.com/mapfiles/marker" + letter + ".png");
        //myIcon.printImage = "http://maps.google.com/mapfiles/marker"+letter+"ie.gif"
        //myIcon.mozPrintImage = "http://maps.google.com/mapfiles/marker"+letter+"ff.gif"
    }
        
    var linkId = "link" + i;
    
    var marker = new GMarker(point, {icon:myIcon});

    if(label2 != '')
    {
        GEvent.addListener(marker, "click", function() 
        {
            marker.openInfoWindowTabsHtml([new GInfoWindowTab(label1,html1), new GInfoWindowTab(label2,html2)]);
            if(iconWithLetter != "no")
            {
                document.getElementById(linkId).className+=" selected";
            }
            lastLinkId=linkId;}
            );
    }
    else
    {
        GEvent.addListener(marker, "click", function() 
        {
        marker.openInfoWindowHtml(html1, {maxWidth: 250});
        if(iconWithLetter != "no")
        {
            document.getElementById(linkId).className+=" selected";
        }
        lastLinkId=linkId;}
        );
    }
        
    map.addOverlay(marker);
    gmarkers[i] = marker;
    
    if(iconWithLetter != "no")
    {
        side_bar_html += '<div id="' + linkId + '" class="gmaplink"><h3>' + letter + ' <a href="javascript:myclick(' + i + ')" title="' + fullName + '">' + name + '</a></h3>';
        i++;
        side_bar_html += addSideBarHtml + '</div>';
    
        GEvent.addListener(map,"infowindowclose", function() {
            document.getElementById(lastLinkId).className=document.getElementById(lastLinkId).className.replace(' selected', '');
          });
    }
} 


/*---Supporting Methods---*/

//Get the dynamically generated icon
function getIcon(letter, displayStar)
{
    var myIcon;
    //if(letter != '')
    //{
        var iconOptions = {}; 
            if(!displayStar)
            {
                iconOptions.primaryColor = "#BABCBF"; 
            }
            else
            {
                iconOptions.primaryColor = "#EC3232"; 
            }
            iconOptions.strokeColor = "#000000"; 
            iconOptions.label = letter; 
            iconOptions.labelColor = "#000000"; 
            iconOptions.addStar = false; 
            iconOptions.starPrimaryColor = "#FFFF00"; 
            iconOptions.starStrokeColor = "#0000FF"; 
        myIcon = MapIconMaker.createLabeledMarkerIcon(iconOptions);
    /*}
    else
    {
        var iconOptions = {};
            iconOptions.width = 32;
            iconOptions.height = 32;
            iconOptions.primaryColor = "#9C7019FF";
            iconOptions.cornerColor = "#FFFFFFFF";
            iconOptions.strokeColor = "#000000FF";
            iconOptions.addStar = displayStar; 
        myIcon = MapIconMaker.createMarkerIcon(iconOptions);
    }*/
    return myIcon;
}


//Show hide div function
var state = 'hidden';
var display = 'none';

function showhide(layer_ref) {

    if (state == 'visible') {
    state = 'hidden';
    }
    else {
    state = 'visible';
    }
    if (display == 'block') {
    display = 'none';
    }
    else {
    display = 'block';
    }
    if (document.all) { //IS IE 4 or 5 (or 6 beta)
    eval( "document.all." + layer_ref + ".style.visibility = state");
    eval( "document.all." + layer_ref + ".style.display = display");
    }
    if (document.layers) { //IS NETSCAPE 4 or below
    document.layers[layer_ref].visibility = state;
    document.layers[layer_ref].display = display;
    }
    if (document.getElementById && !document.all) {
    element = document.getElementById(layer_ref);
    element.style.visibility = state;
    element.style.display = display;
}
}


//addLoadEvent(mapLoad);
//addUnLoadEvent(GUnload);
