var NameRegExp = /^[^. -][a-z. -]+$/i;
var EmailRegExp = /^\w(\.?\w)*@\w(\.?[-\w])*\.([a-z]{2,4}(\.[a-z]{3})?|[a-z]{2}(\.[a-z]{2})?)$/i;
var WebRegExp = /^http:\/\/\w(\.?\w)*\w(\.?[-\w])*\.([a-z]{2,4}(\.[a-z]{3})?|[a-z]{2}(\.[a-z]{2})?)$/i;
//var EmailRegExp = /(\.?\w)*@\w(\.?[-\w])*\.([a-z]{2,4}(\.[a-z]{2})?|[a-z]{2}(\.[a-z]{2})?)$/i;
//var WebRegExp = /(\.?\w)*\w(\.?[-\w])*\.([a-z]{2,4}(\.[a-z]{2})?|[a-z]{2}(\.[a-z]{2})?)$/i;
var PhoneRegExp = /^[^, a-zA-Z][\d, -]+$/;
var SemesterRegExp = /^[^0-9][a-zA-Z0-9. -]+$/i;
var OnlyNumberRegExp = /^\d+$/;
var SubjectNameRegExp = /^[^ &][a-z& ]+$/i;
var OnlyNumberRegExp = /^\d+$/;
var OnlyNumberRegExp = /^\d+$/;


//this function check validity of Get_Password_Form validity
function GetPasswordFormValid(form)
{
	var FormIsValid = true;
	if(!EmailRegExp.test(form.Email.value))
	{
		FormIsValid = false;
		alert("Please Enter a Valid e-mail Address.");
		form.Email.focus();
	}
	return FormIsValid;
}


//this function check validity of the Univ_info form of the admin panel
function UnivInfoFormValid(FormName)
{
	var FormIsValid = true;
	if(!NameRegExp.test(FormName.Contact_Person.value))
	{
		FormIsValid = false;
		alert("Please Enter a Valid Contact Person Name");
		FormName.Contact_Person.focus();
	}
	else if(!EmailRegExp.test(FormName.Email.value))
	{
		FormIsValid = false;
		alert("Please Enter a Valid e-mail Address.");
		FormName.Email.focus();
	}
	else if(!WebRegExp.test(FormName.Web.value))
	{
		FormIsValid = false;
		alert("Please Enter Web Address");
		FormName.Web.focus();
	}
	else if(!PhoneRegExp.test(FormName.Phone.value))
	{
		FormIsValid = false;
		alert("Please Enter Valid Phone Number");
		FormName.Phone.focus();
	}
	else if(FormName.Address.value == "")
	{
		FormIsValid = false;
		alert("Please Enter Address");
		FormName.Address.focus();
	}
	return FormIsValid;
}


//this function check validity of the Univ_Semester form of the admin panel
function UnivSemesterFormValid(Form)
{
	FormIsValid = true;
	if(!SemesterRegExp.test(Form.Semester_Name.value))
	{
		FormIsValid = false;
		alert("Please Enter a valid Semester Name");
		Form.Semester_Name.focus();
	}
	return FormIsValid;
}


//this function check validity of the "Select_Semester for Edit" form of the admin panel
function UnivSemesterSelectFormValid(Form)
{
	FormIsValid = true;
	if(Form.Semester_ID.value <= "0")
	{
		FormIsValid = false;
		alert("Please select a semester");
		Form.Semester_ID.focus();
	}
	return FormIsValid;
}


//this function check validity of date
function ValidDate(dd,mm,yyyy)
{
	var FormIsValid = true;

	if(dd.value == "" || dd.value<=0 || dd.value >31 || !OnlyNumberRegExp.test(dd.value))
	{
		FormIsValid = false;
		alert("Date can only be 1 to 31");
		dd.focus();
	}
	else if(mm.value =="" || mm.value <=0 || mm.value >12 || !OnlyNumberRegExp.test(mm.value))
	{
		FormIsValid = false;
		alert("Month can only be 1 to 12");
		mm.focus();
	}
	else if(yyyy.value=="" || yyyy.value<=0 || !OnlyNumberRegExp.test(yyyy.value) || (yyyy.value.length!=4))
	{
		FormIsValid = false;
		alert("Year can only be a four-digit number");
		yyyy.focus();
	}
	else if(dd.value !="" && mm.value !="" && yyyy.value !="")
	{
		var Month = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
		var Month_No = mm.value - 1;

		if((mm.value==4 || mm.value==6 || mm.value==9 || mm.value==11) && (dd.value>30))
		{
			FormIsValid = false;
			alert(Month[Month_No] + " has only 30 days");
			dd.focus();
		}
		else if((mm.value==2) && (yyyy.value%400==0) && (dd.value>29))
		{
			FormIsValid = false;
			alert(Month[Month_No] +" "+yyyy.value + " has only 29 days.\nPlease enter valid date");
			dd.focus();
		}
		else if(mm.value==2 && (yyyy.value%4==0) && (dd.value>29))
		{
			FormIsValid = false;
			alert(Month[Month_No] +" "+yyyy.value + " has only 29 days.\nPlease enter valid date");
			dd.focus();
		}
		else if(mm.value==2 && (yyyy.value%4!=0) && (dd.value>28))
		{
			FormIsValid = false;
			alert(Month[Month_No] +" "+yyyy.value + " has only 28 days.\nPlease enter valid date");
			dd.focus();
		}
	}
	return FormIsValid;
}


