﻿var curOpen = null;
var curOpenLink = null;
var curOptPic = null;
var hasLinkBorder = false;

function drop(id, src, down, optPic, linkBorder)
{
    var el = document.getElementById(id);
    hasLinkBorder = linkBorder;
    if (el.style.display == 'block')
    {
        tearDown(el);
        if (linkBorder)
            unactivateLink();
    }
    else 
    {
        if (curOpen)
        {
            curOpen.style.display = 'none';
            if (linkBorder)
                unactivateLink();
        }
        if (!down)
        {
            var left = findPos(src)[0];
            var srcHeight = src.offsetHeight;
            el.style.left = (left - 168) + "px";
            el.style.bottom = (srcHeight - 1) + "px";
            el.style.boxShadow = "3px -2px 6px #bbb";
            el.style.borderBottomLeftRadius = "0";
            if (linkBorder)
            {
                src.style.border = "1px solid #ccc";
                src.style.padding = "1px 0px";
            }
        }
        else
        {
            if (linkBorder)
            {
                src.style.border = "1px solid #ccc";
                src.style.padding = "1px 0px 4px 0px";
            }
            el.style.borderTopLeftRadius = "0";
        }
        el.style.display = 'block';
        curOpen = el;
        curOpenLink = src;
        if (optPic)
        {
            var pic = document.getElementById(optPic);
            curOptPic = pic ? pic : null;
        }
    }  
}

function unactivateLink(link)
{
    curOpenLink.style.border = "0";
    curOpenLink.style.borderTop = "1px dotted #ccc";
    curOpenLink.style.borderBottom = "1px dotted #ccc";
    curOpenLink.style.padding = "1px 1px";
}

function check(e)
{
    if (!curOpen)
        return;
    var target = (e && e.target) || (event && event.srcElement);
    if (!isSelfOrParent(target))
    {
        if (curOpen.style.display == "block")
        {
            tearDown(curOpen);
            if (hasLinkBorder)
                unactivateLink();
        }
    }
}

function tearDown(el)
{
    el.style.display = "none";
    curOpen = null;
}

function isSelfOrParent(t)
{
    if (t == curOpen || t == curOpenLink || t == curOptPic)
        return true;
    var cur = t.parentNode;
    var i = 0;
    while(cur.parentNode)
    {
        if (cur == curOpen)
            return true;
        cur = cur.parentNode;
    }
    return false;
} 
