// Validate.js
/*
* Generic JavaScript validator 1.0  
* Author: Vikas Bhagwagar. (B.E. Computer/NIT-Surat). Version 1.0
  Date: Aug 28, 2006
*/
var numberOfForms;
var numberOfElemOfForm = new Array();
var errorMsgArray = new Array();
var field;
var fieldName;
var prevFieldName;
var prevFieldType;
var fieldValue;
var fieldAttrib;
var fieldRequired;
var fieldType;
var fieldIndex;
var contCheckBoxLoop=true;
var checkBoxStack = new Array();
var checkBoxValueStack = new Array();
var checkBoxPropertyStack = new Array();


var checkBoxCounter = 0;
var radioStack = new Array();
var radioValueStack = new Array();
var radioPropertyStack = new Array();

var radioMsgStack = new Array();
var checkboxMsgStack = new Array();

var radioCounter = 0;
var checkboxTakeAction = 0;
var radioTakeAction = 0;
var userFunctionStack = new Array();
var userFunctionNameStack = new Array();

// Initialize the script.

window.onload = getFormDetails;

function register(functionName)
{
	try{
	userFunctionStack.push(functionName);
	}catch(e){
		alert("Function Register prob => "+e);
	}
}

function trim(s){
	while (s.substring(0,1) == ' '){
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' '){
		s = s.substring(0,s.length-1);
	}
	return s;
}

function validatePrevControl()
{

	if(prevFieldType == "checkbox")
	{

		if(checkBoxStack.length > 1)
		{
			anyOneChecked = false;
			anyOneRequired = false;
			anyErrorMsg = false;
			
			for(j=0;j<checkBoxValueStack.length;j++)
			{
				if(checkBoxValueStack[j] == true)
				{
				anyOneChecked = true;
				}
			}

			for(q=0;q<checkBoxPropertyStack.length;q++){
			if(checkBoxPropertyStack[q] == "yes" || checkBoxPropertyStack[q] == "true")
			{
			anyOneRequired =true;	
			}
			}


			if(!anyOneChecked && anyOneRequired)
			{
			
// Show error here...
for(u=0;u<checkboxMsgStack.length;u++){
if(checkboxMsgStack[u] != null && checkboxMsgStack[u] != "null" && checkboxMsgStack[u] != ""){	anyErrorMsg = true;
	alert(checkboxMsgStack[u]);
}
}
if(anyErrorMsg == false){
alert("Please check one of the checkbox.");
}
//radioMsgStack
//checkboxMsgStack 	
				emptyCheckBoxStack();
				checkboxTakeAction = 0;
				return false;
			}
			else
			{
				emptyCheckBoxStack();
				checkboxTakeAction = 0;
				return true;
			}

		}
		else if(checkBoxStack.length == 1)
		{

if(checkBoxValueStack[0] == false && (checkBoxPropertyStack[0] == "yes" || checkBoxPropertyStack[0] == "true"))
{
				

if(checkboxMsgStack[0] != null && checkboxMsgStack[0] != "null" && checkboxMsgStack[0] != "")
			{
			alert(checkboxMsgStack[0]);
			}else{
			alert("Please select the checkbox.");
			
			}
				emptyCheckBoxStack();
				checkboxTakeAction = 0;
				return false;
}
			else
			{
				emptyCheckBoxStack();
				checkboxTakeAction = 0;
				return true;
			}

		}
		else
		{

			emptyCheckBoxStack();
			checkboxTakeAction = 0;
			return true;
		}
	}


	if(prevFieldType == "radio")
	{

		if(radioStack.length > 1)
		{
			anyOneChecked = false;
			anyOneRequired = false;
			anyErrorMsg = false;
			for(j=0;j<radioValueStack.length;j++)
			{
				if(radioValueStack[j] == true)
				{
				anyOneChecked = true;
				}
			}

			for(q=0;q<radioPropertyStack.length;q++){
			if(radioPropertyStack[q] == "yes" || radioPropertyStack[q] == "true")
				{
				anyOneRequired =true;	
				}
			}

				if(!anyOneChecked && anyOneRequired)
				{
					

// Show error here...
for(u=0;u<radioMsgStack.length;u++){
if(radioMsgStack[u] != null && radioMsgStack[u] != "null" && radioMsgStack[u] != ""){
anyErrorMsg = true
	alert(radioMsgStack[u]);
}
}

if(anyErrorMsg == false){
alert("Please select one of the options.");
}
					emptyRadioStack();

					radioTakeAction = 0;
					return false;
				}
				else
				{
					emptyRadioStack();
					radioTakeAction = 0;
					return true;
				}
		}
		
		else if(radioStack.length == 1)
		{
if(radioValueStack[0] == false && (radioPropertyStack[0] == "yes" || radioPropertyStack[0] == "true"))
			{
				
if(radioMsgStack[0] != null && radioMsgStack[0] != "null" && radioMsgStack[0] != "")
			{
			alert(checkboxMsgStack[0]);
			}else{
			alert("Please select the Option.");
			
			}				emptyRadioStack();
				radioTakeAction = 0;
				return false;
			}
			else
			{
				emptyRadioStack();
				radioTakeAction = 0;
				return true;
			}
		}
		else
		{
			emptyRadioStack();
			radioTakeAction = 0;
			return true;
		}
	}
}


