// written by Tan Ling Wee
// last updated 9 September 2003
// email : fuushikaden@yahoo.com

//////////////////////////////////////////////////////////////////////////////////
// Layers 
//////////////////////////////////////////////////////////////////////////////////

var layerQueue=new Array();
var layerIndex=-1;

/* hides <select> and <applet> objects (for IE only) */
function hideElement( elmID, overDiv )
{
 if( ie )
 {
for( i = 0; i < document.getElementsByTagName( elmID ).length; i++ )
{
  obj = document.getElementsByTagName( elmID )[i];
  if( !obj || !obj.offsetParent )
  {
 continue;
  }
 
  // Find the element's offsetTop and offsetLeft relative to the BODY tag.
  objLeft   = obj.offsetLeft;
  objTop    = obj.offsetTop;
  objParent = obj.offsetParent;
  
  while( objParent.tagName.toUpperCase() != "BODY" )
  {
 objLeft  += objParent.offsetLeft;
 objTop   += objParent.offsetTop;
 objParent = objParent.offsetParent;
  }
 
  objHeight = obj.offsetHeight;
  objWidth = obj.offsetWidth;
 
  if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
  else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
  else if( overDiv.offsetTop >= ( objTop + objHeight ));
  else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
  else
  {
 obj.style.visibility = "hidden";
  }
}
 }
}

/*
* unhides <select> and <applet> objects (for IE only)
*/
function showElement( elmID )
{
 if( ie )
 {
for( i = 0; i < document.getElementsByTagName( elmID ).length; i++ )
{
  obj = document.getElementsByTagName( elmID )[i];
  
  if( !obj || !obj.offsetParent )
  {
 continue;
  }

  obj.style.visibility = "";
}
 }
}

function addIFrame(id){
 if (is_ie && is_ie5_5up){
   document.write ('<iframe src=\"javascript:false;\" id=\"ifr' + id + '\" scrolling=\"no\" frameborder=\"0\" style=\"position:absolute;top:0px;left:0px;z-index:+1;display:none\"></iframe>');
 }
}

function showIFrame(ctllayer){
 if (is_ie && is_ie5_5up){
   var ifr;
   if(document.all['ifr'+ctllayer]){
     ifr=document.all['ifr'+ctllayer].style;
     ifr.top=lw_getObj(ctllayer).top;
     ifr.left=lw_getObj(ctllayer).left;
     ifr.width=document.all[ctllayer].clientWidth;
     ifr.height=document.all[ctllayer].clientHeight;
     ifr.display='block';
   }
 }
}

function hideIFrame(ctllayer){
 if (is_ie && is_ie5_5up){
  var ifr;
 if(document.all['ifr'+ctllayer]){
     ifr = document.all['ifr'+ctllayer].style;
     ifr.top = 0;
     ifr.left = 0;
     ifr.width = 0;
     ifr.height = 0;
     ifr.display = 'none';
   }
 }
}

function DoShowIEObjects(id){
 if (is_ie && !is_ie5_5up){
  showElement('SELECT', document.getElementById(id));
  showElement('APPLET', document.getElementById(id));
  showElement('OBJECT', document.getElementById(id));
}
}

function DoHideIEObjects(id){
 if (is_ie && !is_ie5_5up){
  hideElement('SELECT', document.getElementById(id));
  hideElement('APPLET', document.getElementById(id));
  hideElement('OBJECT', document.getElementById(id));
}
}

function lw_createLayer (layerName, top_pos, left_pos, width, height, bgcolor, bordercolor, z_index) {
 addIFrame(layerName);
document.write("<div ONCLICK='event.cancelBubble=true' id='"+layerName+"' style='z-index:" + z_index + ";position:absolute;top:"+top_pos+";left:"+left_pos+";visibility:hidden;'><table bgcolor='"+bgcolor+"' style='border-width:1px;border-style:solid;border-color:" + bordercolor + "' cellpadding=0 cellspacing=0 width=0><tr><td valign=top width='"+width+"' height='"+height+"'><span id='"+layerName+"_content'></span></td></tr></table></div>");
}

function lw_getObj (objName) {
return (dom)?document.getElementById(objName).style:ie?eval("document.all."+objName) :eval("document."+objName);
}

function lw_showLayer (layerName) {

found=false;
for (i=0;i<=layerIndex;i++)
{
 if (layerQueue[i]==layerName)
 {
  found=true;
 }
}

if ((lw_getObj(layerName).visibility!="visible")&&(lw_getObj(layerName).visibility!="show"))
{
 lw_getObj(layerName).visibility = (dom||ie)?"visible":"show";
 layerQueue[++layerIndex] = layerName;

 DoHideIEObjects(layerName);
} 
showIFrame(layerName);
}

function lw_hideLayer () {
DoShowIEObjects(layerQueue[layerIndex]);
 hideIFrame(layerQueue[layerIndex]);
lw_getObj(layerQueue[layerIndex--]).visibility = "hidden";
}

function lw_hideLayerName (layerName) {
var i;
var tmpQueue=new Array();
var newIndex=-1;

DoShowIEObjects(layerName);

lw_getObj(layerName).visibility = "hidden";
 hideIFrame(layerName);

for (i=0;i<=layerIndex;i++)
{
 if ((layerQueue[i]!="")&&(layerQueue[i]!=layerName))
 {
  tmpQueue [++newIndex] = layerQueue[i]; 
  DoHideIEObjects(layerQueue[i]);
 }
}
layerQueue = tmpQueue;
layerIndex = newIndex;
}

function lw_closeAllLayers() {
while (layerIndex >= 0)
{
 lw_hideLayer();
}
}

function lw_closeLastLayer() {
if (layerIndex >= 0)
{
 while ((lw_getObj(layerQueue[layerIndex]).visibility!="visible") && (layerIndex>0))
 {
  layerIndex--;
 }
 lw_hideLayer();
}
}

function lw_escLayer (e) {
if (navigator.appName=="Netscape")
{
 var keyCode = e.keyCode?e.keyCode:e.which?e.which:e.charCode;
 if ((keyCode==27)||(keyCode==1))
 {
  lw_closeLastLayer();
 }
}
else
if ((event.keyCode==0)||(event.keyCode==27))
{
 lw_closeLastLayer();
}
}

var lw_leftpos = 0;
var lw_toppos = 0;
var lw_width = 0;
var lw_height = 0;

function lw_calcpos(obj) {
lw_leftpos=0;
lw_toppos=0;
lw_width = obj.offsetWidth;
lw_height = obj.offsetHeight;

var aTag = obj;
do {
 lw_leftpos += aTag.offsetLeft;
 lw_toppos += aTag.offsetTop;
 aTag = aTag.offsetParent;
} while(aTag.tagName!="BODY");
}

document.onkeypress = lw_escLayer;
document.onclick = lw_closeAllLayers;

