///////////////////////////////////////////////////////////////////////
//     This script was designed by Kapur Technologies Pvt Ltd        //
//     for Kapur Inc's list2shop.com                                 //
//                                                                   //
//                                                                   //
//     this program is copyrighted, you need prior written           //
//     permission to use or copy this program                        //
///////////////////////////////////////////////////////////////////////
////function stringTrim(strToTrim) 
//{
//    if(strToTrim != null || strToTrim != "" || strToTrim!= undefined){
//    return(strToTrim.replace(/^\s+|\s+$/g, ''));
//    }
//}// end stringTrim
//
//function isEmpty(stringValue)
//{ 
//    var stringIs = stringTrim(stringValue);
//    if(stringIs ==null || stringIs =='') {
//        return 1005; 
//    }
//    return 1001;  //not empty
//} // end isEmpty


function validContactFormat(stringValue) {  //excludes & but includes ,;     
    var textValue =stringTrim(stringValue);
 //   alert(stringValue);     /^\w+(((\.|-)||(\s))||([%$#@*!~^:+_?,;<>()])||(\w)+)*$/
var validExpression =/^\w+(((\.|-)||(\s))||([%$@*!^:+_?,;<>()])||(\w)+)*$/
    if(textValue.match(validExpression))
    {
 //       alert("true");
        return true;
    }
  //  alert("false");
    return false;          
}
function validateContactName(stringValue){  
    if(isEmpty(stringValue)==1001)  {
        if(validContactFormat(stringValue)==false){
            return 1022;  
        }
        if(lengthRestriction(stringValue, 0, 50)==false) {
            return 1008;            
        }
        return 1001;
    }
    return 1001;
}

function validateContactMessage(stringValue){  
    if(isEmpty(stringValue)==1001)  {
        if(validContactFormat(stringValue)==false){
            return 1022;  
        }
        if(lengthRestriction(stringValue, 0, 200)==false) {
            return 1008;            
        }
        return 1001;
    }
    return 1001;
}

function lengthRestriction(stringValue, min, max){
    var elemValue = stringTrim(stringValue);
    if(elemValue.length >= min && elemValue.length <= max) {
        return true;
    }
    return false;
} //end lengthRestriction

function validTextFormat(stringValue) {     
    var textValue =stringTrim(stringValue);
 //   alert(stringValue);/^\w+(((\.|-)||(\s))||([%$#@&*!~^:+_])||(\w)+)*$/
    var validExpression =/^\w+(((\.|-)||(\s))||([%$@&*!^:+_])||(\w)+)*$/
    if(textValue.match(validExpression))
    {
 //       alert("true");
        return true;
    }
  //  alert("false");
    return false;          
}    //end validTextFormat

function validA2ZwithSpaceFormat(stringValue) {     
    var textValue =stringTrim(stringValue);
    var validExpression = /^[a-zA-Z]+((\s)||([a-zA-Z]))+$/
    if(textValue.match(validExpression)){
        return true;            
    }
    return false;          
}    //end validA2ZwithSpaceFormat
function validDoubleNoSpace(StringValue){
    var getValue = stringTrim(StringValue);
    var numericExpression = /^\d*\.{0,1}\d+$/;
    if(getValue.match(numericExpression)){
        return true;            
    }    
    return false;
}   //end validDoubleNoSpace
function validateEmail(email_value)
{
    var emailVal = stringTrim(email_value);
    apos= emailVal.indexOf("@");
    dotpos= emailVal.lastIndexOf(".");
    lastpos= emailVal.length-1;
    var errNum = isEmpty(email_value);
    if (errNum==1005){
        return 1014;
    }
    if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 || lastpos-dotpos<2)  {
        return 1012;
    }
    if(lengthRestriction(emailVal, 3, 50)==false)  {
        return 1011;
    }
    return 1001;
}

function validatePwd(stringValue){
    var pass = stringTrim(stringValue);
    var errNum = isEmpty(pass);
    if (errNum==1005){
        return 1015;
    }
    if( validTextFormat(stringValue)==false){
        return 1013;
    }
    if(lengthRestriction(stringValue,  4, 25)==false) {
        return 1007;
    }  
    return 1001;            
}
function validatePwd2(pwd1,pwd2) {
    var pass1 =stringTrim(pwd1);
    var pass2 = stringTrim(pwd2);
    var errNum = isEmpty(pass2);
    if (errNum==1005){
        return 1015;
    }
    if(pass1!=pass2) { 
        return 1004;
    }
    return 1001;
} //end validatePwd2
function chkOldPwdFilled(oldPwd,newPwd){ //used to handle if old pwd not filled but new and confirm pwd filled 
    var old_pwd =stringTrim(oldPwd);
    var new_pwd =stringTrim(newPwd);
    var errNum1 =isEmpty(old_pwd);
    var errNum2 = isEmpty(new_pwd);
    if(errNum2 ==1001 && errNum1==1005 ){
        return 1018;
    }
    return 1001;
}

