﻿/************ Validate Methods [begin] ********************/
function validateField($obj, funShowError, funHideError)
{
    var szKeys = $obj.eq(0).attr("validation");
    var arrKeyValues = szKeys.split("~");
    var RegularExpression=arrKeyValues[0];
    var nullWarning=arrKeyValues[1];
    var errorFormatWarning=arrKeyValues[2]; 
    
    funHideError($obj.eq(0)); 
    
    if($obj.length==0)
        return true; 
    if($obj.parents(".ValidationIgnore").length>0)
        return true;
    if($obj.css("display")=="none")
        return true;
    if(RegularExpression==null || RegularExpression=="")
    {
        return true;
    }   

    var szTagName = $obj.get(0).tagName.toLowerCase();
    var regex = new RegExp( RegularExpression ); 
    var szText =  $obj.eq(0).val(); 
    
    if(szText==null)
        szText="";
    
    if(szTagName=="input")
    {
        switch($obj.get(0).type)
        {
            case "text":
                if(!regex.test(szText))
                { 
                     if(szText=="")
                     {
                        funShowError( $obj, nullWarning );
                        return false;
                     }  
                     funShowError( $obj, errorFormatWarning );
                     return false;
                }  
                break; 
            case "password":
                if(!regex.test(szText))
                { 
                     if(szText=="")
                     {
                        funShowError( $obj, nullWarning );
                        return false;
                     } 
                     funShowError( $obj, errorFormatWarning ); 
                     return false;
                }
                break; 
            case "checkbox":
                if(!regex.test($obj.attr("checked")))
                { 
                     funShowError( $obj.parent(), errorFormatWarning ); 
                     return false;
                }
                else
                {
                    funHideError($obj.parent());
                }  
                break;  
        }  
    }
    else if(szTagName=="select")
    {
        if(!regex.test(szText))
        { 
             if(szText=="")
             {
                funShowError( $obj, nullWarning );
                return false;
             }  
             funShowError( $obj, errorFormatWarning );
             return false;
        } 
    }   
    
    return true;
}


function showValidateError($obj, errorMessage)
{
    $obj.addClass("ValidateFailed"); 
}
function hideValidateError($obj)
{
    $obj.removeClass("ValidateFailed"); 
}

/************ Validate Methods [end] ********************/


/***************** Password Strength [begin] ***********************/

function ShowPasswordStrength(password)
{
    var szPassword = password;
    if(szPassword == null || szPassword =="") return 0;
    
    var hasNumber =false , hasLowerChar =false, hasUpperChar =false, hasSpecialChar =false, hasEnoughLength =false;
    
    var regexNumber          = new RegExp("\\d");
    var regexLowerChar      = new RegExp("[a-z]"); 
    var regexUpperChar      = new RegExp("[A-Z]");  
    var regexSpecialChar    = new RegExp("[^0-9a-zA-Z\\s]");  
    var nLength                = szPassword.length;
   
    var hasNumber           = regexNumber.test(szPassword );
    var hasLowerChar       = regexLowerChar.test(szPassword );
    var hasUpperChar       = regexUpperChar.test(szPassword );
    var hasSpecialChar     = regexSpecialChar.test(szPassword );
    var hasEnoughLength  = nLength>=8;    

    var nCount             = 0;
    if(hasNumber)          nCount+=1;
    if(hasLowerChar)      nCount+=1;
    if(hasUpperChar)      nCount+=1;
    if(hasSpecialChar)    nCount+=1;
    if(hasEnoughLength) nCount+=1;    

    var nStrength = 0
    switch( nCount )
    {
        case 1:
            nStrength = 1;
            break;
        case 2:
            nStrength = 2; 
            break;
        case 3:
            nStrength = 3; 
            break;
        case 4:
            nStrength = 4; 
            break;
        case 5:
            nStrength = 4; 
            break; 
        default:
            nStrength = 0; 
            break;   
    }  
    
    return nStrength;
}

/***************** Password Strength [end] ***********************/