﻿
var ERR_REQUIRED_FIELD		= "הוא שדה חובה"
var ERR_FORMAT_INTEGER		= "פורמט לא נומרי, חסרות ספרות או יותר מ-9 ספרות"
var ERR_FORMAT_FLOAT		= "error"
var ERR_FORMAT_DATE			= "error"
var ERR_FORMAT_ZIP			= "פורמט המיקוד אינו תקין"
var ERR_FORMAT_EMAIL		= "פורמט הכתובת אינו תקין"
var ERR_FORMAT_WWW			= "error"
var ERR_FORMAT_RANGELIMIT	= "error"
var ERR_FORMAT_CARD			= "פורמט לא נומרי, או פחות מ-8 ספרות"
var ERR_INVALID_DATE_RANGE	= "error"
var ERR_FORMAT_PHONE		= "יש למלא קידומת - מספר טלפון בעל 7 ספרות"
var ERR_FORMAT_CELL			= "יש למלא קידומת - מספר טלפון סלולארי בעל 7 ספרות"
var ERR_FORMAT_AREA_CELL	= "פורמט הקידומת אינו תקין"
var ERR_FORMAT_AREA_PHONE	= "פורמט הקידומת אינו תקין"


function IsNumeric(sText,sType)
{
   var ValidChars;
   var IsNumber=true;
   var Char;
	
	switch (sType)
	{
		case "1":
		{
			ValidChars = "0123456789";
			if (sText.length != 9) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
		case "2": //phone and cell
		{
			ValidChars = "0123456789";
			if (sText.length != 7) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
		case "3":
		{
			ValidChars = "0123456789-";
			if (sText.length != 11) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
		case "4":
		{
			ValidChars = "0123456789";
			if (sText.length != 5) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
		case "5":
		{
			ValidChars = "0123456789";
			if (sText.length < 8) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
		case "6":
		{
			ValidChars = "0123456789";
			if ((sText.length != 2) && (sText.length != 3)) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
		case "7":
		{
			ValidChars = "0123456789";
			if (sText.length != 3) 
			{
				IsNumber = false;
				return IsNumber
			}
			break;
		}
	}
	for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
        {
        IsNumber = false;
        }
      }
	return IsNumber;
   
}



function validateData ( sType, sSubType, sValue, sParameterName, iOptional, 
						iRangeLimit, sMinLimitValue, sMaxLimitValue, iRange, sMinValue, sMaxValue )
{	
	// iOptional:	1 = not required field; 0 = required field
	// iRangeLimit:		0 = not range field; 1 = range field
	
	
	if ( iOptional == "0" && sValue == "" && iRange == 0 || iOptional == "0" && iRange == 1 && sMinValue == "" || iOptional == "0" && iRange == 1 && sMaxValue == ""){
		return sParameterName + " " + ERR_REQUIRED_FIELD;
	}
	else if ( sValue == "" && iRange == 0 || ((iRange == 1 && sMinValue == "") && (iRange == 1 && sMaxValue == ""))){
		return true;
	}else{
		switch ( sType )
		{
			case "rInteger":
			{
				 
				if ( sValue != ""){
					var sParsedInt = IsNumeric(sValue,"1");
					if ( sParsedInt == false)
						return sParameterName + " " + ERR_FORMAT_INTEGER; //return false;
				}
				
				if ( iRange == 1 ){
				
					var sParsedIntMin = "";
					var sParsedIntMax = "";
					
					if ( sMinValue != "" )
						sParsedIntMin = utils_parseInteger ( sMinValue );
						
					if ( sMaxValue != "" )
						sParsedIntMax = utils_parseInteger ( sMaxValue );
					
					if ( sParsedIntMin == null || sParsedIntMax == null )
						return sParameterName + " " + ERR_FORMAT_RANGE; 
					
					if ( iRangeLimit == 1 ) {
						if ( sParsedInt != "" || sParsedInt != null){
							if ( sParsedInt >= sMinLimitValue && sParsedInt <= sMaxLimitValue )
								return sParameterName + " " + ERR_FORMAT_RANGELIMIT; 
							else
								return true;
						}else if ( iRange == 1 ){
							if ( sMinValue < sMinLimitValue && sMaxValue > sMaxLimitValue )
								return sParameterName  + " " + ERR_FORMAT_RANGELIMIT; 
							else
								return true;
						}
					}
				} 
				return true;
			}
			case "rCurrency":
			case "rFloat":
			{
				if ( sValue != ""){
					var sParsedFloat = utils_parseFloat( sValue );
					if ( sParsedFloat == "" || sParsedFloat == null )
						return sParameterName + " " + ERR_FORMAT_FLOAT; //return false;
				}
				
				if ( iRange == 1 ){
				
					var sParsedFloatMin = "";
					var sParsedFloatMax = "";
				
					if ( sMinValue != "" )
						sParsedFloatMin = utils_parseFloat ( sMinValue);
					
					if ( sMaxValue != "" )
						sParsedFloatMax = utils_parseFloat ( sMaxValue);
					
					if ( sParsedFloatMin == null || sParsedFloatMax == null )
						return sParameterName + " " + ERR_FORMAT_RANGE; 
					
					if ( iRangeLimit == 1 ) {
						if ( sParsedFloat != "" || sParsedFloat != null){
							if ( sParsedFloat >= sMinLimitValue && sParsedFloat <= sMaxLimitValue )
								return sParameterName + " " + ERR_FORMAT_RANGELIMIT; 
							else
								return true;
						}else if ( iRange == 1 ){
							if ( sMinValue < sMinLimitValue && sMaxValue > sMaxLimitValue )
								return sParameterName + " " + ERR_FORMAT_RANGELIMIT; 
							else
								return true;
						}
					}
				} 
				return true;
			}

			case "rDate":
			{
				if ( sValue != "" ){
					var sParsedDate = utils_parseDate( sValue );
					if ( sParsedDate == null )
						return sParameterName + " " + ERR_FORMAT_DATE; //return false;
				}
				if ( iRange == "1" ){
					var sParsedDateMin = "";
					var sParsedDateMax = "";
				
					if ( sMinValue != "")
						sParsedDateMin = utils_parseDate( sMinValue );
					
					if ( sMaxValue != "")
						sParsedDateMax = utils_parseDate( sMaxValue );

					if (  sParsedDateMin == null || sParsedDateMax == null || sParsedDateMin == "" || sParsedDateMax == "")
//						return sParameterName + " " + ERR_FORMAT_DATE;
						return ERR_INVALID_DATE_RANGE;			// Added for RD Issue#: 29786 - May 2004 APC
						
					if ( sParsedDateMin > sParsedDateMax )
//						return sParameterName + " " + ERR_FORMAT_RANGE;
						return ERR_INVALID_DATE_RANGE;			// Added for RD Issue#: 29786 - May 2004 APC
						
				}
				
				return true;
			}
			case "rTimestamp":
			{ 
			   if ( sValue != "" )	
			   {	
				    var sParsedDate = utils_parseDate( sValue );
					if ( sParsedDate == null )
						return sParameterName + " " + ERR_FORMAT_DATE; //return false;
			   }	
			   return true;
			}
			case "rTime":
			{
				if ( sValue != "" )															// RD Issue#: 65536-5380 - APC
				{																			// RD Issue#: 65536-5380 - APC Aug 2004
					var sParsedTime = utils_parseTime( sValue );
					if ( sParsedTime == "" || sParsedTime == null )
						return sParameterName + " " + ERR_FORMAT_TIME; //return false;
				}																			// RD Issue#: 65536-5380 - APC Aug 2004
				return true;
			}
			case "rText":
			{
				switch ( sSubType )
				{
					case "5":
					{
						//zip
						if ( sValue != ""){
							var sParsedInt = IsNumeric(sValue,"4");
							if ( sParsedInt == false)
								return sParameterName + " " + ERR_FORMAT_ZIP; //return false;
						}
						return true;
					}
					case "6":
					{
						//credit card number
						if ( sValue != ""){
							var sParsedInt = IsNumeric(sValue,"5");
							if ( sParsedInt == false)
								return sParameterName + " " + ERR_FORMAT_CARD; //return false;
						}
						return true;
					}
					case "7":
					{
						//phone area code
						if ( sValue != ""){
							var sParsedInt = IsNumeric(sValue,"6");
							if ( sParsedInt == false)
								return sParameterName + " " + ERR_FORMAT_AREA_PHONE; //return false;
						}
						return true;
					}
					case "8":
					{
						//credit card number
						if ( sValue != ""){
							var sParsedInt = IsNumeric(sValue,"7");
							if ( sParsedInt == false)
								return sParameterName + " " + ERR_FORMAT_AREA_CELL; //return false;
						}
						return true;
					}
					case "1":
					{
						//Phone
						if ( sValue != ""){
							var sParsedInt = IsNumeric(sValue,"2");
							if ( sParsedInt == false)
								return sParameterName + " " + ERR_FORMAT_PHONE; //return false;
							//var oPhonePattern = new RegExp("^[0-9]{2}-[0-9]{7}$");
							//if (  oPhonePattern.test( sValue ) == false )
								//return sParameterName + " " + ERR_FORMAT_PHONE;
						}
						return true;
					}
					case "2":
					{
						//Cell
						if ( sValue != ""){
							var sParsedInt = IsNumeric(sValue,"2");
							if ( sParsedInt == false)
								return sParameterName + " " + ERR_FORMAT_CELL; //return false;
							//var oCellPattern = new RegExp("^[0-9]{3}-[0-9]{7}$");
							//if (  oCellPattern.test( sValue ) == false )
								//return sParameterName + " " + ERR_FORMAT_CELL;
						}
						return true;
					}
					case "3":
					{
						//Email

						var oEmailPattern = new RegExp( "^\\w[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$" );
						
						if ( oEmailPattern.test (sValue) )
						{
							var oStringValues = sValue.split(/\./g)
							var oFinalEmailTest = new RegExp("^[a-zA-Z]{2,3}$");
							
							if ( oFinalEmailTest.test( oStringValues[oStringValues.length-1]) )
								return true;
							else
								return sParameterName + " " + ERR_FORMAT_EMAIL;
						
						} else
							return sParameterName + " " + ERR_FORMAT_EMAIL;
						
					}
					case "4":
					{
						//WWW
						var oWWWPattern = new RegExp( "^(\\w+.)*\\w+$" );
						if (  oWWWPattern.test( sValue ) == false )
							return sParameter + " " + ERR_FORMAT_WWW
						else
							return true;
					}
				}
			}
			default:
			{
				return true;
			}
		}
	}
	
}
