/**
 * GENIOS JavaScript core
 *
 * @author  Stefan Vogt <s.vogt@edelweiss72.de>
 *
 * Conventions:
 * Variables in camelCase
 * Classes in PascalCase
 * Function/Methods in camelCase
 */

GENIOS = {};

GENIOS.SearchUrls = {}

GENIOS.layerMyGeniosStatus = 0;
GENIOS.layerMyGenios = false;

// findet die absolute x Position eines Elementes raus
GENIOS.getAbsoluteX = function(elm) {
    var x = 0;
    if (elm && typeof elm.offsetParent != "undefined") {
        while (elm && typeof elm.offsetLeft == "number") {
            x += elm.offsetLeft;
            elm = elm.offsetParent;
        }
    }
    return x;
}

// findet die absolute y Position eines Elementes raus
GENIOS.getAbsoluteY = function(elm){
    var y = 0;
    if (elm && typeof elm.offsetParent != "undefined") {
        while (elm && typeof elm.offsetTop == "number") {
            y += elm.offsetTop;
            elm = elm.offsetParent;
        }
    }
    return y;
}

// Setzen der Position der Quellenlayer-Navi und des Quellenlayers
GENIOS.setLayerSourceNaviHighlightPosition = function(){
    if ($('layer_source_navi_main')){
        var xMain = GENIOS.getAbsoluteX($('layer_source_navi_main'));
        var yMain = GENIOS.getAbsoluteY($('layer_source_navi_main'));
        $('layer_source_navi').style.left = xMain + 'px';
        $('layer_source_navi').style.top = yMain + 'px';
        $('layer_source_navi').show();
        $('layer_source').show();
    }
    if ($('layer_source_navi_sub')){
        var ySub = GENIOS.getAbsoluteY($('layer_source_navi_sub'));
        if (ySub > $('layer_source').offsetHeight){
            $('layer_source').setStyle('top:' + (ySub - $('layer_source').offsetHeight + 50) + 'px');
        }else{
            $('layer_source').setStyle('top:' + (ySub - 50) + 'px');
        }
    }
}


// CSS1280 bei Bildschirmanzeigen > 1250 anzeigen

GENIOS.loadCss = function (phase, baseurl) {
    var dim = document.viewport.getDimensions();
    var url = GENIOS_DRUPAL_CONFIG.baseThemeUrl;
    if(typeof(baseurl) !== "undefined"){
        url = baseurl+url;
    }
    if (dim.width>1250) {
        // CSS einbinden
        document.write('<link rel="stylesheet" type="text/css" href="' + url + '/css/genios1280.css?t=2009-09-26" media="screen" />');
        if (phase=='phase1') {
            document.write('<link rel="stylesheet" type="text/css" href="' + url + '/css/genios1280_phase1.css?t=2009-09-26" media="screen" />');
        }
    }
}

// Startseiten Elemente setzen
GENIOS.setStartData = function () {
    var dim = document.viewport.getDimensions();
    if (dim.width>1250) {
        // Hompage-Bild setzen
        if ($('image_homepage')){
            $('image_homepage').src = '../images/bg/header_image_950px.jpg';
            $('image_homepage').width = '950';
        }
        // letzten Teaser einblenden
        if ($('last_teaser')){
            $('last_teaser').style.display = 'block';
        }
    }
}

// show loader animation
GENIOS.showLoaderAni = function (useIeFix){
    $('layer_overlay').style.display = 'block';
    $('layer_loaderAni').style.display = 'block';
    $('body').style.overflowY = 'hidden';

    // Grafiken austauschen anstoßen
    if (navigator.userAgent.toLowerCase().indexOf("msie") > -1 && useIeFix !== false){
        //GENIOS.switchLoaderImageSrc(-1);
    }
}

// ewchange
// hide loader animation
GENIOS.hideLoaderAni = function (){
    $('layer_overlay').style.display = 'none';
    $('layer_loaderAni').style.display = 'none';
    $('body').style.overflowY = 'visible';
}

// Grafiken austauschen (nur für IE wegen animated.gif-Bug)
GENIOS.switchLoaderImageSrc = function (i) {
    if (i < 9) {
        // Funktion verzögert aufrufen
        i++;
        var timeout = window.setTimeout("GENIOS.switchLoaderImageSrc(" + i + "); document.getElementById('image_loader_ani').src='../images/icons/loader_ani" + i + ".gif'", 400);
    }else{
        GENIOS.switchLoaderImageSrc(-1);
    }
}


// toggle Layer
GENIOS.toogleLayer = function (setDiv,classId,logo) {
    // Layer einblenden
    if ($(setDiv).style.display=='none') {
        if (classId != 'link_mygenios'){
            $(setDiv).appear();
        }else{
            $(setDiv).show();
        }
        // Erweiterte Suche
        if (classId=='link_advanced_search') {
            $('box_search_inner').className='boxSearchInner';
            $('link_advanced_search').className='boxOpen spritesIcons';
            // Titel entsprechend dem aktuellen Status setzen
            $(classId).observe( 'mouseover', text2Tip.curry( $(classId), 'schließen' ) );
            $(classId).title = '';
            $('but_search').hide();
            if ($('div_delete_profile')){
                $('div_delete_profile').hide();
            }
        }
        // Link Mein GENIOS
        else {
            // Status setzen
            if (classId == 'link_mygenios'){
                GENIOS.layerMyGenios = true;
            }

            $(classId).className='boxOpen spritesIcons';
            $('box_mygenios').className='boxMyGenios boxMyGeniosShadow spritesGeneral clearfix';
            // Layer Einstellungen Select zu wg IE6
            if ($('layer_settings')){
                $('layer_settings').hide();
            }
        }
    }
    // Layer schliessen
    else {
        // Status setzen
        if (classId == 'link_mygenios'){
            GENIOS.layerMyGenios = false;
            GENIOS.layerMyGeniosStatus = 0;
        }

        $(setDiv).hide();
        if (classId!='') {
            // Erweiterte Suche
            if (classId=='link_advanced_search') {
                // wenn Logo, muss das Inputfeld kürzer sein
                if (logo=='logo') {
                    $('box_search_inner').className='boxSearchInner boxSearchLogo';
                }
                else {
                    $('box_search_inner').className='boxSearchInner';
                }
                $('link_advanced_search').className='boxClose spritesIcons';
                // Titel entsprechend dem aktuellen Status setzen
                $(classId).observe( 'mouseover', text2Tip.curry( $(classId), 'öffnen' ) );
                $(classId).title = '';
                $('but_search').show();

                if ($('div_delete_profile')){
                    $('div_delete_profile').show();
                }
            }
            // Link Mein GENIOS
            else {
                $(classId).className='boxClose spritesIcons';
                $('box_mygenios').className='boxMyGenios spritesGeneral clearfix';
            }
        }
    }

}


// klappt Navi Level2 auf und zu
// navClass           Klasse der Elemente die geklappt werden
GENIOS.toggleNavi = function (navClass, showAll) {
    if (showAll != true){
        var navLev2Open = true;
        if ($('arrow_toggle_' + navClass).className=='spritesIcons open') {
            navLev2Open = false;
            $('arrow_toggle_' + navClass).className='spritesIcons';
        }
        else {
            $('arrow_toggle_' + navClass).className='spritesIcons open';
        }
        var count = 0;
        $('main_navi').select('li.' + navClass).each(function(item, index) {
            if (navLev2Open==false) {
                new Effect.Appear(item, {
                    duration:0.4
                });
            }else{
                item.hide();
                if ($('navi_controler_more')){
                    $('navi_controler_more').down(0).innerHTML = 'mehr';
                    $('navi_controler_more').className = navClass + ' controler more';
                }
            }
        });
    }else{
        $('layer_overlay').show();
        $('layer_source_navi').appear();
        $('layer_source').appear();
    }
}

