function startList()
{
    if (document.all && document.getElementById)
    {
        navRoot = document.getElementById("lvl_0");
        if (navRoot.childNodes)
        {
            for (i=0; i<navRoot.childNodes.length; i++)
            {
                node = navRoot.childNodes[i];
                if (node.nodeName=="LI" || node.nodeName=="td")
                {
                    node.onmouseover=function()
                    {
                        this.className+=" over";
                    }
                    node.onmouseout=function()
                    {
                        this.className=this.className.replace(" over", "");
                    }
                }
            }
        }
    }
}

function print_title(target_element_ID, text)
{
    document.getElementById(target_element_ID).innerHTML = text;
}

function weekbar_refresh_view(root_dir, cmd)
{
    date_nav_start_timestamp = document.getElementById('date_nav_start_timestamp').value;
    date_to_show_timestamp = document.getElementById('date_to_show_timestamp').value;
    //alert("nav: "+date_nav_start_timestamp);
    if (date_nav_start_timestamp > 1230764400 && date_nav_start_timestamp < 1577833200) // wochen-nav auf den zeitraum "2009-01-01 00:00:00" bis "2020-01-01 00:00:00" begrenzen
    {
        if (cmd == "previous")
            date_nav_start_timestamp = parseInt(date_nav_start_timestamp)-86400;
        else
        date_nav_start_timestamp = parseInt(date_nav_start_timestamp)+86400;
        document.getElementById('date_nav_start_timestamp').value = date_nav_start_timestamp;
        wochentage = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
        week_nav_ts_tmp = date_nav_start_timestamp;
        for (i=0; i<7; )
        {
            this_date = new Date(week_nav_ts_tmp*1000);
            this_month = this_date.getUTCMonth()+1;
            if (this_month < 10)
                this_month = '0'+this_month;
            this_day = this_date.getUTCDate();
            if (this_day < 10)
                this_day = '0'+this_day;

            document.getElementById('week_nav_day_'+i).innerHTML = wochentage[this_date.getUTCDay()]+"<br>"+this_day+"."+this_month+"."+this_date.getUTCFullYear();
            document.getElementById('week_nav_day_'+i).onclick = new Function("weekbar_show_date('" + week_nav_ts_tmp + "')");
            document.getElementById('week_nav_day_'+i).className = wochentage[this_date.getUTCDay()].toLowerCase();
            if (week_nav_ts_tmp == date_to_show_timestamp)
                document.getElementById('week_nav_day_'+i).className += ' selected';
            week_nav_ts_tmp += 86400;
            i++;
        }
    }
    else if (date_nav_start_timestamp > 1230764400)
    {
        alert("Termine nach dem 01.01.2020 können nicht angezeigt werden!");
        document.getElementById('week_nav_forward_img').src = root_dir+"graphics/icons/next_inactive.gif";
    }
    else if (date_nav_start_timestamp < 1230764401)
    {
        //alert("date_nav_start_timestamp: '"+date_nav_start_timestamp+"'");
        alert("Termine vor dem 01.01.2009 können nicht angezeigt werden!");
        document.getElementById('week_nav_back_img').src = root_dir+"graphics/icons/previous_inactive.gif";
    }
}

function weekbar_show_date(week_nav_ts_tmp)
{
    document.getElementById('date_to_show_timestamp').value = week_nav_ts_tmp;
    document.getElementById('cmd').value = "search_start";
    document.getElementById('cmd').form.submit();
}
/*
function submit_nl(root_dir)
{
    document.hp_form_1.action=root_dir+'newsletter-abonnieren/';
    document.hp_form_1.submit();
}
 */
function toggle_checkboxes_inside_wrapper(wrapper_id, input_prefix)
{
    element = document.getElementById(wrapper_id);
    form_inputs = element.getElementsByTagName("input");
    // regex here to check name attribute
    var regex = new RegExp(input_prefix, "i");
    for (i=0; i < form_inputs.length; i++)
    {
        if (regex.test(form_inputs[i].getAttribute("name")))
        {
            if (form_inputs[i].checked == false)
                form_inputs[i].checked = true;
            else
                form_inputs[i].checked = false;
        }
    }
}

function show_section(id)
{
    if (id == 'vk')
        document.getElementById('vk-level-1').style.display='block';
    else
        document.getElementById('vk-level-1').style.display='none';

    if (id == 'bb')
        document.getElementById('bb-level-1').style.display='block';
    else
        document.getElementById('bb-level-1').style.display='none';

    if (id == 'ec')
        document.getElementById('ec-level-1').style.display='block';
    else
        document.getElementById('ec-level-1').style.display='none';
}