function clearAllStacks(){

			for(j=0 ; j<radioStack.length ; j++)
			{
				radioStack.pop();
			}

			for(j=0 ; j<radioValueStack.length ; j++)
			{
				radioValueStack.pop();
			}

			for(j=0 ; j<checkBoxPropertyStack.length ; j++)
			{
				checkBoxPropertyStack.pop();
			}
			
			for(j=0 ; j<checkBoxStack.length ; j++)
			{
				checkBoxStack.pop();
			}

			for(j=0 ; j<checkBoxValueStack.length ; j++)
			{
				checkBoxValueStack.pop();
			}
			
			for(j=0 ; j<radioPropertyStack.length ; j++)
			{
				radioPropertyStack.pop();
			}
}

function emptyCheckBoxStack()
{
		try{

		var numOfCheckBoxes = parseInt(checkBoxStack.length);


		for(k=0 ; k < numOfCheckBoxes ; k++)
			{
				checkBoxStack.pop();
			}		
		for(m=0 ; m < numOfCheckBoxes ; m++)
			{
				checkBoxValueStack.pop();
			}
		for(n=0 ; n < numOfCheckBoxes ; n++)
			{
				checkBoxPropertyStack.pop();
			}
		for(n=0 ; n < numOfCheckBoxes ; n++)
			{
				checkboxMsgStack.pop();
			}		
		
		}catch(e){
			alert("Empty checkbox error " + e);
		}
}



function emptyRadioStack()
{
		try{

		var numOfRadioButton = parseInt(radioStack.length);

		for(l=0 ; l < numOfRadioButton ; l++)
			{
				radioStack.pop();
			}
		for(n=0 ; n < numOfRadioButton ; n++)
			{
				radioValueStack.pop();
			}
		for(j=0 ; j< numOfRadioButton ; j++)
			{
				radioPropertyStack.pop();
			}
		for(j=0 ; j< numOfRadioButton ; j++)
			{
				radioMsgStack.pop();
			}

		}catch(e){
		alert("Empty Radio error " + e);
		}
}

function pushCheckBox()
{
		try{
		checkBoxStack.push(fieldName);
		checkBoxValueStack.push(fieldValue);
		checkBoxPropertyStack.push(fieldRequired);	
		checkboxMsgStack.push(fieldMsg);	

		checkboxTakeAction = 1;
		}
		catch(e){
		alert("Checkbox pushing error : " + e);
		}
}

