function validateApplication() {
	var form_elem = document.forms['frmOnlineApplication'];
	var i = 0;
	var fileOK = true;
	var totalResult = true;
	var vtype;
	var thisResult;
	var elem;
	while (i < form_elem.elements.length) {
		vtype = form_elem.elements[i].getAttribute('vtype');
		switch (vtype) {
			case 'blanktext':
				thisResult = (form_elem.elements[i].value != '');
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			case 'date':
				thisResult = (checkValidDate(form_elem.elements[i].value));
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			default:
				break;
		}
		i++;
	}
	
	if (document.getElementById('file').value != '') {
		fileOK = ExtensionsOkay();
		if (!fileOK) {
			totalResult = false;
		}
	}

	elem = document.getElementById('errorDetected');
	elem.style.display = (totalResult)?"none":"block";
	
	return totalResult;
}

function validateJobHistory(ctrl) {
	var form_elem = document.forms['frmJobHistory'];
	var i = 0;
	var totalResult = true;
	var vtype;
	var thisResult;
	var elem;
	while (i < form_elem.elements.length) {
		vtype = form_elem.elements[i].getAttribute('vtype');
		switch (vtype) {
			case 'blanktext':
				thisResult = (form_elem.elements[i].value != '');
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			case 'date':
				thisResult = (checkValidDate(form_elem.elements[i].value));
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			default:
				break;
		}
		i++;
	}
	
	elem = document.getElementById('errorDetected');
	elem.style.display = (totalResult)?"none":"block";
	
	if (totalResult) {
		var data;
		
		data = "intApplicationId="+document.getElementById('intApplicationId').value;
		data += "&txtEmployerName="+document.getElementById('txtEmployerName').value;
		data += "&txtEmployerAddress1="+document.getElementById('txtEmployerAddress1').value;
		data += "&txtEmployerAddress2="+document.getElementById('txtEmployerAddress2').value;
		data += "&txtEmployerCity="+document.getElementById('txtEmployerCity').value;
		data += "&ddEmployerStateCode="+document.getElementById('ddEmployerStateCode').value;
		data += "&txtEmployerZipCode="+document.getElementById('txtEmployerZipCode').value;
		data += "&txtEmployerPhone="+document.getElementById('txtEmployerPhone').value;
		data += "&txtSupervisor="+document.getElementById('txtSupervisor').value;
		data += "&txtReasonForLeaving="+document.getElementById('txtReasonForLeaving').value;
		data += "&txtPayStart="+document.getElementById('txtPayStart').value;
		data += "&txtPayEnd="+document.getElementById('txtPayEnd').value;
		data += "&txtEmploymentStart="+document.getElementById('txtEmploymentStart').value;
		data += "&txtEmploymentEnd="+document.getElementById('txtEmploymentEnd').value;
		data += "&txtDuties="+document.getElementById('txtDuties').value;
		data += "&AddOrContinue="+ctrl.name;
		
		AjaxRequest('/includes/ajaxJobHistory.php', 'POST', data, ACTION_PROC, JobHistorySaved);
	}
}

function JobHistorySaved(AddOrContinue) {
	var elem1;
	var elem2;
	
	if (AddOrContinue == 'addAnother') {
		document.getElementById('txtEmployerName').value = '';
		document.getElementById('txtEmployerAddress1').value = '';
		document.getElementById('txtEmployerAddress2').value = '';
		document.getElementById('txtEmployerCity').value = '';
		document.getElementById('ddEmployerStateCode').selectedIndex = 0;
		document.getElementById('txtEmployerZipCode').value = '';
		document.getElementById('txtEmployerPhone').value = '';
		document.getElementById('txtSupervisor').value = '';
		document.getElementById('txtReasonForLeaving').value = '';
		document.getElementById('txtPayStart').value = '';
		document.getElementById('txtPayEnd').value = '';
		document.getElementById('txtEmploymentStart').value = '';
		document.getElementById('txtEmploymentEnd').value = '';
		document.getElementById('txtDuties').value = '';
		
		elem1 = document.getElementById('Success');
		elem1.style.display = "block";
		elem2 = document.getElementById('Failed');
		elem2.style.display = "none";
	} else if (AddOrContinue == 'addContinue') {
		window.location = "electronic-signature.php"
	} else {
		elem1 = document.getElementById('Success');
		elem1.style.display = "none";
		elem2 = document.getElementById('Failed');
		elem2.style.display = "block";
	}
}

function validateElectronicSignature() {
	var form_elem = document.forms['frmElectronicSignature'];
	var i = 0;
	var totalResult = true;
	var vtype;
	var thisResult;
	var elem;
	while (i < form_elem.elements.length) {
		vtype = form_elem.elements[i].getAttribute('vtype');
		switch (vtype) {
			case 'blanktext':
				thisResult = (form_elem.elements[i].value != '');
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			case 'date':
				thisResult = (checkValidDate(form_elem.elements[i].value));
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			default:
				break;
		}
		i++;
	}

	elem = document.getElementById('errorDetected');
	elem.style.display = (totalResult)?"none":"block";
	
	return totalResult;
}

function validateEOE() {
	var form_elem = document.forms['frmEOE'];
	var i = 0;
	var totalResult = true;
	var vtype;
	var thisResult;
	var elem;
	while (i < form_elem.elements.length) {
		vtype = form_elem.elements[i].getAttribute('vtype');
		switch (vtype) {
			case 'blanktext':
				thisResult = (form_elem.elements[i].value != '');
				if (!thisResult) {
					form_elem.elements[i].style.backgroundColor = 'yellow';
					totalResult = false;
				} else {
					form_elem.elements[i].style.backgroundColor = '';
				}
				break;
			default:
				break;
		}
		i++;
	}

	elem = document.getElementById('errorDetected');
	elem.style.display = (totalResult)?"none":"block";

	return totalResult;
}

