/**
 * Copyright (c) 2002-2007 i-Seven A/S.
 * Herlev Hovedgade 195, 2730 Herlev, Denmark.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of i-Seven A/S. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with i-Seven A/S.
 */
/*-----------------------------------------------------------------------------
   Visibility.
  -----------------------------------------------------------------------------*/
function hideElement(element) {
  if (element==null)
    return;
  if (browser.ns4)
    element.visibility='hide';
  if (browser.hasDOM || browser.isIE)
    element.style.visibility='hidden';
}
function hideElementEx(element) {
  if (element==null)
    return;
  hideElement(element);
  if (browser.hasDOM || browser.isIE)
    element.style.display='none';
}
function showElement(element) {
  if (element==null)
    return;
  if (browser.ns4)
    element.visibility='show';
  if (browser.hasDOM || browser.isIE)
    element.style.visibility='visible';
}
function showElementEx(element) {
  if (element==null)
    return;
  showElement(element);
  if (browser.hasDOM || browser.isIE)
    element.style.display='';
}
function inheritElement(element) {
  if (element==null)
    return;
  if (browser.ns4)
    element.visibility='inherit';
  if (browser.hasDOM || browser.isIE)
    element.style.visibility='inherit';
}
function getElementVisibility(element) {
  if (element==null)
    return '';
  if (browser.ns4) {
    if (element.visibility=='show')
      return 'visible';
    if (element.visibility=='hide')
      return 'hidden';
    return element.visibility;
  }
  if (browser.hasDOM || browser.isIE)
    return element.style.visibility;
  return '';
}
function getElementDisplay(element) {
  if (element==null)
    return '';
  if (browser.hasDOM || browser.isIE)
    return element.style.display;
  return '';
}
/*-----------------------------------------------------------------------------
   Positioning.
  -----------------------------------------------------------------------------*/