GENIOS.toggleVisibilty = function (objectName) {

    /* Aktiviert und deaktiviert Alert Area bei Suchprofil & Alert speichern */
    var objectsToDisable = Array ("alert_monday2", "alert_tuesday2", "alert_wednesday2", "alert_thursday2", "alert_friday2", "alert_saturday2", "alert_sunday2", "alert_monthly2", "alert_email_format_html2", "alert_email_format_txt2", "alert_receivergroup2", "alert_success_ambience2","alert_daily2", "alert_several_times_daily2")

    var i;
    if (objectName.checked == true) {
        $('box_overlay').style.display = 'none';
        for (i=0; i < objectsToDisable.length; i++)
        {
            $(objectsToDisable[i]).disabled = false;
        }
    }else {
        $('box_overlay').style.display = 'block';
        for (i=0; i < objectsToDisable.length; i++)
        {
            $(objectsToDisable[i]).disabled = true;
        }
    }
}
// klappt Weitere/Weniger auf/zu
GENIOS.toggleMore = function (setId) {
    var moreLess=true;
    var more=setId+'_more';
    var less=setId+'_less';
    if ($(less).className=='displayNone') {
        moreLess=false;
        $(more).className='displayNone';
        $(less).className='clearfix';
    }
    else  {
        $(less).className='displayNone';
        $(more).className='clearfix';
    }
    c=1;
    id=setId+'_'+c;
    while ($(id)) {

        if (moreLess==false) {
            $(id).className='clearfix';
        }
        else {
            $(id).className='displayNone';
        }

        c++;
        id=setId+'_'+c;
    }
}

var marker=false;
// alle Checkboxen anklicken
GENIOS.selectAllCheckboxesBottom = function (checkboxname) {
    GENIOS.selectAllCheckboxes(checkboxname);
}
GENIOS.selectAllCheckboxes = function (checkboxname) {
    var elements=document.getElementsByName(checkboxname);
    if(marker==false) {
        for(i=0;i<elements.length;i++) {
            elements[i].checked=true;
            marker=true;
        }
    }
    else {
        for(i=0;i<elements.length;i++) {
            elements[i].checked=false;
            marker=false;
        }
    }
}

// setzt User+PW auf leer
GENIOS.setEmptyField = function (id,val) {
    try
    {
        if ($(id).value==val) {
            $(id).value='';
            $(id).focus();
        }
    }
    catch(e){}
}

// setzt inputfeld auf gesetzten Wert wenn leer
GENIOS.setValueField = function (id,val) {
    try
    {
        if ($(id).value=='') {
            $(id).value=val;
        }
    }
    catch(e){}
}

// oeffnet Popup wird für popup-Modul benötigt
GENIOS.openPopup = function (URL,popname,W,H,scroll,rezisable,X,Y) {
    var URL,popname,W,H,scroll,rezisable,X,Y;
    if (!popname) {
        popname='popup';
    }
    if (!W) {
        W=520;
    }
    if (!H) {
        H=460;
    }
    if (!scroll) {
        scroll=0;
    }
    if (!rezisable) {
        rezisable=0;
    }
    if (!X) {
        X=screen.width/2-(W/2);
    }
    if (!Y) {
        Y=screen.height/2-(H/2)-20;
    }
    properties = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+scroll+",resizable="+rezisable+",";
    properties += "width="+W+",height="+H+",left="+X+",top="+Y;
    popwin=window.open(URL,popname,properties);
    popwin.focus();
}

// setzt ausgewählten Zeitmodus aktiv
GENIOS.setTimeMod = function (id){
    if (id == 'modus_zeitraum'){
        $('modus_zeitraum').checked = true;
        $('box_disabled_zeitmodus_raum').style.display = 'none';
        $('box_disabled_zeitmodus_datum').style.display = 'block';
    }else{
        $('modus_erscheinungsdatum').checked = true;
        $('box_disabled_zeitmodus_raum').style.display = 'block';
        $('box_disabled_zeitmodus_datum').style.display = 'none';
    }
}

// setzt Ort für Institutionelles Login
GENIOS.setInstituteLogin = function (){
    if ($('place_for_institute_login').value == ''){
        $('institute_for_institute_login').disabled = 'disabled';
        $('institute_for_institute_login').style.color = '#999';
    }else{
        $('institute_for_institute_login').disabled = '';
        $('institute_for_institute_login').style.color = '#000';
    }
}

// befüllt iframe für Druck
GENIOS.printTransfer = function (id){
    var code = '<br /><br />' + $(id).innerHTML;
    window['print_iframe'].printQuotation(code);
}

// Steuerung einer Reiternavigation
// id           id der Reiternavigation
// tabNumber    Anzahl der Reiter
// actualTab    aktueller Reiter
GENIOS.tabNav = function (id, tabNumber, actualTab){
    var actualTabNumber = actualTab.id.substr(4, actualTab.id.length);

    // reset
    for (var i=1; i<=tabNumber; i++){
        $('tab_' + i).className = '';
        $('content_tab_' + i).className = 'print';
    }

    //set
    actualTab.className = 'active';
    $('content_tab_' + actualTabNumber).className = '';
    $(id).className = 'boxTab' + actualTabNumber;
}


// Meine Quellen in der Mediennavigation anzeigen
// num (Integer)    Nummer der Radio-Option
GENIOS.showMySourcesInNavi = function (num){
    if (num == -1){
        // Wechseln des Dummy-Hintergrunds
        if ($('search_mask_show_sources').checked != true){
            $('box_my_sources_dummy').addClassName('boxMySourcesDummyB');
        }else{
            $('box_my_sources_dummy').removeClassName('boxMySourcesDummyB');
        }
    }else{
        // Setzen des aktiven Radio-Button
        $('mod_search_option_' + num).checked = true;

        // Reset der Hilightings
        $('box_searchmask_navi').select('li').each(function(item, index){
            if (index == 0){
                item.className = 'first';
            }else if(index == 10){
                item.className = 'boxMySourcesDummy';
            }else{
                item.className = '';
            }
        });

        // Setzen des Highlightings
        if (num == 0){
            $('box_searchmask_navi').down(0).className = 'firstActive';
        }else if (num == 10){
            $('box_searchmask_navi').down(0).next(9).className = 'lastActive';
        }else{
            num -= 1;
            $('box_searchmask_navi').down(0).next(num).className = 'active';
        }
    }
}


/**
 * Steuerung des Wechsels zwischen mehreren Inhalten
 *
 * @static
 */