function validateText50(stringValue){  // for a-zA-Z with space only
    if(isEmpty(stringValue)==1001)  {
        if(validA2ZwithSpaceFormat(stringValue)==false){
            return 1019;  
        }
        if(lengthRestriction(stringValue, 0, 50)==false) {
            return 1008;            
        }
        return 1001;
    }
    return 1001;
}
function validateText200(stringValue){
    if(isEmpty(stringValue)==1001){
        if( validTextFormat(stringValue)==false){
            return 1013;
        }
        if(lengthRestriction(stringValue, 0, 200)==false){
            return 1009;            
        }
        return 1001;
    }
    return 1001;
}

function validateText500(stringValue){
    if( validTextFormat(stringValue)==false)  {
        return 1013;
    }
    if(lengthRestriction(stringValue, 0, 500)==false)  {
        return 1010;            
    }
    return 1001;
}
function validateUnit(unitValue){
    if(isEmpty(unitValue)==1001)  {
        if( validTextFormat(unitValue)==false){
            return 1013;
        }
        if(lengthRestriction(unitValue, 0, 50)==false) {
            return 1008;            
        }
        return 1001;
    }
    return 1001;
}
function validatePrice(priceValue){
    if(isEmpty(priceValue)==1001)    {
        if(validTextFormat(priceValue)==false){
            return 1013;
        }
        if(lengthRestriction(priceValue,0,10)==false){
            return 1017;            
        }
        return 1001;
    }
    return 1001;
}
function validateZipcode(zipValue) {
    var numericExpression = /^[0-9]+$/;
    if(isEmpty(zipValue)==1001)  {
        if(!zipValue.match(numericExpression)){
            return 1002;            
        } 
        if(lengthRestriction(zipValue, 0, 50)==false) {
            return 1003;        
        }
        return 1001;
    }
    return 1001;
}    //end validateZipcode

//Validate International phone number (Starts)
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
 
function isInteger(s){  
    var i;
    for (i = 0; i < s.length; i++)    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return 1020;
    }
    // All characters are numbers.
    return true;
}
    
function stripCharsInBag(s, bag){   
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)   {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function validateInternationalPhone(phoneValue){
    if (isEmpty(phoneValue) == 1001) {
        var phone =stringTrim(phoneValue);
        if(phone.indexOf("+")>1) {
            return 1020;
        }
        if(phone.indexOf("-")!=-1) {
            if(phone.indexOf("-")<2) {
                return 1020;
            }
        }
        s= stripCharsInBag(phoneValue,validWorldPhoneChars);
        return (isInteger(s));
    }
    return 1001;
}

 /*Nidhi- All below methods are added to refine this class and to remove similar methods defined above, started on 3Feb09 */

    function validateString( inputString,  minLength, maxLength) { //, shoppingListCase) {
         
        
        if (isEmpty(inputString) == 1001) {  //means not empty

//            inputString.trim();
            inputString=stringTrim(inputString);
            
            if (minLength == 0 && maxLength == 50 && (lengthRestriction(inputString, 0, 50) == false)) {
                return 1008;
            }
            if (minLength == 0 && maxLength == 200 && (lengthRestriction(inputString, 0, 200) == false)) {
                return 1009;
            }
            if (minLength == 0 && maxLength == 500 && (lengthRestriction(inputString, 0, 500) == false)) {
                return 1010;
            }
           
            if (minLength == 4 && maxLength == 25 && (lengthRestriction(inputString, 4, 25) == false)) {  //for password 
                return 1007;
            }
//            if (minLength == 0 && maxLength == 10 && (lengthRestriction(inputString, 0, 10) == false)) { // for Price in sl
//                return 1017;
//            }
//        if (minLength == 0 && maxLength == 500 && (lengthRestriction(inputString, 0, 1000) == false)) {
//            return 1008; change this errNum and add new errMsg in common_functions.js, require for comments in contact us later
//        }
            //TODO:handle all characters here which can do sql injection or effect code using java/jsp coding.
            //encode <% ; <@  () = /
//            if(inputString.contains("<%")){
//                
//            }
//            if (shoppingListCase == true) {
//                if((inputString.indexOf("~")>-1)|| (inputString.indexOf("|")>-1)|| (inputString.indexOf("#"))>-1){
//                    //alert("errNum =1013");
//                    return 1013;
//                }
//            }
         
            if (minLength == 0 && maxLength == 1000 && (lengthRestriction(inputString, 0, 1000) == false)) { // for recommendus textrea and contact us message fields 
                return 1023;
            }
         
         }
        //alert("hello");
        return 1001;
    }

    function validatePassword(stringValue) {
        var pass = stringTrim(stringValue);
        errNum = isEmpty(pass);
        if (errNum == 1005) {
            return 1015;  // field is mandatory but not entered.
        }
        //alert('validatePassword');
        errNum = validateString(stringValue, 4, 25);
        //alert('validatePassword2, errnum='+errNum);
        if (errNum != 1001) {
            return errNum;
        }
       // alert('validatePassword3');
        return 1001;
    }
