	var dataWin2;
	var label = "";
	var style ="stroke:black;stroke-width:0.0001;fill:black;fill-opacity:0";
	var offset = 0.05;

	// must be calculated from viewbox to w x h
	var x0 = 0;
	var y0 = 0;
	var vboxW = 0;
	var vboxH = 0;
	var svgW = 0;
	var svgH = 0;
	var sz = 0.25;
	var zoom = 1.0;

	var currentover = null;
	var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	var path;
	var svgdoc;
	var ctm0;

	var X;
	var Y;

	function on_load(e){
	   	svgdoc = e.getTarget().getOwnerDocument();
		svgroot = svgdoc.getDocumentElement();
		currentover = svgdoc.getElementById("canvas;");
		//initialize cursor parameters
		var vbox = (svgroot.getAttribute("viewBox")).split(' ');
		x0 = parseFloat(vbox[0]);
		y0 = parseFloat(vbox[1]);
		vboxW = parseFloat(vbox[2]);
		vboxH = parseFloat(vbox[3]);
		svgW = parseFloat(svgroot.getAttribute("width"));
		svgH = parseFloat(svgroot.getAttribute("height"));
		if (vboxW>vboxH) sz = (vboxW/70);
		else sz = vboxH/50.0;
		offset = sz;

		// initialize label text
		var data = svgdoc.createTextNode("");
		var text = svgdoc.createElement("text");
		text.setAttribute("transform","translate("+ x0 + "," + (y0+50000) + ") scale(" + 1.0/zoom + ")");
		text.setAttribute("style", "stroke:white;stroke-width:0.0001;fill:white;font-size:"+sz+";font-family:arial;");
		text.setAttribute("id", "label");
		text.setAttribute("pointer-events","none");
		text.appendChild(data);
		svgroot.appendChild(text);
		//alert(printNode(text));

	}

	function onZoom() {
		zoom = svgroot.currentScale;
	}

	function DoOnMouseMove(e) {
		X = x0 + (e.getClientX() - svgroot.currentTranslate.x)*(vboxW/(svgW*svgroot.currentScale));
      	Y = y0 - offset/zoom + (e.getClientY() - svgroot.currentTranslate.y)*(vboxH/(svgH*svgroot.currentScale));

		label =  svgdoc.getElementById("label");
		if (zoom!=1.0) label.setAttribute("transform","translate("+ X + "," + Y + ") scale(" + 2.0/zoom + ")");
		else label.setAttribute("transform","translate("+ X + "," + Y + ") scale(1.5)");
		//top.layerfr.document.getElementById("coord").firstChild.nodeValue = Math.round(X)+","+Math.round(Y);
		svgdoc.getElementById("coord").firstChild.nodeValue = Math.round(X)+","+Math.round(Y);

	}

	// mouse_over
	function d(e) {
	  if ((top.viewfr.isLoaded)) {
		var id = e.currentTarget.id;
		currentover = e.currentTarget;
		label =  svgdoc.getElementById("label");

		if (currentover.getAttribute("name")) {
			label.getFirstChild().setData(currentover.getAttribute("name"));
			var svgstyle = currentover.getStyle();
			style = svgstyle.cssText;
			var fill = svgstyle.getPropertyValue('fill');
			if (fill=="red")  svgstyle.setProperty('fill','yellow');
			else svgstyle.setProperty('fill','red');
			svgstyle.setProperty('fill-opacity','0.5');	
			
		}
		else if (id!="") {
			label.getFirstChild().setData(id);
			
			var svgstyle = currentover.getStyle();
			style = svgstyle.cssText;
			var fill = svgstyle.getPropertyValue('fill');
			if (fill=="red")  svgstyle.setProperty('fill','yellow');
			else svgstyle.setProperty('fill','red');
			svgstyle.setProperty('fill-opacity','0.5');	
		}
	  }
	}

	//mouse_out
	function e(e) {
	  if ((top.viewfr.isLoaded)&&(currentover)) {
		//rollover label off
		var label =  svgdoc.getElementById("label");
		label.getFirstChild().setData(" ");

		if (currentover.id != "") {
			currentover.setAttribute("style",style);
			currentover = null;	
		}
	  }		
	}


