var search_text = "";
var es_opt_change = false;


function initSearch1() {
    if ($('mt').value != "") $('search_text_hint').hide();

    new Form.Element.Observer('mt', 0.5, newAutocompleter);

    jQuery('#search_result').dialog({
        autoOpen: false,
        width: 610,
        modal: false,
        resizable: false,
        position: [((jQuery('#head').position().left)-16+250),145] ,  /* Standardposition Viewport; bei Aufruf neu an Page ausrichten! */
        draggable: false,
        //show: "blind", /* stört bei Aufbau, wilde Positionierung */
        hide: "blind",
        close: function(event, ui) { 
            //$('search_result').update('');
            if (es_opt_change) {
                es_opt_change = false;
                redirSelection('&v='+$('es_use_vt').value); /* VT mit übertragen, falls gewechselt */
            }
        }
    });
}

/*alt:*/ // function getMTitelParam() { return 'mt=' + $('mt').value + '&hk=' + document.forms.sel_vt.use_vt.value + '&ac=' + ac + '&p=va'; }

var intervReposDlg;
var repos_count = 1;
function repositionDialog() {
    if (jQuery("#search_result").dialog("isOpen")) {
        var topval = jQuery('#search_result').parent().css('top');
        var leftval = jQuery('#search_result').parent().css('left');
        topval = topval.substring(0, topval.length-2);
        leftval = leftval.substring(0, leftval.length-2);
        if (topval != 145) jQuery('#search_result').parent().css('top', '145px');
        var headpos = (jQuery('#head').position().left) - 16;
        //if (headpos < 15) headpos = 0;
        /*if (leftval != 250)*/ jQuery('#search_result').parent().css('left', (headpos+250)+'px');
        repos_count++;
        if (repos_count > 3) {
            window.clearInterval(intervReposDlg);
            repos_count = 1;
        }
    }
}

function newAutocompleter() {
    if ($('mt').value.length >= 3) {
        if ($('mt').value != search_text) {
            if (jQuery("#search_adv").dialog("isOpen")) {
                jQuery("#search_adv").dialog("close");
            }
            search_text = $('mt').value;
            
            var post_params = $H({ 'mt': $('mt').value });
            if (jQuery("#search_result").dialog("isOpen") && $('es_use_vt')) {
                //alert('1');
                post_params.update({ 'hk': $('es_use_vt').value });
            }
            else {
                if (document.forms.sel_vt/*.use_vt*/) { // buggy
                    post_params.update({ 'hk': document.forms.sel_vt.use_vt.value });
                }
                else {
                    post_params.update({ 'hk': '0' }); // TODO: macht noch Probs: wenn kein VT-Wechsler auf Seite, dann erste Suche leer
                }
            }
            
            if (true) post_params.update({ 'p': pg }); // page
            /* erst mal Video-Format (ggf. DVD/BR), wird dann unten noch ggf. in Game geändert */
            if ($('m')) {
                post_params.update({ 'm': $('m').value });
            }
            else {
                post_params.update({ 'm': 'db' });
            }
            if ($('sg')) {
                post_params.update({ 'sg': $('sg').value });
                if ($('sg').value == 'sp_vid' || $('sg').value == 'sp_dar' || $('sg').value == 'sp_reg') {
                    if ($('es_v_m')) post_params.update({ 'm': $('es_v_m').value });
                }
                else if ($('sg').value == 'sp_gam') {
                    if ($('es_g_m')) post_params.update({ 'm': $('es_g_m').value });
                }
            }
            if ($('a')) {
                post_params.update({ 'a': $('a').value });
            }
            
            new Ajax.Request("ajax.php", {
                method: 'post',
                parameters: post_params,
                onSuccess: function(transport) {
                    $('search_result').update(transport.responseText);
                    // Position neu bestimmen, wenn gescrollt
                    // Positionierung geht hier nicht mit dieser Variante (auch nicht nach open des Dialog),
                    // denn irgendwo wird bei zu kleinem Fenster/Viewport der Dialog verschoben und überlagert
                    // dann u.U. das Eingabefeld - daher per Interval neu positionieren
                    searchResultSwitchTo($('sg').value);
                    window.clearInterval(intervReposDlg);
                    intervReposDlg = window.setInterval("repositionDialog()", 500);
                    jQuery("#search_result").dialog("open");
                    $('mt').focus();
                }
            });
        }
    }
    else {
        if (jQuery("#search_result").dialog("isOpen")) {
            jQuery("#search_result").dialog("close");
        }
        window.clearInterval(intervReposDlg);
        $('mt').focus();
        search_text = $('mt').value;
    }
}


