/****** BEGIN FUNCTIONS ******/

if (ie4) {
  setLayerBg   = new Function("layr", "bg", "layr.style.background = bg");
  writeToLayer = new Function("layr", "txt", "layr.innerHTML = txt;");
  showLayer    = new Function("layr", "layr.style.visibility = 'visible';");
  hideLayer    = new Function("layr", "layr.style.visibility = 'hidden';");
  moveX        = new Function("layr", "x", "layr.style.posLeft = x;")	
  moveY        = new Function("layr", "y", "layr.style.posTop = y;")	
  setHeight    = new Function("layr", "h", "layr.style.pixelHeight = h;");
  getHeight    = new Function("layr", "return layr.offsetHeight;");
  getWidth     = new Function("layr", "return layr.offsetWidth;");
  getX         = new Function("layr", "return layr.style.posLeft;");
  getY         = new Function("layr", "return layr.style.posTop;");
  getLayerById = new Function("id", "return document.all(id);");
  getImgInLayerByName = new Function("layr", "name", "return layr.all.tags('img')[name]");
  setZ         = new Function("layr", "z", "layr.style.zIndex = z");
	
  assignClickHandler     = new Function("layr", "func", "layr.onclick = func;");
  assignMouseOverHandler = new Function("layr", "func", "layr.onmouseover = func;");
  assignMouseOutHandler  = new Function("layr", "func", "layr.onmouseout = func;");

  createLayer     = createLayerIE;
  getPagePosition = getPagePositionIE;
		
  if (document.getElementById) {
    createLayer = createLayerNS6;
  }
	
  adjustDocHeight  = new Function(""); // only ns4 needs this function
  getFormInLayer   = new Function("layr", "name", "if (name != null) { return layr.all.tags('form')[name]; } else { return layr.all.tags('form')[0]; }");
  getLinksInLayer  = new Function ("layr", "return layr.all.tags('a')");
  getChildElements = new Function("layr", "return layr.all;")
  window.onresize  = new Function("location.replace(location.href);");
}
else if (ns4) {
  setLayerBg   = new Function("layr", "bg", "layr.bgColor = bg");
  writeToLayer = new Function("layr", "txt", "layr.document.open(); layr.document.write(txt); layr.document.close();");
  showLayer    = new Function("layr", "layr.visibility = 'visible';");
  hideLayer    = new Function("layr", "layr.visibility = 'hidden';");
  moveX        = new Function("layr", "x", "layr.left = x;")
  moveY        = new Function("layr", "y", "layr.top = y;")	
  setHeight    = new Function("layr", "h", "layr.clip.height = h;");
  getHeight    = new Function("layr", "return layr.clip.height;");
  getWidth     = new Function("layr", "return layr.clip.width;");
  getX         = new Function("layr", "return layr.left;");
  getY         = new Function("layr", "return layr.top;");
  getLayerById = getLayerByIdNS4;
  getImgInLayerByName = new Function("layr", "name", "return layr.document.images[name]");
  setZ         = new Function("layr", "z", "layr.zIndex = z");
  
  assignClickHandler     = new Function("layr", "func", "layr.captureEvents(Event.MOUSEDOWN); layr.onmousedown = func;");
  assignMouseOverHandler = new Function("layr", "func", "layr.onmouseover = func;");
  assignMouseOutHandler  = new Function("layr", "func", "layr.onmouseout =  func;");	

  initWidth  = window.innerWidth;
  initHeight = window.innerHeight;

  window.onresize = new Function("if ((window.innerWidth != initWidth) || (window.innerHeight != initHeight)) { window.location.href=window.location.href }");

  createLayer      = createLayerNS4;
  getPagePosition  = getPagePositionNS4;
  getFormInLayer   = new Function("layr", "name", "if (name != null) { return layr.document.forms[name]; } else { return layr.document.forms[0]; }");
  getLinksInLayer  = new Function ("layr", "return layr.document.links");

  getChildElements = new Function("layr", "return null;")
}
else if (ns6) {
  setLayerBg   = new Function("layr", "bg", "layr.style.background = bg");	
  writeToLayer = new Function("layr", "txt", "layr.innerHTML = txt;");
  showLayer    = new Function("layr", "layr.style.visibility = 'visible';");
  hideLayer    = new Function("layr", "layr.style.visibility = 'hidden';");
  moveX        = new Function("layr", "x", "layr.style.left = x;")	
  moveY        = new Function("layr", "y", "layr.style.top = y;")
  setHeight    = new Function("layr", "h", "layr.style.height = h;");
  getHeight    = new Function("layr", "return layr.offsetHeight;");	
  getWidth     = new Function("layr", "layr.style.width = 'auto'; return layr.offsetWidth;");	
  getX         = new Function("layr", "return parseInt(layr.style.left);");
  getY         = new Function("layr", "return parseInt(layr.style.top);");	
  getLayerById = new Function("id", "return document.getElementById(id);");
  getImgInLayerByName = new Function("layr", "name", "return null");
  setZ         = new Function("layr", "z", "layr.style.zIndex = z");
	
  assignClickHandler     = new Function("layr", "func", "layr.addEventListener('click', func, true);");	
  assignMouseOverHandler = new Function("layr", "func", "layr.addEventListener('mouseover', func, false);");
  assignMouseOutHandler  = new Function("layr", "func", "layr.addEventListener('mouseout', func, false);");

  createLayer      = createLayerNS6;
  getPagePosition  = getPagePositionNS6;	
	
  adjustDocHeight  = new Function(""); // only ns4 needs this function
  getFormInLayer   = new Function("layr", "name", "if (name != null) { return layr.getElementsByTagName('form')[name]; } else { return layr.getElementsByTagName('form')[0]; }");
  getLinksInLayer  = new Function ("layr", "return layr.getElementsByTagName('a')");
  getChildElements = new Function("layr", "return layr.childNodes;")
	
  window.onresize  = new Function("location.replace(location.href);");
}


