﻿/**
 * Konstruktor
 */
var QueryBuilder = new function() {
}

/******************************************************************************
***                              Hauptfunktionen                            ***
******************************************************************************/

/**
 * Fügt den angebenen Text in das Suchfeld ein
 * @param string strText Der einzufügende Text
 * @param boolean walkback Gibt an ob der Cursor zurück gesetzt wird oder nicht
 */
QueryBuilder.appendQuery = function(strText, walkback) {
    var obj = document.getElementById('words');

    if (obj != null) {
        // ---
        obj.focus();

        /* für Internet Explorer */
        if (typeof document.selection != 'undefined') {
            /* Einfügen des Formatierungscodes */
            var range = document.selection.createRange();
            var insText = range.text;
            range.text = strText;

            /* Anpassen der Cursorposition */
            range = document.selection.createRange();

            if (insText.length == 0) {
                if (walkback)
                    range.move('character', -2);
            }
            else {
                if (walkback)
                    range.moveStart('character', insText.length);
            }
            range.select();
        }

        /* für neuere auf Gecko basierende Browser */
        else if (typeof obj.selectionStart != 'undefined') {
            /* Einfügen des Formatierungscodes */
            var start = obj.selectionStart;
            var end = obj.selectionEnd;

            var insText = obj.value.substring(start, end);

            obj.value = obj.value.substr(0, start) + strText + obj.value.substr(end);

            /* Anpassen der Cursorposition */
            var pos;


            if (insText.length == 0)
                pos = start + strText.length;

            else
                pos = start + insText.length;

            obj.selectionStart = pos;

            if (walkback) {
                obj.selectionEnd = pos - 2;
            }
            else {
                obj.selectionEnd = pos;
            }

        }

        /* für die übrigen Browser */
        else {
            obj.value += strText;
        }

    }
}

/******************************************************************************
***                          Funktionen der Buttons                         ***
******************************************************************************/

/**
 * Der Hilfe Button
 */
QueryBuilder.showHelp = function() {
    ShowHelp('QueryBuilderControl');
}

/**
* Der Reset Button
*/
QueryBuilder.reset = function() {
    $get('words').value = '';
}

/**
 * Der Schließen Button
 */
QueryBuilder.close = function() {
    entferneAktuelleSuchOption();
    var queryBuilder = $get('queryBuilder');

    if (queryBuilder == null || queryBuilder.style.visibility != 'visible') {
        return;
    }
    $get('queryBuilder').style.visibility = 'hidden';
}

/******************************************************************************
***                              Hilfsmethoden                              ***
******************************************************************************/

/**
 * Zeigt das Control erstmalig an
 */
QueryBuilder.init = function() {    
    if ($get('queryBuilder').innerHTML.search(/\S/) == -1) {
        //Nur das Container-Element vorhanden, dann per AJAX abholen
        LoadXml('17', null, null, null, null, false, QueryBuilder.onLoadedXml);
    } else {  
        ToggleElement('queryBuilder');        
    }
    OptionenLayer.close();
    markiereAktuelleSuchOption(1);
}

/**
 * Wird nach dem fertig ausgeführten Ajax-Request ausgeführt
 */
QueryBuilder.onLoadedXml = function(executor, eventArgs) {
    OnLoadedXml(executor, eventArgs);
    $get('queryBuilder').style.visibility = 'visible';
}