function lb()
{
    if (document.getElementById)
    {
        bind();
        
        clear_form();

        var el = document.getElementById('makehome');
        if (el && el.addBehavior)
        {
            el.addBehavior('#default#homepage');
            if (typeof(curUrl) != 'undefined' && !el.isHomePage(curUrl))
                el.style.display = 'block';
        }
    }
}

function clear_form()
{
	var fc = document.getElementById("fc");
	if(fc && fc.value.length > 4)
		fc.value = fc.value.substr(0, 4);
}

function mh()
{
    var el = document.getElementById('makehome');
    if (el && el.addBehavior && typeof(curUrl) != 'undefined')
    {
        el.setHomePage(curUrl);

        if (el.isHomePage(curUrl))
            el.style.display = 'none';
    }
}

function bind_method(el, evt, mth, cap)
{
    if (el.addEventListener)
        el.addEventListener(evt, mth, cap);
    else if (el.attachEvent && !cap)
        el.attachEvent('on' + evt, mth);
}

function bind()
{
    buildManualGo();

    var el = document.getElementById('vertical_navigation');
    if (el)
    {
        el = el.lastChild;
        if (el && el.tagName == 'UL')
        {
            var liColl = el.childNodes;
            for (var i = 0; i < liColl.length; i++)
            {
                var a = liColl.item(i).firstChild;
                if (a.tagName == 'A')
                    a.onclick = click_Vertical;
            }
        }
    }

    el = document.getElementById('trygeocombo');
    if (el)
    {
        bind_method(el, 'change', change_TryGeo);

        el = document.getElementById('trygeobtn');
        if (el)
            el.style.display = 'none';
    }

    el = document.getElementById('languages');
    if (el)
    {
        var divs = el.childNodes;
        if (divs)
        {
            for (var i = 0; i < divs.length; i++)
                bind_method(divs.item(i).firstChild, 'click', select_LanguageFilter);
        }
    }

    el = document.getElementById('q');
    if (el)
    {
        if (el.focus && IsHomepage())
        {
            el.focus();
        }
        
        if (el.setAttribute)
        {
            el.setAttribute("autocomplete", "");
            el.setAttribute("VCARD_NAME", "SearchText");
        }

        bind_method(el, 'keypress', keypress_Q, true);
    }

    el = document.getElementById('ads_topC');
    if (el)
    {
        bindAdHandler(el);

        el = document.getElementById('ads_rightC');
        if (el)
            bindAdHandler(el);

        el = document.getElementById('ads_bottomC');
        if (el)
            bindAdHandler(el);
    }

    window.onresize = resizeHandler;
}

function bindAdHandler(el)
{
    for (var i = 0; i < el.childNodes.length; i++)
    {
        var ul = el.childNodes.item(i);
        if (ul.tagName == 'UL')
        {
            for (var j = 0; j < ul.childNodes.length; j++)
            {
                var li = ul.childNodes.item(j);
                if (li.tagName == 'LI')
                {
                    handler = new AdHandler(li);
                    bind_method(li, 'click', handler.click);
                    bind_method(li, 'mouseover', handler.mouseover);
                    bind_method(li, 'mouseout', handler.mouseout);
                }
            }

            break;
        }
    }
}

function AdHandler(el)
{
    var me = el;

    this.click = function(evt)
    {
        var srcEl = evt.srcElement ? evt.srcElement : evt.target;
        if (srcEl.tagName != 'A')
            window.location.href = me.firstChild.firstChild.href;
    }

    this.mouseover = function(evt)
    {
        if (me.firstChild.firstChild.nextSibling)
            window.status = me.firstChild.firstChild.nextSibling.innerHTML.substr(2);
        else
            window.status = me.firstChild.nextSibling.nextSibling.innerHTML;
    }

    this.mouseout = function(evt)
    {
        window.status = '';
    }
}

function keypress_Q(evt)
{
    if (evt.keyCode)
    {
        if (evt.keyCode == 13)
        {
            var q = document.getElementById('q');
            var qf = document.getElementById('qf');
            if (qf && q && q.value != '')
            {
                if (evt.preventDefault)
                    evt.preventDefault();

                qf.submit();
                return false;
            }
        }
    }

    return true;
}