function trigger_search(e, cmd, search_type, search_trigger)
{
    var characterCode;

    if (!e)
        e = window.event;

    if (e && e.which)
        characterCode = e.which; // Netscape/Firefox/Opera
    else
        characterCode = e.keyCode; // IE

    if (characterCode == 13) //if generated character code is equal to ascii 13 (if enter key)
    {
        document.getElementById('cmd').value = cmd;
        document.getElementById('search_type').value = search_type;
        document.getElementById('search_trigger').value = search_trigger;
        document.getElementById('sp_send_form').click();
        return false;
    }
    else
        return true;
}

function validate_pressed_key(e, char_code)
{
    var characterCode;

    if (!e)
        e = window.event;

    if (e && e.which)
        characterCode = e.which; // Netscape/Firefox/Opera
    else
        characterCode = e.keyCode; // IE

    if (characterCode == char_code)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function getElementsByClassName(myName)
{
    var CONTROLS = ["DIV","SPAN"];
    var result = [];
    var searchExpression = new RegExp( "\\b" + myName + "\\b" );

    for (var i=0; i < CONTROLS.length; i++)
    {
        var objects = document.getElementsByTagName(CONTROLS[i]);
        for (var j=0; j < objects.length; j++)
            if (objects[j].className.match(searchExpression))
                result.push(objects[j]);
    }
    return result;
}

function radioWert(rObj)
{
    for (var i=0; i<rObj.length; i++)
        if (rObj[i].checked)
            return rObj[i].value;
    return false;
}

function set_focus(focus)
{
    anchor = document.location.hash.substr(1,document.location.hash.length); // das zeichen # entfernen
    if (focus != '' && typeof(focus) == 'string' && document.getElementById(focus) && document.getElementById(focus).style.display != 'none') {
        document.getElementById(focus).focus();
    }
    /*
    else if (anchor == '')
	{
		if (document.getElementById('s_text') && document.getElementById('s_text').style.display != 'none')
			document.getElementById('s_text').focus();
		else if (document.getElementById('qs_text'))
			document.getElementById('qs_text').focus();
	}
     */
}

function openanchor(selObj,restore)
{
    eval("self.location='"+selObj.options[selObj.selectedIndex].value+"'");
    if (restore) selObj.selectedIndex=0;
}

// parameter:
// field -> form-element        -> zu kontrollierendes textfeld/textarea
// countfield (optional)        -> form-element fuer die ausgabe der noch verbliebenen freien zeichen
// maxlimit -> int              -> anzahl der maximal erlaubten zeichen
function countText(field, countfield, maxlimit)
{
    if (field.value.length > maxlimit)
        field.value = field.value.substring(0, maxlimit);
    else
        countfield.value = field.value.length+' / '+maxlimit;
}

function countWords(element, counter_name)
{
    var RegExpStr = /\,+/gi;
    var schlagwoerter_array = new Array();
    element.value = element.value.replace('  ', ' ');
    element.value = element.value.replace(' ,', ',');
    element.value = element.value.replace(', ', ',');
    element.value = element.value.replace(',,', ',');
    schlagwoerter_array = element.value.split(RegExpStr);
    textfield_length = element.value.length;
    if (schlagwoerter_array.length > 20 && element.value.charAt(textfield_length-1) == ",")
    {
        element.value = element.value.substr(0, textfield_length-1);
        alert('Sie haben bereits 20 Begriffe angegeben!');
    }
    document.getElementById(counter_name).value = (schlagwoerter_array.length)+" / 20";
}

function validate_plz(seite)
{
    document.getElementById('cmd').value = 'validate_plz';
    document.getElementById('seite').value = seite;
    document.getElementById('absenden').click();
}

function validate_ort(seite)
{
    document.getElementById('cmd').value = 'validate_ort';
    document.getElementById('seite').value = seite;
    document.getElementById('absenden').click();
}

function validate_anrede(seite)
{
    document.getElementById('cmd').value = 'validate_anrede';
    document.getElementById('seite').value = seite;
    document.getElementById('absenden').click();
}

function zeige_ergebnisliste_fuer_verzeichnis(kat_typ, kat_trigger, kat_ID)
{
    document.getElementById('inhalt').value='ergebnisse_liste';
    document.getElementById('search_type').value=kat_typ;
    document.getElementById('search_trigger').value = kat_trigger;
    document.getElementById('cmd').value='suche_starten';
    document.getElementById('absenden').click();
}

function show_entry_list_page(active_page_no, page_max)
{
    // seitenansicht aendern
    for (i=1; i <= page_max; i++)
        document.getElementById('page_data_'+i).style.display='none';
    $("#"+'page_data_'+active_page_no).fadeIn("slow");

    for (i=1; i <= page_max; i++)
        document.getElementById('eln_btn_'+i).className = '';
    document.getElementById('eln_btn_'+active_page_no).className = 'active';
}

function turn_page(page_id)
{
    // set constants
    var $pageheight = 460; // our single page height
    var $pagewidth = 555; // our single page width

    var $pageYpos = 0; // current Y position of our bg-image (in both pages)

    $(document).ready(function(){ // When the page is ready

        /* left page turner */
        $("#leftpage").click( function() {
            $pageYpos = $pageYpos + $pageheight; // update Y postion
            $("#leftpage").css("background-position", "0px "+$pageYpos+"px");// move the background position

            setTimeout ('$("#'+page_id+'").css("background-position", "top center");', 200);
            setTimeout ('$(".rightpage").css("background-position", "555px "+$pageYpos+"px");', 200);

        }); // close leftpage click function

        /* right page turner */
        $("#rightpage").click( function() {
            $pageYpos = $pageYpos - $pageheight; // note: minus page height
            $("#rightpage")
            .css("background-position", "0px "+$pageYpos+"px");

            $("#flip").css("background-position", "top left");
            setTimeout ('$("#'+page_id+'").css("background-position", "top center");', 200);
            setTimeout ('$("#leftpage").css("background-position", "555px "+$pageYpos+"px");', 200);

        }); // close rightpage click function
    }); // close doc ready
}

function show_tab(new_tab, layout_ID, init_element_ID)
{
    old_tab = document.getElementById('active_tab').value;

    document.getElementById(init_element_ID).style.display = 'none';
    document.getElementById(init_element_ID+'_tab').className = 'tab';

    document.getElementById(old_tab).style.display = 'none';
    document.getElementById(old_tab+'_tab').className = 'tab';

    $("#"+new_tab).fadeIn("slow");
    document.getElementById(new_tab+'_tab').className = 'active_tab';

    document.getElementById('active_tab').value = new_tab;
}

function show_tab_2(new_tab, layout_ID, init_element_ID, active_tab_ID)
{
    old_tab = document.getElementById(active_tab_ID).value;

    document.getElementById(init_element_ID).style.display = 'none';
    document.getElementById(init_element_ID+'_tab').className = 'tab';

    document.getElementById(old_tab).style.display = 'none';
    document.getElementById(old_tab+'_tab').className = 'tab';

    $("#"+new_tab).fadeIn("slow");
    document.getElementById(new_tab+'_tab').className = 'active_tab';

    document.getElementById(active_tab_ID).value = new_tab;
}

function toggle_display_by_element_ID(element_id)
{
    if (document.getElementById(element_id) && document.getElementById(element_id).style.display != 'none')
        document.getElementById(element_id).style.display='none';
    else
        document.getElementById(element_id).style.display='block';
}

function _toggle_sub_menu(element_id)
{
    if (document.getElementById(element_id) && document.getElementById(element_id).style.display != 'none')
        document.getElementById(element_id).style.display='none';
    else
        document.getElementById(element_id).style.display='block';
}

function toggle_user_location_edit_pane_view()
{
    if (document.getElementById('home_edit_pane') && document.getElementById('home_edit_pane').style.display != 'none')
    {
        document.getElementById('home_edit_pane').style.display='none';
        document.getElementById('qs_text').focus();
    }
    else
    {
        document.getElementById('home_edit_pane').style.display='block';
        document.getElementById('home_edit_town_name').focus();
    }
}

function set_home_town_data(root_dir, town_ID, town_name)
{
    document.hp_form_1.action=root_dir+'portal/'+town_name+'/';
    document.getElementById('home_edit_town_ID').value=town_ID;
    document.getElementById('home_edit_town_name').value=town_name;
    document.getElementById('home_edit_cmd').click();
}

function toggle_wochenplan_details(element, titel, beschreibung, von_uhrzeit, bis_uhrzeit, dauer, infolink, farbe)
{
    document.getElementById('wochenplan-details-box').style.display = 'block';

    var array_wochenboxen_hell = getElementsByClassName('wochenbox_hell');
    for (i=0; i<array_wochenboxen_hell.length; i++)
        array_wochenboxen_hell[i].style.borderColor = '#cccccc';

    var array_wochenboxen_dunkel = getElementsByClassName('wochenbox_dunkel');
    for (i=0; i<array_wochenboxen_dunkel.length; i++)
        array_wochenboxen_dunkel[i].style.borderColor = '#cccccc';

    element.style.borderColor = '#666666';

    if (typeof(titel) == "string" && titel != '')
        document.getElementById('wochenplan-details-titel').innerHTML = titel;

    var string_uhrzeit = '';
    if (von_uhrzeit != '')
        string_uhrzeit += "<br />"+von_uhrzeit;
    if (bis_uhrzeit != '')
        string_uhrzeit += ' - '+bis_uhrzeit+" Uhr";
    if (dauer != '')
        string_uhrzeit += '<br />'+dauer;

    document.getElementById('wochenplan-details-uhrzeit').innerHTML = string_uhrzeit;

    if (typeof(beschreibung) == 'string' && beschreibung != '')
        document.getElementById('wochenplan-details-beschreibung').innerHTML = "<br />"+beschreibung;

    if (typeof(infolink) == 'string' && infolink != '')
        document.getElementById('wochenplan-details-infolink').innerHTML = "<br /><br />Weitere Informationen gibt es auf <a style=\"color:#000;\" target=\"_blank\" href=\"http://"+infolink+"\">"+infolink+"</a>";
}

function set_calender_date(string_date)
{
    if (document.getElementById('search_date_start_select').checked)
        document.getElementById('search_date_start').value = string_date;
    else
        document.getElementById('search_date_end').value = string_date;
}

function toggle_ende_offen(checkbox_element, beginn_datum, ende_datum, ende_uhrzeit)
{
    beginn_datum_element = document.getElementById(beginn_datum);
    ende_uhrzeit_element = document.getElementById(ende_uhrzeit);
    ende_datum_element = document.getElementById(ende_datum);
    if (checkbox_element.value == '1')
    {
        checkbox_element.value = '0';
        ende_uhrzeit_element.value = '';
        ende_uhrzeit_element.readOnly = '';
        ende_uhrzeit_element.className = 'std-text-input';
        ende_uhrzeit_element.focus();
    }
    else
    {
        checkbox_element.value = '1';
        if (ende_datum_element.value == '' && beginn_datum_element.value != '')
            ende_datum_element.value = beginn_datum_element.value;
        ende_uhrzeit_element.value = '';
        ende_uhrzeit_element.readOnly = 'readonly';
        ende_uhrzeit_element.className = 'std-text-input readonly';
        document.getElementById('ve_kurzbeschreibung').focus();
    }
}

function UnCryptMailto(s)
{
    var n=0;
    var r="";
    for (var i=0; i < s.length; i++)
    {
        n=s.charCodeAt(i);
        if (n >= 8364)
        {n = 128;}
        r += String.fromCharCode(n-(1));
    }
    return r;
}

function linkTo_UnCryptMailto(s)
{
    location.href=UnCryptMailto(s);
}

function select_cat(cat_ID)
{
    document.getElementById('search_cat_ID').value = cat_ID;
    document.getElementById('cmd').value = 'search_start';
    document.hp_form_1.submit();
}

function toggle_nl_view(wrapper_id, wrapper_display_id) {
    if (document.getElementById(wrapper_id) && document.getElementById(wrapper_id).style.display != 'none') {
        $("#"+wrapper_id).slideUp("slow");
        document.getElementById(wrapper_display_id).value = 'none';
    }
    else {
        $("#"+wrapper_id).slideDown("slow");
        document.getElementById(wrapper_display_id).value = 'block';
    }
}

function check_password_safety(pwd){

    var msg = "";
    var points = pwd.length;
    var password_info = document.getElementById('password_info');

    var has_letter		= new RegExp("[a-z]");
    var has_caps		= new RegExp("[A-Z]");
    var has_numbers		= new RegExp("[0-9]");
    var has_symbols		= new RegExp("\\W");

    if(has_letter.test(pwd)) 	{ points += 4; }
    if(has_caps.test(pwd)) 		{ points += 4; }
    if(has_numbers.test(pwd)) 	{ points += 4; }
    if(has_symbols.test(pwd)) 	{ points += 4; }


    if( points >= 24 ) {
        msg = '<div class="pw_strength_indicator" style="background-color:#2D6A28;" title="Das eingegebene Passwort ist sehr sicher!">&nbsp;</div>';
    } else if( points >= 16 ) {
        msg = '<div class="pw_strength_indicator" style="background-color:#64CB5F;" title="Das eingegebene Passwort ist sicher!">&nbsp;</div>';
    } else if( points >= 12 ) {
        msg = '<div class="pw_strength_indicator" style="background-color:#E97328;" title="Das eingegebene Passwort ist relativ sicher!">&nbsp;</div>';
    } else {
        msg = '<div class="pw_strength_indicator" style="background-color:#CE0101;" title="Das eingegebene Passwort ist sehr unsicher!">&nbsp;</div>';
    }

    password_info.innerHTML = msg ;
}

function formatItem(row) {
    return "<em>" + row[3] + "</em>&nbsp;&nbsp;" + row[0];
}

function toggleTextBox(root_dir, boxID) {
    if ($("#"+boxID).css("height") == "57px") {
        $("#"+boxID).animate({
            height: "100%"
        }, 1500 );
        $("#"+boxID+"-btn").css("background-image", "url('"+root_dir+"graphics/icons/bullet_up.gif')");
    } else {
        $("#"+boxID).animate({
            height: "57px"
        }, 1500 );
        $("#"+boxID+"-btn").css("background-image", "url('"+root_dir+"graphics/icons/bullet_down.gif')");
    }
}