function redirSelection(pre_querystr) {
    var querystr = '';
    if (pre_querystr != '' ) querystr = '&' + pre_querystr;
    with (document.forms.form_sel) {
        if (document.forms.form_sel.g) {
            if (g.value != '') querystr += "&g=" + g.value + "";
        }
        if (mt2.value != '') {
            querystr += "&mt=" + /*encodeURIComponent*/(mt2.value) + "";
            switch (sg.value) {
                case 'sp_dar': querystr += "&b=d"; break;
                case 'sp_reg': querystr += "&b=r"; break;
                case 'sp_gam': querystr += "&b=g"; break;
                default: querystr += "&b=f"; break;                
            }
        }
        if (document.forms.form_sel.s) {
            if (s.value != '') querystr += "&s=" + encodeURIComponent(s.value) + "";
        }
        if (document.forms.form_sel.m) {
            if (m.value != '') {
                if (sg.value == 'sp_gam' && m.value != 'a')
                    querystr += "&m=" + (m.value) + "";
                else {
                    if (sg.value != 'sp_gam' && m.value != 'db')
                        querystr += "&m=" + (m.value) + "";
                }
            }
        }
        if (document.forms.form_sel.tr) { if (tr.value != '' && tr.value != '2') {
            querystr += "&tr=" + (tr.value) + "";
        } }
        if (document.forms.form_sel.co) { if (co.value != '' && co.value != '2') {
            querystr += "&co=" + (co.value) + "";
        } }
        
        if (document.forms.form_sel.a) { if (a.value != '') {
            /*console.log(a.value);
            if (sg.value == 'sp_gam' && a.value != 'ga') {
                a.value = 'ga';
            }
            else if (sg.value != 'sp_gam' && a.value == 'ga') {
                a.value = 'vi';
            }*/
            //console.log(a.value);
            querystr += "&a=" + (a.value) + "";
        } }
        /*if (document.forms.form_sel.e) { if (e.value != '') {
            querystr += "&e=" + (e.value) + "";
        } }*/
        
        /* Auswahl Zielseite - wenn nichts angegeben, dann default aufrufen */
        switch (pg) {
            case 'videos/all': 
            case 'videos/new':
            case 'videos/preview':
            case 'videos/upcoming':
            case 'videos/tipp':
            case 'videos/charts':   if (sg.value == 'sp_gam') { pg = 'games/all'; }
                                    else {
                                        switch (pg) {
                                            case 'videos/new':
                                            case 'videos/preview':
                                            case 'videos/upcoming': pg = pg;
                                                                    break;
                                            default: pg = 'videos/all';
                                        }
                                    }
                                    break;
            case 'videoshc/all': 
            case 'videoshc/new':
            case 'videoshc/upcoming':  if (sg.value == 'sp_gam') { pg = 'games/all'; }
                                        else {
                                            switch (pg) {
                                                case 'videoshc/new':
                                                case 'videoshc/upcoming': pg = pg;
                                                                        break;
                                                default: pg = 'videoshc/all';
                                            }
                                        }
                                        break;
            case 'games/all':
            case 'games/new':
            case 'games/preview':
            case 'games/upcoming':  if (sg.value != 'sp_gam') { pg = 'videos/all'; }
                                    else {
                                        switch (pg) {
                                            case 'games/new':
                                            case 'games/preview':
                                            case 'games/upcoming': pg = pg;
                                                                    break;
                                            default: pg = 'games/all';
                                        }
                                    }
                                    break;
            case 'myaccount/viewedf':
            case 'myaccount/ratedf': 
            case 'myaccount/prebookf':
            case 'myaccount/viewedg':
            case 'myaccount/ratedg': 
            case 'myaccount/prebookg': if (mt2.value != "") {
                                          if (sg.value == 'sp_gam') pg = 'games/all';
                                          else pg = 'videos/all';
                                       }
                                       break;
            case 'myvideothek/titlelist_total': 
            case 'myvideothek/titlelist_actual': 
            case 'myvideothek/titlelist_prev':   //pg = 'myvideothek/titlelist_total';
                                                 break;
            default: 
                if (sg.value == 'sp_gam') pg = 'games/all';
                else pg = 'videos/all';
                break;
        }
    }
    window.location.href = 'index.php?p=' + pg + '' + querystr;
}

