/* Utility for handling DHTML positioned elements Lev4 browsers
Rev 4.20 November 23, 2007
added removeLayer, displayLayer
*****/
origWidth= origHeight= -1

function nn4reload_2(){
if(isMinNN4&&origWidth==window.innerWidth&&origHeight==window.innerHeight)return;
if(isMinIE4)setTimeout('window.location.href = window.location.href',2000);
else window.location.reload(window.location.href);
}

function nn4reload(){
  if(!isMinNN4) return;
  if(origWidth==window.innerWidth&&origHeight==window.innerHeight) return;
  origWidth=window.innerWidth; origHeight=window.innerHeight;
  window.location.reload(true);
}

function atan_2(x,y) {
	if(x==0) x=.000000001
	angle=Math.atan(y/x)
	if(x<0) angle+=Math.PI //make -pi/2< angle <pi/2
	return angle
}

//-----------------------------------------------------------------------------
// Layer visibility.
//-----------------------------------------------------------------------------
function removeLayer(layer) {
 if (NN4)
  layer.visibility = "hide";
 if(!layer.style) return;
 if (isDOM2) 
  layer.style.display = "none";
 else if (NN6)
  layer.style.display = "none";
 if (isMinIE4)
  layer.style.display = "none";
}

function displayLayer(layer) {
 if (NN4)
  layer.visibility = "show";

 if(layer.style) {
 if (isDOM2)
  layer.style.display = "block";
 else if (isMinIE4 || NN6)
  layer.style.display = "block";
 }
 showLayer(layer);
}


function hideLayer(layer) {
 if (NN4)
  layer.visibility = "hide";
 if(!layer.style) return;
 if (isDOM2) 
  layer.style.visibility = "hidden";
 else if (NN6)
  layer.style.visibility = "hidden";
 if (isMinIE4)
  layer.style.visibility = "hidden";
}

function showLayer(layer) {
 if (NN4)
  layer.visibility = "show";

 if(!layer.style) return;
 if (isDOM2)
  layer.style.visibility = "visible";
 else if (isMinIE4 || NN6)
  layer.style.visibility = "visible";
}

function inheritLayer(layer) {
  if (NN4)
    layer.visibility = "inherit";
  else if (NN6 || isMinIE4)
    layer.style.visibility = "inherit";
}

function getVisibility(layer) {
  if (isMinNN4) {
    if (layer.visibility == "show")
      return "visible";
    if (layer.visibility == "hide")
      return "hidden";
    return layer.visibility;
  }
  if (isMinIE4)
    return layer.style.visibility;
  return "";
}

//-----------------------------------------------------------------------------
// Layer positioning.
//-----------------------------------------------------------------------------

function moveLayerTo(layer, x, y) {
  if(isFOX) {
   layer.style.left = x+'px';
   layer.style.top  = y+'px';
//        alert("moveLto, "+layer.id+ " toY="+layer.style.left); 
   }
  else if (NN4) layer.moveTo(x, y);
  else if(NN6) {
    layer.style.left = x + "px";
    layer.style.top = y + "px";
  }
  else if (isMinIE4) {
    layer.style.left = x;
    layer.style.top  = y;
  }
  if(isDOM2) {
   layer.style.left = x;
   layer.style.top  = y;
  }
}

function moveLayerBy(layer, dx, dy) {
 if (isDOM2) {
  var x = parseInt(layer.style.left); var y = parseInt(layer.style.top)
  layer.style.left = (x+dx) + "px"; layer.style.top = (y+dy) + "px";
 }
 else if(NN6) {
   var x = parseInt(layer.style.left); var y = parseInt(layer.style.top)
   layer.style.left = (x+dx) + "px"; layer.style.top = (y+dy) + "px";
 } 
 else  if (NN4)  layer.moveBy(dx, dy);
 else if (isMinIE4) {
    layer.style.pixelLeft += dx;
    layer.style.pixelTop  += dy;
  }
 if (isDOM2) {
    layer.style.pixelLeft += dx;
    layer.style.pixelTop  += dy;
 }
}

