function RequiredTextBox( ele, eleR, c )
{
    if( !ele ) { alert( "ele does not exists." ); return false; }
    if( !eleR ) { alert( "eleR does not exists." ); return false; }
    if( ele.value == "" ) { if( !xHasClass( ele, c ) ) xAddClass( ele, c ); eleR.style.display = "block"; return false; }
    else { if( xHasClass( ele, c ) ) xRemoveClass( ele, c ); eleR.style.display = "none"; return true; }
    alert( "??" ); 
    return false;
}

function RequiredMultiTextBox( ar, eleR, c )
{
    if( !ar ) { alert( "ar does not exists." ); return false; }
    var l = ar.length;
    if( l < 1 ) { alert( "ar is empty." ); return false; }
    if( !eleR ) { alert( "eleR does not exists." ); return false; }
    var empty = false;
    for( var i = 0; i < l; i++ ) 
    { 
        if( ar[i].value == "" ) { empty = true; if( !xHasClass( ar[i], c ) ) xAddClass( ar[i], c ); }
        else if( xHasClass( ar[i], c ) ) xRemoveClass( ar[i], c );
    }
    if( empty ) { eleR.style.display = "block"; return false; }
    else { eleR.style.display = "none"; return true; }
    alert( "??" ); 
    return false;
}

function ValidTextBox( ele, eleV, pattern, c )
{
    if( !ele ) { alert( "ele does not exists." ); return false; }
    if( !eleV ) { alert( "eleV does not exists." ); return false; }
    var r = new RegExp( pattern );
    if( !r.test( ele.value ) ) { if( !xHasClass( ele, c ) ) xAddClass( ele, c ); eleV.style.display = "block"; return false; }
    else { if( xHasClass( ele, c ) ) xRemoveClass( ele, c ); eleV.style.display = "none"; return true; }
    alert( "??" ); 
    return false;
}

function ValidMultiTextBox( ar, eleV, pattern, c )
{
    if( !ar ) { alert( "ar does not exists." ); return false; }
    var l = ar.length;
    if( l < 1 ) { alert( "ar is empty." ); return false; }
    if( !eleV ) { alert( "eleV does not exists." ); return false; }
    var valid = true;
    var r = new RegExp( pattern );
    for( var i = 0; i < l; i++ ) 
    { 
        if( !r.test( ar[i].value ) ) { valid = false; if( !xHasClass( ar[i], c ) ) xAddClass( ar[i], c ); }
        else if( xHasClass( ar[i], c ) ) xRemoveClass( ar[i], c );
    }
    if( !valid ) { eleV.style.display = "block"; return false; }
    else { eleV.style.display = "none"; return true; }
    alert( "??" ); 
    return false;
}

function ConfirmTextBox( ele, eleC, eleCC, c )
{
    if( !ele ) { alert( "ele does not exists." ); return false; }
    if( !eleC ) { alert( "eleC does not exists." ); return false; }
    if( !eleCC ) { alert( "eleCC does not exists." ); return false; }
    if( ele.value != eleC.value ) { if( !xHasClass( ele, c ) ) xAddClass( eleC, c ); eleCC.style.display = "block"; return false; }
    else { if( xHasClass( ele, c ) ) xRemoveClass( eleC, c ); eleCC.style.display = "none"; return true; }
    alert( "??" ); 
    return false;
}

function RequiredCheckBox( ar, eleR, c )
{
    if( !ar ) { alert( "ar does not exists." ); return false; }
    var l = ar.length;
    if( l < 1 ) { alert( "ar is empty." ); return false; }
    if( !eleR ) { alert( "eleR does not exists." ); return false; }
    var check = false;
    for( var i = 0; i < l; i++ ) if( ar[i].checked ) check = true;
    if( !check ) { for( var i = 0; i < l; i++ ) if( !xHasClass( ar[i], c ) ) xAddClass( ar[i], c ); eleR.style.display = "block"; return false; }
    else { for( var i = 0; i < l; i++ ) if( xHasClass( ar[i], c ) ) xRemoveClass( ar[i], c ); eleR.style.display = "none"; return true; }
    alert( "??" ); 
    return false;
}

function CheckJSONData( data )
{
    if( !data ) { alert( "data does not exists." ); return false; }
    var l = data.length;
    if( l < 1 ) { alert( "data is empty." ); return false; }
    var good = true;
    for( var i = 0; i < l; i++ )
    {
        var o = data[i];
        switch( o.Type )
        {
            case "RequiredTextBox" : if( !RequiredTextBox( o.Ele, o.EleR, o.Class ) ) good = false; break;
            case "RequiredMultiTextBox" : if( !RequiredMultiTextBox( o.Array, o.EleR, o.Class ) ) good = false; break;
            case "ValidTextBox" : if( !ValidTextBox( o.Ele, o.EleV, o.Pattern, o.Class ) ) good = false; break;
            case "ValidMultiTextBox" : if( !ValidMultiTextBox( o.Array, o.EleV, o.Pattern, o.Class ) ) good = false; break;
            case "ConfirmTextBox" : if( !RequiredTextBox( o.Ele, o.EleC, o.EleCC, o.Class ) ) good = false; break;
            case "RequiredCheckBox" : if( !RequiredTextBox( o.Array, o.EleR, o.Class ) ) good = false; break;
        }
    }
    return good;
}

function DisplayIf( ele, b )
{
    if( !ele ) { alert( "ele does not exists." ); return false; }
    if( b ) ele.style.display = "block";
    else ele.style.display = "none";
}

function ToggleClassIf(ele, c, b)
{
    if( !ele ) { alert( "ele does not exists." ); return false; }
    if (b && !xHasClass(ele, c)) xAddClass(ele, c);
    else if (!b && xHasClass(ele, c)) xRemoveClass(ele, c);
}