GENIOS.SwitchContent = {

    /**
     * Aktuell sichtbarer Inhalt
     * @type  {String}
     */
    actualContentId: '',

    /**
     * versteckt alle Elemente bis auf den dafault-Content, falls Parameter actualId übergeben wird
     * (die init-Methode kann bei einer vorhandenen Fallback-Variante eingesetzt werden, ist aber nicht zwangsläufig erforderlich)
     *
     * @static
     *
     * @param  {String}     idWrap           id es Containers, welcher die switch-Inhalte umschließt
     * @param  {String}     actualId         id des default Inhalts
     */
    init: function(idWrap, actualId){
        // hide content
        $(idWrap).select('div.boxSwitchContent').each(function(item) {
            if (item.id != actualId){
                item.hide();
            }
        });

        // aktuellen Content als Eigenschaft setzen
        this.actualContentId = actualId;
    },

    /**
     * versteckt zunächst alle Elemente unsichtbar und behält vorläufig die Höhe des aktuell sichtbaren Contents über den
     * übergeordneten Container - beim Content-Switch wird die Höhe über eine Animation angepasst
     *
     * @static
     *
     * @param  {String}     idWrap           id es Containers, welcher die switch-Inhalte umschließt
     * @param  {String}     actualId         id des aktuellen Inhalts (wird actualId nicht mitgegeben, wird die Content-Höhe auf 0px gesetzt)
     * @param  {String}     showAll          'showAll' wenn alle Inhalte eingeblendet werden sollen
     */
    morph: function(idWrap, actualId, showAll){
        var allHeight = 0;
        if (this.actualContentId != actualId){
            // reset
            $(idWrap).select('.boxSwitchContent').each(function(item) {
                if (!showAll){
                    if (item.style.display != 'none'){
                        $(idWrap).style.height = item.offsetHeight + 'px';
                    }
                    item.hide();
                }else{
                    item.show();
                    allHeight += item.offsetHeight;
                }
            });

            if (showAll){
                $(idWrap).style.height = allHeight + 'px';
            }

            //show actual content
            if (actualId){
                $(actualId).show();

                new Effect.Morph($(idWrap),
                {
                    style:'height:' + $(actualId).offsetHeight + 'px', 
                    duration:0.5
                });

                $(actualId).hide();
                new Effect.Appear($(actualId),
                {
                    duration:0.5
                });
            }else{
                new Effect.Morph($(idWrap),
                {
                    style:'height:0px', 
                    duration:0.5
                });
            }

            // aktuellen Content als Eigenschaft setzen
            this.actualContentId = actualId;
        }

    },

    switchContent: function(idWrap, actualId){

        if (this.actualContentId != actualId){
            // reset
            $(idWrap).select('.boxSwitchContent').each(function(item) {
                item.hide();
            });

            //show actual content
            if (actualId){
                $(actualId).show();
            }else{
                $(actualId).hide();
            }

            // aktuellen Content als Eigenschaft setzen
            this.actualContentId = actualId;
        }

    },

    /**
     * setzt zunächst alle Controler-Elemente auf nicht aktiv und highlightet dann das aktive Controler-Element
     *
     * @static
     *
     * @param  {String}     idWrap           id es Containers, welcher die betroffenen Punkte umschließt
     * @param  {String}     className        CSS-Klassenname der betroffenen Elemente
     * @param  {Objekt}     elem             aktiver Controler
     * @param  {Integer}    num              aktive Nummer des Tabs
     */
    setHighlighting: function(idWrap, className, elem, num){
        // reset
        $(idWrap).select('a.' + className).each(function(item) {
            item.removeClassName('boxActive');
        });

        // Highlighting
        elem.addClassName('boxActive');
        GENIOS.Toggle.activeTab = num;
    }

};


/**
 * Audio-Track-Steuerung
 *
 * @static
 */
GENIOS.AudioTrack = {

    /**
     * Anzahl aller vorhandenen Tracks
     * @type  {Integer}
     */
    allTracks: 0,

    /**
     * Titel der Tracks
     * @type  {Array}
     */
    trackTitles: new Array(),

    /**
     * Pfade der Tracks
     * @type  {Array}
     */
    trackPath: new Array(),

    /**
     * Aktueller Track
     * @type  {Integer}
     */
    actualTrack: -1,

    /**
     * Aktueller Track Status
     * @type  {String}
     */
    actualTrackStatus: 'start',

    /**
     * Pfad Play Icon
     * @type  {String}
     */
    pathPlayIcon: '../images/icons/icon_play.gif',

    /**
     * Pfad Pause Icon
     * @type  {String}
     */
    pathBreakIcon: '../images/icons/icon_break.gif',

    /**
     * spielt übergebenen Track ab
     *
     * @static
     *
     * @param  {Integer}    num             Nummer des Tracks
     * @param  {String}     title           Titel des Tracks
     * @param  {String}     path            Pfad des Tracks
     */
    control: function(num, title, path){

        // aktuelles Controler-Icon
        var activeControler = $('track_' + num);

        if (this.actualTrack != num || this.actualTrack == -1){

            // spiele Track von vorne ab
            callFlash(num, title, path);
            this.actualTrackStatus = 'play';

            // Icons zurücksetzen
            for (var i=0; i<this.allTracks; i++){
                $('track_' + i).src = this.pathPlayIcon;
            }
            activeControler.src = this.pathBreakIcon;

        }else{
            if (this.actualTrackStatus == 'play' || this.actualTrackStatus == 'start'){
                // aktueller Track auf Pause
                this.actualTrackStatus = 'pause';
                callFlashPlay(0);
                activeControler.src = this.pathPlayIcon;
            }else{
                // aktueller Track auf Play
                this.actualTrackStatus = 'play';
                callFlashPlay(1);
                activeControler.src = this.pathBreakIcon;
            }
        }

        this.actualTrack = num;
    },

    /**
     * setzt aktuellen Track und dessen Status
     *
     * @static
     *
     * @param  {Integer}    id             Nummer des Tracks
     * @param  {Integer}    status         0=pause, 1=play
     */
    callJSset: function(id, status) {
        this.actualTrack = id;

        // just switch the btn status for the running id
        var elem = $('track_' + id);

        // Icons zurücksetzen
        for (var i=0; i<GENIOS.AudioTrack.allTracks; i++){
            $('track_' + i).src = GENIOS.AudioTrack.pathPlayIcon;
        }

        // aktuelles Icon setzen
        if (status == 1){
            elem.src = GENIOS.AudioTrack.pathBreakIcon;
            GENIOS.AudioTrack.actualTrackStatus = 'play';
        }else{
            elem.src = GENIOS.AudioTrack.pathPlayIcon;
            GENIOS.AudioTrack.actualTrackStatus = 'pause';
        }
    },

    /**
     * ruft Flash-Player auf und liefert die entsprechenden Parameter
     *
     * @static
     *
     * @param  {Integer}    num            Nummer des Tracks
     */
    callJSget: function(num) {
        callFlash(num, GENIOS.AudioTrack.trackTitles[num], GENIOS.AudioTrack.trackPath[num])
    }
};


/**
 * Bild-Skiper im Start-Teaser
 *
 * @static
 */
GENIOS.ImageSkiper = {

    /**
     * Pfad zu den Bildern
     * @type  {Array}
     */
    imagePaths: new Array(),

    /**
     * aktuelle Bildposition
     * @type  {Integer}
     */
    imagePosition: 0,

    /**
     * springt ein Bild vor oder zurück
     *
     * @static
     *
     * @param  {String}     direction           'forward' oder 'backward'
     */
    skip: function(direction){
        var imageNumber = this.imagePaths.length;
        if (direction == 'forward'){
            if (this.imagePosition < imageNumber - 1){
                this.imagePosition += 1;
            }else{
                this.imagePosition = 0;
            }
        }else{
            if (this.imagePosition > 0){
                this.imagePosition -= 1;
            }else{
                this.imagePosition = imageNumber - 1;
            }
        }
        $('teaser_skip_image').src = this.imagePaths[this.imagePosition];
    }
};


/**
 * Klapper
 *
 * @static
 */
GENIOS.Toggle = {

    /**
     * aktuelle Tab Nummer
     * @type  {Integer}
     */
    activeTab: 0,

    /**
     * Alle Klapper-Inhalte ausblenden
     *
     * @static
     *
     * @param  {String}     content           id of toggle area
     */
    hideToggleContent: function(content){

        var toggleArea = $(content);
        var toggleContent = toggleArea.select("div.boxContent");
        var count = toggleContent.length;
        for (var i = 1; i <= count; i++) {
            $('toggle_headline_' + i).style.textDecoration = 'underline';
            $('toggle_headline_' + i).style.cursor = 'pointer';
            $('toggle_content_' + i).style.display = 'none';
        }
    },

    /**
     * Anzeigen des Klapper-Inhalts
     *
     * @static
     *
     * @param  {String}     content           ID des Klapper-Inhalts
     */
    toggleContent: function(content){
        if ($(content).style.display == 'none'){
            $(content).appear();
        }else{
            $(content).style.display = 'none';
        }
    },

    /**
     * Alle Klapper-Inhalte ausblenden und die Status-Icons zurücksetzen
     *
     * @static
     *
     * @param  {String}     idWrap           id of toggle area
     * @param  {String}     classContent     CSS-Klasse der Inhalte
     * @param  {Object}     elem             angeklicktes Element
     */
    reset: function(idWrap, classContent, elem){
        // alle Tab-Stati setzen
        var that = this;
        if (elem.className == 'boxClosed'){
            $(idWrap).select('.boxNav').each(function(item, index) {
                if (item.hasClassName('boxActive')){
                    item.removeClassName('boxActive');
                    //item.addClassName('boxInactive');
                }
            });
            //elem.previous(0).removeClassName('boxInactive');
            elem.previous(0).addClassName('boxActive');
        }else{
            $(idWrap).select('.boxNav').each(function(item, index) {
                if (index == that.activeTab){
                    //item.removeClassName('boxInactive');
                    item.addClassName('boxActive');
                }else{
                    item.removeClassName('boxActive');
                    //item.addClassName('boxInactive');
                }
            });
        }

        // alle Inhalte ausblenden
        $(idWrap).select('.' + classContent).each(function(item, index) {
            item.hide();
        });

        // alle Controler zurücksetzen
        $(idWrap).select('.boxOpened').each(function(item, index) {
            if (item != elem){
                item.removeClassName('boxOpened');
                item.addClassName('boxClosed');
            }
        });
    }
};
/* Aktiviert und deaktiviert Alert Area bei Suchprofil & Alert speichern */


