function validateEmail(email) {

  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");

  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

  return (!r1.test(email) && r2.test(email));

}





function trim(str) {

	return str.replace(/^\s*|\s*$/g,"");

}



function searchValidate(form) {

	keyword = trim(form.keyword.value);

	

	if (keyword.length<3) {

		alert("The keyword must be at least 3 characters long !");

		form.keyword.focus();

		return false;

	}

	

	if (keyword.length>100) {

		alert("Keyword too long. A keyword cannot be longer than 100 characters !");

		form.keyword.focus();

		return false;

	}

	

	return true;

}



function degreeSearchValidate(form) {

	kw = trim(form.degree_keyword.value);

	if (kw.length<3 && kw.length>=0) {

		alert("The keyword must be at least 3 characters long !");

		form.degree_keyword.focus();

		return false;

	}

	

	if (kw.length>100) {

		alert("Keyword too long. A keyword cannot be longer than 100 characters !");

		form.degree_keyword.focus();

		return false;

	}

	

	return true;

}



function validDegreeSearch(form) {

	if (form.domain.value==0) {

		alert("Please select a valid domain !");

		form.domain.focus();

		return false;

	}

	

	if (form.type.value==0) {

		alert("Please select a valid type !");

		form.type.focus();

		return false;

	}

	

	return true;

}



function feb(year){

    // February has 29 days in any year evenly divisible by four,

    // EXCEPT for centurial years which are not also divisible by 400.

    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );

}

function no(n)

{

	for (var i = 1; i <= n; i++)

    {

		this[i]=31;

		if (i==4 || i==6 || i==9 || i==11)

        {

            this[i] = 30;

        }

		if (i==2)

        {

            this[i] = 29;

        }

   }

   return this

}

function valid_date(day,month,year)

{

	var array=no(12);

	if ((month==2 && day>feb(year)) || day>array[month])

    {

		return false

	}

    return true

}



function validateReg(form) {

	if (trim(form.firstname.value)=="")

	{

		alert("Please input a valid first name !");

		form.firstname.focus();

		return false;

	}

	if (trim(form.lastname.value)=="")

	{

		alert("Please input a valid last name !");

		form.lastname.focus();

		return false;

	}

	if (form.username)

		if (trim(form.username.value)=="" || form.username.value.length<3)

		{

			alert("Please input a valid bridge ID at list 3 characters long !");

			form.username.focus();

			return false;

		}

	if (!validateEmail(form.email.value))

	{

		alert("Please input a valid e-Mail address !");

		form.email.focus();

		return false;

	}

	if (form.Password)

	{

		if (form.password.value=="" || form.password.value.length<3)

		{

			alert("Please input a valid password at list 3 characters long !");

			form.password.focus();

			return false;

		}

		if (form.password.value != form.confirmpassword.value)

		{

			alert("Please confirm your password !");	

			form.confirmpassword.focus();

			return false;

		}

	}

	

	if (!valid_date(form.day.value,form.month.value,form.year.value))

	{

		alert("Please select a valid birthday date !");	

		form.day.focus();

		return false;

	}

	if (form.curent_status.value == "Other" && trim(form.curent_status_other.value) == "")
	{
		alert("Please specify valid details !");

		form.curent_status_other.focus();
		
		return false;
	}

	if (trim(form.experience.value) == "")
	{
		alert("Please specify valid details !");

		form.experience.focus();
		
		return false;
	}
	
	if (trim(form.industry.value) == "")
	{
		alert("Please specify valid details !");

		form.industry.focus();
		
		return false;
	}

	if (trim(form.discipline.value) == "")
	{
		alert("Please specify valid details !");

		form.discipline.focus();
		
		return false;
	}

	if (trim(form.interested_schools.value) == "")
	{
		alert("Please specify valid details !");

		form.interested_schools.focus();
		
		return false;
	}

	if ((trim(form.GMAT_score.value) == "" || isNaN(trim(form.GMAT_score.value))) && form.GMAT.value == "Yes")
	{
		alert("Please specify valid details !");

		form.GMAT_score.focus();
		
		return false;
	}
	
	if ((trim(form.TOEFL_score.value) == "" || isNaN(trim(form.TOEFL_score.value))) && form.TOEFL.value == "Yes")
	{
		alert("Please specify valid details !");

		form.TOEFL_score.focus();
		
		return false;
	}
	
	if (trim(form.state_tests_id.value) == "" && form.state_tests.value == "Yes")
	{
		alert("Please specify valid details !");

		form.state_tests_id.focus();
		
		return false;
	}
	
	if ((trim(form.state_tests_score.value) == "" || isNaN(trim(form.state_tests_score.value))) && form.state_tests.value == "Yes")
	{
		alert("Please specify valid details !");

		form.state_tests_score.focus();
		
		return false;
	}

	if (trim(form.applied_to.value) == "")
	{
		alert("Please specify valid details !");

		form.applied_to.focus();
		
		return false;
	}

	if (trim(form.applied_for.value) == "")
	{
		alert("Please specify valid details !");

		form.applied_for.focus();
		
		return false;
	}

	if (trim(form.start_studies.value) == "")
	{
		alert("Please specify valid details !");

		form.start_studies.focus();
		
		return false;
	}

	if (
		form.my_own.checked==false &&
		form.family_help.checked==false &&
		form.scolarship.checked==false &&
		form.student_loan.checked==false &&
		form.other_fund.checked==false
		
		)
	{
		alert("Please specify valid funding details !");

		form.my_own.focus();
		
		return false
	}

	if (form.other_fund.checked == true && trim(form.other_fund_details.value) == "")
	{
		alert("Please specify valid details !");

		form.other_fund_details.focus();
		
		return false;
	}

	return true;

}



function validatePassword(form) {

	if (form.password.value=="" || form.password.value.length<3)

	{

		alert("Please input a valid password at list 3 characters long !");

		form.password.focus();

		return false;

	}

	if (form.password.value != form.confirmpassword.value)

	{

		alert("Please confirm your password !");	

		form.confirmpassword.focus();

		return false;

	}

	return true;

}