//this function compare two date
function CompareDate(First_Date_dd,First_Date_mm,First_Date_yyyy,Second_Date_dd,Second_Date_mm,Second_Date_yyyy)
{
	var FormIsValid = true;
	var First_Date = new Date(First_Date_yyyy,First_Date_mm-1,First_Date_dd);
	var Second_Date = new Date(Second_Date_yyyy,Second_Date_mm-1,Second_Date_dd);
	
	if(Second_Date<=First_Date)
	{
		FormIsValid = false;
	}
	return FormIsValid;
}

//this function check validity of the "Select_Semester for Edit" form of the admin panel
function UnivSubjectEntryFormValid(Form)
{
	var FormIsValid = true;
	if(!SemesterRegExp.test(Form.Subject_Name.value))
	{
		FormIsValid = false;
		alert ("Please Enter Valid Subject Name");
		Form.Subject_Name.focus();
	}
	else if(Form.Program.value <="0")
	{
		FormIsValid = false;
		alert("Please Select a Program");
		Form.Program.focus();
	}
	else if(Form.Semester_ID.value <= "0")
	{
		FormIsValid = false;
		alert("Please Select a Semester");
		Form.Semester_ID.focus();
	}
	else if(ValidDate(Form.Subject_Apply_Deadline_dd,Form.Subject_Apply_Deadline_mm,Form.Subject_Apply_Deadline_yyyy)==false)
	{
		FormIsValid = false;
	}
	else if (CompareDate(Form.day.value,Form.month.value,Form.year.value,Form.Subject_Apply_Deadline_dd.value,Form.Subject_Apply_Deadline_mm.value,Form.Subject_Apply_Deadline_yyyy.value)==false)
	{
		FormIsValid = false;
		alert("Please enter deadline carefully");
		Form.Subject_Apply_Deadline_dd.focus();
	}
	else if(ValidDate(Form.Subject_Admission_Date_dd,Form.Subject_Admission_Date_mm,Form.Subject_Admission_Date_yyyy)==false)
	{
		FormIsValid = false;
	}
	else if(CompareDate(Form.Subject_Apply_Deadline_dd.value,Form.Subject_Apply_Deadline_mm.value,Form.Subject_Apply_Deadline_yyyy.value,Form.Subject_Admission_Date_dd.value,Form.Subject_Admission_Date_mm.value,Form.Subject_Admission_Date_yyyy.value)==false)
	{
		FormIsValid = false;
		alert("Admission Test Date cannot be less than or equql to Application Deadline\nPlease enter Admission Test Date carefully");
		Form.Subject_Admission_Date_dd.focus();
	}
	else if(Form.Subject_Admission_Time_hh.value =="" || Form.Subject_Admission_Time_hh.value<0 || Form.Subject_Admission_Time_hh.value>23 || !OnlyNumberRegExp.test(Form.Subject_Admission_Time_hh.value))
	{
		FormIsValid = false;
		alert("Please Enter Valid Admission Test Time (hour)");
		Form.Subject_Admission_Time_hh.focus();
	}
	else if(Form.Subject_Admission_Time_mm.value =="" || Form.Subject_Admission_Time_mm.value<0 || Form.Subject_Admission_Time_mm.value>59 || !OnlyNumberRegExp.test(Form.Subject_Admission_Time_mm.value))
	{
		FormIsValid = false;
		alert("Please Enter Admission Test Time (Miniute)");
		Form.Subject_Admission_Time_mm.focus();
	}
	else if((Form.Subject_Application_Fees.value<=0) || (Form.Subject_Application_Fees.value=="") || !OnlyNumberRegExp.test(Form.Subject_Application_Fees.value))
	{
		FormIsValid = false;
		alert("Please enter valid Application Fees");
		Form.Subject_Application_Fees.focus();
	}
	return FormIsValid;
}


