﻿var boolProcess;

function GetXmlHttpObject() {

	var xmlHttp = false;

	try {

		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	
	}

	catch (e) {

		try {

			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	
		}

		catch (E) {

			xmlHttp = false;
	
		}

	}

	if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {

		xmlHttp = new XMLHttpRequest();
	
	}
	
	return xmlHttp;
}

function submitForm(form, script, divID, funcValidate) {
	
	var idObj;
	var strPost;
	
	strPost = getFormValues(form, funcValidate);
	
	if(boolProcess) {
	
		idObj = document.getElementById(divID);
		process(script, idObj, "POST", strPost);
		
	}
	
}

function validateStudent(form, strVal, strName) {
	
	if(strName == "student[name]" && !isFilled(strVal)) {
		alert("Error. Please enter your full name.");
		form.elements["student[name]"].focus();
		return false;
	}
	
	if(strName == "student[school_name]" && !isFilled(strVal)) {
		alert("Error. Please enter your school's name.");
		form.elements["student[school_name]"].focus();
		return false;
	}
	
	if(strName == "student[address]" && !isFilled(strVal)) {
		alert("Error. Please enter your street address.");
		form.elements["student[address]"].focus();
		return false;
	}
	
	if(strName == "student[city]" && !isFilled(strVal)) {
		alert("Error. Please enter your city.");
		form.elements["student[city]"].focus();
		return false;
	}
	
	if(strName == "student[state]" && strVal == "null") {
		alert("Error. Please select your state.");
		form.elements["student[state]"].focus();
		return false;
	}
	
	if(strName == "student[zip]" && !isFilled(strVal)) {
		alert("Error. Please enter your zipcode.");
		form.elements["student[zip]"].focus();
		return false;
	}
	
	if(strName == "student[phone]" && !isFilled(strVal)) {
		alert("Error. Please enter your please enter your phone number in the following format: [555-555-5555].");
		form.elements["student[phone]"].focus();
		return false;
	}
	
	if(strName == "student[email]" && isFilled(strVal)) {
		if(!isEmail(strVal)) {
			alert("Error. Email address not valid. Please enter your email address in the following format: [me@mydomain.com].");
			form.elements["student[email]"].focus();
			return false;
		}
	}
	
	if(!form.elements["student[externship]"].checked && !form.elements["student[full_time]"].checked && !isFilled(form.elements["student[length]"].value)) {
		alert("Error. Please choose either Full Time or Externship.");
		form.elements["student[externship]"].focus();
		return false
	}
	
	if(strName == "student[externship]") {
		if(form.elements["student[externship]"].checked && !isFilled(form.elements["student[length]"].value)) {
			alert("Error. You must specify a length for the Externship.");
			form.elements["student[length]"].focus();
			return false
		}
	}
	
	if(strName == "student[length]" && isFilled(strVal)) {
		if(!form.elements["student[externship]"].checked) {
			alert("Error. Please check the Externship checkbox.");
			form.elements["student[externship]"].focus();
			return false;
		}
	}
	
	if(form.elements["student[externship]"].checked && form.elements["student[full_time]"].checked) {
		alert("Error. Please choose either Full Time or Externship.");
		form.elements["student[full_time]"].focus();
		return false
	}
	
	if(isFilled(form.elements["student[length]"].value) && form.elements["student[full_time]"].checked) {
		alert("Error. Please choose either Full Time or Externship. A choice of Full Time does not allow any values for the Externship option.");
		form.elements["student[length]"].focus();
		return false
	}
	
	if(strName == "student[year_of_graduation]" && !isFilled(strVal)) {
		alert("Error. Please enter the year you graduated.");
		form.elements["student[year_of_graduation]"].focus();
		return false;
	}
	
	if(strName == "student[travel_distance]" && !isFilled(strVal)) {
		alert("Error. Please enter the distance you are willing to travel.");
		form.elements["student[travel_distance]"].focus();
		return false;
	}
	
	if(strName == "student[start_date]" && !isFilled(strVal)) {
		alert("Error. Please enter the on which you are able to start.");
		form.elements["student[start_date]"].focus();
		return false;
	}
	
	if(strName == "student[start_date]" && isFilled(strVal)) {
		if(!isDate(strVal)) {
			alert("Error. Please enter the date in the following format: m/dd/yyyy.");
			form.elements["student[start_date]"].focus();
			return false;
		}
	}
	
	if(strName == "student[transportation]") {
		if(!form.elements["student[transportation]"][0].checked && !form.elements["student[transportation]"][1].checked) {
			alert("Error. Please specify whether or not you have your own means of transportation.");
			form.elements["student[transportation]"][0].focus();
			return false
		}
	}
	
	if(strName == "student[mon_from]" && isFilled(form.elements["student[mon_from]"].value) && !isFilled(form.elements["student[mon_to]"].value)) {
		alert("Error. Please enter an end time for Monday.");
		form.elements["student[mon_to]"].focus();
		return false;
	}
	
	if(strName == "student[tue_from]" && isFilled(form.elements["student[tue_from]"].value) && !isFilled(form.elements["student[tue_to]"].value)) {
		alert("Error. Please enter an end time for Tuesday.");
		form.elements["student[tue_to]"].focus();
		return false;
	}
	
	if(strName == "student[wed_from]" && isFilled(form.elements["student[wed_from]"].value) && !isFilled(form.elements["student[wed_to]"].value)) {
		alert("Error. Please enter an end time for Wednesday.");
		form.elements["student[wed_to]"].focus();
		return false;
	}
	
	if(strName == "student[thu_from]" && isFilled(form.elements["student[thu_from]"].value) && !isFilled(form.elements["student[thu_to]"].value)) {
		alert("Error. Please enter an end time for Thursday.");
		form.elements["student[thu_to]"].focus();
		return false;
	}
	
	if(strName == "student[fri_from]" && isFilled(form.elements["student[fri_from]"].value) && !isFilled(form.elements["student[fri_to]"].value)) {
		alert("Error. Please enter an end time for Friday.");
		form.elements["student[fri_to]"].focus();
		return false;
	}
	
	if(strName == "student[sat_from]" && isFilled(form.elements["student[sat_from]"].value) && !isFilled(form.elements["student[sat_to]"].value)) {
		alert("Error. Please enter an end time for Saturday.");
		form.elements["student[sat_to]"].focus();
		return false;
	}
	
	if(strName == "student[mon_to]" && isFilled(form.elements["student[mon_to]"].value) && !isFilled(form.elements["student[mon_from]"].value)) {
		alert("Error. Please enter a begin time for Monday.");
		form.elements["student[mon_from]"].focus();
		return false;
	}
	
	if(strName == "student[tue_to]" && isFilled(form.elements["student[tue_to]"].value) && !isFilled(form.elements["student[tue_from]"].value)) {
		alert("Error. Please enter a begin time for Tuesday.");
		form.elements["student[tue_from]"].focus();
		return false;
	}
	
	if(strName == "student[wed_to]" && isFilled(form.elements["student[wed_to]"].value) && !isFilled(form.elements["student[wed_from]"].value)) {
		alert("Error. Please enter a begin time for Wednesday.");
		form.elements["student[wed_from]"].focus();
		return false;
	}
	
	if(strName == "student[thu_to]" && isFilled(form.elements["student[thu_to]"].value) && !isFilled(form.elements["student[thu_from]"].value)) {
		alert("Error. Please enter a begin time for Thursday.");
		form.elements["student[thu_from]"].focus();
		return false;
	}
	
	if(strName == "student[fri_to]" && isFilled(form.elements["student[fri_to]"].value) && !isFilled(form.elements["student[fri_from]"].value)) {
		alert("Error. Please enter a begin time for Friday.");
		form.elements["student[fri_from]"].focus();
		return false;
	}
	
	if(strName == "student[sat_to]" && isFilled(form.elements["student[sat_to]"].value) && !isFilled(form.elements["student[sat_from]"].value)) {
		alert("Error. Please enter a begin time for Saturday.");
		form.elements["student[sat_from]"].focus();
		return false;
	}
	
	if(strName == "student[sign]" && !form.elements["student[sign]"].checked) {
		alert("Error. Please indicate that you understand the terms of the disclaimer by placing a check in the [Sign] checkbox.");
		form.elements["student[sign]"].focus();
		return false;
	}
	
	return true;
}