function getLeft(layer) {
  var r = 0;
  if(isFOX) {
   r = parseInt(layer.style.left); if(isNaN(r)) r = 0;
  } else if (NN6) {
   r = parseInt(layer.style.left); if(isNaN(r)) r = 0;
  }
  else if (isMinIE4) r = layer.style.pixelLeft;
  else if (isMinNN4) r = layer.left;
  else if (isDOM2) {
   r = parseInt(layer.style.left); if(isNaN(r)) r = 0;
  }
  return r;
}

function getTop(layer) {
 var r = 0;
 if(isFOX) r= parseInt(layer.style.top);
 else if (NN6) {
  r = parseInt(layer.style.top); if(isNaN(r)) r = 0;
 }
 else  if (NN4) r = layer.top;
 else if (isMinIE4) r = layer.style.pixelTop;
 else  if(isDOM2) {
  r = parseInt(layer.style.top); if(isNaN(r)) r = 0;
 }
 return r;
}

function getRight(layer) {
  return (getLeft(layer) + getWidth(layer));
}

function getBottom(layer) {
  return (getTop(layer) + getHeight(layer));
}

function getPageLeft(layer) {
 var x;
 if(isMinNN6) { return parseInt(layer.style.left);}
 else if(isDOM2) return parseInt(layer.style.left);
 else if (NN4)
  return layer.pageX;
 else if (isMinIE4) {
    x = 0;
    while (layer.offsetParent != null) {
      x += layer.offsetLeft;
      layer = layer.offsetParent;
    }
    x += layer.offsetLeft;
    return x;
 }
 return -1;
}

function getPageTop(layer) {
 var y;

 if(isMinNN6) return parseInt(layer.style.top);
 else if(isDOM2) return parseInt(layer.style.top);
 else if(isMinNN4)
  return layer.pageY;
 else if(isMinIE4) {
    y = 0;
    while (layer.offsetParent != null) {
      y += layer.offsetTop;
      layer = layer.offsetParent;
    }
    y += layer.offsetTop;
    return y;
 }
 return -1;
}

function getWidth(layer) {
  var r;
  if(layer==null||typeof(layer)=='undefined') return 0;
  if (isFOX) {
   // r= parseInt(layer.style.height);
   var r= layer.offsetWidth
   // r= layer.offsetWidth
 }else if (NN6) {
   var r= parseInt(layer.style.width);
   //if(!isNaN(h) or better this:layer.offsetHeight
 }else if (NN4) {
    if (layer.document.width) r= layer.document.width;
    else r= layer.clip.right - layer.clip.left;
  } else if(isMinIE4) {
   if (layer.style.pixelWidth) r= layer.style.pixelWidth;
    else r= layer.clientWidth;
  }
  else if(isDOM2) {
   var r= parseInt(layer.style.width);
  } else r= -1;
 return r;
}

function getHeight(layer) {
  var r;
  if(layer==null||typeof(layer)=='undefined') return 0;
  if (isFOX) {
   // r= parseInt(layer.style.height);
   var r= layer.offsetHeight
   // r= layer.offsetHeight
 }else if (NN6) {
   var r= parseInt(layer.style.height);
   //if(!isNaN(h) or better this:layer.offsetHeight
 }else if (NN4) {
    if (layer.document.height)
      r= layer.document.height;
    else
      r= layer.clip.bottom - layer.clip.top;
  } else if(isMinIE4) {
   if (layer.style.pixelHeight) r= layer.style.pixelHeight;
    else r= layer.clientHeight;
  }
  else if(isDOM2) {
   var r= parseInt(layer.style.height);
  } else r= -1;
 return r;
}

function setTop(layer,pos) {
  var cur= null;
  if(layer==null) return;
  if(isFOX) {
   if(!isNaN(pos)) layer.style.top= pos+"px";
  }
  else if(NN6) {
   cur= parseInt(layer.style.top);
   if(!isNaN(pos)) layer.style.top= pos+"px";
  }else if(isMinNN4) {
    cur= layer.top;
    if(!isNaN(pos)) layer.top= pos
  } else if(isMinIE4) {
    cur= layer.style.pixelTop;
    if(!isNaN(pos)) layer.style.pixelTop= pos;
  } else if(isDOM2) {
   cur= layer.style.top;
   if(!isNaN(pos)) layer.style.top= pos+"px";
  }

  return cur;
}

