120 lines
3.2 KiB
JavaScript
120 lines
3.2 KiB
JavaScript
// Copyright (C) 2005-2008 Ilya S. Lyubinskiy. All rights reserved.
|
|
// Technical support: http://www.php-development.ru/
|
|
//
|
|
// YOU MAY NOT
|
|
// (1) Remove or modify this copyright notice.
|
|
// (2) Re-distribute this code or any part of it.
|
|
// Instead, you may link to the homepage of this code:
|
|
// http://www.php-development.ru/javascripts/dropdown.php
|
|
//
|
|
// YOU MAY
|
|
// (1) Use this code on your website.
|
|
// (2) Use this code as part of another product.
|
|
//
|
|
// NO WARRANTY
|
|
// This code is provided "as is" without warranty of any kind.
|
|
// You expressly acknowledge and agree that use of this code is at your own risk.
|
|
|
|
|
|
// ***** Popup Control *********************************************************
|
|
|
|
// ***** at_show_aux *****
|
|
|
|
function at_show_aux(parent, child)
|
|
{
|
|
var p = document.getElementById(parent);
|
|
var c = document.getElementById(child );
|
|
|
|
var top = (c["at_position"] == "y") ? p.offsetHeight+2 : 0;
|
|
var left = (c["at_position"] == "x") ? p.offsetWidth +2 : 0;
|
|
|
|
for (; p; p = p.offsetParent)
|
|
{
|
|
top += p.offsetTop;
|
|
left += p.offsetLeft;
|
|
}
|
|
|
|
c.style.position = "absolute";
|
|
c.style.top = top +'px';
|
|
c.style.left = left+'px';
|
|
c.style.visibility = "visible";
|
|
}
|
|
|
|
// ***** at_show *****
|
|
|
|
function at_show()
|
|
{
|
|
var p = document.getElementById(this["at_parent"]);
|
|
var c = document.getElementById(this["at_child" ]);
|
|
|
|
at_show_aux(p.id, c.id);
|
|
clearTimeout(c["at_timeout"]);
|
|
|
|
}
|
|
|
|
// ***** at_hide *****
|
|
|
|
function at_hide()
|
|
{
|
|
var p = document.getElementById(this["at_parent"]);
|
|
var c = document.getElementById(this["at_child" ]);
|
|
|
|
c["at_timeout"] = setTimeout("document.getElementById('"+c.id+"').style.visibility = 'hidden'", 333);
|
|
}
|
|
|
|
// ***** at_click *****
|
|
|
|
function at_click()
|
|
{
|
|
var p = document.getElementById(this["at_parent"]);
|
|
var c = document.getElementById(this["at_child" ]);
|
|
|
|
if (c.style.visibility != "visible") at_show_aux(p.id, c.id); else c.style.visibility = "hidden";
|
|
return false;
|
|
}
|
|
|
|
// ***** at_attach *****
|
|
|
|
// PARAMETERS:
|
|
// parent - id of the parent html element
|
|
// child - id of the child html element that should be droped down
|
|
// showtype - "click" = drop down child html element on mouse click
|
|
// "hover" = drop down child html element on mouse over
|
|
// position - "x" = display the child html element to the right
|
|
// "y" = display the child html element below
|
|
// cursor - omit to use default cursor or specify CSS cursor name
|
|
|
|
function at_attach(parent, child, showtype, position, cursor)
|
|
{
|
|
var p = document.getElementById(parent);
|
|
var c = document.getElementById(child);
|
|
|
|
p["at_parent"] = p.id;
|
|
c["at_parent"] = p.id;
|
|
p["at_child"] = c.id;
|
|
c["at_child"] = c.id;
|
|
p["at_position"] = position;
|
|
c["at_position"] = position;
|
|
|
|
c.style.position = "absolute";
|
|
c.style.visibility = "hidden";
|
|
|
|
if (cursor != undefined) p.style.cursor = cursor;
|
|
|
|
switch (showtype)
|
|
{
|
|
case "click":
|
|
p.onclick = at_click;
|
|
p.onmouseout = at_hide;
|
|
c.onmouseover = at_show;
|
|
c.onmouseout = at_hide;
|
|
break;
|
|
case "hover":
|
|
p.onmouseover = at_show;
|
|
p.onmouseout = at_hide;
|
|
c.onmouseover = at_show;
|
|
c.onmouseout = at_hide;
|
|
break;
|
|
}
|
|
}
|