function createLayerIE(id, container) {
  id += new Date().getTime(); //makes sure id is unique on page
  var layr = '<div id="' + id + '" style="position:absolute"></div>'
  if (container == null) {
    container = document.body;
  }	
  container.insertAdjacentHTML("afterBegin", layr)
	
  return container.all(id);
}


function createLayerNS6(id, container) {
  var layr = document.createElement("div");
  layr.style.position = "absolute";
  layr.style.visibility = "hidden";
  if (container == null) {
    container = document.body;
  }
  container.appendChild(layr);
  return layr;
}


function createLayerNS4(id, container) {
  var layr;
	
  if (container == null)  { 
    layr = new Layer(); 
  }
  else {
    layr = new Layer(192, container);
  }
  return layr;
}


function getLayerByIdNS4(id, layrs) {
  var layr;

  if (layrs == null) {
    layrs = document.layers;
  }
	
  var l = layrs.length;

  for (var i = 0; i < l; i++) {
    if (layrs[i].id == id) {
      layr = layrs[i];
    }
    else if(layrs[i].document.layers.length > 0) {
      layr = getLayerByIdNS4(id, layrs[i].document.layers);
    }

    if (layr != null) {
      return layr;
    }		
  }
	
  return layr;
}


function getPagePositionIE(el, n, axis) {
  if (axis == "x") {
    n += el.offsetLeft;	
  }
  else if (axis == "y") {
    n += el.offsetTop;
  }
  
  if (el != document.body) {
    if (isMac) {
      parentalUnit = el.parentElement;
    }
    else {
      parentalUnit = el.offsetParent;
    }
    return getPagePositionIE(parentalUnit, n, axis);
  }

  return n;
}


function getPagePositionNS4(el, n, axis) {
  if (axis == "x") {
    return el.pageX;
  }
  else {
    return el.pageY;
  }
}


function getPagePositionNS6(el, n, axis) {
  if (axis == "x") {
    n += el.offsetLeft;
  }
  else {
    n += el.offsetTop;
  }
	
  if (el.offsetParent != null) {
    return getPagePosition(el.offsetParent, n, axis);
  }
  else {
    return n;
  }
}


function adjustDocHeight() {
  var l = document.layers.length;
  for (var i = 0; i < l; i++) {
    if (document.layers[i].top + document.layers[i].clip.height > document.height) {
      document.height = document.layers[i].top + document.layers[i].clip.height;
    }
  }
}
