/** 
 * File Info
 * ----------------------------------
 * @filename     appFormFunctions.js
 * @created      xx.xx.xxxx
 * @author       unknown
 * @description  
 *
 * History
 * ---------------------------------
 * Date         Name      Note
 * 
 */

// JavaScript Document
 var emailregex = /^[\w\_\-\.]+@[\w\_\-\.]+\.\w+$/;

function submitForm(formname)
{
    var formlist = "";
    var missingreq = false;

    var frm = document.forms[formname];

    //search for commas in list, and separate
    var regEx = /[,]/
    //separate the list at each comma

	var requiredList = frm.requiredFields.value.split(regEx);

	list="";

        for(i = 0; i < requiredList.length; i++)
	//loops thru all the fields that are listed as required
	{
		var x = requiredList[i];

		for(j = 0; j < frm.elements.length; j++)

		//loops thru ALL fields - comparing them to the list of those required
		{
			if(frm.elements[j].name.match(requiredList[i]))
			//if(requiredList[i] == frm.elements[j].name)
			//if they match then we determine if it has been filled in or not
			{
				if (frm.elements[j].name == "email")
				{
					if(!frm.elements[j].value.match(emailregex))
					{
						alert("The email address '" + frm.elements[j].value + "' is not in a correct format.\n Please try again");
						return false;
					}
				}

				if (frm.elements[j].type == "text")

      				  {
      				      if (frm.elements[j].value == "")
      				          missingreq = true;
    				    }

   				if (frm.elements[j].type == "radio")
        			{
            			var onechecked = false;
            			for (r = 0; r < frm.elements.length; r++)
           			 {
               			 if (frm.elements[r].name == frm.elements[j].name && frm.elements[r].checked)
                   		 onechecked = true;
           			 }

           			 if (!onechecked)
               			 missingreq = true;
        			}

       				 //Users are only able to select one of two valid values, so this is not needed. If it is brought back,
					 //the better way to handle this is to check for value, rather than index.
       				 //if (frm.elements[j].type == "select-one")
       				 //{
           			 //if (frm.elements[j].selectedIndex == 0) {
               		 //	 missingreq = true;
					 //	 alert(frm.elements[j].name);
					 //	 }
       				 //}



			}//end of match if


		}//end of secondary for loop


	}//end of initial for loop



    if (missingreq)
    {
        msg = "The form was not submitted because required fields were not filled.";

        alert(msg);
        return false;
    }

    return true;
}


 var emailregex = /^[\w\_\-\.]+@[\w\_\-\.]+\.\w+$/;