function validateSchool(form, script, divID, rowID, errID) {

	var idObj;
	var strPost;
	
	if(!isFilled(form.elements["schoolForm[name]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter your first and last name.</b></font>";
		showID(divID);
		form.elements["schoolForm[name]"].focus();
		return false;
	}
	
	if(!isFilled(form.elements["schoolForm[title]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter your title.</b></font>";
		showID(divID);
		form.elements["schoolForm[title]"].focus();
		return false;
	}
	
	if(!isFilled(form.elements["schoolForm[establishment]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter the name of your establishment.</b></font>";
		showID(divID);
		form.elements["schoolForm[establishment]"].focus();
		return false;
	}
	
	if(!isFilled(form.elements["schoolForm[address]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter the address of the establishment.</b></font>";
		showID(divID);
		form.elements["schoolForm[address]"].focus();
		return false;
	}
	
	if(!isFilled(form.elements["schoolForm[city]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter the city.</b></font>";
		showID(divID);
		form.elements["schoolForm[city]"].focus();
		return false;
	}
	
	if(form.elements["schoolForm[state]"].value == "null") {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please select your state.</b></font>";
		showID(divID);
		form.elements["schoolForm[state]"].focus();
		return false;
	}
	
	if(!isFilled(form.elements["schoolForm[zip]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter the zipcode.</b></font>";
		showID(divID);
		form.elements["schoolForm[zip]"].focus();
		return false;
	}
	
	if(!isFilled(form.elements["schoolForm[phone]"].value) || !isPhone(form.elements["schoolForm[phone]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter a phone number in the following format [555-555-5555].</b></font>";
		showID(divID);
		form.elements["schoolForm[phone]"].focus();
		return false;
	}
	
	if(isFilled(form.elements["schoolForm[secondary_phone]"].value) && !isPhone(form.elements["schoolForm[secondary_phone]"].value)) {
		showDisplay(rowID);	
		document.getElementById(errID).innerHTML = "<font color='red'><b>Error. Please enter the secondary phone number in the following format [555-555-5555].</b></font>";
		showID(divID);
		form.elements["schoolForm[secondary_phone]"].focus();
		return false;
	}
	
	strPost = getFormValues(form, false);
	
	idObj = document.getElementById(divID);
	process(script, idObj, "POST", strPost);
}

function submitLink(script, divID) {
	idObj = document.getElementById(divID);
	process(script, idObj, "GET", null);
}

function getFormValues(form, funcValidate) {

	var boolValid;
	var i;
	var str = "";
	
	boolProcess = true;
	
	for(i = 0; i < form.elements.length; i++) {
	
		if(funcValidate) {
		
			if(boolProcess) {

				boolValid = funcValidate(form, form.elements[i].value, form.elements[i].name);
			
				if(!boolValid) {
				
					boolProcess = false;
				}
				
			}
		
		}
		if(form.elements[i].type == "checkbox" && !form.elements[i].checked) {
			continue;
		}
		else if(form.elements[i].type == "select-multiple") {
			for(var k = 0; k < form.elements[i].options.length; k++) {
				if(form.elements[i].options[k].selected) {
					str += form.elements[i].name + "=" + escape(form.elements[i].options[k].value) + "&";
				}
			}
		}
		else {
			str += form.elements[i].name + "=" + escape(form.elements[i].value) + "&";
		}
	
	}
	
	return str;

}

function isFilled(elm) {
	if (elm == "" || elm == "null") {
		return false;
	}
	return true;
}

function isInteger(intVal) {

	//var rx = /(^-*\d+$)|(^-*\d+\.\d+$)/
	var rx = /(^-*\.\d+$)|(^-*\d+$)|(^-*\d+\.\d+$)/
	return rx.test(intVal)
	
}

function windowopen(url) {
	
	var width = 975;
 	var height = 768;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=" + width + ",height=" + height + ",scrollbars,left=" + left + ",top=" + top + "screenX=" + left + ",screenY=" + top;
    window.open(url, "window", windowFeatures);

}

function isDate(str) {

	var dateformat = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
	return dateformat.test(str) //returns true or false depending on userinput
	
}

function dateLessThan(sd) {
	
	var dueDate = sd.split("/");
	var today = new Date();
	
	var dm = dueDate[0] - 1;
	var dd = dueDate[1];
	var dy = dueDate[2];
	
	var due = new Date(dy, dm, dd, 0, 0, 0, 0);
	
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);
	
	return due >= today;

}

function isTime(intVal) {

	var intTime = intVal.split(".");
	var strTime = intVal.toString();
	
	if(strTime.indexOf(".") == -1) {
		return true;
	}
	
	if(intTime[1] == 5 || intTime[1] == 0) {
		return true;
	}
	
	return intTime[1] % 25 == 0;

}

function isPhone(str) {

	var valid = "0123456789-"
	var temp;
	
	if(str.length != 12) {
	
		return false;
		
	}
	
	for (var i=0; i < str.length; i++) {
		temp = "" + str.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") {
		
			return false;
		
		}
		
	}
	
	return true;
}

function isEmail(strVal) {

  var str = new String(strVal);
  var isOK = true;
  rExp = /[!\"£$%\^&*()-+=<>,\'#?\\|¬`\/\[\]]/
  
  if( rExp.test(str) )
    isOK = false;
  if( str.indexOf('.') == -1 || str.indexOf('@') == -1 )
    isOK = false;
  if( str.slice(str.lastIndexOf('.')+1,str.length).length < 2 )
    isOK = false;
  if( str.slice(0,str.indexOf('@')).length < 1 )
    isOK = false;
  if( str.slice(str.indexOf('@')+1,str.lastIndexOf('.')).length < 1 )
    isOK = false;

  return isOK;
}

function limitText(form, field, limitNum) {
	
	if (form.elements[field].value.length <= limitNum) {
		return true;
	}
	else {
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. You have reached the allowable character limit. Please limit text in this box to 1000 characters, or click [Cancel] to abort this operation.</b></font>";
		showID("result");
		return false;
	}
}

function checkDetails(form, strVal, strName) {

	if(strName == "details[first_name]" && !isFilled(strVal)) {
	
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the first name of the requester or click [Cancel] to abort this operation.</b></font>";
		form.elements["details[first_name]"].focus();
		showID("result");
		return false;
	
	}
	
	/*if(strName == "details[middle]" && !isFilled(strVal)) {
	
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the middle initial of the requester or click [Cancel] to abort this operation.</b></font>";
		form.elements["details[middle]"].focus();
		showID("result");
		return false;
	
	}*/
	
	if(strName == "details[last_name]" && !isFilled(strVal)) {
	
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the last name of the requester or click [Cancel] to abort this operation.</b></font>";
		form.elements["details[last_name]"].focus();
		showID("result");
		return false;
	
	}
	
	if(strName == "details[department]" && !isFilled(strVal)) {
	
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the department of the requester or click [Cancel] to abort this operation.</b></font>";
		form.elements["details[department]"].focus();
		showID("result");
		return false;
	
	}
	
	if(strName == "details[location]" && !isFilled(strVal)) {
	
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the location of the requester or click [Cancel] to abort this operation.</b></font>";
		form.elements["details[location]"].focus();
		showID("result");
		return false;
	
	}
	
	if(strName == "details[job_title]") {
		if(!isFilled(strVal)) {
			form.elements["details[job_title]"].value = "Unavailable";
			/*document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the job title of the requester. If job title is unknown, please include 'Unavailable' in the description. Click [Cancel] to abort this operation.</b></font>";
			form.elements["details[job_title]"].focus();
			showID("result");
			return false;*/
		}
	}
	
	if(strName == "details[email]") {
		if(!isFilled(strVal)) {
			form.elements["details[email]"].value = "Unavailable";
			/*document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the email address of the requester. If the email address is unknown, please include 'Unavailable' in the description. Click [Cancel] to abort this operation.</b></font>";
			form.elements["details[email]"].focus();
			showID("result");
			return false;*/
		}
		else if(strVal != "Unavailable") {
			if(!isEmail(strVal)) {
				document.getElementById("result").innerHTML = "<font color='red'><b>Error. Invalid email format. Please enter a valid email address for the requester. If the email address is unknown, please leave the field blank. Click [Cancel] to abort this operation.</b></font>";
				form.elements["details[email]"].focus();
				showID("result");
				return false;
			}
		}
	}
	
	if(strName == "details[contact_number]") {
		if(!isFilled(strVal)) {
			form.elements["details[contact_number]"].value = "Unavailable";
		}
		else if(strVal != "Unavailable") {
			if(!isPhone(strVal)) {
				document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the contact number of the requester. If the contact number is unknown, please leave the field blank. Click [Cancel] to abort this operation.</b></font>";
				form.elements["details[contact_number]"].focus();
				showID("result");
				return false;
			}
		}
	}
	
	if(strName == "details[employee_id]") {
		if(!isFilled(strVal)) {
			form.elements["details[employee_id]"].value = 0;
		}
		/*document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please enter the employee ID of the requester or click [Cancel] to abort this operation.</b></font>";
		form.elements["details[employee_id]"].focus();
		showID("result");
		return false;*/
	
	}
	
	return true;
	
}

function validateRequest(form, strVal, strName) {
	

	if(strName == "request[service_type_code]" && strVal == "null") {
	
		document.getElementById("result").innerHTML = "<font color='red'><b>Error. Please select service type from the dropdown menu or click [Cancel] to abort this operation.</b></font>";
		form.elements["request[service_type_code]"].focus();
		showID("result");
		return false;
	
	}
	
}

function saveRequest(form, strVal, strName) {

	if(strName == "request[status_code]" && form.elements["request[status_code]"].value == 2) {
	
		if(!isFilled(form.elements["request[due_date]"].value)) {
	
			alert("Error. Please specify a due date for this Service Request. If you are cancelling this ticket because you have previously resolved the issue, please enter the date the issue was resolved and make a note of the details in the log section. Otherwise, use the current date.");
			form.elements["request[due_date]"].focus();
			return false;
	
		}
	}
}

function process(script, idObj, method, strPost) {
	
	xmlHttp=GetXmlHttpObject();
	if(method == "GET") {
	
		xmlHttp.open("GET", script);
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==4 || xmlHttp.readyState==200) { 
 				idObj.innerHTML = xmlHttp.responseText;
 			}
 		}
 		xmlHttp.send(null);
	
	}
	else {
	
		xmlHttp.open("POST", script, true);
		
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", strPost.length);
		xmlHttp.setRequestHeader("Connection", "close");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==4 || xmlHttp.readyState==200) { 
 				idObj.innerHTML = xmlHttp.responseText;
 			}
 		}
 		
		xmlHttp.send(strPost);
	}
}

function showHide(id) {
	var obj = document.getElementById(id);

	var status = obj.className;

	if (status == 'hide') {

		obj.className = 'show';

	}
	
	else {
		
		obj.className = 'hide';
	}
}

function showID(id) {
	var obj = document.getElementById(id);

	obj.className = 'show';

}

function hideID(id) {
	var obj = document.getElementById(id);

	obj.className = 'hide';

}

function showHideDisplay(id) {

	var obj = document.getElementById(id);
	
	var status = obj.style.display;

	if (status == '') {

		obj.style.display = 'none';
	}
	
	else {
		
		obj.style.display = '';
	}
}

function showDisplay(id) {

	var obj = document.getElementById(id);
	
	var status = obj.style.display;

	obj.style.display = '';
}

function hideDisplay(id) {

	var obj = document.getElementById(id);
	
	var status = obj.style.display;

	obj.style.display = 'none';
}