function parseCRSnew(xml){
var crs=xml.getElementsByTagName('crs');
for(var r=0;r<crs.length;r++){
var name="err";
var acrs=parent.crs[r];
for(var i=0;i<acrs.childNodes.length;i++){
var nn=acrs.childNodes[i].nodeName;
if(nn=="gml:ProjectedCRS"||"gml:EngineeringCRS"){
name=acrs.childNodes[i].getAttribute("gml:id");
}
}
if(name!="err"){
crscache[name]=acrs;
}
}
}
function saveCRSCache(){
if(!standalone||typeof ActiveXObject=="undefined")return;
var ch=confirm("Do you wish to save cached information");
if(ch){
var fso=new ActiveXObject("Scripting.FileSystemObject");
var out=
"var d = \"degrees\";\r\nvar m = \"meters\";\r\nvar f=\"feet\";\r\nvar gm =  new CRS(\"Geographic\",d);\r\n";
for(cra in crs){
var ci=parent.crs[cra];
var muom=ci.uom.substring(0,1);
if(ci.title!="Geographic"||muom!="d"){
out+="parent.crs[\""+cra+"\"] = new CRS(\""+ci.title+"\","+muom+");\r\n";
}
else{
out+="parent.crs[\""+cra+"\"] = gm;"
}
}
var g=fso.CreateTextFile("crs.js",true);
g.write(out);
g.Close();
}
}
function loadCRSCache(url){
if(!standalone||typeof ActiveXObject=="undefined")return;
if(!url){
url="crscache.xml";
}
var crsreq;
/*@cc_on @*/
/*@if(@_jscript_version>=5)
try{
crsreq=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
crsreq=new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
crsreq=false;
}
}
@end @*/
crsreq.open("GET",url,true);
crsreq.onreadystatechange=function(){
switch(crsreq.readyState){
case 4:
setStatus(finished+" CRS cache now loading");
var response=crsreq.responseText;
if(typeof XMLHttpRequest=='undefined'){
var crsDoc=new ActiveXObject("Microsoft.XMLDOM");
crsDoc.async="false";
var crsresp=crsreq.responseText;
crsDoc.validateOnParse=false;
crsDoc.loadXML(crsresp);
if(crsDoc.parseError.errorCode){
alert("Cache failed to load!\n"+crsDoc.parseError.reason+" line:"+crsDoc.parseError.line);
}
else{
parseCRSnew(crsDoc);
}
}
break;
case 3:
setStatus(receiving+" CRS cache");
break;
case 2:
setStatus(waiting+" for CRS cache");
break;
case 1:setStatus("Requesting CRS cache @ "+url);
}
};
setStatus(sending+"CRS load");
crsreq.send(null)
}
function saveIni(){
if(!standalone)return;
if(typeof setStatus!="undefined")setStatus("Saving Settings");
var here="ini2.js";
if(!top.widget){
var ap=unescape(window.parent.location.pathname).substring(0,unescape(window.parent.location.pathname).lastIndexOf("\\"));
here=ap+"\\"+here;
}
var js="";
if(typeof PublishDirectory=="undefined"||!PublishDirectory){
PublishDirectory="http://www.microimages.com/ogc/ogcclient/";
}
if(typeof wfsregistry=="undefined"||!wfsregistry){
if(top.standalone)wfsregistry="services_wfs.xml";
else wfsregistry="http://www.microimages.com/ogc/services_wfs.xml";
}
js+="wfsregistry=\""+wfsregistry+"\";\n";
if(typeof wmsregistry=="undefined"||!wmsregistry){
if(top.standalone)wmsregistry="services.xml";
else wmsregistry="http://www.microimages.com/ogc/services.xml";
}
js+="wmsregistry=\""+wmsregistry+"\";\n";
if(typeof worldwinddir=="undefined"){
worldwinddir="C:\\Program Files\\NASA\\World Wind 1.4\\Config\\Earth";
}
js+="worldwinddir=\""+Slash(worldwinddir)+"\";\n";
if(typeof loadlastcontext=="undefined"||typeof loadregistry=="undefined"){
loadlastcontext=false;
loadcapabilities=true;
loadregistry=false;
}
js+="loadlastcontext="+loadlastcontext+";\n";
js+="loadcapabilities="+loadcapabilities+";\n";
js+="loadregistry="+loadregistry+";\n";
js+="hideLegends="+hideLegends+";\n";
js+="noLegend="+noLegend+";\n";
js+="hideOverview="+hideOverview+";\n";
js+="showAbstracts="+showAbstracts+";\n";
js+="activeMetrics="+activeMetrics+";\n";
js+="reuseTipWindow="+reuseTipWindow+";\n";
js+="startMode=\""+startMode+"\";\n";
if(typeof maxWidth=="undefined")maxWidth=800;
if(typeof maxHeight=="undefined")maxHeight=600;
js+="maxHeight="+maxHeight+";\n";
js+="maxWidth="+maxWidth+";\n";
js+="highlightOn="+highlightOn+";\n";
js+="maintainScale="+alwaysMaintainScale+";\n";
if(typeof gmaptype=="undefined"){
gmaptype=1;
}
js+="gmaptype="+gmaptype+";\n";
if(typeof gmapshowoverlays=="undefined"){
gmapshowoverlays=false;
}
js+="gmapshowoverlays="+gmapshowoverlays+";\n";
if(typeof builderheight=="undefined"){
builderheight=343;
builderwidth=753;
}
js+="usejustgoogle="+usejustgoogle+";\n";
js+="builderheight=\""+builderheight+"\";\n";
js+="builderwidth=\""+builderwidth+"\";\n";
js+="autoupdate="+autoupdate+";\n";
js+="useemptyge="+useemptyge+";\n";
if(typeof overridegetmapurl=="undefined")overridegetmapurl=false;
js+="overridegetmapurl="+overridegetmapurl+";\n";
js+="lastusedtab=\""+lastusedtab+"\";\n";
if(typeof olSettings=="undefined"){
olSettings=
{
"panzoombar":true,
"layerswitcher":true,
"history":true,
"coords":true,
"overview":true,
"toolbar":true,
"geosearch":true,
"infotip":true,
"untiled":true
};
}
js+="olSettings = { \"panzoombar\" : "+olSettings.panzoombar;
js+=", \"layerswitcher\" : "+olSettings.layerswitcher;
js+=", \"history\":true, \"coords\": "+olSettings.coords;
js+=", \"overview\":"+olSettings.overview+", \"toolbar\":"+olSettings.toolbar;
js+=", \"geosearch\":"+olSettings.geosearch+", \"infotip\":"+olSettings.infotip;
js+=", \"untiled\":"+olSettings.untiled+"};";
saveLocalFile(here,js,"Settings");
}
function saveLocalFile(fpath,data){
if(typeof ActiveXObject!="undefined"){
fso=new ActiveXObject("Scripting.FileSystemObject");
if(fso.FileExists(fpath)){
var f=fso.GetFile(fpath);
if(f.attributes&1){
f.attributes=f.attributes-1;
}
fso.DeleteFile(fpath);
}
var f=fso.CreateTextFile(fpath,true);
f.write(data);
f.Close();
}
else{
if(top.widget){
var com;
if(fpath.indexOf('$')!=-1){
fpath=thisWidget+"/"+fpath;
}
com="/usr/bin/perl write.pl \""+fpath+"\" '"+escape(data)+"'";
top.widget.system(com,null);
}
}
}
function exec(command,parm1,parm2){
window.oldOnError=window.onerror;
window.onerror=function(){
if(event.indexOf('utomation')!=-1){
alert('command execution of '+window._command+' disallowed by user.');
return true;
}
else{
return false;
}
};
window._command=command;
var wsh=new ActiveXObject('WScript.Shell');
if(wsh){
if(typeof parm1!="undefined"){
wsh.Run(command,parm1,parm2);
}
else{
wsh.Run(command);
}
}
window.onerror=window.oldOnError;
}
function isLocal(url){
var nurl=url.replace("http://","");
var lh=localhost.replace("http://","");
var nsplit=nurl.split("/");
var lsplit=lh.split("/");
if(lsplit[0]==nsplit[0]){
return true;
}
}
var serverInfoList=[];
var newservices="New layers available for selection in services panel.";
var mostrecentregistry="Web Map Service Lists";
var webfeatureservicelists="Web Feature Service Lists";
var mostrecentview="Most Recent View";
var usewebserv=
"Use Web Map Services or Favorites tab to select your layers. When your layer list is complete, launch them in a viewer using icons at the lower right.";
var uselocserv=
"Use Web Map Services or Favorites tab to the left to select layer(s) to use in the viewer's small reference view.";
var saveinfaves;
var hideOverview;
var includeBuilderLink=false;
var validateLegendSize=true;
var opaqueLast=true;
var olUntiled;
var doSettings=false;
var textLegend;
var duoLegend=true;
var noLegend;
var errorOnWCTS=false;
var mapbkg="FFFFFF";
var highlightOn=false;
var alwaysMaintainScale=true;
var coordsDisabled=true;
var useModeRotatorIcon=false;
var startMode="zoomin";
var reuseTipWindow=true;
var activeMetrics=0;
var savingLocal=false;
var showCompass=false;
var notilekml=true;
var kmlrefresh;
var legendDir;
var useMaximumTileSize=false;
var do3d=false;
var selectedLayer=-1;
var ovSelectedLayer=-1;
var activeList="";
var uom="m";
var ovPorportion=0.35;
var leafbg="cyan";
var wmsurl;
var locurl;
var isTNT=false;
var locator="";
var locstart;
var hideLegends=false;
var filterLayers=true;
var useLocatorExtents=false;
var showAbstracts;
var inidirty=false;
var manualExtents;
var Assume24bitPNGs=true;
var locatorTargetsMain=true;
var serverName;
var choiceList=[];
var srsList=[];
var GoogleFriendly;
var gmapfriendly;
var gmaptype;
var autoOpenGroups=true;
var layerDepth=0;
var serverMaxWidth;
var serverMaxHeight;
var distort=false;
var maxscaledenom;
var minscaledenom;
var maxscale=[];
var minscale=[];
var isWFS;
var viewTitle="TNTmap - Current View";
var corp="MicroImages";
var legendImages=[];
var Abstracts=[];
var bkg=[];
var openState=[];
var getcapcache=[];
var wmsversion="";
var defaultVersion="1.1.1";
var serverList=[];
var infoRequests;
var hyperRequests;
var getmapurl="";
var localhost;
var infourl="";
var infotype="";
var legendcode="";
var PublishDirectory;
var layernum=0;
var Format="";
var filter="";
var defaultInfo=-1;
var defaultFormat=-1;
var formats=[];
var info_formats=[];
var boundsalreadyset=false;
var map;
var legends=[];
var maxHeight;
var maxWidth;
var maxlegheight;
var maxlegwidth;
var imageHeight;
var imageWidth;
var CRSnames=[];
var minx=-180;
var maxx=180;
var miny=-90;
var maxy=90;
var compositeLayers=false;
var layerList=[];
var overviewList=[];
var tipstring;
var relief;
var opacity=1.0;
var targetHome;
var home="BBOX=-180,-90,180,90";
var latlonnorth=0;
var latlonsouth=0;
var latloneast=0;
var latlonwest=0;
var autoresize=true;
var lastbounds;
var lastactive;
var ua=navigator.userAgent.toLowerCase();
var isSafari=false;
var giveChoice=false;
if(ua.indexOf('safari')!=-1){
isSafari=true;
}
function ServerInfo(url,refname){
this.url=url;
this.refName=refname;
this.name=serverName;
this.queryURL="";
this.getmapURL="";
this.srsList=[];
this.isTNT=isTNT;
this.version=wmsversion;
this.maxHeight=256;
this.maxWidth=256;
this.formats=[];
this.infoformats=[];
this.treeobj=null;
this.legendImages=[];
}
function inListOfLayers(url){
for(var i=0;i<serverInfoList.length;i++){
if(serverInfoList[i].url==url){
toggleId(i);
return i;
}
}
return -1;
}
var xmlhttp;
/*@cc_on @*/
/*@if(@_jscript_version>=5)
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp=false;
}
}
@end @*/
var xmlDoc;
if(typeof ActiveXObject=='undefined'){
xmlhttp=new XMLHttpRequest();
}
else{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
function getStyle(sn){
var selid="style_"+validate(sn);
var win;
var sel=document.getElementById(selid);
return sel;
}
function getDimensin(sn,n){
var dimid="dimin_"+validate(sn)+"_"+n;
return(document.getElementById(dimid));
}
function getDimensel(sn,n){
var dimid="dimsel_"+validate(sn)+"_"+n;
return(document.getElementById(dimid));
}
var choiceServers=[];
function inChoices(url){
for(var i=0;i<choiceServers.length;i++){
if(choiceServers[i].url==url||choiceServers[i].getmapURL==url){
return i;
}
}
return -1;
}
function Layer(hy,name,u,t,f,lURL,lh,lw,queryable,styles,n,e,s,w,li,abst,maxw,maxh,parens,leaves,
style){
this.hyperindexed=hy;
this.name=name;
this.compositeName=false;
if(typeof u=="undefined"){
u=getmapurl;
}
this.title=t;
this.isFeature=false;
this.usedExtents=false;
this.url=u;
if(styles){
this.styles=styles;
}
else{
this.styles=[];
}
if(style){
this.style=style;
}
else{
this.style=0;
}
this.groupDesc="";
this.groupTitle="";
this.depth=layerDepth;
this.north=n;
this.south=s;
this.east=e;
this.west=w;
this.description=abst;
this.maxw=maxw;
this.maxh=maxh;
this.bounds=[];
this.parens=parens;
this.leaves=leaves;
this.inOverview=false;
this.inLayers=false;
if(queryable){
this.queryURL=infourl;
this.infotype=infotype;
}
else{
this.queryURL="";
}
this.queryable=queryable;
this.version=wmsversion;
this.legendURL=lURL;
this.legheight=lh;
this.legwidth=lw;
this.filter=filter;
this.relief=relief;
this.opacity=opacity;
this.format=defaultFormat;
this.formats=formats;
this.infoformat=defaultInfo;
this.infoformats=info_formats;
this.maxscale="";
this.minscale="";
this.li=li;
}
function Server(url){
this.url=url;
this.layers="";
this.querylayers="";
this.hyperlayers="";
}
function validate(str){
var r=str;
if(str){
var rg=/[ \.\\\/\:\-()]+/g;
r=str.replace(rg,"_");
}
return(r);
}
function getElementsByClass(className,doc){
var all=doc.all?doc.all:doc.getElementsByTagName('*');
var elements=[];
for(var e=0;e<all.length;e++){
if(all[e].className==className){
elements[elements.length]=all[e];
}
}
return elements;
}
function setHideLegends(hide){
hideLegends=hide;
if(hide){
vis="none";
}
else{
vis="inline";
}
var c=0;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var images=win.document.images;
for(var i=0;i<images.length;i++){
if(images[i].className=="legendimg"){
c++;
win.document.images[i].style.display=vis;
}
}
saveIni();
}
function setShowAbstracts(show){
showAbstracts=show;
if(!Abstracts){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
Abstracts=getElementsByClass('abstract',win.document);
}
if(show){
vis="block";
}
else{
vis="none";
}
for(var i=0;i<Abstracts.length;i++){
Abstracts[i].style.display=vis;
}
}
function setSRS(lSRS,explicit){
var srsname;
SRS=lSRS;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var srsout=win.document.getElementById('activeSRS');
if(lSRS=="EPSG:4326"||lSRS=="CRS:84"){
uom="degrees";
srsname="WGS84 / Geographic";
if(srsout){
srsout.innerHTML=srsname;
}
}
var sc=lSRS.replace(":","");
if(typeof parent.crs[sc]!="undefined"){
srsname=parent.crs[sc].title;
uom=parent.crs[sc].uom;
if(srsout){
srsout.innerHTML=parent.crs[sc].title;
}
}
else{
uom="au";
srsname="";
if(srsout){
srsout.innerHTML=lSRS;
}
try{
DescribeCRS(null,lSRS,true);
}
catch(e){
}
}
SRS=lSRS;
boundsalreadyset=true;
}
function setMinX(v){
minx=v;
onchangebounds('manual');
}
function setMinY(v){
miny=v;
onchangebounds('manual');
}
function setMaxX(v){
maxx=v;
onchangebounds('manual');
}
function setMaxY(v){
maxy=v;
onchangebounds('manual');
}
function downLayerL(ln,url,layerStyle,list){
var newlist=[];
var layerfound=false;
var append=true;
var dList;
var i;
if(list=='ov'){
dList=overviewList;
}
else{
dList=layerList;
}
var end=dList[dList.length-1];
if(end.name==ln&&end.url==url&&end.style==layerStyle){
newlist.push(dList[dList.length-1]);
for(i=0;i<dList.length-1;i++){
newlist.push(dList[i]);
}
}
else{
for(i=0;i<dList.length;i++){
if(layerfound){
newlist.push(dList[i]);
newlist.push(dList[i-1]);
layerfound=false;
}
else{
if(dList[i].name==ln&&dList[i].url==url&&dList[i].style==layerStyle){
layerfound=true;
}
else{
newlist.push(dList[i]);
}
}
}
}
if(list=='ov'){
overviewList=newlist;
}
else{
layerList=newlist;
}
}
function resolveAllParents(evt){
try{
if(choiceList.length){
var leaves=choiceList[1].leaves;
var kids=leaves.split(' ');
var tested=[];
for(i=0;i<kids.length;i++){
var item=kids[i];
if(kids[i]){
var prevstate;
if(choiceList[item]){
if(activeList=="ov"){
prevstate=choiceList[item].inOverview;
}
else{
prevstate=choiceList[item].inList;
}
var myid="LB_"+item;
SetElemChosen(myid,prevstate);
var p=choiceList[kids[i]].parens;
var already=false;
for(var k=0;k<tested.length;k++){
if(p==tested[k]){
already=true;
}
}
}
if(!already){
testParentState(p);
tested.push(p);
}
}
}
}
}
catch(err){
setStatus("Error Resolving Layers");
alert(err.message);
}
}
function clearCRS(){
SRS=minx=maxx=miny=maxy='undefined';
}
function clearLayers(list,ln,url,layerStyle){
var doall=false;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(!ln){
doall=true;
if(list!="ov"){
boundsalreadyset=false;
}
clearUsedExtents();
var m=win.ogcmaps.loc;
if(win.ogcmaps.loc.home!=win.ogcmaps.loc.latestupdate){
win.ogcmaps.loc.goHome();
}
}
var dList;
if(list=='ov'){
dList=overviewList;
if(doall){
ovSelectedLayer=-1;
}
else{
ovSelectedLayer--;
}
}
else{
dList=layerList;
if(doall){
selectedLayer=-1;
}
else{
ovSelectedLayer--;
}
}
var myList=[];
if(!doall||highlightOn){
for(var i=0;i<dList.length;i++){
if(doall||(dList[i].name==ln&&dList[i].url==url)){
if(getmapurl==dList[i].url){
var removed=dList[i].li;
if(removed&&typeof removed!="undefined"){
var indx=parseInt(removed.substring(3));
SelectChildren(null,indx,false);
if(highlightOn){
var elem=win.document.getElementById(removed);
if(elem){
bkg[parseInt(removed.substring(3))]="";
elem.style.background="";
}
}
}
}
}
else{
myList[myList.length]=dList[i];
}
}
}
if(!doall&&myList.length){
if(list=='ov'){
overviewList=myList;
}
else{
layerList=myList;
var bb=computeBounds();
setExtentsFromBounds(bb);
}
}
else{
if(list=='ov'){
overviewList=[];
}
else{
layerList=[];
clearCRS();
}
}
}
function delLayer(n,list){
var dList;
if(list=='ov'){
dList=overviewList;
}
else{
dList=layerList;
}
if(dList.length<1){
return;
}
if((n<0)||(n>dList.length-1)){
return;
}
clearLayers(list,dList[n].name,dList[n].url,dList[n].style);
if(list=='ov'){
if(ovSelectedLayer>overviewList.length-1){
ovSelectedLayer--;
}
}
else{
if(selectedLayer>layerList.length-1){
selectedLayer--;
}
}
writeLayers(list);
}
function downLayer(num,list){
var dList;
if(list=='ov'){
dList=overviewList;
}
else{
dList=layerList;
}
if(dList.length&&num>-1){
if(num>dList.length-1)num=dList.length-1;
var l=dList[num];
downLayerL(l.name,l.url,l.style,list);
if(list=='ov'){
ovSelectedLayer++;
if(ovSelectedLayer>overviewList.length-1){
ovSelectedLayer=0;
}
}
else{
selectedLayer++;
if(selectedLayer>layerList.length-1){
selectedLayer=0;
}
}
writeLayers(list);
}
}
function upLayer(num,list){
if(num<0)return;
var l;
if(list=='ov'){
if(overviewList.length<1){
return;
}
l=overviewList[num];
overviewList.reverse();
downLayerL(l.name,l.url,l.style,list);
overviewList.reverse();
ovSelectedLayer--;
if(ovSelectedLayer<0){
ovSelectedLayer=ovSelectedLayer-1;
}
}
else{
if(layerList.length<1){
return;
}
l=layerList[num];
layerList.reverse();
downLayerL(l.name,l.url,l.style,list);
layerList.reverse();
selectedLayer--;
if(selectedLayer<0)selectedLayer=layerList.length-1;
}
writeLayers(list);
}
function changeSelected(n,list,turnon){
if(list=='ov'){
if(ovSelectedLayer!=n){
ovSelectedLayer=n;
}
else{
if(!turnon)ovSelectedLayer=-1;
}
}
else{
if(selectedLayer!=n){
selectedLayer=n;
}
else{
if(!turnon)selectedLayer=-1;
}
}
writeLayers(list);
}
function writeLayers(list,ext){
var dList;
var XHTML="";
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(list!='ov'){
dList=layerList;
}
else{
dList=overviewList;
}
var found=false;
if(lastusedtab!="favetab"){
if(list=='ov'){
if(typeof win.activeTab!="undefined"){
var st=win.document.getElementById('ovtab');
if(st){
win.activeTab(st,"ovZone");
}
}
else{
var zone=win.document.getElementById('ovZone');
if(zone){
zone.style.display="";
win.document.getElementById('mainZone').style.display="none";
win.document.getElementById('mvtab').className="current";
win.document.getElementById('ovtab').className="other";
}
}
}
else{
if(typeof win.activeTab!="undefined"){
var st=win.document.getElementById('mvtab');
if(st){
win.activeTab(st,"mainZone");
}
}
else{
var zone=win.document.getElementById('mainZone');
if(zone){
zone.style.display="";
win.document.getElementById('ovZone').style.display="none";
win.document.getElementById('ovtab').className="other";
win.document.getElementById('mvtab').className="current";
}
}
}
}
var t=275;
XHTML="";
for(var i=dList.length-1;i>=0;--i){
XHTML+="<tr ";
if(typeof dList[i].east!="undefined"&&typeof dList[i].west!="undefined"){
XHTML+="onmouseover=\"showBounds("+dList[i].west+","+dList[i].south+","+dList[i].east+","
+dList[i].north+");\"";
}
XHTML+="title=\""+dList[i].formats[dList[i].format]+"\" ";
if(list=='ov'){
if(ovSelectedLayer==i){
XHTML+="class=\"selectedRow\" ";
}
}
else{
if(selectedLayer==i){
XHTML+="class=\"selectedRow\" ";
}
}
if(!list)list="ll";
XHTML+=" onclick=\"changeSelected('"+i+"','"+list+"');\"";
XHTML+=" oncontextmenu=\"showImgMenu(event,"+i+",'"+list+"');return false\"";
XHTML+=" >";
XHTML+="<td> ";
t+=15;
if(dList[i].title){
XHTML+=dList[i].title;
}
else XHTML+=dList[i].name;
if(dList[i].usedExtents||ext==i){
XHTML
+="&nbsp;<img title=\"Layer selected as basis for extents\" style=\"behavior:url('png.htc');\" src=\"images/globesm.png\" />";
}
if(dList.length>1){
if(i==0){
XHTML+="<span style=\"color:#666;font-size:10px\"> <-- bottom layer</span>";
}
if(i==(dList.length-1)){
XHTML+="<span style=\"color:#666;font-size:10px\"> <-- top layer</span>";
}
}
XHTML+="</td></tr>\n";
}
if(XHTML!=""){
XHTML="<table border='0' style='padding:0;border:0;margin:0;width:100%' cellpadding='2' width=\"100%\">"
+XHTML;
}
if(list=='ov'){
var ov=win.document.getElementById('locatorView');
if(XHTML==""){
XHTML
="<div style=\"position:absolute;top:35%;left:0;padding:3px;color:gray;width:96%;\"><p style=\"text-align:center\" >"
+uselocserv+"</p></div>";
}
if(ov)ov.innerHTML=XHTML;
}
else{
if(XHTML==""){
XHTML
="<div style=\"position:absolute;top:35%;left:0;padding:3px;color:gray;width:96%\"><p style=\"text-align:center\">"
+usewebserv+"</p></div>";
}
win.document.getElementById('layerView').innerHTML=XHTML;
}
}
function inList(ln,url,list,indx){
var dlist;
if(list=="ch"){
dList=choiceList;
}
else{
if(list=='ov'){
dList=overviewList;
}
else{
dList=layerList;
}
}
for(i=0;i<dList.length;i++){
if(dList[i].name==ln&&dList[i].url==url){
return(true);
}
}
return(false);
}
function setAutoToggleGroups(auto){
autoOpenGroups=auto;
}
function SelectSelf(evt,p){
var layer=choiceList[p];
if(typeof layer.name=="undefined"||(layer.bounds.length==0&&!layer.isFeature)){
composeNameFromSubLayers(p);
choiceList[p].compositeName=true;
}
var mess="Adding or removing layer "+layer.title;
setStatus(mess);
showMess(mess);
var list=layer.leaves;
try{
if(evt&&evt.stopPropagation)evt.stopPropagation();
}
catch(err){
if(window.event){
window.event.cancelBubble=true;
}
}
var alist=list.split(" ");
var turnOn;
if(activeList=="ov"){
turnOn=(!layer.inOverview);
}
else{
turnOn=(!layer.inList);
}
if(activeList=="ov"){
layer.inOverview=turnOn;
}
else{
layer.inList=turnOn;
}
var myid="LB_"+p;
var nowOn=toggleLayer(p);
SetElemChosen(myid,turnOn);
for(var a=alist.length-1;a>-1;a--){
var item=alist[a];
if(item&&choiceList[item]){
var prevstate;
if(activeList=="ov"){
prevstate=choiceList[item].inOverview;
}
else{
prevstate=choiceList[item].inList;
}
var myid="LB_"+item;
SetElemChosen(myid,prevstate);
}
}
if(activeList!="ov"){
if(layerList.length==0){
clearCRS();
}
else{
var b=computeBounds();
if(turnOn)DescribeCRS(null,b.crs,true);
setExtentsFromBounds(b);
}
}
var listName="Main View Layers"
if(activeList=="ov")listName="Overview Layers";
var act="Removed layers from ";
if(turnOn)act="Added layers to ";
showMess(act+listName,2000);
setStatus("&nbsp;");
}
function SelectChildren(evt,p,fromList,myTNT){
var listName="Main View Layers";
if(activeList=="ov")listName="Overview Layers";
var mess="Adding to or removing layers from "+listName;
setStatus(mess);
showMess(mess);
if(fromList){
manualExtents=false;
}
var layer=choiceList[p];
var list;
var alist=[];
if(layer.leaves){
list=layer.leaves;
alist=list.split(" ");
}
var a;
if(activeList=="ov"){
turnOn=(!layer.inOverview);
}
else{
turnOn=(!layer.inList);
}
if(myTNT){
for(a=alist.length-1;a>-1;a--){
var layerToggledOn=false;
var item=alist[a];
if(item){
choiceList[item].isTNT=myTNT;
DescribeCRS(null,item.srs,false);
var prevstate;
if(activeList=="ov"){
prevstate=choiceList[item].inOverview;
}
else{
prevstate=choiceList[item].inList;
}
if(prevstate!=turnOn){
if(activeList=="ov"){
choiceList[item].inOverview=turnOn;
}
else{
choiceList[item].inList=turnOn;
}
var nowOn=toggleLayer(item);
if(nowOn&&choiceList[item].parens){
choiceList[item].parenhide=choiceList[choiceList[item].parens].hide;
}
var myid="LB_"+item;
SetElemChosen(myid,turnOn);
}
}
}
}
else{
for(var a=0;a<alist.length;a++){
var layerToggledOn=false;
var item=alist[a];
if(item){
DescribeCRS(null,item.srs,false);
var prevstate;
if(activeList=="ov"){
prevstate=choiceList[item].inOverview;
}
else{
prevstate=choiceList[item].inList;
}
if(prevstate!=turnOn){
if(activeList=="ov"){
choiceList[item].inOverview=turnOn;
}
else{
choiceList[item].inList=turnOn;
}
var nowOn=toggleLayer(item);
var myid="LB_"+item;
SetElemChosen(myid,turnOn);
}
}
}
}
if(activeList!="ov"){
if(layerList.length==0){
clearCRS();
}
else{
var b=computeBounds();
DescribeCRS(null,b.crs,true);
setExtentsFromBounds(b);
}
}
SetElemChosen("LB_"+p,turnOn);
if(activeList=="ov"){
choiceList[p].inOverview=turnOn;
}
else{
choiceList[p].inList=turnOn;
}
if(layer.parens||layer.parens==0){
if(highlightOn){
testParentState(layer.parens);
}
}
var listName="Main View Layers";
if(activeList=="ov")listName="Overview Layers";
var act="Removed or Added layers from ";
if(turnOn)act="Added layers to ";
showMess(act+listName,2000);
setStatus("&nbsp; &nbsp;");
}
function toggleLayer(layerNum){
var dList;
list=activeList;
if(list=='ov'){
dList=overviewList;
}
else{
dList=layerList;
}
var n=false;
var layerfound=false;
newlayerlist=[];
layer=choiceList[layerNum];
var si=inChoices(layer.url);
var server=choiceServers[si];
var sob=getStyle(layer.name);
if(sob){
choiceList[layerNum].style=sob.selectedIndex;
layer.style=sob.selectedIndex;
}
layer.filter=filter;
layer.relief=relief;
layer.opacity=opacity;
layer.format=server.defaultFormat;
if(layer.parens){
if(layer.depth>2||server.isTNT!=true){
layer.groupTitle=choiceList[layer.parens].title;
layer.groupDesc=choiceList[layer.parens].description;
}
}
for(var i=0;i<dList.length;i++){
if(dList[i].name==layer.name&&layer.url==dList[i].url&&dList[i].style==layer.style){
layerfound=true;
n=true;
}
else{
newlayerlist[newlayerlist.length]=dList[i];
}
}
if(!layerfound){
if(list=='ov'){
ovSelectedLayer=newlayerlist.length;
newlayerlist[newlayerlist.length]=layer;
}
else{
selectedLayer=newlayerlist.length;
newlayerlist[newlayerlist.length]=layer;
for(var m=0;m<layer.bounds.length;m++){
DescribeCRS(null,layer.bounds[m].crs,false);
}
}
}
if(list=='ov'){
overviewList=newlayerlist;
}
else{
layerList=newlayerlist;
}
writeLayers(list);
return(!n);
}
function parseGetFeatureInfo(finfo){
var XHTML="";
var previousnn=null;
infotype="";
info_formats=[];
var j;
var k;
var m;
for(j=0;j<finfo.childNodes.length;j++){
if(finfo.childNodes.item(j).nodeName.toUpperCase()=="FORMAT"){
var format=finfo.childNodes.item(j);
if(wmsversion=="1.0.0"){
for(k=0;k<format.childNodes.length;k++){
var nn=format.childNodes.item(k).nodeName;
if(nn){
info_formats.push(nn);
if(nn=="HTML"||nn==previousnn&&nn!=""){
infotype=nn;
defaultInfo=info_formats.length-1;
}
}
}
}
else{
for(k=0;k<format.childNodes.length;k++){
var nv=format.childNodes.item(k).nodeValue;
if(nv){
info_formats.push(nv);
if(nv=="text/html"||nv==previousnn&&nv!=""){
infotype=nv;
defaultInfo=info_formats.length-1;
}
}
}
}
}
if(finfo.childNodes.item(j).nodeName.toUpperCase()=="DCPTYPE"){
var dcptype=finfo.childNodes.item(j);
for(k=0;k<dcptype.childNodes.length;k++){
if(dcptype.childNodes.item(k).nodeName=="HTTP"){
var http=dcptype.childNodes.item(k);
for(var l=0;l<http.childNodes.length;l++){
if(http.childNodes.item(l).nodeName.toUpperCase()=="GET"){
var get=http.childNodes.item(l);
for(m=0;m<get.childNodes.length;m++){
if(get.childNodes.item(m).nodeName=="OnlineResource"){
var node=get.childNodes.item(m);
if(typeof node.getAttributeNS!='undefined'){
infourl=node.getAttributeNS('http://www.w3.org/1999/xlink','href');
}
else{
infourl=node.getAttribute('xlink:href');
}
if(!infourl)infourl=lastgetcap;
infourl=ESRIMAPfilter(infourl);
var lastchar=infourl.substring(infourl.length-1);
if(lastchar!="&"&&lastchar!="?")infourl+="?";
}
}
}
}
}
}
}
}
}
function parseGetFeature(gmap){
var url="";
for(j=0;j<gmap.childNodes.length;j++){
var DCP=gmap.childNodes.item(j).nodeName.toUpperCase();
if(DCP=="OWS:DCP"||DCP=="DCP"||DCP=="DCPTYPE"){
var dcptype=gmap.childNodes.item(j);
for(var k=0;k<dcptype.childNodes.length;k++){
var HTTPName=dcptype.childNodes.item(k).nodeName.toUpperCase();
if(HTTPName=="OWS:HTTP"||HTTPName=="HTTP"){
var http=dcptype.childNodes.item(k);
for(var l=0;l<http.childNodes.length;l++){
var getnode=http.childNodes.item(l);
var gname=getnode.nodeName;
if(gname=="OWS:GET"||gname=="GET"){
if(typeof getnode.getAttributeNS!='undefined'){
url=getnode.getAttributeNS('http://www.w3.org/1999/xlink','href');
}
else{
url=getnode.getAttribute('xlink:href');
}
if(!url){
url=getnode.getAttribute("onlineResource");
}
}
}
}
}
}
}
var idx=inChoices(wmsurl);
if(url){
getmapurl=fixUrlEnd(url);
}
else{
getmapurl=fixUrlEnd(wmsurl);
}
if(idx<0){
var server=new ServerInfo(wmsurl,serverName);
server.maxw=serverMaxWidth;
server.maxh=serverMaxHeight;
server.isTNT=isTNT;
server.version=wmsversion;
server.getmapURL=getmapurl;
choiceServers.push(server);
}
else{
choiceServers[idx].getmapURL=getmapurl;
}
}
function parseGetMaps(gmap){
for(j=0;j<gmap.childNodes.length;j++){
var DCPTYPE=gmap.childNodes.item(j).nodeName.toUpperCase();
if(DCPTYPE=="DCPTYPE"||DCPTYPE=="OWS:DCP"||DCPTYPE=="OWS:DCPTYPE"){
var dcptype=gmap.childNodes.item(j);
for(var k=0;k<dcptype.childNodes.length;k++){
var httpname=dcptype.childNodes.item(k).nodeName.toUpperCase();
if(httpname=="HTTP"||httpname=="OWS:HTTP"){
var http=dcptype.childNodes.item(k);
for(var l=0;l<http.childNodes.length;l++){
var getname=http.childNodes.item(l).nodeName.toUpperCase();
if(getname=="GET"||getname=="WMS:GET"||getname=="WFS:GET"){
var get=http.childNodes.item(l);
if(wmsversion=="1.0.0"){
getmapurl=get.getAttribute("onlineResource");
}
else{
for(var m=0;m<get.childNodes.length;m++){
if(get.childNodes.item(m).nodeName=="OnlineResource"){
var node=get.childNodes.item(m);
if(typeof node.getAttributeNS!='undefined'){
getmapurl=node.getAttributeNS('http://www.w3.org/1999/xlink','href');
}
else{
getmapurl=node.getAttribute('xlink:href');
}
}
}
}
var re=/html(\?)*$|htm(\?)*$/i;
if(!getmapurl||getmapurl.match(re)){
setStatus("No valid getmap url found -- using "+lastgetcap);
getmapurl=lastgetcap;
}
getmapurl=ESRIMAPfilter(getmapurl);
var lastchar=getmapurl.substring(getmapurl.length-1);
if(lastchar!="&"&&lastchar!="?")getmapurl+="?";
if(lastchar=="&")getmapurl+="amp;";
}
}
}
}
}
}
var idx=inChoices(wmsurl);
getmapurl=fixUrlEnd(getmapurl);
if(idx<0){
var server=new ServerInfo(wmsurl,serverName);
server.maxw=serverMaxWidth;
server.maxh=serverMaxHeight;
server.isTNT=isTNT;
server.version=wmsversion;
server.getmapURL=getmapurl;
choiceServers.push(server);
}
else{
choiceServers[idx].getmapURL=getmapurl;
}
}
function parseImageTypes(gmap){
var XHTML="";
previousinn=null;
defaultFormat=-1;
var k;
var selected=false;
formats=[];
for(j=0;j<gmap.childNodes.length;j++){
if(gmap.childNodes.item(j).nodeName.toUpperCase()=="FORMAT"){
var format=gmap.childNodes.item(j);
if(wmsversion=="1.0.0"){
for(k=0;k<format.childNodes.length;k++){
var inn=format.childNodes.item(k).nodeName;
if(inn){
if((defaultFormat==-1)&&(inn=="GIF"||inn=="PNG"||inn==previousinn)){
defaultFormat=formats.length-1;
}
formats[formats.length]=inn;
}
}
}
else{
for(k=0;k<format.childNodes.length;k++){
var inv=format.childNodes.item(k).nodeValue;
if(inv){
formats[formats.length]=inv;
if(inv=="image/png;ColorPalette"||inv=="PNG"){
defaultFormat=formats.length-1;
}
if(inv=="image/gif"&&isTNT==false){
defaultFormat=formats.length-1;
}
if((defaultFormat==-1)&&(inv=="image/png"||inv==previousinn)){
defaultFormat=formats.length-1;
}
}
}
}
}
}
if(defaultFormat==-1)defaultFormat=0;
var idx=inChoices(wmsurl);
if(idx<0){
var server=new ServerInfo(wmsurl,serverName);
server.maxw=serverMaxWidth;
server.maxh=serverMaxHeight;
server.isTNT=isTNT;
server.formats=formats;
server.defaultFormat=defaultFormat;
choiceServers.push(server);
}
else{
choiceServers[idx].formats=formats;
choiceServers[idx].defaultFormat=defaultFormat;
}
}
function GetChildNamed(doc,name){
var node;
for(var j=0;j<doc.childNodes.length;j++){
node=doc.childNodes.item(j);
var nn=node.nodeName.split(":");
if(nn[nn.length-1]==name){
break;
}
}
return node;
}
function createImageChoices(doc){
var wms=doc.getElementsByTagName("WMT_MS_Capabilities");
var wmt;
isWFS=false;
if(wms.length>0){
var ver=wms.item(0).getAttribute("version");
wmsversion=ver;
}
else{
wmt=doc.getElementsByTagName("WMS_Capabilities");
var wfs=doc.getElementsByTagName("wfs:WFS_Capabilities");
if(wfs&&wfs.length){
isWFS=true;
wmt=wfs;
}
else{
var wfa=doc.getElementsByTagName("WFS_Capabilities");
if(wfa&&wfa.length){
isWFS=true;
wmt=wfa;
}
}
if(wmt.length){
var vers=wmt.item(0).getAttribute("version");
wmsversion=vers;
}
else{
layernum=0;
}
}
if(wmsversion==""){
wmsversion=defaultVersion;
}
var gmap=[];
if(isWFS){
var om=GetChildNamed(doc,"OperationsMetadata");
if(!om){
gmap=doc.getElementsByTagName('GetFeature');
if(gmap.length){
parseGetFeatyre(gmap.item(0));
}
return;
}
gmap=om.getElementsByTagName('ows:Operation');
var notfound=true;
if(!gmap||gmap.length==0){
gmap=om.getElementsByTagName('Operation');
}
if(gmap.length==0){
gmap=doc.getElementsByTagName('GetFeature');
if(gmap.length){
parseGetFeature(gmap.item(0));
notfound=false;
}
}
else{
for(var gm=0;gm<gmap.length;gm++){
if(gmap.item(gm).getAttribute('name')=='GetFeature'){
parseGetFeature(gmap.item(gm));
notfound=false;
break;
}
}
}
if(gmap.length>1&&notfound==true)parseGetFeature(gmap.item(1));
}
else{
if(wmsversion=="1.0.0"){
gmap=doc.getElementsByTagName('Map');
}
else{
gmap=doc.getElementsByTagName('GetMap');
}
if(do3d){
gmap=doc.getElementsByTagName('GetView');
}
if(gmap.length>0){
parseGetMaps(gmap.item(0));
parseImageTypes(gmap.item(0));
infourl="";
var finfo=[];
if(wmsversion=="1.0.0"){
finfo=doc.getElementsByTagName('FeatureInfo');
}
else{
finfo=doc.getElementsByTagName('GetFeatureInfo');
}
if(finfo.length>0){
parseGetFeatureInfo(finfo.item(0));
}
}
else{
gmap=doc.getElementsByTagName('Operation');
for(var gm=0;gm<gmap.length;gm++){
if(gmap.item(gm).getAttribute('name')=='GetMap'){
parseGetMaps(gmap.item(gm));
parseImageTypes(gmap.item(gm));
}
if(gmap.item(gm).getAttribute('name')=='GetFeatureInfo'){
parseGetFeatureInfo(gmap.item(gm));
}
}
}
}
}
function showIt(str,h,w){
var features="status=yes,resizable=yes,toolbar=0,height="+h+",width="+h+",scrollbars=yes";
var myWin;
if(top.widget){
alert(str);
showMess(str);
}
else{
myWin=window.open("","_blank",features);
myWin.document.open("text/xml");
myWin.document.write(unescape(str));
myWin.document.close();
}
}
function clearToolTip(){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
win.document.getElementById("tooltip").innerHTML
="<img style='height:159;width:2px;float:left' src='blank.gif'>\n";
}
function showToolTip(){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(win.document.getElementById("tooltip")){
win.document.getElementById("tooltip").innerHTML
="<img style='height:159;width:2px;float:left' src='blank.gif'>"+unescape(tipstr);
win.document.getElementById("tooltip").style.background="white";
}
}
function hideToolTip(){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(win.document.getElementById("tooltip")){
win.document.getElementById("tooltip").style.background="silver";
win.document.getElementById("tooltip").style.left="0px";
win.document.getElementById("tooltip").style.top="0px";
}
}
var prevOpened=[];
function addToMap(str,h,w){
var win;
for(var op=prevOpened.length-1;op>-1;op--){
if(typeof prevOpened[op]!="undefined"){
win=prevOpened[op];
if(!win.closed)break;
}
}
var validwin=true;
var unfound=false;
if(typeof win=="undefined"||(win&&win.closed)){
try{
if(typeof opener!="undefined"&&!opener.closed){
win=opener;
}
}
catch(err){
unfound=true;
}
}
if(typeof win=="undefined"||(win&&win.closed)){
var mess="Window closed ... viewing with new window"
if(top.widget){
showMess(mess,3000);
}
else{
alert(mess);
}
showMap(str,h-30,w);
return;
}
var ma;
var activeMain;
if(!win||typeof win=="undefined"){
var mess="No view found ... viewing with new window";
if(top.widget){
showMess(mess,3000);
}
else{
alert(mess);
}
showMap(str,h,w);
return;
}
try{
if(standalone){
activeMain=win.frames['main'];
}
else{
activeMain=win;
}
ma=activeMain.document.getElementById('maparea');
}
catch(err){
validwin=false;
mess="No maparea found "+win.title;
if(top.widget){
showMess(mess,3000);
}
else{
alert(mess);
}
}
if(!ma){
validwin=false;
}
if(!validwin){
var mess="No map area found or associated scripts missing ... viewing with new window";
if(top.widget){
showMess(mess,3000);
}
else{
alert(mess);
}
showMap(str,h,w);
}
else{
activeMain.writeMaps(self,h,w);
}
}
function showMap(str,h,w){
map=str;
var features;
resize="yes";
if(h){
features="status=yes,resizable="+resize+",toolbar=0,height="+h+",width="+w;
}
else{
features="status=yes,resizable="+resize+",toolbar=0,height="+dataHeight+",width="+dataWidth;
}
if(typeof showModelessDialog!="undefined"&&standalone){
h+=40;
w+=8;
features="resizable:yes;help:no;status:no;dialogWidth:"+w+"px;dialogHeight:"+h+"px;scrollbars:no";
prevOpened[prevOpened.length]=showModelessDialog('viewer.hta',top,features);
}
else{
if(top.widget){
top.popViewer(h,w);
}
else{
prevOpened[prevOpened.length]=window.open("viewer.htm","_blank",features);
}
}
}
function selectAlternateCRS(){
if(typeof showModelessDialog!="undefined"&&standalone){
features="resizable:no;help:no;status:no;dialogWidth:320px;dialogHeight:150px";
showModelessDialog('crs.hta',window,features);
}
else{
if(window.open){
features="status=no,resizable=no,toolbar=0,height=130,width=300";
var myWindow=window.open("crs.htm","_blank",features);
}
else{
}
}
}
function GetMap(){
return map;
}
function showExtents(){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
win.document.getElementById('minx').value=top.minx;
win.document.getElementById('miny').value=top.miny;
win.document.getElementById('maxx').value=top.maxx;
win.document.getElementById('maxy').value=top.maxy;
}
function showBounds(w,s,e,n){
lastbounds=new Bounds(w,s,e,n);
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var thismap=win.ogcmaps.loc;
if(typeof thismap=="undefined")return;
var bb=win.document.getElementById('bounds');
if(thismap.xmin==thismap.xmax)return;
if(w<-180)w=-180;
if(e>180)e=180;
if(s<-90)s=-90;
if(n>90)n=90;
if(bb&&thismap.xscale&&w!=e&&w<e&&n!=s&&n>s){
bb.style.visibility="visible";
bb.style.left=(w-thismap.xmin)/ thismap.xscale+"px";
bb.style.top=(thismap.ymax-n)/ thismap.yscale+"px";
bb.style.width=Math.abs(e-w)/ thismap.xscale+"px";
bb.style.height=Math.abs(n-s)/ thismap.yscale+"px";
}
else{
if(bb)bb.style.visibility="hidden";
}
}
function setExtentsFromLocator(){
var win;
if(parent.main)win=parent.main;
else win=window;
var thismap=win.ogcmaps.loc;
manualExtents=true;
boundsalreadyset=true;
clearUsedExtents();
if(thismap){
setExtents(null,thismap.SRS,thismap.xmin,thismap.ymin,thismap.xmax,thismap.ymax);
}
}
function setExtentsFromBounds(b){
setExtents(null,b.crs,b.w,b.s,b.e,b.n);
}
function onchangebounds(method){
var lb;
if(method!="manual"&&useLocatorExtents){
setExtentsFromLocator();
}
if(method!='choice'){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var sel=win.document.getElementById('viewBounds');
if(sel){
sel.options.selectedIndex=1;
}
}
if(lastactive){
lb=lastactive;
if(method=="manual"){
lb.w=top.minx;
lb.e=top.maxx;
lb.s=top.miny;
lb.n=top.maxy;
manualExtents=true;
}
showActive(lb.w,lb.s,lb.e,lb.n);
}
if(lastbounds){
lb=lastbounds;
showBounds(lb.w,lb.s,lb.e,lb.n);
}
}
function showActive(w,s,e,n){
lastactive=new Bounds(w,s,e,n);
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var bb=win.document.getElementById('active');
var thismap=win.ogcmaps.loc;
try{
if(bb&&thismap.xscale){
bb.style.visibility="visible";
bb.style.left=(w-thismap.xmin)/ thismap.xscale+"px";
bb.style.top=(thismap.ymax-n)/ thismap.yscale+"px";
bb.style.width=Math.abs(e-w)/ thismap.xscale+"px";
bb.style.height=Math.abs(n-s)/ thismap.yscale+"px";
}
}
catch(err){
}
}
function setExtents(evt,lSRS,minx,miny,maxx,maxy,llminx,llminy,llmaxx,llmaxy,exp){
try{
if(evt&&evt.stopPropagation)evt.stopPropagation();
}
catch(err){
if(window.event){
window.event.cancelBubble=true;
}
}
if(exp)manualExtents=true;
var html="";
if(lSRS==""){
SRS=SRS;
}
if(lSRS=="EPSG:4326"||lSRS=="CRS:84"){
showActive(minx,miny,maxx,maxy);
}
else{
if(llminx!='undefined'&&llminx!=llmaxx){
showActive(llminx,llminy,llmaxx,llmaxy);
}
else{
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
setStatus('Unable to show chosen extents box');
var active=win.document.getElementById('active');
active.style.visibility="hidden";
}
}
setSRS(lSRS);
if(minx=="undefined"){
minx=parent.minx;
miny=parent.miny;
maxx=parent.maxx;
maxy=parent.maxy;
}
else{
parent.minx=minx;
parent.miny=miny;
parent.maxx=maxx;
parent.maxy=maxy;
}
showExtents();
}
function saveFile(f){
frames.data1.document.focus();
frames.data1.charset="utf-8";
frames.data1.document.write(f);
frames.data1.document.focus();
frames.data1.document.execCommand('SaveAs',"true","map.html");
}
function getInstallDirectory(){
var path=unescape(document.location);
path=path.substring(8,path.lastIndexOf("/"));
path=path.substring(path.lastIndexOf("/")+1);
return path;
}
function clearUsedExtents(){
for(var l=0;l<layerList.length;l++){
layerList[l].usedExtents=false;
}
}
function useLayerExtents(evt,ln){
selector=ln;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
win.showExtentsMenu(evt,ln);
for(var l=0;l<layerList.length;l++){
var u=false;
if(l==ln){
u=true;
}
layerList[l].usedExtents=u;
}
writeLayers("",ln);
}
var legendsSaved=[];
function makeMap(file,titleValue,ogcclient,includeKML){
var useCompass=false;
savingLocal=true;
var featurecount=0;
for(var j=0;j<layerList.length;j++){
if(layerList[j].isFeature)featurecount++;
}
if((layerList.length-featurecount)<1){
var mess="No layers selected for the main view.";
showMess(mess,3000);
return;
}
legendsSaved=[];
var s;
var bb=computeBounds();
setExtentsFromBounds(bb);
var height=bb.n-bb.s;
var width=bb.e-bb.w;
var h1,h2;
var w1,w2;
var h=0;
var w=0;
if(!maxHeight&&!maxWidth){
maxHeight=240;
}
if(!distort){
if(maxHeight){
h1=maxHeight;
w1=Math.round(width*h1 / height);
}
if(maxWidth){
w2=maxWidth;
h2=Math.round(height*w2 / width);
}
if(h2<h1){
h=h2;
w=w2;
}
else{
h=h1;
w=w1;
}
w=parseInt(w);
h=parseInt(h);
}
else{
h=maxHeight;
w=maxWidth;
}
map=composeMap(layerList,"ogc",5,1.0,ogcclient,bb);
if(map==0)return;
locator="";
if(overviewList.length>0){
locator=composeMap(overviewList,'loc',locstart,ovPorportion,ogcclient,bb);
}
XHTML="<html>\n";
XHTML+="<head>\n";
XHTML+="<META HTTP-EQUIV=\"Content-Type\" content=\"text/html\" />\n";
XHTML+="<META HTTP-EQUIV=\"imagetoolbar\" CONTENT=\"no\" />\n";
XHTML+="<title>TNTmap - Viewer</title>\n";
XHTML+="<link type=\"text/css\" rel=\"stylesheet\" href=\""+ogcclient+"generic.css\" />\n";
XHTML+="<link type=\"text/css\" rel=\"stylesheet\" href=\""+ogcclient+"display.css\" />\n";
XHTML+="<link type=\"text/css\" rel=\"stylesheet\" href=\""+ogcclient+"tabs_g.css\" />\n";
XHTML+="<link type=\"text/css\" rel=\"stylesheet\" href=\""+ogcclient+"datatip.css\" />\n";
XHTML+="<script>";
XHTML+="var installDir =\""+ogcclient+"\";";
XHTML+="var resizeWithWindow = "+autoresize+";";
XHTML+="var addLayersToView=true;";
XHTML+="</script>\n";
XHTML+="<script language=\"javascript\" src=\""+ogcclient+"ocb.js\"></script>\n";
XHTML+="<script language=\"javascript\" src=\""+ogcclient+"settings.js\"></script>\n";
XHTML+="<script language=\"javascript\" src=\""+ogcclient+"ini.js\"></script>\n";
XHTML+="<script language=\"javascript\" src=\""+ogcclient+"ini2.js\"></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"setstatus.js\"></script>";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"createini.js\"></script>";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"messagescr.js\"></script>";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"describecrscr.js\"></script>";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"getwinsize.js\"></script>";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"utilscr.js\"></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"bbcr.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"loadcmlcr.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"boundscr.js\"></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"crslocal.js\"></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"displaycr.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"parser.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"clipboard.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"menu.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"resize.js\" ></script>\n";
XHTML+="<script type=\"text/javascript\" src=\""+ogcclient+"keydown.js\" ></script>\n";
XHTML+="<scr"+"ipt type=\"text/javascript\" >\n";
XHTML+="	SRS = \""+SRS+"\";\n";
XHTML+=" function initInfo() {\n";
XHTML+="	ogcmaps.ogc.info =";
XHTML+="[];\n";
XHTML+="	ogcmaps.ogc.hyperRequests=";
XHTML+="[];\n";
for(s=0;s<minscale.length;s++){
if(minscale[s]){
XHTML+="minscale["+s+"]="+minscale[s]+";";
}
}
for(s=0;s<maxscale.length;s++){
if(maxscale[s]){
XHTML+="maxscale["+s+"]="+maxscale[s]+";";
}
}
for(var i=0;i<infoRequests.length;i++){
if(infoRequests[i]){
XHTML+="	ogcmaps.ogc.info["+i+"]={\"url\":\""+infoRequests[i].url+"\",\"name\":\""
+infoRequests[i].name+"\"};\n ";
}
}
XHTML+=" ogcmaps.ogc.setMode('"+startMode+"');\n";
for(var i=0;i<hyperRequests.length;i++){
if(hyperRequests[i]){
XHTML+="	ogcmaps.ogc.hyperRequests["+i+"]=\""+hyperRequests[i]+"\";\n ";
}
}
XHTML+="	ogcmaps.ogc.resizeWithWindow = ";
if(autoresize){
XHTML+="true;\n";
}
else{
XHTML+="false;\n";
}
XHTML+="	var home = \""+targetHome+"\";\n";
XHTML+="	ogcmaps.ogc.latestupdate = home\n";
XHTML+="	ogcmaps.ogc.home = home;\n";
XHTML+="	ogcmaps.ogc.SRS = \""+SRS+"\";\n";
XHTML+="	ogcmaps.ogc.uom = \""+uom+"\";\n";
if(uom=="degrees"){
XHTML+="	ogcmaps.ogc.isLatLon = true;\n";
}
if(locator){
XHTML+="	ogcmaps.loc.latestupdate = home\n";
XHTML+="	ogcmaps.loc.home = home;\n";
if(uom=="degrees"){
XHTML+="	ogcmaps.loc.isLatLon = true;\n";
}
XHTML+="	ogcmaps.loc.uom = \""+uom+"\";\n";
XHTML+="	ogcmaps.loc.target ='ogc';";
}
XHTML+="	}\n";
XHTML+="	popuperrors = false;\n";
XHTML+="	popupinfotips = true;\n";
XHTML+="	published=true;\n";
XHTML+="	dataHeight="+dataHeight+";\n";
XHTML+="	dataWidth="+dataWidth+";\n";
XHTML+=" 	activeMetrics="+activeMetrics+";\n";
XHTML+="	window.onerror = function(){ return true; }\n";
XHTML+="	rawmapleft="+rawmapleft+";\n";
XHTML+="</script>\n";
XHTML+="<style type=\"text/css\">\n.phased { opacity:0.40; filter:Alpha(opacity=40); }\n";
XHTML+=" .solid { opacity:1;filter:Alpha(opacity=100);}\n";
XHTML+=" .bb {cursor:pointer;	behavior:url('"+ogcclient+"/png.htc');cursor:hand; }\n";
XHTML+=" .bb img { behavior:url('"+ogcclient+"/png.htc'); }\n";
XHTML+=" #tools span {font-size: 18px;  }\n"
XHTML+=" img { vertical-align:middle; }\n";
XHTML+="</style>\n";
XHTML+="</head>\n";
XHTML+="<body onload=\"window.onresize=windowResize;\" style=\"background:#cccccc\">\n";
XHTML
+="<div id=\"backdrop\" style=\"position:absolute;z-index:0\" ><table style=\"width:100%;height:100%;\"><tr><td style=\"height:100%;width:100%;vertical-align:middle\"><p align=\"center\"></p></td></tr></table></div>";
if(includeBuilderLink){
XHTML+="<div style=\"position:absolute;z-index:0;left:6px;top:0px\" id=\"tools\" >";
XHTML
+='<img id="hilite" style="position:absolute;z-index:100;top:2px;left:12px;cursor:pointer;cursor:hand;behavior(\'png.htc\');display:none;" src="images/highlightsm.png"/>';
XHTML
+="<span onmouseout=\"document.getElementById('hilite').style.display='none';\" onmouseover=\"document.getElementById('hilite').style.display='';\" title=\"Open TNTmap Builder\" style=\"font-size:18px\"><img onclick=\"addLayers=false;window.open('"
+ogcclient
+"/','builder','status=yes,resizable=no,toolbar=0,height=308,width=746')\" style=\"behavior:url('"
+ogcclient+"/png.htc');\" src=\""+ogcclient+"/images/star_sm.png\"  /></span>";
}
else{
XHTML+="<div style=\"position:absolute;z-index:1000;left:6px;top:6px\" id=\"tools\" >";
}
XHTML
+="<span id=\"legButton\" class=\"bb\" onclick=\"toggleLeg();\"  title=\"Legend On/Off\"><img id=\"legToggle\" src=\""
+ogcclient+"/images/aleft.gif\" ></span>";
if(useCompass){
XHTML+="<img title=\"pan\" alt=\"pan\" style=\"float:left\" src=\""+ogcclient+"images/logo.png\" />";
}
else{
XHTML
+="<a target=\"_blank\" href=\"http://www.microimages.com/tntserver/info.htm\"><img id=\"logo\" style=\"position:absolute;z-index:4000;top:2px;left:6px\" src=\""
+ogcclient+"images/logosm.png\"></a>";
}
if(useCompass){
XHTML+="<img id=\"compass\" src=\""+ogcclient
+"/images/compass2.png\" height=\"47\" width=\"47\" border=\"0\" usemap=\"#Map\" style=\"position: absolute; left: 350px; top: 10px; cursor: pointer;cursor:hand;behavior:url('"
+ogcclient+"png.htc');\" title=\"pan\" />\n";
XHTML+="<map name=\"Map\">\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'N');return false;\"  coords=\"10,0,30,10\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'NE');return false;\" coords=\"30,0,40,10\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'E');return false;\"  coords=\"30,10,40,30\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'SE');return false;\" coords=\"30,30,40,40\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'S');return false;\"  coords=\"10,30,30,40\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'SW');return false;\" coords=\"0,30,10,40\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'W');return false;\"  coords=\"0,10,10,30\" href=\"#\" />\n";
XHTML
+="<area shape=\"rect\" onClick=\"ogcmaps.ogc.pan(1,'NW');return false;\" coords=\"0,0,10,10\" href=\"#\" />\n";
XHTML+="</map>";
}
if(useModeRotatorIcon){
XHTML
+=" <span id=\"modeicon\" class=\"bb\" oncontextmenu=\"ogcmaps.ogc.toggleMode('true');return false;\" onclick=\"ogcmaps.ogc.toggleMode();\" style=\"border:white 2px outset;position:relative; left:0px; TOP:1px; font-size:22px\"><img id=\"modeico\" title=\"Rotate Mode\" src=\""
+ogcclient
+"/images/zoom.gif\" /></span><span id=\"modedd\" class=\"bb\" style=\"VERTICAL-ALIGN:middle;WIDTH:4px;POSITION:relative;TOP:-6px;HEIGHT:26px\" onclick=\"showLayer('modeMenu',parseInt(this.offsetLeft)-6,parseInt(this.offsetTop));\"><img valign=\"middle\" title=\"Change Mode\" src=\""
+ogcclient+"/images/dd.gif\" /></span>";
}
else{
XHTML
+="<span title=\"Zoom\" class=\"bb\" onclick=\"ogcmaps.ogc.setMode('zoomin');\" ><img id=\"zoominico\" src=\""
+ogcclient
+"/images/zoom.png\"></span><span title=\"Zoom Out\" class=\"bb\" onclick=\"ogcmaps.ogc.setMode('zoomout');\" ><img id=\"zoomoutico\"  id=\"zoomoutico\" src=\""
+ogcclient
+"/images/zoomout.png\"></span><span title=\"Drag Map\" class=\"bb\" onclick=\"ogcmaps.ogc.setMode('recenter');\" ><img id=\"recenterico\" src=\""
+ogcclient
+"/images/target.png\"></span><span title=\"Measure\" class=\"bb\" onclick=\"ogcmaps.ogc.setMode('measure');\"><img id=\"measureico\"src=\""
+ogcclient+"/images/poly.png\"></span>";
XHTML
+="<span id=\"infoButton\" title=\"Show Feature Info\" class=\"bb\" onclick=\"ogcmaps.ogc.setMode('infotip');\"  ><img id=\"infotipico\"  src=\""
+ogcclient+"/images/info.png\"></span>";
XHTML
+="<span id=\"navigateButton\" title=\"Navigate\" class=\"bb\" onclick=\"ogcmaps.ogc.setMode('navigate');\" style=\"font-size:20px;";
if(!hyperRequests.length){
XHTML+="display:none";
}
XHTML+="\"><img id=\"navigateico\"  src=\""+ogcclient+"/images/navigate.png\"></span>";
}
XHTML+="<img src=\""+ogcclient+"/images/blank.gif\" width=\"32\" height=\"18\" />";
XHTML+="<span class=\"bb\" onclick=\"ogcmaps.ogc.goBack()\" title=\"Last View\" ><img src=\""+ogcclient
+"/images/last.png\" >";
XHTML+="</span><span class=\"bb\" onclick=\"ogcmaps.ogc.goHome()";
if(overviewList.length>0){
XHTML+=";ogcmaps.loc.goHome()";
}
XHTML+="\"><img title=\"Go To Initial Area\" src=\""+ogcclient+"/images/home.png\" /></span>";
XHTML+="<span onclick=\"ogcmaps.ogc.goForward()\" class=\"bb\"><img  title=\"Next View\" src=\""+ogcclient
+"/images/next.png\" />";
XHTML+="</span>";
XHTML
+="<span id=\"overviewButton\" class=\"bb\" onclick=\"toggleOverview();\"  title=\"Overview On/Off\"><img src=\""
+ogcclient+"/images/overview.png\" ></span>";
XHTML+="<span title=\"Help\" class=\"bb\">";
XHTML+="<a href=\"http://www.microimages.com/tntserver/info.htm\" target=\"_blank\"><img  src=\""+ogcclient
+"/images/help.png\" /></a></span>";
XHTML
+="<span title=\"Reload All Layers\" onclick=\"aogc.goHome(aogc.views[aogc.currentview]);return false;\" class=\"bb\"><img src=\""
+ogcclient+"/images/refresh.png\" /></span>";
XHTML+="<span class=\"bb\" onclick=\"loadCMLDialog();\" title=\"Load new context\" ><img src=\""+ogcclient
+"/images/layers.png\" ></span>";
XHTML+="<img src=\""+ogcclient+"/images/blank.gif\" width=\"36\" height=\"22\" />";
var froot=file.substring(file.lastIndexOf("\\")+1);
XHTML
+="<span class=\"bb\" style=\"font-size:18px\"><img class=\"transp\" title=\"Open In Google Earth\" style=\"cursor:pointer;cursor:hand;behavior:url('"
+ogcclient+"/png.htc')\" src=\""+ogcclient+"/images/geb.png\" onclick=\"loadKML('"+froot
+".kml')\" /></span>";
XHTML+="</div>\n";
XHTML+="<div id=\"maparea\" style=\"position: absolute; left: 0pt; top: 45px;\">\n";
XHTML+=map;
if(locator){
XHTML+=locator;
}
XHTML+="</div><script>initMaps();</script>\n";
XHTML+="<div class=\"menu\" id=\"contextMenu\" onmouseout=\"contextid = setTimeout('hideMenu();', 20);\">\n";
XHTML+="<table>\n";
XHTML+="<tr id=\"cancelpoint\" >\n";
XHTML+="      <td class=\"mi\" onclick=\"aogc.dt.delLastPoint();return false;\"><img\n";
XHTML+="      src=\""+ogcclient+"/images/clear.png\"  vspace=\"3\" hspace=\"4\" >Cancel&nbsp;Point\n";
XHTML+="      </td>\n";
XHTML+="    </tr>\n";
XHTML+="<tr id=\"endshape\">\n";
XHTML+="<td class=\"mi\" onclick=\"aogc.dt.finishPoly();return false;\"><img width=\"20\" height=\"14\" src=\""
+ogcclient+"/images/blank.gif\" />End Line</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"r0\" >\n";
XHTML+="<td class=\"ruler\" height=\"4\"><hr />\n";
XHTML+="</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"zoomoutrow\">\n";
XHTML
+="<td class=\"mi\" onclick=\"aogc.recenter(aogc.ActiveSpot,.625);return false;\"><img width=\"14\" height=\"14\" hspace=\"3\" src=\""
+ogcclient+"/images/zoomoutsm.gif\" />Zoom Out</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr>\n";
XHTML
+="<td class=\"mi\" onclick=\"aogc.recenter(aogc.ActiveSpot,1);return false;\"><img width=\"14\" hspace=\"3\" height=\"14\" src=\""
+ogcclient+"/images/go.gif\" />Re-center</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"zoominrow\">\n";
XHTML
+="<td class=\"mi\" onclick=\"aogc.recenter(aogc.ActiveSpot,1.6);return false;\"><img width=\"14\" hspace=\"3\" src=\""
+ogcclient+"/images/zoomin.gif\" /><span>Zoom In</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"r1\">\n";
XHTML+="<td class=\"rule\" height=\"4\"><hr />\n";
XHTML+="</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"homerow\">\n";
XHTML+="<td class=\"mi\" onclick=\"aogc.goHome(); return false;\"><img width=\"20\" height=\"14\" src=\""
+ogcclient+"/images/blank.gif\" /><span>Initial Area</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr>\n";
XHTML+="<td class=\"mi\" onclick=\"aogc.goBack(); return false;\"><img width=\"20\" height=\"14\" src=\""
+ogcclient+"/images/blank.gif\" /><span>Last View</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr>\n";
XHTML+="<td class=\"mi\" onclick=\"aogc.goForward(); return false;\"><img width=\"20\" height=\"14\" src=\""
+ogcclient+"/images/blank.gif\" /><span>Next View</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"fav2\">\n";
XHTML
+="<td id=\"bm5\" class=\"mi\" onclick=\"putClip('url');return false;\"><img width=\"20\" height=\"14\" src=\""
+ogcclient+"/images/blank.gif\" /><span>Copy Shortcut</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"fav3\">\n";
XHTML
+="<td id=\"bm6\" class=\"mi\" onclick=\"putClip('Text');return false;\"><img width=\"20\" height=\"14\" src='"
+ogcclient+"/images/blank.gif' /><span>Copy URL</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"r2\">\n";
XHTML+="<td class=\"rule\" height=\"4\"><hr />\n";
XHTML+="</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"inforow\">\n";
XHTML
+="<td class=\"mi\" onclick=\"aogc.getInfoTip(aogc.ActiveSpot);return false;\"><img width=\"12\" hspace=\"4\" src=\""
+ogcclient+"/images/question.gif\" /><span>Show Feature Info</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr id=\"r3\">\n";
XHTML+="<td class=\"ruler\" height=\"4\"><hr />\n";
XHTML+="</td>\n";
XHTML+="</tr>\n";
XHTML+="<tr>\n";
XHTML+="<td class=\"mi\" onclick=\"aogc.goHome(aogc.views[aogc.currentview]); return false;\">";
XHTML+="<img hspace=\"4\" vspace=\"2\" width=\"11\" height=\"11\" src=\""+ogcclient
+"/images/reloadsm.gif\" /><span>Refresh Map</span></td>\n";
XHTML+="</tr>\n";
XHTML+="<tr>\n";
XHTML+="<td height=\"4\"></td>\n";
XHTML+="</tr>\n";
XHTML+="</table>\n";
XHTML+="</div>\n";
XHTML+="<div id=\"modeMenu\" class=\"menu\">\n";
XHTML+="			<table>\n";
XHTML+="				<tr>\n";
XHTML
+="					<td class=\"mi\" onclick=\"zoomrate=1.6;ogcmaps.ogc.setMode('zoomin');\"><img width=\"14\" hspace=\"3\" src=\""
+ogcclient+"/images/zoomin.gif\" /><span>Zoom</span></td>\n";
XHTML+="				</tr>\n";
XHTML+="				<tr>\n";
XHTML
+="				<td class=\"mi\" onclick=\"zoomrate=.625;ogcmaps.ogc.setMode('zoomout');\"><img width=\"14\" hspace=\"3\" src=\""
+ogcclient+"/images/zoomoutsm.gif\" /><span>Zoom Out</span></td>\n";
XHTML+="			</tr>\n";
XHTML+="				<tr>\n";
XHTML
+="				<td class=\"mi\" onclick=\"zoomrate=1;ogcmaps.ogc.setMode('recenter');\"><img width=\"14\" hspace=\"3\" src=\""
+ogcclient+"/images/go.gif\" /><span>Recenter</span></td>\n";
XHTML+="				</tr>\n";
if(infoRequests.length){
XHTML+="  			<tr>\n";
XHTML
+=" 					<td class=\"mi\" onclick=\"ogcmaps.ogc.setMode('infotip');\"><img width=\"12\" hspace=\"4\" src=\""
+ogcclient+"/images/question.gif\" /><span>InfoTip</span></td>\n";
XHTML+=" 				</tr>\n";
}
XHTML+="<tr>\n";
XHTML+="	<td class=\"mi\" onclick=\"ogcmaps.ogc.setMode('measure');\"><img class=\"transp\"\n";
XHTML+="		src=\""+ogcclient+"/images/pen.png\" hspace=\"4\" width=\"12\"><span>Measure</span></td>\n";
XHTML+="</tr>\n";
XHTML+=" 			</table>\n";
XHTML+=" 		</div>\n";
var crsname="Coordinate Reference System: "+SRS;
if(srsname){
crsname=srsname;
}
XHTML
+="<div id=\"coords\" style=\"margin: 0pt; padding: 0pt; position: absolute; z-index: 4999; top: 25px; left: 355px;width:100%\">";
XHTML+="<table style=\"border:0;margin:0;padding:0;width:100%\"><tr><td style=\"text-align:left\">";
XHTML
+="<form style=\"margin:0;padding:0\" id=\"sform\" name=\"sform\" onsubmit=\"ZoomToScale(this.scale.value);return false;\">";
XHTML
+="<input title=\"Scale\" name=\"scale\" onchange=\"ZoomToScale(this.value)\" id=\"scale\" size=\"11\" maxlength=\"13\" type=\"text\">";
XHTML
+="<img title=\"Zoom to scale\" onclick=\"ZoomToScale(document.getElementById('scale').value);return false;\" src=\""
+ogcclient+"/images/right.gif\" ></form></td>";
XHTML+="<td title=\""+crsname
+"\"><p style=\"text-align:right;margin:0;padding:0\"><input id=\"northing\" size=\"15\" maxlength=\"15\" type=\"text\">&nbsp; <input id=\"easting\" size=\"15\" maxlength=\"15\" type=\"text\"></p></td></tr></table></div>\n";
XHTML+="<div id=\"layerMenu\" class=\"menu\" style=\"z-index: 5600;\">";
XHTML+="<table>\n";
XHTML+="<tbody>\n";
XHTML+="<tr>\n";
XHTML
+="	<td class=\"mi\" onclick=\"var al = document.getElementById(activeLayer);al.style.opacity=.5;if(document.all){al.style.filter='Alpha(opacity=50)'}\">\n";
XHTML+="	<img src=\""+ogcclient
+"/images/blank.gif\" hspace=\"3\" width=\"14\" /><span>50% translucent</span></td>";
XHTML+="</tr>\n";
XHTML+="<tr>";
XHTML
+="<td class=\"mi\" onclick=\"var al = document.getElementById(activeLayer);al.style.opacity=1.0;if(document.all){al.style.filter='Alpha(opacity=100)'}\">";
XHTML+="<img src=\""+ogcclient+"/images/blank.gif\" hspace=\"3\" width=\"14\" /><span>Opaque</span></td>";
XHTML+="</tr>\n";
XHTML+="<tr>";
XHTML+="<td class=\"mi\" onclick=\"ogcmaps.ogc.toggleDisabled(activeLayer)\"><img src=\""+ogcclient
+"/images/blank.gif\" hspace=\"3\" width=\"14\" /><span>Disable/Enable</span></td>";
XHTML+="</tr>\n";
XHTML+="<tr>";
XHTML
+=" <td class=\"mi\" onclick=\"var al = document.getElementById(activeLayer);var src = al.src; if(al.realSrc)src=al.realSrc; al.src = src;\">";
XHTML+="<img src=\""+ogcclient
+"/images/reloadsm.gif\" width=\"11\" hspace=\"5\" vspace=\"3\"/><span> Refresh Layer </span></td>";
XHTML+="</tr>\n";
XHTML+="<tr>";
XHTML
+="<td class=\"mi\" onclick=\"var al = document.getElementById(activeLayer);var src = al.src; if(al.realSrc)src=al.realSrc;showMe(src)\">";
XHTML+="<img src=\""+ogcclient
+"/images/smallq.png\" hspace=\"3\" width=\"14\" /><span> View Layer/Error</span></td>";
XHTML+="</tr>\n";
XHTML+="<tr>";
XHTML
+="<td class=\"mi\" onclick=\"var al = document.getElementById(activeLayer);var src = al.src; if(al.realSrc)src=al.realSrc;var newsrc = prompt('The layers source url is:',src);if(newsrc)all.src=src;al.realSrc=src;\"><img src=\"images/info.gif\" hspace=\"4\" width=\"12\"><span>&nbsp;Show&nbsp;Layer&nbsp;URL</span></td>";
XHTML+="</tr>\n";
XHTML+="</tbody>\n";
XHTML+="</table>\n";
XHTML+="</div>\n";
if(!useCompass){
XHTML+="<div style=\"position:absolute;top:65px;left:0;z-index: 6000\">\n";
XHTML
+="<img title=\"Pan Northwest\" class=\"arrow\" id=\"nw\" onclick=\"ogcmaps.ogc.pan(1.8,'NW');return false\"  src=\""
+ogcclient+"/images/nw.gif\" >\n";
XHTML+="<img title=\"Pan North\" class=\"arrow\" id=\"n\" src=\""+ogcclient
+"/images/n.gif\" onclick=\"ogcmaps.ogc.pan(1.8,'N');return false\" >\n";
XHTML
+="<img title=\"Pan Northeast\" class=\"arrow\" onclick=\"ogcmaps.ogc.pan(1,'NE');return false\" id=\"ne\" src=\""
+ogcclient+"/images/ne.gif\">\n";
XHTML
+="<img title=\"Pan West\" class=\"arrow\" onclick=\"ogcmaps.ogc.pan(1,'W');return false\" id=\"w\" src=\""
+ogcclient+"/images/w.gif\">\n";
XHTML
+="<img title=\"Pan East\" class=\"arrow\" onclick=\"ogcmaps.ogc.pan(1,'E');return false\" id=\"e\" src=\""
+ogcclient+"/images/e.gif\" >\n";
XHTML
+="<img title=\"Pan Southwest\" class=\"arrow\" onclick=\"ogcmaps.ogc.pan(1,'SW');return false\" id=\"sw\" src=\""
+ogcclient+"/images/sw.gif\" >\n";
XHTML
+="<img title=\"Pan South\" class=\"arrow\" onclick=\"ogcmaps.ogc.pan(1,'S');return false\" id=\"s\"  src=\""
+ogcclient+"/images/s.gif\">\n";
XHTML
+="<img title=\"Pan Southeast\" class=\"arrow\" onclick=\"ogcmaps.ogc.pan(1,'SE');return false\" id=\"se\"  src=\""
+ogcclient+"/images/se.gif\">\n";
XHTML+="</div>\n";
}
XHTML+="<script language=\"javascript\">\n	ParseURL();\n	var acolor=\"cyan\";\n	initBehaviors();\n";
if(overviewList.length){
XHTML+="	initExtents();\n";
}
XHTML+="	initInfo();\n";
XHTML+="		initHotKeys();\n";
XHTML+="</script>";
XHTML+="<script language=\"javascript\" src=\""+ogcclient+"/repos.js\"></script>\n";
XHTML
+="<div id=\"data1\" style=\"position:absolute;left:-326px;top:-326px;z-index:6000;width:0px;height:0px;border:0;background:#ccddff\"></div>";
XHTML+="<div onmousedown=\"movingObj=document.getElementById('datatip');\" onmouseup=\"drop()\"; id=\"datatip\" style=\"position:absolute;z-index:6500;left:-1200px;background-color:black; background-image: url('"+ogcclient+"/images/top_slice.png'); background-repeat: repeat-x;width:500px;top:-1200px\"><div id=\"dtcontent\" style=\"position:relative;right:7px;bottom:34px;left:8px;top:10px;\"></div></div>";
XHTML+="</body>\n";
XHTML+="</html>\n";
savingLocal=false;
return XHTML;
}
function saveImg(imgPath,localPath){
if(typeof ActiveXObject!="undefined"){
try{
var web=new ActiveXObject("TNTsave.HTTP");
web.getBinary(imgPath,localPath);
}
catch(err){
alert(err.message+" "+err.no);
}
}
}
function saveOLmap(file,titleValue,ogcclient,forview){
if(!PublishDirectory||PublishDirectory=="TNTmap")PublishDirectory
="http://www.microimages.com/ogc/ogcclient/";
if(!standalone){
SaveXMLWeb(composeOLMap(titleValue,PublishDirectory),"map.html","text/html");
}
else{
var XHTML=composeOLMap(titleValue,PublishDirectory,forview);
if(!file)return;
file=file.replace(/\.html/i,"");
file=file.replace(/\.htm/i,"");
if(typeof ActiveXObject!="undefined"&&file){
var fso=new ActiveXObject("Scripting.FileSystemObject");
var f=fso.CreateTextFile(file+".htm",true);
f.write(XHTML);
f.Close();
}
else{
if(top.widget){
var com="/usr/bin/perl write.pl \""+file+".htm\" '"+escape(XHTML)+"'";
top.widget.system(com,null);
}
}
}
}
function saveGmap(file,titleValue,ogcclient,forview){
if(!PublishDirectory||PublishDirectory=="TNTmap")PublishDirectory
="http://www.microimages.com/ogc/ogcclient/";
if(!standalone){
SaveXMLWeb(composeGMap(titleValue,PublishDirectory,"map.html","text/html"));
}
else{
var XHTML=composeGMap(titleValue,PublishDirectory,forview);
if(!file)return;
file=file.replace(/\.html/g,"");
file=file.replace(/\.htm/g,"");
if(typeof ActiveXObject!="undefined"&&file){
var fso=new ActiveXObject("Scripting.FileSystemObject");
var f=fso.CreateTextFile(file+".htm",true);
f.write(XHTML);
f.Close();
}
else{
if(top.widget){
var com="/usr/bin/perl write.pl \""+file+".htm\" '"+escape(XHTML)+"'";
top.widget.system(com,null);
}
}
}
}
function saveMap(file,titleValue,ogcclient,includeKML){
if(!standalone){
if(!titleValue){
titleValue="TNTmap";
}
var titlename=titleValue;
while(titlename.indexOf(" ")!=-1){
titlename=titlename.replace(" ","");
}
if(!file)file=titlename;
SaveXMLWeb(makeMap(file,titleValue,ogcclient,includeKML),"map.html","text/html");
}
else{
if(!file)return;
var BaseDir;
var slash=file.lastIndexOf("\\");
if(top.widget){
slash=file.lastIndexOf("/");
}
if(slash>-1){
BaseDir=file.substring(0,slash+1);
}
else{
BaseDir=getInstallDir();
}
var titlename=titleValue;
while(titlename.indexOf(" ")!=-1){
titlename=titlename.replace(" ","");
}
var rootname;
var dotindex=file.lastIndexOf(".");
if(dotindex>0){
var fhtm=file.substring(dotindex,dotindex+3);
if(fhtm!="htm"){
rootname=file;
file+=".htm";
}
else{
rootname=file.substring(0,dotindex);
}
}
else{
rootname=file;
file+=".htm";
}
var fname=file;
slash=rootname.lastIndexOf("\\")+1;
if(top.widget)slash=rootname.lastIndexOf("/")+1;
legendDir=rootname.substring(slash);
var XHTML=makeMap(fname,titleValue,ogcclient,includeKML);
var fso;
if(!XHTML)return;
saveLocalFile(fname,XHTML);
if(!top.widget){
if(legendsSaved&&legendsSaved.length){
if(typeof ActiveXObject!="undefined"){
fso=new ActiveXObject("Scripting.FileSystemObject");
try{
fso.DeleteFolder(rootname);
}
catch(err){
}
fso.CreateFolder(rootname);
}
for(var i=0;i<legendsSaved.length;++i){
var leg=legendsSaved[i];
var fpath=BaseDir+leg.name;
fpath=fpath.replace("/","\\");
saveImg(leg.url,fpath);
}
}
}
var KML=saveKMLDoc(true,titleValue,"Saved From TNTmap");
var kmlfilename=fname+".kml";
saveLocalFile(kmlfilename,KML);
}
}
var FavoriteServerUrls=[];
var FavoriteContextUrls=[];
var contextvar="context";
var totalfaves;
function selectUrl(sid){
len=FavoriteContextUrls.length+FavoriteServerUrls.length+1;
if((faveidx+1)>len)len=faveidx+1;
for(var i=0;i<len;i++){
var it=document.getElementById('fsc'+i);
if(it)it.className='usurl';
}
var seld=document.getElementById(sid);
if(seld)seld.className='selurl';
}
function AddToFavorites(url){
if(!standalone){
alert("Saving favorite server urls not implemented for non-local usage");
return;
}
var fave={
};
fave.url=url;
var found=false;
var replaced=false;
var foundat=-1;
var servername;
var urls;
var ctexts=false;
var chtm="";
if(url.substring(url.length-4)==".cml"){
urls=FavoriteContextUrls;
ctexts=true;
}
else{
urls=FavoriteServerUrls;
}
for(var i=0;i<urls.length;i++){
if(urls[i].url==url){
if(!top.widget){
var ch=confirm("Server already saved as "+urls[i].name+" do you wish to rename?");
}
if(ch){
foundat=i;
replaced=true;
}
else{
return;
}
}
}
if(!found||replaced){
if(top.widget){
servername=serverName;
}
else{
servername=prompt("Input name to associate with this url:\n"+url,serverName);
}
if(replaced&&servername)urls[foundat].name=servername;
}
if(replaced){
return;
}
if(servername){
fave.name=servername;
if(!found){
var c;
if(ctexts){
c=document.getElementById("favecontexts");
}
else{
c=document.getElementById("faveservers");
}
faveidx++
var remaction;
if(ctexts){
FavoriteContextUrls.push(fave);
remaction="remFaveUrl("+FavoriteContextUrls.length+","+faveidx+",contextvar);";
}
else{
FavoriteServerUrls.push(fave);
remaction="remFaveUrl("+FavoriteServerUrls.length+","+faveidx+");";
}
chtm+="<div id=\"fsc"+faveidx
+"\" class=\"usurl\" style=\"cursor:pointer;width:100%;padding:1px;margin:0px\" > ";
chtm+="<span onmousedown=\"selectUrl('fsc"+faveidx+"');currFaveName='"+servername
+"';currFaveUrl='"+url+"';remAction='"+remaction+"';\">&nbsp;";
chtm+=fixXML(servername);
chtm+="<br /><\/div>";
c.innerHTML+=chtm;
if(top.widget){
showMess(servername+" added to favorites",2000);
}
}
}
saveFavorites(ctexts);
}
function replaceAmps(str){
var amp=/\&|\&amp\;/;
while(str.match(amp)){
str=str.replace(amp,"__");
}
while(str.match(/__/)){
str=str.replace(/__/,"&amp;");
}
return(str);
}
function saveLocalXML(filename,xml,what){
setStatus("Saving "+what);
if(typeof ActiveXObject!="undefined"){
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.validateOnParse=false;
xmlDoc.resolveExternals=false;
xmlDoc.loadXML(xml);
if(xmlDoc.parseError.errorCode){
alert("Unable to save "+what+" \n"+xmlDoc.parseError.reason+" line:"+xmlDoc.parseError.line);
showIt(xml);
}
else{
try{
xmlDoc.save(filename);
setStatus("Finished saving "+what);
}
catch(err){
setStatus("Unable to save "+what);
}
}
}
if(top.widget){
top.widget.system("/usr/bin/perl write.pl \""+filename+"\" '"+escape(xml)+"'",null);
}
}
function saveFavorites(contexts,forTheWeb){
if(!standalone||forTheWeb)return;
if(!contexts){
var xml="<registryList>\n";
for(var i=0;i<FavoriteServerUrls.length;i++){
var serverurl=unescape(FavoriteServerUrls[i].url);
if(FavoriteServerUrls[i].name!=null){
xml+="<server>";
xml+="<name>"+replaceAmps(FavoriteServerUrls[i].name);
xml+="</name>";
xml+="<url><![CDATA["+replaceAmps(serverurl);
xml+="]]></url>";
xml+="</server>\n";
}
}
xml+="</registryList>";
saveLocalXML("favorites.xml",xml,"Favorites");
}
else{
if(FavoriteContextUrls.length){
var xml=
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ViewContextCollection version=\"1.1.0\" xmlns=\"http://www.opengeospatial.net/context\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengeospatial.net collection.xsd\">\n";
for(var i=0;i<FavoriteContextUrls.length;i++){
var n=FavoriteContextUrls[i].name
if(n!==null){
xml+="<ViewContextReference version=\"1.1.0\" id=\"c"+i+"\">\n";
xml+="<Title>"+replaceAmps(FavoriteContextUrls[i].name);
xml+="</Title>\n";
xml+="<ContextURL>\n<OnlineResource xlink:type=\"simple\" xlink:href=\""
+replaceAmps(unescape(FavoriteContextUrls[i].url))+"\"/>\n";
xml+="</ContextURL></ViewContextReference>\n";
}
}
xml+="</ViewContextCollection>";
saveLocalXML("favorites.ccml",xml,"Favorites");
}
}
}
function requestRegistry(){
if(typeof showModelessDialog!="undefined"&&standalone){
showModelessDialog('settings.hta',top,'status:false;dialogWidth:475px;dialogHeight:165px');
}
else{
var set=window.open('settings.htm','settings','statusbar=0,width=475,height=165');
set.focus();
}
}
function x_getBool(tag){
var el=this.x.getElementsByTagName(tag);
var ret=false;
try{
var fc=el.item(0).firstChild;
if(fc&&typeof fc!="undefined"&&fc.nodeValue=="true")ret=true;
}
catch(err){
}
return ret;
}
function x_getString(tag,def){
var el=this.x.getElementsByTagName(tag);
try{
var fc=el.item(0).firstChild;
if(fc&&typeof fc!="undefined"){
def=fc.nodeValue;
}
}
catch(err){
}
return def;
}
function xDoc(xml){
this.x=xml;
this.getStr=x_getString;
this.getBool=x_getBool;
}
function readFromView(win){
try{
if(win.ogcmaps.ogc||win.ogcmaps.loc){
var stylere=/STYLE/i;
var filterre=/FILTER/i;
var versionre=/VERSION/i;
var layersre=/LAYERS/i;
var formatre=/FORMAT/i;
var queryablere=/queryable/i;
var hyper=/hyper/i;
var latlon=/LLBOX/i;
var url="";
if(win.ogcmaps.loc){
var logc=win.ogcmaps.loc;
for(var im=0;im<logc.images.length;im++){
var img=logc.images[im];
var src;
if(img.realSrc)src=new String(img.realSrc);
else src=new String(img.src);
var end=src.indexOf("REQUEST=");
if(end<0){
end=src.indexOf("Request=");
}
if(end<0){
end=src.indexOf("request=");
}
url=src.substring(0,end);
var indiv=src.split("&");
var style='';
var filter='';
var version='1.1.1';
var format="image/png";
var ln;
for(var i=0;i<indiv.length;++i){
var pair=indiv[i].split("=");
val=unescape(pair[1]);
if(pair[0].match(stylere)){
style=val;
}
else if(pair[0].match(filterre)){
filter=val;
}
else if(pair[0].match(versionre)){
version=val;
}
else if(pair[0].match(layersre)){
ln=unescape(val);
}
else if(pair[0].match(formatre)){
format=val;
}
}
var q="";
var styles=[];
var filter="";
var n,e,s,w;
var id;
var title=ln;
if(img.title)title=unescape(img.title);
var layer=new Layer(h,ln,url,title,filter,LURL,lh,lw,q,styles,n,e,s,w);
layer.url=url;
layer.inOverview=true;
var boundsArray=[];
boundsArray[0]=new Bounds(minx,miny,maxx,maxy,SRS);
layer.bounds=boundsArray;
layer.version=version;
layer.format=0;
layer.formats=[];
layer.formats[0]=format;
overviewList.push(layer);
}
writeLayers('ov');
}
if(win.ogcmaps.ogc){
var aogc=win.ogcmaps.ogc;
if(!aogc.SRS&&win.top&&win.SRS){
aogc.srs=win.SRS;
}
SRS=aogc.SRS;
minx=aogc.xmin;
miny=aogc.ymin;
maxx=aogc.xmax;
maxy=aogc.ymax;
setExtents(null,aogc.srs,aogc.xmin,aogc.ymin,aogc.xmax,aogc.ymax);
for(var im=0;im<aogc.images.length;im++){
var img=aogc.images[im];
var src;
if(img.realSrc)src=new String(img.realSrc);
else src=new String(img.src);
var end=src.indexOf("REQUEST=");
if(end<0){
end=src.indexOf("Request=");
}
if(end<0){
end=src.indexOf("request=");
}
url=src.substring(0,end);
var indiv=src.split("&");
var style='';
var filter='';
var version='1.1.1';
var format="";
var latlon="";
var q="";
var h=0;
var ln;
for(var i=0;i<indiv.length;++i){
var pair=indiv[i].split("=");
val=pair[1];
if(pair[0].match(stylere)){
style=val;
}
else if(pair[0].match(filterre)){
filter=val;
}
else if(pair[0].match(versionre)){
version=val;
}
else if(pair[0].match(layersre)){
ln=unescape(val);
}
else if(pair[0].match(formatre)){
format=val;
}
else if(pair[0].match(queryablere)){
q=val;
}
else if(pair[0].match(hyper)){
h=val;
}
else if(pair[0].match(latlon)){
latlon=new String(val);
}
}
var lid=img.id;
var legindex=parseInt(lid.substring(3));
var li="li_"+legindex;
var lim="lim"+legindex;
var legi=win.document.getElementById(li);
var leguri=win.document.getElementById(lim);
var LURL="";
var lh=0;
var lw=0;
if(leguri){
if(leguri.realSrc){
LURL=unescape(leguri.realSrc);
}
else{
LURL=unescape(leguri.src);
}
lh=leguri.height;
lw=leguri.width;
}
var styles=[];
var filter="";
var n,e,s,w;
if(latlon!=""){
var ext=latlon.split(',');
w=ext[0];
s=ext[1];
e=ext[2];
n=ext[3];
}
var title=ln;
if(img.title)title=unescape(img.title);
var layer=new Layer(h,ln,url,title,filter,LURL,lh,lw,q,styles,n,e,s,w);
layer.minscale=win.minscale[im];
layer.maxscale=win.maxscale[im];
layer.url=url;
var boundsArray=[];
boundsArray[0]=new Bounds(minx,miny,maxx,maxy,SRS);
layer.bounds=boundsArray;
layer.inLayers=true;
layer.version=version;
layer.format=0;
layer.formats=[];
layer.formats[0]=format;
layerList.push(layer);
}
writeLayers();
}
}
}
catch(err){
}
}
var serviceids=["wms","wfs"];
function toggleServices(fid){
var el;
for(var i=0;i<serviceids.length;i++){
if(serviceids[i]!=fid){
el=document.getElementById(serviceids[i]);
if(el){
el.style.display="none";
}
}
}
el=document.getElementById(fid);
if(el){
el.style.display="";
}
}
var wfsregistry="http://www.microimages.com/ogc/services_wfs.xml";
top.wfsregistry=wfsregistry;
function loadIni(){
if(typeof(dialogArguments)!='undefined'){
opener=dialogArguments;
}
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var gcform=document.getElementById("lasturl");
if(gcform){
if(wmsurl.indexOf("\\")!=-1){
gcform.value=singleSlash(wmsurl);
}
else{
gcform.value=wmsurl;
}
}
if(wmsurl&&overviewList.length<1){
loadDefaultOverview();
writeLayers();
}
if(standalone){
wmsregistry="services.xml";
wfsregistry="services_wfs.xml";
}
if(opener&&typeof gcform!="undefined"){
var addme;
if(opener.main){
readFromView(opener.main);
}
else{
readFromView(opener);
}
showMess("Loading Server List",1000);
loadServers(wmsregistry,false,mostrecentregistry,false,null,false);
loadServers(wfsregistry,false,'Web Feature Service Lists',false,null,true);
try{
if(loadcapabilities){
serverName="Default Server";
if(standalone)serverName="Previous Server";
GetCap(wmsurl,null,false,false,serverName);
}
}
catch(err){
alert(err.message);
}
}
else{
var sap=win.document.getElementById('highlight');
if(sap&&highlightOn){
sap.checked='checked';
}
sap=win.document.getElementById('showAbstracts');
if(sap&&showAbstracts)sap.checked='checked';
var gcform=win.document.forms['getcap'];
if(typeof gcform!="undefined"){
writeLayers();
try{
showMess("Loading Favorites",1000);
if(standalone){
setTimeout(
"loadServers('favorites.xml',true,'Saved Server URLs',true);loadServers('favorites.ccml',true,'Saved Context URLs',true);",
5000);
}
}
catch(err){
}
showMess("Loading Service List",1000);
loadServers(wmsregistry,false,mostrecentregistry,false,null,false);
loadServers(wfsregistry,false,'Web Feature Service Lists',false,null,true);
}
if(standalone&&typeof loadlastcontext!="undefined"&&loadlastcontext){
GetCap("context.cml",null,false,true,mostrecentview);
}
var getcapurl=wmsurl;
if(typeof loadcapabilities=="undefined"){
loadcapabilities=true;
}
if(getcapurl&&loadcapabilities){
GetCap(getcapurl,null,false,false,"Previous Server");
}
}
}
function addToServerList(opt){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
try{
var sel=win.document.getElementById('urllist');
if(typeof sel=="undefined")return;
var found=false;
for(var s=1;s<sel.options.length;s++){
if(sel.options[s].value==opt.value){
found=true;
break;
}
}
}
catch(err){
return
}
;
if(!found){
try{
sel.add(opt,null);
}
catch(ex){
sel.add(opt);
}
}
}
var launchWindow={
};
launchWindow.w=640;
launchWindow.h=480;
var sources=[];
function toggleId(mid){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var el=win.document.getElementById("src"+mid);
var tel=win.document.getElementById("tog"+mid);
if(el&&el.style.display=="none"){
el.style.display="";
if(tel)tel.src="images/minus.gif";
}
else{
if(el)el.style.display="none";
if(tel)tel.src="images/plus.gif";
}
}
function remFaveUrl(idnum,idx,ftype){
var fave=document.getElementById("fsc"+idx);
if(fave)fave.style.display="none";
if(idnum!==null){
if(ftype=="context"){
FavoriteContextUrls[idnum-1].name=null;
FavoriteContextUrls[idnum-1].url=null;
saveFavorites(true);
}
else{
FavoriteServerUrls[idnum-1].name=null;
FavoriteServerUrls[idnum-1].url=null;
saveFavorites(false);
}
}
}
var faveidx=0;
function curl(url){
var com='curl '+url+' > dl.kml;open dl.kml';
alert(com);
top.widget.system(com,null);
}
function serverCode(url,servername,parnode,servertitle){
var cs=new ServerInfo(url,servername);
cs.treeid=serverInfoList.length;
serverInfoList.push(cs);
var last3=url.substring(url.length-4);
var last4=url.substring(url.length-5);
var ol=0;
if(parnode!==null){
ol=24;
}
if(last3==".htm"||last4==".html"||url.indexOf(".htm?")!=-1){
htm="<p style=\"cursor:pointer;cursor:hand;margin:0;margin-left:"+ol+"px\" onclick=\"GetCap(unescape('"
+url+"'));\"  >";
htm+="<img title=\"Show In Browser\" id=\"togtree"+cs.treeid+"\" style=\"height:15px;cursor:pointer\" src=\"images/viewer_vs.png\" />"+servername
+"</p>";
}
else if(last3==".kml"||last3==".kmz"){
htm="<p style=\"cursor:pointer;cursor:hand;margin:0;margin-left:"+ol+"px\" onclick=\"GetCap(unescape('"
+url+"'),3,3);\"  >";
htm+="<img title=\"Launch KML File\" id=\"togtree"+cs.treeid+"\" style=\"height:15px;cursor:pointer\" src=\"images/google_vs.png\" />"+servername
+"</p>";
}
else if(last3==".cml"){
htm="<p style=\"cursor:pointer;cursor:hand;margin:0;margin-left:"+ol+"px\" onclick=\"GetCap(unescape('"
+url+"'));\"  >";
htm+="<img title=\"Load into List\" id=\"togtree"+cs.treeid
+"\" style=\"height:15px;cursor:pointer\" src=\"images/star_vs.png\" />"+servername+"</p>";
}
else{
if(!servertitle){
var tit=unescape(url).replace("http://","");
tit=tit.split("/");
servertitle=tit[0];
}
htm="<p id='st"+cs.treeid+"' title=\""+servertitle
+"\" class=\"unloaded\" style=\"cursor:pointer;margin:0px;margin-left:14px;padding:0px\" >";
htm+="<img title=\"Show or Hide capabilities\" style=\"cursor:pointer;cursor:hand\" id=\"togtree"+cs.treeid
+"\" src=\"images/plus.gif\" onclick=\"var ts = document.getElementById('srctree"+cs.treeid
+"');if(ts.innerHTML==''){ GetCap(unescape('"+url+"'),"+cs.treeid
+");}else{ toggleId('tree"+cs.treeid+"'); }\" />";
htm+="<span onclick=\"GetCap(unescape('"+url+"'),"+cs.treeid+");\" >";
htm+=servername+"</span></p>";
htm+="<div style=\"margin:0px;margin-left:12px;padding:0px\" id=\"srctree"+cs.treeid+"\"></div>\n";
}
return htm;
}
var currFaveIdx;
var remAction;
var currFaveUrl;
var currFaveName;
function launchCurrFaveUrl(){
GetCap(unescape(currFaveUrl),null,true,true,currFaveName);
}
function remCurrFaveUrl(){
eval(remAction);
}
function parseServers(xmlDoc,favorites,sourceName,mine,treeid,fromLoadServers,isWFS){
var servers=xmlDoc.getElementsByTagName('server');
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var dest;
var isContext=false;
if(servers.length===0){
servers=xmlDoc.getElementsByTagName('ViewContextReference');
dest=win.document.getElementById("favecontexts");
isContext=true;
}
else{
dest=win.document.getElementById("faveservers");
}
var optGroup=win.document.createElement('OPTGROUP');
if(!sourceName){
sourceName="Service List(s)";
}
optGroup.label=sourceName;
var source={
};
source.name=sourceName;
source.id=sources.length;
sources.push(source);
var htm;
if(!fromLoadServers){
htm="<div style=\"margin:0px;padding:0px\" id=\"src"+sources.length+"\" >";
}
else{
htm="<p class='tipname'  style=\"margin:0px;padding:0px;color:black\" onclick=\"toggleId('"+sources.length
+"')\" ><img id=\"tog"+sources.length+"\" src=\"images/plus.gif\">"+sourceName
+"</p><div style=\"margin:0px;padding:0px\" id=\"src"+sources.length+"\" >";
}
for(var s=0;s<servers.length;s++){
var url="";
var servername="";
var servertitle="";
var h;
var w;
var type=servers.item(s).getAttribute("type");
for(var c=0;c<servers.item(s).childNodes.length;c++){
var kid=servers.item(s).childNodes.item(c);
if(kid.nodeName=="title"||kid.nodeName=="Title"||kid.nodeName=="name"){
if(kid.firstChild){
if(servername){
servertitle=servername;
}
servername=kid.firstChild.nodeValue;
}
}
if(kid.nodeName=="ContextURL"){
url=getURLFromNode(kid);
}
if(kid.nodeName=="url"||kid.nodeName=="capabilities"){
if(kid.firstChild){
url=escape(kid.firstChild.nodeValue);
}
}
if(kid.nodeName=="country"){
if(kid.firstChild){
servername=Unknown+" "+kid.firstChild.nodeValue+" WMS ("+s+")";
}
}
}
if(url){
var fave={
};
fave.name=servername;
url.replace("'","");
fave.url=url;
var last3=url.substring(url.length-4);
var last4=url.substring(url.length-5);
var htmlurl=false;
var kmlurl=false;
if(last3==".htm"||last4==".html"){
htmlurl=true;
}
if(last3==".kml"||last3==".kmz"){
kmlurl=true;
}
var iconsrc="images/star_vs.png";
if(htmlurl){
iconsrc="images/viewer_vs.png ";
}
if(kmlurl){
iconsrc="images/ge.png";
}
if(favorites){
faveidx++;
var remaction;
var fl;
if(isContext){
if(mine){
FavoriteContextUrls.push(fave);
fl=FavoriteContextUrls.length;
}
else{
fl="null";
}
remaction="remFaveUrl("+fl+","+faveidx+",contextvar);";
}
else{
if(mine){
FavoriteServerUrls.push(fave);
fl=FavoriteServerUrls.length;
}
else{
fl="null";
}
remaction="remFaveUrl("+fl+","+faveidx+");";
}
htm+="<div id=\"fsc"+faveidx
+"\" class=\"usurl\" style=\"cursor:pointer;width:100%;padding:1px;margin:0px\" > ";
htm+="<span ondblclick=\"GetCap(unescape('"+url+"'),null,false,false,'"+servername
+"');\" onclick=\"selectUrl('fsc"+faveidx+"');currFaveUrl='"+url+"';remAction='"
+remaction+"';currFaveName='"+servername+"';";
if(fromLoadServers){
htm+="document.getElementById('loadIcon').src='"+iconsrc+"';";
}
htm+="\">&nbsp;";
if(!fromLoadServers){
htm+="<img height=15 width=15 src=\""+iconsrc+"\" />\n";
}
htm+=servername;
htm+="</span>";
htm+="</div>";
}
else{
nobr=false;
htm+=serverCode(url,fixXML(servername),null,fixXML(servertitle),(s==(servers.length-1)));
}
}
}
htm+="</div>";
if(favorites){
if(dest)dest.innerHTML+=htm;
}
else{
var ro=win.document.getElementById("srctree"+treeid);
var st=win.document.getElementById("st"+treeid);
if(st)st.className="loaded";
if(ro){
ro.innerHTML=htm;
}
else{
var sc;
var st="wfs";
if(isWFS){
sc=win.document.getElementById("wfs");
}
else{
sc=win.document.getElementById("wms");
st="wms";
}
if(sc){
sc.innerHTML=htm+sc.innerHTML;
}
}
}
setStatus("Finished adding Map Contexts / Servers");
if(!favorites){
showMess("Finished adding services / map contexts to Services panel",2000);
}
}
var registryrepeats=0;
function loadServers(url,favorites,serverListName,ismine,treeid,isWFS){
var fullurl;
if(!url||typeof url=="undefined"||url=="undefined"){
url="http://www.microimages.com/ogc/servers.xml";
}
if(standalone||isLocal(url)){
fullurl=url;
}
else{
getcapproxy=fixUrlEnd(getcapproxy,true);
fullurl=getcapproxy+"url="+escape(url);
}
var xmlreq;
/*@cc_on @*/
/*@if(@_jscript_version>=5)
try{
xmlreq=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlreq=new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlreq=false;
}
}
@end @*/
if(!xmlreq&&typeof XMLHttpRequest!='undefined'){
xmlreq=new XMLHttpRequest();
if(xmlreq.overrideMimeType)xmlreq.overrideMimeType("text/xml");
}
xmlreq.open("GET",fullurl,true);
xmlreq.onreadystatechange=function(){
switch(xmlreq.readyState){
case 4:
setStatus(finished+" Server List");
var response=xmlreq.responseText;
if(typeof ActiveXObject!="undefined"){
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
var response=xmlreq.responseText;
xmlDoc.validateOnParse=false;
xmlDoc.resolveExternals=false;
xmlDoc.loadXML(response);
if(xmlDoc.parseError.errorCode){
setStatus("Cannot connect to registry! "+xmlDoc.parseError.reason+" line:"
+xmlDoc.parseError.line);
}
else{
parseServers(xmlDoc,favorites,serverListName,ismine,treeid,true,isWFS);
}
}
else{
if(xmlreq.responseXML){
var xmlDoc=xmlreq.responseXML;
setStatus("xml response received");
parseServers(xmlDoc,favorites,serverListName,ismine,treeid,true,isWFS);
registryrepeats=0;
}
else{
if(xmlreq.status==200){
setStatus("Incomplete/Improper xml response received");
}
else{
setStatus("Registry does not appear correct! headers:"+xmlreq.getAllResponseHeaders());
if(xmlreq.responseText)showIt(xmlreq.responseText);
}
}
}
break;
case 3:
setStatus(receiving+" GetCapabilities url list");
break;
case 2:
setStatus(waiting+" for GetCapabilities url list");
break;
case 1:setStatus("Requesting GetCapabilities url list from registry @ "+fullurl);
}
}
setStatus(sending);
xmlreq.send(null);
}
var titleblink;
function showTitle(evt){
if(titleblink)clearTimeout(titleblink);
var td=document.getElementById('tooltip');
if(td.innerHTML=="")return;
var lv=document.getElementById("layerChoices");
var targ;
if(!evt)evt=window.event;
if(evt.target)targ=evt.target;
else if(evt.srcElement)targ=evt.srcElement;
if(targ.nodeType==3)targ=targ.parentNode;
var mp;
if(targ){
mp=findPos(targ);
}
else{
mp=getMouse(evt);
}
td.style.top=(mp.y-20-lv.scrollTop)+"px";
td.style.left=document.getElementById("locArea").style.left;
td.style.zIndex=6500;
td.style.fontSize="9px";
td.style.background="#e4efff";
td.style.border="solid black 1px";
td.style.display="";
}
function testIsHTML(str){
var reg=/<br>/;
if(reg.test(str))return true;
reg=/<div*>/;
if(reg.test(str))return true;
reg=/<table*>/;
if(reg.test(str))return true;
reg=/<p*>/;
if(reg.test(str))return true;
reg=/<br*\/>/;
return(reg.test(str));
}
function findPos(obj){
var curleft=curtop=0;
if(obj.offsetParent){
curleft=obj.offsetLeft
curtop=obj.offsetTop
while(obj=obj.offsetParent){
curleft+=obj.offsetLeft
curtop+=obj.offsetTop
}
}
var pos=
{
"x":curleft,
"y":curtop
};
return pos;
}
function setTitle(evt,title){
var td=document.getElementById('tooltip');
var tstr=unescape(title);
var isHTM=testIsHTML(tstr);
var lv=document.getElementById("layerChoices");
lv.onmouseover=showTitle;
lv.onmouseout=hideTitle;
td.innerHTML=tstr;
td.style.position="absolute";
if((tstr.length>80)&&(isHTM!=true)){
td.style.width="350px";
}
else{
td.style.width="";
}
}
function hideTitle(){
document.getElementById("tooltip").style.display="none";
document.getElementById("tooltip").innerHTML="";
}
function computeBounds(ln,proj){
minx=minx;
miny=miny;
maxx=maxx;
maxy=maxy;
var LL=layerList;
if(LL.length==0)return;
var db=[];
if(typeof ln=="undefined"){
var usingprevious=false;
if(manualExtents&&minx!=maxx&&miny!=maxy){
var b=new Bounds(minx,miny,maxx,maxy,SRS);
usingprevious=true;
db.push(b);
}
}
if(ln&&typeof ln!="undefined"){
LL=[];
LL.push(layerList[ln]);
}
for(var m=0;m<LL.length;m++){
var blist=LL[m].bounds;
for(var b=0;b<blist.length;b++){
var crsnew=true;
var wb=blist[b];
var wi;
for(var c=0;c<db.length;c++){
if(db[c].crs==wb.crs){
crsnew=false;
wi=c;
break;
}
}
if(crsnew){
var bb=new Bounds(wb.w,wb.s,wb.e,wb.n,wb.crs);
db[db.length]=bb;
}
else{
if(!usingprevious)db[wi].extend(wb);
}
}
}
if(typeof db[0].crs!="undefined"){
if(db[0].crs=="EPSG:4326"||db[0].crs=="CRS:84"){
if(db[0].n>90.0){
db[0].n=90.0;
}
if(db[0].s<-90.0){
db[0].s=-90.0;
}
if(db[0].e>180.0){
db[0].e=180.0;
}
if(db[0].w<-180.0){
db[0].w=-180.0;
}
}
}
if(db[0].e==db[0].w||db[0].n==db[0].s){
alert("Invalid Extents : "+db[0]);
return 0;
}
if(giveChoice){
}
else{
var bb=db[0];
}
if(typeof(proj)!='undefined'){
for(b=0;b<db.length;b++){
var crs=db[b].crs;
if(crs=="CRS:84"){
crs="EPSG:4326";
}
if(crs==proj){
return db[b];
}
}
}
return(bb);
}
function addToView(){
launchView(true);
}
function launchView(addTo,sameWindow){
var html="";
var restoreOverview=overviewList;
var restoreLayers=layerList;
var featurecount=0;
var LL=[];
for(var j=0;j<layerList.length;j++){
if(layerList[j].isFeature){
featurecount++;
}
else{
LL.push(layerList[j]);
}
}
if(LL.length<1){
var mess="No layers selected for the main view.";
if(top.widget){
mess+=" Showing previous view.";
showMess(mess,3000);
var viewer=document.getElementById("viewer");
if(viewer.location.href!="viewer_a.htm")viewer.src="viewer_a.htm";
showViewer();
}
else{
if(top.standalone){
mess+=" Showing previous view.";
showMess(mess,5000);
top.exec("viewer.hta");
return;
}
if(overviewList.length){
mess+=" Showing overview layers.";
SRS="EPSG:4326";
minx=-180;
miny=-90;
maxx=180;
maxy=90;
boundsalreadyset=true;
showMess(mess,3000);
LL=overviewList;
}
else{
showMess(mess,3000);
return;
}
}
}
if(SRS=="CRS:1"||SRS=="EPSG:NONE"&&overviewList.length){
var crsmatch=false;
for(var i=0;i<overviewList.length;i++){
var bl=overviewList[i].bounds;
for(var bc=0;bc<bl.length;bc++){
if(bl[bc]){
if(bl[bc].crs=="CRS:1"||SRS=="EPSG:NONE"){
crsmatch=true;
}
}
}
}
if(!crsmatch){
overviewList=LL;
}
}
if(addTo){
var win;
for(var op=prevOpened.length-1;op>-1;op--){
if(typeof prevOpened[op]!="undefined"){
win=prevOpened[op];
if(!win.closed)break;
}
}
var validwin=true;
var unfound=false;
if(typeof win=="undefined"||(win&&win.closed)){
try{
if(typeof opener!="undefined"&&!opener.closed){
win=opener;
}
}
catch(err){
unfound=true;
var mess="Window not found";
if(top.widget)showMess(mess,3000);
else alert(mess);
}
}
if(unfound||typeof win=="undefined"||(win&&win.closed)){
}
else{
var ma;
var activeMain;
try{
if(standalone){
activeMain=win.frames['main'];
}
else{
activeMain=win;
}
ma=activeMain.document.getElementById('maparea');
}
catch(err){
validwin=false;
}
try{
if(validwin&&typeof(activeMain.ogcmaps)!="undefined"){
var lu=activeMain.ogcmaps.ogc.latestupdate;
SRS=activeMain.ogcmaps.ogc.SRS;
var csv=lu.substring(5);
var coords=csv.split(',');
minx=coords[0];
miny=coords[1];
maxx=coords[2];
maxy=coords[3];
boundsalreadyset=true;
}
else{
validwin=false;
}
}
catch(err){
validwin=false;
}
}
}
var bb;
if(!boundsalreadyset){
bb=computeBounds();
}
else{
bb=new Bounds(minx,miny,maxx,maxy,SRS);
}
setExtentsFromBounds(bb);
if(typeof bb=="undefined"){
alert("No bounds found for view");
return;
}
var height=bb.n-bb.s;
var width=bb.e-bb.w;
var h1,h2;
var w1,w2;
var h=0;
var w=0;
if(!maxHeight&&!maxWidth){
maxHeight=240;
}
var usingLocator=(typeof overviewList[0]!="undefined"&&overviewList.length>0);
var sl=1;
if(usingLocator){
sl+=ovPorportion;
}
var screenLimW=screen.availWidth*sl;
var screenLimH=screen.availHeight;
if(screenLimW&&screenLimH){
if(maxWidth>(screenLimW+32))maxWidth=screenLimW-32;
if(maxHeight>(screenLimH+64))maxHeight=screenLimH-64;
}
if(!distort){
if(maxHeight){
h1=maxHeight;
w1=parseInt(width*h1 / height);
}
if(maxWidth){
w2=maxWidth;
h2=parseInt(height*w2 / width);
}
if(h2<h1){
h=h2;
w=w2;
}
else{
h=h1;
w=w1;
}
w=parseInt(w);
h=parseInt(h);
}
else{
h=maxHeight;
w=maxWidth;
}
var idir=getInstallDir();
map=composeMap(LL,"ogc",5,1.0,idir,bb);
if(!map)return;
if(standalone){
try{
if(typeof fso!="undefined")fso.DeleteFile("context.cml");
}
catch(err){
}
saveCMLDoc(false,"context.cml","Current View","Current View context",false,false,"overview.cml");
setTimeout('saveCMLDoc(false, "overview.cml", "Overview", "Current Overview Context", false, true);',1000);
setTimeout('saveKMLDoc(false, "ge.kml", "Current View", "Default context", 0, 0, true);',2000);
}
else{
CML=saveCMLDoc(true,"context.cml","Current View","default context",false);
}
if(srsname==""){
goahead=true;
if(!top.widget){
showMess(
"Unable to determine Coordinate Reference System information\nCertain functions such as measurement and default overview) may not work properly",
1000);
}
overviewList=LL;
}
if(usingLocator){
locator=composeMap(overviewList,'loc',locstart,ovPorportion,idir,bb);
}
else{
locator="";
}
if(top.widget){
showViewer();
return;
}
if(standalone&&sameWindow){
var wine;
if(parent.main){
wine=parent.main;
}
else{
wine=window;
}
wine.location="viewer.htm";
return
}
w=parseInt(w)+16;
if(!noLegend)w+=parseInt(maxlegwidth);
h=parseInt(h)+66;
if(addTo)h+=50;
if(!document.all){
w+=8;
h+=16;
}
else{
var ua=navigator.userAgent;
var re=new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if(re.exec(ua)!=null)rv=parseFloat(RegExp.$1);
if(rv<7.0){
h+=30;
}
}
if(isSafari){
h+=30;
}
if(LL.length){
if(map){
if(addTo){
addToMap(map,h,w);
boundsalreadyset=false;
}
else{
showMap(map,h,w);
}
}
}
else{
showIt(html,h,w);
}
SRS=SRS;
overviewList=restoreOverview;
layerList=restoreLayers;
}
function composeMap(LL,cls,zindex,percentage,ogcclient,bds,justInfo){
if(typeof bds=="undefined")return 0;
if(LL.length==0){
if(cls!="loc"){
var mess="No layers specified";
if(!justInfo){
showMess(mess,2000);
}
}
return 0;
}
var html="";
html="";
if(!ogcclient)ogcclient=getInstallDirectory();
if(bds.e==bds.w||bds.n==bds.s){
var mess="Invalid Extents "+bounds.toCSV();
if(top.widget)showMess(mess,3000);
else alert(mess);
return 0;
}
var height=bds.n-bds.s;
var width=bds.e-bds.w;
var h1,h2;
var w1,w2;
var h=0;
var w=0;
if(!maxHeight&&!maxWidth){
maxHeight=240;
}
if(maxHeight){
h1=maxHeight;
w1=parseInt(width*h1 / height);
}
if(maxWidth){
w2=maxWidth;
h2=parseInt(height*w2 / width);
}
if(h2<h1){
h=h2;
w=w2;
}
else{
h=h1;
w=w1;
}
w=parseInt(w);
h=parseInt(h);
imageHeight=h;
imageWidth=w;
targetHome="BBOX="+bds.toCSV();
var srsvers="";
var legcode="";
legendcode="";
var j;
if(cls!="loc"){
var multigroups=true;
serverList=[];
var PS=[];
for(i=0;i<LL.length;i++){
if(LL[i].parens!==null&&typeof LL[i].parens!="undefined"&&choiceList[LL[i].parens].queryable){
parenfound=false;
for(j=0;j<PS.length;j++){
if(PS[j]==choiceList[LL[i].parens]){
parenfound=true;
}
}
if(!parenfound&&choiceList[LL[i].parens].queryable){
PS.push(choiceList[LL[i].parens]);
}
}
else{
if(LL[i].queryable){
PS.push(LL[i]);
}
}
}
for(i=0;i<PS.length;i++){
var notfound=true;
for(var j=0;j<serverList.length;j++){
if(PS[i].url==serverList[j].url){
serverList[j].layers+=","+PS[i].name;
if(serverList[j].querylayers)serverList[j].querylayers+=",";
var n=PS[i].name;
if(!PS[i].compositeName)n=escape(n);
serverList[j].querylayers+=n;
if(PS[i].hyperindexed){
if(serverList[j].hyperlayers)serverList[j].hyperlayers+=",";
var n=PS[i].name;
if(!PS[i].compositeName)n=escape(n);
serverList[j].hyperlayers+=n;
}
notfound=false;
}
}
if(notfound){
if(PS[i]&&PS[i].url){
var server=new Server(PS[i].url);
server.url=PS[i].url;
var n=PS[i].name;
if(!PS[i].compositeName)n=escape(n);
server.querylayers=n;
if(PS[i].hyperindexed){
server.hyperlayers=n;
}
server.version=PS[i].version;
server.layers=n;
server.infotype=PS[i].infotype;
if(LL[i].queryURL){
server.queryURL=PS[i].queryURL;
}
else{
server.queryURL=PS[i].url;
}
server.format=PS[i].formats[0];
server.name=PS[i].serverName;
server.isTNT=PS[i].isTNT;
serverList[serverList.length]=server;
}
}
}
infoRequests=[];
hyperRequests=[];
for(i=0;i<serverList.length;i++){
if(!serverList[i].infotype||typeof(serverList[i].infotype)=='undefined'){
serverList[i].infotype='text/html';
}
if(serverList[i].version=="1.1.1"){
srsvers="&SRS="+SRS;
}
else if(parseFloat(serverList[i].version)<1.3){
srsvers="&SRS="+SRS;
}
else{
srsvers="&CRS="+SRS;
}
if(serverList[i].url!="undefined"&&serverList[i].querylayers){
var ir={
};
ir.name=serverList[i].name;
ir.url=serverList[i].url;
ir.url+="REQUEST=GetFeatureInfo"+srsvers+"&QUERY_LAYERS="+serverList[i].querylayers;
ir.url+="&FORMAT="+serverList[i].format;
ir.url+="&QUERY_FORMAT="+serverList[i].infotype+"&LAYERS="+serverList[i].querylayers;
if(serverList[i].version!=""){
if(serverList[i].version=="1.0.0"){
ir.url+="&WMTVER=1.0.0";
}
else{
ir.url+="&VERSION="+serverList[i].version;
}
}
else{
ir.url+="&VERSION="+defaultVersion;
}
infoRequests.push(ir);
}
if(serverList[i].hyperlayers){
var hr=serverList[i].url+"REQUEST=GetFeatureInfo"+srsvers+"&QUERY_LAYERS="
+serverList[i].hyperlayers+"&QUERY_FORMAT="+serverList[i].infotype
+"&FEATURE_COUNT=10&LAYERS="+serverList[i].hyperlayers;
hr+="&FORMAT="+serverList[i].format;
if(serverList[i].version!=""){
hr+="&VERSION="+serverList[i].version;
}
else{
hr+="&VERSION="+defaultVersion;
}
hyperRequests.push(hr);
}
}
if(justInfo){
return "";
}
maxlegwidth=0;
var z=parseInt(zindex+LL.length);
legcode+="<ul>";
maxscale=[];
minscale=[];
var currentGroup;
if(multigroups){
currentGroup=LL[LL.length-1].groupTitle;
if(currentGroup!=""){
var cw=currentGroup.length*7.5;
if(cw>maxlegwidth){
maxlegwidth=cw;
}
legcode+="<li><span class=\"groupTitle\">"+currentGroup+"</span>";
}
}
for(i=LL.length-1;i>-1;i--){
var hidden=false;
var title=LL[i].title;
if(LL[i].minscale)minscale[i]=LL[i].minscale;
if(LL[i].maxscale)maxscale[i]=LL[i].maxscale;
if(LL[i].minscale||LL[i].maxscale){
title+=" - ";
}
if(LL[i].minscale)title+=" min. scale 1:"+LL[i].minscale;
if(LL[i].maxscale)title+=" max. scale 1:"+LL[i].maxscale;
LL[i].vid=cls+i;
var vid=LL[i].vid;
var nolegend=false;
var sublegend=false;
if(LL[i].groupTitle!=currentGroup&&multigroups){
currentGroup=LL[i].groupTitle;
legcode+="</li>";
if(currentGroup!=""){
var cw=currentGroup.length*7.5;
if(cw>maxlegwidth){
maxlegwidth=cw;
}
legcode+="<li><span class=\"groupTitle\">"+currentGroup+"</span>";
sublegend=true;
}
}
legcode+="<li class=\"unloaded\" oncontextmenu=\"activeLayer='"+vid+"';showMenu(event,'layerMenu')\" id=\"li_"+i+"\" title=\""+title
+"\" >\n<input ";
hidden=false;
if(LL[i].hide||LL[i].parenhide)hidden=true;
if(!hidden||LL.length==1){
legcode+="checked=\"checked\"";
}
legcode+=" style=\"position:relative;z-index:"+z+"\"  type=\"checkbox\" onclick=\"toggleMap('"+vid
+"'); \" />\n";
if(cls!="loc"){
var ssob=getStyle(LL[i].name);
if(ssob)LL[i].style=ssob.selectedIndex;
try{
if(LL[i].styles&&typeof LL[i].style!="undefined"){
if(LL[i].styles.length&&typeof LL[i].styles[LL[i].style].legendURL!="undefined"){
LL[i].legendURL=LL[i].styles[LL[i].style].legendURL;
LL[i].legheight=LL[i].styles[LL[i].style].lh;
LL[i].legwidth=LL[i].styles[LL[i].style].lw;
}
}
}
catch(err){
}
}
if(typeof(LL[i].legendURL)=='undefined'||LL[i].legendURL==""){
nolegend=true;
}
if(duoLegend||textLegend||nolegend){
if(multigroups&&currentGroup==""){
legcode+="<b>";
}
legcode+=LL[i].title;
if(maxlegwidth>250)legcode+="<br />";
if(multigroups&&currentGroup==""){
legcode+="</b>";
}
var charlegwidth=LL[i].title.length*7.5;
if(charlegwidth>maxlegwidth){
maxlegwidth=charlegwidth;
}
}
if(!textLegend&&(LL[i].legendURL&&LL[i].legendURL!=null)){
if(duoLegend)legcode+="<br />&nbsp;&nbsp;&nbsp;&nbsp;";
legcode+="<img onerror=\"this.style.display='none';\" id=\"lim"+i+"\" align=\"texttop\" ";
legcode+="style=\"behavior:url('"+ogcclient+"/png.htc');\" ";
var advheight=LL[i].legheight;
if(!advheight||validateLegendSize){
LL[i].image=new Image();
LL[i].image.src=LL[i].legendURL;
LL[i].legheight=LL[i].image.height;
LL[i].legwidth=LL[i].image.width;
}
if(LL[i].legwidth>maxlegwidth){
maxlegwidth=LL[i].legwidth;
}
legcode+="title=\""+title+"\"";
var lurl=LL[i].legendURL;
if(standalone&&savingLocal&&!top.widget){
var legsave=new Object();
var lend="";
if(lurl.indexOf("png")!=-1||lurl.indexOf("PNG")!=-1){
lend="png";
}
else if(lurl.indexOf("jpeg")!=-1||lurl.indexOf("JPEG")!=-1){
lend="jpg";
}
else if(lurl.indexOf("gif")!=-1||lurl.indexOf("GIF")!=-1){
lend="gif";
}
else{
var mess="Unsure of image type";
if(top.widget)showMess(mess,3000);
else alert(mess);
var dotindex=lurl.lastIndexOf("//");
}
legsave.url=lurl;
lurl=legendDir+"/lim"+i+"."+lend;
legsave.name=lurl;
legendsSaved.push(legsave);
}
legcode+=" src=\""+lurl+"\" />\n";
}
var hasDimens=(typeof LL[i].dimens!="undefined"&&LL[i].dimens.length>0);
var hasStyles=(LL[i].styles.length>1)
var dimcode="";
if(hasStyles){
dimcode
+="<li style=\"font-size:9x;margin-left:16px\"><select style=\"font-size:9x\" onchange=\"changeLayerStyle('"
+vid
+"',this.options[this.selectedIndex].value,unescape(this.options[this.selectedIndex].id,'lim"
+i+"'))\" >";
for(var si=0;si<LL[i].styles.length;si++){
dimcode+="<option id=\""+escape(LL[i].styles[si].legendURL)+"\"";
if(LL[i].style==si){
dimcode+=" SELECTED";
}
dimcode+=" value=\""+LL[i].styles[si].name+"\" >"+LL[i].styles[si].title+"</option>";
}
dimcode+="</select></li>";
}
if(hasDimens){
var baseName=validate(LL[i].name);
for(var di=0;di<LL[i].dimens.length;di++){
var ld=LL[i].dimens[di];
dimwidth=0;
dimcode+="<li style=\"font-size:8x;margin-left:16px\">";
var ldname=ld.name;
if(ldname.indexOf("dim_")!=-1){
ldname=ldname.replace("dim_","");
}
if(ld.opts&&(ld.opts.length>1)){
dimcode+=" "+ldname+" <select style=\"font-size:9x\" onchange=\"setDimens('"+vid
+"',this.options[this.selectedIndex].value,"+ld.name+")\" name=\""
+ld.name+"\" id=\"dimsel_"+baseName+"_"+di+"\">";
if(ld.def){
dimcode+="<option selected value=\""+ld.def+"\">"+ld.def+"</option>";
}
for(var o=0;o<ld.opts.length;o++){
dimcode+="<option value=\""+ld.opts[o]+"\" >"+ld.opts[o]+"</option>";
}
dimcode+="</select> ";
dimcode+=ld.unitSymbol;
}
else if(ld.range.length>1){
dimcode+=" "+ldname+" ("+ld.range[0]+" to "+ld.range[ld.range.length-2]
+")<br />";
dimwidth=(ld.name.length+ld.range[0].length+ld.range[ld.range.length-2].length+6)*9;
var rl=(ld.range[0].length+ld.range[ld.range.length-2].length)*4+16;
if(ld.def&&ld.def.length){
var rr=ld.def.length*8+16;
if(rr>rl)rl=rr;
}
dimwidth+=rl+ld.unitSymbol.length;
dimcode+=" <input style=\"font-size:8x\" onchange=\"setDimens('"+vid+"',this.value,'"
+ld.name
+"');\" onselect=\"keyGrab()\" onfocus=\"keyGrab()\" onblur=\"keyDone()\" name=\""
+ld.name+"\" ";
if(ld.def){
dimcode+="value=\""+ld.def+"\" ";
}
if(rl){
dimcode+="style=\"width:"+rl+"px\" ";
}
dimcode+=" />"+ld.unitSymbol;
}
else{
dimcode+=" "+ldname+" <input style=\"font-size:8x\" onchange=\"setDimens('"+vid
+"',this.value,'"+ld.name
+"');\" onselect=\"keyGrab()\" onfocus=\"keyGrab()\" onblur=\"keyDone()\" name=\""
+ld.name+"\" />"+ld.unitSymbol;
}
if(dimwidth>maxlegwidth){
maxlegwidth=dimwidth;
}
dimcode+="</li>";
}
}
if(hasStyles||hasDimens){
legcode+="<ul style=\"margin:4px;margin-left:0px;\" >";
legcode+=dimcode;
legcode+="</ul>";
}
}
if(multigroups){
legcode+="</li>";
}
legcode+="</ul>\n";
maxlegwidth=parseFloat(maxlegwidth)+25;
var pot=ovPorportion*w;
if(maxlegwidth>1.5*pot){
maxlegwidth=1.5*pot+16;
}
var legareaheight=imageHeight;
if(overviewList.length>0){
maxlegwidth=pot+16;
legareaheight-=ovPorportion*h;
if(layerList.length>1)legareaheight+=25;
}
var maptop;
var mapleft;
if(cls!="loc"){
legendcode="<div id=\""+cls+"Legend\" style=\"position:relative;overflow:auto;width:"
+Math.round(maxlegwidth)+"px;height:"+Math.round(legareaheight)+"px;";
if(noLegend)legendcode+="display:none";
legendcode+="\" ><div style=\"position:absolute;z-index:230;left:0;top:0\">\n"+legcode
+"</div></div>\n";
}
else{
maxlegwidth=0;
legendcode="";
}
}
if(cls=="ogc"){
maptop=0;
mapleft=parseInt(maxlegwidth)+12;
rawmapleft=mapleft;
if(noLegend)mapleft=16;
}
else{
maptop=h*(1-percentage);
if(!noLegend)maptop+=30;
mapleft=16;
}
html+="<div class=\"mapset\" id=\""+cls+"Map\" style=\"";
if(cls=="loc"&&hideOverview)html+="display:none";
html+=";position:absolute;left:"+mapleft+"px;width:"+Math.round(w*percentage)+"px;height:"
+Math.round(h*percentage)+"px;top:"+maptop+"px;\"><div id=\""+cls+"all\">";
var stillOpaque=false;
for(i=0;i<LL.length;i++){
comstring=fixURL(fixUrlEnd(LL[i].url));
LL[i].vid=cls+i;
if(LL[i].format>LL[i].formats.length-1)LL[i].format=0;
var locformat=LL[i].formats[LL[i].format];
if(locformat==""||locformat=='undefined')locformat="image/jpeg";
if(parseFloat(LL[i].version)<1.1){
comstring+="REQUEST=Map";
}
else{
comstring+="REQUEST=GetMap";
}
if(LL[i].isTNT)comstring+="&amp;BGCOLOR=0x000000";
var z=zindex+i;
if(LL[i].version!=""){
if(LL[i].version=="1.0.0"){
comstring+="&amp;WMTVER=1.0.0";
}
else{
comstring+="&amp;VERSION="+LL[i].version;
}
}
else{
comstring+="&amp;VERSION="+defaultVersion;
}
if(LL[i].version=="1.1.1"){
srsvers="&amp;SRS="+SRS;
}
else if(parseFloat(LL[i].version)<1.3){
srsvers="&amp;SRS="+SRS;
}
else{
srsvers="&amp;CRS="+SRS;
}
var bounds;
bounds=srsvers+"&amp;BBOX="+minx+","+miny+","+maxx+","+maxy+"&amp;HEIGHT="+Math.round(h*percentage)
+"&amp;WIDTH="+Math.round(w
*percentage);
comstring+=bounds;
hidden=false;
if(LL[i].hide||LL[i].parenhide)hidden=true;
if(i==0&&opaqueLast){
comstring+="&amp;TRANSPARENT=FALSE";
var fmats=LL[i].formats;
for(var t=0;t<fmats.length;t++){
if(fmats[t].indexOf("jpeg")!=-1||fmats[t].indexOf("JPG")!=-1){
locformat=fmats[t];
}
}
}
else{
comstring+="&amp;TRANSPARENT=TRUE";
}
comstring+="&amp;queryable="+LL[i].queryable;
if(LL[i].hyperindexed){
comstring+="&amp;hyper="+LL[i].hyperindexed;
}
comstring+="&amp;STYLES=";
if(cls!="loc"){
if(typeof LL[i].style!="undefined"&&LL[i].style!=LL[i].styles.length){
try{
if(typeof LL[i].styles[LL[i].style].name!="undefined"){
sname=LL[i].styles[LL[i].style].name;
comstring+=sname;
}
}
catch(err){
}
}
}
comstring+="&amp;EXCEPTIONS=application/vnd.ogc.se_inimage";
if(LL[i].dimens&&LL[i].dimens.length){
for(var dd=0;dd<LL[i].dimens.length;dd++){
var val=LL[i].dimens[dd].def;
var dobin=getDimensin(LL[i].name,dd);
if(dobin){
if(dobin){
val=dobin.value;
}
}
else{
dobin=getDimensel(LL[i].name,dd);
if(dobin){
val=dobin.options[dobin.selectedIndex].value;
}
}
if(val){
comstring+="&amp;"+LL[i].dimens[dd].name+"="+val;
}
}
}
var isNative=formatIsNative(locformat);
if(!isNative){
locformat=findNative(LL[i].formats);
}
if(isNative){
html+="<img class=\""+cls+"\"";
html+=" title=\""+LL[i].title+"\"";
html+=" style = \"position:absolute;z-index:"+z+";top:0px;left:0px;";
if(hidden&&layerList.length>1){
html+="display:none;";
}
if(locformat=="image/png;ColorPalette"||locformat=="image/png; mode=8bit"){
LL[i].filter="";
}
if(locformat=="image/png;TrueColor"||locformat=="image/png; mode=24bit"){
LL[i].filter=="Enable24bit";
html+="behavior:url('"+ogcclient+"/png.htc');";
}
else{
if(LL[i].filter=="Enable24bit"
&&((locformat.indexOf("png")!=-1)||(locformat.indexOf("PNG")!=-1))){
html+="behavior:url('"+ogcclient+"/png.htc');";
}
}
if(LL[i].filter=="white"){
html+="FILTER:Chroma(Color=#ffffff);";
}
else if(LL[i].filter=="black"){
html+="FILTER:Chroma(Color=#000000);";
}
else if(LL[i].filter=="relief"){
html+="FILTER:progid:DXImageTransform.Microsoft.Engrave(enabled=true);";
}
var tp=parseFloat(LL[i].opacity);
if(tp&&tp!=1){
html+="opacity:"+tp+";filter:Alpha(opacity="+parseInt(100*tp)+");-khtml-opacity:"+tp
+";";
}
html+="\"";
html+=" src=\""+comstring+"&amp;LAYERS=";
if(LL[i].compositeName!=true){
html+=escape(LL[i].name);
}
else{
html+=LL[i].name;
}
html+="&amp;FORMAT="+escape(locformat)+"\"\n";
html+=" onload=\"mapLoaded(this,'"+escape(LL[i].title)+"','"+LL[i].vid+"','"+cls+"');\"";
html+=" onerror=\"setError('Error loading:"+escape(LL[i].title)+"',this.id,'"+cls+"');\"";
html+=" id=\""+LL[i].vid+"\" ";
html+=" height=\""+(h*percentage)+"\" width =\""+(w*percentage)+"\" />\n";
}
}
html+="</div></div>";
var newz=zindex+LL.length+4;
html="<div id=\""+cls+"Area\" style=\"position:absolute;left:0px;top:0px\">"+html;
var otrcls="ogc";
var nover=(LL[0].title=="MicroImages Global Overview"&&srsname=="");
if(!nover&&overviewList.length&&cls=="loc"){
if(cls=="ogc")otrcls="loc";
html+="<div class=\"extent\" id=\""+cls+":"+otrcls
+"\" style=\"font-size:1px;position:absolute;z-index:"+(newz)
+";border:yellow outset 2px;visibility:hidden;";
if(cls=="loc"&&hideOverview)html+="display:none;";
html+="\" name=\""+cls+"\" target=\""+otrcls+"\"></div>";
}
html+="<div id=\""+cls+"Zoom\" class=\"zoombox\" style=\"font-size:1px;position:absolute;z-index:"
+(newz+1)+";top:"+maptop+"px;left:"+mapleft+"px;width:"+w
*percentage+"px;height:"+h*percentage+"px;visibility:hidden\"></div>\n";
html+="<div id=\""+cls+"Line\" style=\"font-size:1px;position:absolute;z-index:"+(newz+2)+";top:"
+maptop+"px;left:"+mapleft+"px;width:"+w*percentage+"px;height:"+h
*percentage+"px;visibility:hidden\">empty</div>\n";
html+="<img id=\""+cls+"\" uom=\""+uom+"\" class=\"eventscreen\" oncontextmenu=\"function(){return false;}\" style = \"position:absolute;z-index:"
+(newz+3)+";top:"+maptop+"px;left:"+mapleft+"px;width:"+Math.round(w*percentage)
+"px;height:"+Math.round(h
*percentage)+"px;";
html+="\" oncontextmenu=\"function(){ return false;}\" src=\""+ogcclient+"/images/blank.gif?"+bounds
+"\" height=\""+Math.round(h*percentage)+"\" width =\""+Math.round(w
*percentage)
+"\" />\n";
html+="<div id=\""+cls+"Poly\" style=\"font-size:1px;position:absolute;z-index:"+(newz+4)+";top:"
+maptop+"px;left:"+mapleft+"px;width:0px;height:0px;visibility:hidden\">empty</div>\n";
html+="<div id=\""+cls+"Handle\" style=\"font-size:1px;position:absolute;z-index:"+(newz+5)+";top:"
+maptop+"px;left:"+mapleft+"px;width:0px;height:0px;visibility:hidden\">empty</div>\n";
html+=legendcode;
html+="</div>";
locstart=zindex+LL.length+7;
return html;
}
function setElementNames(crs,val){
}
function SetElemChosen(id,value){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var elem=win.document.getElementById(id);
if(highlightOn==true&&typeof elem!="undefined"){
var newstyle="none";
if(value){
newstyle=leafbg;
}
if(!isSafari){
var index=parseInt(id.substring(3));
bkg[index]=newstyle;
}
elem.style.background=newstyle;
}
}
function findLeaves(layer,layerName){
var list="";
hasSublayers=false;
layernum++;
for(var m=0;m<layer.childNodes.length;m++){
if(layer.childNodes.item(m).nodeName=="Layer"){
list+=findLeaves(layer.childNodes.item(m));
hasSublayers=true;
}
}
if(!hasSublayers&&layerName!=""){
if(list.length<1){
list+=" ";
}
list+=""+layernum;
}
return list;
}
function parseLayer(layer,paren,dimens){
var l;
var k;
var hasSubLayers=false;
var html="";
var layerName;
var layerTitle="UnTitledLayer";
var metaurl;
var dataurl;
var geostr="";
var legendurl="";
var styleoptions="";
var numofstyles=0;
var latlonfound=false;
latlonnorth=0;
latlonsouth=0;
latloneast=0;
latlonwest=0;
var inSRS=false;
var inStyle=false;
var boundsArray=[];
var boundsNames=[];
var numofstyles=0;
var numofsrs=0;
var abstractstr="";
var LSRS="";
var ln;
var p;
var minscaledenom="";
var maxscaledenom="";
var queryable=false;
var tntns="http://www.microimages.com/ogc/extensions";
var h;
var hide;
var hideme;
var styleArray=[];
var dimstr="";
if(typeof dimens=="undefined"){
dimens=[];
}
if(typeof layer.getAttributeNS!='undefined'){
h=layer.getAttributeNS(tntns,'HyperIndexed');
hide=layer.getAttributeNS(tntns,'DefaultHidden');
}
else{
h=layer.getAttribute('tnt:HyperIndexed');
hide=layer.getAttribute("tnt:DefaultHidden");
}
if(!h||typeof h=="undefined"){
h=layer.getAttribute("HyperIndexed");
}
if(!hide||typeof hide=="undefined"){
hide=layer.getAttribute("MIDefaultHidden");
}
var hyper=parseInt(h);
var hideme=parseInt(hide);
if(hideme!=1)hideme=false;
else hideme=true;
var q=layer.getAttribute("queryable");
if(q&&q!=null&&q!=0){
queryable=true;
}
setStatus("Layers Parsed "+layernum);
coordsDisabled=false;
for(ln=0;ln<layer.childNodes.length;ln++){
var nodeName=layer.childNodes.item(ln).nodeName;
switch(nodeName){
case "wfs:DefaultSRS":
case "wfs:OtherSRS":
case "SRS":
case "CRS":
if(layer.childNodes.item(ln).firstChild){
var tSRS=layer.childNodes.item(ln).firstChild.nodeValue;
if(layernum==0&&(tSRS=="CRS:84"||tSRS=="EPSG:4326")){
GoogleFriendly=true;
}
srsList.push(tSRS);
if(tSRS=="EPSG:41001"){
gmapfriendly=1;
}
if(tSRS=="EPSG:54004"){
gmapfriendly=5;
}
}
break;
case "Layer":
hasSubLayers=true;
break;
case "wfs:Name":
case "Name":
layerName=layer.childNodes.item(ln).firstChild.nodeValue;
namefound=true;
break;
case "wfs:Title":
case "Title":
if(layer.childNodes.item(ln).firstChild){
layerTitle=layer.childNodes.item(ln).firstChild.nodeValue;
}
break;
case "Dimension":
var cnode=layer.childNodes.item(ln);
dimstr="<Dimension ";
var d={
};
d.name=cnode.getAttribute("name");
dimstr+=" name=\""+d.name+"\"";
d.units=cnode.getAttribute("units");
if(!d.units){
d.units="";
}
else{
dimstr+=" units=\""+d.units+"\"";
}
d.unitSymbol=cnode.getAttribute("unitSymbol");
if(!d.unitSymbol){
d.unitSymbol=d.units;
}
else{
dimstr+=" unitSymbol=\""+d.unitSymbol+"\"";
}
d.def=cnode.getAttribute("default");
if(typeof d.def!="undefined"){
dimstr+=" default=\""+d.def+"\"";
}
dimstr+=">";
if(cnode.firstChild){
var txt=cnode.firstChild.nodeValue;
d.opts=txt.split(",");
d.range=txt.split("/");
if(d.range.length>1){
d.rangeStr=txt;
}
dimstr+=txt;
}
dimstr+="</Dimension>";
dimens.push(d);
break;
case "Style":
var aTitle="default";
var stylename="default";
styleTitle="";
for(var k=0;k<layer.childNodes.item(ln).childNodes.length;k++){
var child=layer.childNodes.item(ln).childNodes.item(k);
if(child.firstChild){
if(child.nodeName=="Name"){
stylename=child.firstChild.nodeValue;
}
if(child.nodeName=="Title"){
styleTitle=child.firstChild.nodeValue;
}
if(child.nodeName=="LegendURL"){
var legheight=child.getAttribute("height");
var legwidth=child.getAttribute("width");
for(p=0;p<child.childNodes.length;p++){
var leg=child.childNodes.item(p);
if(leg.nodeName=="OnlineResource"){
if(typeof leg.getAttributeNS!='undefined'){
legendurl=leg.getAttributeNS('http://www.w3.org/1999/xlink','href');
}
else{
legendurl=leg.getAttribute('xlink:href');
}
legendurl=fixURL(legendurl);
}
}
}
}
}
if(styleTitle=="")styleTitle=stylename;
var astyle={
};
astyle.name=stylename;
astyle.title=styleTitle;
astyle.legendURL=legendurl;
astyle.lh=legheight;
astyle.lw=legwidth;
styleoptions+="<option value='"+astyle.name+"' >"+astyle.title+"</option>\n";
styleArray.push(astyle);
numofstyles++;
break;
case "Abstract":
case "wfs:Abstract":
var abstobj=layer.childNodes.item(ln);
try{
if(abstobj&&abstobj.firstChild){
abstractstr=abstobj.firstChild.nodeValue;
}
}
catch(err){
abstractstr="";
}
break;
case "ScaleHint":
var sh=layer.childNodes.item(ln);
try{
minscaledenom=sh.getAttribute("min")*3568;
}
catch(err){
}
try{
maxscaledenom=sh.getAttribute("max")*3568;
}
catch(err){
}
break;
case "MinScaleDenominator":
var scaleobj=layer.childNodes.item(ln);
try{
if(scaleobj&&scaleobj.firstChild){
minscaledenom=parseFloat(scaleobj.firstChild.nodeValue);
}
}
catch(err){
minscaledenom="";
}
break;
case "MaxScaleDenominator":
var maxscaleobj=layer.childNodes.item(ln);
try{
if(maxscaleobj&&maxscaleobj.firstChild){
maxscaledenom=parseFloat(maxscaleobj.firstChild.nodeValue);
}
}
catch(err){
maxscaledenom="";
}
break;
case "MetadataURL":
var meta=layer.childNodes.item(ln);
for(k=0;k<meta.childNodes.length;k++){
if(meta.childNodes.item(k).nodeName=="OnlineResource"){
metaurl=meta.childNodes.item(k).getAttribute("xlink:href");
}
}
break;
case "DataURL":
var meta=layer.childNodes.item(ln);
for(k=0;k<meta.childNodes.length;k++){
if(meta.childNodes.item(k).nodeName=="OnlineResource"){
dataurl=meta.childNodes.item(k).getAttribute("xlink:href");
}
}
break;
case "ows:WGS84BoundingBox":
LSRS="EPSG:4326";
var wgs84=layer.childNodes.item(ln);
var bcoords;
for(k=0;k<wgs84.childNodes.length;k++){
var lcnode=wgs84.childNodes.item(k);
if(lcnode.nodeName=="ows:LowerCorner"){
var lc=lcnode.firstChild.nodeValue;
if(lc){
var bc=lc.split(" ");
latlonwest=parseFloat(bc[0]);
latlonsouth=parseFloat(bc[1]);
}
}
if(lcnode.nodeName=="ows:UpperCorner"){
var uc=lcnode.firstChild.nodeValue;
if(uc){
var ac=uc.split(" ");
latloneast=parseFloat(ac[0]);
latlonnorth=parseFloat(ac[1]);
}
}
}
var b=new Bounds(latlonwest,latlonsouth,latloneast,latlonnorth,LSRS);
boundsArray.push(b);
break;
case "LatLonBoundingBox":
case "LatLongBoundingBox":LSRS="EPSG:4326";
case "wfs:LatLongBoundingBox":
case "BoundingBox":
var comstring;
if(nodeName!="LatLonBoundingBox"&&nodeName!="LatLongBoundingBox"){
boundSRS=layer.childNodes.item(ln).getAttribute("SRS");
if(!boundSRS)boundSRS=layer.childNodes.item(ln).getAttribute("srsName");
if(!boundSRS)boundSRS=layer.childNodes.item(ln).getAttribute("CRS");
if(boundSRS)LSRS=boundSRS;
}
if(LSRS=="CRS:84"||LSRS=="EPSG:4326"&&latlonfound==false){
latlonwest=layer.childNodes.item(ln).getAttribute("minx");
latloneast=layer.childNodes.item(ln).getAttribute("maxx");
latlonsouth=layer.childNodes.item(ln).getAttribute("miny");
latlonnorth=layer.childNodes.item(ln).getAttribute("maxy");
}
var lminx=layer.childNodes.item(ln).getAttribute("minx");
var lmaxx=layer.childNodes.item(ln).getAttribute("maxx");
var lminy=layer.childNodes.item(ln).getAttribute("miny");
var lmaxy=layer.childNodes.item(ln).getAttribute("maxy");
if(LSRS=="EPSG:4326"||LSRS=="CRS:84"||nodeName=="LatLonBoundingBox"){
latlonfound=true;
geostr
="&nbsp;<img title=\"Use this layers bounds in WGS84 geographic (EPSG:4326)\" style=\"cursor:hand\" valign=\"middle\" onclick=\"setExtents(event,'"
+LSRS+"',"+lminx+","+lminy+","+lmaxx+","+lmaxy+","+lminx
+","+lminy+","+lmaxx+","+lmaxy+",true);SelectChildren(event,"
+layernum+",true);return (false);\" src=\""+getInstallDir()
+"/images/geo.gif\">\n";
}
else{
var b=new Bounds(lminx,lminy,lmaxx,lmaxy,LSRS);
}
if(b)boundsArray.push(b);
break;
case "EX_GeographicBoundingBox":
if(!latlonfound){
var gbb=layer.childNodes.item(ln);
var lminx,lminy,lmaxx,lmaxy,LSRS;
var LSRS="EPSG:4326";
if(gbb.firstChild){
for(k=0;k<gbb.childNodes.length;k++){
var bb=gbb.childNodes.item(k);
if(bb.nodeName=="westBoundLongitude"){
latlonwest=bb.firstChild.nodeValue;
lminx=latlonwest;
}
if(bb.nodeName=="eastBoundLongitude"){
latloneast=bb.firstChild.nodeValue;
lmaxx=latloneast;
}
if(bb.nodeName=="southBoundLatitude"){
latlonsouth=bb.firstChild.nodeValue;
lminy=latlonsouth;
}
if(bb.nodeName=="northBoundLatitude"){
latlonnorth=bb.firstChild.nodeValue;
lmaxy=latlonnorth;
}
}
}
latlonfound=true;
geostr
="&nbsp;<img title=\"Use this layers geographic extents.\" style=\"cursor:hand\" onclick=\"setExtents(event,'"
+LSRS+"',"+lminx+","+lminy+","+lmaxx+","+lmaxy+","+lminx
+","+lminy+","+lmaxx+","+lmaxy+",true);SelectChildren(event,"
+layernum+",true);return (false);\" src=\""+getInstallDir()
+"/images/geo.gif\">\n";
}
break;
}
}
html+="<li id=\"";
layernum++;
html+="LB_"+layernum;
html+="\"";
bgcolor="none";
if(highlightOn&&inList(layerName,getmapurl,activeList,layernum)){
bgcolor="cyan";
}
bkg[layernum]=bgcolor;
html+=" style=\"background:"+bgcolor+"\"";
if(hasSubLayers&&layerDepth>0){
if(openState[layernum]){
html+=" class=\""+openState[layernum]+"\" >";
}
else{
if(layerDepth>0){
html+=" class=\"liClosed\" >";
}
else{
html+=" class=\"liOpen\" >";
}
}
}
else{
if(layerDepth>0){
html+=" class=\"liBullet\" >";
}
else{
html+=" class=\"liServer\" >";
}
}
html+="";
if(!layerTitle&&layerName){
layerTitle=layerName;
}
var localTitle=layerTitle;
var desc=abstractstr;
if(abstractstr.length>0){
localTitle=abstractstr;
if(abstractstr.length<80){
abstractstr="";
}
}
if(legendurl&&legendurl!=null&&!hideLegends){
desc+="<img class=\"legendimg\" ";
if(legheight){
desc+="height=\""+legheight+"\" width=\""+legwidth+"\" ";
}
desc+="  src=\""+legendurl+"\" />\n";
}
if(dataurl&&dataurl!='undefined'){
desc+="<span style=\"margin:1px;margin-left:15px\" ><a title=\"Additional Data\" target=\"_blank\" href=\""+dataurl
+"\"><img style=\"behavior:url('png.htc')\" src=\"images/smallq.png\" /></a></span>\n";
}
if(metaurl&&metaurl!='undefined'){
desc+="<span style=\"margin:1px;margin-left:15px\" ><a title=\"MetaData\" target=\"_blank\" href=\""+metaurl
+"\"><img style=\"behavior:url('png.htc')\" src=\"images/smallq.png\" /></a></span>\n";
}
if(layerName){
html+="<span ";
if(!isSafari){
html+=" onmouseout=\"document.getElementById('LB_"+layernum+"').style.background = bkg["+layernum
+"];hideTitle();\"";
}
else{
html+=" onmouseout=\"hideTitle();\""
}
html+=" onmouseover=\"";
if(!isSafari){
html+="bkg["+layernum+"] = document.getElementById('LB_"+layernum
+"').style.background; document.getElementById('LB_"+layernum
+"').style.background='silver';";
}
html+=" showBounds("+latlonwest+","+latlonsouth+","+latloneast+","+latlonnorth
+");setTitle(event,'"+escape(localTitle)+"');\"";
html+=" style=\"margin:0;padding:0px;background:none\">";
}
var nb=false;
var leaves="";
var layernumbackup=layernum;
layernum--;
leaves=findLeaves(layer,layerName);
layernum=layernumbackup;
if(hasSubLayers){
if(leaves.length>0){
if(layerDepth>0){
html+="<span onclick=\"toggleNode(event,'LB_"+layernum
+"')\" class=\"bullet\"><img src=\"images/blank.gif\"></span>";
}
}
}
else{
nb=true;
}
choiceList[layernum]=new Layer(hyper,layerName,getmapurl,layerTitle,"",legendurl,legheight,legwidth,queryable,styleArray,latlonnorth,latloneast,latlonsouth,latlonwest,
"LB_"
+layernum,escape(desc),serverMaxWidth,serverMaxHeight,paren,leaves);
if(layer.nodeName=="FeatureType"||layer.nodeName=="wfs:FeatureType"){
choiceList[layernum].isFeature="true";
}
choiceList[layernum].hide=hideme;
choiceList[layernum].bounds=boundsArray;
choiceList[layernum].dimstr=dimstr;
if(!minscaledenom&&typeof paren!="undefined"){
minscaledenom=choiceList[paren].minscale;
}
if(!maxscaledenom&&typeof paren!="undefined"){
maxscaledenom=choiceList[paren].maxscale;
}
choiceList[layernum].minscale=minscaledenom;
choiceList[layernum].maxscale=maxscaledenom;
if(inList(layerName,getmapurl,activeList,layernum)){
if(activeList=="ov"){
choiceList[layernum].inOverview=true;
}
else{
choiceList[layernum].inList=true;
}
}
if(leaves!=""){
if(localTitle){
html+="<span onmouseout=\"hideTitle();\" onmouseover=\"setTitle(event,'"+escape(localTitle)+"');\"";
html+=" style=\"margin:0;padding:1px;cursor:pointer;cursor:hand\"";
}
else{
html+="<span title=\"Add layers from "+layerTitle
+"\" style=\"margin:0;padding:1px;cursor:pointer;cursor:hand\"";
}
if(layerName&&hasSubLayers==false){
html+=" onclick=\"SelectSelf(event,"+layernum+");\" ";
}
else if(layerName||nb==false){
html+=" onclick=\"SelectChildren(event,"+layernum+",true,"+isTNT+");\"";
}
if(hasSubLayers==true||choiceList[layernum].compositeName){
html+=" oncontextmenu=\"SelectSelf(event,"+layernum+");\" ";
}
html+=">";
}
if(nb){
html+="<span ";
if(layerName){
html+="class=\"bullet\"";
}
html+="><img src=\"images/blank.gif\"></span>";
}
legends[layernum]=null;
if(leaves!=""){
if(layerName||nb==false){
html+="<span style=\"font-weight:bold;position:relative;z-index:1000;cursor:pointer;cursor:hand\">";
}
else{
html
+="<span style=\"font-weight:bold;color:#666;position:relative;z-index:1000;cursor:pointer;cursor:hand\">";
}
}
if(legendurl&&legendurl!=null){
html+="<img class=\"legendimg\" ";
html+="id=\"leg"+layernum+"\" "
if(hideLegends){
html+="style=\"display:none;";
}
else{
html+="style=\"";
}
html+="behavior: url('"+getInstallDir()+"/png.htc')\" ";
if(legheight){
html+="height=\""+legheight+"\" width=\""+legwidth+"\" ";
}
if(localTitle){
html+="title=\""+localTitle+"\"";
styleTitle="";
}
if(paren==1||openState[paren]=="liOpen"){
html+=" src=\""+legendurl+"\" />\n";
}
else{
html+=" src=\"images/blank.gif\" />\n";
}
legends[layernum]=legendurl;
legendurl="";
}
html+=layerTitle;
if(leaves!=""){
html+="</span>";
}
var extraInfo=false;
if(abstractstr||legendurl||numofstyles>1){
extraInfo=true;
}
if(abstractstr){
html+="<div class=\"abstract\" style=\"";
if(!showAbstracts){
html+="display:none;";
}
var as=getWinSize();
html+="margin:0px;margin-left:15px;text-align:justify;width:"+(as.w-380)+"px\";>\n";
html+=abstractstr;
html+="</div>";
}
if(leaves.length!=0)html+="</span>";
if(hasSubLayers&&leaves!=""&&layerName){
html+="<img valign=\"middle\"";
html+=" title=\"Render As Group\" src=\"images/star.gif\"";
html+=" onclick=\"SelectSelf(event,"+layernum+")\" />";
}
var llstr="null,null,null,null";
if(geostr){
llstr=""+latlonwest+","+latlonsouth+","+latloneast+","+latlonnorth;
geostr="";
}
if(boundsArray.length==1){
if(typeof boundsArray[0]!="undefined"){
var cr=boundsArray[0].crs;
cr=cr.replace(":","");
var crtitle;
if(parent.crs[cr]){
crtitle=parent.crs[cr].title;
}
else{
if(!crtitle&&crscache[cr]){
crtitle=getSRSName(crscache[cr]);
}
else{
crtitle=boundsArray[0].crs;
}
}
}
}
if(dataurl&&dataurl!='undefined'){
html+="<p style=\"margin:1px;margin-left:15px\" ><a target=\"_blank\" href=\""+dataurl
+"\">more data</a></span>\n";
}
if(metaurl&&metaurl!='undefined'){
html+="<p style=\"margin:4px;margin-left:15px\" ><a target=\"_blank\" href=\""+metaurl
+"\">metadata</a></span>\n";
}
if(numofstyles>1){
var styleselect;
if(layerName){
styleselect="style_"+validate(layerName);
}
else if(layerTitle){
styleselect="style_"+validate(layerTitle);
}
html+="<p style=\"margin:4px;margin-left:15px;\" ><select onchange=\"changeLegendImg("+layernum
+",this.selectedIndex)\" id='"+styleselect+"' name=\""+styleselect+"\">\n";
html+=styleoptions;
html+="<option value=\"\">Empty Style</option>";
html+="</select></p>\n";
}
if(dimens.length>0&&layerName){
var baseName=validate(layerName);
html+="<p style=\"margin:4px;margin-left:15px;\" >";
for(var di=0;di<dimens.length;di++){
var ld=dimens[di];
var ldname=ld.name;
if(!ld.name.match(/elevation|time/)){
dimens[di].name="dim_"+ld.name;
}
if(ld.opts&&(ld.opts.length>1)){
html+=ldname+"<select name=\""+ld.name+"\" id=\"dimsel_"+baseName+"_"+di+"\">";
if(ld.def){
html+="<option value=\""+ld.def+"\">"+ld.def+"</option>";
}
for(var o=0;o<ld.opts.length;o++){
html+="<option value=\""+ld.opts[o]+"\" >"+ld.opts[o]+"</option>";
}
html+="</select> ";
html+=ld.unitSymbol;
}
else if(ld.range.length>1){
html+=" "+ldname+" ("+ld.range[0]+" to "+ld.range[ld.range.length-2]+")";
var rl=(ld.range[0].length+ld.range[ld.range.length-2].length)*4+16;
if(ld.def&&ld.def.length){
var rr=ld.def.length*8+16;
if(rr>rl)rl=rr;
}
html+="<input name=\""+ld.name+"\" ";
if(ld.def){
html+="value = \""+ld.def+"\" ";
}
if(rl){
html+="style=\"width:"+rl+"px\" ";
}
html+="id =\"dimin_"+baseName+"_"+di+"\">"+ld.unitSymbol;
}
else{
html+=" "+ldname+" <input name=\""+ld.name+"\" ";
if(ld.def){
html+="value = \""+ld.def+"\" ";
}
html+="id=\"dimin_"+baseName+"_"+di+"\">";
+ld.unitSymbol;
}
html+="<br />";
}
html+="</p>";
choiceList[layernum].dimens=dimens;
}
if(latlonfound){
var b=new Bounds(latlonwest,latlonsouth,latloneast,latlonnorth,"EPSG:4326");
boundsArray.push(b);
choiceList[layernum].bounds.push(b);
}
if(typeof paren!='undefined'){
var pb=choiceList[paren].bounds;
for(var b=0;b<pb.length;b++){
var crs=pb[b].crs;
var crsfound=false;
for(var t=0;t<choiceList[layernum].bounds.length;t++){
if(choiceList[layernum].bounds[t].crs==crs){
crsfound=true;
break;
}
}
if(!crsfound){
choiceList[layernum].bounds.push(pb[b]);
}
}
}
html+="</span>\n";
var mylayernum=layernum;
if(hasSubLayers){
layerDepth++;
html+="<ul>\n";
for(l=0;l<layer.childNodes.length;l++){
if(layer.childNodes.item(l).nodeName=="Layer"||layer.childNodes.item(l).nodeName=="FeatureType"
||layer.nodeName=="wfs:FeatureType"){
html+=parseLayer(layer.childNodes.item(l),mylayernum,layer.dimens);
}
}
layerDepth--;
html+="</ul>\n";
}
html+="</li>\n";
return html;
}
function toggleNode(evt,id){
try{
if(evt&&evt.stopPropagation)evt.stopPropagation();
}
catch(err){
if(window.event){
window.event.cancelBubble=true;
}
}
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var elem=win.document.getElementById(id);
elem.className=(elem.className=="liOpen")?"liClosed":"liOpen";
var p=parseInt(id.substring(3));
openState[p]=elem.className;
if(elem.className=="liOpen"&&!hideLegends){
setLegendImg(p);
}
return false;
}
function changeLegendImg(ln,si){
if(si==choiceList[ln].styles.length)si=0;
var sty=choiceList[ln].styles[si];
if(sty&&sty.legendURL){
var legimg=document.images['leg'+ln];
legimg.src=sty.legendURL;
legimg.style.height=sty.lh+"px";
legimg.style.width=sty.lw+"px";
}
}
function setLegendImg(np){
var legimg=document.images['leg'+np];
if(legimg&&legends[np]){
if(legimg.src!=legends[np])legimg.src=legends[np];
}
var leaves=choiceList[np].leaves;
var kids=leaves.split(' ');
var parens=[];
var hasImmediateLeafs;
for(var j=0;j<kids.length;j++){
var p=kids[j];
if(p!=""){
var par=choiceList[p].parens;
if(par==np){
hasImmediateLeafs=true;
break;
}
}
}
if(hasImmediateLeafs){
for(var i=0;i<kids.length;i++){
p=kids[i];
if(p!=""){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
legimg=win.document.getElementById('leg'+p);
if(legends[p]&&typeof legimg!="undefined"){
if(legimg.src!=legends[p])legimg.src=legends[p];
}
}
}
}
}
function createHierarchical(xml,sid){
setStatus("Parsing Layer Tree");
var mess="Creating Layer Selection Tree";
showMess(mess,2000);
isWFS=false;
layerDepth=0;
gmapfriendly=0;
srsList=[];
if(top.widget){
isSafari=true;
}
var html=
"<form style=\"display:inline;margin:0;padding:0\"><ul class=\"tree\" style=\"margin:0px;padding:0px;\"><ul>\n";
var j;
var k;
for(j=0;j<xml.childNodes.length;j++){
var wmsNode=xml.childNodes.item(j);
for(k=0;k<wmsNode.childNodes.length;k++){
var capNode=wmsNode.childNodes.item(k);
if(capNode.nodeName=="FeatureType"||capNode.nodeName=="wfs:FeatureType"){
rootLayer=wmsNode;
isWFS=true;
var dimens=[];
var nopar;
html+=parseLayer(capNode,nopar,dimens);
}
if(capNode.nodeName=="wfs:FeatureTypeList"||capNode.nodeName=="FeatureTypeList"){
isWFS=true;
for(l=0;l<capNode.childNodes.length;l++){
var featureNode=capNode.childNodes.item(l);
if(featureNode.nodeName=="FeatureType"||featureNode.nodeName=="wfs:FeatureType"){
rootLayer=capNode;
var dimens=[];
var nopar;
html+=parseLayer(featureNode,nopar,dimens);
}
}
}
else if(capNode.nodeName=="Layer"){
rootLayer=capNode;
var dimens=[];
var nopar;
html+=parseLayer(capNode,nopar,dimens);
}
else{
for(l=0;l<capNode.childNodes.length;l++){
var layerNode=capNode.childNodes.item(l);
if(layerNode.nodeName=="Layer"){
rootLayer=layerNode;
var dimens=[];
var nopar;
html+=parseLayer(layerNode,nopar,dimens);
}
}
}
}
}
html+="</ul></form>\n";
if(typeof sid=="undefined"){
var servername="Current WMS";
var cs=new ServerInfo(getcapurl,servername);
cs.treeid=serverInfoList.length;
serverInfoList.push(cs);
htm="<span class='tipname' ";
htm+="onclick=\"wmsurl='"+url+"';document.forms.getcap.lasturl="+url+";GetCap('"+url+"',"
+cs.treeid+")\" >";
htm+=fixXML(servername)+"<img title=\"show/hide capabilities\" src=\"images/plus.gif\" id=\"togtree"
+cs.treeid+"\" onclick=\"toggleId('tree'"+cs.treeid+")\">";
htm+="</span><br/><span id=\"srctree"+cs.treeid+"\"></span>";
var ids="wms";
if(isWFS){
ids="wfs";
}
document.getElementById(ids).innerHTML+=htm;
toggleServices(ids);
}
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(typeof sid=="undefined"){
sid=0;
}
rootout=win.document.getElementById("srctree"+sid);
if(rootout){
rootout.innerHTML=html;
rootout.style.display="";
var tog=win.document.getElementById("togtree"+sid);
if(tog)tog.src="images/minus.gif";
}
var st=win.document.getElementById("st"+sid);
if(layernum==0){
mess="No Layers Found in Capabilities";
if(st){
st.className="errload";
}
showMess(mess,4000);
}
else{
mess=newservices;
if(st)st.className="loaded";
showMess(mess,4000);
var ids="wms";
if(isWFS){
ids="wfs";
}
toggleServices(ids);
try{
var wmsout=document.getElementById("lasturl");
if(wmsout){
wmsout.value=wmsurl;
}
else{
showMess("cannot find field to update current source",2000);
}
}
catch(err){
showMess("cannot find field to update current source",2000);
}
if(standalone&&wmsurl){
if(top.widget){
updateIni(wmsurl);
}
else{
if(wmsurl)createIni(wmsurl);
}
}
}
}
function cleanCRSList(){
var nlist=[];
for(var v=0;v<srsList.length;v++){
var found=false;
var cra=srsList[v];
for(var c=nlist.length-1;c>0;c--){
if(nlist[c-1]==cra){
found=true;
break;
}
}
if(!found){
var crl=cra.replace(":","");
nlist.push(cra);
if(!parent.crs[crl]){
setTimeout("DescribeCRS(null,\""+cra+"\",false);",4000);
}
}
}
srsList=nlist;
}
function composeNameFromSubLayers(n){
var leaves=choiceList[n].leaves;
var kids=leaves.split(' ');
var namelist="";
var boundsArray=[];
var start=0;
var end=kids.length-1;
var inc=1;
var idx=inChoices(choiceList[n].url);
var server={
};
server.isTNT=isTNT;
if(idx>-1){
server=choiceServers[idx];
}
if(server.isTNT){
inc=-1;
start=end;
end=0;
}
for(var i=start;i!=end;i+=inc){
var leaf=kids[i];
if(leaf&&leaf!=''){
if(choiceList[leaf]){
if(namelist=="")namelist=escape(choiceList[leaf].name);
else namelist+=","+escape(choiceList[leaf].name);
if(choiceList[leaf].queryable)choiceList[n].queryable=true;
if(typeof choiceList[leaf].bounds!="undefined"){
for(var j=0;j<choiceList[leaf].bounds.length;j++){
boundsArray.push(choiceList[leaf].bounds[j]);
}
}
}
}
}
if(typeof choiceList[leaf].bounds=="undefined"||choiceList[n].bounds.length==0){
choiceList[n].bounds=boundsArray;
}
choiceList[n].name=namelist;
return namelist;
}
function testParentState(parens){
var allOn=true;
var anyOn=false;
var parenlayer=choiceList[parens];
if(typeof(parenlayer)=='undefined')return;
if(parenlayer.leaves){
var siblingList=parenlayer.leaves.split(" ");
for(var s=0;s<siblingList.length;s++){
var sibin=siblingList[s];
if(sibin){
var layer=choiceList[sibin];
if(layer){
if(activeList=="ov"){
if(!layer.inOverview){
allOn=false;
}
else{
anyOn=true;
}
}
else{
if(!layer.inList){
allOn=false;
}
else{
anyOn=true;
}
}
}
}
}
}
SetElemChosen("LB_"+parens,allOn);
if(activeList=="ov")choiceList[parens].inOverview=allOn;
else choiceList[parens].inList=allOn;
if(autoOpenGroups){
var id="LB_"+parens;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var elem=win.document.getElementById(id);
if(anyOn&&elem.className=="liClosed"){
elem.className="liOpen";
setLegendImg(parens);
}
if(!anyOn&&elem.className=="liOpen"){
if(id!="LB_1")elem.className="liClosed";
}
openState[parens]=elem.className;
}
if(parenlayer.parens){
testParentState(parenlayer.parens);
}
}
function createSelectionForm(xml,treeid){
if(typeof treeid=="undefined")treeid=serverInfoList.length-1;
createHierarchical(xml,treeid);
if(choiceList.length&&highlightOn){
resolveAllParents();
}
var w;
if(parent.main){
w=parent.main;
}
else{
w=window;
}
if(typeof w.activeTab!="undefined"){
var st=w.document.getElementById('svtab');
if(st){
w.activeTab(st,"svZone");
}
}
return;
}
var lastgetcap="";
var getcaprepeats=0;
function fixUrlEnd(url,other){
var e=url.substring(url.length-1);
var re=/\&|\?/;
if(!e.match(re)){
if(url.indexOf('?')==-1){
url+="?";
}
else{
if(url.indexOf('&')!=url.length-1){
url+="&";
}
}
var req=/REQUEST\=GetCapabilities\&/i;
url=url.replace(req,"");
var req=/service\=WMS\&/i;
url=url.replace(req,"");
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
win.document.forms.getcap.wmsurl.value=url;
}
return url;
}
var eraseMess;
function showMess(value,temp){
if(!value)hideMess();
if(eraseMess){
clearTimeout(eraseMess);
}
if(typeof temp=="undefined"){
temp=15000;
}
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var mb=win.document.getElementById("message");
if(mb){
if(temp){
eraseMess=setTimeout("hideMess();",temp);
}
mb.innerHTML=value;
mb=win.document.getElementById("messageBox");
mb.style.display="";
var s=getWinSize();
if(mb.offsetWidth){
mb.style.left=(s.w-parseInt(mb.offsetWidth))/ 2+"px";
}
if(mb.offsetHeight){
mb.style.left=(s.h-parseInt(mb.offsetHeight))/ 2+"px";
}
}
}
function hideMess(){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var mb=win.document.getElementById("messageBox");
if(mb)mb.style.display="none";
}
function Ping(fullurl,getcapurl,cb,treeid,quiet,favorites,name,isWFS){
if(!cb){
cb="fullGetCap";
}
var gto;
if(cb!="loadServers"){
gto=cb+"('"+fullurl+"','"+getcapurl+"',"+treeid+","+quiet+","+favorites+",'"+name
+","+isWFS+"');";
}
else{
gto=cb+"('"+fullurl+"','"+favorites+"','"+name+"',null,"+treeid+");";
}
if(getcapurl.indexOf(":\\")!=1){
var i=new Image();
i.src=getcapurl+"request=migetstatus";
setTimeout(gto,1000);
}
else{
eval(gto);
}
}
function showFull(url){
if(top.widget){
top.widget.openURL(url);
}
else{
window.open(url,'_blank','');
}
}
function showURL(url,h,w){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(top.widget){
showMess("Launching default browser to "+url,4000);
top.widget.system('/usr/bin/open '+url,null);
top.widget.openURL('');
}
else{
if(!h)h=800;
if(!w)w=800;
var features="resizable=yes,scroll=yes,toolbar=no,height="+h+",width="+w+",status=yes,statusbar=yes";
window.open(url,"_blank",features);
}
}
function singleSlash(str){
var re=/\\\\/;
while(str.match(re)){
str=str.replace(re,"\\");
}
return str;
}
function GetCap(getcapurl,treeid,noshow,favorites,name,overview){
var ishere=false;
getcapurl=unescape(getcapurl);
isWFS=false;
if(getcapurl.match(/(wfs)/i)){
isWFS=true;
}
if(typeof name=="undefined"||name=="undefined"){
name=singleSlash(getcapurl);
}
if(getcapurl.indexOf("\\")!=-1){
getcapurl=singleSlash(getcapurl);
getcapurl=Slash(getcapurl);
if(getcapurl.indexOf(":\\")==1){
noshow=true;
ishere=true;
}
}
if(!getcapurl){
getcapurl=localhost;
}
lastgetcap=getcapurl;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var last3=getcapurl.substring(getcapurl.length-4);
var last4=getcapurl.substring(getcapurl.length-5);
if(last3==".htm"||last4==".html"){
showURL(getcapurl);
return;
}
if(last3==".kml"||last3==".kmz"){
showURL(getcapurl,5,5);
return;
}
if(last3!=".cml"&&last4!=".ccml"){
wmsurl=getcapurl;
}
if(treeid==null&&!overview&&!noshow){
treeid=inListOfLayers(getcapurl);
if(treeid==-1){
treeid=serverInfoList.length;
if(getcapurl!="context.cml"&&getcapurl!="overview.cml"){
var sc=serverCode(getcapurl,name,null);
var lc;
if(isWFS){
lc=document.getElementById("wfs");
}
else{
lc=document.getElementById("wms");
}
lc.innerHTML=sc+lc.innerHTML;
}
}
}
var fullurl;
var cb;
getcapurl=fixUrlEnd(getcapurl);
if(standalone||isLocal(getcapurl)){
var re=/request=getCapabilties/i;
if(getcapurl.match(re)){
fullurl=fixURL(getcapurl)+"&format=text/xml";
}
else{
fullurl=fixURL(getcapurl)+"request=GetCapabilities&format=text/xml";
}
if(isWFS){
showMess("Sending WFS get capabilities request",2000);
}
else{
if(do3d){
fullurl+="&SERVICE=WTS";
}
else{
var me=/service=WMS/i;
if(getcapurl.match(me)){
}
else{
fullurl+="&SERVICE=WMS";
}
}
}
}
else{
getcapproxy=fixUrlEnd(getcapproxy,true);
if(isWFS){
showMess("Sending WFS get capabilities request",2000);
}
else{
if(do3d){
getcapurl+="SERVICE=WTS&";
}
else{
var mer=/service=WMS/i;
if(getcapurl.match(mer)){
}
else{
getcapurl+="SERVICE=WMS&";
}
}
}
fullurl=getcapproxy+"url="+escape(getcapurl)+"REQUEST=GetCapabilities&format=text/xml";
}
if(!favorites&&!ishere){
Ping(fullurl,getcapurl,cb,treeid,noshow,favorites,name,isWFS);
}
else{
fullGetCap(fullurl,getcapurl,cb,treeid,noshow,favorites,name,isWFS);
}
}
function setOpZone(){
var win;
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
if(typeof win.activeTab!="undefined"){
var st=win.document.getElementById('optab');
if(st){
win.activeTab(st,"opZone");
}
}
}
function readFromCML(xmlDoc,local){
var cmlDoc=xmlDoc;
var h,w;
var srs;
var querylayers="";
var layerNode,node;
var k;
var ql={
};
var cur;
var lw;
var lh;
var queryable=false;
var win=window.document;
var foundbounds;
if(activeList=="ov"){
overviewList=[];
}
else{
layerList=[];
}
var overviewPath="";
if(parent.main){
win=parent.main;
}
for(j=0;j<cmlDoc.childNodes.length;j++){
var wmsNode=cmlDoc.childNodes.item(j);
for(k=0;k<wmsNode.childNodes.length;k++){
var capNode=wmsNode.childNodes.item(k);
if(capNode.nodeName=="General"){
for(l=0;l<capNode.childNodes.length;l++){
layerNode=capNode.childNodes.item(l);
if(layerNode.nodeName=="Window"){
h=parseInt(layerNode.getAttribute("height"),10);
w=parseInt(layerNode.getAttribute("width"),10);
}
if(layerNode.nodeName=="Title"){
var tit=layerNode.firstChild.nodeValue;
viewTitle="TNTmap - "+tit;
}
if(layerNode.nodeName=="Overview"){
overviewPath=getURLFromNode(layerNode);
}
if(layerNode.nodeName=="BoundingBox"){
srs=layerNode.getAttribute("SRS");
if(!srs){
srs=layerNode.getAttribute("srs");
}
var cr=srs.replace(":","");
var crtitle;
if(activeList!="ov"){
SRS=srs;
}
if(parent.crs[cr]){
srsname=parent.crs[cr].title;
}
else{
DescribeCRS(null,srs,true);
}
var xmin=parseFloat(layerNode.getAttribute("minx"));
var ymin=parseFloat(layerNode.getAttribute("miny"));
var xmax=parseFloat(layerNode.getAttribute("maxx"));
var ymax=parseFloat(layerNode.getAttribute("maxy"));
foundbounds=new Bounds(xmin,ymin,xmax,ymax,srs);
}
}
}
currentServer="";
if(capNode.nodeName=="LayerList"){
for(l=0;l<capNode.childNodes.length;l++){
layerNode=capNode.childNodes.item(l);
if(layerNode.nodeName=="Layer"){
var qu=layerNode.getAttribute("queryable");
if(qu&&qu=="1"){
queryable=true;
}
else{
queryable=false;
}
var hidden=false;
var hide=layerNode.getAttribute("hidden");
if(hide&&hide=="1"){
hidden=true;
}
var hyp=layerNode.getAttribute("hyper");
if(hyp&&hyper=="1"){
hyper=true;
}
else{
hyper=false;
}
var opacity=1;
var opac=layerNode.getAttribute("opacity");
if(opac&&opac!="1"){
opacity=parseFloat(opac);
if(opacity==0)opacity=1;
}
var boundsArray=[];
var name="";
var isTNT;
var serverTitle="";
var vers="1.1.1";
var getmapurl="";
var legurl="";
var currformat=0;
var currstyle=0;
var imstyles=[];
var dimens=[]
var dimstr="";
var litem="";
var imformats=[];
var maxw;
var maxh;
var n;
var abst="";
var metaurl="";
var minscale=null;
var maxscale=null;
var dataurl="";
var hyper=false;
var servers=xmlDoc.getElementsByTagName('server');
rl="";
for(k=0;k<layerNode.childNodes.length;k++){
var parmNode=layerNode.childNodes.item(k);
if(parmNode.nodeName=="Server"){
var tnt=parmNode.getAttribute("istnt");
if(tnt){
isTNT=true;
}
else{
isTNT=false;
}
vers=parmNode.getAttribute("version");
var st=parmNode.getAttribute("title");
if(st&&st!=currentServer){
currentServer=st;
}
else{
newserver=false;
}
getmapurl=getURLFromNode(parmNode);
}
if(parmNode.nodeName=="FormatList"&&parmNode.firstChild){
for(n=0;n<parmNode.childNodes.length;n++){
node=parmNode.childNodes.item(n);
if(node.nodeName=="Format"){
cur=node.getAttribute("current");
if(cur=="1"){
currformat=n;
}
var format=node.firstChild.nodeValue;
var flist=format.split(" ");
if(flist.length>2){
for(var fl=0;fl<flist.length;fl++){
imformats.push(flist[fl]);
}
}
else{
imformats.push(format);
}
}
}
}
if(parmNode.nodeName=="StyleList"&&parmNode.firstChild){
for(n=0;n<parmNode.childNodes.length;n++){
node=parmNode.childNodes.item(n);
if(node.nodeName=="Style"){
var stylething={
};
cur=node.getAttribute("current");
if(cur=="1")currstyle=n;
for(p=0;p<node.childNodes.length;p++){
snode=node.childNodes.item(p);
if(snode.nodeName=="LegendURL"){
lh=parseInt(layerNode.getAttribute("height"),10);
lw=parseInt(layerNode.getAttribute("width"),10);
legurl=getURLFromNode(snode);
stylething.lh=lh;
stylething.lw=lw;
stylething.legendURL=legurl;
}
if(snode.nodeName=="Title"){
if(snode.firstChild){
stylething.title=snode.firstChild.nodeValue;
}
}
if(snode.nodeName=="Name"){
if(snode.firstChild){
stylething.name=snode.firstChild.nodeValue;
}
}
}
imstyles.push(stylething);
}
}
}
if(parmNode.nodeName=="Title"&&parmNode.firstChild){
currtitle=parmNode.firstChild.nodeValue;
}
if(parmNode.nodeName=="Dimension"){
var cnode=parmNode;
dimstr="<Dimension ";
var d={
};
d.name=cnode.getAttribute("name");
dimstr+=" name=\""+d.name+"\"";
d.units=cnode.getAttribute("units");
if(!d.units){
d.units="";
}
else{
dimstr+=" units=\""+d.units+"\"";
}
d.unitSymbol=cnode.getAttribute("unitSymbol");
if(!d.unitSymbol){
d.unitSymbol=d.units;
}
else{
dimstr+=" unitSymbol=\""+d.unitSymbol+"\"";
}
d.def=cnode.getAttribute("default");
if(typeof d.def!="undefined"){
dimstr+=" default=\""+d.def+"\"";
}
dimstr+=">";
if(cnode.firstChild){
var txt=cnode.firstChild.nodeValue;
d.opts=txt.split(",");
d.range=txt.split("/");
if(d.range.length>1){
d.rangeStr=txt;
}
dimstr+=txt;
}
dimstr+="</Dimension>";
dimens.push(d);
}
if(parmNode.nodeName=="Name"&&parmNode.firstChild){
ln=parmNode.firstChild.nodeValue;
}
if(parmNode.nodeName=="Abstract"&&parmNode.firstChild){
abst=parmNode.firstChild.nodeValue;
}
if(parmNode.nodeName=="DataURL"){
dataurl=getURLFromNode(parmNode);
}
if(parmNode.nodeName=="MetadataURL"){
metaurl=getURLFromNode(parmNode);
}
if(parmNode.nodeName=="sld:MinScaleDenominator"
||parmNode.nodeName=="MinScaleDenominator"&&parmNode.firstChild){
minscale=parseFloat(parmNode.firstChild.nodeValue);
}
if(parmNode.nodeName=="sld:MaxScaleDenominator"
||parmNode.nodeName=="MaxScaleDenominator"&&parmNode.firstChild){
minscale=parseFloat(parmNode.firstChild.nodeValue);
}
if(layerNode.nodeName=="BoundingBox"){
srs=layerNode.getAttribute("SRS");
if(!srs){
srs=layerNode.getAttribute("srs");
}
var mx=parseInt(layerNode.getAttribute("minx"),10);
var my=parseInt(layerNode.getAttribute("miny"),10);
var xx=parseInt(layerNode.getAttribute("maxx"),10);
var xy=parseInt(layerNode.getAttribute("maxy"),10);
boundsArray.push(new Bounds(mx,my,xx,xy,srs));
}
}
if(!currtitle){
currtitle=ln;
}
var n,e,s,w;
infourl=getmapurl;
var layer=new Layer(hyper,unescape(ln),getmapurl,currtitle,filter,legurl,lh,lw,
queryable,imstyles,n,e,s,w,null,abst,maxw,maxh);
layer.isTNT=isTNT;
layer.infotype="text/html";
layer.dimens=dimens;
layer.dimstr=dimstr;
layer.queryURL=getmapurl;
layer.minscale=minscale;
layer.maxscale=maxscale;
layer.groupTitle=currentServer;
layer.url=fixUrlEnd(getmapurl);
if(activeList!="ov"){
boundsArray.push(foundbounds);
}
layer.bounds=boundsArray;
layer.serverName=currentServer;
layer.version=vers;
layer.opacity=opacity;
layer.format=currformat;
layer.hide=hidden;
layer.formats=imformats;
layer.styles=imstyles;
layer.style=currstyle;
if(activeList=="ov"){
overviewList.push(layer);
layer.onOverview=true;
}
else{
layerList.push(layer);
layer.inLayers=true;
}
}
}
}
}
}
writeLayers(activeList);
if(activeList!="ov"){
setExtentsFromBounds(foundbounds);
}
if(activeList!="ov"&&overviewPath){
if(standalone&&typeof ActiveXObject!="undefined"){
var fso=new ActiveXObject("Scripting.FileSystemObject");
var ap=fso.GetAbsolutePathName("");
var fp=ap+"\\"+overviewPath;
var ex=fso.FileExists(fp);
activeList="ov";
if(ex){
GetCap(escape(fp),null,true,true,viewTitle+" Overview",true);
}
activeList="";
}
}
}
function GetCapabilities(fullurl,getcapurl,treeid,quiet,faves,name,usr,pass,isWFS){
this.fullurl=fullurl;
this.getcapurl=getcapurl;
this.treeid=treeid;
this.quiet=quiet;
this.favorites=faves;
this.name=name;
this.isWFS=isWFS;
if(usr){
this.usr=usr;
this.pass=pass;
}
this.send=sendFull;
}
function sendFull(usr,pass){
fullGetCap(this.fullurl,this.getcapurl,this.treeid,this.quiet,this.favorites,this.name,this.usr,this.pass,
this.isWFS);
}
var latestCap;
var password;
var username;
function fullGetCap(fullurl,getcapurl,treeid,quiet,favorites,name,usr,pass,isWFS){
if(getcapurl.match(/(wfs)/i))isWFS=true;
var servstr="WMS";
if(isWFS){
servstr="WFS";
version="1.0.0";
}
if(standalone&&getcapurl.indexOf(":\\")==1){
var a,fs,str;
fs=new ActiveXObject("Scripting.FileSystemObject");
a=fs.OpenTextFile(getcapurl.replace("?",""),1);
var response=a.ReadAll();
a.Close();
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.validateOnParse=false;
xmlDoc.resolveExternals=false;
xmlDoc.loadXML(response);
if(xmlDoc.parseError.errorCode){
var perror=xmlDoc.parseError;
try{
var parser=new DOMImplementation();
var xmlDOM=parser.loadXML(response);
xmlDoc=xmlDOM.getDocumentElement();
}
catch(myerr){
alert(xmlDoc.parseError.reason+" line:"+xmlDoc.parseError.line);
showIt(response);
}
}
var sstr=response.substring(0,300);
if(sstr.indexOf("ViewContextCollection")!=-1||sstr.indexOf("serverList")!=-1||sstr.indexOf(
"registryList")!=-1)
{
parseServers(xmlDoc,false,name,quiet,treeid,false,isWFS);
}
else if(sstr.indexOf("ViewContext")!=-1||sstr.indexOf("WMS_Viewer_Context")!=-1){
readFromCML(xmlDoc,quiet);
}
else{
createImageChoices(xmlDoc);
openState=[];
bkg=[];
readServiceInfo(xmlDoc);
getcapcache[escape(getcapurl)]=response;
setStatus(servstr+" capabilities xml response received");
if(!quiet)showMess("Capabilities Response Finished",2000);
createSelectionForm(xmlDoc,treeid);
}
return;
}
if(xmlhttp.overrideMimeType)xmlhttp.overrideMimeType("text/xml");
if(typeof usr!="undefined"){
xmlhttp.open("GET",fullurl+"&pas="+pass+"&usr="+usr,true);
}
else{
xmlhttp.open("GET",fullurl,true);
}
xmlhttp.onreadystatechange=function(loadOthers){
if(xmlhttp.readyState==4){
isTNT=false;
var response;
try{
response=xmlhttp.responseText;
}
catch(err){
if(document.all&&xmlhttp.responseXML)response=xmlhttp.responseXML.xml;
}
if(response.indexOf("ViewContextCollection")!=-1||response.indexOf("serverList")!=-1
||response.indexOf(
"registryList")!=-1)
{
if(xmlhttp.status==200||xmlhttp.responseXML){
if(!quiet)showMess("Loading Server List / Registry",2000)
if(typeof ActiveXObject!="undefined"){
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
var response=xmlhttp.responseText;
xmlDoc.validateOnParse=false;
xmlDoc.resolveExternals=false;
xmlDoc.loadXML(response);
if(xmlDoc.parseError.errorCode){
setStatus(xmlDoc.parseError.reason+" line:"+xmlDoc.parseError.line);
if(xmlhttp.responseText){
showIt(xmlhttp.responseText);
}
}
else{
parseServers(xmlDoc,false,name,quiet,treeid,false,isWFS);
return;
}
}
else{
if(xmlhttp.responseXML){
xmlDoc=xmlhttp.responseXML;
setStatus("Now Parsing Context Collection / Server List Document");
parseServers(xmlDoc,false,name,quiet,treeid,false,isWFS);
cmlrepeats=0;
return;
}
else{
if(xmlhttp.status==200){
setStatus("Incomplete/Improper xml response received");
if(cmlrepeats<12){
fullGetCap(fullurl,getcapurl,treeid,quiet,favorites,name,usr,pass,isWFS);
cmlrepeats++;
}
else{
if(typeof DOMParser!="undefined"){
var parser=new DOMParser();
try{
xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
parseServers(xmlDoc,false,name,quiet,treeid,false,isWFS);
return;
}
catch(err){
alert("Incomplete/Improper xml response received");
}
}
cmlrepeats=0;
}
}
else{
alert("Registry Listing Document does not appear correct!\n headers:"
+xmlhttp.getAllResponseHeaders());
if(xmlhttp.responseText){
showIt(xmlhttp.responseText);
}
}
}
}
}
}
if(response.indexOf("ViewContext")!=-1||response.indexOf("WMS_Viewer_Context")!=-1){
if(xmlhttp.status==200||xmlhttp.responseXML){
if(activeList=="ov"){
alist="Overview Layer set";
}
else{
alist="Main View Layer set";
}
if(!quiet)showMess("Loading Context Document",1000);
if(typeof ActiveXObject!="undefined"){
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
var response=xmlhttp.responseText;
xmlDoc.validateOnParse=false;
xmlDoc.resolveExternals=false;
xmlDoc.loadXML(response);
if(xmlDoc.parseError.errorCode){
setStatus(xmlDoc.parseError.reason+" line:"+xmlDoc.parseError.line);
if(xmlhttp.responseText){
showIt(xmlhttp.responseText);
}
}
else{
readFromCML(xmlDoc,quiet);
return;
}
}
else{
if(xmlhttp.responseXML){
xmlDoc=xmlhttp.responseXML;
setStatus("Now Parsing Context Document");
readFromCML(xmlDoc,quiet);
setStatus("Finished Loading Context");
cmlrepeats=0;
setTimeout("setStatus('');",2000);
return;
}
else{
if(xmlhttp.status==200){
setStatus("Incomplete/Improper xml response received");
if(cmlrepeats<12){
fullGetCap(fullurl,getcapurl,treeid,quiet,favorites,name,usr,pass,isWFS);
cmlrepeats++;
}
else{
if(typeof DOMParser!="undefined"){
var parser=new DOMParser();
try{
xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
readFromCML(xmlDoc,quiet);
return;
}
catch(err){
alert("Incomplete/Improper xml response received");
}
}
cmlrepeats=0;
}
}
else{
alert("Context Document does not appear correct!\n headers:"
+xmlhttp.getAllResponseHeaders());
if(xmlhttp.responseText){
showIt(xmlhttp.responseText);
}
}
}
}
}
}
if(xmlhttp.status!=0){
if(!quiet)showMess(finished+" "+servstr+" Capabilities",3000);
}
var sresponse=response.substring(0,400);
var eresponse=response.substring(400);
setStatus(finished+" "+servstr+" Capabilities");
if(sresponse.indexOf("401 Authorization")!=-1){
latestCap=new GetCapabilities(fullurl,getcapurl,treeid,quiet,favorites,name,usr,pass,isWFS);
document.getElementById('login').style.position="absolute";
document.getElementById('login').style.zIndex="70000";
document.getElementById('login').style.left="30px";
document.getElementById('login').style.top="30px";
document.getElementById('login').style.display="";
return;
}
if(typeof ActiveXObject!="undefined"){
if(!quiet)showMess("Parsing "+servstr+" Capabilities Discarding Doc Type");
var resp=sresponse;
if(sresponse.indexOf(/DOCTYPE/)!=-1){
var re=/<!DOCTYPE(.|\n)*<WMT_MS/m;
if(resp.match(re)){
sresponse=resp.replace(re,'<WMT_MS');
}
else{
var se=/<!DOCTYPE(.|\n)*<WMS_MS/m;
if(resp.match(se)){
sresponse=resp.replace(se,'<'+servstr+'_MS');
}
}
response=sresponse+eresponse;
}
var localfile=false;
if(xmlhttp.status==200){
var xmlDoc;
if(response){
if(!quiet)showMess("Loading XML");
if(standalone&&!localfile){
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.validateOnParse=false;
xmlDoc.async="true";
xmlDoc.loadXML(response);
xmlDoc.resolveExternals=false;
if(xmlDoc.parseError.errorCode){
try{
var parser=new DOMImplementation();
var xmlDOM=parser.loadXML(response);
xmlDoc=xmlDOM.getDocumentElement();
}
catch(err){
alert("Error received in capabilities response unable to parse xml may\n"
+err.message);
setOpZone();
if(xmlhttp.responseText)showIt(xmlhttp.responseText);
setTimeout("hideMess()",3000);
return;
}
}
}
else{
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.validateOnParse=false;
xmlDoc.async="true";
xmlDoc.loadXML(response);
if(xmlDoc.parseError.errorCode){
alert("Invalid document received in for getCapabilities request\n"
+xmlDoc.parseError.reason+" line:"+xmlDoc.parseError.line);
setOpZone();
if(xmlhttp.responseText)showIt(xmlhttp.responseText);
setTimeout("hideMess()",3000);
return;
}
}
createImageChoices(xmlDoc);
openState=[];
bkg=[];
readServiceInfo(xmlDoc);
createSelectionForm(xmlDoc,treeid);
getcapcache[escape(getcapurl)]=response;
}
else{
alert("status"+xmlhttp.status);
setOpZone();
}
}
else{
if(xmlhttp.status==0){
fullGetCap(fullurl,getcapurl,treeid,quiet,favorites,name);
getcaprepeats++;
}
else{
if(!quiet)showMess("Status:"+xmlhttp.status+" - Unable to connect to current url "
+getcapurl);
setOpZone();
setTimeout("hideMess()",4000);
setStatus(" Unable to connect to current "+servstr+" server");
return;
getcaprepeats=0;
}
}
}
else{
if(xmlhttp.responseXML){
if(!quiet)showMess("Interpretting Response");
xmlDoc=xmlhttp.responseXML;
createImageChoices(xmlDoc);
readServiceInfo(xmlDoc);
getcapcache[escape(getcapurl)]=xmlhttp.responseText;
setStatus(servstr+" capabilities xml response received");
if(!quiet)showMess(servstr+" Capabilities Response Finished",2000);
createSelectionForm(xmlDoc,treeid);
getcaprepeats=0;
}
else{
if(xmlhttp.status==200){
var resp=xmlhttp.responseText;
var sresp=resp.substring(0,400);
var eresp=resp.substring(400);
var isXML=resp.substring(0,5);
if(isXML=="<?xml"){
var re=/<!DOCTYPE(.|\n)*<WMT_MS/;
var response;
if(sresp.match(re)){
response=sresp.replace(re,'<WMT_MS');
}
else{
var se=/<!DOCTYPE(.|\n)*<WMS_MS/;
if(sresp.match(se)){
response=sresp.replace(se,'<WMS_MS');
}
}
response+=eresp;
if(typeof DOMParser!="undefined"){
var parser=new DOMParser();
xmlDoc=parser.parseFromString(response,"text/xml");
var roottag=xmlDoc.documentElement;
if(roottag.tagName!="parserError"){
createImageChoices(xmlDoc);
readServiceInfo(xmlDoc);
getcapcache[escape(getcapurl)]=response;
setStatus(servstr+" capabilities xml response received");
if(!quiet)showMess(finished+" "+servstr+" Capabilities",2000);
createSelectionForm(xmlDoc,treeid);
}
else{
if(!quiet)showMess(finished+" "+servstr+" Capabilities",2000);
setStatus(servstr+" capabilities xml response received");
setOpZone();
}
}
}
}
else{
if(!quiet)showMess(xmlhttp.getAllResponseHeaders());
if(xmlhttp.responseText)showIt(xmlhttp.responseText);
setOpZone();
setTimeout("hideMess()",3000);
}
}
}
}
else{
var xb=
"&nbsp;<input type=\"button\" onclick=\"if(xmlhttp){ xmlhttp.abort();} hideMess();\" value=\"cancel\" />"
if(xmlhttp.readyState==3){
setStatus(receiving+" "+servstr+" capabilities");
if(!quiet)showMess(receiving+" "+servstr+" capabilities",1000);
}
if(xmlhttp.readyState==2){
setStatus(waiting+" "+servstr+" capabilities");
if(!quiet)showMess(waiting+" "+servstr+" capabilities"+xb);
}
if(xmlhttp.readyState==1){
}
}
};
if(!quiet)setStatus(sending+" "+servstr+" capabilities request");
xmlhttp.send(null);
}
function readServiceInfo(xmlDoc){
var x=xmlDoc.getElementsByTagName('Service');
if(!x||x.length<1){
x=xmlDoc.getElementsByTagName('ows:ServiceIdentification');
}
isTNT=false;
serverMaxWidth=1024;
serverMaxHeight=768;
for(var i=0;i<x.length;i++){
for(var j=0;j<x.item(i).childNodes.length;j++){
var nn=x.item(i).childNodes.item(j).nodeName;
if(x.item(i).childNodes.item(j).firstChild){
var nv=x.item(i).childNodes.item(j).firstChild.nodeValue;
if(nn=="Title"||nn=="ows:Title"){
var win;
if(parent.main){
win=parent.main;
}
else{
win=window;
}
var t=win.document.getElementById("servicetitle");
serverName=nv;
if(t)t.innerHTML=nv;
}
if(nn=="MaxWidth"){
serverMaxWidth=nv;
}
if(nn=="MaxHeight"){
serverMaxHeight=nv;
}
if(nn=="KeywordList"||nn=="ows:KeyWords"){
kwl=x.item(i).childNodes.item(j);
for(var k=0;k<kwl.childNodes.length;k++){
var kw=kwl.childNodes.item(k);
if(kw.firstChild){
if(kw.firstChild.nodeValue=="MicroImages"){
isTNT=true;
}
}
}
}
}
}
}
var idx=inChoices(wmsurl);
if(idx<0){
var server=new ServerInfo(wmsurl,serverName);
server.maxw=serverMaxWidth;
server.maxh=serverMaxHeight;
server.isTNT=isTNT;
choiceServers.push(server);
}
else{
choiceServers[idx].maxw=serverMaxWidth;
choiceServers[idx].maxh=serverMaxHeight;
choiceServers[idx].isTNT=isTNT;
}
}
function ESRIMAPfilter(url){
var newurl=url;
if(url.indexOf("esri.wms.Esrimap/")!=-1){
var newuri=url.replace("?","&");
newurl=newuri.replace("esri.wms.Esrimap/","esri.wms.Esrimap?ServiceName=");
}
newurl=fixUrlEnd(newurl);
return newurl;
}

