﻿var ErrorMessageHandleMode='1';


function Validate(ColumnName,InputValue,aryContraint,aryRange,ErrorMessageDisplyObject)
{
	if ($(ErrorMessageDisplyObject)!=null)
	{
		$(ErrorMessageDisplyObject).innerHTML="";
	}
	for(x=0;x<aryContraint.length;x++)  
	  {
		switch (aryContraint[x])
		{
			case 'Empty':
				
				if (Validate_Empty(InputValue)!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('Empty'),ErrorMessageDisplyObject);
					return false;
				}
				break;
			case 'Email':
				if (Validate_Email(InputValue)!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('Email'),ErrorMessageDisplyObject);	return false;
				}			
				break;
				
			case 'Numeric':
				if (Validate_Numeric(InputValue)!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('Numeric'),ErrorMessageDisplyObject);
					return false;
				}				
				break;

			case 'Integer':
				if (Validate_Integer(InputValue)!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('Integer'),ErrorMessageDisplyObject);
					return false;
				}				
				break;
			
			case 'NumericandLetter':
				if (Validate_NumericandLetter(InputValue)!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('NumericandLetter'),ErrorMessageDisplyObject);
					return false;
				}				
				break;
				
			case 'Length':
				if (Validate_Length(InputValue,aryRange[x])!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('Length'),ErrorMessageDisplyObject);
					return false;
				}				
				break;
				
			case 'PasswordConfirm':
				if (Validate_PasswordConfirm(InputValue,aryRange[x])!=true)
				{
					HandleErrorMessage(ColumnName+GetErrorMessage('PasswordConfirm'),ErrorMessageDisplyObject);
					return false;
				}				
				break;
				
			default:
				break;
		}
	  }
	  return true;
}

function Validate_Email(InputValue)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (InputValue=="" || filter.test(InputValue)==false) {
		return false;
	}else
	{
		return true;
	}
}
function Validate_Empty(InputValue)
{
	if (InputValue=="")
	{
		return false;
	}else
	{
		return true;
	}
}


function Validate_Numeric(InputValue)
{

   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < InputValue.length && IsNumber == true; i++) 
      { 
      Char = InputValue.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
		 return IsNumber;
         }
      }
   return IsNumber;
}

function Validate_NumericandLetter(InputValue)
{

   var ValidChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < InputValue.length && IsNumber == true; i++) 
      { 
      Char = InputValue.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
		 return IsNumber;
         }
      }
   return IsNumber;
}

function Validate_Integer(InputValue)
{

   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < InputValue.length && IsNumber == true; i++) 
      { 
      Char = InputValue.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
		 return IsNumber;
         }
      }
   return IsNumber;
}

function Validate_Length(InputValue,Range)
{
	//eg:	aryValidate[1] = Validate('密碼',Password,new Array("Empty","Numeric","Length"),new Array("","","5|10"),'spnPassword');
	aryRange=Range.split("|");  

 	if (InputValue.length>=aryRange[0] && InputValue.length<=aryRange[1])
	{
		return true;
	}else
	{
		return false;
	}

 
}

function Validate_PasswordConfirm(InputValue,ComparingValue)
{

	if (InputValue==ComparingValue)
	{
		return true;
	}else
	{
		return false;
	}
  
}

function GetErrorMessage(Type)
{
	switch (ErrorMessageLanguage)
	{
		case 'tc':
			switch (Type)
			{
				case 'Empty':
					return "為必填";
					break;
				case 'Email':
					return "格式錯誤";				
					break;
				case 'Numeric':
					return "需為數字";				
					break;
				case 'Length':
					return "長度不正確";				
					break;
				case 'Integer':
					return "需為整數";				
					break;
				case 'NumericandLetter':
					return "需為英數字";				
					break;	
				case 'PasswordConfirm':
					return "需與密碼相同";
				default:
					break;
			}
			break;
		case 'en':
			switch (Type)
			{
				case 'Empty':
					return " is required";
					break;
				case 'Email':
					return " is in wrong format";				
					break;
				case 'Numeric':
					return " should be number";				
					break;
				case 'Length':
					return " is with wrong length";				
					break;
				case 'Integer':
					return " should be integer";				
					break;
				case 'NumericandLetter':
					return " should be number or letter";				
					break;	
				case 'PasswordConfirm':
					return " should be identical with password";
				default:
					break;
			}
			break;
		case 'de':
			switch (Type)
			{
				case 'Empty':
					return " wird angefordert";
					break;
				case 'Email':
					return " ist im falschen Format";				
					break;
				case 'Numeric':
					return " sein sollte Zahl";				
					break;
				case 'Length':
					return " is with wrong length";				
					break;
				case 'Integer':
					return " should be integer";				
					break;
				case 'NumericandLetter':
					return " sein sollten Zahl oder Buchstabe";				
					break;	
				case 'PasswordConfirm':
					return " sollte mit Kennwort identisch sein";
				
				default:
					break;
			}
			break;
	}
		
}



//Error message Display Mode , show alert , or disply on span
function HandleErrorMessage(Message,ErrorMessageDisplyObject)
{
	if (ErrorMessageHandleMode=='alert')
	{
		alert(Message);
	}else
	{

		if ($(ErrorMessageDisplyObject)!=null)
		{
			$(ErrorMessageDisplyObject).innerHTML=Message;
		}
	}
}// JavaScript Document




