function MM_validateForm() 
{ 
	var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
	j=0;
	//	/^([-a-zA-Z0-9._]+@[-a-zA-Z0-9.]+(\.[-a-zA-Z0-9]+)+)$/;
	var regEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	var regBlank = /[^\s]/;
	var regAlphaNum = /^([a-zA-Z0-9_!#$%^&@~]+)$/;
	var regDate = /^([0-9_]+-[0-9][0-9]+-[0-9][0-9]+)$/;
	var regPassword = /^([a-zA-Z0-9-_!#$%^&@~]+)$/;
	
	for (i=1; i<(args.length-2); i+=3) 
	{	
		mesg=args[i+1];
		test=args[i+2]; 
		val=document.forms[""+args[0]].elements[""+args[i]];

	    if (val) 
		{	nm=mesg; 
			val = val.value;
			//if ((val=val.value)!="") 
			if(regBlank.test(val))
			{
				if(test.indexOf('isEqual')!=-1)
				{
					result = trim(val);
				if(result.length==0){
				errors += '- '+nm+' is required.\n'; 
				}else{
					equal_obj_val = test.substring(8,test.indexOf(":"));
					mesg_string =test.substring((test.indexOf(":")+1));
					if(val != document.forms[""+args[0]].elements[""+equal_obj_val].value)
					{
						errors+='- '+nm+' must be same to '+mesg_string+'.\n';
					}
					else if(!regAlphaNum.test(val))
					{
						errors+='- '+nm+' must contain a alpha numeric and some special charactera are allowed _ ! # $ % ^ & @ ~ \n';
					}
					else if(!regAlphaNum.test(document.forms[""+args[0]].elements[""+equal_obj_val].value))
					{
						errors+='- '+nm+' must contain a alpha numeric and some special charactera are allowed _ ! # $ % ^ & @ ~ \n';
					}
				}
				}
				else if(test.indexOf('isAlphaNum')!=-1)
				{
				result = trim(val);
				if(result.length==0){
				errors += '- '+nm+' is required.\n'; 
				}else{
					if(!regAlphaNum.test(val))
					{
						errors+='- '+nm+': Only Alpha Numeric and "_" Chars Allowed.\n';
					}
				}
				}
				else if(test.indexOf('isCC')!=-1)
				{ 
					var checkCard=testCreditCard();
					//alert(checkCard);
					if(checkCard!='yes')
					{ 
						//document.getElementById('UserCardNumber').focus(); return false; 
						errors+='- '+nm+' '+checkCard+'.\n';
					}
				}
				else if (test.indexOf('isDate')!=-1) 
				{ 
					p=val.indexOf('-');
					if (p != 4 )
					{
						errors+='- '+nm+' must contain Valid Date YYYY-MM-DD.\n';
					}
					else if(!regDate.test(val))
					{
						errors+='- '+nm+' must contain Valid Date YYYY-MM-DD.\n';
					}

			     }
				else if (test.indexOf('isEmail')!=-1) 
				{ 
					p=val.indexOf('@');
					s=val.indexOf('.');
			        if (p<1 || p==(val.length-1))
					{
						errors+='- '+nm+' must contain an e-mail Address.\n';
					}
					//else if(s<p || s==(val.length-1))
					else if(!regEmail.test(val))
					{
						errors+='- '+nm+' must contain a valid e-mail Address.\n';
					}
			     }
				 else if (test.indexOf('isTerm')!=-1) 
				{ 
					if(!document.customerForm.frmTermsCondition.checked)
					{
						errors+='- '+nm+' is required.\n';
					}
			     }
				else if(test.indexOf('isPassword')!=-1)
				{
				  result = trim(val);
				  if(result.length==0)
				  {
					 errors += '- '+nm+' is required.\n'; 
				  }
				  //check for atlest 6 character
				  else if(result.length <6)
				   {
					 errors += '- '+nm+' must contain atleast 6 character.\n';   
				   }
				}
				else if (test.indexOf('isUrl')!=-1) 
				{ 
					p=val.indexOf('http://');
					s=val.indexOf('.');
			        if (p<0 || p==(val.length-1))
					{
						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';
					}

					else if(s<p || s==(val.length-1))
					{
						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';
					}
			     }else if (test.indexOf('isChar')!=-1) 
				 { 
					var first_char;
					first_char= val.charAt(0);
					if(first_char==0||first_char==1||first_char==2||first_char==3||first_char==4||first_char==5||first_char==6||first_char==7||first_char==8||first_char==9){

					 errors+='- '+nm+' must starts with  a char.\n';
					}
			     }
	   			 else if (test!='R') 
				 {
				 result = trim(val);
					if(result.length==0){
					errors += '- '+nm+' is required.\n'; 
					}
				    if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
					if (test.indexOf('inRange') != -1) 
					{ num = parseFloat(val);
						p=test.indexOf(':');
						min=test.substring(8,p); 
						max=test.substring(p+1);
						if (num<min || max<num) 
						errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
					} 
					if (val.indexOf('-') != -1) 
					{ 
						errors+='- '+nm+' must contain a number without dashes sign.\n';
					} 
					if (val.indexOf('+') != -1) 
					{ 
						errors+='- '+nm+' must contain a number without plus sign.\n';
					}

				}else if (test.charAt(0)=='R')
				{
				result = trim(val);
				if(result.length==0){
				errors += '- '+nm+' is required.\n'; 
				}
				} 
			}
			else if (test.charAt(0) == 'R'){
				errors += '- '+nm+' is required.\n'; 
			}
		}
		if(errors !="")
		{	if(j<=0)

			{
				focusitem = document.forms[""+args[0]].elements[""+args[i]];
				j++;
			}	
		}
	} 
//return errors;
  if (errors)
  {
	alert('Some errors occurred while processing the requested tasks.\nPlease review the list of errors below for more details.\n\n'+errors);
	focusitem.focus();
	return false;
   }
   else
	return true;
}



function trim(inputString) {

   // Removes leading and trailing spaces from the passed string. Also removes

   // consecutive spaces and replaces it with one space. If something besides

   // a string is passed in (null, custom object, etc.) then return the input.

   if (typeof inputString != "string") { return inputString; }

   var retValue = inputString;

   var ch = retValue.substring(0, 1);

   while (ch == " ") { // Check for spaces at the beginning of the string

      retValue = retValue.substring(1, retValue.length);

      ch = retValue.substring(0, 1);

   }

   ch = retValue.substring(retValue.length-1, retValue.length);

   while (ch == " ") { // Check for spaces at the end of the string

      retValue = retValue.substring(0, retValue.length-1);

      ch = retValue.substring(retValue.length-1, retValue.length);

   }

   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string

      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings

   }

   return retValue; // Return the trimmed string back to the user

} // Ends the "trim" function



//CODE FOR RECURRENCE STUFF


function validateFormRest(formname)
{
	
	if(MM_validateForm(formname,'restaurantName','Restaurant name','R','restaurantDeliveryPolicy','Restaurant delivery policy','R','restaurantTimeToDeliver_hour','Restaurant hours','R','restaurantTimeToDeliver_minute','Restaurant minutes','R','restaurantTimeToPrepare_hour','Restaurant hours','R','restaurantTimeToPrepare_minute','Restaurant minutes','R','restaurantStartTime_hour','Restaurant hours','R','restaurantStartTime_minute','Restaurant minutes','R','restaurantCloseTime_hour','Restaurant hours','R','restaurantCloseTime_minute','Restaurant minutes','R','restaurantIsDelivery','Restaurant status','R','areaId','Restaurant area name','R','restaurantMinimumDeliveryAmount','Restaurant delivery amount','RisNaN','restaurantPhone','Restaurant phone','isNaN','restaurantMobile','Restaurant mobile','isNaN'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function validateFormCust(formname)
{
	
	if(MM_validateForm(formname,'customerTitle','Customer title ','R','customerFName','Customer first name','R','customerLName','Customer last name','R','customerPassword','Customer password','R','customerEmail','Customer email','RisEmail','customerIsActive','Customer status','R','customerPhone','Customer phone','isNaN'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}


function validateFormCat(formname)
{
	
	if(MM_validateForm(formname,'categoryName','Category name','R'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}


function validateFormMenu(formname)
{
	
	if(MM_validateForm(formname,'menuItemName','Menu item name','R','mItemImage','Menu item image','R'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function validateFormCuisine(formname)
{
	
	if(MM_validateForm(formname,'cuisineInfoName','Cuisine name','R'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function validateFormRate(formname)
{
	
	if(MM_validateForm(formname,'price','Price','RisNaN','metricSize','Metric size','R','metricName','Metric name','R'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function chkLogin(formname)
{
	
	if(MM_validateForm(formname,'customerEmail','Member id','RisEmail','customerPassword','Password','R'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function chkForgotFrm(formname)
{
	
	if(MM_validateForm(formname,'customerEmail','Member id','RisEmail'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function validProductQuantity(id , pID)
{
	if(document.getElementById('productQty').value == 0)
	{
		alert("Product quantity is required.");
		document.getElementById('productQty').focus();
		return false;
	//
	}
	else if(!isNaN())
	{
		alert("Please enter valid product quantity.");	
		document.getElementById('productQty').focus();
		return false;
	}
	location.href = 'icart.php?id='+id+'&pID='+pID+'&qty='+document.getElementById('productQty').value;
}

function productPackage(id , pID , packageID)
{
	location.href = 'icart.php?type=productPackage&id='+id+'&pID='+pID+'&packID='+packageID;
}
function validateLoginForm(formname)
{
	
	if(MM_validateForm(formname,'frmUserName','Email','RisEmail','frmUserPassword','Password','R'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function validateCustomerForm(formname)
{
	
	if(MM_validateForm(formname,'frmUserFirstName', 'First Name', 'R', 'frmUserLastName', 'Last Name','R',  'frmUserEmail','Email','RisEmail','frmUserPassword','Password','RisEqualfrmConfirmUserPassword:Confirm Password', 'frmTermsCondition', 'Term', 'RisTerm' ))
	{
		//if(document.customerForm.frmTermsCondition.checked)
		//errors += '- '+nm+' is required.\n';	
		return true;
	} 
	else 
	{
		return false;
	
	} 

}
//Login details
function changePass(formname)
{
	
	if(MM_validateForm(formname,'frmUserPassword','Password','RisEqualfrmConfirmUserPassword:Confirm Password'))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}

function showLoginDetails(valHideID, valShowID)
{
	document.getElementById(valHideID).style.display = 'none';
	document.getElementById(valShowID).style.display = 'block';
}


function confirmLogin(value)
{
	if(value)
	{
		showLoginDetails('loginUpdateID',  'loginViewID');
		document.getElementById('loginMessage').className = 'success';
		document.getElementById('loginMessage').innerHTML = 'Password has been changed successfully.';
	}
	else
	{
		showLoginDetails('loginViewID','loginUpdateID');
		document.getElementById('loginMessage').className = 'error';
		document.getElementById('loginMessage').innerHTML = 'Please try again.';
	}
	document.getElementById('logingImage').style.display = 'none';
}

//Personal details
function personalValid(formname)
{
	if(MM_validateForm(formname,'UserTitle','Title','R' , 'UserFirstName', 'First Name', 'R', 'UserLastName', 'Last Name', 'R'))
	{
		return true;
	} 
	else 
	{
		return false;
	} 
}
//Billing and cc details
function BillingValid(formname)
{
	if(MM_validateForm(formname,'UserDetailStreetAddress','Street address','R' , 'UserDetailState', 'State', 'R', 'UserDetailCity', 'City', 'R',  'UserDetailZip', 'ZipCode', 'R', 'UserCardType', 'Card type', 'R', 'UserCardName','Card owner name','R', 'UserCardNumber', 'Card number','RisCC' ,'ExpYear', 'Expiry year', 'R', 'ExpMonth', 'Expiry month','R' ))
	{
		return true;
	} 
	else 
	{
		return false;
	} 
}

function testCreditCard() 
{
	if (checkCreditCard (document.getElementById('UserCardNumber').value, document.getElementById('UserCardType').value)) 
	{
		var success = 'yes';	
		return success ;
	} 
    else 
	{
		var success = (ccErrors[ccErrorNo]);		
		return  success;
		
	}
}

//shipping details validate

function ShippingValid(formname)
{
	if(MM_validateForm(formname,'shippingUserDetailStreetAddress','Shipping street address','R' , 'shippingUserDetailState', 'Shipping  state', 'R', 'shippingUserDetailCity', 'Shipping  city', 'R',  'shippingUserDetailZip', 'Shipping  zip code', 'R'))
	{
		return true;
	} 
	else 
	{
		return false;
	} 
}
//iuser_forgot_pass.php

function validateForgotPass(formname)
{
	if(MM_validateForm(formname,'frmUserEmail','E-mail address','RisEmail'))
	{
		return true;
	} 
	else 
	{
		return false;
	} 
}

function validateFormContact(formname)
{
	if(MM_validateForm(formname,'frmFullName','Name','R', 'frmEmail','E-mail', 'RisEmail', 'frmComment','Comment','R' ))
	{
		return true;
	} 
	else 
	{
		return false;
	
	} 

}
