/***********************************************************************************/
// MapServer2003.js
//
// JavaScript Funktionen zur Darstellung dynamischer Layer mit Zoombox Funktionen
// (c) WIGeoGIS GmbH, (c) ESRI Inc.
//
// Allgemeine Variablen und Einstellungen

var errorHappend = false;
var errorActive = false;

var left;
var right;
var top;
var bottom;
var fullLeft;
var fullRight;
var fullTop;
var fullBottom;
var newLeft;
var newBottom;
var newRight;
var newTop;

// Kartengroesse
var iWidth;
var iHeight;

// Layer offset
var hspc;
var vspc;

var ovBoxSize = 2; //breite der Zoombox = breite vom rand des rechtecks, dass man beim dynamischen zoom aufzieht !!!

//vars für die einzelnen Browserversionen !!
var is_ie;
var is_ie3;
var is_ie4;
var is_ie4up;
var is_ie5;
var is_ie5_5;
var is_ie5up;
var is_ie5_5up;
var is_ie6;
var is_ie6up;

var is_nav;
var is_nav2;
var is_nav3;
var is_nav4;
var is_nav4up;
var is_navonly;
var is_nav6;
var is_nav6up;
var is_gecko;


// Allgemeine Einstellungen
function generalSettings(iw,ih,hs,vs) {
   iWidth = iw;
   iHeight = ih;
   hspc = hs;
   vspc = vs;
   checkbrowser();   
}


/***********************************************************************************/
// DHTML Layer erzeugen
function createLayer(name, left, top, width, height, visible, content, pos) {
          var layer;
          if (document.layers) {
            document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') +  '>');
            document.writeln(content);
            document.writeln('</layer>');
            layer = getLayer(name);
            layer.width = width;
            layer.height = height;
          } else {
          	//alert("ELSE --> NO LAYERS");
            document.writeln('<div id="' + name + '" style="position:absolute; overflow:none; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') + ' z-index: ' + pos + '">');
            document.writeln(content);
            document.writeln('</div>');
          }
          clipLayer(name, 0, 0, width, height);          
}



/***********************************************************************************/
// DHTML Layer erzeugen
function createFloatLayer(name, left, top, width, height, visible, content) {
          var layer;
          if (document.layers) {
            document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') +  '>');
            document.writeln(content);
            document.writeln('</layer>');
            layer = getLayer(name);
            layer.width = width;
            layer.height = height;
          } else {
            document.writeln('<div id="' + name + '" style="position:absolute; overflow:auto; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') +  '">');
            document.writeln(content);
            document.writeln('</div>');
          }
          clipLayer(name, 0, 0, width, height);
}

// Get Layer mit dem Namen "name"
function getLayer(name) {
          if (document.layers){          	          	
            return(document.layers[name]);
          }
          else if (document.all) {          		
                if ( eval('document.all.' + name) != null) {
                    layer = eval('document.all.' + name + '.style');
                    return(layer);
                } else
                    return(null);
          }
          else if (is_nav6){         		
          		//if (name == 'zoomB//oxTop') alert("here at getlayer");
				var theObj = document.getElementById(name);
				return theObj.style          	
				
				//alert("GOT HERE");
				//return(null);
          }
          else
            return(null);
}

// Bewege Layer nach x,y
function moveLayer(name, x, y) {				
        var layer = getLayer(name);        
        
        if (layer != null) {        	
              if (document.layers){
                layer.moveTo(x, y);
              }
  			  else {  //if (document.all) {  			  	
  			  	//alert("here at move 3 " + x + " " + y);
				layer.left = x;
				layer.top  = y;
			  }
			  
        }
}

// Hintergrundfarbe setzen
function setLayerBackgroundColor(name, color) {
       var layer = getLayer(name);
       if (layer != null) {
             if (document.layers)
               layer.bgColor = color;
             else if (document.all){
                layer.backgroundColor = color;
             } else if (is_nav6){
             	layer.backgroundColor = color;
             }
        }
        else{
        	alert("layer is null");
        }
}

