function insertMessage (element, message) {
  removeMessage();
  if (document.all) {
    var html = '';
    html += '<SPAN ID="msg" CLASS="requiredtext">' + message + '<\/SPAN>';
    element.insertAdjacentHTML('afterEnd', html);
  }
  else if (document.getElementById) {
    var parent = element.parentNode;
    var span = document.createElement('SPAN');
    span.id = 'msg';
    span.className = 'msg';
    span.appendChild(document.createTextNode(message));
    parent.insertBefore(span, element.nextSibling);
  }
}

function removeMessage() {
  if (document.all) {
    var msg = document.all.msg;
    if (msg)
      msg.outerHTML = '';
  }
  else if (document.getElementById) {
    var msg = document.getElementById('msg');
    if (msg)
      msg.parentNode.removeChild(msg);
  }
}

function Validate() {
var err=0;  
var e;
var NoneSelected = "Please Select:";
removeMessage();
for (e = 0; e < document.application.elements.length; e++) {document.application.elements[e].className = ''; }
	
	if (document.application.First_Name.value.length < 1) { 
	    document.application.First_Name.className = 'requiredobject';
		alert ("Please enter your first name.")
		document.application.First_Name.focus();
		insertMessage(document.application.First_Name, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Surname.value.length < 1) { 
	    document.application.Surname.className = 'requiredobject';
		alert ("Please enter your surname.")
		document.application.Surname.focus();
		insertMessage(document.application.Surname, '&nbsp;Required!');		
		return false;
	}

	if (!document.application.Gender[0].checked && !document.application.Gender[1].checked ) {	
  	    alert ("Please select your gender.")
        document.application.Gender[0].focus();
        err = err +1;
        return false;
	}
	
	if (document.application.Date_of_Birth_Day.value.length < 1 || document.application.Date_of_Birth_Month.value.length < 1 || document.application.Date_of_birth_year.value.length < 1 ) {
	    document.application.Date_of_Birth_Day.className = 'requiredobject';
	    document.application.Date_of_Birth_Month.className = 'requiredobject'; 
	    document.application.Date_of_birth_year.className = 'requiredobject'; 
		alert ("Please enter your date of birth")
		document.application.Date_of_Birth_Day.focus();
		insertMessage(document.application.Date_of_birth_year, '&nbsp;Required!');
		err = err +1;
		return false;
	}
	
	if (document.application.Country_of_Birth.selectedIndex == 0){
	    document.application.Country_of_Birth.className = 'requiredobject';
		alert ("Please choose your country of birth.")
		insertMessage(document.application.Country_of_Birth, '&nbsp;Required!');
		document.application.Country_of_Birth.focus();		
		return false;	
	}

	if (document.application.Country_of_Citizenship.selectedIndex == 0){
	    document.application.Country_of_Citizenship.className = 'requiredobject';
		alert ("Please choose your country of citizenship.")
		insertMessage(document.application.Country_of_Citizenship, '&nbsp;Required!');
		document.application.Country_of_Citizenship.focus();		
		return false;	
	}

	if (document.application.Passport_Number.value.length < 1) { 
	    document.application.Passport_Number.className = 'requiredobject';
		alert ("Please enter your passport number.")
		document.application.Passport_Number.focus();
		insertMessage(document.application.Passport_Number, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Date_of_Issue_Day.value.length < 1 || document.application.Date_of_Issue_Month.value.length < 1 || document.application.Date_of_Issue_Year.value.length < 1 ) {
	    document.application.Date_of_Issue_Day.className = 'requiredobject';
	    document.application.Date_of_Issue_Month.className = 'requiredobject'; 
	    document.application.Date_of_Issue_Year.className = 'requiredobject'; 
		alert ("Please enter your passport date of issue")
		document.application.Date_of_Issue_Day.focus();
		insertMessage(document.application.Date_of_Issue_Year, '&nbsp;Required!');
		err = err +1;
		return false;
	}
	
	if (document.application.First_Language.value.length < 1) { 
	    document.application.First_Language.className = 'requiredobject';
		alert ("Please enter your first language.")
		document.application.First_Language.focus();
		insertMessage(document.application.First_Language, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Address.value.length < 1) { 
	    document.application.Address.className = 'requiredobject';
		alert ("Please enter your address.")
		document.application.Address.focus();
		insertMessage(document.application.Address, '&nbsp;Required!');		
		return false;
	}

	if (document.application.City_Town.value.length < 1) { 
	    document.application.City_Town.className = 'requiredobject';
		alert ("Please enter city or town.")
		document.application.City_Town.focus();
		insertMessage(document.application.City_Town, '&nbsp;Required!');		
		return false;
	}

	if (document.application.State_Province.value.length < 1) { 
	    document.application.State_Province.className = 'requiredobject';
		alert ("Please enter your state or province.")
		document.application.State_Province.focus();
		insertMessage(document.application.State_Province, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Country.selectedIndex == 0){
	    document.application.Country.className = 'requiredobject';
		alert ("Please enter your country.")
		insertMessage(document.application.Country, '&nbsp;Required!');
		document.application.Country.focus();		
		return false;	
	}

	if (document.application.ZIP.value.length < 1) { 
	    document.application.ZIP.className = 'requiredobject';
		alert ("Please enter your ZIP.")
		document.application.ZIP.focus();
		insertMessage(document.application.ZIP, '&nbsp;Required!');		
		return false;
	}
	
	if (IsEmailValid(document.application.Email.value) == false){
    	document.application.Email.className = 'requiredobject';
   		alert ("The email field is incomplete or invalid. \n\nPlease enter your email address.")
    	document.application.Email.focus();
		insertMessage(document.application.Email, '&nbsp;Required!');    	
    	return false;
	}

	if (document.application.Guardian_First_Name.value.length < 1) { 
	    document.application.Guardian_First_Name.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse first name.")
		document.application.Guardian_First_Name.focus();
		insertMessage(document.application.Guardian_First_Name, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Guardian_Surname.value.length < 1) { 
	    document.application.Guardian_Surname.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse surnname.")
		document.application.Guardian_Surname.focus();
		insertMessage(document.application.Guardian_Surname, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Guardian_Address.value.length < 1) { 
	    document.application.Guardian_Address.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse address.")
		document.application.Guardian_Address.focus();
		insertMessage(document.application.Guardian_Address, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Guardian_City_Town.value.length < 1) { 
	    document.application.Guardian_City_Town.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse city or town.")
		document.application.Guardian_City_Town.focus();
		insertMessage(document.application.Guardian_City_Town, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Guardian_State_Province.value.length < 1) { 
	    document.application.Guardian_State_Province.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse state or province.")
		document.application.Guardian_State_Province.focus();
		insertMessage(document.application.Guardian_State_Province, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Guardian_Country.selectedIndex == 0){
	    document.application.Guardian_Country.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse country.")
		insertMessage(document.application.Guardian_Country, '&nbsp;Required!');
		document.application.Guardian_Country.focus();		
		return false;	
	}

	if (document.application.Guardian_ZIP.value.length < 1) { 
	    document.application.Guardian_ZIP.className = 'requiredobject';
		alert ("Please enter your parent, guardian or spouse ZIP.")
		document.application.Guardian_ZIP.focus();
		insertMessage(document.application.Guardian_ZIP, '&nbsp;Required!');		
		return false;
	}

	if (document.application.Most_Recent_High_School.value.length < 1) { 
	    document.application.Most_Recent_High_School.className = 'requiredobject';
		alert ("Please enter your most recent high school.")
		document.application.Most_Recent_High_School.focus();
		insertMessage(document.application.Most_Recent_High_School, '&nbsp;Required!');		
		return false;
	} 

	if (document.application.High_School_City_Town.value.length < 1) { 
	    document.application.High_School_City_Town.className = 'requiredobject';
		alert ("Please enter your most recent high school city or town.")
		document.application.High_School_City_Town.focus();
		insertMessage(document.application.High_School_City_Town, '&nbsp;Required!');		
		return false;
	} 

	if (document.application.High_School_State_Country.value.length < 1) { 
	    document.application.High_School_State_Country.className = 'requiredobject';
		alert ("Please enter your most recent high school state or country.")
		document.application.High_School_State_Country.focus();
		insertMessage(document.application.High_School_State_Country, '&nbsp;Required!');		
		return false;
	} 

	if (document.application.Date_of_Graduation_Day.value.length < 1 || document.application.Date_of_Graduation_Month.value.length < 1 || document.application.Date_of_Graduation_Year.value.length < 1 ) {
	    document.application.Date_of_Graduation_Day.className = 'requiredobject';
	    document.application.Date_of_Graduation_Month.className = 'requiredobject'; 
	    document.application.Date_of_Graduation_Year.className = 'requiredobject'; 
		alert ("Please enter your date of graduation")
		document.application.Date_of_Graduation_Day.focus();
		insertMessage(document.application.Date_of_Graduation_Year, '&nbsp;Required!');
		err = err +1;
		return false;
	} 

	if (document.application.English_Language_Level.value.length < 1) { 
	    document.application.English_Language_Level.className = 'requiredobject';
		alert ("Please enter your English language level.")
		document.application.English_Language_Level.focus();
		insertMessage(document.application.English_Language_Level, '&nbsp;Required!');		
		return false;
	} 

	if (document.application.Referral.selectedIndex == 0){
	    document.application.Referral.className = 'requiredobject';
		alert ("Please choose how you heard about Twin.")
		insertMessage(document.application.Referral, '&nbsp;Required!');
		document.application.Referral.focus();		
		return false;	
	}

	else
	{	
	   	return true;
	}
	
}

function IsEmailValid(checkThisEmail){
	  
var myEMailIsValid = true;
var myAtSymbolAt = checkThisEmail.indexOf('@');
var myLastDotAt = checkThisEmail.lastIndexOf('.');
var mySpaceAt = checkThisEmail.indexOf(' ');
var myLength = checkThisEmail.length;
	
	if (myAtSymbolAt < 1 ) 
	 {myEMailIsValid = false}
	
	if (myLastDotAt < myAtSymbolAt) 
	 {myEMailIsValid = false}
	 
	if (myLength - myLastDotAt <= 2) 
	 {myEMailIsValid = false}
	
	if (mySpaceAt != -1) 
	 {myEMailIsValid = false}	
	
	if (myEMailIsValid == true)
	 {return true}
	else
	 {return false}
}

function checkNumber(thisNumber,minim,maxim,month,day,year,marker){

var myyear = year.value;
var thisVal = thisNumber.value;
var mymonth = month.value;
var myday = day.value;
var year_difference;

if (myday > 0 && mymonth > 0 && myyear > 0) {
    year_difference = myyear - 2000;
	if (year_difference%4 == 0){
	var monthMax = new Array(31,29,31,30,31,30,31,31,30,31,30,31)
	}else{
	var monthMax = new Array(31,28,31,30,31,30,31,31,30,31,30,31)
	}
	if (myday > monthMax[mymonth -1] || myday < 1) {
	var thisMessage = "Please enter a day between 1 and " + monthMax[mymonth -1]
	alert(thisMessage);		
	formin.elements[marker].value = "";
	formin.elements[marker].focus();				 
	return false
	}
}
if (thisVal != ""){
if(thisNumber.value.slice(0,1) == "0"){
thisVal = thisNumber.value.substr(1,thisNumber.value.length)
}
var thisMessage = "Please enter a number between " + minim + " and " + maxim
if (isNaN(thisVal)){
thisNumber.value = "";
thisNumber.focus();
alert(thisMessage)

}else{
if(thisVal > maxim || thisVal < minim){
thisNumber.value = "";
thisNumber.focus();
alert(thisMessage)
}
}
}
}