function endMove() {
    setLink();
}
function endZoom(){
    setLink();
}

function setLink() {
    var theLinkElement=$('link');
    var data = "MClat="+escape(map.getCenter().lat())+
	"&MClng="+escape(map.getCenter().lng())+
	"&Zoom="+escape(map.getZoom())+
	"&Want="+escape(Want);
    theLinkElement.href=location.pathname+"?"+data;
    saveCookie("chargerview", data, 365);
}
function mapPanelResize()
{
    var sizes = Viewport();
    var windowHeight = sizes[1];
    var windowWidth = sizes[0];
    var f =document.getElementById("footer");
    var h =document.getElementById("header");
    var mapPanelDiv = $("map");

    if (f.innerHTML.length > 1) {
	var preferredHeight = ((windowHeight) - f.offsetHeight - (h.offsetTop + h.offsetHeight));
    } else {
	// but in IE7.. if footer div is empty, reports wrong offsetHeight (report height of next div)
	var preferredHeight = ((windowHeight) - (h.offsetTop + h.offsetHeight));
    }

    if ( isIPhone() ) {
	mapPanelDiv.style.height = "250px";
    } else if(preferredHeight < 300) {
	mapPanelDiv.style.height = "300px";
    } else {
	mapPanelDiv.style.height = preferredHeight + "px";
    }
    if (isIPhone()){
	mapPanelDiv.style.width = "400px";
    } else if(windowWidth < 300) {
	mapPanelDiv.style.width = "300px";
    } else {
        // Reserve 160 px for Right column
	mapPanelDiv.style.width = ((windowWidth) - 165)+"px";
    }
    if (map != null){
	map.checkResize();
    }
}
function TrimString(s) {
    // provide strip() functionality
    s = s.replace( /^\s+/g, "" );// strip leading
    return s.replace( /\s+$/g, "" );// strip trailing
}

function getArgs() {
    var args = new Object();
    var query = location.search.substring(1);
    var pairs = query.split("&");
    for(var i = 0; i < pairs.length; i++) {
	var pos = pairs[i].indexOf('=');
	if (pos == -1) continue;
	var argname = pairs[i].substring(0,pos);
	var value = pairs[i].substring(pos+1);
	args[argname] = unescape(value);
    }
    return args;
}
function getCookieArgs(c) {
    var args = new Object();
    var query = readCookie(c);
    if (query == null) return args;
    var pairs = query.split("&");
    for(var i = 0; i < pairs.length; i++) {
	var pos = pairs[i].indexOf('=');
	if (pos == -1) continue;
	var argname = pairs[i].substring(0,pos);
	var value = pairs[i].substring(pos+1);
	args[argname] = unescape(value);
    }
    return args;
}
function setGlobals() {
    // args is from URL
    // cookie if from cookie
    var l = LinkArgs;
    var c = CookieArgs;
    SiteID = ((l.SiteID) ? (l.SiteID) : "");
    TheAddress = ((l.Address) ? (l.Address) : "");
    
    MClat = ((l.MClat) ? parseFloat(l.MClat) : ((c.MClat) ? parseFloat(c.MClat) : 34.));
    MClng = ((l.MClng) ? parseFloat(l.MClng) : ((c.MClng) ? parseFloat(c.MClng) : -118.));
    Zoom  = ((l.Zoom) ?  parseInt(l.Zoom) : ((c.Zoom) ? parseInt(c.Zoom) : 10));
    var foo = l.Want;
    Want  = ((l.Want)  ? (l.Want) : ((c.Want) ? (c.Want) :"SPI LPI AVC OC TSL"));
}

function Round5(n){ return (Math.round(n * 100000))/100000 }; //Round to 5 decimals

var TheAddress = "";
var DefaultAddress = "Address or Zip code";
function updateTxt(eventType, obj) {
    switch (eventType){
    case 'onfocus':
	if (TheAddress == "") {
	    obj.value="";
	} 
	break;
    case 'onchange':
	TheAddress = obj.value;
	break;
    case 'onblur':
	TheAddress = obj.value;
	if (obj.value == "") {
	    obj.value = DefaultAddress;
	}
	break;
    }
    if (obj.value == DefaultAddress) {
	obj.style.color="grey";
    } else {
	obj.style.color="black";
    }
}

function showAddress(a) {
    geocoder = new GClientGeocoder();
    if (geocoder) {
	geocoder.getLatLng(a,
			   function(point) {
			       map.setCenter(point);
			   }
			   );
    }
}