GENIOS.toggleVisibilty = function (objectName) {

    var objectsToDisable = Array ("alert_monday2", "alert_tuesday2", "alert_wednesday2", "alert_thursday2", "alert_friday2", "alert_saturday2", "alert_sunday2", "alert_monthly2", "alert_email_format_html2", "alert_email_format_txt2", "alert_receivergroup2", "alert_success_ambience2","alert_daily2", "alert_several_times_daily2", "alert_monthly_time2","alert_daily_time2")
    var i;
    if (objectName.checked == true) {
        $('box_overlay').style.display = 'none';
        for (i = 0; i < objectsToDisable.length; i++)
        {
            $(objectsToDisable[i]).disabled = false;
        }
    }else {
        $('box_overlay').style.display = 'block';
        for (i = 0; i < objectsToDisable.length; i++)
        {
            $(objectsToDisable[i]).disabled = true;
        }
    }
}


/**
 * Abgesoftete Layer
 *
 * @static
 */
GENIOS.SoftedLayer = {

    /**
     * Anzeigen des Layers mit abgesoftetem Hintergrund
     *
     * @static
     *
     * @param  {String}     layerId           ID des Layers
     */
    show: function(layerId){
        // Absoftung anzeigen
        $('layer_overlay').show();

        // Layer anzeigen
        $(layerId).appear();

        // vertikales Scrollen deaktivieren
        //$('body').style.overflowY = 'hidden';

        var layer = $(layerId);

        // retrieve required dimensions
        var eltDims = layer.getDimensions();
        var browserDims = document.body.getDimensions();

        // calculate the center of the page using the browser and element dimensions
        var y = (browserDims.height - eltDims.height) / 2;
        var x = (browserDims.width - eltDims.width) / 2;

        // set the style of the element so it is centered
        var styles = {
            position : 'absolute',
            // top : y + 'px',
            top : '100px',
            left : x + 'px'
        }
        layer.setStyle(styles);
        layer.scrollTo();
    },

    /**
     * Ausblenden des Layers mit abgesoftetem Hintergrund
     *
     * @static
     *
     * @param  {String}     layerId           ID des Layers
     */
    hide: function(layerId){
        // Absoftung ausblenden
        $('layer_overlay').hide();

        // Layer ausblenden
        $(layerId).hide();

        // vertikales Scrollen aktivieren
        //$('body').style.overflowY = 'scroll';
    },

    /**
     * Ausblenden des Layers bei Klick auf den abgesofteten Hintergrund
     *
     * @static
     *
     * @param  {String}     layerId           ID des Layers
     */
    blur: function(){
        // Absoftung ausblenden
        if(GENIOS.HomeSearch._active){
            return
        } //gilt nicht für die loader Ani auf der homepage

        $('layer_overlay').hide();

        $('body').select('div.divLayer').each(function(item){
            item.hide();
        });

        // Quellenlayer
        if ($('layer_source')){
            $('layer_source').hide();
        }
        if ($('layer_source_navi_1')){
            $('layer_source_navi_1').hide();
        }
        if ($('layer_source_navi_2')){
            $('layer_source_navi_2').hide();
        }
    }
};


/**
 * Steuerung der Quellen
 *
 * @static
 */
GENIOS.Sources = {

    /**
     * Hinzufügen einer Quelle zur Quellenliste
     *
     * @static
     *
     * @param  {Object}     elem           Quellen-Link-Element
     * @param  {String}     title          Titel der Quelle
     */
    addToList: function(elem, title){
        // Meine Quellen Bereich einblenden
        $('box_my_sources_outer').show();

        // Speichern-Leiste einblenden
        $('box_my_sources_save').show();

        // Quellen-Liste-Klapper einblenden
        $('box_my_sources_toggle').appear();

        if (elem.className != 'boxAdded'){
            // Hinzufügen des HTMLs der Quelle in die Quellenliste
            $('box_my_sources').innerHTML += '<li class="togglemysources"><a onclick="GENIOS.Sources.removeFromList(\'' + elem.id + '\'); return false;" id="sourcelist' + elem.id + '" class="boxDelete" href="test" title="Aus Quellenliste entfernen"></a><a class="boxSource" href="/">' + title + '</a></li>';

            // Status in Quellenlayer setzen
            elem.className = 'boxAdded';

            // Titel entsprechend dem aktuellen Status setzen

            elem.observe( 'mouseover', text2Tip.curry( elem, 'In Quellenliste vorhanden') );
            elem.title = '';
        }
    },

    /**
     * Entfernen einer Quelle aus der Quellenliste
     *
     * @static
     *
     * @param  {Object}     id           id des Quellenlayer-Links
     */
    removeFromList: function(id){
        // HTML aus Quellenliste entfernen
        $('sourcelist' + id).up(0).remove();

        // Status in Quellenlayer setzen
        if ($(id)){
            $(id).className = 'boxAdd';
        }

        // Titel entsprechend dem aktuellen Status setzen
        $(id).observe( 'mouseover', text2Tip.curry( $(id), 'Quelle hinzufügen' ) );
        $(id).title = '';

        if ($('box_my_sources').childElements().length <= 2){
            // Speichern-Leiste ausblenden
            $('box_my_sources_save').hide();
            $('box_my_sources_save_final').hide();

            // Quellen-Liste-Klapper ausblenden
            $('box_my_sources_toggle').hide();
        }
    },

    /**
     * Entfernen einer Quelle aus der Quellenliste
     *
     * @static
     *
     * @param  {Object}     id           id des Quellenlayer-Links
     */
    switchSaveMod: function(){
        if ($('box_my_sources_save_final').style.display == 'none'){
            $('box_my_sources_save').hide();
            $('box_my_sources_save_final').show();
        }else{
            $('box_my_sources_save').show();
            $('box_my_sources_save_final').hide();
        }
    }
};


/**
 * Faden von Elementen
 *
 * @static
 */
GENIOS.Fade = {

    /**
     * Einblenden eines Elements
     *
     * @static
     *
     * @param  {String}     id           Id des einzublendenen Elements
     */
    fadeIn: function(id){
        if (Prototype.Browser.IE) {
            $(id).show();
        }else{
            $(id).appear();
        }
    }
}


/**
 * Dynamische Formulare
 *
 * @static
 */