//this function check validity of the Change password form of the admin panel
function ChangePasswordFormValid(Form)
{
	var FormIsValid = true;
	if(Form.Password.value == "" || Form.Password.value.length<6)
	{
		FormIsValid = false;
		alert("Please Enter Valid Password\nPassword cannot be null or less then 6 character");
		Form.Password.focus();
}
	else if(Form.New_Password.value=="" || Form.New_Password.value.length<6)
	{
		FormIsValid = false;
		alert("Please Enter New Password\nPassword cannot be null or less then 6 character");
		Form.New_Password.focus();
	}
	else if(Form.Reenter_New_Password.value=="" || Form.Reenter_New_Password.value.length<6)
	{
		FormIsValid = false;
		alert("Please Re-Enter Password\nPassword cannot be null or less then 6 character");
		Form.Reenter_New_Password.focus();
	}
	else if(Form.New_Password.value != Form.Reenter_New_Password.value)
	{
		FormIsValid = false;
		alert("New Password is not matching. Please Enter the Same New Password");
		Form.Reenter_New_Password.focus();
	}
return FormIsValid;
}


//this function check validity of the Subject Edit Form form of the admin panel
function SubjectEditSelectFormValid(form)
{
	FormIsValid = true;
	if(form.Edit.value == "EDIT"  && form.Semester_ID.value == 0)
	{
		alert("Please select Semester");
		form.Semester_ID.focus();
		FormIsValid = false;
	}
	else if(form.Edit.value == "EDIT"  && form.Program.value == 0)
	{
		alert("Please select Program");
		form.Program.focus();
		FormIsValid = false;
	}
	else if(form.Edit.value == "EDIT"  && form.Subject_ID.value == 0)
	{
		alert("Please select Subject");
		form.Subject_ID.focus();
		FormIsValid = false;
	}
return FormIsValid;
}


//this function manually submit the Subject Edit Form of the admin panel
function ManuallySubmit(form)
{
	form.submit();
}


//this function check validity of the Subject Edit Form form of the admin panel
function SelectReportFormValid(form)
{
	var FormIsValid = true;
	if(form.Ssc_Cgpa.value <= 0 || form.Ssc_Cgpa.value >5)
	{
		alert("SSC CGPA must be greater than 0 and less than 5");
		form.Ssc_Cgpa.focus();
		FormIsValid = false;
	}
	else if(form.Hsc_Cgpa.value <= 0 || form.Hsc_Cgpa.value >5)
	{
		alert("HSC CGPA must be greater than 0 and less than 5");
		form.Hsc_Cgpa.focus();
		FormIsValid = false;
}
return FormIsValid;
}


//this function CheckAll/UncheckAll of the Email these form
function CheckAll(form,MainCheckBox,Loop_Start,Increment_Number,Email_Check_Box_Length)
{
	var FormIsValid = true;
	var i = parseInt(Loop_Start);
	var a = parseInt(Loop_Start);
	var b = parseInt(Email_Check_Box_Length);
	var c = parseInt(Increment_Number)
	var Loop_Limit = a + (b * c);

	if (MainCheckBox.checked == true)
	{
		for (i; i < Loop_Limit; i=i+c)
		{
			form.elements[i].checked = true;
		}
	}
	else if(MainCheckBox.checked == false)
	{
		for (i; i < Loop_Limit; i=i+c)
		{
			form.elements[i].checked = false;
		}
	}
	return FormIsValid;
}


//this function check validity of the Email These Form Validity
function EmailTheseFormValid(form,Loop_Start,Increment_Number,Email_Check_Box_Length,Alert_String)
{
	var FormIsValid = false;
	var i = parseInt(Loop_Start);
	var a = parseInt(Loop_Start);
	var b = parseInt(Email_Check_Box_Length);
	var c = parseInt(Increment_Number)
	var Loop_Limit = a + (b * c);

	for(i; i < Loop_Limit; i=i+c)
	{
		if(form.elements[i].checked == true)
		{
			FormIsValid = true;
			break;
		}
	}
	if(FormIsValid == false)
	{
		alert ("Please select at least one " + Alert_String+ " checkbox");
	}
	return FormIsValid;
}


//this function check email form validity of admin panel
function EmailFormValid(form)
{
	var FormIsValid = true;

	if(!EmailRegExp.test(form.Email_From.value))
	{
		FormIsValid = false;
		alert("Please Enter a Valid e-mail Address.");
		form.Email_From.focus();
	}
	else if(form.Email_Subject.value=="")
	{
		FormIsValid = false;
		alert ("Please Write Email Subject");
		form.Email_Subject.focus();
	}
	else if(form.Email_Body.value=="")
	{
		FormIsValid = false;
		alert ("Please Write Email Body");
		form.Email_Body.focus();
	}
	return FormIsValid;
}
