<!--
/*
 DHTML Library Version 2.10
 Last Updated: December 5, 1999
 Copyright 1997-1999 by InsideDHTML.com, LLC

 This file cannot be redistributed or sold as part of any package without
 explicit consent from Scott Isaacs - scott@siteExperts.com

  For more information on this library, see http://www.siteExperts.com

 This library is provided AS IS WITHOUT WARRANTY OF ANY KIND AND ARE PROVIDED
 WITHOUT ANY IMPLIED WARRANTY OF FITNESS FOR PURPOSE, MERCHANTABILITY,
 OR NON-INFRINGEMENT.

 Due to the variable nature of the different Internet Client Object Models there are
 no guarantees this library will work AS IS in future releases of any browser.

 Unless prior arrangements are made with scotti@siteExperts.com, this file must be
 referenced as an external script by your web-pages. See the instructions for more
 details.

 Registering

 This library can be used on your web-site as long as you comply with the following requirements:
  1) The copyright notice and disclaimer must be maintained in the library file.
  2) You register your URL (or company with email address if non-public URL such as an intranet)
  to DHTMLLibrary@siteExperts.com. Please state if you DO NOT want your web-site or company
  listed as using this library (Your e-mail addresses will never be given out).
  3) You include a link back to www.SiteExperts.com

 Questions should be send to scotti@siteExperts.com.
 See http://www.siteExperts.com for more information.

 This comment must be maintained in the document unless prior arrangements are made
 with scotti@siteExperts.com.
*/


// Begin Library

var sys = navigator.appName;
var vers = parseInt(navigator.appVersion);
var n4 = document.layers
var ie4Mac = (vers>=4) && (navigator.appVersion.indexOf("Mac")>-1) && (!n4)

// Track property changes in Netscape

function testScroll() {
 // For onscroll event
 // Initialize scrollbar cache if necessary
 if (window._pageXOffset==null) {
  window._pageXOffset = window.pageXOffset
  window._pageYOffset = window.pageYOffset
 }
 // Expose Internet Explorer compatible object model
 document.body.unwatch("scrollTop")
 document.body.unwatch("scrollLeft")
 document.body.scrollTop = window.pageYOffset
 document.body.scrollLeft = window.pageXOffset
 window.document.body.scrollHeight = document.height
 window.document.body.scrollWidth = document.width
 document.body.watch("scrollTop",CheckScrollTop)
 document.body.watch("scrollLeft",CheckScrollLeft)
 document.body.clientWidth = window.innerWidth-20;
 document.body.clientHeight = window.innerHeight-20;

 // If cache!=current values, call the onscroll event
 if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll))
  window.onscroll()
 // Cache new values
 window._pageXOffset = window.pageXOffset
 window._pageYOffset = window.pageYOffset
}

function CheckScrollTop(prop,temp,newValue) {
 //window.pageYOffset = newValue
 return newValue
}

function CheckScrollLeft(prop,temp,newValue) {
 //window.pageXOffset= newValue
 return newValue
}

function CheckTopChange(prop,temp,newValue) {
 this.NSLayer.owningElement.offsetTop = this.NSLayer.top = newValue
 return newValue
}

function CheckLeftChange(prop,temp,newValue) {
 this.NSLayer.owningElement.offsetLeft= this.NSLayer.left = newValue
 return newValue
}

function CheckWidthChange(prop,temp,newValue) {
 this.NSLayer.owningElement.offsetWidth = this.NSLayer.clip.width = newValue
 return newValue
}

function CheckHeightChange(prop,temp,newValue) {
 this.NSLayer.owningElement.offsetHeight = this.NSLayer.clip.height = newValue
 return newValue
}

function CheckColorChange(prop,temp,newValue) {
 this.NSLayer.bgColor = newValue
 return newValue
}

function CheckClipChange(prop,temp,newValue) {
 var sText = newValue.substring(5)
 sText = sText.substring(0,sText.length-1)
 var aVal = sText.split(" ")
 this.NSLayer.clip.top = aVal[0]
 this.NSLayer.clip.width = aVal[1]
 this.NSLayer.clip.height = aVal[2]
 this.NSLayer.clip.left = aVal[3]
 return newValue
}

function CheckZIndexChange(prop,temp,newValue) {
 this.NSLayer.zIndex = newValue
 return newValue
}