// Toggle unsichtbar
function hideLayer(name) {
        
        var layer = getLayer(name);
        //alert(layer);
        if (layer != null) {
                
                if (document.layers)
                {
                	 //alert('test');
                	layer.visibility = "hide";
                }
                if (document.all)
                {
                         //alert('test');
                         layer.visibility = "hidden";
                }
                if (is_nav6)       
                {
                	//alert('test');
                	layer.visibility = "hidden";
                }
        }
        //alert('test');
}

// Toggle sichtbar
function showLayer(name) {
        var layer = getLayer(name);
        if (layer != null) {
                if (document.layers)
                	layer.visibility = "show";
                else if (document.all){                	
                	//alert("HERE AT SHOWLAYER doc.all");         	
                 	layer.visibility = "visible";
                }
                else if (is_nav6){       
                	//alert("HERE AT SHOWLAYER");         	
                	layer.visibility = "visible";	
                }                
        }
        else{
        	//alert("L IS NULL");
        }
}

// Clip Layer nach clipleft, cliptop, clipright, clipbottom
function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {		  
          var layer = getLayer(name);             
          if (layer != null) {          		  
                  if (document.layers) {                  	  
                      layer.clip.left   = clipleft;
                      layer.clip.top    = cliptop;
                      layer.clip.right  = clipright;
                      layer.clip.bottom = clipbottom;                      
                  } else {                          	  
                      if (document.all) {                      	  
                          layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
                      } else if (is_nav6 || is_nav6up){
                      	  layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
                      } else{                          
                      	  layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
                      	  /*
                          layer.clip.left   = clipleft;
                          layer.clip.top    = cliptop;
                          layer.clip.right  = clipright;
                          layer.clip.bottom = clipbottom;                          
                          */
                          //alert("HERE3");
                      }
                  }
          }
          else{
          	//alert("Name : |" + name + "| == null");// " + layer == null)       
          }
}