GENIOS.DynamicForms = {

    /**
     * Ausblenden des aktivierten Controlers
     *
     * @static
     *
     * @param  {String}     controler           Aktivierter Controler
     */
    hideControler: function(controler){
        // hide and remove active controler
        new Effect.Appear($(controler.id),
        {
            duration:0.7, 
            from:1, 
            to:0,
            afterFinish:function(){
                $(controler.id).remove();
            }
        });
    },

    /**
     * Hinzufügen eines Textfeldes
     *
     * @static
     *
     * @param  {String}     controler           Aktivierter Controler
     * @param  {String}     wrapId              id des Containers, in den das neue Element geschrieben wird
     * @param  {Interger}   num                 Nummer des neuen Elements
     * @param  {Interger}   version             abweichende Varianten
     */
    addText: function(controler, idWrap, num, version){

        // save textfield values
        var valueArray = new Array();
        var count = 0;
        $(idWrap).select('input').each(function(item, index) {
            valueArray[index] = item.value;
            count++;
        });

        if (count < 6){
            // add html
            var control = '';
            var newHtml = '';
            if (version == 1){
                if (count < 5){
                    control = '<a id="alert_email_adress_controler_' + num + '" onclick="GENIOS.DynamicForms.addText(this, \'' + idWrap + '\', ' + (num + 1) + ', 1); return false;" class="addForm spritesIcons" href="/">&nbsp;</a>';
                }
                newHtml = '<div id="box_new_html_' + num + '" class="boxRow clearfix" style="display:none;">\n' +
                    '<span class="formLabel">&nbsp;</span>\n' +
                    '<input id="alert_email_adress_' + num + '" class="formText formPreEntry" type="text" name="alert_email_adress_' + num + '" value="E-Mail-Adresse eingeben (optional)"\n\ onfocus="GENIOS.clearTextField(this)" onblur="GENIOS.clearTextField(this)" />\n' +
                    + control + '\n' +
                    '</div>';
            }else{
                if (count < 5){
                    control = '<a id="alert_email_adress_controler_' + num + '" onclick="GENIOS.DynamicForms.addText(this, \'' + idWrap + '\', ' + (num + 1) + '); return false;" class="addForm spritesIcons" href="/">&nbsp;</a>';
                }
                newHtml = '<div id="box_new_html_' + num + '" class="boxRow clearfix" style="display:none;">\n' +
                    '<span class="formLabel">&nbsp;</span>\n' +
                    '<input id="alert_email_adress_' + num + '" class="formText" type="text" name="alert_email_adress_' + num + '" value="" />\n' +
                    control + '\n' +
                    '</div>';
            }

            $(idWrap).innerHTML += newHtml;
            $('box_new_html_' + num).appear();

            // insert saved textfield values
            $(idWrap).select('input').each(function(item, index) {
                if (index < valueArray.length){
                    item.value = valueArray[index];
                }
            });

            // hide active controler
            this.hideControler(controler);
        }
    },

    // Selection Operator, Textinput und Selection
    addExpertFull: function(controler, idWrap, num){
        // save textfield values
        var valueTextArray = new Array();
        var count = 0;
        $(idWrap).select('input').each(function(item, index) {
            valueTextArray[index] = item.value;
            count++;
        });

        // save select values
        var valueSelectArray = new Array();
        $(idWrap).select('select').each(function(item, index) {
            valueSelectArray[index] = item.value;
        });

        if (count < 6){
            // add html
            var control = '';
            if (count < 5){
                control = '<a id="search_expert_full_controler_' + num + '" onclick="GENIOS.DynamicForms.addExpertFull(this, \'' + idWrap + '\', ' + (num + 1) + '); return false;" class="addForm spritesIcons" href="/">&nbsp;</a>';
            }

            var newHtml = '<div id="box_new_html_expert_full_' + num + '" class="boxRow clearfix" style="display:none;">\n' +
                '<select class="formSelectShort" name="search_expert_operator_' + (num - 1) + '">\n' +
                '    <option value="AND">AND</option>\n' +
                '    <option value="OR">OR</option>\n' +
                '</select>\n' +
                '<input class="formText medium" type="text" name="search_expert_text_' + num + '" value="" />\n' +
                '<select id="search_expert_select_' + num + '" class="formSelect" name="search_expert_select_' + num + '">\n' +
                '       <option value="Alle Felder">Alle Felder</option>\n' +
                '    </select> \n' +
                + control + '\n' +
                '</div>';
            $(idWrap).innerHTML += newHtml;
            $('box_new_html_expert_full_' + num).appear();

            // insert saved textfield values
            $(idWrap).select('input').each(function(item, index) {
                if (index < valueTextArray.length){
                    item.value = valueTextArray[index];
                }
            });

            // insert saved select values
            $(idWrap).select('select').each(function(item, index) {
                if (index < valueSelectArray.length){
                    item.value = valueSelectArray[index];
                }
            });

            // hide active controler
            this.hideControler(controler);
        }
    },

    // von, bis, und Selection
    addExpertNumeric: function(controler, idWrap, num){
        // save textfield values
        var valueTextArray = new Array();
        var count = 0;
        $(idWrap).select('input').each(function(item, index) {
            valueTextArray[index] = item.value;
            count++;
        });

        // save select values
        var valueSelectArray = new Array();
        $(idWrap).select('select').each(function(item, index) {
            valueSelectArray[index] = item.value;
        });

        if (count < 10){
            // add html
            var control = '';
            if (count < 8){
                control = '<a id="search_expert_numeric_controler_' + num + '" onclick="GENIOS.DynamicForms.addExpertNumeric(this, \'' + idWrap + '\', ' + (num + 1) + '); return false;" class="addForm spritesIcons" href="/">&nbsp;</a>';
            }

            var newHtml = '<div id="box_new_html_expert_numeric_' + num + '" class="boxRow clearfix" style="display:none;">\n' +
                '<label for="search_expert_beginn_' + num + '">von</label>\n' +
                '    <input id="search_expert_beginn_' + num + '" class="formText2" type="text" name="search_expert_beginn_' + num + '" value="" />\n' +
                '    <label for="search_expert_end_' + num + '">bis</label>\n' +
                '    <input id="search_expert_end_' + num + '" class="formText2" type="text" name="search_expert_end_' + num + '" value="" />\n' +
                '    <select class="formSelect formSelectB" name="search_expert_select_numeric_' + num + '">\n' +
                '        <option value="Numerische Suche auswählen">Numerische Suche auswählen</option>\n' +
                '    </select>\n' +
                + control + '\n' +
                '</div>';
            $(idWrap).innerHTML += newHtml;
            $('box_new_html_expert_numeric_' + num).appear();

            // insert saved textfield values
            $(idWrap).select('input').each(function(item, index) {
                if (index < valueTextArray.length){
                    item.value = valueTextArray[index];
                }
            });

            // insert saved select values
            $(idWrap).select('select').each(function(item, index) {
                if (index < valueSelectArray.length){
                    item.value = valueSelectArray[index];
                }
            });

            // hide active controler
            this.hideControler(controler);
        }
    }
}

GENIOS.clearTextField = function(field) {
    if (field.defaultValue == field.value) {
        field.value = '';
        $(field).removeClassName('formPreEntry');
    } else if (field.value == '') {
        field.value = field.defaultValue;
        $(field).addClassName('formPreEntry');
    }
}

/* Wechsel des Registrierungs-Typs Unternehmen / Privatperson */
GENIOS.changeRegisterType = function (type) {
    var adressFields;
    if (type == 'private') {
        $('box_company').hide();
        $('box_ustid').hide();
        adressFields = $('form_adress_fields').innerHTML;
        $('form_adress_fields').innerHTML = '';
        $('holder_adress_fields').innerHTML = adressFields;
    }else {
        $('box_company').show();
        $('box_ustid').show();
        adressFields = $('holder_adress_fields').innerHTML;
        $('holder_adress_fields').innerHTML = '';
        $('form_adress_fields').innerHTML = adressFields;
    }
}

/**
 * Schnelleinstieg Controling
 *
 * @static
 */
