/*****************************************
    Validate form functions
********************************************/
    
    
    function clientScriptFormValidation( current_form, defaultMessage )
    {
        var message = (defaultMessage) ? defaultMessage :'';
        var error_texts  = new Array();
        var errCnt = 0;
        var focusOn = null;
        
        var form_elements = current_form.elements;
        var len = form_elements.length;
        for( var i = 0; i < len; i++ )
        {
            var elm = form_elements[i];
            if( elm.name == "required" )
            {
                var inputName = String( elm.value );
                var input_el = form_elements[ inputName ];
                
                if( input_el )
                {
                    var isOk =  checkRequiredElement( input_el, inputName, form_elements );
                    
                    if( !isOk )
                    {
                        var textEl = form_elements[ 'required_'+inputName+'_text' ];
                        
                        try
                        {
                            if( !focusOn )
                            {
                                focusOn = input_el;
                            }
                        }
                        catch(err)
                        {
                            //Focus on a hidden element throws a exception
                        }
                        
                        errCnt++;
                        
                        if( textEl )
                            error_texts[ error_texts.length ] = unescape( textEl.value );
                    }
                }
                
                
            }
            else if ( elm.name == "required_condition" )
            {
                var conditionName = String( elm.value );
                var conditionEl = document.getElementById( conditionName );
                if( conditionEl.checked )
                {
                    
                    var input_els = document.getElementsByName( "required_"+conditionName );
                    
                    if( input_els )
                    {
                        var con_len = input_els.length;
                        for( var ci = 0; ci < con_len; ci++ )
                        {
                            var inputName = String( input_els[ ci ].value );
                            var input_el = form_elements[ inputName ];
                            if( input_el )
                            {
                                var isOk = checkRequiredElement( input_el, inputName, form_elements );
                                
                                if( !isOk )
                                {
                                    var textEl = form_elements[ 'required_'+inputName+'_text' ];
                                    
                                    try
                                    {
                                        if( !focusOn )
                                        {
                                            focusOn = input_el;
                                        }
                                    }
                                    catch(err)
                                    {
                                        //Focus on a hidden element throws a exception
                                    }
                                    
                                    errCnt++;
                                    
                                    if( textEl )
                                        error_texts[ error_texts.length ] = unescape( textEl.value );
                                }
                            }//if el
                        }// for conditional elements
                    }//if conditional elements
                }//if conditon checked
            } 
        }//for
        
        if( errCnt > 0 )
        {
            try
            {
                focusOn.focus();
            }
            catch(err)
            {
            }
            
            alert( message + '\n\n' + error_texts.join('\n') );
            return false;
        }
        else
        {
            return true;
        }
    }
    
    //helper checks one inputelement
    function checkRequiredElement( input_el, inputName, form_elements )
    {
        var isOk = true;
        var input_value = '';
        
        var tagName = String( input_el.tagName ).toUpperCase();
        var type = String( input_el.type ).toUpperCase();
        
        if( tagName == 'SELECT' )
        {
            input_value = input_el.options[ input_el.selectedIndex ].value;
        }
        else if( type == 'RADIO' || type == 'CHECKBOX' )
        {
            return ( isChecked( inputName ) );
        }
        else 
        {
            input_value = input_el.value;
        }
        
        if( trim( input_value ) == '' )
        {
            isOk = false;
        }
        else
        {
            var typeOfElement = form_elements[ 'required_'+inputName+'_type' ];
            
            if( typeOfElement )
            {
                if( typeOfElement.value == 'email' )
                {
                    if( !validateEmail( input_value ) )
                    {
                        isOk = false;
                    }
                }
            }
            
            var typeOfElement = form_elements[ 'required_'+inputName+'_compare' ];
            
            if( typeOfElement )
            {
                var compareTo = form_elements[ typeOfElement.value ];
                
                var compareTo_value = '';
        
                if( compareTo.tagName == 'SELECT' )
                {
                    compareTo_value = compareTo.options[ compareTo.selectedIndex ].value;
                }
                else 
                {
                    compareTo_value = compareTo.value;
                }
                
                if( compareTo_value != input_value )
                {
                     isOk = false;
                }
            }
            
        }
        return isOk;
    }
    
    function trim( str )
    {
        var temp = new String( str );
        // blanks in the begining
        try
        {
            var restart = /^\s*/;
            temp = temp.replace(restart, '');
        }
        catch(e){}
        
        return temp;
    }
    
/*****************************************
    Validate emails
********************************************/
    
    function checkTestMail( error_msg )
    {
        if( !validateEmail( String( document.theTestForm.sendToMail.value ) ) )
        {
            alert( error_msg );
            document.theTestForm.sendToMail.focus();
            return false;
        }
        else
        {
            return true;
        }
    }
    
    function alertTestMailResult( msg )
    {
        alert( msg );
        history.go( -1 );
    }

    
    function validateEmail(str)
    {
        // are regular expressions supported?
        var supported = 0;
        if( window.RegExp )
        {
            var tempStr = "a";
            var tempReg = new RegExp( tempStr );
            if (tempReg.test( tempStr ) )
                supported = 1;
        }
        if( !supported ) 
            return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
    
        var r1 = /(@.*@)|(\.\.)|(@\.)|(^\.)/g;
        var r2 = /^.+\@(\[?)[a-z0-9\-\.]+\.([a-z]{2,3}|[0-9]{1,3})(\]?)$/gi;
        
        return (!r1.test(str) && r2.test(str));
    }
    
/*****************************************
    isChecked
    
********************************************/
    function isChecked( elementsName )
    {
        var oki = false;
        var elementColl = document.getElementsByName( elementsName );
        
        if( elementColl )
        {
            var count = elementColl.length
            for( var i = 0; i < count && !oki; i++ )
            {
                var el = elementColl[i];
                if( el )
                {
                    oki = el.checked;
                }
            }//for
        }
        return oki;
    }