/*
 * Project: news.mapsofworld.com
 * Source File: Validator.js
 * Description: It will Validate all the input fields entered by User
 * Author : Gaurav Mudgal
 * Creation Date : May 05, 2009
 * Modified Date : May 05, 2009
 * Version : 1.0
 * Revisions: 0
 * 
 * Copyright Info: Copyright by compare Solutions Ltd.
 * Copying or reproduction without prior written approval is prohibited. 
 * All rights reserved.
 * 
 */

function trim(str)
{
    return str =str.replace(/^\s+/,"").replace(/\s+$/,"");
}

function validator(fObject)
{
    var propertyArr = new Array();
    var tempArr = new Array();
    var len = 0;
    for(var i=0;i < document.forms[''+fObject+''].elements.length;i++) {  
        fField = trim(document.forms[''+fObject+''].elements[i].name); 
        fTitle = trim(document.forms[''+fObject+''].elements[''+fField+''].id);
            
        propertyArr = fTitle.split(",");
        for(var j=0;j<propertyArr.length;j++){
            if(propertyArr[j].match(/[0-9]/)){
              tempArr = propertyArr[j].split("-"); 
              propertyArr[j] = tempArr[0];
              len = tempArr[1];
            }  
            switch(trim(propertyArr[j])){
                case "required":
                    if(trim(document.forms[''+fObject+''].elements[''+fField+''].value) <=0)
                    {
                        alert("Fields marked with * are mandatory");
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;

                case "emailChk":
                    if (!document.forms[''+fObject+''].elements[''+fField+''].value.match(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/))
                    {
                        alert("Please fill the valid E-mail Id"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;

               case "letters-only": 
                    if((document.forms[''+fObject+''].elements[''+fField+''].value).match(/[^a-zA-Z. ]/))
                    {
                        alert("Special Characters (Ex. @,#,$ etc) are not allowed"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break; 

              case "digits-only": 
                    if((document.forms[''+fObject+''].elements[''+fField+''].value).match(/[^0-9+-]/))
                    {
                        alert("Should be Numeric Only"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;
              case "minLength": 
                    if(trim((document.forms[''+fObject+''].elements[''+fField+''].value)).length < len)
                    {
                        alert("Minimum Length should be "+len+" Characters"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;  
              case "maxLength": 
                    if(trim((document.forms[''+fObject+''].elements[''+fField+''].value)).length > len)
                    {
                        alert("Maximum Length can't be more than "+len+" Characters"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;  
              case "passwordCheck":
                    if(trim(document.forms[''+fObject+''].elements[i-1].value) != trim(document.forms[''+fObject+''].elements[i].value))
                    {
                        alert("Confirm Password do not match with Password");
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;
              case "badCharFilter":
                    if((document.forms[''+fObject+''].elements[''+fField+''].value).match(/[@:!"'?\\+=<>~/`$%^*|;&#]/))
                    {
                        alert("Special Characters (Ex. @,#,$ etc) are not allowed"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break;
              case "pwdCharBlock":
                    if((document.forms[''+fObject+''].elements[''+fField+''].value).match(/[:!"'?\\+=<>~/`^|;&]/))
                    {
                        alert("Special Characters (Ex. :,?,+ etc) are not allowed"); 
                        document.forms[''+fObject+''].elements[''+fField+''].focus();
                        return false;
                    }
                    break; 
               case "sumCheck":
                        var sum1 = parseInt(document.forms[''+fObject+''].elements['sum1'].value);
                        var sum2 = parseInt(document.forms[''+fObject+''].elements['sum2'].value);    
                        var checkSum = parseInt(document.forms[''+fObject+''].elements[''+fField+''].value);
                        sum = sum1 + sum2;
                        if(sum != checkSum){
                            alert("Please enter the correct Sum");
                            document.forms[''+fObject+''].elements[''+fField+''].focus();    
                            return false;
                        }    
                    break;         
              //default:   
                    //return true;
            } // end of switch    
        }// end of inner for
        
    } // end of  outer for	
} // end of function