GENIOS.FastEntry = {

    /**
     * aktueller Status
     * @type  {Integer}
     */
    status: 0,

    /**
     * Elemente dragbar machen
     *
     * @static
     *
     */
    initDragDrop: function(){
        // set droppables
        Droppables.add('box_drag_left', {
            onDrop: this.removeItem

        });
        Droppables.add('box_drag_right', {
            onDrop: this.addItem
        });

        // set draggables
        $('box_drag_left').select('.boxDragElem').each(function(item, index){
            new Draggable(item, {
                revert:true,
                onStart:function(){
                    var draggingElemNum = item.id.split('box_drag_')[1];
                    if (!$('box_draged_' + draggingElemNum)){
                        $('box_drag_right').innerHTML += '<p id="box_drag_area" class="boxDragArea">Bitte in diesen Bereich ziehen.</p>';
                    }
                },
                onEnd:function(){
                    if ($('box_drag_area')){
                        $('box_drag_area').remove();
                    }
                }
            });
        });

        // set wraps
        if (this.status == 0){
            this.status = 1;
            $('box_drag_left').childElements().each(function(item, index){
                if (!$('box_drag_wrap_' + index)){
                    item.wrap('div');
                    item.parentNode.id = 'box_drag_wrap_' + index;
                }
            });
        }

        // set draggables
        $('box_drag_right').select('.boxDragElem').each(function(item){
            new Draggable(item, {
                revert:true
            });
        });

        // Reset der Klapper
        $('box_drag_left').select('div.boxDragElem').each(function(item, index){
            item.down(1).onclick = '';
        });
    },

    /**
     * Element hinzufügen
     *
     * @static
     *
     */
    addItem: function(draggable, droparea){
        draggable.setStyle('top:0px; left:0px;');
        var draggingElemNum = draggable.id.split('box_drag_')[1];
        if (!$('box_draged_' + draggingElemNum)){
            droparea.appendChild(draggable);
            var newCopy = new Element(draggable.tagName.toLowerCase(), {
                'id' : 'box_draged_' + draggingElemNum,
                'class' : 'boxDragedElem'
            }).update(draggable.innerHTML);
            $('box_drag_wrap_' + draggingElemNum).appendChild(newCopy);

            // aktivieren der Klapper
            $('box_drag_right').select('div.boxDragElem').each(function(item, index){
                item.down(1).onclick = function(){
                    GENIOS.ToggleContent.toggle('box_toggle_content_' + index, item.down(1));
                    return false;
                }
                item.down(0).next(0).id = 'box_toggle_content_' + index;
            });

            // init dragDrop
            GENIOS.FastEntry.initDragDrop('box_drag_left', 'box_drag_right');
        }
    },

    /**
     * Element entfernen
     *
     * @static
     *
     */
    removeItem: function(draggable, droparea){
        var origElemNum = draggable.id.split('box_drag_')[1];
        var origElem = $('box_draged_' + origElemNum);
        if (origElem){
            draggable.parentNode.removeChild(draggable);
            origElem.id = 'box_drag_' + origElemNum;
            origElem.className = 'boxDragElem';
            // init dragDrop
            GENIOS.FastEntry.initDragDrop('box_drag_left', 'box_drag_right');
        }
    },

    /**
     * Element um eine Position nach unten setzen
     *
     * @static
     *
     * @param  {String}     direction      'up' or 'down'
     * @param  {Object}     elem           Controler-Element
     */
    sort: function(direction, elem){
        var dragElem = elem.parentNode;
        var dragElemPos;
        var count;
        $('box_drag_right').select('.boxDragElem').each(function(item, index){
            if (item.id == dragElem.id){
                dragElemPos = index;
            }
            count = index;
        });
        if (direction == 'up'){
            if (dragElemPos == 0){
                // KEINE AKTION MÖGLICH
            }else{
                dragElem.previous(0).insert({
                    before: dragElem
                });
            }
        }else{
            if (dragElemPos == count){
                // KEINE AKTION MÖGLICH
            }else{
                dragElem.next(0).insert({
                    after: dragElem
                });
            }
        }
    },

    /**
     * Element um eine Position nach unten setzen
     *
     * @static
     *
     */
    save: function(){
        var pointSettings = new Array();
        var alertListing = '';

        $('box_drag_right').select('.boxDragElem').each(function(item, index){
            pointSettings[index] = new Object();

            // Id
            pointSettings[index]["id"] = item.id.split('box_drag_')[1];

            // Modus
            if (item.tagName.toLowerCase() == 'div'){
                pointSettings[index]["mod"] = 'toggle';
            }else{
                pointSettings[index]["mod"] = 'standard';
            }

            // Klapper-Status
            if (item.tagName.toLowerCase() == 'div'){
                if (item.down(1).className == 'boxOpened'){
                    pointSettings[index]["status"] = 'opened';
                }else{
                    pointSettings[index]["status"] = 'closed';
                }
            }

            alertListing += 'ID: ' + pointSettings[index]["id"] + '\n';
            alertListing += 'Modus: ' + pointSettings[index]["mod"] + '\n';
            if (item.tagName.toLowerCase() == 'div'){
                alertListing += 'Status: ' + pointSettings[index]["status"] + '\n';
            }
            alertListing += '\n';
        });

        alert(alertListing);
    }
}


/**
 * Klappt Inhalte auf/zu und setzt das passende Status-Icon
 *
 * @static
 */
GENIOS.ToggleContent = {

    /**
     * Klappt alle Inhalte zu, da sie zunächst als JS-Fallback offen sind
     *
     * @static
     *
     * @param  {String}     idWrap           id es Containers, welcher die Klapper umschließt
     */
    init: function(idWrap){
        // hide content
        $(idWrap).select('div.boxRecipientGroupContent').each(function(item, index) {
            if (index != 0){
                item.hide();
            }
        });

        // set status icons
        $(idWrap).select('a.boxOpened').each(function(item, index) {
            if (index != 0){
                item.className = 'boxClosed';
            }
        });
    },

    /**
     * Klappt einen Inhalt auf oder zu
     *
     * @static
     *
     * @param  {String}     idContent          id es Containers, welcher geklappt werden soll
     * @param  {Object}     iconElem           Klapp-Icon-Element
     * @param  {Boolean}    alpha              true, falls im Content Alpha-Transparenz vorkommt
     * @param  {String}     controlerText1     Klapper-Text neben Controler-Icon für Zustand offen
     * @param  {String}     controlerText2     Klapper-Text neben Controler-Icon für Zustand geschlossen
     */
    toggle: function(idContent, iconElem, alpha, controlerText1, controlerText2){
        var contentHeight;
        if (iconElem.className == 'boxClosed'){
            iconElem.className = 'boxOpened';
            if (controlerText1){
                iconElem.innerHTML = controlerText1;
            }
            $(idContent).show();
            contentHeight = $(idContent).offsetHeight;
            $(idContent).hide();
            $(idContent).setStyle('height:0px;');

            if (Prototype.Browser.IE && alpha == true) {
                $(idContent).show();
            }else{
                new Effect.Appear($(idContent), {
                    duration:0.8
                });
            }

            new Effect.Morph($(idContent),
            {
                style:'height:' + contentHeight + 'px', 
                duration:0.5
            });
        }else{
            iconElem.className = 'boxClosed';
            if (controlerText2){
                iconElem.innerHTML = controlerText2;
            }
            contentHeight = $(idContent).offsetHeight;

            if (Prototype.Browser.IE && alpha == true) {
                $(idContent).show();
            }else{
                new Effect.Fade($(idContent), {
                    duration:0.5
                });
            }

            new Effect.Morph($(idContent),{
                style:'height:0px;', 
                duration:0.5,
                afterFinish:function(){
                    $(idContent).hide();
                    $(idContent).setStyle('height:' + contentHeight + 'px');
                }
            });

        }
    }
};

GENIOS.processParams = function(p,q)
{
    var i;
    var split = p.split("&");
    if(split.length<=3 && q === "Ihr Suchbegriff"){
        return false;
    } //normale suche

    for(i=0;i<split.length; i++){ //erweitere Suche
        if(split[i] === "q=Ihr%20Suchbegriff"){
            split[i] = "q=";
        }
    }
    return split.join("&");
}