function moveElementTo(element,x,y) {
  if (element==null)
    return;
  if (browser.ns4)
    element.moveTo(x,y);
  if (browser.hasDOM || browser.isIE) {
    element.style.left=x;
    element.style.top=y;
  }
}
function moveElementBy(element,dx,dy) {
  if (element==null)
    return;
  if (browser.ns4)
    element.moveBy(dx,dy);
  if (browser.hasDOM || browser.isIE) {
    element.style.pixelLeft+=dx;
    element.style.pixelTop+=dy;
  }
}
function getElementLeft(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.left;
  if (browser.hasDOM || browser.isIE)
    return element.style.pixelLeft;
  return -1;
}
function getElementTop(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.top;
  if (browser.hasDOM || browser.isIE)
    return element.style.pixelTop;
  return -1;
}
function getElementRight(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.left+getElementWidth(element);
  if (browser.hasDOM || browser.isIE)
    return element.style.pixelLeft+getElementWidth(element);
  return -1;
}
function getElementBottom(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.top+getElementHeight(element);
  if (browser.hasDOM || browser.isIE)
    return element.style.pixelTop+getElementHeight(element);
  return -1;
}
function getElementPageLeft(element) {
  if (element==null)
    return -1;
  var x;
  if (browser.ns4)
    return element.pageX;
  if (browser.hasDOM || browser.isIE) {
    x=0;
    while (element.offsetParent!=null) {
      x+=element.offsetLeft;
      element=element.offsetParent;
    }
    x+=element.offsetLeft;
    return x;
  }
  return -1;
}
function getElementPageTop(element) {
  if (element==null)
    return -1;
  var y;
  if (browser.ns4)
    return element.pageY;
  if (browser.hasDOM || browser.isIE) {
    y=0;
    while (element.offsetParent!=null) {
      y+=element.offsetTop;
      element=element.offsetParent;
    }
    y+=element.offsetTop;
    return y;
  }
  return -1;
}
function getElementWidth(element) {
  if (element==null)
    return -1;
  if (browser.ns4) {
    if (element.document.width)
      return element.document.width;
    else
      return element.clip.right-element.clip.left;
  }

  if (browser.hasDOM) {
    if (element.scrollWidth)
      return element.scrollWidth;
    else
      return element.offsetWidth;
  } else
  if (browser.isIE) {
    if (element.style.pixelWidth)
      return element.style.pixelWidth;
    else
      return element.clientWidth;
  }
  return -1;
}
function getElementHeight(element) {
  if (element==null)
    return -1;
  if (browser.ns4) {
    if (element.document.height)
      return element.document.height;
    else
      return element.clip.bottom-element.clip.top;
  }
  if (browser.hasDOM) {
    if (element.scrollHeight)
      return element.scrollHeight;
    else
      return element.offsetHeight;
  } else
  if (browser.isIE) {
    if (element.style.pixelHeight)
      return element.style.pixelHeight;
    else
      return element.clientHeight;
  }
  return -1;
}
function getElementZIndex(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.zIndex;
  if (browser.hasDOM || browser.isIE)
    return element.style.zIndex;
  return -1;
}
function setElementZIndex(element,z) {
  if (element==null)
    return;
  if (browser.ns4)
    element.zIndex=z;
  if (browser.hasDOM || browser.isIE)
    element.style.zIndex=z;
}
function setElementLeft(element,left) {
  if (element==null)
    return;
  if (browser.ns4)
    element.moveTo(left,getElementTop(element));
  if (browser.hasDOM || browser.isIE) {
    element.style.left=left;
  }
}
function setElementTop(element,top) {
  if (element==null)
    return;
  if (browser.ns4)
    element.moveTo(getElementLeft(element),top);
  if (browser.hasDOM || browser.isIE) {
    element.style.top=top;
  }
}
function setElementHeight(element,height) {
  if (element==null)
    return;
  if (browser.hasDOM || browser.isIE) {
    element.style.height = height;
  }
}
function centerElementHorizontal(element,minPixelLeft) {
  if (element==null)
    return;
  var width=getElementWidth(element);
  var winWidth=getWindowWidth();
  setElementLeft(element,Math.max(parseInt((winWidth-width)/2)+getPageScrollX(),minPixelLeft));
}
function centerElementVertical(element,minPixelTop) {
  if (element==null)
    return;
  var height=getElementHeight(element);
  var winHeight=getWindowHeight();
  setElementTop(element,Math.max(parseInt((winHeight-height)/2)+getPageScrollY(),minPixelTop));
}
function centerElement(element,minPixelLeft,minPixelRight) {
  if (element==null)
    return;
  centerElementHorizontal(element,minPixelLeft);
  centerElementVertical(element,minPixelRight);  
}
/*-----------------------------------------------------------------------------
   Clipping.
  -----------------------------------------------------------------------------*/
