
var _IE = whichBrowser("Microsoft");
var _Nav = whichBrowser("Netscape");
var _Opera = whichBrowser("Opera");
var _Mac = whichPlatform("Mac");




var DOMSupport = domSupport();
var _X11 = whichPlatform("X11");
var DOMSupport = domSupport();
;
/*
if(_X11 && !DOMSupport)   // Linux or Unix do not fully support DHTML
  var _EXIT_NOW = confirm("This website requires DHTML support.  If you believe your\n"
		+ "browser supports DHTML click OK and continue.  If not\n"
                + "please click Cancel and link to the HTML version listed at the bottom of the page\n"
		+ "or, alternatively, download Netscape 6 from the Netscape download\n"
		+ "service." );
*/

function errorHandler(message, url, line) {
 
}

var errordata; 
onerror = errorHandler;

// Some of these functions, Event Handler functions in particular,
// are adapted from JavaScript: The Definitive Guide, 3rd Edition.
// Written by David Flanagan. Copyright (c) 1996, 1997, 1998 O'Reilly & Associates.
// This volume preceded the DOM.

// Netscape without DOM
if (_Nav && !DOMSupport) {

 var  _eventmasks = {
      onabort:Event.ABORT, onblur:Event.BLUR, onchange:Event.CHANGE,
      onclick:Event.CLICK, ondblclick:Event.DBLCLICK, 
      ondragdrop:Event.DRAGDROP, onerror:Event.ERROR, 
      onfocus:Event.FOCUS, onkeydown:Event.KEYDOWN,
      onkeypress:Event.KEYPRESS, onkeyup:Event.KEYUP, onload:Event.LOAD,
      onmousedown:Event.MOUSEDOWN, onmousemove:Event.MOUSEMOVE, 
      onmouseout:Event.MOUSEOUT, onmouseover:Event.MOUSEOVER, 
      onmouseup:Event.MOUSEUP, onmove:Event.MOVE, onreset:Event.RESET,
      onresize:Event.RESIZE, onselect:Event.SELECT, onsubmit:Event.SUBMIT,
      onunload:Event.UNLOAD
    };


  var addEventHandler = function(id, eventname, handler) { 
      errordata ="id=" + id + " eventname =" + eventname;
      document.layers[id].captureEvents(_eventmasks[eventname]);
      document.layers[id][eventname] =   function(event) {
          return handler(event);
              }
  }


  var removeEventHandler = function(id, eventname) {
      window.document[id].releaseEvents(_eventmasks[eventname]);
      delete window.document[id].eventname;
  }

  var getX = function(id) { return window.document[id].left; }
  var getY = function(id) { return window.document[id].top; }
  var setZIndex = function(id, z) { window.document[id].zIndex = z; }
  var browserWidth = function() { return window.innerWidth; } 
  var browserHeight = function() { return window.innerHeight; } 
  var isdefined = function (id) { return typeof(document[id]) == 'object'; }
  var show = function(id) { setStyle('visibility', 'show', id); }
  var hide = function(id) { setStyle('visibility', 'hide', id);  }
  var objectWidth = function(id) { return window.document[id].clip.width }
  var objectHeight = function (id) { return window.document[id].clip.height }
  var setStyle =   function(prop, value, id) {      
                      eval ( 'document["' + id + '"].' + prop + '="' + value +'"');
                    errordata ="id=" + id + "  prop=" + prop;
                            
             }

  var getStyle = function(prop, id) {           
                      return eval ( 'document["' + id + '"].' + prop)
             }

  var move_To = function(x,y,id) {          
           window.document[id].moveTo(x,y);
         }

  var setBody = function(id) {

      for (var i = 1; i < arguments.length; i++) {
	window.document[id].document.writeln(arguments[i]);
      }

      window.document[id].document.close();

   }  

}

// IE without DOM
else if (!DOMSupport && document.all) {
_IE = true;  // covers possible browsers which support document.all but are not IE 
  var addEventHandler = function(id, eventname, handler) { 
        var ID = id;  
        document.all[id][eventname] = function() { 
            var e = window.event;
            e.cancelBubble = true;
            return handler(e); 
        }
    }

   var removeEventHandler = function(id, eventname, handler) {
         var element =  document.all[id];
         element[eventname] = function() {  
                    return false;
          }     

  }

  var isdefined = function (id)  { return typeof(document.all[id]) == 'object'; }

  var setStyle = 
     function(prop, value, id) {
              eval ( 'document.all["' + id + '"].style.' + prop + '="' + value +'"')
     }

  var getStyle = 
     function(prop, id) {
              return eval ( 'document.all["' + id + '"].style.' + prop)
     }
      
    var show = function(id) { setStyle('visibility', 'visible', id); }
    var hide = function(id) { setStyle('visibility', 'hidden', id);  }
    var browserWidth = function() { return document.body.clientWidth; } 
    var browserHeight = function() { return document.body.clientHeight; } 
    var getX = function(id) {
      var element =  document.all[id];
      return (element.style.pixelLeft); 
    }
   
   var getY = function (id) {
  	var element =  document.all[id];
  	return (element.style.pixelTop); 
	}

   var move_To = function (x,y, id) {
        var element =  document.all[id];
        element.style.pixelTop = y;
        element.style.pixelLeft = x;
    }

   var setZIndex = function (id, z) {
       var element =  document.all[id];
       element.style.zIndex = z;
   }

  var objectWidth = function(id) { return document.all[id].offsetWidth }
  var objectHeight = function(id) { return document.all[id].offsetHeight }

  var setBody = function(id) {
      var body = "";
      for (var i = 1; i < arguments.length; i++) {
	body += arguments[i] + "\n";
      }
     var element =  document.all[id];
     element.innerHTML = body;
  }


}

