/**
 * allgemeine Formularfunktionen
 */

var   hidden = '';
var     deps = new Array();
var depcache = new Array();
var    later = new Array();
var fld_save = new Object();


function dyn_form_clear()
{
    hidden = '';
    deps = new Array();
    depcache = new Array();
    later = new Array();
    fld_save = new Object();
}

// prüft den Wert eines Formularelements

function checkElementValue ( formname, elname, operator, value )
{
    var e = document.getElementsByName ( elname );

    if ( e.length == 0 )
    {
        e = document.getElementsByName ( elname + '[]' );

        if ( e.length == 0 )
            return false;
    }

    f = new Array();

    for ( var i = 0; i < e.length; i++ )
        if ( e[i].form.name == formname )
            f.push(e[i]);

    val = false;

    switch ( f[0].type )
    {
        case 'hidden'          :
        case 'password'        :
        case 'text'            : if ( value == '' && f[0].value.length > 0 )
                                     return eval ( 'true' + operator + 'false' );
                                 if ( f[0].value.length > 0 ) val = f[0].value;
                                 break;
        case 'select-one'      :
        case 'select-multiple' : if ( value == '' )
                                     return ( operator == '==' ) ? false : true;

                                 for ( i = 0; i < f[0].options.length; i++ )
                                     if ( f[0].options[i].value == value )
                                         return eval ( f[0].options[i].selected + operator + 'true' );
                                 break;
        case 'radio'           :
        case 'checkbox'        : if ( value == '' )
                                 {
                                     for ( i = 0; i < f.length; i++ )
                                         if ( f[i].checked )
                                             return ( eval ( 'false' + operator + 'true' ) );

                                     return ( eval ( 'true' + operator + 'true' ) );
                                 }
                                 for ( i = 0; i < f.length; i++ )
                                     if ( f[i].value == value )
                                         return eval ( f[i].checked + operator + 'true' );
                                 break;
    }

    if ( value == '' )
        return ( eval ( val + operator + 'false' ) );
    else
        return eval ( '"' + value + '"' + operator + '"' + val + '"' );
}

function checkDeps ( dep )
{
    for ( stat in deps[dep] )
    {
        for ( field in deps[dep][stat] )
        {
            if ( stat == 'folded' )
            {
                if ( typeof depcache[deps[dep]['folded'][field]] != 'undefined' )
                    truth = depcache[deps[dep]['folded'][field]];
                else
                {
                    truth = eval ( deps[dep]['folded'][field] );
                    depcache[deps[dep]['folded'][field]] = truth;
                }

                if ( truth )
                {
                    hidden += ';' + field;
                    $('#' + field).css('display', 'none');
                }
                else
                {
                    eval("hidden = hidden.replace(/"+field+"/,'');");
                    if ( document.all )
                        $('#' + field).css('display', 'block');
                    else
                        $('#' + field).css('display', 'table-row');
                }
            }
            else if ( stat == 'frontend_required' )
            {
                if ( typeof depcache[deps[dep]['frontend_required'][field]] != 'undefined' )
                    truth = depcache[deps[dep]['frontend_required'][field]];
                else
                {
                    truth = eval ( deps[dep]['frontend_required'][field] );
                    depcache[deps[dep]['frontend_required'][field]] = truth;
                }

                if ( truth )
                {
                    if ( $('#' + field + ' .mandatory' ).size() == 0 )
                    {
                        if ( $('#' + field + ' .th_show_error label' ).size() )
                        {
                            $('#' + field + ' .th_show_error label' ).append('<span class="mandatory">*</span>');
                        }
                        else if ( $('#' + field + ' .th_label label' ).size() )
                            $('#' + field + ' .th_label label' ).append('<span class="mandatory">*</span>');
                    }
                }
                else
                {
                    $('#' + field + ' .th_show_error' ).addClass('th_label');
                    $('#' + field + ' .th_show_error' ).removeClass('th_show_error');
                    $('#' + field + ' span.mandatory' ).remove();
                }
            }
        }
    }
}

function clear_folded()
{
    if ( typeof hidden != 'undefined' )
    {
        rows = hidden.split(';');
        while ( row = rows.pop() )
            if ( $('#'+row).css('display') == 'none' && fld_save [ row ] != 1 )
                $('#'+row).remove();
    }
}

function nl2br ( text )
{
    text = text.replace ( /\n\r/g, '<br/>' );
    text = text.replace ( /\n/g,   '<br/>' );
    text = text.replace ( /\r/g,   '<br/>' );

    return text;
}