function clicker(evt) {
  if ((evt.getButton()==0)&&(top.viewfr.isLoaded)) {// left mouse button
    if (currentover) { // no shift key
	// calaculate Longitude Latitude
	var sat;
	if (top.map.indexOf("goes8")!=-1) sat = "goes8";
	else if (top.map.indexOf("goes9")!=-1) sat = "goes9";
	else if (top.map.indexOf("goes10")!=-1) sat = "goes10";
	else if (top.map.indexOf("gms")!=-1) sat = "gms";
	else if (top.map.indexOf("meteosat")!=-1) sat = "meteosat";

	top.layerfr.coordForm.coord.value = inverseProjection(X,Y,sat);

/* link to more detailed maps
	if (currentover.parentNode.id == "WORLD") {
	  var name = currentover.id;
	  path = "/geotech/svg-weather2/svg/" + name + ".svgz";
	  xmlhttp.Open("GET", "/geotech/servlet/FileExists?path="+path, false);
   	  xmlhttp.onreadystatechange=changeViewfr;
   	  xmlhttp.Send(null);
	}
      else if (currentover.id != "") {
	  path = "/geotech/svg-weather2/svg/" + currentover.id + ".svgz";
	  xmlhttp.Open("GET", "/geotech/servlet/FileExists?path="+path, false);
   	  xmlhttp.onreadystatechange=changeViewfr;
   	  xmlhttp.Send(null);
	}
*/
    }
  }
}

function changeViewfr() {
	//alert("Success = " + xmlhttp.readyState + " type: " + xmlhttp.getResponseHeader("Content-Type"));
	if (xmlhttp.readyState==4) {
	  var content = xmlhttp.responseText;
	  //alert(content+"  "+path);
	  if (content.indexOf("true")>=0) {
		top.history[++top.loc] = path;
		top.viewfr.svgmap.src = path;
		top.viewfr.isLoaded = false;
		top.layerfr.location.replace(top.layerfr.location.href);
        }
	}
}

	//mouse click
	function c(e) {

	}

//test function
function inverseProjectionTest(a,b,z) {
      var x = 247.19409;
	var y = 222.48596;
	var Rad = 0.017453292519943;
	var GeoStationary = 500.0;
	var LX = -77.0;
	var LY = 39.0;
	var R = 6371.00;
	var P = GeoStationary/R + 1.0;

	var p = Math.sqrt(x*x+y*y);
	var c = Math.asin((P-Math.sqrt(1.0 - p*p*(P+1)/(R*R*(P-1.0))) ) / ((R*(P-1.0)/p) + (p/(R*(P-1.0)))));
	c = c/0.017453292519943;
 	//if ((P<0.0)&&(p>(R*(P-1.0)/P))) c = 180.0 - c;


	var laty = Math.asin(Math.cos(c*Rad)*Math.sin(LY*Rad)+(y*Math.sin(c*Rad)*Math.cos(LY*Rad)/p));
	laty = laty/Rad;

	var longx  = Math.atan(x*Math.sin(c*Rad)/((p*Math.cos(LY*Rad)*Math.cos(c*Rad)) - (y * Math.sin(LY*Rad)*Math.sin(c*Rad))));
	longx = LX + longx/Rad;

	return longx +","+laty;

}

function inverseProjection(x,y,sat) {
/*
GeoStationary = 35800000.0;
Goes8 = -74.669; radians = -1.303219899171623867
Goes9&10 = -135.209; radians = -2.359842228328973087
R  = 6378137.00; ; //GRS80 equatorial radius meters
P  = GeoStationary/R + 1.0  = 6.6129242755368848301627889146941

toRadians = 0.017453292519943

*/
	var Rad = Math.PI/180.0;	
	var GeoStationary = 35800.0;
	var LX;
	var LY = 0.0;
	if (sat=="goes8") LX = -74.669;
	else if (sat=="meteosat") LX = 0.0;
	else if (sat=="gms") LX = 140.0;
      else LX = -135.209;

	var R = 6378.1370;
	var P = GeoStationary/R + 1.0;
	x = x/1000.0;
	y = y/1000.0;
	var p = Math.sqrt(x*x+y*y);
	var c = Math.asin((P-Math.sqrt(1.0-p*p*(P+1)/(R*R*(P-1.0))) ) / ((R*(P-1.0)/p) + (p/(R*(P-1.0)))))/Rad;
 	if ((P<0.0)&&(p>(R*(P-1.0)/P))) c = 180.0 - c;
	var laty = -Math.asin(Math.cos(c*Rad)*Math.sin(LY*Rad)+(y*Math.sin(c*Rad)*Math.cos(LY*Rad)/p))/Rad;
	var longx  = LX + Math.atan(x*Math.sin(c*Rad)/((p*Math.cos(LY*Rad)*Math.cos(c*Rad)) - (y * Math.sin(LY*Rad)*Math.sin(c*Rad))))/Rad;

	return Math.round(longx*1000)/1000+","+Math.round(laty*1000)/1000;

}