function clipElement(element,clipLeft,clipTop,clipRight,clipBottom) {
  if (element==null)
    return;
  if (browser.ns4) {
    element.clip.left=clipLeft;
    element.clip.top=clipTop;
    element.clip.right=clipRight;
    element.clip.bottom=clipBottom;
  }
  if (browser.hasDOM || browser.isIE)
    element.style.clip='rect('+clipTop+' '+clipRight+' '+clipBottom+' '+clipLeft+')';
}
function getElementClipLeft(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.clip.left;
  if (browser.hasDOM || browser.isIE) {
    var str=element.style.clip;
    if (!str)
      return 0;
    var clip=getElementClipValues(element.style.clip);
    return(clip[3]);
  }
  return -1;
}
function getElementClipTop(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.clip.top;
  if (browser.hasDOM || browser.isIE) {
    var str=element.style.clip;
    if (!str)
      return 0;
    var clip=getElementClipValues(element.style.clip);
    return clip[0];
  }
  return -1;
}
function getElementClipRight(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.clip.right;
  if (browser.hasDOM || browser.isIE) {
    var str=element.style.clip;
    if (!str)
      return element.style.pixelWidth;
    var clip=getElementClipValues(element.style.clip);
    return clip[1];
  }
  return -1;
}
function getElementClipBottom(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.clip.bottom;
  if (browser.hasDOM || browser.isIE) {
    var str=element.style.clip;
    if (!str)
      return element.style.pixelHeight;
    var clip=getElementClipValues(element.style.clip);
    return clip[2];
  }
  return -1;
}
function getElementClipWidth(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.clip.width;
  if (browser.hasDOM || browser.isIE) {
    var str=element.style.clip;
    if (!str)
      return element.style.pixelWidth;
    var clip=getElementClipValues(element.style.clip);
    return clip[1]-clip[3];
  }
  return -1;
}
function getElementClipHeight(element) {
  if (element==null)
    return -1;
  if (browser.ns4)
    return element.clip.height;
  if (browser.hasDOM || browser.isIE) {
    var str=element.style.clip;
    if (!str)
      return element.style.pixelHeight;
    var clip=getElementClipValues(element.style.clip);
    return clip[2]-clip[0];
  }
  return -1;
}
function getElementClipValues(str) {
  var clip=new Array();
  var i;
  // Parse out the clipping values
  i=str.indexOf('(');
  clip[0]=parseInt(str.substring(i+1,str.length),10);
  i=str.indexOf(' ',i+1);
  clip[1]=parseInt(str.substring(i+1,str.length),10);
  i=str.indexOf(' ',i+1);
  clip[2]=parseInt(str.substring(i+1,str.length),10);
  i=str.indexOf(' ',i+1);
  clip[3]=parseInt(str.substring(i+1,str.length),10);
  return clip;
}
/*-----------------------------------------------------------------------------
   Scrolling.
  -----------------------------------------------------------------------------*/
function scrollElementTo(element,x,y,bound) {
  if (element==null)
    return;
  var dx=getElementClipLeft(element)-x;
  var dy=getElementClipTop(element)-y;
  scrollElementBy(element,-dx,-dy,bound);
}
function scrollElementBy(element,dx,dy,bound) {
  if (element==null)
    return;
  var cl=getElementClipLeft(element);
  var ct=getElementClipTop(element);
  var cr=getElementClipRight(element);
  var cb=getElementClipBottom(element);
  if (bound) {
    if (cl+dx<0)
      dx=-cl;
    else if (cr+dx>getElementWidth(element))
      dx=getElementWidth(element)-cr;
    if (ct+dy<0)
      dy=-ct;
    else if (cb+dy>getElementHeight(element))
      dy=getElementHeight(element)-cb;
  }
  clipElement(element,cl+dx,ct+dy,cr+dx,cb+dy);
  moveElementBy(element,-dx,-dy);
}
/*-----------------------------------------------------------------------------
   Background.
  -----------------------------------------------------------------------------*/
function setElementBgColor(element,color) {
  if (element==null)
    return;
  if (browser.ns4)
    element.bgColor=color;
  if (browser.hasDOM || browser.isIE) 
    element.style.backgroundColor=color;
}
function setElementBgImage(element,src) {
  if (element==null)
    return;
  if (browser.ns4)
    element.background.src=src;
  if (browser.hasDOM || browser.isIE)
    element.style.backgroundImage='url('+src+')';
}
/*-----------------------------------------------------------------------------
   Utilities.
  -----------------------------------------------------------------------------*/
