﻿




/*****************************************************************/
/*********  switch language variant ******************************/
/*****************************************************************/
function switchLanguage() {
            var pagepath = document.location.pathname;
            
            
            var pageswitch  =  pagepath.replace( /\/de\//gi, "/en/" );
            pageswitch = pageswitch.replace( /\\de\\/gi, "\\en\\" );
            
            txtpageswitch = "file://" + pageswitch;
            document.location.href=txtpageswitch;
}
/*****************************************************************/
/*********  hitlists: calculate file size MB  *******************/
/*****************************************************************/
function calculateFilesize(str) {
    /* begin calculation filesize in mb*/
    var txt_filesize_mb         = parseFloat(str) / 104857.6; 
    txt_filesize_mb             = Math.round(txt_filesize_mb) / 10; 
    if (txt_filesize_mb < 0.1) {
        txt_filesize_mb = 0.1;
    }
    str_filesize_mb = new String(txt_filesize_mb);
    if (str_filesize_mb.indexOf('.') == -1) {
        str_filesize_mb = str_filesize_mb + '.0';
    }
    document.write(str_filesize_mb);
    /* end calculation filesize in mb*/
}

/*****************************************************************/
/********* fx.slide: advanced search *****************************/
/*****************************************************************/
window.addEvent('domready', function(){    
if ($('d_search_frame'))
{
    var mySlideOpt = new Fx.Slide('d_search_frame', {
    
        onStart: function(){
            toggleSearch();
        }
    });
            
        $('b_search_opt').addEvent('click', function(e){
            e = new Event(e);
            mySlideOpt.toggle();
            e.stop();
        });
        mySlideOpt.hide();
}
});
/*****************************************************************/
/********* fx.slide: advanced search open ************************/
/*****************************************************************/
window.addEvent('domready', function(){    
if ($('d_search_frame_open'))
{
    var mySlideOpt = new Fx.Slide('d_search_frame_open', {
        onStart: function(){
            toggleSearch();
        }
    });
            
    $('b_search_opt').addEvent('click', function(e){
            e = new Event(e);
            mySlideOpt.toggle();
            e.stop();
    });
    $('i_search').style.color = "#a7a6aa";
}
});
/******************************************************************/
/********* language selection: toggle button  *********************/
/******************************************************************/
function toggleLang() {
    $('c_show_lang').toggleClass('show');
}
/******************************************************************/
/********* advanced search: toggle button  ************************/
/******************************************************************/
function toggleSearch(do_not_clear) {
    $('arrow_search_opt').toggleClasses('but_arrow_sub_hi');
    $('b_search_opt').toggleClasses('submit_nobg_hi');
    if(($('i_search').value == search_text_insert || $('i_search').value == 'Suche im DownloadCenter') && !do_not_clear && $('b_search_opt').hasClass('submit_nobg_hi')){
        $('i_search').value = '';
    }
    
    /* Hide open context menu */
    if (lastbuttonid)
    {
        $('menu_' + lastbuttonid).removeClass('show');
    }
}
/******************************************************************/
/********* advanced search: toggle button  ************************/
/******************************************************************/
function toggleInputColor(id) {
    $(id).setStyle('color', '#000');
}
/*****************************************************************/
/********* toggleClasses implementation for IE6 ******************/
/*****************************************************************/
Element.extend({
    toggleClasses: function(className1, className2){
        if (this.hasClass(className1)) {
            var tempClass = className1;
            className1 = className2;
            className2 = tempClass;
        }
        return this.removeClass(className2).addClass(className1);
    }
});
/******************************************************************/
/********* Breadcrumb: return breadcrumb-HTML *********************/
/******************************************************************/
function getBreadcrumb () {
    if ($('topnav') && $('contentnav')) {
        var level0 = $('topnav').getElement("a[class='topnav_hi']");
        var level1 = $('contentnav').getElement("a[class='anav_level_1_hi']");
        var level2 = $('contentnav').getElement("a[class='anav_level_2_hi']");
        var level3 = $('contentnav').getElement("a[class='anav_level_3_hi']");
        var level4 = $('contentnav').getElement("a[class='anav_level_4_hi']");
        var level5 = $('contentnav').getElement("a[class='anav_level_5_hi']");
        for (i = 5; i >= 0; i--) {
            if (eval('level' + i)) {
                var anc = eval('level' + i);
                if (anc) {
                    var headline = anc.getText();
                    window.addEvent('domready', function() {
                        $('content').setText(headline);
                        if ($('content_search') && $('i_search')) 
                        {
                            
                            if ((level2 != null) && ($('i_search').value == $('content_search').value)) {
                                $('content_search').setText('Suche in ' + headline);
                                $('i_search').value = 'Suche in ' + headline;
                                search_text_insert = $('content_search').getText();
                            }
                            
                        }
                    });
                    break;
                }
            }
        }
        if (window.ie6) {
            lev0 = level0.innerHTML;
            result = lev0.match(/^([^<]+)</i);
            
            if (result[1])
                level0_text = result[1];
            
            level0_href = level0.getProperty('href');
        } else {
            level0_href = level0.getProperty('href');
            level0_text = level0.getText();
        }
                
        var str_breadcrumb = ''; 
        if (level0 != null) {
            if (level1 != null) {
                str_breadcrumb += '<div class="breadcrumb_item_first"><a href="' + level0_href + '" class="normal">' + level0_text + '</a></div>';
            } else {
                str_breadcrumb += '<div class="breadcrumb_item_first">' + level0_text + '</div>';
            }
        }
        if (level1 != null) {
            if (level2 != null) {
                str_breadcrumb += '<div class="breadcrumb_item"><a href="' + level1.getProperty('href') + '" class="normal">' + level1.getText() + '</a></div>';
            } else {
                str_breadcrumb += '<div class="breadcrumb_item">' + level1.getText() + '</div>';
            }
        }
        if (level2 != null) {
            if (level3 != null)
                str_breadcrumb += '<div class="breadcrumb_item"><a href="' + level2.getProperty('href') + '" class="normal">' + level2.getText() + '</a></div>';
            else
                str_breadcrumb += '<div class="breadcrumb_item">' + level2.getText() + '</div>';
        }
        if (level3 != null) {
            if (level4 != null)
                str_breadcrumb += '<div class="breadcrumb_item"><a href="' + level3.getProperty('href') + '" class="normal">' + level3.getText() + '</a></div>';
            else
                str_breadcrumb += '<div class="breadcrumb_item">' + level3.getText() + '</div>';
        }
        if (level4 != null) {
            if (level5 != null)
                str_breadcrumb += '<div class="breadcrumb_item"><a href="' + level4.getProperty('href') + '" class="normal">' + level4.getText() + '</a></div>';
            else
                str_breadcrumb += '<div class="breadcrumb_item">' + level4.getText() + '</div>';
        }
        return '<div class="breadcrumb_frame">' + str_breadcrumb + '<div class="clear"></div></div>';
    }
}
/******************************************************************/
/********* Indexpage: AJAX-Functionality **************************/
/******************************************************************/
var searchform_ajax = new XHR({ 
    method: 'post',
    autoCancel: true,
    onSuccess: function(req) {
            $('s_type').empty();
            innerSelect( $('s_type'), '<option value="*">Alle</option>' + req.trim() );
        
            var options = $('s_type').getChildren();
            var numtypes = options.length - 1;
            $('s_type_num').setText('(' + numtypes + ')');
        
            var is_disabled = $('s_category').getProperty('disabled');
            if (!is_disabled) {
              updateHitsCounter();
            };
    }
});
var searchform_count_ajax = new XHR({ 
    method: 'post',
    autoCancel: true,
    onSuccess: function(req) {
        if (req.trim() >= 100) {
            $('numhits').setText('> 100');
        }else{
            $('numhits').setText(req.trim());
        }
        $('wait_animation').setStyle('visibility', 'hidden');
        $('hitcount').setStyle('visibility', 'visible');
    }
});
function getSearchParams() {
    var fields = ["s_category", "s_type", "s_lang", "i_search", "s_location_id", "s_synonymquery", "mainarea"];
    var params = "?";
    fields.each(function (val) {
        var field_name = $(val).getProperty("name");
        var field_value = $(val).getValue();
        params += field_name + "=" + escape(field_value) + "&";
    });
    var date_fields = $$('input[name=s_actdate]');
    date_fields.each(function(val){
        if (val.getProperty('checked') != '') {
            var elt_value = val.getValue();
            params += "s_actdate=" + escape(elt_value) + "&";
        }
    });
    var format_fields = $$('input[name=s_format_searchstring]');
    format_fields.each(function(val){
        if (val.getProperty('checked') != '') {
            var elt_value = val.getValue();
            params += "s_format_searchstring=" + escape(elt_value) + "&";
        }
    });
    params += "search_send=true";
    return params;
}
function innerSelect(id,html)
{
    var sel = $(id);
    if(window.ie)
    {
        html = '<select>'+html+'</select>';
        var temp = new Element('div');
        temp.setHTML(html);
        sel.setHTML('');
        temp.getElements('option').each( function(opt){opt.injectInside(sel);} );
    }
    else
    {
        sel.setHTML(html);
    }
}
function searchFormSubmit()
{
  $('f_search').submit();
}
/******************************************************************/
/********* DVD: Highlight searchterm on page **********************/
/******************************************************************/
function highlightTextOnPage() {
    var pos = 0;
    var cURL = window.location.href;
    var qPos = cURL.indexOf("?");
    if (qPos != -1){
            var urlLength = cURL.length;
            var SearchItem = cURL.substring(qPos+1, urlLength);
         
         if (document.all) {        
              var mytext = document.body.createTextRange();
              var found;
              var mypos = 0;
                    
                for (var ii=0; ii<=mypos && (found=mytext.findText(SearchItem)) != false; ii++) {
                 mytext.moveStart("character", 1); 
                 mytext.moveEnd("textedit"); 
             }
             if (found) {
                 mytext.moveStart("character", -1);
                 mytext.findText(SearchItem);
                 mytext.select();
                 mytext.scrollIntoView();
                 mypos++;
             }
    
         }
         else if (document.layers) {
             find(SearchItem);
         }  
    }
}
/**********************************************************/
/********* returns the query variable value ***************/
/**********************************************************/
function getQueryVariable2(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 unescape(decodeURI(pair[1])).replace(/\+/g, ' ');
      }
    } 
  return "1_noquery_1";
}
/**********************************************************/
/**************** highlighting of search terms ************/
/**********************************************************/
function trimAll(sString) 
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}
function highlightInnerHtml( objRegExp, objElement ) {
    var orig = objElement.innerHTML, replacement = highlightRegExp( objRegExp, orig );
    if( orig != replacement )
        objElement.setHTML( replacement );
}
function highlightRegExp( objRegExp, str ) {
    var orig = str, replacement = orig;
    
    var result = objRegExp.exec( orig );
    if( null != result ) {
        replacement = '';
        while( null != result ) {
            replacement += result[1]+'<span class="searchres_hi">'+result[2]+'</span>';
            
            orig = orig.substr( objRegExp.lastIndex );
            objRegExp.lastIndex = 0;
            
            result = objRegExp.exec( orig );
        }
        replacement += orig;
    }
    return replacement;
}
function get_words(str) {
    var no_quotes = '';
    var arrPhrases = new Array();
    var last_pos = 0;
    var beg_quo;
    while( last_pos < str.length && ( beg_quo = str.indexOf( '"', last_pos ) ) >= 0 ) {
        no_quotes += ' ' + str.substr( last_pos, beg_quo - last_pos );
        var end_quo = str.indexOf( '"', beg_quo+1 );
        if( -1 == end_quo )
            last_pos = beg_quo + 1;
        else {
            last_pos = end_quo + 1;
            if( beg_quo+1 != end_quo )
                arrPhrases.push( mask_regexp( str.substr( beg_quo+1, end_quo-beg_quo-1 ) ) );
        }
    }
    if( last_pos < str.length )
        no_quotes += ' ' + str.substr( last_pos );
    no_quotes = mask_regexp( no_quotes );
    no_quotes = trimAll( no_quotes ).replace( /\s{2,}/gi, ' ' );
    if( no_quotes.length > 0 )
        arrPhrases = arrPhrases.concat( no_quotes.split( /\s+/ ) );
    return arrPhrases;
}
function mask_regexp(str) {
    str = str.replace( /[\*\+\-\"\']/gi, '' );
    return str.replace( /([\^\$\(\)\[\]\.\?\*\+\"\'\\])/gi, '\\$1' );
}
function highlightFulltext (searchterm, searchoption) {
    searchterm = trimAll(searchterm);
    if ( searchterm != '' ) {
        if( searchoption == 'exact' ){
            arr_words = new Array();
            searchterm = searchterm.replace( /([\*\?])/g, '\\$1');
            arr_words[0] = searchterm;
        } else {
            searchterm = searchterm.replace( /([\*\?])/g, '');
            arr_words = get_words( searchterm );
        }    
     
        if( arr_words && arr_words.length > 0 ) {
            // sort words by LENGTH - the longest are earlier in order to highlight the longest word instead of subparts of the one
            arr_words.sort( function( x, y ) {
                return x.length < y.length ? 1 : ( x.length > y.length ? -1 : 0 );
            } );
            var re_words = arr_words.join( '|' );
            //var objRegExp = new RegExp( '^((?:[^<]*<[^>]*>)*?[^<]*?)\\b(' + re_words + ')', 'gi' );
            var objRegExp = new RegExp( '^((?:[^<]*<[^>]*>)*?[^<]*?)(' + re_words + ')', 'gi' );
            $$("span").each(function(el){
                var elementid = el.id; 
                if( (elementid.indexOf("_title") != -1) || (elementid.indexOf("_type") != -1) || (elementid.indexOf("_group") != -1) ) {
                    highlightInnerHtml( objRegExp, el );
                }
            });
        }
    }
}
window.addEvent('domready', function(){
    var searchterm = getQueryVariable2('query');
    if (searchterm != "1_noquery_1") {
        highlightFulltext ( searchterm ,getQueryVariable2('s_format_searchstring'));
    };
    searchterm = getQueryVariable2('search');
    if (searchterm != "1_noquery_1") {
        highlightFulltext ( searchterm ,getQueryVariable2('s_format_searchstring'));
    };
});
function brightenOk() {
    document.getElementsByName("bsearch")[0].src = "/file_pics_se/but-ok-overlay.gif";
}
function darkenOk() {
    document.getElementsByName("bsearch")[0].src = "/file_pics_se/but-ok.gif";
}
function brighten2Ok() {
    document.getElementsByName("csearch")[0].src = "/file_pics_se/but-ok-overlay.gif";
}
function darken2Ok() {
    document.getElementsByName("csearch")[0].src = "/file_pics_se/but-ok.gif";
}

