/********************************************************************************************************
 *RESOLUTION INTERACTIVE MEDIA INC.																		*
 *560 Wellington Street, London, Ontario, Canada														*
 *Jonathan Kochis (jonathan@resolutionim.com)															*
 *Brendan Farr-Gaynor (brendan@resolutionim.com)														*
 *Owain Johnson (owain@resolutionim.com)																*
 *																										*
 ********************************************************************************************************
 *Date Last Modified: 12/20/06																			*
 *Last Modified By: brendan@resolutionim.com												 			*
 *																										*
 ********************************************************************************************************/
 
 
 
 // This script holds all global Google Maps functions 
 
    var map = null;
    var geocoder = null;
	var targetSchoolIcon = null;
	var targetSchoolLatArray = new Array();
	var targetSchoolLonArray = new Array();
	var targetSchoolIconArray = new Array();
	var targetSchoolAddressArray = new Array();
	var address = null; // Added for Owain's Dragable functions
	var openBubble = false;
	var provinceSearch = false;
	var targetProvLat = null;
	var targetProvLon = null;
	var targetProvZoom = 4;
	var closestDealer = null;

	targetSchoolLatArray[targetSchoolLatArray.length] = 'blank';
	targetSchoolLonArray[targetSchoolLonArray.length] =  'blank'; 
	targetSchoolIconArray[targetSchoolIconArray.length] = 'blank';
	targetSchoolAddressArray[targetSchoolAddressArray.length] = 'blank';
	
	var targetSearchLatArray = new Array();
	var targetSearchLonArray = new Array();
	var targetSearchIconArray = new Array();
	var targetSearchAddressArray = new Array();

	targetSearchLatArray[targetSchoolLatArray.length] = 'blank';
	targetSearchLonArray[targetSchoolLonArray.length] =  'blank'; 
	targetSearchIconArray[targetSchoolIconArray.length] = 'blank';
	targetSearchAddressArray[targetSchoolAddressArray.length] = 'blank';


function load() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		if(address != null) { geocoder = new GClientGeocoder(); }
		map.addControl(new GSmallMapControl());

		if(address != null) { 	
			var status = geocoder.getLocations(address, createMarker); 
			if(document.getElementById('RQvalPOSTYour_Zip_or_Postal_Code').value == '') { address = null; }
		}
		
		if(address == null) {
			for(dealerCount=1; dealerCount< targetSchoolLatArray.length; dealerCount++) {
				if(dealerCount == (closestDealer) && address != null) {
					openBubble = true; 
				}
				else { openBubble = false; }
				clickDealerMarker(dealerCount, openBubble);
			}
		}
	}
if(address == null) { map.setCenter(new GLatLng(57.4419, -112.1419), 2); }
if(targetProvLat && targetProvLon) { 
	map.setCenter(new GLatLng(targetProvLat, targetProvLon), targetProvZoom);
	//map.setCenter(new GLatLng(51.1242, -86.4404), 5);

}
//alert(targetProvLat+', '+targetProvLon);
}

function createMarker(response) {
var statusToSend = 'goodToGo';
//	alert('gets here CreateMarker\n'+response.Placemark[0]);
try{
	var place = response.Placemark[0];
	
	point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
	var marker = new GMarker(point);
//	map.addOverlay(marker);
//	map.setCenter(point, 13);
	document.getElementById('addressLat').value = place.Point.coordinates[1];
	document.getElementById('addressLon').value = place.Point.coordinates[0];

	for(dealerCount=1; dealerCount< targetSchoolLatArray.length; dealerCount++) {
		if(address != null) {
			distanceArray[dealerCount] = parseInt(getDistance(document.getElementById('addressLat').value,document.getElementById('addressLon').value, dealerCount));
		} else {
			distanceArray[dealerCount] = null;
		}
	}

var distanceArraySort = new Array();
	for(x=1; x< distanceArray.length;x++) {
		distanceArraySort[x] = distanceArray[x]; 
	}

var closestDistance = distanceArraySort.sort(sortDistances)[0];
	
	for(x=1; x< distanceArray.length;x++) {
//	alert(x+':'+distanceArray[x]+':'+closestDistance);
		if(distanceArray[x] == closestDistance) {	
			closestDealer = x; 
//alert('gets here 001');
		}
	}
//alert(closestDealer);
/********vv fix...  to be used later vv*******************
for(distKey in distanceArraySort) {
		if(dealerCount == (closestDealer) && address != null) {
			openBubble = dealerCount; 
			
		} else { 
			openBubble = false; 
		}
		clickDealerMarker(distKey, openBubble);
	}
********^^ fix...  to be used later ^^*******************/

/********vv this works for now vv*************/
for(dealerCount=1; dealerCount< distanceArray.length; dealerCount++) {
		if(dealerCount == (closestDealer) && address != null) {
			openBubble = dealerCount; 
		clickDealerMarker(dealerCount, openBubble);
			
		} else { 
			openBubble = false; 
//			clickDealerMarker(dealerCount, openBubble);
		}
	}
/********^^ this works for now ^^*************/
	closestDealerPoint = new GLatLng(targetSchoolLatArray[closestDealer], targetSchoolLonArray[closestDealer]);
	map.setCenter(closestDealerPoint, 13);
} catch(e) {
//	alert(e);
	statusToSend = 'error';
	document.getElementById('RQvalPOSTYour_Zip_or_Postal_Code').value = '';
	for(dealerCount=1; dealerCount< targetSchoolLatArray.length; dealerCount++) {
		if(dealerCount == (closestDealer) && address != null) {
			openBubble = true; 
		}
		else { openBubble = false; }
		clickDealerMarker(dealerCount, openBubble);
	}
//	throw e;
} finally {
//	alert('finally createMarker');
}

}



