function getInDocumentOffsetTop()
{
    var totalOffset = 0;
    var ref = this;
    
    while (ref != null)
    {
        totalOffset += ref.offsetTop;
        ref = ref.offsetParent;
    }
    
    return totalOffset;
}

function getInDocumentOffsetLeft()
{
    var totalOffset = 0;
    var ref = this;
    
    while (ref != null)
    {
        totalOffset += ref.offsetLeft;
        ref = ref.offsetParent;
    }
    
    return totalOffset;
}

function inComboBox(event)
{
    var optionItem = window.document.getElementById("optionItem");
    var optionList = window.document.getElementById("optionList");
    var arrowHolder = window.document.getElementById("arrowHolder");
    var inComboBox = false;

    if ((optionItem.getInDocumentOffsetLeft() <= event.clientX && event.clientX <= (optionItem.getInDocumentOffsetLeft() + optionItem.offsetWidth) &&
        optionItem.getInDocumentOffsetTop() <= event.clientY && event.clientY <= (optionItem.getInDocumentOffsetTop() + optionItem.offsetHeight))
        ||
        (optionList.style.display != "none" &&
        optionList.getInDocumentOffsetLeft() <= event.clientX && event.clientX <= (optionList.getInDocumentOffsetLeft() + optionList.offsetWidth) &&
        optionList.getInDocumentOffsetTop() <= event.clientY && event.clientY <= (optionList.getInDocumentOffsetTop() + optionList.offsetHeight))
        ||
        (arrowHolder.getInDocumentOffsetLeft() <= event.clientX && event.clientX <= (arrowHolder.getInDocumentOffsetLeft() + arrowHolder.offsetWidth) &&
        arrowHolder.getInDocumentOffsetTop() <= event.clientY && event.clientY <= (arrowHolder.getInDocumentOffsetTop() + arrowHolder.offsetHeight)))
    {
        inComboBox = true;
    }
    
    return inComboBox;
}

function initializeComboBox()
{
    // prepare comboboxPlaceHolder and comboBox first
    var combobox = window.document.getElementById("combobox");
    var holder = window.document.getElementById("comboboxPlaceHolder");
    holder.style.width = combobox.offsetWidth + "px";
    
    if (isUserAgent("MSIE"))
    {
        // hardcoded offsets
        if (window.document.getElementById("DropDownListCityMaps") == null)
        {
            combobox.style.top = "42px";
        }
        else
        {
            combobox.style.top = "81px";
        }
        holder.style.height = combobox.offsetHeight + 2 + "px";
    }
    else
    {
        if (window.document.getElementById("DropDownListCityMaps") == null)
        {
            combobox.style.top = "40px";
        }
        else
        {
            combobox.style.top = "81px";
        }
        holder.style.height = combobox.offsetHeight + "px";
    }
    
    var optionItem = window.document.getElementById("optionItem");
    optionItem.getInDocumentOffsetLeft = getInDocumentOffsetLeft;
    optionItem.getInDocumentOffsetTop = getInDocumentOffsetTop;
    
    var optionList = window.document.getElementById("optionList");
    optionList.getInDocumentOffsetLeft = getInDocumentOffsetLeft;
    optionList.getInDocumentOffsetTop = getInDocumentOffsetTop;
    
    var arrowHolder = window.document.getElementById("arrowHolder");
    arrowHolder.getInDocumentOffsetLeft = getInDocumentOffsetLeft;
    arrowHolder.getInDocumentOffsetTop = getInDocumentOffsetTop;

    if (window.addEventListener)
    {
        window.addEventListener("click", function (event) {if (!event) {event = window.event}; if (!inComboBox(event)) {window.document.getElementById("optionList").style.display="none";}}, false);
    }
    else if (window.document.body.attachEvent)
    {
        window.document.body.attachEvent("onclick", function (event) {if (!event) {event = window.event}; if (!inComboBox(event)) {window.document.getElementById("optionList").style.display="none";}});
    }
    
    window.document.getElementById("arrow").style.top = (window.document.getElementById("arrowInnerBorderOutset").offsetHeight / 2 - 3) + "px";
    
    // default text & value of comboBox (optionItem)
    optionItem.innerHTML = "Ikone dejavnosti";
    if (g_sLang == 'EN')
        optionItem.innerHTML = "Activity Icons";
 
    optionItem.value = -1;
}

function hideOptionList()
{
    window.document.getElementById("optionList").style.display = "none";
}

function selectComboBoxItem(obj)
{
    if (obj == null)
        return;
        
    window.document.getElementById("optionItem").innerHTML = obj.innerHTML.substring(obj.innerHTML.lastIndexOf(">") + 1, obj.innerHTML.length);
}

function isUserAgent(distinctUserAgentNameSubstring)
{
    return (navigator.userAgent.toLowerCase().indexOf(distinctUserAgentNameSubstring.toLowerCase()) != -1);
}