// Browsers that support the DOM 
else if (DOMSupport ) {
  var addEventHandler = function(id, eventname, handler) { 
        var ID = id;         
        var element = getElement(id); 
         if(_Nav) {
            eventname = eventname.substring(2);            
            element.addEventListener(eventname, handler, false); 
          }
        element[eventname] = function() { 
          var e;
          if(_IE) { 
            e  = window.event;  

            return handler(e);
           }
            else return handler;
          
         }  
           
       }

  var deletedFn = function(id, eventname){ return false;}
  

  var removeEventHandler = function(id, eventname, handler) {
          var element = getElement(id);               
         if(_Nav) {
            eventname = eventname.substring(2);            
            element.removeEventListener(eventname, handler, false); 
          }
          else {                      
            element[eventname] = function() {  //deletedFn ;   
                    return false;
          }     
             
        }
     }

  var isdefined = function (id)  {
           var element = getElement(id);
           return typeof(element) == 'object';
      }

  var setStyle = 
     function(prop, value, id) { 
         var element = getElement(id); 
         eval ( 'element.style.' + prop + '="' + value +'"')

     }  

  var getStyle = 
     function(prop, id) { 
         var element = getElement(id); 
         return eval ( 'element.style.' + prop)

     }  
    
   var show = function(id) { setStyle('visibility', 'visible', id); }
   var hide = function(id) { setStyle('visibility', 'hidden', id);  }
   
  var objectWidth = function(id) { 
        var element =  getElement(id);    
        return element.offsetWidth 
   }

  var objectHeight = function(id) {
        var element =  getElement(id);    
        return element.offsetHeight
   }

   var getX = function(id) {
      var element =  getElement(id);    
      return parseInt(element.style.left); 
    }
   
   var getY = function (id) {
  	var element =  getElement(id);    
  	return parseInt(element.style.top); 
	}

   var move_To = function (x,y, id) {
        var element =  getElement(id);          
        element.style.top = y;
        element.style.left = x;
    }

   var setZIndex = function (id, z) {
       var element =  getElement(id);    
       element.style.zIndex = z;
   }


  var setBody = function(id) {  

      var body = "";
      for (var i = 1; i < arguments.length; i++) {
	body += arguments[i] + "\n";
      }
    
     var element =  getElement(id);    
     element.innerHTML = body;

  }


  if(_IE || document.body ) {
     var browserWidth = function() { return document.body.clientWidth; } 
     var browserHeight = function() { return document.body.clientHeight; } 
   }
  else {
    var browserWidth = function() { return window.innerWidth; } 
    var browserHeight = function() { return window.innerHeight; } 
  }


}

function mouseX(e) { 
 if(e.clientX)    
   return e.clientX;
 else 
   return e.pageX;
 }

function mouseY(e) {
 if(_IE)     
   return e.clientY;
 else 
   return e.pageY;
}

function getID(e) {
  if(_IE)     {   
     return e.srcElement.id;
  }
  else if (_Nav)
   {
      
     if(DOMSupport)
        return e.currentTarget.id;
     else 
       return e.target.id;
   }
}
  


function domSupport() {
// var _Opera = whichBrowser("Opera");

 if(_Opera) {
     return true;
 }
 if (_Nav && parseInt(navigator.appVersion) >= 5 ) 
        return true;  

 if (_IE && parseInt(navigator.appVersion) < 4 ) 
       return false;
 //if (_IE && navigator.appVersion.indexOf["MSIE 5"] != -1)                
   //            return true;
 else if (_IE) {
     var index = navigator.appVersion.indexOf("MSIE");
   //  alert(navigator.appVersion);
     if(index != -1) {
         var version =  navigator.appVersion.substr(index + 4);       
         if(parseInt(version) > 4) {
              return true;
         }
     }
 }
 return false; 
}

function whichBrowser(name) {
  return (navigator.appName.indexOf(name) != -1) 
}

function whichPlatform(name) {
  return (navigator.appVersion.lastIndexOf(name) != -1) 
}

function getElement(id) {
    if(DOMSupport)  return document.getElementById(id);
        else return document.all[id];
}


function listToWindow (obj) {

var w = window.open();
w.document.write("<h1>",navigator.appName, "</h1>");
w.document.write("<h2>",obj.tagName,"</h2>");
         
       
        for(var i in obj) {                 
  	  var text = new String(obj[i]);
	  var r = text.replace(/</g, "&lt;");        
          w.document.write(i, " = ",r,"<br>");
       }

w.document.write("<P>");
w.document.close();
}


function list (obj) {
alert("obj=" + obj);
var n = 0;
          
        var names = "";
        for(var i in obj) {
               
            names += i  + "="+ obj[i] + "\n";            
            n++;
            if(n == 2) {
              n = 0;
              if(!confirm(names)) return;
              // alert(names);
               names = "";
            }
        }
          alert(names);

}

function Dimension(w, h) {
  this.width = w;
  this.height = h;
}


function getDim(id) {
   var w = objectWidth(id);
   var h = objectHeight(id);
   return new Dimension(w,h);
}


function getDOMStyle(id) {
  if(document.layers) return getDOM(id);
  return getDOM(id).style;
}

function getDOM(id) {
  var DOM;
  if(document.getElementById) {
   DOM = document.getElementById(id);
  }
  else if (document.layers) {      
   DOM = document[id];
  }
 else if(document.all) {
  DOM = document.all[id];
  }

  return DOM;
}



