var isCSS, isW3C, isIE4, isNN4, isIE6CSS,isOpera;

function initDHTMLAPI(){
isOpera=(navigator.userAgent && navigator.userAgent.indexOf("Opera")!=-1) ? true:false;
if (document.images){
isCSS= (document.body && document.body.style) ? true:false;
isW3C= (isCSS && document.getElementById) ? true:false;
isIE4= (isCSS && document.all) ? true:false;
isNN4= (document.layers) ? true:false;
isIE6CSS = (document.compatMode && document.compatMode.indexOf('CSS1') >=0) ? true:false;
}}

function seekLayer(doc,name){
var theObj;
for (var i = 0; i<doc.layers.length; i++){
 if (doc.layers[i].name==name) {theObj=doc.layers[i]; break;}
 if (doc.layers[i].document.layers.length>0) {theObj=seekLayer(document.layers[i].document.name);}
 }
 return theObj;
}


function getRawObject(obj){
var theObj;
if (typeof obj == "string"){
if (isW3C) {theObj = document.getElementById(obj);}
   else if (isIE4) {theObj = document.all(obj);}
   else if (isNN4) {theObj = seekLayer(document,obj);}
}
else {theObj=obj;}
 return theObj;
}


function getObject(obj) {
var theObj = getRawObject(obj);
if (theObj && isCSS) {theObj = theObj.style}
return theObj;
}

function shiftTo(obj,x,y) {
var theObj=getObject(obj);
if (theObj){
   if (isCSS) {    
    var units = (typeof theObj.left == "string") ? "px":0;
	hide(obj);	
    theObj.left=x+units;  
    theObj.top=y+units;
	show(obj);
   }
else if (isNN4) {theObj.moveTo(x,y)}
}}


function show(obj) {
var theObj = getObject(obj);
if (theObj) {
theObj.display="block";
}}

function hide(obj) {
var theObj = getObject(obj);
if (theObj) {
theObj.display="none";
}}

function getObjectLeft(obj) {
var elem=getRawObject(obj);
var result=0;
if (document.defaultView) {
 var style=document.defaultView;
 var cssDecl=style.getComputedStyle(elem,"");
 result=cssDecl.getPropertyValue("left");
 } else if (elem.currentStyle) {result=elem.currentStyle.left}
 else if (elem.style) {result=elem.style.left}
 else if (NN4) {result=elem.left}
 return parseInt(result);
}

function getObjectTop(obj) {
var elem=getRawObject(obj);
var result=0;
if (document.defaultView) {
 var style=document.defaultView;
 var cssDecl=style.getComputedStyle(elem,"");
 result=cssDecl.getPropertyValue("top");
 } else if (elem.currentStyle) {result=elem.currentStyle.top}
 else if (elem.style) {result=elem.style.top}
 else if (NN4) {result=elem.top}
 return parseInt(result);
}

function getObjectWidth(obj){
var elem=getRawObject(obj);
var result = 0;
if (elem.offsetWidth) {result=elem.offsetWidth}
else if (elem.clip && elem.clip.width) {result=elem.clip.width}
else if (elem.style && elem.style.pixelWidth) {result=elem.style.pixelWidth}
return parseInt(result);
}

function getObjectHeight(obj){
var elem=getRawObject(obj);
var result = 0;
if (elem.offsetHeight) {result=elem.offsetHeight}
else if (elem.clip && elem.clip.height) {result=elem.clip.height}
else if (elem.style && elem.style.pixelHeight) {result=elem.style.pixelHeight}
return parseInt(result);
}

function getInsideWindowWidth(){
if (window.innerWidth) {return window.innerWidth}
else if (isIE6CSS) {return document.body.parentElement.clientWidth}
else if (document.body && document.body.clientWidth) {return document.body.clientWidth}
else return 0;
}

function getInsideWindowHeight(){
if (window.innerHeight) {return window.innerHeight}
else if (isIE6CSS) {return document.body.parentElement.clientHeight}
else if (document.body && document.body.clientHeight) {return document.body.clientHeight}
else return 0;
}


function getElementPosition(elemID){
var offsetTrail=document.getElementById(elemID);
var offsetLeft=0;
var offsetTop=0;
while (offsetTrail) {
  offsetLeft+=offsetTrail.offsetLeft;
  offsetTop+=offsetTrail.offsetTop;
  offsetTrail=offsetTrail.offsetParent;
}
if (navigator.userAgent.indexOf("Mac") !=-1 && typeof document.body.leftMargin != "undefined") {
  offsetLeft+=document.body.leftMargin;
  offsetTop+=document.body.topMargin;
  }
  return {left:offsetLeft, top:offsetTop}
}