function keydown_Go(evt)
{
    //if the keycode is not enter, up, down, or escape, don't do anything
    if(evt.keyCode)
    {
        var btnOpt = document.getElementById('srch_btn_opt');
        if(!btnOpt)
            return;

        var i = 0;
        var options = btnOpt.childNodes;
        if(evt.keyCode == 13) //enter
        {
            if(btnOpt.style.display == "block") //fire click on selected element
            {
                for(i = 0; i < options.length; i++)
                {
                    if(options.item(i).className == "selected")
                    {
                        if(document.createEvent)
                        {
                            var clickEvent = document.createEvent('MouseEvents');
                            clickEvent.initEvent('click',true,true);
                            options.item(i).dispatchEvent(clickEvent);
                        }
                        else if(options.item(i).fireEvent)
                        {
                            options.item(i).fireEvent('onclick');
                        }
                        break;
                    }
                }

                if (evt.preventDefault)
                    evt.preventDefault();
                    
                return false;
            }

            return;
        }
        
        if(evt.keyCode == 9) //tab
        {
            hideManualGo(btnOpt);
        }

        if(evt.keyCode == 27) //escape
        {
            hideManualGo(btnOpt);
            if (evt.preventDefault)
                evt.preventDefault();

            return false;
        }

        if(evt.keyCode != 38 && evt.keyCode != 40)
            return;

        if(btnOpt.style.display != "block")
            showManualGo(btnOpt);

        var newOption = -1;
        for (i = 0; i < options.length; i++)
        {
            if(options.item(i).className == 'selected')
            {

                if(evt.keyCode == 40) //down key
                {
                    if(i == options.length - 1)
                        newOption = 0; //wrap
                    else
                        newOption = i + 1;
                }
                else if (evt.keyCode == 38) //up key
                {
                    if(i == 0)
                        newOption = options.length - 1; //wrap
                    else
                        newOption = i - 1;
                }
            }
            options.item(i).className = '';
        }

        if(newOption == -1)
            newOption = 0; //we opened the menu by hitting the down or up key

        if(newOption >= 0 && newOption < options.length)
        {
            options.item(newOption).className = 'selected';
        }

        if (evt.preventDefault)
            evt.preventDefault();
            
        return false;
    }
}

function keypress_Go(evt)
{
    if(evt.keyCode)
    {    
        var btnOpt = document.getElementById('srch_btn_opt');
        if(!btnOpt)
            return true;
        if((evt.keyCode == 13 && btnOpt.style.display == 'block') ||
            evt.keyCode == 27 || evt.keyCode == 38 || evt.keyCode == 40)
        {
            if(evt.preventDefault)
                evt.preventDefault();
        
            return false;
        }
    }
    return true;
}

function select_LanguageFilter(evt)
{
    var el = document.getElementById('langlimit');
    if (el)
        el.checked = true;
}

function click_Vertical()
{
    var q = document.getElementById("q").value;
    if (window.encodeURIComponent)
        q = encodeURIComponent(q);
    else
        q = "";

    if (this.href.indexOf('?') > -1)
        this.href = this.href + '&q=' + q;
    else
        this.href = this.href + '?q=' + q;
}

function click_VerticalA(a)
{
    var q = document.getElementById("q").value;
    if (window.encodeURIComponent)
        q = encodeURIComponent(q);
    else
        q = "";

    if (a.href.indexOf('?') > -1)
        a.href = a.href + '&q=' + q;
    else
        a.href = a.href + '?q=' + q;
}

function change_TryGeo(evt)
{
    var el = document.getElementById('trygeocombo');
    if (el)
    {
        if (el.selectedIndex > 0)
        {
			var tgf = document.getElementById('tgf');
			if(tgf)
				tgf.submit();
			return false;
        }
    }
}

function toggleQB(show)
{
    var qb = document.getElementById("qb");
    if(qb)
    {
        if(show && qb.style.display == "none")
        {
            qb.style.display = "block";
            show = true;
        }
        else
        {
            show = false;
            qb.style.display = "none";
        }
    }
    else if (show)
    {
        var q = document.getElementById("q").value;
        if (window.encodeURIComponent)
            q = encodeURIComponent(q);

        var href = location.protocol + '//' + location.host + location.pathname + '?qb=1';
        if (q != '')
            href = href + '&q=' + q;

        var idx = location.search.indexOf('?t=');
        if (idx == -1)
            idx = location.search.indexOf('&t=');

        if (idx != -1)
        {
            var t = location.search.substr(idx + 3);
            idx = t.indexOf('&');
            if (idx != -1)
                t = t.substr(0, idx);

            href = href + '&t=' + t;
        }

        location.href = href;
    }

    var qbCommand = document.getElementById("qb_command");
    if(qbCommand)
    {
        qbCommand = qbCommand.firstChild;
        if(show)
            qbCommand.innerHTML = "-" + qbCommand.innerHTML.substr(1);
        else
            qbCommand.innerHTML = "+" + qbCommand.innerHTML.substr(1);
    }
}

function resizeHandler()
{
    var bWide = document.body.clientWidth > 980;

    var idx = document.body.className.indexOf(" wide");
    if (idx >= 0 && !bWide)
        document.body.className = document.body.className.substr(0, idx);
    else if (idx < 0 && bWide)
        document.body.className = document.body.className + " wide";

    if(typeof(qb_reposition) != 'undefined')
        qb_reposition();
}