// Layerinhalt ersetzen
function replaceLayerContent(name, content) {
          if (document.layers) {
                    var layer = getLayer(name);
                        if (layer != null) {
                            layer.document.open();
                            layer.document.writeln(content);
                            layer.document.close();
                        }
          }  else if (document.all) {
                        if (eval("document.all." + name) != null) {
                                content = content.replace(/\'/g,"\\'");
                            var str = "document.all." + name + ".innerHTML = '" + content + "'";
                            eval(str);
                        }
          }
}



/***********************************************************************************/
// Zoombox Einstellungen
// um Mauspositionen zu speichern
var mouseX=0;
var mouseY=0;
var x1=0;
var y1=0;
var x2=0;
var y2=0;
var zleft=0;
var zright=0;
var ztop=0;
var zbottom=0;

var mapX = left;
var mapY = top;

var zooming=false;
var bottomBorderHeight = 0;

function setZoomBoxSettings() {

        // Set up event capture for mouse movement
        if (document.layers) {
                document.captureEvents(Event.MOUSEMOVE);
                document.captureEvents(Event.MOUSEDOWN);
                document.captureEvents(Event.MOUSEUP);
        }
        document.onmousemove = getMouse;
        document.onmousedown = mapTool;
        document.onmouseup = chkMouseUp;

}

// Mouseup
function chkMouseUp(e) {
        if (zooming && !errorActive) {
               if (mouseX<0)
                       mouseX = 0;
               if (mouseX>iWidth)
                       mouseX = iWidth;
               if (mouseY<0)
                       mouseY = 0;
               if (mouseY>iHeight)
                       mouseY = iHeight;
               mapTool(e);
        }
}

// perform appropriate action with mapTool
function mapTool (e) {
  if (!errorActive) {
        getImageXY(e);
        if ((!zooming) && (mouseX>=0) && (mouseX<iWidth) && (mouseY>=0) && (mouseY<iHeight)) {
                startZoomBox(e);
                return false;

        } else if (zooming) {
                getMouse(e);
                stopZoomBox(e);
        }
  }
  return true;
}


// Mouseclicks in x/y Koordinaten transformieren
function getMapXY(xIn,yIn) {
         mouseX = xIn;
         var pixelX = (right-left) / iWidth;
         mapX = pixelX * mouseX + left;
         mouseY = iHeight - yIn;
         var pixelY = (top-bottom) / iHeight;
         mapY = pixelY * mouseY + bottom;
}

function getImageXY(e) {
		
        if (document.layers) {
            mouseX=e.pageX;
            mouseY=e.pageY;
        } else {
            if (document.all) {
               mouseX=event.clientX + document.body.scrollLeft;
               mouseY=event.clientY + document.body.scrollTop;
            } else {
               mouseX=e.pageX;
               mouseY=e.pageY;
            }
        }
        // Offset von links und oben abziehen
        mouseX = mouseX-hspc;
        mouseY = mouseY-vspc;

}



// Rund um Mausklick zoomen
function zoomin(e) {
        getMapXY(mouseX,mouseY);
        var zoomFactor = 1;

        var widthHalf = Math.abs(right - left) / 2;
        var heightHalf = Math.abs(top - bottom) / 2;
        newLeft = mapX - (widthHalf / zoomFactor);
        newRight = mapX + (widthHalf / zoomFactor);
        newTop = mapY + (heightHalf / zoomFactor);
        newBottom = mapY - (heightHalf / zoomFactor);

        refreshMap(true);
}


// Koordinaten an der Mausposition
function getMouse(e) {
  if (!errorActive) {
     window.status="";
     getImageXY(e);
     
     if (document.all){     	
     	//if (theImage != null){     		
            //theImage.style.cursor = "crosshair";
        //}
     }
     

        if (zooming) {
                if (mouseX<0)
                        mouseX = 0;
                if (mouseX>iWidth)
                        mouseX = iWidth;
                if (mouseY<0)
                        mouseY = 0;
                if (mouseY>iHeight-bottomBorderHeight)
                        mouseY = iHeight-bottomBorderHeight;
                x2=mouseX;
                y2=mouseY;
                setClip();
                return false;
        } else
                return true;
   }
   return true;
}

// Start ZoomIn
function startZoomBox(e) {					
        moveLayer("theMap",hspc,vspc);        
        
        getImageXY(e);
        // Nicht größer als MapImage
        
        if ((mouseX<iWidth) && (mouseY<iHeight-bottomBorderHeight)) {        		
                if (!zooming) {                		
                        x1=mouseX;
                        y1=mouseY
                        x2=x1+1;
                        y2=y1+1;
                        
                        clipLayer("zoomBoxTop",x1,y1,x2,y2);
                        clipLayer("zoomBoxLeft",x1,y1,x2,y2);
                        clipLayer("zoomBoxRight",x1,y1,x2,y2);
                        clipLayer("zoomBoxBottom",x1,y1,x2,y2);                        
                        
                        zooming=true;
                        showLayer("zoomBoxTop");
                        showLayer("zoomBoxLeft");
                        showLayer("zoomBoxRight");
                        showLayer("zoomBoxBottom");
                }
        } else {
                if (zooming) {
                        stopZoomBox(e);
                }                
        }
        return false;
}

// Stop ZoomIn
function stopZoomBox(e) {
        zooming=false;
        if ((zright <zleft+2) && (ztop < zbottom+2)) {
                // Wenn die Zoombox zu klein ist
                zoomin(e);
        } else {
                var width = Math.abs(right - left);
                var height = Math.abs(top - bottom);
                var pixelX = width / iWidth;
                var theY = iHeight - ztop;
                var pixelY = height / iHeight;
                newTop = pixelY * theY + bottom;
                newRight = pixelX * zright + left;
                newLeft = pixelX * zleft + left;
                theY = iHeight - zbottom;
                pixelY = height / iHeight;
                newBottom = pixelY * theY + bottom;

                refreshMap(true);
        }
        return true;
}

// Clip Zoombox an Mauskoordinaten
function setClip() {
        var tempX=x1;
        var tempY=y1;
        if (x1>x2) {
                zright=x1;
                zleft=x2;
        } else {
                zleft=x1;
                zright=x2;
        }
        if (y1>y2) {
                zbottom=y1;
                ztop=y2;
        } else {
                ztop=y1;
                zbottom=y2;
        }

        if ((x1 != x2) && (y1 != y2)) {
                
                clipLayer("zoomBoxTop",zleft,ztop,zright,ztop+ovBoxSize);
                clipLayer("zoomBoxLeft",zleft,ztop,zleft+ovBoxSize,zbottom);
                clipLayer("zoomBoxRight",zright-ovBoxSize,ztop,zright,zbottom);
                clipLayer("zoomBoxBottom",zleft,zbottom-ovBoxSize,zright,zbottom);
        }
}

function hideZoomBox() {
        hideLayer("zoomBoxTop");
        hideLayer("zoomBoxLeft");
        hideLayer("zoomBoxRight");
        hideLayer("zoomBoxBottom");
}


/***********************************************************************************/
// Karte aufrufen mit den ermittelten X/Y Koordinaten. Werte aus Form auslesen.

function refreshMap(zooming) {
	
	showLayer("loadLayer");
	//alert('1');
	s = document.forms['form1'].elements['STDREQUEST'].value;
	//alert('2');
	s = s + "&X1=" + x1 + "&Y1=" + y1 + "&X2=" + x2 + "&Y2=" + y2;
	//alert('3');
	s = s + "&SAK=ZOOM";
	 //alert('4');
    document.location = s;
}



/***********************************************************************************/
// CheckBrowser

function checkbrowser() {
// Creates "is_" variables indicating:
// (1) browser vendor:
//     is_nav, is_ie, is_opera, is_hotjava, is_webtv, is_TVNavigator, is_AOLTV
// (2) browser version number:
//     is_major (integer indicating major version number: 2, 3, 4 ...)
//     is_minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
//     is_nav2, is_nav3, is_nav4, is_nav4up, is_nav6, is_nav6up, is_gecko, is_ie3,
//     is_ie4, is_ie4up, is_ie5, is_ie5up, is_ie5_5, is_ie5_5up, is_ie6, is_ie6up, is_hotjava3, is_hotjava3up,
//     is_opera2, is_opera3, is_opera4, is_opera5, is_opera5up
// (4) JavaScript version number:
//     is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
//     is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98, is_winme, is_win2k
//     is_os2
//     is_mac, is_mac68k, is_macppc
//     is_unix
//     is_sun, is_sun4, is_sun5, is_suni86
//     is_irix, is_irix5, is_irix6
//     is_hpux, is_hpux9, is_hpux10
//     is_aix, is_aix1, is_aix2, is_aix3, is_aix4
//     is_linux, is_sco, is_unixware, is_mpras, is_reliant
//     is_dec, is_sinix, is_freebsd, is_bsd
//     is_vms
//

    // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();

    // *** BROWSER VERSION ***
    // Note: On IE5, these return 4, so use is_ie5up to detect IE5.
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);

    // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
    // If you want to allow spoofing, take out the tests for opera and webtv.
    is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
    is_nav2 = (is_nav && (is_major == 2));
    is_nav3 = (is_nav && (is_major == 3));
    is_nav4 = (is_nav && (is_major == 4));
    is_nav4up = (is_nav && (is_major >= 4));
    is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    is_nav6 = (is_nav && (is_major == 5));
    is_nav6up = (is_nav && (is_major >= 5));
    is_gecko = (agt.indexOf('gecko') != -1);


	is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    is_ie3    = (is_ie && (is_major < 4));
    is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
    is_ie4up  = (is_ie && (is_major >= 4));
    is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
    is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
    is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
    is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
    is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);

    // KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
    // or if this is the first browser window opened.  Thus the
    // variables is_aol, is_aol3, and is_aol4 aren't 100% reliable.
    var is_aol   = (agt.indexOf("aol") != -1);
    var is_aol3  = (is_aol && is_ie3);
    var is_aol4  = (is_aol && is_ie4);
    var is_aol5  = (agt.indexOf("aol 5") != -1);
    var is_aol6  = (agt.indexOf("aol 6") != -1);

    var is_opera = (agt.indexOf("opera") != -1);
    var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
    var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
    var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
    var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
    var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);

    var is_webtv = (agt.indexOf("webtv") != -1); 

    var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1)); 
    var is_AOLTV = is_TVNavigator;

    var is_hotjava = (agt.indexOf("hotjava") != -1);
    var is_hotjava3 = (is_hotjava && (is_major == 3));
    var is_hotjava3up = (is_hotjava && (is_major >= 3));

    // *** JAVASCRIPT VERSION CHECK ***
    var is_js;
    if (is_nav2 || is_ie3) is_js = 1.0;
    else if (is_nav3) is_js = 1.1;
    else if (is_opera5up) is_js = 1.3;
    else if (is_opera) is_js = 1.1;
    else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2;
    else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3;
    else if (is_hotjava3up) is_js = 1.4;
    else if (is_nav6 || is_gecko) is_js = 1.5;
    // NOTE: In the future, update this code when newer versions of JS
    // are released. For now, we try to provide some upward compatibility
    // so that future versions of Nav and IE will show they are at
    // *least* JS 1.x capable. Always check for JS version compatibility
    // with > or >=.
    else if (is_nav6up) is_js = 1.5;
    // NOTE: ie5up on mac is 1.4
    else if (is_ie5up) is_js = 1.3

    // HACK: no idea for other browsers; always check for JS version with > or >=
    else is_js = 0.0;

    // *** PLATFORM ***
    var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
    // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
    //        Win32, so you can't distinguish between Win95 and WinNT.
    var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));

    // is this a 16 bit compiled version?
    var is_win16 = ((agt.indexOf("win16")!=-1) || 
               (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) || 
               (agt.indexOf("windows 16-bit")!=-1) );  

    var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
                    (agt.indexOf("windows 16-bit")!=-1));

    var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));
    var is_win2k = ((agt.indexOf("windows nt 5.0")!=-1));

    // NOTE: Reliable detection of Win98 may not be possible. It appears that:
    //       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
    //       - On Mercury client, the 32-bit version will return "Win98", but
    //         the 16-bit version running on Win98 will still return "Win95".
    var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
    var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
    var is_win32 = (is_win95 || is_winnt || is_win98 || 
                    ((is_major >= 4) && (navigator.platform == "Win32")) ||
                    (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));

    var is_os2   = ((agt.indexOf("os/2")!=-1) || 
                    (navigator.appVersion.indexOf("OS/2")!=-1) ||   
                    (agt.indexOf("ibm-webexplorer")!=-1));

    var is_mac    = (agt.indexOf("mac")!=-1);
    // hack ie5 js version for mac
    if (is_mac && is_ie5up) is_js = 1.4;
    var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) || 
                               (agt.indexOf("68000")!=-1)));
    var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) || 
                                (agt.indexOf("powerpc")!=-1)));

    var is_sun   = (agt.indexOf("sunos")!=-1);
    var is_sun4  = (agt.indexOf("sunos 4")!=-1);
    var is_sun5  = (agt.indexOf("sunos 5")!=-1);
    var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
    var is_irix  = (agt.indexOf("irix") !=-1);    // SGI
    var is_irix5 = (agt.indexOf("irix 5") !=-1);
    var is_irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
    var is_hpux  = (agt.indexOf("hp-ux")!=-1);
    var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
    var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
    var is_aix   = (agt.indexOf("aix") !=-1);      // IBM
    var is_aix1  = (agt.indexOf("aix 1") !=-1);    
    var is_aix2  = (agt.indexOf("aix 2") !=-1);    
    var is_aix3  = (agt.indexOf("aix 3") !=-1);    
    var is_aix4  = (agt.indexOf("aix 4") !=-1);    
    var is_linux = (agt.indexOf("inux")!=-1);
    var is_sco   = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
    var is_unixware = (agt.indexOf("unix_system_v")!=-1); 
    var is_mpras    = (agt.indexOf("ncr")!=-1); 
    var is_reliant  = (agt.indexOf("reliantunix")!=-1);
    var is_dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) || 
           (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) || 
           (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1)); 
    var is_sinix = (agt.indexOf("sinix")!=-1);
    var is_freebsd = (agt.indexOf("freebsd")!=-1);
    var is_bsd = (agt.indexOf("bsd")!=-1);
    var is_unix  = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux || 
                 is_sco ||is_unixware || is_mpras || is_reliant || 
                 is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);

    var is_vms   = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));

}
