//////////////////////////////////////////////////////////////////
/// @file
/// Клиентские функции для реализации drop down меню 
/// 
/// - Project:     __ASPNew__
/// - Copyright:   "Nota-PI group" 2006 г.
///
/// Автор проекта: Конюхов А.
///
/// Unit:        Построитель меню
///
/// Type:        Клиентские скрипты
///
/// @author      Александр Песоцкий
/// @date        23.06.2006 - ...
////////////////////////////////////////////////////////////////////

var g_currentLayer = ""
var g_closeTimer = null

/**
 установка таймера на закрытие dropdown 
*/
function mclosetime()
{
    g_closeTimer = window.setTimeout(closeOpenedPopup, 700);
}

/**
 отменить таймер на закрытие dropdown
*/
function mcancelclosetime()
{
    if(g_closeTimer)
    {
        window.clearTimeout(g_closeTimer);
        g_closeTimer = null;
    }
}

/**
 открыть dropdown
 @param p_sItemID - Id dropdown - а
 @param p_sPos - куда раскрывать : up или down
*/
function showPopupMenu(p_sItemID, p_sPos, obj)
{
    mcancelclosetime()
    if (isPopupOpened(p_sItemID)) {return}
    closeOpenedPopup(p_sItemID)
    eventSender = obj
    popup = document.getElementById(p_sItemID)
    popup.style.width = eventSender.clientWidth
    var bk_frame = document.getElementById("bk_frame")

    popup.style.display = 'block'
    if (p_sPos == "up") {
        if (popup.calc_coords == "0") {
            popup.style.top = calcTop(popup) - popup.clientHeight
            popup.calc_coords = 1 //calcTop(popup)
        }
    }
	g_currentLayer = p_sItemID
	if (!isIe()) return
	
    bk_frame.style.width = popup.clientWidth + 2
    bk_frame.style.height = popup.clientHeight
    bk_frame.style.left = popup.getBoundingClientRect().left - 2
    bk_frame.style.top = calcTop(popup)
    popup.style.zIndex = 2
    bk_frame.style.zIndex = popup.style.zIndex - 1
    bk_frame.style.display = "block"
    bk_frame.onmouseout="closePopupMenu('" + p_sItemID + "')"
    
} // function showPopupMenu

/**
 закрыть текущий открытый dropdown
*/ 
function closeOpenedPopup() 
{
    if (g_currentLayer != "") {closePopupMenu(g_currentLayer)}
}

/**
 закрыть dropdown меню с указанным Id
 @param p_sItemID - Id dropdown - а
*/
function closePopupMenu(p_sItemID) 
{
    document.getElementById(p_sItemID).style.display = "None"
    document.getElementById("bk_frame").style.display = "None"
    g_currentLayer = ""
}

/**
 узнать, открыт ли dropdown с указанным Id
 @param p_sItemID - Id dropdown - а
 @return - true, если открыт
*/
function isPopupOpened(p_sItemID) {
    popup = document.getElementById(p_sItemID)
    return (popup.style.display == "block")
}

/**
 перенести сформированный dropdown в другое место
 @param p_sItemID - Id dropdown - а
*/
function copyTemplate(p_sItemID) 
{
    var objTo = document.getElementById(p_sItemID);
    var objFrom = document.getElementById(p_sItemID + "_template");
    if( objTo != null  && objFrom != null )
        objTo.innerHTML = objFrom.innerHTML
}

/**
 узнать координату элемента относительно левого края
 @param x_ele - элемент
 @return - координата
*/
function calcLeft(x_ele){
	if (!x_ele) return 0
    var x_ret=0;
    var oParent = x_ele.offsetParent;
    if (oParent == null) return 0
    else x_ret=x_ele.offsetLeft + calcLeft(oParent);
    return x_ret;
}

/**
 узнать координату элемента относительно верхнего края
 @param x_ele - элемент
 @return - координата
*/
function calcTop(x_ele){
	if (!x_ele) return 0
    var x_ret=0;
    var oParent = x_ele.offsetParent;
    if (oParent == null) return 0
    else x_ret=x_ele.offsetTop + calcTop(oParent);
    return x_ret;
}
