var rout;

function checkTelephoneNumber(cStringOriginal)
{
	var FirstPositNotBlank;
	var LastPositNotBlank;
	var positLastPoint;
	var ValidSymbols = "1234567890";
	var cSymbol;
	var cString;
	var tmp = '';

	cString = cStringOriginal;

	for (var i=0; i <= cString.length; i++) {
		cSymbol = cString.substring(i,i+1);
    if (cSymbol != "(" && cSymbol != ")" && cSymbol != "-"){ tmp = tmp + cSymbol; }
	}

	if (cString.length > 13) {
		alert("'Telephone Number' should not be > 13 digits.");
		return false;
	}
	
	if (cString.length < 7) {
		alert("'Telephone Number' should not be < 7 digits.");
		return false;
	}
	
	if (tmp.length != 10 && tmp.length != 7){
		alert("The lenght of 'Telephone Number' must be 7 or 10 digits.");
		return false;
	}
  
	if (tmp.length == 10 && cString.length == 13) {
		if(cString.substring(0,1) == "(" && cString.substring(4,5) == ')' && cString.substring(8,9) == '-') {
			return true;
        } else {
			alert("Format of 'Telephone Number' must be (123)456-7891.");
			return false;
		}
	}
	
	if (tmp.length == 7 && cString.length == 8) {
		if (cString.substring(3,4) == '-') return true;
		else {
    		alert("Format of 'Telephone Number' must be 456-7891.");
			return false;
	    }
 	}
	
	if (cString.length != 8 && cString.length != 13) {
	  alert("Please check the lenght or the format of 'Telephone Number'.");
	 	return false;
    }
}

function isDigits(s)
{
	if (s == "") return false;
	
	var Digits = "0123456789-()";
	
	for (var i = 1;i <= s.length; i++) {
		if (Digits.indexOf(s.charAt(i-1)) == -1 ) return false;	
	}

	return true;
}

function isEmpty(s)
{
	if (s == "") return true;

	for (var i= 1; i <= s.length; i++) {
		if (s.charAt(i-1) != " ") return false;	
	}

	return true;
}

function testTelephoneNumber(input)
{
	var r, re, ret;
   	var ss = input;

	if (ss.length == 0 ) {
   		alert("Please fill out the 'Telephone Number' field.");
    	return false;
	}

   	re = /[^0-9]/g;
	r = ss.replace(re, "");

	rout = r;
	if (r.length > 2) {
    	if (r.length <= 7) {
            rout = r.substr(0,3) + "-" + r.substr(3);
        } else {
            rout = "(" + r.substr(0,3) + ")" + r.substr(3,3) + "-" + r.substr(6);
        }
	}
      
   	if ((r.length ==7 ) || (r.length == 10)) ret = true;
	else {
		alert("Invalid Telephone Number.");
		ret = false;
	}
	
	return ret;
}

