// JavaScript Document

// Depends on dateValidation.js FOR date validation

function validateEmpty(field, name)
{
	if(field.value == "")
	{
		alert(name + ' is required field');
		field.focus();
		return true;
	}
	
	return false;
}

function validateCondition(field1,field2, name)
{
	if(field2.value != "False")
	{
		alert(name + ' already exist.');
		field1.focus();
		return true
	}
	return false
}

function validateNum(field, name)
{
	if(field.value != "" && isNaN(field.value))
	{
		field.select();
		alert(name + ' contain invalid characters. Enter only numeric values')
		field.focus()
		return true
	}
	
	return false
}

function validateDate(field,name,format)
{
	if(field.value != "" && isDate(field.value,format) == false )
	{
		field.select();
		alert(name + ' is not a valid date. Enter only valid values')
		field.focus()
		return true
	}
	
	return false;
}

function validateGreaterDate(date1,date2,dateformat)
{	
	if(compareDates(date1.value,dateformat,date2.value,dateformat) == 1)//   1 if date1 is greater than date2
	{
		date1.select();
		alert('First date is greater than 2nd date');
		date1.focus()
		return true;
	}
		
	return false;
}


function validateEmail(field)
{	
	//var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var reg = /^([A-Za-z0-9_\-\.])+\@(([A-Za-z0-9_\-])+\.)+([A-Za-z]{2,4})$/; // by Aamir disable multiple .
   	if(field.value != "" && reg.test(field.value) == false) 
	{
		field.select();		
      	alert('Please Enter a Valid Email Address');
		field.focus()
		return true
	}
	
	return false;
}

function validateSame(field1,field2)
{
	if(field1.value != field2.value)
	{
		field2.select();
		alert('Both fields must match');
		field2.focus();
		return true;
	}
	
	return false;
}

function formValidation()
{	
	for(var v=0; v < arguments.length; )
	{
		switch(arguments[v])
		{
		case 'validateEmpty': // validateEmpty(field, name)
			if(validateEmpty(arguments[v+1],arguments[v+2]))
				return false;
				
			v += 3;
			break;
		
		case 'validateCondition': // validateEmpty(field, name)
			if(validateCondition(arguments[v+1],arguments[v+2],arguments[v+3]))
				return false;
				
			v += 3;
			break;
			
		case 'validateNum': // validateNum(field, name)
			if(validateNum(arguments[v+1],arguments[v+2]))
				return false;
				
			v += 3;
			break;
			
		case 'validateDate': // validateDate(field,name,format)
			if(validateDate(arguments[v+1],arguments[v+2],arguments[v+3]))
				return false;
				
			v += 4;
			break;
			
		case 'validateEmail': // validateEmail(field)
			if(validateEmail(arguments[v+1]))
				return false;
				
			v += 2
			break;
		
		case 'validateSame':
			if(validateSame(arguments[v+1],arguments[v+2]))
				return false;
				
			v += 3;		
			break;
			
		case 'validateGreaterDate': // validateGreaterDate(date1,date2,dateformat)
			if(validateGreaterDate(arguments[v+1],arguments[v+2],arguments[v+3]))
				return false;
				
			v += 4;
			break;
		}		
	}		
}