var _searchengines = new Array();

registerPlugin('Search');

/**
 * Übergibt Schlüsselwörter an eine andere Internetseite (Suchmaschine)
 * @author Alexander Wegener
 */
function Search_postRequest(engine_id) {
    
    // Default-Searchengine suchen, falls keine Suchmaschine angegeben
    if (!engine_id) {
        for (var engine_id in _searchengines) if (isInt(engine_id)) {  
            if (_searchengines[engine_id]['defaultEngine']) {
                break;
            }
        }
    }
    
    var keywords = $('SearchKeywords').value;
    
    if (keywords) {
        var searchstring = _searchengines[engine_id]['searchstring'];
        
        
        var array_keywords = keywords.split(',');
        
        searchstring = searchstring.replace(/##KEYWORDS##/g, escape(keywords));
                                                                                 
        var re;
        for (var i=0; i<array_keywords.length; i++) {                   
            re = new RegExp('##KEYWORDS\\[' + i + '\\]##', 'g');
            searchstring = searchstring.replace(re, escape(array_keywords[i]));    
        }
        
        // Alle nicht ersetzten Keyword-Patterns löschen
        searchstring = searchstring.replace(/##KEYWORDS\[\d\]##/g, '');
    
    } else {
        var searchstring = _searchengines[engine_id]['indexurl'];
    }
    
    // Entweder im gleichen oder in einem neuen Fenster Suchanfrage öffnen
    if ($('SearchNewWindow').checked) {
        var jetzt = new Date();
        window.open(searchstring, 'Search'+jetzt.getTime());
    } else {
        window.location.href = searchstring;
    }
} 


/**
 * Initialisert die Suchfunktion
 * @author Alexander Wegener
 */
function Search_init() {
    if ($('SearchKeywords')) {
        $('SearchKeywords').focus();
    }
}

function Search_setDefaultEngine(engine_id) {
    if (!isDropping()) {
        for (var engine_id2 in _searchengines) if (isInt(engine_id2)) {
            if (_searchengines[engine_id2]['defaultEngine']) {
                _searchengines[engine_id2]['defaultEngine'] = false;
                $('SearchButton_' + engine_id2).className = '';    
            }
        }
        
        new Ajax.Request(siteWebroot + 'Searchbuttons/setDefault/' + engine_id);

        _searchengines[engine_id]['defaultEngine'] = true;
        $('SearchButton_' + engine_id).className = 'defaultEngine'; 
    }   
}


/**
 * Setzt die Suchbuttons in den personalisieren Modus
 * @author Alexander Wegener
 */
function Search_switchMode(mode) {
    if (mode == 'personalize') {
    
        for (var engine_id in _searchengines) if (isInt(engine_id)) {
            _searchengines[engine_id]['buttonObject'] = $('SearchButton_' + engine_id).replace(
                '<div id="SearchButton_' + engine_id + '"' +
                (_searchengines[engine_id]['defaultEngine']? ' class="defaultEngine"': '') +
                ' onclick="Search_setDefaultEngine(' + engine_id + ')" >' +
                $('SearchButton_' + engine_id).innerHTML + '</div>');
            Tooltip.disable('SearchButton_' + engine_id);
        }
    
        Sortable.create('SearchButtons',
                        {
                         tag: 'div',   
                         dropOnEmpty: true,
                         overlap: 'horizontal',
                         zindex: 1000,
                         containment: ['SearchButtons', 'RecycleBin'],
                         constraint: false,
                         "onUpdate": function(elm) {  
                                                    setDropping(true);
                                                    window.setTimeout("setDropping(false);", 100);
                                                 }
                        });

    } else {
        Sortable.destroy('SearchButtons');
        
        for (var engine_id in _searchengines) if (isInt(engine_id)) {
            $('SearchButtons').replaceChild(_searchengines[engine_id]['buttonObject'], $('SearchButton_' + engine_id));
            Tooltip.enable('SearchButton_' + engine_id);
            if (!_searchengines[engine_id]['defaultEngine']) {
                $('SearchButton_' + engine_id).className = '';
            } else {
                $('SearchButton_' + engine_id).className = 'defaultEngine';
            }
        }
    }    
}

function Search_updateSearchbuttons(json) {
    Search_switchMode('use'); 
    $('SearchButtons').replace('<div id="SearchButtons">' + json.HTML.unescapeHTML() + '</div>');
    // REPLACE benutzt Timeout von 10 um Scripts zu evaluieren, daher muss hier auch gewartet werden
    setTimeout("Search_switchMode('personalize')", 100);
    return true;
}