function getElement(id) {
  if (id=='')
    return null;
  if (browser.ns4)
    return findElement(id,document);
  else
  if (browser.hasDOM)
    return document.getElementById(id);
  else
  if (browser.isIE)
    return eval('document.all.'+id);
  return null;
}
function findElement(id,doc) {
  var i;
  var element;
  for (i=0; i<doc.layers.length; i++) {
    element=doc.layers[i];
    if (element.name==id)
      return element;
    if (element.document.layers.length>0)
      if ((element=findElement(id,element.document))!=null)
        return element;
  }
  return null;
}
function getChild(fromNode,name) {
  if (browser.ns4)
    return null;
  for(var i=0; i<fromNode.childNodes.length; i++) {
    var node=fromNode.childNodes[i];
    if (node.id==name) {
      return node;
    } else 
    if (node.childNodes.length>0) {
      var tmp=getChild(node,name) 
      if(tmp!=null) 
        return tmp;
    }
  }
  return null;
}
function getChildByType(fromNode,nodename) {
  if (browser.ns4)
    return null;
  for(var i=0; i<fromNode.childNodes.length;i++) {
    var node=fromNode.childNodes[i];
    if (node.nodeName==nodename) {
      return node;
    } else 
    if (node.childNodes.length>0) {
      var tmp=getChildByType(node,nodename) 
      if(tmp!=null)
        return tmp;
    }
  }
  return null;
}
/*-----------------------------------------------------------------------------
   Image utilities.
  -----------------------------------------------------------------------------*/
function getImage(name) {
  if (name=='')
    return null;
  if (browser.isNS || browser.isOpera)
    return findImage(name,document);
  if (browser.isIE)
    return eval('document.all.' + name);
  return null;
}
function findImage(name,doc) {
  var i;
  var img;
  for (i=0; i<doc.images.length; i++)
    if (doc.images[i].name==name)
      return doc.images[i];
  for (i=0; i<doc.layers.length; i++)
    if ((img=findImage(name,doc.layers[i].document))!= null) {
      img.container=doc.layers[i];
      return img;
    }
  return null;
}
function getImagePageLeft(img) {
  if (img==null)
    return -1;
  var x;
  var obj;
  if (browser.ns4) {
    if (img.container!=null)
      return img.container.pageX+img.x;
    else
      return img.x;
  }
  if (browser.hasDOM || browser.isIE) {
    x=0;
    obj=img;
    while (obj.offsetParent!=null) {
      x+=obj.offsetLeft;
      obj=obj.offsetParent;
    }
    x+=obj.offsetLeft;
    return x;
  }
  return -1;
}
function getImagePageTop(img) {
  if (img==null)
    return -1;
  var y;
  var obj;
  if (browser.ns4) {
    if (img.container != null)
      return img.container.pageY+img.y;
    else
      return img.y;
  }
  if (browser.hasDOM || browser.isIE) {
    y=0;
    obj=img;
    while (obj.offsetParent!=null) {
      y+=obj.offsetTop;
      obj=obj.offsetParent;
    }
    y+=obj.offsetTop;
    return y;
  }
  return -1;
}
/*-----------------------------------------------------------------------------
   Window and page properties.
  -----------------------------------------------------------------------------*/
function getWindowWidth() {
  if (browser.isNS || browser.isOpera)
    return window.innerWidth;
  if (browser.isIE)
    return document.body.clientWidth;
  return -1;
}
function getWindowHeight() {
  if (browser.isNS || browser.isOpera)
    return window.innerHeight;
  if (browser.isIE)
    return document.body.clientHeight;
  return -1;
}
function getPageWidth() {
  if (browser.isNS)
    return document.width;
  if (browser.isIE)
    return document.body.scrollWidth;
  return -1;
}
function getPageHeight() {
  if (browser.isNS)
    return document.height;
  if (browser.isIE)
    return document.body.scrollHeight;
  return -1;
}
function getPageScrollX() {
  if (browser.isNS || browser.isOpera)
    return window.pageXOffset;
  if (browser.isIE)
    return document.body.scrollLeft;
  return -1;
}
function getPageScrollY() {
  if (browser.isNS || browser.isOpera)
    return window.pageYOffset;
  if (browser.isIE)
    return document.body.scrollTop;
  return -1;
}
function getPageOffsetHeight() {
  if (browser.isNS || browser.isOpera)
    return window.innerHeight;
  if (browser.isIE)
    return document.body.offsetHeight;
  return -1;
}
function getPageOffsetWidth() {
  if (browser.isNS || browser.isOpera)
    return window.innerWidth;
  if (browser.isIE)
    return document.body.offsetWidth;
  return -1;
}
