fusionpbx/resources/calendar_lw_layers.js

190 lines
4.5 KiB
JavaScript

// written by Tan Ling Wee
// last updated 20 June 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 lw_createLayer (layerName, top_pos, left_pos, width, height, bgcolor, bordercolor, z_index) {
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=2 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
hideElement( 'SELECT', document.getElementById(layerName) );
hideElement( 'APPLET', document.getElementById(layerName) );
}
}
function lw_hideLayer () {
showElement( 'SELECT', document.getElementById(layerQueue[layerIndex]) );
showElement( 'APPLET', document.getElementById(layerQueue[layerIndex]) );
lw_getObj(layerQueue[layerIndex--]).visibility = "hidden"
}
function lw_hideLayerName (layerName) {
var i
var tmpQueue=new Array()
var newIndex=-1
showElement( 'SELECT', document.getElementById(layerName) );
showElement( 'APPLET', document.getElementById(layerName) );
lw_getObj(layerName).visibility = "hidden"
for (i=0;i<=layerIndex;i++)
{
if ((layerQueue[i]!="")&&(layerQueue[i]!=layerName))
{
tmpQueue [++newIndex] = layerQueue[i]
hideElement( 'SELECT', document.getElementById(layerQueue[i]) );
hideElement( 'APPLET', document.getElementById(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;