function pushRadio()
{
		try{

		radioStack.push(fieldName);
		radioValueStack.push(fieldValue);
		radioPropertyStack.push(fieldRequired);
		radioMsgStack.push(fieldMsg);
		
		radioTakeAction = 1;
		}catch(e){
		alert("Radio button pushing error : " + e);
		}
}


function getFormDetails()
{
	numberOfForms = document.forms.length;
	if(numberOfForms!=0)setUpValidation();
	else return;
}


function setUpValidation()
{

	for(j = 0 ; j < numberOfForms ; j++)
	{

		try{
		numberOfElemOfForm[j] = document.forms[j].elements.length;
		}catch(e){
		alert(e);
		}
		try{
		
		document.forms[j].onsubmit = validate;
		document.forms[j].setAttribute('formNumber',j);
		}catch(e){
			alert(e);
		}		
	}
	try{
	document.forms[0].elements[0].focus();
	}catch(e){}
}


function _date()
{
	var regex = /^[\d]{2}[\-|\/\.][\d]{2}[\-|\/\.][\d]{4}$/;
	if(!regex.test(fieldValue))
	{
		alert("Invalid Date format");
		__setFocus();
		return false;
	}
	else
	{
		var dd = parseInt(fieldValue.substring(0,2), 10);
		var mm = parseInt(fieldValue.substring(3,5), 10);
		var yy = parseInt(fieldValue.substring(6,10), 10);
	
		if(dd == 0 || mm == 0 || yy==0){
		alert("Invalid Date...");
		return false;
		}
			if(mm <= 12){
			switch(mm) {
				case 4:
				case 6:
				case 9:
				case 11:
					if (dd > 30) 
					{
						alert("This month has 30 days");
						return false;
					}
					
				break;
			}
			}else{
				alert("Invalid Months...\n\nMakesure date format must be one of the following...\n\n[1] dd-mm-yyyy\n[2] dd/mm/yyyy\n[3] dd.mm.yyyy");
				return false;
			}
	
			if ((yy % 4) == 0) {
				if ((mm == 2) && (dd > 29)) {
						alert("Invalid days in February for leap year");
						return false;
				}
			}
			else {
				if ((mm == 2) && (dd > 28)) {
						alert("Invalid days in February for non leap year.");
						return false;
				}
			}
	}
	return true;
}

function _validatephone()
{
var notallowed_prefix=Array("1234567","4567890","3456789","0000000","1111111","2222222","3333333","4444444","5555555","6666666","7777777","8888888","9999999","000","911","555","012","123");
var notallowed_suffix=Array("1234567","4567890","3456789","0000000","1111111","2222222","3333333","4444444","5555555","6666666","7777777","8888888","9999999","555");
counter=notallowed_prefix.length;
	for(var i=0;i<counter;i++){
	if(fieldValue.indexOf(notallowed_prefix[i])==0 || fieldValue.lastIndexOf(notallowed_suffix[i])==3){
		if(fieldValue.indexOf(notallowed_suffix[i])==3){
		alert("Please enter a valid Phone Number, suffix "+notallowed_suffix[i]+" is invalid.");
		}else{
		alert("Please enter a valid Phone Number, prefix "+notallowed_prefix[i]+" is invalid.");
		}
		__setFocus();
		return false;
	}
	}
	return true;
}


function checkcountry(field){
	value=field.value;
 if(value =="other"){
 alert("This school's programs are not available to non-U.S. citizens.");
 field.selectedIndex=0;
 }
}

function checkleveled(field,fieldname){
	value=document.request.interest1;
 if((field.value=="HS" || field.value=="SCL" || field.value=="ADG") && value !="PSY-BA"){
  alert("Argosy University does not accept inquiries for its Graduate Degree Programs from individuals who have not obtained their Bachelor's Degree.");
  field.selectedIndex=0;
 }
}

