Initial Commit of AgileBill Open Source
This commit is contained in:
33
includes/phplayers/libjs/layersmenu-browser_detection.js
Normal file
33
includes/phplayers/libjs/layersmenu-browser_detection.js
Normal file
@@ -0,0 +1,33 @@
|
||||
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
|
||||
|
||||
DOM = (document.getElementById) ? 1 : 0;
|
||||
NS4 = (document.layers) ? 1 : 0;
|
||||
// We need to explicitly detect Konqueror
|
||||
// because Konqueror 3 sets IE = 1 ... AAAAAAAAAARGHHH!!!
|
||||
Konqueror = (navigator.userAgent.indexOf('Konqueror') > -1) ? 1 : 0;
|
||||
// We need to detect Konqueror 2.2 as it does not handle the window.onresize event
|
||||
Konqueror22 = (navigator.userAgent.indexOf('Konqueror 2.2') > -1 || navigator.userAgent.indexOf('Konqueror/2.2') > -1) ? 1 : 0;
|
||||
Konqueror30 =
|
||||
(
|
||||
navigator.userAgent.indexOf('Konqueror 3.0') > -1
|
||||
|| navigator.userAgent.indexOf('Konqueror/3.0') > -1
|
||||
|| navigator.userAgent.indexOf('Konqueror 3;') > -1
|
||||
|| navigator.userAgent.indexOf('Konqueror/3;') > -1
|
||||
|| navigator.userAgent.indexOf('Konqueror 3)') > -1
|
||||
|| navigator.userAgent.indexOf('Konqueror/3)') > -1
|
||||
)
|
||||
? 1 : 0;
|
||||
Konqueror31 = (navigator.userAgent.indexOf('Konqueror 3.1') > -1 || navigator.userAgent.indexOf('Konqueror/3.1') > -1) ? 1 : 0;
|
||||
// We need to detect Konqueror 3.2 and 3.3 as they are affected by the see-through effect only for 2 form elements
|
||||
Konqueror32 = (navigator.userAgent.indexOf('Konqueror 3.2') > -1 || navigator.userAgent.indexOf('Konqueror/3.2') > -1) ? 1 : 0;
|
||||
Konqueror33 = (navigator.userAgent.indexOf('Konqueror 3.3') > -1 || navigator.userAgent.indexOf('Konqueror/3.3') > -1) ? 1 : 0;
|
||||
Opera = (navigator.userAgent.indexOf('Opera') > -1) ? 1 : 0;
|
||||
Opera5 = (navigator.userAgent.indexOf('Opera 5') > -1 || navigator.userAgent.indexOf('Opera/5') > -1) ? 1 : 0;
|
||||
Opera6 = (navigator.userAgent.indexOf('Opera 6') > -1 || navigator.userAgent.indexOf('Opera/6') > -1) ? 1 : 0;
|
||||
Opera56 = Opera5 || Opera6;
|
||||
IE = (navigator.userAgent.indexOf('MSIE') > -1) ? 1 : 0;
|
||||
IE = IE && !Opera;
|
||||
IE5 = IE && DOM;
|
||||
IE4 = (document.all) ? 1 : 0;
|
||||
IE4 = IE4 && IE && !DOM;
|
||||
|
11
includes/phplayers/libjs/layersmenu-footer.ijs
Normal file
11
includes/phplayers/libjs/layersmenu-footer.ijs
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- beginning of menu footer - {packageName} {version} {copyright} {author} -->
|
||||
|
||||
{footer}
|
||||
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
<!--
|
||||
loaded = 1;
|
||||
// -->
|
||||
</script>
|
||||
|
||||
<!-- end of menu footer - {packageName} {version} {copyright} {author} -->
|
57
includes/phplayers/libjs/layersmenu-header.ijs
Normal file
57
includes/phplayers/libjs/layersmenu-header.ijs
Normal file
@@ -0,0 +1,57 @@
|
||||
<!-- beginning of menu header - {packageName} {version} {copyright} {author} -->
|
||||
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
<!--
|
||||
|
||||
menuTopShift = {menuTopShift};
|
||||
menuRightShift = {menuRightShift};
|
||||
menuLeftShift = {menuLeftShift};
|
||||
|
||||
var thresholdY = {thresholdY};
|
||||
var abscissaStep = {abscissaStep};
|
||||
|
||||
toBeHidden = new Array();
|
||||
toBeHiddenLeft = new Array();
|
||||
toBeHiddenTop = new Array();
|
||||
|
||||
{listl}
|
||||
var numl = listl.length;
|
||||
|
||||
father = new Array();
|
||||
for (i=1; i<={nodesCount}; i++) {
|
||||
father['L' + i] = '';
|
||||
}
|
||||
{father_keys}
|
||||
{father_vals}
|
||||
for (i=0; i<father_keys.length; i++) {
|
||||
father[father_keys[i]] = father_vals[i];
|
||||
}
|
||||
|
||||
lwidth = new Array();
|
||||
var lwidthDetected = 0;
|
||||
|
||||
function moveLayers()
|
||||
{
|
||||
if (!lwidthDetected) {
|
||||
for (i=0; i<numl; i++) {
|
||||
lwidth[listl[i]] = getOffsetWidth(listl[i]);
|
||||
}
|
||||
lwidthDetected = 1;
|
||||
}
|
||||
if (IE4) {
|
||||
for (i=0; i<numl; i++) {
|
||||
setWidth(listl[i], abscissaStep);
|
||||
}
|
||||
}
|
||||
{moveLayers}
|
||||
}
|
||||
|
||||
back = new Array();
|
||||
for (i=1; i<={nodesCount}; i++) {
|
||||
back['L' + i] = 0;
|
||||
}
|
||||
|
||||
// -->
|
||||
</script>
|
||||
|
||||
<!-- end of menu header - {packageName} {version} {copyright} {author} -->
|
248
includes/phplayers/libjs/layersmenu-library.js
Normal file
248
includes/phplayers/libjs/layersmenu-library.js
Normal file
@@ -0,0 +1,248 @@
|
||||
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
|
||||
|
||||
layerLeft = new Array();
|
||||
layerTop = new Array();
|
||||
|
||||
function setVisibility(layer, on)
|
||||
{
|
||||
if (on) {
|
||||
if (DOM) {
|
||||
document.getElementById(layer).style.visibility = 'visible';
|
||||
} else if (NS4) {
|
||||
document.layers[layer].visibility = 'show';
|
||||
} else {
|
||||
document.all[layer].style.visibility = 'visible';
|
||||
}
|
||||
} else {
|
||||
if (DOM) {
|
||||
document.getElementById(layer).style.visibility = 'hidden';
|
||||
} else if (NS4) {
|
||||
document.layers[layer].visibility = 'hide';
|
||||
} else {
|
||||
document.all[layer].style.visibility = 'hidden';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isVisible(layer)
|
||||
{
|
||||
if (DOM) {
|
||||
return (document.getElementById(layer).style.visibility == 'visible');
|
||||
} else if (NS4) {
|
||||
return (document.layers[layer].visibility == 'show');
|
||||
} else {
|
||||
return (document.all[layer].style.visibility == 'visible');
|
||||
}
|
||||
}
|
||||
|
||||
function setLeft(layer, x)
|
||||
{
|
||||
layerLeft[layer] = x;
|
||||
if (DOM && !Opera5) {
|
||||
document.getElementById(layer).style.left = x + 'px';
|
||||
} else if (Opera5) {
|
||||
document.getElementById(layer).style.left = x;
|
||||
} else if (NS4) {
|
||||
document.layers[layer].left = x;
|
||||
} else {
|
||||
document.all[layer].style.pixelLeft = x;
|
||||
}
|
||||
}
|
||||
|
||||
function getOffsetLeft(layer)
|
||||
{
|
||||
var value = 0;
|
||||
if (DOM) { // Mozilla, Konqueror >= 2.2, Opera >= 5, IE
|
||||
object = document.getElementById(layer);
|
||||
value = object.offsetLeft;
|
||||
//alert (object.tagName + ' --- ' + object.offsetLeft);
|
||||
while (object.tagName != 'BODY' && object.offsetParent) {
|
||||
object = object.offsetParent;
|
||||
//alert (object.tagName + ' --- ' + object.offsetLeft);
|
||||
value += object.offsetLeft;
|
||||
}
|
||||
} else if (NS4) {
|
||||
value = document.layers[layer].pageX;
|
||||
} else { // IE4 IS SIMPLY A BASTARD !!!
|
||||
if (document.all['IE4' + layer]) {
|
||||
layer = 'IE4' + layer;
|
||||
}
|
||||
object = document.all[layer];
|
||||
value = object.offsetLeft;
|
||||
while (object.tagName != 'BODY') {
|
||||
object = object.offsetParent;
|
||||
value += object.offsetLeft;
|
||||
}
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function setTop(layer, y)
|
||||
{
|
||||
layerTop[layer] = y;
|
||||
if (DOM && !Opera5) {
|
||||
document.getElementById(layer).style.top = y + 'px';
|
||||
} else if (Opera5) {
|
||||
document.getElementById(layer).style.top = y;
|
||||
} else if (NS4) {
|
||||
document.layers[layer].top = y;
|
||||
} else {
|
||||
document.all[layer].style.pixelTop = y;
|
||||
}
|
||||
}
|
||||
|
||||
function getOffsetTop(layer)
|
||||
{
|
||||
// IE 5.5 and 6.0 behaviour with this function is really strange:
|
||||
// in some cases, they return a really too large value...
|
||||
// ... after all, IE is buggy, nothing new
|
||||
var value = 0;
|
||||
if (DOM) {
|
||||
object = document.getElementById(layer);
|
||||
value = object.offsetTop;
|
||||
while (object.tagName != 'BODY' && object.offsetParent) {
|
||||
object = object.offsetParent;
|
||||
value += object.offsetTop;
|
||||
}
|
||||
} else if (NS4) {
|
||||
value = document.layers[layer].pageY;
|
||||
} else { // IE4 IS SIMPLY A BASTARD !!!
|
||||
if (document.all['IE4' + layer]) {
|
||||
layer = 'IE4' + layer;
|
||||
}
|
||||
object = document.all[layer];
|
||||
value = object.offsetTop;
|
||||
while (object.tagName != 'BODY') {
|
||||
object = object.offsetParent;
|
||||
value += object.offsetTop;
|
||||
}
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function setWidth(layer, w)
|
||||
{
|
||||
if (DOM) {
|
||||
document.getElementById(layer).style.width = w;
|
||||
} else if (NS4) {
|
||||
// document.layers[layer].width = w;
|
||||
} else {
|
||||
document.all[layer].style.pixelWidth = w;
|
||||
}
|
||||
}
|
||||
|
||||
function getOffsetWidth(layer)
|
||||
{
|
||||
var value = 0;
|
||||
if (DOM && !Opera56) {
|
||||
value = document.getElementById(layer).offsetWidth;
|
||||
} else if (NS4) {
|
||||
value = document.layers[layer].document.width;
|
||||
} else if (Opera56) {
|
||||
value = document.getElementById(layer).style.pixelWidth;
|
||||
} else { // IE4 IS SIMPLY A BASTARD !!!
|
||||
if (document.all['IE4' + layer]) {
|
||||
layer = 'IE4' + layer;
|
||||
}
|
||||
value = document.all[layer].offsetWidth;
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function setHeight(layer, h) // unused, not tested
|
||||
{
|
||||
if (DOM) {
|
||||
document.getElementById(layer).style.height = h;
|
||||
} else if (NS4) {
|
||||
// document.layers[layer].height = h;
|
||||
} else {
|
||||
document.all[layer].style.pixelHeight = h;
|
||||
}
|
||||
}
|
||||
|
||||
function getOffsetHeight(layer)
|
||||
{
|
||||
var value = 0;
|
||||
if (DOM && !Opera56) {
|
||||
value = document.getElementById(layer).offsetHeight;
|
||||
} else if (NS4) {
|
||||
value = document.layers[layer].document.height;
|
||||
} else if (Opera56) {
|
||||
value = document.getElementById(layer).style.pixelHeight;
|
||||
} else { // IE4 IS SIMPLY A BASTARD !!!
|
||||
if (document.all['IE4' + layer]) {
|
||||
layer = 'IE4' + layer;
|
||||
}
|
||||
value = document.all[layer].offsetHeight;
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function getWindowWidth()
|
||||
{
|
||||
var value = 0;
|
||||
if ((DOM && !IE) || NS4 || Konqueror || Opera) {
|
||||
value = window.innerWidth;
|
||||
// } else if (NS4) {
|
||||
// value = document.width;
|
||||
} else { // IE
|
||||
if (document.documentElement && document.documentElement.clientWidth) {
|
||||
value = document.documentElement.clientWidth;
|
||||
} else if (document.body) {
|
||||
value = document.body.clientWidth;
|
||||
}
|
||||
}
|
||||
if (isNaN(value)) {
|
||||
value = window.innerWidth;
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function getWindowXOffset()
|
||||
{
|
||||
var value = 0;
|
||||
if ((DOM && !IE) || NS4 || Konqueror || Opera) {
|
||||
value = window.pageXOffset;
|
||||
} else { // IE
|
||||
if (document.documentElement && document.documentElement.scrollLeft) {
|
||||
value = document.documentElement.scrollLeft;
|
||||
} else if (document.body) {
|
||||
value = document.body.scrollLeft;
|
||||
}
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function getWindowHeight()
|
||||
{
|
||||
var value = 0;
|
||||
if ((DOM && !IE) || NS4 || Konqueror || Opera) {
|
||||
value = window.innerHeight;
|
||||
} else { // IE
|
||||
if (document.documentElement && document.documentElement.clientHeight) {
|
||||
value = document.documentElement.clientHeight;
|
||||
} else if (document.body) {
|
||||
value = document.body.clientHeight;
|
||||
}
|
||||
}
|
||||
if (isNaN(value)) {
|
||||
value = window.innerHeight;
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
||||
function getWindowYOffset()
|
||||
{
|
||||
var value = 0;
|
||||
if ((DOM && !IE) || NS4 || Konqueror || Opera) {
|
||||
value = window.pageYOffset;
|
||||
} else { // IE
|
||||
if (document.documentElement && document.documentElement.scrollTop) {
|
||||
value = document.documentElement.scrollTop;
|
||||
} else if (document.body) {
|
||||
value = document.body.scrollTop;
|
||||
}
|
||||
}
|
||||
return (value);
|
||||
}
|
||||
|
65
includes/phplayers/libjs/layersmenu-see-through.js
Normal file
65
includes/phplayers/libjs/layersmenu-see-through.js
Normal file
@@ -0,0 +1,65 @@
|
||||
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
|
||||
|
||||
function scanChildren(element)
|
||||
{
|
||||
var counter = element.childNodes.length;
|
||||
for (var i=0; i<counter; i++) {
|
||||
foobar = element.childNodes.item(i);
|
||||
if ( ( (Konqueror22 || Konqueror30 || Konqueror31) &&
|
||||
( foobar.nodeName == 'INPUT' || foobar.nodeName == 'input'
|
||||
|| foobar.nodeName == 'SELECT' || foobar.nodeName == 'select'
|
||||
|| foobar.nodeName == 'TEXTAREA' || foobar.nodeName == 'textarea'
|
||||
)
|
||||
)
|
||||
||
|
||||
// Konqueror 3.2 and 3.3 need hiding only for the following two form elements, but, alas,
|
||||
// at the time of this writing (Konqueror 3.2.3 and 3.3.0-rc2), hiding of such two form elements
|
||||
// on Konqueror 3.2 and 3.3 does not work, it is affected by the following bug: http://bugs.kde.org/72885
|
||||
( (Konqueror32 || Konqueror33) &&
|
||||
( ((foobar.nodeName == 'SELECT' || foobar.nodeName == 'select') && foobar.size > 1)
|
||||
|| foobar.nodeName == 'TEXTAREA' || foobar.nodeName == 'textarea'
|
||||
)
|
||||
)
|
||||
||
|
||||
( IE &&
|
||||
( foobar.nodeName == 'SELECT' || foobar.nodeName == 'select' )
|
||||
)
|
||||
) {
|
||||
toBeHidden[toBeHidden.length] = foobar;
|
||||
}
|
||||
if (foobar.childNodes.length > 0) {
|
||||
scanChildren(foobar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function seeThroughCoordinatesDetection()
|
||||
{
|
||||
if (!((Konqueror && !Konqueror22) || IE5)) {
|
||||
return;
|
||||
}
|
||||
for (i=0; i<toBeHidden.length; i++) {
|
||||
object = toBeHidden[i];
|
||||
toBeHiddenLeft[i] = object.offsetLeft;
|
||||
while (object.tagName != 'BODY' && object.offsetParent) {
|
||||
object = object.offsetParent;
|
||||
toBeHiddenLeft[i] += object.offsetLeft;
|
||||
}
|
||||
object = toBeHidden[i];
|
||||
toBeHiddenTop[i] = object.offsetTop;
|
||||
while (object.tagName != 'BODY' && object.offsetParent) {
|
||||
object = object.offsetParent;
|
||||
toBeHiddenTop[i] += object.offsetTop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//document.write("<br />\nSCANNING STARTED<br />\n");
|
||||
//scanChildren(document.getElementsByTagName('BODY').item(0));
|
||||
if ((Konqueror || IE5) && document.getElementById('phplmseethrough')) {
|
||||
scanChildren(document.getElementById('phplmseethrough'));
|
||||
}
|
||||
//document.write("<br />\nSCANNING COMPLETED<br />\n");
|
||||
|
||||
seeThroughCoordinatesDetection();
|
||||
|
316
includes/phplayers/libjs/layersmenu.js
Normal file
316
includes/phplayers/libjs/layersmenu.js
Normal file
@@ -0,0 +1,316 @@
|
||||
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
|
||||
|
||||
useTimeouts = 1;
|
||||
timeoutLength = 1000; // time in ms; not significant if useTimeouts = 0;
|
||||
shutdownOnClick = 0;
|
||||
|
||||
loaded = 0;
|
||||
layersMoved = 0;
|
||||
layerPoppedUp = '';
|
||||
|
||||
timeoutFlag = 0;
|
||||
if (Opera56 || IE4) {
|
||||
useTimeouts = 0;
|
||||
}
|
||||
if (NS4 || Opera56 || IE4) {
|
||||
shutdownOnClick = 1;
|
||||
}
|
||||
|
||||
currentY = 0;
|
||||
function grabMouse(e) // for NS4
|
||||
{
|
||||
currentY = e.pageY;
|
||||
}
|
||||
if (NS4) {
|
||||
document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE);
|
||||
document.onmousemove = grabMouse;
|
||||
}
|
||||
|
||||
function seeThroughElements(show)
|
||||
{
|
||||
if (show) {
|
||||
foobar = 'visible';
|
||||
} else {
|
||||
foobar = 'hidden';
|
||||
}
|
||||
for (i=0; i<toBeHidden.length; i++) {
|
||||
toBeHidden[i].style.visibility = foobar;
|
||||
}
|
||||
}
|
||||
|
||||
function shutdown()
|
||||
{
|
||||
for (i=0; i<numl; i++) {
|
||||
LMPopUpL(listl[i], false);
|
||||
}
|
||||
layerPoppedUp = '';
|
||||
if (Konqueror || IE5) {
|
||||
seeThroughElements(true);
|
||||
}
|
||||
}
|
||||
if (shutdownOnClick) {
|
||||
if (NS4) {
|
||||
document.onmousedown = shutdown;
|
||||
} else {
|
||||
document.onclick = shutdown;
|
||||
}
|
||||
}
|
||||
|
||||
function setLMTO()
|
||||
{
|
||||
if (useTimeouts) {
|
||||
timeoutFlag = setTimeout('shutdown()', timeoutLength);
|
||||
}
|
||||
}
|
||||
|
||||
function clearLMTO()
|
||||
{
|
||||
if (useTimeouts) {
|
||||
clearTimeout(timeoutFlag);
|
||||
}
|
||||
}
|
||||
|
||||
function moveLayerX(menuName)
|
||||
{
|
||||
if (!loaded || (isVisible(menuName) && menuName != layerPoppedUp)) {
|
||||
return;
|
||||
}
|
||||
if (father[menuName] != '') {
|
||||
if (!Opera5 && !IE4) {
|
||||
width0 = lwidth[father[menuName]];
|
||||
width1 = lwidth[menuName];
|
||||
} else if (Opera5) {
|
||||
// Opera 5 stupidly and exaggeratedly overestimates layers widths
|
||||
// hence we consider a default value equal to $abscissaStep
|
||||
width0 = abscissaStep;
|
||||
width1 = abscissaStep;
|
||||
} else if (IE4) {
|
||||
width0 = getOffsetWidth(father[menuName]);
|
||||
width1 = getOffsetWidth(menuName);
|
||||
}
|
||||
onLeft = getOffsetLeft(father[menuName]) - width1 + menuLeftShift;
|
||||
onRight = getOffsetLeft(father[menuName]) + width0 - menuRightShift;
|
||||
windowWidth = getWindowWidth();
|
||||
windowXOffset = getWindowXOffset();
|
||||
// if (NS4 && !DOM) {
|
||||
// windowXOffset = 0;
|
||||
// }
|
||||
if (onLeft < windowXOffset && onRight + width1 > windowWidth + windowXOffset) {
|
||||
if (onRight + width1 - windowWidth - windowXOffset > windowXOffset - onLeft) {
|
||||
onLeft = windowXOffset;
|
||||
} else {
|
||||
onRight = windowWidth + windowXOffset - width1;
|
||||
}
|
||||
}
|
||||
if (back[father[menuName]]) {
|
||||
if (onLeft < windowXOffset) {
|
||||
back[menuName] = 0;
|
||||
} else {
|
||||
back[menuName] = 1;
|
||||
}
|
||||
} else {
|
||||
//alert(onRight + ' - ' + width1 + ' - ' + windowWidth + ' - ' + windowXOffset);
|
||||
if (onRight + width1 > windowWidth + windowXOffset) {
|
||||
back[menuName] = 1;
|
||||
} else {
|
||||
back[menuName] = 0;
|
||||
}
|
||||
}
|
||||
if (back[menuName]) {
|
||||
setLeft(menuName, onLeft);
|
||||
} else {
|
||||
setLeft(menuName, onRight);
|
||||
}
|
||||
}
|
||||
moveLayerY(menuName); // workaround needed for Mozilla < 1.4 for MS Windows
|
||||
}
|
||||
|
||||
function moveLayerY(menuName)
|
||||
{
|
||||
if (!loaded || (isVisible(menuName) && menuName != layerPoppedUp)) {
|
||||
return;
|
||||
}
|
||||
if (!layersMoved) {
|
||||
moveLayers();
|
||||
layersMoved = 1;
|
||||
}
|
||||
if (!NS4) {
|
||||
newY = getOffsetTop('ref' + menuName);
|
||||
} else {
|
||||
newY = currentY;
|
||||
}
|
||||
newY += menuTopShift;
|
||||
layerHeight = getOffsetHeight(menuName);
|
||||
windowHeight = getWindowHeight();
|
||||
windowYOffset = getWindowYOffset();
|
||||
if (newY + layerHeight > windowHeight + windowYOffset) {
|
||||
if (layerHeight > windowHeight) {
|
||||
newY = windowYOffset;
|
||||
} else {
|
||||
newY = windowHeight + windowYOffset - layerHeight;
|
||||
}
|
||||
}
|
||||
if (Math.abs(getOffsetTop(menuName) - newY) > thresholdY) {
|
||||
setTop(menuName, newY);
|
||||
}
|
||||
}
|
||||
|
||||
function moveLayerX1(menuName, father)
|
||||
{
|
||||
if (!lwidthDetected) {
|
||||
return;
|
||||
}
|
||||
if (!Opera5 && !IE4) {
|
||||
width1 = lwidth[menuName];
|
||||
} else if (Opera5) {
|
||||
// Opera 5 stupidly and exaggeratedly overestimates layers widths
|
||||
// hence we consider a default value equal to $abscissaStep
|
||||
width1 = abscissaStep;
|
||||
}
|
||||
foobar = getOffsetLeft(father + menuName);
|
||||
if (!IE4) {
|
||||
windowWidth = getWindowWidth();
|
||||
windowXOffset = getWindowXOffset();
|
||||
if (foobar + width1 > windowWidth + windowXOffset) {
|
||||
foobar = windowWidth + windowXOffset - width1;
|
||||
}
|
||||
if (foobar < windowXOffset) {
|
||||
foobar = windowXOffset;
|
||||
}
|
||||
}
|
||||
setLeft(menuName, foobar);
|
||||
}
|
||||
|
||||
function layersOverlap(layer, i)
|
||||
{
|
||||
if (Konqueror22) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// xa1 = getOffsetLeft(layer);
|
||||
//setLeft(layer, xa1);
|
||||
xa1 = layerLeft[layer];
|
||||
xa2 = xa1 + getOffsetWidth(layer);
|
||||
//setWidth(layer, xa2-xa1);
|
||||
// ya1 = getOffsetTop(layer);
|
||||
//setTop(layer, ya1);
|
||||
ya1 = layerTop[layer];
|
||||
ya2 = ya1 + getOffsetHeight(layer);
|
||||
//setHeight(layer, ya2-ya1);
|
||||
//alert(':' + xa1 + ':' + xa2 + ':' + ya1 + ':' + ya2 + ':');
|
||||
|
||||
xb1 = toBeHiddenLeft[i];
|
||||
xb2 = xb1 + toBeHidden[i].offsetWidth;
|
||||
yb1 = toBeHiddenTop[i];
|
||||
yb2 = yb1 + toBeHidden[i].offsetHeight;
|
||||
//alert(':' + xb1 + ':' + xb2 + ':' + yb1 + ':' + yb2 + ':');
|
||||
|
||||
if(xb1>xa1) xa1=xb1; if(xb2<xa2) xa2=xb2;
|
||||
if(yb1>ya1) ya1=yb1; if(yb2<ya2) ya2=yb2;
|
||||
|
||||
return (xa2>xa1 && ya2>ya1);
|
||||
}
|
||||
|
||||
function seeThroughWorkaround(menuName, on)
|
||||
{
|
||||
for (i=0; i<toBeHidden.length; i++) {
|
||||
if (layersOverlap(menuName, i)) {
|
||||
if (on) {
|
||||
toBeHidden[i].style.visibility = 'hidden';
|
||||
} else {
|
||||
toBeHidden[i].style.visibility = 'visible';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function LMPopUpL(menuName, on)
|
||||
{
|
||||
if (!loaded) {
|
||||
return;
|
||||
}
|
||||
if (!layersMoved) {
|
||||
moveLayers();
|
||||
layersMoved = 1;
|
||||
}
|
||||
setVisibility(menuName, on);
|
||||
}
|
||||
|
||||
function LMPopUp(menuName, isCurrent)
|
||||
{
|
||||
if (!loaded || menuName == layerPoppedUp || (isVisible(menuName) && !isCurrent)) {
|
||||
return;
|
||||
}
|
||||
if (menuName == father[layerPoppedUp]) {
|
||||
LMPopUpL(layerPoppedUp, false);
|
||||
// seeThroughWorkaround(menuName, false);
|
||||
} else if (father[menuName] == layerPoppedUp) {
|
||||
LMPopUpL(menuName, true);
|
||||
seeThroughWorkaround(menuName, true);
|
||||
} else {
|
||||
shutdown();
|
||||
foobar = menuName;
|
||||
do {
|
||||
LMPopUpL(foobar, true);
|
||||
seeThroughWorkaround(foobar, true);
|
||||
foobar = father[foobar];
|
||||
} while (foobar != '')
|
||||
}
|
||||
/*
|
||||
if (layerPoppedUp == '') {
|
||||
seeThroughElements(false);
|
||||
}
|
||||
*/
|
||||
layerPoppedUp = menuName;
|
||||
}
|
||||
|
||||
function resizeHandler()
|
||||
{
|
||||
if (NS4) {
|
||||
window.location.reload();
|
||||
}
|
||||
shutdown();
|
||||
for (i=0; i<numl; i++) {
|
||||
setLeft(listl[i], 0);
|
||||
setTop(listl[i], 0);
|
||||
}
|
||||
if (toBeHidden != null && toBeHidden.length > 0) {
|
||||
seeThroughCoordinatesDetection();
|
||||
}
|
||||
// moveLayers();
|
||||
layersMoved = 0;
|
||||
}
|
||||
window.onresize = resizeHandler;
|
||||
|
||||
function yaresizeHandler()
|
||||
{
|
||||
if (window.innerWidth != origWidth || window.innerHeight != origHeight) {
|
||||
if (Konqueror22 || Opera5) {
|
||||
window.location.reload(); // Opera 5 often fails this
|
||||
}
|
||||
origWidth = window.innerWidth;
|
||||
origHeight = window.innerHeight;
|
||||
resizeHandler();
|
||||
}
|
||||
setTimeout('yaresizeHandler()', 500);
|
||||
}
|
||||
function loadHandler()
|
||||
{
|
||||
if (Konqueror22 || Opera56) {
|
||||
origWidth = window.innerWidth;
|
||||
origHeight = window.innerHeight;
|
||||
yaresizeHandler();
|
||||
}
|
||||
}
|
||||
window.onload = loadHandler;
|
||||
|
||||
function fixieflm(menuName)
|
||||
{
|
||||
if (DOM) {
|
||||
setWidth(menuName, '100%');
|
||||
} else { // IE4 IS SIMPLY A BASTARD !!!
|
||||
document.write('</div>');
|
||||
document.write('<div id="IE4' + menuName + '" style="position: relative; width: 100%; visibility: visible;">');
|
||||
}
|
||||
}
|
||||
|
70
includes/phplayers/libjs/layerstreemenu-cookies.js
Normal file
70
includes/phplayers/libjs/layerstreemenu-cookies.js
Normal file
@@ -0,0 +1,70 @@
|
||||
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
|
||||
|
||||
function setLMCookie(name, value)
|
||||
{
|
||||
document.cookie = name + '=' + value + ';path=/';
|
||||
}
|
||||
|
||||
function getLMCookie(name)
|
||||
{
|
||||
foobar = document.cookie.split(name + '=');
|
||||
if (foobar.length < 2) {
|
||||
return null;
|
||||
}
|
||||
tempString = foobar[1];
|
||||
if (tempString.indexOf(';') == -1) {
|
||||
return tempString;
|
||||
}
|
||||
yafoobar = tempString.split(';');
|
||||
return yafoobar[0];
|
||||
}
|
||||
|
||||
function parseExpandString()
|
||||
{
|
||||
expandString = getLMCookie('phplm_expand');
|
||||
phplm_expand = new Array();
|
||||
if (expandString) {
|
||||
expanded = expandString.split('|');
|
||||
for (i=0; i<expanded.length-1; i++) {
|
||||
phplm_expand[expanded[i]] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function parseCollapseString()
|
||||
{
|
||||
collapseString = getLMCookie('phplm_collapse');
|
||||
phplm_collapse = new Array();
|
||||
if (collapseString) {
|
||||
collapsed = collapseString.split('|');
|
||||
for (i=0; i<collapsed.length-1; i++) {
|
||||
phplm_collapse[collapsed[i]] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parseExpandString();
|
||||
parseCollapseString();
|
||||
|
||||
function saveExpandString()
|
||||
{
|
||||
expandString = '';
|
||||
for (i=0; i<phplm_expand.length; i++) {
|
||||
if (phplm_expand[i] == 1) {
|
||||
expandString += i + '|';
|
||||
}
|
||||
}
|
||||
setLMCookie('phplm_expand', expandString);
|
||||
}
|
||||
|
||||
function saveCollapseString()
|
||||
{
|
||||
collapseString = '';
|
||||
for (i=0; i<phplm_collapse.length; i++) {
|
||||
if (phplm_collapse[i] == 1) {
|
||||
collapseString += i + '|';
|
||||
}
|
||||
}
|
||||
setLMCookie('phplm_collapse', collapseString);
|
||||
}
|
||||
|
52
includes/phplayers/libjs/layerstreemenu.ijs
Normal file
52
includes/phplayers/libjs/layerstreemenu.ijs
Normal file
@@ -0,0 +1,52 @@
|
||||
// PHP Layers Menu 3.2.0-rc (C) 2001-2004 Marco Pratesi - http://www.marcopratesi.it/
|
||||
|
||||
function {toggle_function_name}(nodeid)
|
||||
{
|
||||
if ((!DOM || Opera56 || Konqueror22) && !IE4) {
|
||||
return;
|
||||
}
|
||||
layersMoved = 0;
|
||||
parseExpandString();
|
||||
parseCollapseString();
|
||||
if (!IE4) {
|
||||
sonLayer = document.getElementById('jt' + nodeid + 'son');
|
||||
nodeLayer = document.getElementById('jt' + nodeid + 'node');
|
||||
folderLayer = document.getElementById('jt' + nodeid + 'folder');
|
||||
} else {
|
||||
sonLayer = document.all('jt' + nodeid + 'son');
|
||||
nodeLayer = document.all('jt' + nodeid + 'node');
|
||||
folderLayer = document.all('jt' + nodeid + 'folder');
|
||||
}
|
||||
if (sonLayer.style.display == 'none') {
|
||||
sonLayer.style.display = 'block';
|
||||
if (nodeLayer.src.indexOf('{img_expand}') > -1) {
|
||||
nodeLayer.src = '{img_collapse}';
|
||||
} else if (nodeLayer.src.indexOf('{img_expand_first}') > -1) {
|
||||
nodeLayer.src = '{img_collapse_first}';
|
||||
} else if (nodeLayer.src.indexOf('{img_expand_corner}') > -1) {
|
||||
nodeLayer.src = '{img_collapse_corner}';
|
||||
} else {
|
||||
nodeLayer.src = '{img_collapse_corner_first}';
|
||||
}
|
||||
folderLayer.src = '{img_folder_open}';
|
||||
phplm_expand[nodeid] = 1;
|
||||
phplm_collapse[nodeid] = 0;
|
||||
} else {
|
||||
sonLayer.style.display = 'none';
|
||||
if (nodeLayer.src.indexOf('{img_collapse}') > -1) {
|
||||
nodeLayer.src = '{img_expand}';
|
||||
} else if (nodeLayer.src.indexOf('{img_collapse_first}') > -1) {
|
||||
nodeLayer.src = '{img_expand_first}';
|
||||
} else if (nodeLayer.src.indexOf('{img_collapse_corner}') > -1) {
|
||||
nodeLayer.src = '{img_expand_corner}';
|
||||
} else {
|
||||
nodeLayer.src = '{img_expand_corner_first}';
|
||||
}
|
||||
folderLayer.src = '{img_folder_closed}';
|
||||
phplm_expand[nodeid] = 0;
|
||||
phplm_collapse[nodeid] = 1;
|
||||
}
|
||||
saveExpandString();
|
||||
saveCollapseString();
|
||||
}
|
||||
|
Reference in New Issue
Block a user