function setLeft(layer,pos) {
  var cur= null;
  if(isFOX) {
   if(!isNaN(pos)) layer.style.left=pos+"px";
   cur= parseInt(layer.style.left)
  } else if (NN6) {
    cur= parseInt(layer.style.left)
    if(!isNaN(pos)) layer.style.left=pos +"px";
  } else if(isMinNN4) {
    cur= layer.left;
    if(!isNaN(pos)) layer.left=pos
  } else if (isMinIE4) {
    cur= layer.style.pixelLeft;
    if(!isNaN(pos)) layer.style.pixelLeft=pos;
  } else if(isDOM2) {

  }
  return cur;
}

function setHeight(layer,h) {
 if (NN6) {
    layer.style.height=h+"px";
 }
 else if (NN4) {
    if (layer.document.height)
      layer.document.height=h;
    else
      layer.clip.bottom = layer.clip.top+h;
 }
 else if(isDOM2) layer.style.height=h;

 else if(isMinIE4) {
  if (layer.style.pixelHeight)
   layer.style.pixelHeight=h;
  else
   layer.clientHeight=h;
 }
 else layer.style.height=h;
}

function setWidth(layer,w) {
 if (NN6) {
    layer.style.width=w+"px";
 }

 else if (NN4) {
  if (layer.document.height)
   layer.document.width=w;
  else
   layer.clip.bottom = layer.clip.top+h;
 }
 else if(isDOM2) layer.style.width=w;

 else if(isMinIE4) {
  if (layer.style.pixelWidtht) layer.style.pixelWidth=w;
  else layer.clientWidth=w;
 }

 else layer.style.width=w;
}

function getzIndex(layer) {
  if (NN4)
    return layer.zIndex;
  if (isMinIE4)
    return layer.style.zIndex;
  if (NN6)
    return layer.style.zIndex;
  return -1;
}

function setzIndex(layer, z) {
  if (NN4) layer.zIndex = z;
  if (isMinIE4) layer.style.zIndex = z;
  if (NN6) layer.style.zIndex = z;
}

//-----------------------------------------------------------------------------
// Layer clipping.  Follows CSS syntax: top,right,bottom,left
//-----------------------------------------------------------------------------
function clipLayer(layer, cliptop, clipright,clipbottom,clipleft) {
 /*var ct= (cliptop!= null? cliptop : getClipTop(layer))
 var cr= (clipright!=null? clipright: getClipRight(layer))
 var cb= (clipbottom!=null? clipbottom: getClipBottom(layer))
 var cl= (clipleft!=null? clipleft: getClipLeft(layer)) */

 if (NN4) {
  layer.clip.left   = clipleft;
  layer.clip.top    = cliptop;
  layer.clip.right  = clipright;
  layer.clip.bottom = clipbottom;
 }else if (IE4)
  layer.style.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
 else if(isDOM2) {
  layer.style.left= ""+clipleft+"px";
  layer.style.top= ""+cliptop+"px";
  layer.style.width= layer.style.clip.width= ""+clipright+"px";
  layer.style.height= layer.style.clip.height= ""+clipbottom+"px";
 }
}
//---------  NON FUNCTIONAL
function setClipSize(lyr,w,h) {
 /*if(NN4) { //make it simple
  var ct= getClipTop(lyr)
  var cl= getClipLeft(lyr)
  var w1=(w!=null ?w : getClipWidth(lyr))
  var h1=(h!=null ?h : getClipHeight(lyr))
  clipLayer(lyr, ct,cl+w1,ct+h1,cl)
 } 
 else if(isMinIE4)  lyr.style.clip = 'rect(0px '+ w+ 'px ' + h + 'px '+'0px)';
 else if(isDOM2) {}  */
 clipLayer(lyr,0,w,h,0); 
}

var once= true
function clipFrom(layer, cx, cy, cw, ch) {
  var t= getTop(layer)
  var l= getLeft(layer)
  if(t> cy && l> cx) return
  var y1= cy-t; if(y1<0) y1= 0;
  var x1= cx-l; if(x1<0) x1= 0;
  clipLayer(layer, y1, cw, ch, x1)
}

function getClipLeft(layer) {
 if(isDOM2) return parseInt(layer.style.left);
 else if(NN4)
    return layer.clip.left;
 if (isMinIE4) {
    var str =  layer.style.clip;
    if (!str)
      return 0;
    var clip = getIEClipValues(layer.style.clip);
    return(clip[3]);
  }
  return -1;
}

