(function(){
document.body.className += ' jsActive';
function request(method, url, async) {
    var xhr=window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    xhr.open('GET', url, true);
    if (async) {
        xhr.onreadystatechange=function() { async(xhr); };
    }
    xhr.send(null);
    return xhr;
}

Suggest=function(field, url, msg, mc) {
var su=document.getElementById(field);
if (!su) { return; }
var sc=document.getElementById('suggestions');
if (!sc) {
    var sc=document.createElement('div');
    sc.id = 'suggestions';
    var sb = su, w;
    while (sb && sb.type != 'submit') { sb = sb.nextSibling; }
    sc.style.right = (w = (sb || { offsetWidth: 83 }).offsetWidth - 0.5) + 'px';
    su.style.paddingRight = (w+25) + 'px'
    su.parentNode.appendChild(sc);
}

function suggestfill() {
    var su=document.getElementById(field);
    request('GET', url+encodeURIComponent(su.value), function(xhr) {
        if (xhr.readyState!==4) { return; }
        var r=[], found=new RegExp('('+su.value.replace(/[^0-9a-z]/g, function(x){ return '\\x'+x.charCodeAt(0).toString(16); })+')', 'gi');
        var inner = (xhr.responseText || '').replace(/\"([^\"]+)\"\,(\d+)/g, function(f, s, v) { if (f) { r.push('<li title="'+s+'"><span class="itemName">'+s.replace(found, '<b>$1</b>')+'</span>'); }}) && r.length ? '<ul>'+r.join('')+'</ul><p>'+msg+'</p>' : '';
        sc.className = r.length ? 'active' : '';
        sc.innerHTML = inner;
        sc.si=sc.getElementsByTagName('li');
        var sl=sc.si.length;
        while (sl--) { suggestevents(sc.si[sl]); }
    });
}

function suggestevents(el) {
    el.onmousedown = function() {
        su.value = this.title;
        ((document.getElementsByName('mc')||[])[0]||{}).value=mc;
        su.form.submit();
    }
    el.onmouseover = function() { var sl=activeindex(); if (!isNaN(sl)) { sc.si[sl].className=''; }; this.className='active'; }
    el.onmouseout = function() { this.className=''; }
}

function activeindex() {
    if (!sc.si) { return; }
    var sl=sc.si.length;
    while (sl--) { if (sc.si[sl].className==='active') { return sl; }}
}

su.onkeyup = function(evt) {
    var e = evt || window.event;
    var key = (e.which || e.keyCode || e.charCode);
    if (su.value && su.value.length && (key == 8 || key == 46 || key > 48)) {
        if (su.sto) { window.clearTimeout(su.sto); }
        su.sto=window.setTimeout(function() { suggestfill(); }, 120);
    } else {
        if (!su.value.length) { sc.innerHTML = ''; sc.className=''; }
    }
}

su.onkeydown = function(evt) {
    if (!sc.si || !sc.si.length) { return; }
    var e = evt || window.event;
    var key = (e.which || e.keyCode || e.charCode);
    if (key == 38) {
        var sl=sc.si.length, si=activeindex();
        if (typeof(si)!=='number') { sc.si[sl-1].className='active'; return; }
        sc.si[si].className=''; sc.si[(sl+si-1)%sl].className='active';
    } else if (key == 40) {
        var sl=sc.si.length, si=activeindex();
        if (typeof(si)!=='number') { sc.si[0].className='active'; return; }
        sc.si[si].className=''; sc.si[(si+1)%sl].className='active';
    } else if (key == 13) {
        var si=activeindex();
        if (typeof(si)==='number') {
            su.value=sc.si[si].title;
            ((document.getElementsByName('mc')||[])[0]||{}).value=mc;
            su.form.submit();
        }
    } else if (key == 27) { su.blur(); }
}

su.onblur = function(o) { return function() { if (o) {o();}; sc.className=''; }}(su.onblur);
su.onfocus = function(o) { return function() { if (o) {o();}; if (sc.getElementsByTagName('li').length) { sc.className='active'; } }}(su.onfocus);
}

SearchReset = function(input, title) {
    if (typeof input == 'string') { input = document.getElementById(input); }
    if (!input || !input.parentNode) { return; }
    var reset = document.createElement('input');
    reset.type = 'reset';
    reset.className = 'searchFormReset';
    var submit = input.nextSibling; while (submit.type != 'submit') { submit = submit.nextSibling; }
    reset.style.right = (submit.offsetWidth + 5) + 'px';
    reset.title = title || reset.value || '';
    reset.check = function() {
        reset.form.className = reset.form.className.replace(/\bfilled\b/g, '') + (input.value == '' ? '' : ' filled');
    }
    input.parentNode.insertBefore(reset, input.nextSibling);
    reset.onclick = function() {
        input.value = '';
        reset.check();
        if (typeof input.onkeyup == 'function') { input.onkeyup({ which: 0 }); }
        input.focus();
        return false;
    }
    input.onkeypress = function() { window.setTimeout(reset.check, 95); }
    reset.check();
}

AdvSearch = function(link) {
    var link = document.getElementById(link) || { getAttribute: function(){} },
        url = link['data-ajax-url'] || link.getAttribute('data-ajax-url');
    if (!link || !url) { return; }
    link.onclick = function() {
        if (!document.getElementById('advancedSearch')) {
            link.parentNode.className = 'loading';
            document.body.style.cursor = "wait";
            request('GET', url, function(xhr) {
                if (xhr.readyState!==4) {
                    document.body.style.cursor = "auto";
                    return;
                }
                link.parentNode.className = 'open';
                var node = document.createElement('div');
                node.innerHTML = xhr.responseText;
                document.getElementById('content').insertBefore(node.getElementsByTagName('div')[0], document.getElementById('skipContent').nextSibling);
                document.body.style.cursor = "auto";
            });
        } else {
            var style = document.getElementById('advancedSearch').style, hidden = !!style.display;
            style.display = hidden ? '' : 'none';
            link.parentNode.className = link.parentNode.className.replace(/\bopen\b/g, '');
            link.parentNode.className += hidden ? ' open' : '';
        }
        return false;
    }
}

EditSettings = function(elem) {
    var link = document.getElementById(elem);
    var tableRow = document.getElementById(elem+'Settings');
    if (!link || !tableRow) { return; }
    tableRow.style.display = link.className.search(/open/) >= 0 ? '' : 'none';
    link.onclick = function() {
        var hidden = !!tableRow.style.display;
        tableRow.style.display = hidden ? '' : 'none';
        link.className = link.className.replace(/\bopen\b/g, '');
        link.className += hidden ? ' open' : '';
        return false;
    }
    if (location.hash.indexOf(elem + '=open') != -1) { link.onclick(); }
}

LimitLanguages = function(name, limit, msg) {
    var langs = document.getElementsByName(name), lang = 0, l = 0;
    while ((lang = langs[l++])) {
        lang.onmouseup = lang.onchange = lang.onkeyup = lang.onblur = lang.onclick = function() {
            if (this.disabled || !this.checked) { return; }
            var langs = document.getElementsByName(name), lang = 0, l = 0, lcount = 0;
            while ((lang = langs[l++])) {
                if (lang.disabled) { lcount++; continue; }
                if (lang.checked) { lcount++; }
            }
            if (lcount > limit) {
                this.checked = false;
                alert(msg);
            }
        }
    }
    var langint = document.getElementById('languageInterface');
    if (!langint) { return; }
    langint.onchange = function() {
        var langs = document.getElementsByName(name), lang = 0, l = 0;
        while ((lang = langs[l++])) {
            if (!lang.disabled && lang.value == this.options[this.selectedIndex].value.replace(/lang_/,'')) {
                lang.setAttribute('disabled', lang.disabled = 'disabled');
                lang.setAttribute('checked', lang.checked = 'checked');
                lang.parentNode.className = 'default';
            } else if (lang.disabled && lang.value != this.options[this.selectedIndex].value) {
                lang.checked = lang.disabled = false;
                lang.removeAttribute('disabled');
                lang.removeAttribute('checked');
                lang.parentNode.className = '';
            }
        }
    }
}

hideEbayHint = function(elem) {
    var link = document.getElementById(elem);
    var hint = document.getElementById('hint');
    if (!link || !hint) { return; }
    hint.style.display = document.cookie.search(/hideEbayHint=1/) >= 0 ? 'none' : '';
    link.onclick = function() {
        var hidden = !!hint.style.display;
        hint.style.display = hidden ? '' : 'none';
        document.cookie = "hideEbayHint=1";
        return false;
    }
}

NavInit = function(field) {
    var list = document.getElementById('navSearches'), su = document.getElementsByName(field)[0];
    if (!list || !su) { return; }
    var items = list.getElementsByTagName('a'), item = 0, i = 0;
    while ((item = items[i++])) {
        item.onclick = function() {
            var su = (document.getElementsByName(field)[0] || {});
            if (su.value) { this.href += (this.href.indexOf('?') > 0 ? '&' : '?') + field + '=' + encodeURIComponent(su.value); }
            return true;
        }
    }
}

function initFocussing() {
    function setFocus(inp) {
        if (inp.setSelectionRange) {
            inp.setSelectionRange(inp.value.length, inp.value.length);
        } else {
            var r = inp.createTextRange();
            r.collapse(true);
            r.moveEnd('character', inp.value.length);
            r.moveStart('character', inp.value.length);
            r.select();
        }
        inp.focus();
    }
        var inp = document.getElementById('searchTextTop');
        if (!inp || !inp.focus) { return; }
        inp.value = (inp.value+' ').replace(/^\s+/, '').replace(/\s+$/, ' ');
        document.onkeydown = (function(o) { return function(e) {
            if (!e) { e = window.event; }
            var elName = (e.target||e.srcElement||{nodeName:''}).nodeName.toLowerCase();
            if (elName=='input' || elName=='select' || e.keyCode<49 || e.keyCode>127 || e.ctrlKey || e.altKey) { return; }
            setFocus(inp);
        }})(document.onkeydown);
        if (!inp.value) { return inp.focus(); }
        if ((document.referrer.match(new RegExp('https?://(.+?)/'))||[])[1] !== location.host) {
            setFocus(inp);
        }
}

function checkSearchfield() {
    if (!document.getElementById('searchTextTop') && ++checkSearchfield.counter<15) {
        return window.setTimeout(checkSearchfield, 100);
    }
    initFocussing();
}

checkSearchfield.counter = 0;
checkSearchfield();
})();

SearchPlugin = new function(){
    var links = document.getElementsByTagName('link');
    for (var l = 0; l < links.length; l++) {
        if (links[l].rel == 'search') { this.pluginlink = links[l].href; }
    }
    try {
        this.supported = (this.pluginlink && window.external && ('AddSearchProvider' in window.external));
        this.alreadyInstalled = (this.pluginlink && window.external && ('IsSearchProviderInstalled' in window.external) &&
            (0 != (window.external.IsSearchProviderInstalled(this.pluginlink) || 0)));
    } catch(e) {};
    this.install = function(){
        if (!this.supported || this.alreadyInstalled) { return; }
        window.external.AddSearchProvider(this.pluginlink);
    }
    if (this.supported && !this.alreadyInstalled) {
        document.body.className += ' pluginCanBeInstalled';
    }
}