function CheckContentChange(prop,temp,newValue) {
 this.NSLayer.document.open()
 this.NSLayer.document.write(newValue)
 this.NSLayer.document.close()
 this.NSLayer.document.owningElement = this.NSLayer.owningElement = this
 _extract(this.NSLayer, true)
 return newValue
}

function CheckVisibilityChange(prop,temp,newValue) {
 if (newValue=="hidden")
  this.NSLayer.visibility = "hide";
 else if (newValue=="visible")
  this.NSLayer.visibility = "show";
 else if (newValue=="inherit")
  this.NSLayer.visibility = "inherit";
 else
  this.NSLayer.visibility = "";
 return newValue
}

/* BEGIN CORE CODE TO BUILD OBJECT MODEL */
function CheckContains(el) {
 return (el==this)
}

function _getInputTagName(type) {
 var sName
 if (type=="textarea")
  sName = "TEXTAREA"
 else if (type=="select-one")
  sName = "SELECT"
 else if (type=="select-multiple")
  sName = "SELECT"
 else
  sName = "INPUT"
 return sName
}

function _appendAll(obj, el, sName) {
 obj.all[sName] = el
 while (obj.offsetParent) {
  obj = obj.offsetParent
  obj.all[sName] = el
 }
}

function _extractRoot(obj, par) {
 for (var intLoop = 0; intLoop< obj.images.length; intLoop++) {
  var i = obj.images[intLoop]
  i.offsetParent = par
  i.offsetLeft = i.x
  i.offsetTop = i.y
  i.offsetWidth = i.width
  i.offsetHeight = i.height
  i.tagName = "IMG"
  i.contains = CheckContains
  if (""!=i.name) {
   window.document.all[i.name] = i
// window.document.images[i.name] =
   if (obj.owningElement) _appendAll(obj.owningElement, i, i.name)
  }
 }

 for (var intLoop = 0; intLoop< obj.anchors.length; intLoop++) {
  var i = obj.anchors[intLoop]
  i.contains = CheckContains
  i.offsetWidth=i.offsetHeight=0
  if (""!=i.name) {
   window.document.all[i.name] = i
   if (obj.owningElement) _appendAll(obj.owningElement, i, i.name)
  }
//   window.document.anchors[obj.anchors[intLoop].name] = obj.anchors[intLoop]
  obj.anchors[intLoop].offsetParent = par
 }

 for (var intLoop = 0; intLoop< obj.links.length; intLoop++) {
  var i=obj.links[intLoop]
  i.offsetWidth=0;i.offsetHeight=20
  i.contains = CheckContains
  i.innerText = obj.links[intLoop].text
  i.offsetParent = par
  i.offsetLeft = obj.links[intLoop].x
  i.offsetTop = obj.links[intLoop].y
 }

 for (var intLoop = 0; intLoop< obj.forms.length; intLoop++) {
  obj.forms[intLoop].offsetParent = par
  var sName = obj.forms[intLoop].name
  obj.forms[intLoop].tagName = "FORM"
  if (""!=sName) {
   window.document.all[sName] = obj.forms[intLoop]
   if (obj.owningElement) _appendAll(obj.owningElement, obj.forms[intLoop], sName)
  }
  for (var intElements = 0; intElements < obj.forms[intLoop].length; intElements++) {
   var i = obj.forms[intLoop][intElements]
   var sName = i.name
   i.offsetParent = par
   i.tagName = _getInputTagName(i.type)
   if (""!=sName) {
    window.document.all[sName] = i
    if (obj.owningElement) _appendAll(obj.owningElement, i, sName)
//     obj.owningElement.all[sName] = window.document.all[sName]
   }
  }
 }
 if (obj.owningElement) {
  var sName = obj.owningElement.id
  window.document.all[sName] = obj.owningElement
  _appendAll(obj.owningElement.offsetParent, obj.owningElement, sName)
 }
}

