﻿// JScript File

//validation class//
var js_TextValidator = new Local_js_TextValidator();
function  Local_js_TextValidator()
{
    // validation method//
    
    this.ValidateNamesHeb = ValidateNamesHeb;
    this.ValidateNamesEn = ValidateNamesEn;
    this.ValidateEmail = ValidateEmail;
    this.ValidatePhoneEn = ValidatePhoneEn;
    this.ValidatePhoneHeb = ValidatePhoneHeb;
    this.ValidatePhonePrefix = ValidatePhonePrefix;
    this.ValidateStreetHeb = ValidateStreetHeb;
    this.ValidateStreetEn = ValidateStreetEn;
    this.ValidateAlphaEn = ValidateAlphaEn;
    this.ValidateAlphaHeb = ValidateAlphaHeb;
    this.ValidateAlphaHebAndEn = ValidateAlphaHebAndEn;
    this.ValidateNumbers = ValidateNumbers;
    this.ValidateCreditCardNumber = ValidateCreditCardNumber;
    this.ValidateIdNumber = ValidateIdNumber;
    this.ValidateCardCvv = ValidateCardCvv;
    this.ValidateCityHeb = ValidateCityHeb;
    this.ValidateCityEn = ValidateCityEn;
    this.ValidateReservationNumber = ValidateReservationNumber;
    this.ValidateAgreementNumber = ValidateAgreementNumber;
    this.ValidateZipCode = ValidateZipCode;
    this.Validate012 = Validate012;
    this.ValidatePickUpReturnLocation = ValidatePickUpReturnLocation;
    this.ValidatePickUpReturnTime = ValidatePickUpReturnTime;
    this.ValidateCarType = ValidateCarType;
    this.ValidatePickUpReturnDateEn = ValidatePickUpReturnDateEn;
    this.ValidatePickUpReturnDateHeb = ValidatePickUpReturnDateHeb;
    this.ValidateSid = ValidateSid;
    this.ValidateFreeTextEn = ValidateFreeTextEn;
    this.ValidateFreeTextHeb = ValidateFreeTextHeb;
    this.ValidateHtmlInputFileType = ValidateHtmlInputFileType;
    

    // validation functions//
    
    function ValidateNamesHeb(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[א-תa-zA-Z0-9\"\'\` /-]{1,30}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }

        return isValid;
    }
    
    function ValidateNamesEn(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Z0-9\"\'\` /-]{1,30}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateEmail(str)
    {
        var isValid = true;
        //var objPattern = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
        var objPattern = /^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/;

        if (!objPattern.test(str) || str.length > 40)
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidatePhoneEn(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[0-9\.\-\+()]{6,12}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidatePhoneHeb(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{7,7}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidatePhonePrefix(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[0-9/בחר]{1,3}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateStreetHeb(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Z0-9א-ת,\'\"/#/./(/)// /-]{1,40}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateStreetEn(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Z0-9,\'\"/#/./(/)// /-]{1,40}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateAlphaEn(str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Z]{1,200}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateAlphaHeb(str)
    {
        var isValid = true;
        var objPattern = /^[א-ת]{1,200}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateAlphaHebAndEn(str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Zא-ת]{1,200}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateNumbers(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{1,35}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateCreditCardNumber(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{8,16}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateIdNumber(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{9,9}$/;

        if (!objPattern.test(str) || !ValidateIdNum(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateCardCvv(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{3,4}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }

    function ValidateCityHeb(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Zא-ת,\'\" /-]{1,15}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateCityEn(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Z,\'\" /-]{1,15}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateReservationNumber(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[iI]{1}[nN]{1}[0-9]{10}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateAgreementNumber(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{9,9}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateZipCode(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{5,5}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function Validate012(str)
    {
        var isValid = true;
        var objPattern = /^[0-2]{1,1}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidatePickUpReturnLocation(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{1,3}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidatePickUpReturnTime(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{4,4}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateCarType(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{1,3}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidatePickUpReturnDateEn(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{2}[ ]{1}[a-zA-Z]{3}[ ]{1}[0-9]{4}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidatePickUpReturnDateHeb(str)
    {
        var isValid = true;
        var objPattern = /^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateSid(str)
    {
        var isValid = true;
        var objPattern = /^[a-z0-9]{28,30}$/;

        if (!objPattern.test(str))
        {
            isValid = false;
        }
        return isValid;        
    }
    
    function ValidateFreeTextEn(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[a-zA-Z0-9\"\' /-/(/)/./#/@/?/,\r\n]{1,200}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    function ValidateFreeTextHeb(IsRequire, str)
    {
        var isValid = true;
        var objPattern = /^[א-תa-zA-Z0-9\"\' \-/(/)/./#/@/?/,\r\n]{1,200}$/;

        if (IsRequire)
        {
            if (!objPattern.test(str))
            {
                isValid = false;
            }
        }
        else
        {
            if (str.length>0 && !objPattern.test(str))
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    
    //gets strring array of file suffix  strArrEndsWith - (doc,txt,...)
    function ValidateHtmlInputFileType(IsRequire, strFile, strArrEndsWith)
    {
        var isValid = true;
        var bIsGoodSuffix = false;
        strFile = strFile.toLowerCase();
        strArrEndsWith = strArrEndsWith.toLowerCase();
        var strEnd = strFile.substr(strFile.lastIndexOf(".")+1);

        var ArrEndsWith = strArrEndsWith.split(",");
        for(var i=0;i<ArrEndsWith.length;i++)
        {
            if(ArrEndsWith[i] == strEnd)
            {
                bIsGoodSuffix = true;
                break;
            }
        }
        if (IsRequire)
        {
            if (!bIsGoodSuffix)
            {
                isValid = false;
            }
        }
        else
        {
            if (strFile.length>0 && !bIsGoodSuffix)
            {
                isValid = false;
            }
        }
        return isValid;        
    }
    

//end class
}






/// Validate Id Number (~tudat zehot~) ///
function ValidateIdNum(idnum)
	{
	    var isValid = true;
		while (idnum.length<9)
		{
			idnum="0"+idnum;
		}
		idnum1=idnum.substr(0,1)*1;
		idnum2=idnum.substr(1,1)*2;
		idnum3=idnum.substr(2,1)*1;
		idnum4=idnum.substr(3,1)*2;
		idnum5=idnum.substr(4,1)*1;
		idnum6=idnum.substr(5,1)*2;
		idnum7=idnum.substr(6,1)*1;
		idnum8=idnum.substr(7,1)*2;
		idnum9=idnum.substr(8,1)*1;
	 
		if (idnum1>9) idnum1=(idnum1%10)+1
		if (idnum2>9) idnum2=(idnum2%10)+1
		if (idnum3>9) idnum3=(idnum3%10)+1
		if (idnum4>9) idnum4=(idnum4%10)+1
		if (idnum5>9) idnum5=(idnum5%10)+1
		if (idnum6>9) idnum6=(idnum6%10)+1
		if (idnum7>9) idnum7=(idnum7%10)+1
		if (idnum8>9) idnum8=(idnum8%10)+1
		if (idnum9>9) idnum9=(idnum9%10)+1
	 
		var sumval=idnum1+idnum2+idnum3+idnum4+idnum5+idnum6+idnum7+idnum8+idnum9;
	 
		sumval=sumval%10
		if (sumval>0)
		{
			isValid =  false;
		}
	 
		return isValid;
	}


