	function updateChangeLocation() {
		var locText="";
		for (var i=0;i<locations.length;i++) {
			locText += '<a href="javascript: selectCookieLocation('+i+'); hideChangeLocation();">'+locations[i]['text']+'</a>';
		}
		setDiv("myLocationSelector_cookies",locText,null,"block");
		setDiv("locSearchSugg","",null,'none');
	}

	function showChangeLocation() {
		updateChangeLocation();
		setDiv("divSearchBox",null,null,"none");
		setDiv("changeLocLink",null,null,"none");
		setDiv("myLocationSelector",null,null,"block");
	}

	function hideChangeLocation() {
//		setDiv("divSearchBox",null,null,"block");
//		setDiv("myLocationSelector",null,null,"none");
//		setDiv("changeLocLink",null,null,"inline");
		$('#myLocationSelector').slideUp(100);
	}

	function getLocationsFromCookies() {
		for (var i=0;i<MAX_MYLOCATIONS;i++) {
			var lat=getCookie("myLocation_"+i+"_lat");
			if (lat!=undefined) {
				locations[i] = [];
				locations[i]['lat']=lat;
				locations[i]['lng']=getCookie("myLocation_"+i+"_lng");
				locations[i]['text']=unescape(getCookie("myLocation_"+i+"_txt"));
			} else {
				break;
			}
		}
		return i;
	}

	function selectCookieLocation(idx) {
		if (locations.length>idx) {
			updateLocation(locations[idx]['lat'],locations[idx]['lng'],locations[idx]['text']);
		}
	}

	function getLocationArrayIndex(lat,lng,txt) {
		var idx=-1;
		for (var i=0;i<locations.length;i++) {
			if ((locations[i]['lat']==lat && locations[i]['lng']==lng) || (locations[i]['text']==txt && txt.match(/^\d+/))) {
				idx=i;
				break;
			}
		}
		return idx;
	}

	function addTopLocation(lat,lng,txt) {
		var idx=getLocationArrayIndex(lat,lng,txt);
		if (idx>=0) {
			for (var i=idx;i>0;i--) {
				locations[i]['lat']=locations[i-1]['lat'];
				locations[i]['lng']=locations[i-1]['lng'];
				locations[i]['text']=locations[i-1]['text'];
			}
		} else {	//doesn't exist - shift them all
			if (locations.length<MAX_MYLOCATIONS) {
				locations[locations.length] = [];
			}
			for (var i=locations.length-1;i>0;i--) {
				locations[i]['lat']=locations[i-1]['lat'];
				locations[i]['lng']=locations[i-1]['lng'];
				locations[i]['text']=locations[i-1]['text'];
			}
		}
		locations[0]['lat']=lat;
		locations[0]['lng']=lng;
		locations[0]['text']=txt;

		saveLocationCookies();
	}

	function saveLocationCookies() {
		for (var i=0;i<locations.length;i++) {
			setCookie("myLocation_"+i+"_lat",locations[i]['lat'],10000);
			setCookie("myLocation_"+i+"_lng",locations[i]['lng'],10000);
			setCookie("myLocation_"+i+"_txt",locations[i]['text'],10000);
		}
	}

	function getUpdatePositionByText(text) {
		text=jQuery.trim(text);
		if (text!="") {
			var geocoder = new google.maps.Geocoder();
			var latlng = new google.maps.LatLng(currPosLat,currPosLng);
			geocoder.geocode({'address': text}, function (results, status) {processGeoCodeAddressResults(results,status, text);});
		} else {
			alert("Please enter a valid location");
		}
	}

	function setLocation(lat,lng,text) {
		currPosLat=lat;
		currPosLng=lng;
		currPosText=text;

		//set cookies
		addTopLocation(currPosLat,currPosLng,currPosText);

		//set session
		setLocationSession(currPosLat,currPosLng,currPosText);
	}

	function updateLocation(lat,lng,text) {
		setLocation(lat,lng,text);
		getResults(0);
	}

	function processGeoCodeAddressResults(results,status,text) {
		if (status == google.maps.GeocoderStatus.OK) {
			for (var i=results.length-1;i>=0;i--) {
				for (var j=results.length-2;j>=0;j--) {
					if (results[j].formatted_address==results[i].formatted_address) {
						results.splice(i,1);
						break;
					}
				}
			}
			if (results.length==1) {
				setLocation(results[0].geometry.location.lat(),results[0].geometry.location.lng(),text);
				hideChangeLocation();
				getResults(0);
			} else {
				var msg="Please select the best match for your seach below:";
				for (var i=0;i<results.length;i++) {
					//msg+= i+":"+results[i].formatted_address+"\n";
					msg+= '<a href="#" onClick="setLocation('+results[i].geometry.location.lat()+','+results[i].geometry.location.lng()+',\''+results[i].formatted_address+'\');hideChangeLocation();getResults(0);">'+results[i].formatted_address+'</a>';
				}
				setDiv("locSearchSugg",msg,null,'block');
			}
		} else {
			alert('An error occurred in changing your location.  Please try again.');
		}
	}

	function getUpdatePosition(position) {
		currPosLat = position.coords.latitude;
		currPosLng = position.coords.longitude;
		var geocoder = new google.maps.Geocoder();
		var latlng = new google.maps.LatLng(currPosLat,currPosLng);
		geocoder.geocode({'latLng': latlng}, function (results, status) {updateAddressFromRevGeo(results,status);});
		getResults(0);
	}
	
	function updateAddressFromRevGeo(results,status) {
		var address=currPosLat+','+currPosLng;
		if (status == google.maps.GeocoderStatus.OK) {
			address = results[0].formatted_address.replace(/\s?\d{5}?\s?,?\s?(USA)?(United States)?\s?$/, '');
		}
		currPosText=address;

		//set cookies
		addTopLocation(currPosLat,currPosLng,currPosText);

		//set session
		setLocationSession(currPosLat,currPosLng,currPosText);
	}

	function setLocationSession(lat,lng,text) {
		var path = rootpath + '/ajax/ajax_location.php';
		var qstring='type=setLocationSession&lat='+encodeURIComponent(lat)+'&lng='+encodeURIComponent(lng)+'&text='+encodeURIComponent(text);
		ajaxQ.setResultsFunction('callfunction','handleLocSessionResult(ajaxResponseText);','json');
		ajaxQ.setLoadOb(null,'<img src="images/loading.gif">','overwrite');
		ajaxQ.addRequest('post',path,qstring);
	}

	function handleLocSessionResult(json) {
		if (json['success']=='true' || json['success']==true) {
			$('#currentLocation').text(currPosText);
		}
	}

	function handleGetCurrPosError(positionError) {
		//alert('Attempt to get location failed: ' + positionError.message);
	}
			
	function deleteLocationCookies() {
		for (var i=0;i<MAX_MYLOCATIONS;i++) {
			removeCookie("myLocation_"+i+"_lat");
			removeCookie("myLocation_"+i+"_lng");
			removeCookie("myLocation_"+i+"_txt");
		}
		getLocationsFromCookies();
	}

	function getLocationFromBrowser() {
		var gl;
		try {
			if (typeof(navigator.geolocation) == 'undefined'){
//				gl = google.gears.factory.create('beta.geolocation');
			} else {
				gl = navigator.geolocation;
			}
		} catch(e) {}
		if (gl) {
			gl.getCurrentPosition(getUpdatePosition, handleGetCurrPosError);
		}
	}