function searchResultSwitchTo(switchTo) {
    // SEC
    $('sp_vid').hide();
    $('search_area_pfeil_sp_vid').src = "images/general/1x1w.gif";
    $('sp_dar').hide();
    $('search_area_pfeil_sp_dar').src = "images/general/1x1w.gif";
    $('sp_reg').hide();
    $('search_area_pfeil_sp_reg').src = "images/general/1x1w.gif";
    $('sp_gam').hide();
    $('search_area_pfeil_sp_gam').src = "images/general/1x1w.gif";
    /*$('sp_hc').hide();
    $('search_area_pfeil_sp_hc').src = "images/general/1x1w.gif";*/
    $(switchTo).show();
    if (switchTo == 'sp_vid' || switchTo == 'sp_dar' || switchTo == 'sp_reg') {
        $('search_filter_vid').show();
        $('search_filter_gam').hide();
    }
    else if (switchTo == 'sp_gam') {
        $('search_filter_gam').show();
        $('search_filter_vid').hide();
    }
    else {
        $('search_filter_gam').hide();
        $('search_filter_vid').hide();
    }
    $('search_area_pfeil_'+switchTo).src = "images/general/pfeil-links.gif";
    $('sg').value = switchTo;
    $('mt').focus();
}

function setSearchFilter(area) {
    //alert('setSearchFilter: '+area);
    if (area == 'vid') {
        vt_key = $('es_use_vt').value;
        mtype = $('es_v_m').value;
        if ($('m')) $('m').value = mtype;
        if ($('use_vt')) $('use_vt').value = vt_key;
        if ($('a')) {
            if ($('a').value != 'vi' && $('a').value != 'hc') $('a').value = 'vi';
        }
        es_opt_change = true; // Felder wurden geändert, bei ES-Schließen reload
        search_text = ""; // Suchtext leeren um Suche zu provozieren
        newAutocompleter();
    }
    else if (area == 'gam') {
        vt_key = $('es_use_vt').value;
        mtype = $('es_g_m').value;
        if ($('m')) $('m').value = mtype;
        if ($('use_vt')) $('use_vt').value = vt_key;
        if ($('a')) $('a').value = 'ga';
        es_opt_change = true; // Felder wurden geändert, bei ES-Schließen reload
        search_text = ""; // Suchtext leeren um Suche zu provozieren
        newAutocompleter();
    }
}

function startSearch(field, keywords) {
    //alert('Suche starten mit: ' + keywords + "\n" + decodeURIComponent(keywords) + "\nSuchgebiet: " + $('sg').value);
    es_opt_change = false; // zurücksetzen, weil sonst dialog.onclose ausgeführt wird
    jQuery("#search_result").dialog("close");
    search_text = decodeURIComponent(keywords);   /* Auswahl übernehmen, damit nicht neue Suche gestartet wird */
    $('mt').value = decodeURIComponent(keywords);
    $('mt2').value = keywords;
    if ($('a')) {
        if (field == 'g') $('a').value = 'ga';
        if (field == 'f') {
            if ($('a').value != 'vi' && $('a').value != 'hc') $('a').value = 'vi'; // vi | hc
        }
    }
    redirSelection('b='+field+'&v='+$('es_use_vt').value); // füge noch Feld zu Querystring, dann redirSelection
}

function tooglePageSelect(element, focuselem) {
    if ($(element).hasClassName('active')) {
        $(element).removeClassName('active');
        //$(element).hide();
        new Effect.SlideUp(element, { duration: 0.4 });
    }
    else {
        $(element).addClassName('active');
        //$(element).show();
        new Effect.SlideDown(element, { duration: 0.4 });
        $$(focuselem+'.c_'+element)[0].focus();   // TODO absichern wenn Element fehlt
    }
}

