//Generated on the Tuesday 20th of April 2010 07:11:43 AM
var map = null;
var geocoder = null;
var distancesArray = [];
var currViewPcode = null;
var n = 0;

function initialize(postcode) 
{
  
	    if (GBrowserIsCompatible()) 
	    {
		    geocoder = new GClientGeocoder();

		    if (geocoder) 
		    {
			    geocoder.setBaseCountryCode('au');
			    auslocation = postcode + " , Australia";
			    
			    geocoder.getLatLng( postcode, function(postcodepoint) 
			    {
				    if (!postcodepoint) 
				    { 
					    alert("'" + postcode + "' is not a valid location.");
				    }
				    else if (!(110 < postcodepoint.lng() && postcodepoint.lng() < 155 && -44 < postcodepoint.lat() && postcodepoint.lat() < -8.5 ))
				    {
				        /*
				              (lat:-8.5 lng:110)
				                    x---------------|
				                    |               |
				                    |   Australia   |
				                    |               |
				                    |---------------x
				                             (lat:-44 lng:155)
				        
				        */
				        //if the location found is out of bounds of australia do this
					    alert("'" + titleCase(postcode) + "' was not found, most likely this could be postbox.");
					    location.href = location.href;

				    }
				    else 
				    {   

					    map = new GMap2(document.getElementById("map_canvas"));
					    map.setCenter(postcodepoint, 13);
					    map.addControl(new GSmallMapControl());
    					
					    //just allocate so that other functions can use this object
					    currViewPcode = postcodepoint;

calcDistanceAndAddToArray(-36.084814,146.912432,101,'BJD');
calcDistanceAndAddToArray(-37.817400,145.120000,102,'BJD');
calcDistanceAndAddToArray(-37.787900,145.121000,104,'BJD');
calcDistanceAndAddToArray(-37.999000,145.222000,105,'BJD');
calcDistanceAndAddToArray(-37.802200,144.957000,107,'BJD');
calcDistanceAndAddToArray(-37.932000,145.034000,108,'BJD');
calcDistanceAndAddToArray(-37.892700,145.088480,109,'BJD');
calcDistanceAndAddToArray(-37.946300,145.153000,112,'BJD');
calcDistanceAndAddToArray(-38.141140,145.126480,113,'BJD');
calcDistanceAndAddToArray(-38.161409,144.353981,114,'BJD');
calcDistanceAndAddToArray(-37.880100,145.267000,115,'BJD');
calcDistanceAndAddToArray(-37.816700,145.224000,116,'BJD');
calcDistanceAndAddToArray(-37.748600,144.912000,118,'BJD');
calcDistanceAndAddToArray(-36.763812,144.270470,119,'BJD');
calcDistanceAndAddToArray(-37.879837,144.702412,121,'BJD');
calcDistanceAndAddToArray(-36.381901,145.407074,123,'BJD');
calcDistanceAndAddToArray(-38.020860,145.306761,126,'BJD');
calcDistanceAndAddToArray(-38.198900,146.537000,129,'BJD');
calcDistanceAndAddToArray(-37.716636,145.137478,130,'BJD');
calcDistanceAndAddToArray(-37.696753,144.776305,132,'BJD');
calcDistanceAndAddToArray(-37.757600,145.313000,133,'BJD');
calcDistanceAndAddToArray(-37.676200,144.922000,134,'BJD');
calcDistanceAndAddToArray(-37.737815,145.004254,168,'BJD');
calcDistanceAndAddToArray(-37.651857,145.018450,169,'BJD');
calcDistanceAndAddToArray(-33.809400,151.178000,201,'BJD');
calcDistanceAndAddToArray(-33.761000,150.913000,202,'BJD');
calcDistanceAndAddToArray(-33.895000,151.250000,203,'BJD');
calcDistanceAndAddToArray(-33.828300,151.006000,204,'BJD');
calcDistanceAndAddToArray(-33.887500,151.142000,205,'BJD');
calcDistanceAndAddToArray(-33.702600,151.101000,206,'BJD');
calcDistanceAndAddToArray(-33.930300,150.917000,207,'BJD');
calcDistanceAndAddToArray(-33.751400,150.699000,209,'BJD');
calcDistanceAndAddToArray(-34.024300,151.121000,210,'BJD');
calcDistanceAndAddToArray(-32.924600,151.755000,212,'BJD');
calcDistanceAndAddToArray(-33.287000,149.107000,214,'BJD');
calcDistanceAndAddToArray(-34.290500,146.061000,215,'BJD');
calcDistanceAndAddToArray(-33.934000,151.027000,216,'BJD');
calcDistanceAndAddToArray(-31.094000,150.931000,217,'BJD');
calcDistanceAndAddToArray(-33.877300,151.233000,218,'BJD');
calcDistanceAndAddToArray(-34.054612,150.819905,936,'BJD');
calcDistanceAndAddToArray(-32.939370,151.712402,220,'BJD');
calcDistanceAndAddToArray(-33.854790,151.157837,222,'BJD');
calcDistanceAndAddToArray(-33.761800,151.276000,225,'BJD');
calcDistanceAndAddToArray(-32.252500,148.600000,227,'BJD');
calcDistanceAndAddToArray(-34.436100,150.898000,230,'BJD');
calcDistanceAndAddToArray(-35.322500,149.177000,231,'BJD');
calcDistanceAndAddToArray(-33.437792,151.380118,232,'BJD');
calcDistanceAndAddToArray(-35.242900,149.059000,235,'BJD');
calcDistanceAndAddToArray(-35.121100,147.382000,236,'BJD');
calcDistanceAndAddToArray(-30.285200,153.128000,237,'BJD');
calcDistanceAndAddToArray(-34.873684,150.605382,238,'BJD');
calcDistanceAndAddToArray(-33.987000,151.112000,239,'BJD');
calcDistanceAndAddToArray(-33.243000,151.504000,240,'BJD');
calcDistanceAndAddToArray(-34.564307,150.831255,242,'BJD');
calcDistanceAndAddToArray(-33.765358,150.825649,244,'BJD');
calcDistanceAndAddToArray(-27.489700,153.056000,301,'BJD');
calcDistanceAndAddToArray(-27.381700,153.030000,303,'BJD');
calcDistanceAndAddToArray(-27.615882,153.122712,305,'BJD');
calcDistanceAndAddToArray(-23.846700,151.254000,307,'BJD');
calcDistanceAndAddToArray(-23.357272,150.519415,308,'BJD');
calcDistanceAndAddToArray(-19.291000,146.796000,309,'BJD');
calcDistanceAndAddToArray(-24.885000,152.324000,310,'BJD');
calcDistanceAndAddToArray(-28.040000,153.434000,311,'BJD');
calcDistanceAndAddToArray(-27.524169,153.192783,312,'BJD');
calcDistanceAndAddToArray(-27.559500,152.941000,313,'BJD');
calcDistanceAndAddToArray(-27.230200,153.110000,314,'BJD');
calcDistanceAndAddToArray(-26.799500,153.115000,315,'BJD');
calcDistanceAndAddToArray(-26.656800,153.092000,316,'BJD');
calcDistanceAndAddToArray(-16.923334,145.766319,317,'BJD');
calcDistanceAndAddToArray(-27.417100,152.982000,318,'BJD');
calcDistanceAndAddToArray(-21.142000,149.192000,319,'BJD');
calcDistanceAndAddToArray(-27.567974,151.952332,321,'BJD');
calcDistanceAndAddToArray(-27.956200,153.409000,322,'BJD');
calcDistanceAndAddToArray(-25.536474,152.693270,323,'BJD');
calcDistanceAndAddToArray(-27.291000,152.985000,324,'BJD');
calcDistanceAndAddToArray(-12.371805,130.883328,326,'BJD');
calcDistanceAndAddToArray(-26.620626,152.964626,327,'BJD');
calcDistanceAndAddToArray(-27.664600,153.038000,328,'BJD');
calcDistanceAndAddToArray(-27.717800,153.203000,330,'BJD');
calcDistanceAndAddToArray(-27.614800,152.754000,331,'BJD');
calcDistanceAndAddToArray(-27.491900,152.979000,333,'BJD');
calcDistanceAndAddToArray(-26.552500,151.827000,334,'BJD');
calcDistanceAndAddToArray(-27.561400,153.069000,335,'BJD');
calcDistanceAndAddToArray(-27.105463,152.948822,338,'BJD');
calcDistanceAndAddToArray(-28.007609,153.343967,339,'BJD');
calcDistanceAndAddToArray(-25.287500,152.834000,340,'BJD');
calcDistanceAndAddToArray(-26.408223,153.047819,341,'BJD');
calcDistanceAndAddToArray(-25.591538,151.301958,344,'BJD');
calcDistanceAndAddToArray(-27.524545,153.257379,345,'BJD');
calcDistanceAndAddToArray(-27.408119,153.059184,346,'BJD');
calcDistanceAndAddToArray(-34.925000,138.550000,401,'BJD');
calcDistanceAndAddToArray(-34.927100,138.606000,402,'BJD');
calcDistanceAndAddToArray(-34.980289,138.556183,403,'BJD');
calcDistanceAndAddToArray(-34.889193,138.657239,405,'BJD');
calcDistanceAndAddToArray(-34.854485,138.510162,406,'BJD');
calcDistanceAndAddToArray(-34.833095,138.684231,407,'BJD');
calcDistanceAndAddToArray(-35.105444,138.524978,408,'BJD');
calcDistanceAndAddToArray(-34.763998,138.643863,409,'BJD');
calcDistanceAndAddToArray(-34.877666,138.602004,410,'BJD');
calcDistanceAndAddToArray(-34.949028,138.629944,413,'BJD');
calcDistanceAndAddToArray(-34.930100,138.594000,414,'BJD');
calcDistanceAndAddToArray(-34.601579,138.748975,415,'BJD');
calcDistanceAndAddToArray(-35.066200,138.858000,417,'BJD');
calcDistanceAndAddToArray(-35.018454,138.542134,423,'BJD');
calcDistanceAndAddToArray(-31.904864,115.805384,502,'BJD');
calcDistanceAndAddToArray(-32.010739,115.926489,503,'BJD');
calcDistanceAndAddToArray(-35.015762,117.876640,504,'BJD');
calcDistanceAndAddToArray(-32.154902,116.013439,505,'BJD');
calcDistanceAndAddToArray(-31.865365,115.806405,506,'BJD');
calcDistanceAndAddToArray(-33.329700,115.642000,507,'BJD');
calcDistanceAndAddToArray(-31.982118,115.777819,508,'BJD');
calcDistanceAndAddToArray(-31.744896,115.763305,510,'BJD');
calcDistanceAndAddToArray(-20.733594,116.843564,512,'BJD');
calcDistanceAndAddToArray(-32.244083,115.816075,513,'BJD');
calcDistanceAndAddToArray(-32.516590,115.748580,514,'BJD');
calcDistanceAndAddToArray(-31.891900,116.016000,515,'BJD');
calcDistanceAndAddToArray(-31.903410,115.903090,516,'BJD');
calcDistanceAndAddToArray(-31.940700,115.864000,518,'BJD');
calcDistanceAndAddToArray(-32.277000,115.749000,519,'BJD');
calcDistanceAndAddToArray(-31.972065,115.896741,520,'BJD');
calcDistanceAndAddToArray(-31.686664,115.715173,521,'BJD');
calcDistanceAndAddToArray(-41.448967,147.140442,905,'BJD');
calcDistanceAndAddToArray(-34.208000,142.138000,907,'BJD');
calcDistanceAndAddToArray(-37.557900,143.855000,914,'BJD');
calcDistanceAndAddToArray(-41.176200,146.360000,915,'BJD');
calcDistanceAndAddToArray(-42.879280,147.317291,916,'BJD');
calcDistanceAndAddToArray(-42.840600,147.290000,917,'BJD');
calcDistanceAndAddToArray(-33.834599,151.035831,934,'JFA');
calcDistanceAndAddToArray(-35.192760,138.479470,935,'BJD');
calcDistanceAndAddToArray(-37.774661,144.885448,937,'BJD');
calcDistanceAndAddToArray(-34.633460,148.032558,938,'JFA');
calcDistanceAndAddToArray(-31.079679,152.839103,939,'JFA');
					    // sort the array by the distance on ascending order by calling the sort method with a parameter 
					    //the parameter is a function name 'sortByDistance' which compares two items in the array. the parameteres to the function sortByDistance is automatically passed in by javascript
					    distancesArray.sort(sortByDistance);
					    
					    // use this section if  map is to be restricted where if the 
					    // current searched location is more than 100km far from the sorted distances array
//					    if(distancesArray[0]['distance'] > 100)
//					    {
//					        document.getElementById('map_canvas').innerHTML = '';
//					        alert("sorry, can't find a bobjane dealer for that postcode.");
//					        return false;
//					    }
    					
					    //create bounds for the map for the given postcode and extend on the map
					    var bounds = new GLatLngBounds();
					    bounds.extend(currViewPcode);
    				
                        var baseIcon = new GIcon(G_DEFAULT_ICON);
				        baseIcon.image = 'images/bjGIcon.png';
				        baseIcon.iconSize = new GSize(28, 40);
				        baseIcon.iconAnchor = new GPoint(4, 39);
					
				        baseIcon.shadow = "images/bjGIcon_shadow.png";
				        baseIcon.shadowSize = new GSize(40, 39);
				        baseIcon.infoShadowAnchor = new GPoint(5, 30);
				        
				        var jfdIcon = new GIcon(G_DEFAULT_ICON);
				        jfdIcon.image = 'images/jfGIcon.png';
				        jfdIcon.iconSize = new GSize(28, 40);
				        jfdIcon.iconAnchor = new GPoint(4, 39);

				        jfdIcon.shadow = "images/jfGIcon_shadow.png";
				        jfdIcon.shadowSize = new GSize(40, 39);
				        jfdIcon.infoShadowAnchor = new GPoint(5, 30);

					    for(var i = 0; i < distancesArray.length; i++ )
					    {
						    //create a point object using lat and long passed in
						    var point = new GLatLng(distancesArray[i]['lat'], distancesArray[i]['lng']);
						    						    
                            // Set up our GMarkerOptions object
					        if (distancesArray[i]['outlettype'] == 'JFA')
					            markerOptions = { icon: jfdIcon };
					        else
					            markerOptions = { icon: baseIcon };

                            var marker = new GMarker(point, markerOptions);
    						
					        if (i == 0) {
					            //display dealer one
					            ajaxpage('ajaxserv-getdealer?DealerID=' + distancesArray[i]['dealerid'], 'dealerone', false);
					        }

					        if (i == 1) {
					            //display dealer two
					            ajaxpage('ajaxserv-getdealer?DealerID=' + distancesArray[i]['dealerid'], 'dealertwo', false);
					        }

					        if (i == 2) {
					            //display dealer thr
					            ajaxpage('ajaxserv-getdealer?DealerID=' + distancesArray[i]['dealerid'], 'dealerthr', false);
					        }
					        
					        if (i <= 2)
						    {
							    //expand the bounds of the map so that atleast first two  dealers in the array is displayed .. remember the first two dealers have the shortest distance from the given postcode
							    bounds.extend(point);
						    }
						    
						    var display = "Dealer Id - " + distancesArray[i]['dealerid'] + "Distance from postcode - " + distancesArray[i]['distance'];
 						    addevent(marker, distancesArray[i]);   
                            map.addOverlay(marker);

					    }
    					
					    map.setZoom(map.getBoundsZoomLevel(bounds));
					    map.setCenter(bounds.getCenter());
    											
					    //reset the array counter just for fun
					    n = 0;
				    }
			    });
		    }
	    }
	    else
	    {
	        alert('Browser Incompatible');
	    }
}

function addevent(marker, display)
{
	GEvent.addListener(marker, "click", function() { 
        ajaxpage('ajaxserv-getdealer?DealerID=' + display['dealerid'], 'dealerlst', false);
	});
}

function calcDistanceAndAddToArray(d_lat, d_lng, d_id, outlet_type )
{
	//create a point object using lat and long passed in
	var point = new GLatLng(d_lat, d_lng);
	// add dealerid and distance as a object in to the array
	distancesArray[n++] = {dealerid:d_id, distance:(point.distanceFrom(currViewPcode)/1000), lat:d_lat, lng:d_lng, outlettype: outlet_type};
}

function sortByDistance(a, b) 
{
	var x = a.distance;
	var y = b.distance;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}