function addHandler(type, el, handler) {
    if (el.attachEvent) {
        el.attachEvent('on' + type, handler);
    }
    else {
        el.addEventListener(type, handler, false);
    }
}
function extractLinksFromList(el) {
    var liList = el.getElementsByTagName('li');
    var theList = [];
    for (var i = 0; i < liList.length; ++i) {
        var li = liList[i];
        var aList = li.getElementsByTagName('a');
        for (var j = 0; j < aList.length; ++j) {
            var a = aList[j];
            var item = {};
            item.text = a.innerHTML;
            item.href = a.href;
            theList.push(item);
        }
    }
    return theList;
}
function buildDropDownFromList(list, defaultText, openInNewWindow, addHandlerToList) {
    var select = document.createElement('select');
    if (defaultText) {
        var option = document.createElement('option');
        option.value = '';
        option.innerHTML = defaultText;
        select.appendChild(option);
    }
    for (var i = 0; i < list.length; ++i) {
        var item = list[i];
        var option = document.createElement('option');
        option.value = item.href;
        option.innerHTML = item.text;
        select.appendChild(option);
    }

     if (addHandlerToList) {
        addHandler('change', select, function (e) {
            if (!e) {
                e = window.event;
            }
            var me = e.target || e.srcElement;
            if (me.value) {
                if (openInNewWindow) {
                    window.open(me.value, '');
                } else {
                    top.location.href = me.value;
                }
            }
        });
    }
    return select;
}
function enhanceRedirectSelector(titleId, listId) {
    _enhanceRedirectSelector(titleId, listId, false, true);
}
function enhanceRedirectSelectorNewWindow(titleId, listId) {
    _enhanceRedirectSelector(titleId, listId, true, true);
}
function _enhanceRedirectSelector(titleId, listId, openInNewWindow, addHandlerToList) {
    var title = document.getElementById(titleId);
    var selector = document.getElementById(listId);
    var theList = extractLinksFromList(selector);
    var dd;
    dd = buildDropDownFromList(theList, title.innerHTML, openInNewWindow, addHandlerToList);
    selector.parentNode.insertBefore(dd, selector);
    selector.parentNode.removeChild(selector);
    title.parentNode.removeChild(title);
}

/// [DC] New function that adds the event to the onclick of the button instead of to the onchange of the select list
function enhanceRedirectSelectorWithButton(titleId, listId, buttonId, openInNewWindow) {
    var title = document.getElementById(titleId);
    var selector = document.getElementById(listId);
    var theList = extractLinksFromList(selector);
    var button = document.getElementById(buttonId);
    var dd;
    dd = buildDropDownFromList(theList, title.innerHTML, openInNewWindow, false);
    selector.parentNode.insertBefore(dd, selector);
    selector.parentNode.removeChild(selector);
    title.parentNode.removeChild(title);

    // Add the onclick handler to the button
    addHandler('click', button, function (e) {
        if (!e) {
            e = window.event;
        }

        if (dd.value != "") {
            if (openInNewWindow) {
                window.open(dd.value, '');
            } else {
                top.location.href = dd.value;
            }
        }
    });
}