function getClipTop(layer) {
  if(isDOM2) return parseInt(layer.style.top);
  else if (NN4)
    return layer.clip.top;
  if (isMinIE4) {
    var str =  layer.style.clip;
    if (!str)
      return 0;
    var clip = getIEClipValues(layer.style.clip);
    return clip[0];
  }
  return -1;
}

function getClipRight(layer) {
  if(isDOM2) { var r= (getClipLeft(layer)+getClipWidth(layer)); return r;}
  else if (NN4)
    return layer.clip.right;
  if (isMinIE4) {
    var str =  layer.style.clip;
    if (!str)
      return layer.style.pixelLeft+layer.style.pixelWidth;
    var clip = getIEClipValues(layer.style.clip);
    return clip[1];
  }
  return -1;
}

function getClipBottom(layer) {
 if(isDOM2) { return (getClipTop(layer)+getClipHeight(layer))}
 else if (NN4)
    return layer.clip.bottom;
 if (isMinIE4) {
    var str =  layer.style.clip;
    if (!str)
      return layer.style.pixelHeight;
    var clip = getIEClipValues(layer.style.clip);
    return clip[2];
 } else if(isDOM2) {}
 return -1;
}

function getClipWidth(layer) {
  if(isDOM2) return parseInt(layer.style.width);
  else if(NN4)
    return layer.clip.width;
  else if (isMinIE4) {
    var str = layer.style.clip;
    if (!str)
      return layer.style.pixelWidth;
    var clip = getIEClipValues(layer.style.clip);
    return clip[1] - clip[3];
  }
  return -1;
}

function getClipHeight(layer) {
  if(isDOM2) return parseInt(layer.style.height);
  else if(NN4) return layer.clip.height;
  else if (isMinIE4) {
    var str =  layer.style.clip;
    if (!str)
      return layer.style.pixelHeight;
    var clip = getIEClipValues(layer.style.clip);
    return clip[2] - clip[0];
  }
  return -1;
}
function getClipValues(layer, clipAr) {
  if(clipAr== null || typeof clipAr== 'undefined') clipAr= new Array();
  var i;
  for(i=0;i< 4; i++) clipAr[i]= 0;

  if (isMinNN4) {
    clipAr[0]= layer.clip.top;
    clipAr[1]= layer.clip.right;
    clipAr[2]= layer.clip.bottom;
    clipAr[3]= layer.clip.left;
  }
  if (isMinIE4) {
    var str =  layer.style.clip;
    if (!str) return;
    var clip = getIEClipValues(layer.style.clip);
    for(i=0;i< 4; i++) clipAr[i]= clip[i];
  }
}

function getIEClipValues(str) {

  var clip = new Array();
  var i;

  // Parse out the clipping values for IE layers.

  i = str.indexOf("(");
  clip[0] = parseInt(str.substring(i + 1, str.length), 10); //top
  i = str.indexOf(" ", i + 1);
  clip[1] = parseInt(str.substring(i + 1, str.length), 10); //right
  i = str.indexOf(" ", i + 1);
  clip[2] = parseInt(str.substring(i + 1, str.length), 10); //bottom
  i = str.indexOf(" ", i + 1);
  clip[3] = parseInt(str.substring(i + 1, str.length), 10); //left
  return clip;
}
// -------------------------
// Layer scrolling.
//--------------------------

function scrollLayerTo(layer, x, y, bound) {
  var dx = getClipLeft(layer) - x;
  var dy = getClipTop(layer) - y;
  scrollLayerBy(layer, -dx, -dy, bound);
}