function yearvalidation(year){
	
 value=document.request.interest1.value;
 if((year>2000) && ( value == "BUSAD-DB" || value == "EXL-EDD" || value== "COPSY-ED" || value == "EDL-EDD" || value == "INST-EDD" || value == "ORL-EDD") ){
					alert("Argosy University requires applicants to have a minimum high school year of graduation of 2000.");
					}
					
					if(year>2003 && (value == "EDL-MAE" || value == "INST-MAE" || value == "BUSAD-MB" || value == "MGMT-MA") ){
					alert("Argosy University requires applicants to have a minimum high school year of graduation of 2003.");
					}
					if(year>2007 && value =="PSY-BA"){
					alert("Argosy University requires applicants to have a minimum high school year of graduation of 2007.");
					}
}

function emailvalidate(email1,email2){

value=email2.value;
if(email1.value != value){
 alert("this field value must match the value of the Email field.");
 email1.value="";
}
}

function _phone1()
{
	if(fieldValue !=""){
	var regex = /[\d]{3}$/
	if(!regex.test(fieldValue))
	{
		alert("Please enter Phone digits in XXX pattern.");
		__setFocus();
		return false;
	}
	}
	
	
	return true;
}

function _phone2()
{
	if(fieldValue !=""){
		
	var regex = /[\d]{3}$/
	if(!regex.test(fieldValue))
	{
		alert("Please enter Phone digits in XXX pattern.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _phone3()
{
	if(fieldValue !=""){
		
	var regex = /[\d]{4}$/
	if(!regex.test(fieldValue))
	{
		alert("Please enter Phone digits in XXXX pattern.");
		__setFocus();
		return false;
	}
	}
	return true;
}


function _usPhoneNumber()
{
	if(fieldValue !=""){
	var regex = /[\d]{3}[\-][\d]{3}[\-][\d]{4}$/
	if(!regex.test(fieldValue))
	{
		alert("Please enter Phone digits in XXX-XXX-XXXX pattern.");
		__setFocus();
		return false;
	}
	}
	return true;
}
function _usPhoneNumber1()
{
	if(fieldValue !=""){
	var regex = /[\d]{3}/
	if(!regex.test(fieldValue))
	{
		alert("Please enter Phone digits in XXX pattern.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _usPhoneNumber2()
{
	if(fieldValue !=""){
	var regex = /[\d]{8}/
	if(!regex.test(fieldValue))
	{
		alert("Please enter Phone digits in XXXXXXXX pattern.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _age()
{
	if(fieldValue !=""){
	var regex = /[\d]{2}/
	if(regex.test(fieldValue)){
	 if(fieldValue<18)
	 {
		alert("You must be 18 or above.");
		__setFocus();
		return false;
	 }
	}else{
		alert("Invalid age.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _maxyear(fieldvalue,maxvalue,fieldName)
{
	if(maxvalue>0){
	if(fieldvalue > maxvalue){
    alert("Sorry we are not currently accepting year you selected.");
	document.getElementById(fieldName).value=maxvalue;
	return false;
	 }
	}
	return true;
}


function _mobileNumber()
{
	var regex1 = /^[\d]{10}$/;
	var regex2 = /[\(][\+][\d]{2}[\)][\d]{10}/;

	if(!regex1.test(fieldValue) && !regex2.test(fieldValue))
	{
		alert("Please enter Phone in (+xx)xxxxxxxxxx or xxxxxxxxxx pattern.");
		__setFocus();
		return false;
	}
	return true;
}


function _phoneNumber()
{
	if(fieldValue!="")
	{
	var regex = /^[\d]{10}/;

	if(!regex.test(fieldValue))
	{
		alert("Please enter 10 digits Phone in XXXXXXXXXX pattern.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _specialChars()
{
	if(fieldValue!=""){
	var regex = /^[a-zA-Z0-9\ ]+$/;
	if(!regex.test(fieldValue))
	{

		if(!fieldMsg){
		alert("No Special charactors.");
		}else{
			alert(fieldMsg);
		}
		__setFocus();
		return false;
	}
	}
	return true;
}

function _specialCharsAndNumbers()
{
	if(fieldValue!=""){
	var regex = /^[a-zA-Z\ ]+$/;
	if(!regex.test(fieldValue))
	{
		if(!fieldMsg){
		alert("No Special charactors or Number allowed.");
		}else{
			alert(fieldMsg);
		}
		__setFocus();
		return false;
	}
	}
	return true;
}

function _email()
{
	if(fieldValue!=""){
	var regex = /^[\w]+(\.[\w]+)*@([\w\-]+\.)+[a-zA-Z]{2,7}$/ ;
	if(!regex.test(fieldValue))
	{
		alert("Invalid Email.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _username()
{
	if(fieldValue!=""){
	var regex = /^[a-zA-Z]+[a-zA-Z0-9\.\_]*[a-zA-Z0-9]+$/;
	if(!regex.test(fieldValue))
	{

		if(!fieldMsg){
		alert("No Special charactors.");
		}else{
			alert(fieldMsg);
		}
		__setFocus();
		return false;
	}
	}
	return true;
}

function _flName()
{
	if(fieldValue!=""){
	var regex = /^[a-zA-Z]+$/;
	if(!regex.test(fieldValue))
	{

		if(!fieldMsg){
		alert("No Special charactors.");
		}else{
			alert(fieldMsg);
		}
		__setFocus();
		return false;
	}
	}
	return true;
}

function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}

function checkminvalue(){
if(fieldValue.length>0 && fieldValue.length<25){
 alert("Please enter at least 25 characters");
 __setFocus();
 return false;
}
return true;
}

function _currency()
{
	if(fieldValue!=""){

regex1 = /^[\d]+[\d\.]*[\d]+$/;
regex2 = /^[\d]+$/;

    if(!regex1.test(fieldValue) && !regex2.test(fieldValue)) {
		if(!fieldMsg){
		alert("Invalid Input");
		}else{
			alert(fieldMsg);
		}
		 return false;
    }
	}
	return true;
}

function _url()
{
	if(fieldValue!=""){

var regex1 = /^(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$/;
var regex2 = /^(((http(s?))|(ftp))\:\/\/)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$/;



	if(!regex1.test(fieldValue) && !regex2.test(fieldValue))
	{
		if(!fieldMsg){
		alert("Not a valid url.");
		}else{
			alert(fieldMsg);
		}
		//alert("Not valid url.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _digits()
{

	var regex = /^[\d]+$/;

	if(!regex.test(fieldValue))
	{
		if(!fieldMsg){
		alert("Invalid Digits");
		}else{
			alert(fieldMsg);
		}
		__setFocus();
		return false;
	}
	return true;
}

function _zip()
{
	if(fieldValue!=""){
	var regex1 = /^[\d]{5}$/;
	//var regex2 = /^[A-Za-z]{1,2}[0-9A-Za-z]{1,2}[ ]?[0-9]{0,1}[A-Za-z]{2}$/; 

	if(!regex1.test(fieldValue))
	{
		alert("Zip Code is invalid.");
		__setFocus();
		return false;
	}
	}
	return true;
}

function _custom()
{
//	alert("Custom Comparing");
	if(fieldValue!=""){
	
	if(fieldPattern != null){
	var num = eval("/"+fieldPattern+"/");
	if(!num.test(fieldValue))
	{
		if(!fieldMsg){
		alert("Error occured");
		}else{
			alert(fieldMsg);
		}
		__setFocus();
		return false;
	}
	
	}else{
		alert("Coding Error\n\nNo \"pattern\" attribute found in form field : \""+ fieldName +"\".");
		__setFocus();
		return false;
	}
	}

	return true;
}

function __setFocus()
{
		try{
			field.focus();
			field.select();
		}catch(e){
		}
}

function validate(e)
{
		var eventIsFiredFromTheForm = 0;
		prevFieldName = "";
prevFieldType = "";
var numberOfUserFunctions = parseInt(userFunctionStack.length);

if(numberOfUserFunctions > 0){
for( d = 0 ; d < numberOfUserFunctions ; d++){
	try{
	if(!userFunctionStack[d]()){
		return false;
	}
	}catch(e){
		alert(e);
	}
}
}


for(i=0 ; i < document.forms[eventIsFiredFromTheForm].elements.length ; i++)
{

fieldIndex = i;
field = document.forms[eventIsFiredFromTheForm].elements[i];
fieldType = document.forms[eventIsFiredFromTheForm].elements[i].type;
fieldName = document.forms[eventIsFiredFromTheForm].elements[i].name;
fieldAttrib = document.forms[eventIsFiredFromTheForm].elements[i].getAttribute("authtype");
fieldRequired = document.forms[eventIsFiredFromTheForm].elements[i].getAttribute("required");
fieldPattern = field.getAttribute("pattern");
fieldMsg = field.getAttribute("errormsg");


if(fieldType == "text" || fieldType == "textarea" ||  fieldType == "file" || fieldType == "password" || fieldType=="hidden")
{


	fieldValue = document.forms[eventIsFiredFromTheForm].elements[i].value;
	if(prevFieldType == "radio" || prevFieldType == "checkbox")
	{	
		try{
	
			if(checkboxTakeAction == 1 && prevFieldType == "checkbox")
			{

				if(!validatePrevControl()){
					return false;
				}else{
					emptyCheckBoxStack();
				}
			}
			else if(radioTakeAction == 1 && prevFieldType == "radio")
			{
				if(!validatePrevControl()){
					return false;
				}else{
					emptyRadioStack();
				}
			}
			else
			{
				clearAllStacks();
			}



		}catch(e){
		}
	}

	
	if(fieldAttrib == null && fieldRequired == null){
	prevFieldName = fieldName;
	prevFieldType = fieldType;
	continue;
	}
	else if(fieldAttrib == null && fieldRequired != null){
	}
	else if(fieldAttrib != null && fieldRequired == null){
	}
	else if(fieldAttrib != null && fieldRequired != null){
		
		if(trim(fieldAttrib) == "" && trim(fieldRequired) == "")
		{
		prevFieldName = fieldName;
		prevFieldType = fieldType;
		continue;
		}
	}

    
	if(fieldRequired != null){
		if(fieldRequired.toLowerCase() == "yes" || fieldRequired.toLowerCase() == "required" || fieldRequired.toLowerCase() == "true")
	{
		
		if(trim(fieldValue) == "" && (fieldRequired.toLowerCase() == "yes" || fieldRequired.toLowerCase() == "required" || fieldRequired.toLowerCase() == "true"))
		{
			if(fieldMsg){
			 alert(fieldMsg);
			}else{
			alert("Required field must not be left empty.");
			}
			field.focus();
			return false;
		}

	}
	}
	if (fieldAttrib != null){
	 if(fieldAttrib){
	
		try{
			functionStr = fieldAttrib;
			functionExec = eval(fieldAttrib);
			if(fieldAttrib){
			if(!functionExec()){
				return false;
			}

			}else{
				alert("Coding Error\n\nWrong \"authtype\" attribute in form field : \""+ fieldName +"\"\, unable to process the authtype = " + functionStr + "\n\nPlease check the function \"" + functionStr + "\" written perfectly or not...!!");
				return false;
			}

		}catch(e){
alert("Coding Error\n\nWrong \"authtype\" attribute in form  field : \""+ fieldName +"\"\, unable to process : authtype = \"" + functionStr + "\"\n\nPlease check the function \"" + functionStr + "\" written perfectly or not...!!");
return false;

		}

		}
	}
	
	}
	
if(fieldType == "submit" || fieldType == "button" || fieldType == "image")
{

	if(prevFieldType == "radio" || prevFieldType == "checkbox")
	{
		try{
	
			if(checkboxTakeAction == 1 && prevFieldType == "checkbox")
			{

				if(!validatePrevControl()){
					return false;
				}else{
					emptyCheckBoxStack();
				}
			}
			else if(radioTakeAction == 1 && prevFieldType == "radio")
			{
				if(!validatePrevControl()){
					return false;
				}else{
					emptyRadioStack();
				}
			}
			else
			{
				clearAllStacks();
			}



		}catch(e){
		}
	}
}

if(fieldType == "select-one")
{
	if(prevFieldType == "radio" || prevFieldType == "checkbox")
	{	

		try{
	
			if(checkboxTakeAction == 1 && prevFieldType == "checkbox")
			{

				if(!validatePrevControl()){
					return false;
				}else{
					emptyCheckBoxStack();
				}
			}
			else if(radioTakeAction == 1 && prevFieldType == "radio")
			{
				if(!validatePrevControl()){
					return false;
				}else{
					emptyRadioStack();
				}
			}
			else
			{
				clearAllStacks();
			}



		}catch(e){
		}
	}
	fieldValue = document.forms[eventIsFiredFromTheForm].elements[i].value;
	if(fieldRequired != null && trim(fieldRequired) != ""){
	if(fieldRequired.toLowerCase() == "yes")
	{
	if(trim(fieldValue) == "" && fieldRequired.toLowerCase() == "yes"){
			if(!fieldMsg){
			alert("Required field must not be left empty.");
			}else{
			alert(fieldMsg);
			}
			field.focus();
		return false;
	}
	}
	}
}



if(fieldType == "select-multiple")
{
		
	if(prevFieldType == "radio" || prevFieldType == "checkbox")
	{	

		try{
	
			if(checkboxTakeAction == 1 && prevFieldType == "checkbox")
			{

				if(!validatePrevControl()){
					return false;
				}else{
					emptyCheckBoxStack();
				}
			}
			else if(radioTakeAction == 1 && prevFieldType == "radio")
			{
				if(!validatePrevControl()){
					return false;
				}else{
					emptyRadioStack();
				}
			}
			else
			{
				clearAllStacks();
			}



		}catch(e){
		}
	}

	fieldValue = document.forms[eventIsFiredFromTheForm].elements[i].value;
	if(fieldRequired != null && trim(fieldRequired) != ""){
	if(fieldRequired.toLowerCase() == "yes" || fieldRequired.toLowerCase() == "true")
	{
	var noneSelected = true;
	var end = parseInt(field.options.length);
	for(z=0 ; z < end ; z++)
	{
		if(field.options[z].selected && field.options[z].value !="")
		{
			noneSelected = false;
		}
	}
	
	if(noneSelected){
    
	if(!fieldMsg){
		alert("Please select atleast one option from multi-select.");
		}else{
			alert(fieldMsg);
		}
		return false;
	}
	
	}
	}

}

if(fieldType == "checkbox")
{

	fieldValue = document.forms[eventIsFiredFromTheForm].elements[i].checked;

	if(checkboxTakeAction == 1 || radioTakeAction == 1)
	{
		if((fieldName == prevFieldName) && (fieldType == prevFieldType))
		{
			pushCheckBox();
		
		}
		else
		{	
			if(!validatePrevControl()){
					return false;
				}
			pushCheckBox();
		}
	}
	else
	{
		pushCheckBox();
	}
}


if(fieldType == "radio")
{
	fieldValue = document.forms[eventIsFiredFromTheForm].elements[i].checked;

	if(radioTakeAction == 1 || checkboxTakeAction == 1)
	{
		if((fieldName == prevFieldName) && (fieldType == prevFieldType))
		{
			pushRadio();
		}
		else
		{
			if(!validatePrevControl()){
				return false;
				}
			pushRadio();
		}
	}
	else
	{
		pushRadio();
	}
}

prevFieldName = fieldName;
prevFieldType = fieldType;

}
document.forms[eventIsFiredFromTheForm].submit();
}