GENIOS.searchForm = function(buttonElem, event)
{
    var pars;
    var form = $("search");
    var q = form["q"].value;
    var continueScript = GENIOS.HomeSearch.checkQuery(q);
    if(!continueScript){
        return false;
    }
    var url=GENIOS_DRUPAL_CONFIG.searchUrl;
  
    pars = form.serialize();
    pars = GENIOS.processParams(pars,q);
    if(pars == false){
        return;
    }

    GENIOS.showLoaderAni(false);
    GENIOS.HomeSearch._active = true;
  
    HomeConf.searchString = q;
  
    new Ajax.Request(
    url,
    {
        method: 'post',
        parameters: pars,
        onSuccess: GENIOS.HomeSearch.writeData,
        onFailure : GENIOS.HomeSearch.throwError
    });
}



GENIOS.HomeSearch =
    {
    _active:false,
    parseSearchResponse:function(html)
    {
        return html;
    },
    
    checkQuery: function(q) {
        if(q.indexOf("#") === 0){
            var split = q.split(" ");
            var quelle = split[0].substr(1);
            var curUrl = window.location.href.split("?")[0];
            window.location.href = curUrl+"?quelle="+quelle;
            return false;
        }
        return true;
    },

    throwError:function()
    {
        GENIOS.hideLoaderAni();
        this._active = false;
        alert("Wir bitten um Entschuldigung. Die Suche steht momentan nicht zur Verfügung.");
    },

    writeData:function(transport)
    {
        GENIOS.hideLoaderAni();

        if(transport.responseText.indexOf("<html") !== -1){
            GENIOS.HomeSearch.throwError();
            return;
        }
        GENIOS.HomeSearch.saveResult(transport.request.parameters.q,transport.responseText);
        var resultsId = "box_home_search_list";
        var searchResultElem = $(resultsId);
        var hasResult = false;
        if(searchResultElem !==null)
        {
            hasResult = true;
        }
        // Die Elemente so hinbauen, dass alles passt
        if(hasResult)
        {
            searchResultElem.innerHTML = transport.responseText;
        }
        else
        {
            var topElem = $$(".divColoredCorner")[0];
            topElem.addClassName("divColoredCornerShort");
            var hideElems = new Array(".moduleNaviSub",
            ".divColoredCorner .boxCornerLi",
            ".divColoredCorner .boxCornerRi",
            ".moduleStartTeaser");
            for(var i=0; i<hideElems.length; i++)
            {
                $$(hideElems[i])[0].hide();
            }
            /*
            var teasers = $$(".moduleTeaserNavi li");
            var teaserNavi = $$(".moduleTeaserNavi")[0];
            teaserNavi.addClassName("moduleTeaserNaviShort");
            for(i=1; i<teasers.length; i++)
            {
                var t = teasers[i];
                if(!t.hasClassName("active")){
                    t.hide();
                }
            }*/
            var parentContainer = $("content");
            var currentHtml = parentContainer.innerHTML;
            var newHtml = GENIOS.HomeSearch.parseSearchResponse(transport.responseText);
            var newElement = document.createElement("div");
            newElement.id= resultsId;
            newElement.className= "clearfix";
            newElement.innerHTML = newHtml;

            parentContainer.addClassName("boxHomeSearchresult");
            parentContainer.appendChild(newElement);
        }

        GENIOS.HomeSearch.registerOnlickEvents(resultsId);

    },

    saveResult:function(search, result)
    {
        result = encodeURIComponent(result);
        search = encodeURIComponent(search);
        var url = window.location.pathname;
        var quelle = GENIOS.getQueryVariable("quelle");
        if(quelle !== null){
            url = quelle;
        }
        var mypars = "q="+search+"&result="+result+"&url="+url;

        var newAjax = new Ajax.Request(
        "/save_result.php",
        {
            method: 'post',
            parameters: mypars
        });
    },

    registerOnlickEvents:function(resultsId)
    {
        //Pager
        $(resultsId).select( 'div.innerModulePager a' ).invoke('observe', 'click',
        function(e){
            GENIOS.HomeSearch.loadHref(resultsId, this.href, e, false);
        });
        // Filter Link
        $(resultsId).select( '.moduleSetResultLimits a' ).each(function(elem){elem.stopObserving("click")}); //unbind onclicks
        $(resultsId).select( '.moduleSetResultLimits a' ).invoke( 'observe', 'click',
        function( e ){
            GENIOS.HomeSearch.loadHref(resultsId, this.href, e, true);
        });
        // Sortierung
        $(resultsId).select( '.sortable a' ).invoke( 'observe', 'click',
        function( e ){
            GENIOS.HomeSearch.loadHref(resultsId, this.href, e, false);
        });
        // Optionen
        $(resultsId).select( '.boxLayerSettingsInner .boxOk input' ).invoke( 'observe', 'click',
        function( e ){
            var url = this.form.action+"?"+this.form.serialize();
            GENIOS.HomeSearch.loadHref(resultsId, url, e, false);
        });
        // "Meinten Sie" Link
        $(resultsId).select( '.moduleError a' ).invoke( 'observe', 'click',
        function( e ){
            GENIOS.HomeSearch.loadHref(resultsId, this.href, e, false);
        });
            

      
        // Bezahllayer-Funktion
        myDynamicPopup.initialize();
        initializeTooltip();


        if(!GENIOS.homeLoggedIn)
        {
            $$(".boxCheckboxBottom")[0].hide();
            $$(".boxAllBottom")[0].hide();
            $$(".boxCheckboxBottom")[0].hide();
            $$("a.boxSetNotice").each(function(e){
                e.hide();
            });
            $$(".innerModuleShowSelection").each(function(e){
                e.hide();
            });
            $$(".innerModuleTableList tr").each(
            function(e)
            {
                var tds = e.select("td");
                tds[0].hide();
                tds[1].hide();
            });
        }
    },

    loadHref:function(resultsId, url, e, showSpinner)
    {
        if(showSpinner){
            $( 'filterSpinner' ).show()
        }
        GENIOS.HomeSearch.loadContent(resultsId, url);
        e.preventDefault();

    },

    loadContent:function(resultsId, url)
    {
        var url = url.replace("dosearch", "cmssearch/");
        new Ajax.Updater(resultsId, url, {
            parameters:{
                'ajax':'true'
            },
            onComplete:function(transport){
                if( $( 'filterSpinner' ) ) $( 'filterSpinner' ).hide();
                blockFilter = false;
                GENIOS.HomeSearch.saveResult(HomeConf.searchString , transport.responseText);
                GENIOS.HomeSearch.registerOnlickEvents(resultsId);
            }
        });
    },

    loadExtendedSearch:function(resultsId, dbShortcut)
    {
        var url = GENIOS_DRUPAL_CONFIG.extendedSearchUrl+"/"+dbShortcut;
        var content = $(resultsId).innerHTML;
        var container = $$(".divColoredCorner")[0];
	   
	   
        var submit = $("search").select(".innerModuleButtonSubmit");
        var deleteSearch = $("search").select(".boxResetSearch");
        if(content.indexOf("boxPt4") ===-1){
            submit[0].hide();
            deleteSearch[0].hide();
            new Ajax.Request(url,{
                evalScripts:true,
                onComplete:function(transport){
                                
                    if(transport.status !== 200){
                        return;
                    }
                    $(resultsId).innerHTML = transport.responseText;
                    try{
                        switchToDateField();
                    }catch(e){}
                    try{
                        extendCalendars();
                    }catch(e){}
                                
                    var links = $(resultsId).select(".boxSearchButtonBottom a");
                    var isolators = $(resultsId).select(".boxIsolator");
                    links.each(
                    function(l, index){
                        if(index===1){//löschen link
                            l.href=document.location.href+"&resetSearch=true";
                        }else{
                            l.hide();
                        }         
                    }
                );
                    isolators.each(function(l){
                        l.hide();
                    })
                                
                    container.addClassName("boxIeHeight");

                }
            });
        }else{
            $(resultsId).innerHTML = "";
            container.style.height="";
            container.removeClassName("boxIeHeight");
            submit[0].show();
            deleteSearch[0].show();
        }
    }

}

GENIOS.getQueryVariable = function(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    }
    return null;
}