function _extract(obj, bRefresh) {
 /* This creates the all collection when run in Netscape and
    promotes the nested name spaces in Netscape to the top-level collection.
    The length property is not updated for the built-in collections */
 // This function is called recursively for nested layers

// Add walk up tree to add to collections code... ugh
 obj.document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.MOUSEMOVE | Event.KEYDOWN | Event.KEYPRESS | Event.KEYUP)
 obj.document.onmousedown = _NSLayerBubbling;
 obj.document.onmouseup = _NSLayerBubbling;
 obj.document.onmousemove = _NSLayerBubbling;
 obj.document.onkeydown = _NSLayerBubbling;
 obj.document.onkeypress = _NSLayerBubbling;
 obj.document.onkeyup = _NSLayerBubbling;
 obj.document._type = "document" // internal variable to track state
 // Hookup event handlers to establish event bubbling.
 if (bRefresh==null) {
  if (""!=obj.id)
   document.all[obj.id] =  new Object
  var newEl = document.all[obj.id]
  newEl.all = new Object
  obj.document.owningElement= obj.owningElement = newEl
  newEl.id = obj.id
  newEl.style = new Object
  newEl.NSLayer = newEl.style.NSLayer = obj
  newEl.offsetTop = parseInt(obj.top)
  newEl.offsetLeft = parseInt(obj.left)
  obj._type = "layer" // internal variable
  if (obj.parentLayer.owningElement!=null)
   newEl.offsetParent = obj.parentLayer.owningElement
  else
   newEl.offsetParent = document.body
  newEl.style.pixelTop = parseInt(obj.top)
  newEl.style.pixelLeft = parseInt(obj.left)
  if (null!=obj.clip) {
   newEl.style.pixelWidth = obj.clip.width   // estimation
   newEl.style.pixelHeight = obj.clip.height
  }
  newEl.style.clip = "rect(" + obj.clip.top + " " + obj.clip.width + " " + obj.clip.height + " " + obj.clip.left + ")"
  newEl.offsetWidth = newEl.style.pixelWidth  // estimation
  newEl.offsetHeight = newEl.style.pixelHeight
  newEl.contains = CheckContains;
  if (obj.visibility=="hide")
   newEl.style.visibility = "hidden";
  else if (obj.visibility=="show")
   newEl.style.visibility = "visible";
  else if (obj.visibility=="inherit")
   newEl.style.visibility = "inherit";
  else
   newEl.style.visibility = "";
  newEl.style.zIndex = obj.zIndex
  newEl.style.backgroundColor = obj.bgColor;
  newEl.style.backgroundImage = "url("+obj.background+")";

  newEl.innerHTML = ""

  newEl.style.watch("visibility",CheckVisibilityChange)
  newEl.style.watch("pixelTop",CheckTopChange)
  newEl.style.watch("pixelLeft",CheckLeftChange)
  newEl.style.watch("pixelWidth",CheckWidthChange)
  newEl.style.watch("pixelHeight",CheckHeightChange)
  newEl.style.watch("backgroundColor",CheckColorChange)
  newEl.style.watch("zIndex",CheckZIndexChange)
  newEl.style.watch("clip",CheckClipChange)
  newEl.watch("innerHTML",CheckContentChange)
 }
 _extractRoot(obj.document,newEl)

 for (var intLayer = 0; intLayer< obj.document.layers.length; intLayer++)
  _extract(obj.document.layers[intLayer])  // Nested layers, go get them.

}

function _NSLayerBubbling(ev) {
 // Bubble through any positioned elements.
 this.routeEvent(ev);
 // Fire on positioned element
 if (!window.event.cancelBubble)
  if (null!=this.owningElement["on"+ev.type]) this.owningElement["on"+ev.type]()
}