function scrollLayerBy(layer, dx, dy, bound) {

  var cl = getClipLeft(layer);
  var ct = getClipTop(layer);
  var cr = getClipRight(layer);
  var cb = getClipBottom(layer);

  if (bound) {
    if (cl + dx < 0)
      dx = -cl;
    else if (cr + dx > getWidth(layer))
      dx = getWidth(layer) - cr;
    if (ct + dy < 0)
      dy = -ct;
    else if (cb + dy > getHeight(layer))
      dy = getHeight(layer) - cb;
  }
  clipLayer(layer, cl + dx, ct + dy, cr + dx, cb + dy);
  moveLayerBy(layer, -dx, -dy);
}
//--------- Layer wriyte-into ----------
function writeLayer(lyr, txt) {
  txt+= '\n';
  if (NN4) {
   lyr.document.write(txt);
   lyr.document.close();
  }
  else if(isMinIE4) {
   lyr.innerHTML = txt;
  } 
  else if(NN6) { // or DOM2
   var range = vframe.document.createRange();
   range.setStartBefore(lyr);
   var r1 = range.createContextualFragment(txt);
   while (lyr.hasChildNodes()) lyr.removeChild(lyr.lastChild);
   lyr.appendChild(r1);
  } 
  else {
   lyr.innerHTML = txt;
  }
}
//-------------------------------->
// Layer background.
//---------------------------------------------------------------------------
function setBgColor(layer, color) {
  if (isMinNN4)
    layer.bgColor = color;
  if (isMinIE4)
    layer.style.backgroundColor = color;
}

function setBgImage(layer, src) {
  if (isMinNN4)
    layer.background.src = src;
  if (isMinIE4)
    layer.style.backgroundImage = "url(" + src + ")";
}

//-----------------------------------------------------------------------------
// Layer utilities.
//-----------------------------------------------------------------------------
function getLayer(name,frame) {
if(!frame) frame= window;
 var L= null;
 try {  // the layer may not exist, Fox gives error
 if (isFOX) L= frame.document.getElementById(name);
 else if(isDOM2) L= frame.document.getElementById(name);
 else if (NN4) L= findLayer(name, frame.document);
 else if (isMinIE4) L= frame.document.all[name]; 
 } catch(e) { alert("getLayer: div "+name+" not found error"); }
 if(!L) {
   // alert("Your system needs an upgrade, isDOM2="+isDOM2+", looking for "+name+" in "+frame); 
 }
 return L;
}

function findLayer(name, doc) {
  var i, layer;
  for (i = 0; i < doc.layers.length; i++) {
    layer = doc.layers[i]; 
    if (layer.name == name || layer.id == name)
      return layer;
    if (layer.document.layers.length > 0)
      if ((layer = findLayer(name, layer.document)) != null)
        return layer;
  }
  return null;
}
//-----------------------------------------------------------------------------
// Image utilities.
//-----------------------------------------------------------------------------

function getImage(name) {
  if (isMinNN4) {
    return findImage(name, document);
  }
  if (isMinIE4)
    return eval('document.all.' + name);
  return null;
}

function findImage(name, doc) {
  var i, 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) {
  var x, obj;
  if (isMinNN4) {
    if (img.container != null)
      return img.container.pageX + img.x;
    else
      return img.x;
  }
  if (isMinIE4) {
    x = 0;
    obj = img;
    while (obj.offsetParent != null) {
      x += obj.offsetLeft;
      obj = obj.offsetParent;
    }
    x += obj.offsetLeft;
    return x;
  }
  return -1;
}

function getImagePageTop(img) {
  var y, obj;
  if (isMinNN4) {
    if (img.container != null)
      return img.container.pageY + img.y;
    else
      return img.y;
  }
  if (isMinIE4) {
    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 (isMinNN4)
    return window.innerWidth;
  if (isMinIE4)
    return document.body.clientWidth;
  return -1;
}

function getWindowHeight() {

  if (isMinNN4)
    return window.innerHeight;
  if (isMinIE4)
    return document.body.clientHeight;
  return -1;
}

function getPageWidth() {
  if (isMinNN4)
    return document.width;
  if (isMinIE4)
    return document.body.scrollWidth;
  return -1;
}

function getPageHeight() {
  if (isMinNN4)
    return document.height;
  if (isMinIE4)
    return document.body.scrollHeight;
  return -1;
}

function getPageScrollX() {
  if (isMinNN4)
    return window.pageXOffset;
  else if (isMinIE4)
    return document.body.scrollLeft;
  else { var v = window.pageXOffset; //other DOM cases
   if(typeof(v) =='undefined') v = 0;
   return v;
  }
}

function getPageScrollY() {
  if (isMinNN4)
    return window.pageYOffset;
  else if (isMinIE4)
    return document.body.scrollTop;
  else { var v = window.pageYOffset; //other DOM cases
   if(typeof(v) =='undefined') v = 0;
   return v;
  }
}