function submitApplicationForm(formname)
{
    var formlist = "";
    var missingreq = false;

    var frm = document.forms[formname];

    //search for commas in list, and separate
    var regEx = /[,]/
    //separate the list at each comma
    
    var requiredList;
    var monthList;
    var yearList;
    
    var alertText = "The Form was not submitted because the following required fields were not filled out:\n";

	if (frm.requiredFields.value != "") {
		requiredList = frm.requiredFields.value.split(regEx);
	}
	if (frm.monthinput.value != "") {
		monthList = frm.monthinput.value.split(regEx);
	}
	if (frm.yearinput.value != "") {
		yearList = frm.yearinput.value.split(regEx);
	}

	list="";

	// Loop through all the month fields
	for (i = 0; i < monthList.length; i++) { 
		for (j = 0; j < frm.elements.length; j++ ) {
			if(frm.elements[j].name.match(monthList[i])) {
				if (frm.elements[j].value != "" && frm.elements[j].value != "mm") {
					//alert(parseInt(frm.elements[j].value,10));
					if (isNaN(parseInt(frm.elements[j].value,10)) || (parseInt(frm.elements[j].value,10) < 1 || parseInt(frm.elements[j].value,10) > 12)) {
						alert("'" + frm.elements[j].value + "' is not a valid month, please enter a number from 1 to 12");
						return false;
					}
				}
			}
		}
	}
	
	

	// Loop through all the year fields
	for (i = 0; i < yearList.length; i++) { 
		for (j = 0; j < frm.elements.length; j++ ) {
			if(frm.elements[j].name.match(yearList[i])) {
				if (frm.elements[j].value != "" && frm.elements[j].value != "yyyy") {
					if (isNaN(parseInt(frm.elements[j].value,10)) || (parseInt(frm.elements[j].value,10) < 1900 || parseInt(frm.elements[j].value,10) > 2099)) {
						alert("'" + frm.elements[j].value + "' is not a valid year, please enter a number between 1900 and 2099");
						return false;
					}
				}
			}
		}
	}
	
	for(j = 0; j < frm.elements.length; j++) {
		if (frm.elements[j].name == "applyingfor1" && frm.elements[j].value == "") {
			if (frm.applyingfor2.value == "" && frm.applyingfor3.value == "") {
				alertText += "Specify at least one position applying for.\n";
				missingreq = true;
				//alert("\"Other\" date requred");
				//return false;
			}
		}
		if (frm.elements[j].name == "whentowork" && frm.elements[j].value == "Other" && frm.elements[j].checked) {
			if (frm.otherdatetextbox.value == "") {
				alertText += "\"Other\" date required\n";
				missingreq = true;
				//alert("\"Other\" date requred");
				//return false;
			}
		}
		if (frm.elements[j].name == "referredhow" && frm.elements[j].value == "SubradEmployee" && frm.elements[j].checked) {
			if (frm.employeespecify.value == "") {
				alertText += "Please specify an employee name";
				missingreq = true;
				//alert("Please specify an employee name\n");
				//return false;
			}
		}
		if (frm.elements[j].name == "collegegraduated1" && frm.elements[j].value == "yes" && frm.elements[j].checked) {
			//alert ("This is a test");
			if (frm.collegeyeargraduated1.value == "") {
			//alert ("This is a test");
				alertText += "Please specify which year you graduated in.\n";
				missingreq = true;
				//alert("Please specify which year you graduated in.\n");
				//return false;
			}
		}
		if (frm.elements[j].name == "collegegraduated2" && frm.elements[j].value == "yes" && frm.elements[j].checked) {
			if (frm.collegeyeargraduated2.value == "") {
				alertText += "Please specify which year you graduated in.\n";
				missingreq = true;
				//alert("Please specify which year you graduated in.\n");
				//return false;
			}
		}
		if (frm.elements[j].name == "othergraduated" && frm.elements[j].value == "yes" && frm.elements[j].checked) {
			if (frm.otheryeargraduated.value == "") {
				alertText += "Please specify which year you graduated in.\n";
				missingreq = true;
				//alert("Please specify which year you graduated in.\n");
				//return false;
			}
		}
		if (frm.elements[j].name == "crime" && frm.elements[j].value == "yes" && frm.elements[j].checked) {
			if (frm.crimedescription.value == "") {
				alertText += "Please describe the misdemeanor/felony\n";
				missingreq = true;
				//alert("\"Other\" date requred");
				//return false;
			}
		}
	}
 if(requiredList) {
    for(i = 0; i < requiredList.length; i++)
	//loops thru all the fields that are listed as required
	{
	//alert("Missingreq: " + missingreq + "\nCurrent Element: " + requiredList[i]);
		var x = requiredList[i];

		for(j = 0; j < frm.elements.length; j++)
		//loops thru ALL fields - comparing them to the list of those required
		{
			

			if(frm.elements[j].name.match(requiredList[i]))
			//if(requiredList[i] == frm.elements[j].name)
			//if they match then we determine if it has been filled in or not
			{
				var currentFieldName = getFieldName(frm.elements[j].name);
			
			
				if (frm.elements[j].name == "email")
				{
					if(!frm.elements[j].value.match(emailregex))
					{
						alertText += "The email address '" + frm.elements[j].value + "' is not in a correct format.\n Please try again";
						//alert("The email address '" + frm.elements[j].value + "' is not in a correct format.\n");
						//return false;
					}
				}

				if (frm.elements[j].type == "text")

      				  {
      				      if (frm.elements[j].value == "") {
      				      	  alertText += currentFieldName + "\n";
      				          missingreq = true;
      				          }
    				    }

   				if (frm.elements[j].type == "radio")
        			{
            			var onechecked = false;
            			for (r = 0; r < frm.elements.length; r++)
           			 {
               			 if (frm.elements[r].name == frm.elements[j].name && frm.elements[r].checked) {
                   		 	onechecked = true;
                   		 }
           			 }

           			 if (!onechecked) {
               				 missingreq = true;
               				 alertText += currentFieldName + "\n";
               			 }
        			}

       				 if (frm.elements[j].type == "select-one")
       				 {
           			 if (frm.elements[j].selectedIndex == 0)
               			 missingreq = true;
       				 }



			}//end of match if


		}//end of secondary for loop


	}//end of initial for loop
}



    if (missingreq)
    {
        msg = "The form was not submitted because required fields were not filled.";

        alert(alertText);
        return false;
    }

    return true;
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode;
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}

function submitAppFormFunction(bob) {
  document.appForm.action = bob;
}

function go_there()
{
 var where_to= confirm("Attention: by clicking 'ok' you will lose all\nof your saved information and will be redirected\nto the homepage.");
 if (where_to== true)
 {
  submitAppFormFunction('index.html');
 }
 else {
 	return false;
 }
}

function getFieldName (name) {
 var fullname = "";
 
 if (name == "firstname"){
 	fullname = "First Name";
 }
 if (name == "lastname"){
 	fullname = "Last Name";
 }
 if (name == "street"){
 	fullname = "Address";
 }
 if (name == "city"){
 	fullname = "City";
 }
 if (name == "state"){
 	fullname = "State";
 }
 if (name == "zip"){
 	fullname = "Zip";
 }
 if (name == "dayphone1"){
 	fullname = "Day Phone Part 1";
 }
 if (name == "dayphone2"){
 	fullname = "Day Phone Part 2";
 }
 if (name == "dayphone3"){
 	fullname = "Day Phone Part 3";
 }
 if (name == "crime"){
 	fullname = "Misdemeanor/Felony";
 }
 
 return fullname;
}