function ExtensionsOkay() {
	var extension = new Array();
	var fieldvalue = document.getElementById('file').value;
	extension[0] = ".docx";
	extension[1] = ".doc";
	extension[2] = ".pdf";
	extension[3] = ".wpd";
	extension[4] = ".txt";
	var thisext = fieldvalue.substr(fieldvalue.lastIndexOf('.'));
	for(var i = 0; i < extension.length; i++) {
		if(thisext == extension[i]) {
			return true;
		}
	}
	alert("Your Resume is an unapproved file format.\n\nApproved formats: .docx .doc .pdf .wpd .txt");
	return false;
}


function displayField(ctrl, visible, requirement) {
	var elem;
	var fieldId;
	var fieldId2;
	var base;
	var i = 0;
	fieldId = ctrl.getAttribute('visibleChild');
	fieldId2 = ctrl.getAttribute('visibleChild2');
	if (fieldId != '') {
		elem = document.getElementById(fieldId);
		if (elem) {
			elem.style.display = (visible)?"block":"none";
		}
	}
	if (fieldId2 != '') {
		elem = document.getElementById(fieldId2);
		if (elem) {
			elem.style.display = (visible)?"block":"none";
		}
	}
	if (requirement) {
		while (i < requirement.length) {
			if (visible) {
				base = document.getElementById(requirement[i]).getAttribute('base');
				if (base == 'date') {
					document.getElementById(requirement[i]).value = 'mm/dd/yyyy';
				}
				document.getElementById(requirement[i]).setAttribute('vtype', base);
			} else {
				document.getElementById(requirement[i]).setAttribute('vtype', '');
				document.getElementById(requirement[i]).value = '';
			}
			i++;
		}
	}
}

function checkValidDate(dateStr) {
    var x;
    // dateStr must be of format month day year with either slashes
    // or dashes separating the parts. Some minor changes would have
    // to be made to use day month year or another format.
    // This function returns True if the date is valid.
    var slash1 = dateStr.indexOf("/");
    if (slash1 == -1) { slash1 = dateStr.indexOf("-"); }
    // if no slashes or dashes, invalid date
    if (slash1 == -1) { return false; }
    var dateMonth = dateStr.substring(0, slash1)
    var dateMonthAndYear = dateStr.substring(slash1+1, dateStr.length);
    var slash2 = dateMonthAndYear.indexOf("/");
    if (slash2 == -1) { slash2 = dateMonthAndYear.indexOf("-"); }
    // if not a second slash or dash, invalid date
    if (slash2 == -1) { return false; }
    var dateDay = dateMonthAndYear.substring(0, slash2);
    var dateYear = dateMonthAndYear.substring(slash2+1, dateMonthAndYear.length);
    if ( (dateMonth == "") || (dateDay == "") || (dateYear == "") ) { return false; }
    // if any non-digits in the month, invalid date
    for (x=0; x < dateMonth.length; x++) {
        var digit = dateMonth.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text month to a number
    var numMonth = 0;
    for (x = 0; x < dateMonth.length; x++) {
        digit = dateMonth.substring(x, x+1);
        numMonth *= 10;
        numMonth += parseInt(digit);
    }
    if ((numMonth <= 0) || (numMonth > 12)) { return false; }
    // if any non-digits in the day, invalid date
    for (x=0; x < dateDay.length; x++) {
        digit = dateDay.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text day to a number
    var numDay = 0;
    for (x=0; x < dateDay.length; x++) {
        digit = dateDay.substring(x, x+1);
        numDay *= 10;
        numDay += parseInt(digit);
    }
    if ((numDay <= 0) || (numDay > 31)) { return false; }
    // February can't be greater than 29 (leap year calculation comes later)
    if ((numMonth == 2) && (numDay > 29)) { return false; }
    // check for months with only 30 days
    if ((numMonth == 4) || (numMonth == 6) || (numMonth == 9) || (numMonth == 11)) {
        if (numDay > 30) { return false; }
    }
    // if any non-digits in the year, invalid date
    for (x=0; x < dateYear.length; x++) {
        digit = dateYear.substring(x, x+1);
        if ((digit < "0") || (digit > "9")) { return false; }
    }
    // convert the text year to a number
    var numYear = 0;
    for (x=0; x < dateYear.length; x++) {
        digit = dateYear.substring(x, x+1);
        numYear *= 10;
        numYear += parseInt(digit);
    }
    // Year must be a 2-digit year or a 4-digit year
    if ( (dateYear.length != 2) && (dateYear.length != 4) ) { return false; }
    // if 2-digit year, use 50 as a pivot date
    if ( (numYear < 50) && (dateYear.length == 2) ) { numYear += 2000; }
    if ( (numYear < 100) && (dateYear.length == 2) ) { numYear += 1900; }
    if ((numYear <= 0) || (numYear > 9999)) { return false; }
    // check for leap year if the month and day is Feb 29
    if ((numMonth == 2) && (numDay == 29)) {
        var div4 = numYear % 4;
        var div100 = numYear % 100;
        var div400 = numYear % 400;
        // if not divisible by 4, then not a leap year so Feb 29 is invalid
        if (div4 != 0) { return false; }
        // at this point, year is divisible by 4. So if year is divisible by
        // 100 and not 400, then it's not a leap year so Feb 29 is invalid
        if ((div100 == 0) && (div400 != 0)) { return false; }
    }
    // date is valid
    return true;
}