function submitForm(frm) {
    with (frm) {
		if (typeof(first_name) != "undefined" && isEmpty(first_name.value)){
			alert("Please fill out the 'First Name' field.");
			first_name.focus();
			return false;
		} else {
            first_name.value = first_name.value.replace(/\,/ig, "");
        }
		
		if (typeof(last_name) != "undefined" && isEmpty(last_name.value)) {
			alert("Please fill out the 'Last Name' field.");
			last_name.focus();
			return false;
		} else {
            last_name.value = last_name.value.replace(/\,/ig, "");
        }

        if (typeof(phone_number) != "undefined" && isEmpty(phone_number.value)){
			alert("Please fill out the 'First Name' field.");
			phone_number.focus();
			return false;
		} else {
			if (!isDigits(phone_number.value)) {
			  	alert ("Please correct the 'Telephone Number' field.");
				phone_number.focus();
				phone_number.value = "";
				return false;
			}
			
			var t = testTelephoneNumber(phone_number.value);
			frm.phone_number.value = rout;

			if (!checkTelephoneNumber(rout)) {
				phone_number.focus();
				return false;
	     	}
		}

        if (typeof(email_address) != "undefined" && isEmpty(email_address.value)){
			alert("Please fill out the 'Email Address' field.");
			email_address.focus();
			return false;
		} else {
            if (!email_address.value.match(/^.+\@.+\..+$/)) {
                alert("'Email Address' is not a valid. Please verify.");
                email_address.focus();
                return false;
            }
        }

        if (typeof(address_1) != "undefined" && isEmpty(address_1.value)) {
			alert("Please fill out the 'Address' field.");
			address_1.focus();
			return false;
		} else {
            last_name.value = last_name.value.replace(/\,/ig, "");
        }

		if (typeof(address_2) != "undefined" && !(isEmpty(address_2.value))) {
			address_2.value = address_2.value.replace(/\,/ig, "");
		}

        if (typeof(city) != "undefined" && isEmpty(city.value)) {
			alert("Please fill out the 'City' field.");
			city.focus();
			return false;
		} else {
			city.value = city.value.replace(/\,/ig, "");
		}

        if (typeof(state) != "undefined" && isEmpty(state.value)) {
			alert("Please fill out the 'State' field.");
			state.focus();
			return false;
		} else {
			if (!state.value.match(/^[a-zA-Z]+$/)) {
				alert("'State' can not contain any numbers or special characters. Please verify.");
				state.focus();
				return false;
			}
		}

        if (typeof(zip) != "undefined" && isEmpty(zip.value)) {
			alert("Please fill out the 'Zip Code' field.");
			zip.focus();
			return false;
		} else {
			ZipCode = zip.value;
			var tmpZip = '';
			
			for (var i = 0; i < ZipCode.length; i++) {
				cSymbol = ZipCode.substring(i, i+1);
    	    	if (cSymbol != "-") tmpZip = tmpZip + cSymbol;
			}

			if (!isDigits(ZipCode)) {
		  	    alert("'Zip Code' is not valid. Please verify.");
				zip.focus();
				return false;
			} else if (tmpZip.length == 9) {
				if (ZipCode.substring(5,6) == '-') return true;
				else {
                    zip.value = ZipCode.substr(0,5) + "-" + ZipCode.substr(5);
                }
			} else if (ZipCode.length != 5 && ZipCode.length != 10) {
				alert("'Zip Code' must be 5 or 9 digits in the format 12345, 12345-1234 or 123451234.");
				zip.focus();
				return false;
			}
		}

		// if this is sub form
		if (name.indexOf("sub") >= 0 ){
            if (typeof(willing_to_travel) != "undefined" && willing_to_travel.value == "") {
                alert("Please fill out the 'Willing to Travel' field.");
                willing_to_travel.focus();
                return false;
            }
		} else if (name.indexOf("admins") >= 0 ) {
            if (typeof(school_name) != "undefined" && isEmpty(school_name.value)) {
    			alert("Please fill out the 'School Name' field.");
    			school_name.focus();
    			return false;
    		} else {
    			school_name.value = school_name.value.replace(/\,/ig, "");
    		}

            if (typeof(district_name) != "undefined" && isEmpty(district_name.value)) {
    			alert("Please fill out the 'District' field.");
    			district_name.focus();
    			return false;
    		} else {
    			district_name.value = district_name.value.replace(/\,/ig, "");
    		}

            if (typeof(number_of_teachers) != "undefined" && isEmpty(number_of_teachers.value)) {
    			alert("Please fill out the 'Number of full-time Teachers' field.");
    			number_of_teachers.focus();
    			return false;
    		} else {
    			num_teachers = number_of_teachers.value;
      
    			if (!isDigits(num_teachers)) {
    		  	    alert("'Number of Teachers' is not valid. Please verify.");
    				number_of_teachers.focus();
    				return false;
    			}
    		}

            if (typeof(number_of_students) != "undefined" && isEmpty(number_of_students.value)) {
    			alert("Please fill out the 'Number of Students' field.");
    			number_of_students.focus();
    			return false;
    		} else {
    			num_students = number_of_students.value;
      
    			if (!isDigits(num_students)) {
    		  	    alert("'Number of Students' is not valid. Please verify.");
    				number_of_students.focus();
    				return false;
    			}
    		}
        }
	}
}

//Validating the number of days in the month Selected
function ChkMonthDays(MonIndex, SelDay, SelYear)
{
	if (MonIndex > 12) return false;
	if (SelYear < 1900) return false;

	if (MonIndex == 1 || MonIndex == 3 || MonIndex == 5 || MonIndex == 7 || MonIndex == 8 || MonIndex == 10 || MonIndex == 12) {
		if (parseInt(SelDay) > 31) return false;
	} else if (MonIndex == 4 || MonIndex == 6 || MonIndex == 9 || MonIndex == 11){
		if (parseInt(SelDay) == 31 || parseInt(SelDay) > 31) return false;
	} else if ( MonIndex == 2 ) {
		if ((parseInt(SelYear) % 4) != 0) {
			if (parseInt(SelDay) > 28) return false;
		} else if ((parseInt(SelYear) % 400) == 0) {
			if (parseInt(SelDay) > 29) return false;
		} else if ((parseInt(SelYear) % 100) == 0) {
			if (parseInt(SelDay) > 28) return false;
		} else {
			if (parseInt(SelDay) > 29) return false;
		}
	}
}

// Used by the sub form to check/uncheck all qualifications
function stateChecker(frmName)
{
	with (frmName) {
		var i;
		i = QualificationIDs.length;

		if ( SelectAllSubjects.checked ) {
			for (i = 0; i < QualificationIDs.length; i++) {
				QualificationIDs[i].checked = true
			}
		} else {
			for (i = 0; i < QualificationIDs.length; i++){
				QualificationIDs[i].checked = false
			}
		}
	}
}

function CheckDateLaterThanCurrentDate(MonIndex, SelDay, SelYear)
{
	var DateNow = new Date();
	var CurrentDate = DateNow.getDate();
	var CurrentMonth = DateNow.getMonth() + 1;
	var CurrentYear = DateNow.getYear();

	DateNow = CurrentMonth + "/" + CurrentDate + "/" + CurrentYear;
	var SelDate = MonIndex + "/" + SelDay + "/" + SelYear;
	
	if (Date.parse(DateNow) < Date.parse(SelDate)) {
		return true;
    } else {
		return false;
    }
}