function clickDealerMarker(dealerCount, openBubbleArg) {
//	alert('gets here clickDealerMarker');
	thisPoint = new GLatLng(targetSchoolLatArray[dealerCount], targetSchoolLonArray[dealerCount]);
	map.setCenter(thisPoint, 3);
	
	var schoolIcon = new GIcon();
if(openBubbleArg && address != null) { 
		schoolIcon.image = '/fileBin/dealerLogos/closest.icon.png';
		schoolIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		schoolIcon.iconSize = new GSize(23, 38);
		schoolIcon.shadowSize = new GSize(37, 34);
		schoolIcon.iconAnchor = new GPoint(9, 34);
		schoolIcon.infoWindowAnchor = new GPoint(18, 25);
		
//alert('dealerDetails'+openBubbleArg);
//		document.getElementById('dealerDetails'+openBubbleArg).style.display = 'none';

document.getElementById('closestDealer').innerHTML = '<div  class="simpleBox" style="width:300px;"><div class="simpleBoxMainHeader"><h2>Closest Dealer to You!</h2><div class="simpleBoxHeaderCap"><div class="simpleBoxHeaderCapContent">&nbsp;<a onclick="Effect.toggle(\'giveMeABox963646603\', \'slide\'); toggleMyGiveMeABoxTog(\'myTogImg963646603\');"><img id="myTogImg963646603" src="/images/arrow1.gif" alt="expandContent" /></a></div></div> </div> <div id="giveMeABox963646603" style="display:block;" class="simpleBoxBodyMain"><div class="simpleBoxBodyMainCap">'+targetSchoolAddressArray[openBubbleArg]+'</div>';


/*document.getElementById('closestDealer').innerHTML = '<strong style=\"float:left; width:150px; padding:0px 0px 0px 100px;\">Closest Dealer to You!<br /></strong>'+targetSchoolAddressArray[openBubbleArg];
*/		document.getElementById('closestDealer').style.display = 'block';
	} else { 
//		if(targetSchoolIconArray[dealerCount] == null || targetSchoolIconArray[dealerCount] == '') {
			schoolIcon.image = '/fileBin/dealerLogos/default.icon.png';
		schoolIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		schoolIcon.iconSize = new GSize(23, 38);
		schoolIcon.shadowSize = new GSize(37, 34);
		schoolIcon.iconAnchor = new GPoint(9, 34);
		schoolIcon.infoWindowAnchor = new GPoint(18, 25);
//		} else {
//			schoolIcon.image = targetSchoolIconArray[dealerCount]; 
		//schoolIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		//schoolIcon.iconSize = new GSize(30, 20);
		//schoolIcon.shadowSize = new GSize(22, 20);
//		schoolIcon.iconAnchor = new GPoint(16, 10);
//		schoolIcon.infoWindowAnchor = new GPoint(5, 1);
//		}

	}
	///////
	var schoolMarker = new GMarker(thisPoint, schoolIcon);

var nearest = null;

	GEvent.addListener(schoolMarker, "click", function() {
		schoolMarker.openInfoWindowHtml(targetSchoolAddressArray[dealerCount]);
	});

	//	schoolMarker.openInfoWindowHtml(targetSchoolAddressArray[i]);
	map.addOverlay(schoolMarker);

}


function getDistance(addressLat, addressLon, countArg) {
	var addressPoint = new GLatLng(addressLat, addressLon);
	var dealerPoint = new GLatLng(targetSchoolLatArray[countArg], targetSchoolLonArray[countArg]);
//alert(countArg+': '+addressPoint.distanceFrom(dealerPoint));
	return addressPoint.distanceFrom(dealerPoint);
}

function sortDistances(x,y) {
	return x - y;
}