function _NSBubbling(ev) {
 // This simulates very simple event bubbling in Netscape
 // Create the event object on the window.
 window.event = ev;
 // Initialize properties on the event object
 window.event.cancelBubble = false;
 window.event.button = ev.which
 window.event.keyCode = ev.which
 window.event.type = ev.type
 if ((ev.type=="focus") || (ev.type=="blur")) return false
 // Get the "synthesized" element if it fired the event.
 var el = null;
 if ("document"==ev.target._type)
  el = ev.target.owningElement.id
 else
  el = ev.target.id
 if ((el!=null) && (el!="")) {
  el = document.all[el]
  window.event.srcElement = el
 } else {
  if (ev.target!=null) {
   window.event.srcElement=ev.target
  }
  else
   ev.target=null
 }
 window.event.returnValue = true
 window.event.clientX = ev.pageX - window.pageXOffset
 window.event.clientY = ev.pageY - window.pageYOffset
 window.event.offsetX = ev.layerX
 window.event.offsetY = ev.layerY
 window.event.screenX = ev.screenX
 window.event.screenY = ev.screenY
 window.event.altKey = (ev.modifiers & Event.ALT_MASK) ? true : false
 window.event.ctrlKey = (ev.modifiers & Event.CONTROL_MASK) ? true : false
 window.event.shiftKey = (ev.modifiers & Event.SHIFT_MASK) ? true : false
 window.event.NSEvent = ev;
 if ((ev.target._type=="layer") && ((ev.type=="mouseover") || (ev.type=="mouseout")))  {
  // Special handling to bubble over and out events on layers
  var elLoop = ev.target.document.owningElement
  while (elLoop!=null) {
   if (!window.event.cancelBubble)
    if (elLoop["on"+ev.type]!=null) elLoop["on"+ev.type]()
     elLoop = elLoop.offsetParent;
  }
 }
 // Send this event onward...
 // Make sure to wire event return values
 var bCancel = window.routeEvent(ev);
 if (typeof bCancel=="boolean")
  window.event.returnValue = bCancel
 else
  bCancel = window.event.returnValue

 // Bubble but do not fire document events twice
 if ((ev.target!=window.document) && (!window.event.cancelBubble))
  if (typeof document["on"+ev.type]=="function") bCancel = document["on"+ev.type]()
 if (typeof bCancel=="boolean")
  window.event.returnValue = bCancel
 return (window.event.returnValue)
}

function _setupBubbling() {
 // Setup event bubbling from the source ot the document.
 window.captureEvents(Event.CLICK | Event.MOUSEMOVE | Event.CLICK | Event.DBLCLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.MOUSEOUT | Event.MOUSEOVER | Event.KEYDOWN | Event.KEYUP | Event.KEYPRESS | Event.FOCUS | Event.BLUR)
 window.onclick = _NSBubbling;
 window.ondblclick = _NSBubbling;
 window.onmousemove = _NSBubbling;
 window.onmouseover = _NSBubbling;
 window.onmouseout = _NSBubbling;
 window.onmousedown = _NSBubbling;
 window.onmouseup = _NSBubbling;
 window.onkeydown = _NSBubbling;
 window.onkeypress = _NSBubbling;
 window.onkeyup = _NSBubbling;
 window.onfocus = _NSBubbling;
 window.onblur = _NSBubbling;
}

function MacScroll() {
 // Add IE Mac onscroll Support
 if ((document.body.oldScrollTop!=document.body.scrollTop) || (document.body.oldScrollLeft!=document.body.scrollLeft))
  if (window.onscroll)
   window.onscroll()
 document.body.oldScrollTop = document.body.scrollTop
 document.body.oldScrollLeft = document.body.scrollLeft
}

/* The setup() function - This must be called in the onload event of the document */
function setup() {
 if (4>vers) return;  // Can't help old browsers
 if (ie4Mac)
  setInterval("MacScroll()",50)
 if ("Netscape"==sys) {
  document.all = null;
  document.all = new Array;
  document.body = new Object;
  document.body.clientWidth = window.innerWidth-20; document.body.clientHeight = window.innerHeight-20
  document.body.scrollTop = window.pageXOffset; document.body.scrollLeft = window.pageYOffset
  document.body.watch("scrollTop",CheckScrollTop)
  document.body.watch("scrollLeft",CheckScrollLeft)
  document.body.offsetParent = null
  document.body.offsetLeft = document.body.offsetTop = 0
  document.body.all = new Object
  document.parentWindow = window
  _extractRoot(document,document.body)

  for (var intLayer = 0; intLayer< document.layers.length; intLayer++) {
   _extract(document.layers[intLayer])  // Nested layers, go get them.
  }

  _setupBubbling();
  testScroll()
  setInterval("testScroll()",50)
  document.readyState = "complete"
 }
 return
}
window.onload = setup; // Initialize when loaded
if ("Netscape"==sys)
 document.readyState = "loading"

// DHTMLLib2.js Copyright 1997-2000 by InsideDHTML.com, LLC.
// http://www.SiteExperts.com
// -->


<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
<!--

 function shake_xy(n) {
 if (self.moveBy) {
  for (i = n; i > 0; i--) {
   self.moveBy(0,i);
   self.moveBy(i,0);
   self.moveBy(0,-i);
   self.moveBy(-i,0);
       }
    }
 }
-->