/**
 * Set all search links in Quellenliste
 */
GENIOS.setQuellenLinks = function(loggedIn)
{
    var l, dbkuerzel, idSplit, url;
    if(!loggedIn){
        var links = $$("td.boxLoupe a");
      
        links.each(function(l){
            idSplit = l.id.split("_");
            dbkuerzel = idSplit[1];
            url = GENIOS.SearchUrls[dbkuerzel];
            l.href=url;
            
        }); 
    }
}

/*KOPIERT AUS GRAILS inline  scripten*/
function referenceOps( a, refId ){
    a = $( a );
    a.stopObserving( 'click' );
    a.writeAttribute( 'onclick', '' );
    new Ajax.Request( 'undefined' == typeof( refId ) ? ( add2refLink + a.id.substring( 1 ) ) : ( removeRefLink + refId ),
    {
        onComplete:function( e ){
            var res = eval( "("+e.responseText+")" );
            if( null != res.refId ){
                a.title = 'Von Merkliste löschen';
                a.removeClassName( 'boxSetNotice' ).addClassName( 'boxNotice' );
                a.observe( 'click', function(e){
                    e.stop();
                    referenceOps( e.element().id, res.refId );
                } );
            }else{
                a.title = 'Dokument merken';
                a.removeClassName( 'boxNotice' ).addClassName( 'boxSetNotice' );
                a.observe( 'click', function(e){
                    e.stop();
                    referenceOps( e.element().id );
                } );
            }
            //new Ajax.Updater( 'layer_mygenios', geniosConsoleLink );
            $("layer_mygenios").hide();
            $$( '#activeReferenceGroupSize' ).invoke( 'update', res.count );
        }
    }
);
}

function openRelocate(queryKey){
    new Ajax.Request( baseHref+'alert/createAlertJobConsole',
    {
        parameters:{
            queryKey:queryKey
        },
        onComplete:
            function( e ){
            myDynamicPopup.showContent(e.responseText);
        }
    } );
}

function sendAlert(){
    new Ajax.Request( baseHref+'alert/createAlertJob',
    {
        parameters:$( 'createAlertJob' ).serialize(),
        onComplete:function( e ){
            myDynamicPopup.showContent( e.responseText );
            GENIOS.toggleVisibilty($('set_alert'));
        }
    } );
}

function updatePrice( form ){
    var sum = ( 'undefined' == typeof form ? $$( 'input.single' ) : $( form ).select( 'input.single' ) ).inject( 0, function( res, curr ){
        var priceText = curr.up( 'tr' ).down( 'span.price' ).innerHTML.replace( /,/, '.' );
        if( 'bezahlt' == priceText ) return res;
        return curr.checked ? ( res += parseFloat( priceText.substring( 0, priceText.lastIndexOf( ' ' ) ) ) ) : res;
    } );
    $$( '.priceAccumulator' ).invoke( 'update', '(' + sum.toFixed( 2 ).replace( /\./, ',' ) + ' € )' );
}

/*
 * für erweiterte Suche
 */
function switchToTimeFilter( fromRadio ){
    try{
        if( !fromRadio ) $( 'timeFilterSelector' ).checked = true;
        $( 'box_disabled_timeFilter' ).hide();
        $( 'box_disabled_DT' ).show();
        $$( '.calendarContainer' ).invoke( 'hide' );
        $( 'field_DT_from' ).value='';
        $( 'field_DT_to' ).value='';
    }catch(e){
        throw(e)
    }
}

function switchToDateField( fromRadio ){
    try{
        if( !fromRadio ) $( 'dateFieldSelector' ).checked = true;
        $( 'box_disabled_timeFilter' ).show();
        $( 'box_disabled_DT' ).hide();
        $( 'field_timeFilter' ).value='0';
    }catch(e){
        throw(e);
    }
}

GENIOS.Inputs = {
     
    data: {},
     
    defaults: function(elem){
        var that = this;
        that.data[elem.name] = elem.value;
        elem.observe('focus', function(){
            if(that.data[elem.name] !== elem.value){
                elem.style.color = "#000";
            }else if(that.data[elem.name] === elem.value){
                elem.value="";
                elem.style.color = "#000";
            }
        });

        elem.observe('blur', function(){
            if(that.data[elem.name] === elem.value || elem.value === ""){
                elem.value= that.data[elem.name];
                elem.style.color = "#999";
            }
        });
    }
    
}

GENIOS.MobileToggle = function(selectorHeads, selectorContents, openIndex){
    
    var heads = $$(selectorHeads);
    var contents = $$(selectorContents);
    var arrows = $$(".boxArrow");
    var activeIndex = -1;
    var that = this;
    
    var __construct = function(){
        arrows.each(function(e, i){
            e.style.display="block";
            toggle(e, i);
        });
        contents.each(function(e){e.hide()});
        
        heads.each(function(elem, index){toggle(elem, index);});
    }


    var open = function(index){
        
        var elem = contents[index];
        heads[index].addClassName("active");
        arrows[index].addClassName("active");
        if(elem !== undefined){
            activeIndex = index;
            new Effect.SlideDown(elem, {duration: 0.2});
        }
    }
    
    var close = function(index){
        var elem = contents[index];
        heads[index].removeClassName("active");
        arrows[index].removeClassName("active");
        if(elem !== undefined){
            new Effect.SlideUp(elem, {duration: 0.2});
        }
    }
    
    var toggle = function(elem, index){
        if(index === openIndex){
            open(index);
        }
            
        elem.observe('click', function(){
                
            if(activeIndex === index){
                close(index);
                activeIndex = -1;
            }else{
                var tmpActiveIndex = activeIndex;
                open(index);
                if(tmpActiveIndex !== -1)close(tmpActiveIndex);
            }
        });
    }

    
    __construct();
    
}

GENIOS.searchFormMobile = function(button){
    var url = button.form.action;
    var oneHasValue = false;
    var resultContainer = button.form.parentNode.select(".moduleSearchResult")[0];
    var loader = button.form.parentNode.parentNode.select(".moduleSpinner")[0];
    button.form.select("input").each(function(elem){
        if(elem.type === "text"){
            if(elem.value === GENIOS.Inputs.data[elem.name]){elem.value = ""}
            if(elem.value !== ""){oneHasValue = true;}
        }
    });
    
    var params = button.form.serialize();
    
    button.form.select("input").each(function(elem){
        if(elem.value === ""){elem.value = GENIOS.Inputs.data[elem.name]}
    });
    
    if(!oneHasValue){return false;}
    
    loader.show();
    new Ajax.Request(
    url,
    {
        method: 'post',
        parameters: params,
        onSuccess: function(transport){
            loader.hide();
            resultContainer.innerHTML = transport.responseText;
            GENIOS.addDateMobile(resultContainer);
            resultContainer.select('.innerModulePager a').invoke('observe', 'click',
            function(e){
                GENIOS.loadHrefMobile(resultContainer, this.href, e, false);
            });
        },
        onFailure : function(){
            loader.hide();
            GENIOS.HomeSearch.throwError()
        }
    });   
}

GENIOS.loadHrefMobile = function(resultContainer, url, e){
    e.preventDefault();
    new Ajax.Request(
    url,
    {
        method: 'get',
        onSuccess: function(transport){
            resultContainer.innerHTML = transport.responseText;
            resultContainer.select('.innerModulePager a').invoke('observe', 'click',
            function(e){
                GENIOS.loadHrefMobile(resultContainer, this.href, e, false);
            });
        },
        onFailure : GENIOS.HomeSearch.throwError
    });
}

/**
 *Holt das Datum aus boxCol3 (unsichtbar) und fügt es an boxCol4 an
 */
GENIOS.addDateMobile = function(resultsContainer){
    var dateElems = resultsContainer.select(".boxCol3 div");
    var date = dateElems[0].innerHTML;
    
    resultsContainer.select(".boxCol4").each(function(elem){
         elem.insert( { top: '<p>'+date+'</p>' } )
    });
   
}