function buildManualGo()
{
    if ((navigator.platform.indexOf("Mac") != -1) && ((navigator.userAgent.indexOf("MSIE") > -1) || (navigator.userAgent.indexOf("Safari") > -1)))
        return;
        
    var el = document.getElementById('srch_btn');
    var select = document.getElementById('srch_type');
    if (el && select)
    {
        var btn = document.createElement('button');
        btn.id = 'srch_btn_go';
        bind_method(btn, 'keydown', keydown_Go);
        bind_method(btn, 'keypress', keypress_Go);
        var container = document.createElement('span');
        container.className = 'trbbdr';

        container.insertBefore(btn, null);

        var span = el.parentNode;
        span.parentNode.insertBefore(container, select);
        span.parentNode.removeChild(span);
        container.parentNode.insertBefore(span, container);

        bind_method(btn, 'click', click_ManualGo);
        var menu = document.createElement('div');
        menu.id = 'srch_btn_opt';
        select.parentNode.insertBefore(menu, select);

        var options = select.childNodes;
        for (var i = 0; i < options.length; i++)
        {
            var div = document.createElement('div');
            if (div)
            {
                handler = new ManualGoHighlighter(div, options.item(i).value);
                bind_method(div, 'click', handler.click);
                bind_method(div, 'mouseover', handler.mouseover);
                bind_method(div, 'mouseout', handler.mouseout);
                var text = '';
                if(typeof(options.item(i).textContent) != 'undefined')
                     text = options.item(i).textContent;
                else if(typeof(options.item(i).innerText) != 'undefined')
                     text = options.item(i).innerText;
                else if(typeof(options.item(i).firstChild) != 'undefined' && typeof(options.item(i).firstChild.nodeValue) != 'undefined')
                     text = options.item(i).firstChild.nodeValue;
                var itemText = document.createTextNode(text);
                div.appendChild(itemText);
                menu.appendChild(div);
            }
        }
        select.parentNode.removeChild(select);
    }
}

function click_ManualGo(evt)
{
    var btnOpt = document.getElementById('srch_btn_opt');
    if (btnOpt)
    {
        if (btnOpt.style.display == 'block')
            hideManualGo(btnOpt);
        else
            showManualGo(btnOpt);

        if (evt.preventDefault)
            evt.preventDefault();
        else
            return false;
    }
}

function IsHomepage()
{
    return document.body.className.indexOf("hp") >= 0;
}

function showManualGo(btnOpt)
{
    toggleQB();

    var btnSrch = document.getElementById('srch_btn').parentNode;
    var btnGo = document.getElementById('srch_btn_go').parentNode;
    if (btnSrch && btnGo)
    {
        var e = btnSrch;
        var l = 0;
        var t = 0;
        while (e)
        {
            l += e.offsetLeft;
            t += e.offsetTop;

            if (IsHomepage())
                break;

            e = e.offsetParent;
        }
        btnOpt.style.zIndex = 200;
        btnOpt.style.position = "absolute";
        btnOpt.style.left = (l - 1) + 'px';
        btnOpt.style.top = (t + btnSrch.offsetHeight) + 'px';
        btnOpt.style.display = "block";

        var newWidth = btnSrch.offsetWidth + btnGo.offsetWidth - 1;
        var options = btnOpt.childNodes;
        var i;
        for (i = 0; i < options.length; i++)
        {
            if(options.item(i).offsetWidth > newWidth)
                newWidth = options.item(i).offsetWidth;
        }

        if (newWidth > btnOpt.offsetWidth)
            btnOpt.style.width = newWidth + "px";
        else
            newWidth = btnOpt.offsetWidth;

        for (i = 0; i < options.length; i++)
        {
            var div = options.item(i);
            div.style.width = (newWidth - 12) + "px";
        }
    }
}

function hideManualGo(btnOpt)
{
    btnOpt.style.display = 'none';

    var options = btnOpt.childNodes;
    for (var i = 0; i < options.length; i++)
    {
        options.item(i).className = '';
    }
}

function ManualGoHighlighter(el, act)
{
    var me = el;
    var srch_type = act;

    this.mouseover = function(evt)
    {
        var btnOpt = document.getElementById('srch_btn_opt');
        if (btnOpt)
        {
            var options = btnOpt.childNodes;
            for (var i = 0; i < options.length; i++)
            {
                options.item(i).className = '';
                if (options.item(i) == me)
                    options.item(i).className = 'selected';
            }
        }
    }

    this.mouseout = function(evt)
    {
        me.className = '';
    }

    this.click = function(evt)
    {
        hideManualGo(document.getElementById('srch_btn_opt'));

        var q = document.getElementById("q");
        var qf = document.getElementById("qf");
        var fc = document.getElementById("fc");
        if(fc && fc.value.length <= 4)
           fc.value = fc.value + "2";
        var inputNode = document.createElement("input");
        inputNode.type = "hidden";
        inputNode.name = "srch_type";
        inputNode.value = srch_type;
        q.parentNode.insertBefore(inputNode, q);
        qf.submit();
    }
}
