/*
	some CODEGEN by http://secretgeek.net/W2SCG.asp - "The World's 2nd Simplest Code Generator" cuz reflection sux.
*/
var errPageExpired = "Page Expired... Click OK to return to the main page.";

var panels = new Array(3);
panels[0] = "pnlGetLoginInformation";
panels[1] = "pnlGetPersonalDetails";
panels[2] = "pnlGetOtherDetails";

function ShowError(msg)
{
	alert(msg);
	window.location = "register.aspx";
}

function TrimString(sInString)
{
	sInString = sInString.replace( /^\s+/g, ""); //strip leading whitespace
	return sInString.replace( /\s+$/g, ""); //strip trailing whitespace
}

function HidePanel(strPanel)
{
	var panel = document.getElementById(strPanel);
	if (panel != null)
	{
		panel.style.visibility = "hidden";
		panel.style.display = "none";
	}
}

function ShowPanel(strPanelToShow, strPanelToHide, stepNumber)
{
	var panelToShow = document.getElementById(strPanelToShow);
	var panelToHide = document.getElementById(strPanelToHide);
	panelToShow.style.visibility = "visible";
	panelToShow.style.display = "inline"; //*
	HidePanel(strPanelToHide);
	SetStepNumber(stepNumber);
	ClearStatus();
}

function SetStatus(status)
{
	document.getElementById("lblStatus").innerHTML = status;
}

function ClearStatus()
{
	SetStatus("");
}

function SetStepNumber(stepNumber)
{
	document.getElementById("lblStepNumber").innerHTML = stepNumber;
}

function GetLoginInformation()
{
	var username = document.frmMain.txtUsername.value;
	var password = document.frmMain.txtPassword.value;
	var confirmPassword = document.frmMain.txtConfirmPassword.value;
	Register.GetLoginInformation(username, password, confirmPassword, ServerSideGetLoginInformation_Callback);
}

function ServerSideGetLoginInformation_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetPersonalDetails", "pnlGetLoginInformation", 2);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetPersonalDetails()
{
	ClearStatus();
	document.getElementById("pnlGetPersonalDetails").style.visibility = "visible";
	var title = document.frmMain.drpTitle.value;
	var firstName = document.frmMain.txtFirstName.value;
	var lastName = document.frmMain.txtLastName.value;
	var otherNames = document.frmMain.txtOtherNames.value;
	var formerTitle = document.frmMain.drpFormerTitle.value;
	var formerFirstName = document.frmMain.txtFormerFirstName.value;
	var formerLastName = document.frmMain.txtFormerLastName.value;
	var formerOtherNames = document.frmMain.txtFormerOtherNames.value;
	Register.GetPersonalDetails(title, firstName, lastName, otherNames, formerTitle, formerFirstName, formerLastName, formerOtherNames, ServerSideGetPersonalDetails_Callback);
}

function ServerSideGetPersonalDetails_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetOtherDetails", "pnlGetPersonalDetails", 3);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetOtherDetails()
{
	ClearStatus();
	document.getElementById("lblStatus").innerHTML = "";
	var maritalStatus = document.frmMain.drpMaritalStatus.value;
	var gender = document.frmMain.drpGender.value;
	var birthDate = document.frmMain.clndrTxtBirthDate_DateBox.value;
	var nationalID = document.frmMain.txtNationalID.value;
	Register.GetOtherDetails(maritalStatus, gender, birthDate, nationalID, ServerSideGetOtherDetails_Callback);
}

function ServerSideGetOtherDetails_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetContactDetails", "pnlGetOtherDetails", 4);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetContactDetails()
{
	ClearStatus();
	var phoneHome = document.frmMain.txtPhoneHome.value;
	var phoneWork = document.frmMain.txtPhoneWork.value;
	var phoneMobile = document.frmMain.txtPhoneMobile.value;
	var fax = document.frmMain.txtFax.value;
	var email = document.frmMain.txtEmail.value;
	var address1 = document.frmMain.txtAddress1.value;
	var address2 = document.frmMain.txtAddress2.value;
	var address3 = document.frmMain.txtAddress3.value;
	Register.GetContactDetails(phoneHome, phoneWork, phoneMobile, fax, email, address1, address2, address3, ServerSideGetContactDetails_Callback);
}

function ServerSideGetContactDetails_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetEmergencyContacts", "pnlGetContactDetails", 5);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetEmergencyContacts()
{
	ClearStatus();

	var ec1FirstName = document.frmMain.txtFirstNameec1.value;
	var ec1LastName = document.frmMain.txtLastNameec1.value;
	var ec1PhoneHome = document.frmMain.txtPhoneHomeec1.value;
	var ec1PhoneWork = document.frmMain.txtPhoneWorkec1.value;
	var ec1PhoneMobile = document.frmMain.txtPhoneMobileec1.value;
	var ec1Fax = document.frmMain.txtFaxec1.value;
	var ec1Email = document.frmMain.txtEmailec1.value;

	var ec2FirstName = document.frmMain.txtFirstNameec2.value;
	var ec2LastName = document.frmMain.txtLastNameec2.value;
	var ec2PhoneHome = document.frmMain.txtPhoneHomeec2.value;
	var ec2PhoneWork = document.frmMain.txtPhoneWorkec2.value;
	var ec2PhoneMobile = document.frmMain.txtPhoneMobileec2.value;
	var ec2Fax = document.frmMain.txtFaxec2.value;
	var ec2Email = document.frmMain.txtEmailec2.value;

	Register.GetEmergencyContacts(ec1FirstName, ec1LastName, ec1PhoneHome, ec1PhoneWork, ec1PhoneMobile, ec1Fax, ec1Email,
									ec2FirstName, ec2LastName, ec2PhoneHome, ec2PhoneWork, ec2PhoneMobile, ec2Fax, ec2Email, 
									ServerSideGetEmergencyContacts_Callback);
}

function ServerSideGetEmergencyContacts_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetEmploymentHistory", "pnlGetEmergencyContacts", 6);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetEmploymentHistory()
{
	ClearStatus();

	var ceName = document.frmMain.txtNamece.value;
	var ceAddress1 = document.frmMain.txtAddress1ce.value;
	var ceAddress2 = document.frmMain.txtAddress2ce.value;
	var ceAddress3 = document.frmMain.txtAddress3ce.value;
	var ceSupervisorName = document.frmMain.txtSupervisorNamece.value;
	var cePositionHeld = document.frmMain.txtPositionHeldce.value;
	var cePhone = document.frmMain.txtPhonece.value;
	var ceFax = document.frmMain.txtFaxce.value;
	var ceEmail = document.frmMain.txtEmailce.value;


	var peName = document.frmMain.txtNamepe.value;
	var peAddress1 = document.frmMain.txtAddress1pe.value;
	var peAddress2 = document.frmMain.txtAddress2pe.value;
	var peAddress3 = document.frmMain.txtAddress3pe.value;
	var peSupervisorName = document.frmMain.txtSupervisorNamepe.value;
	var pePositionHeld = document.frmMain.txtPositionHeldpe.value;
	var pePhone = document.frmMain.txtPhonepe.value;
	var peFax = document.frmMain.txtFaxpe.value;
	var peEmail = document.frmMain.txtEmailpe.value;

	Register.GetEmploymentHistory(ceName, ceAddress1, ceAddress2, ceAddress3, ceSupervisorName, cePositionHeld, cePhone, ceFax, ceEmail,
									peName, peAddress1, peAddress2, peAddress3, peSupervisorName, pePositionHeld, pePhone, peFax, peEmail, ServerSideGetEmploymentHistory_Callback);
}

function ServerSideGetEmploymentHistory_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetReferences", "pnlGetEmploymentHistory", 7);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetReferences()
{
	ClearStatus();

	var r1Name = document.frmMain.txtNamer1.value;
	var r1Position = document.frmMain.txtPositionr1.value;
	var r1Organization = document.frmMain.txtOrganizationr1.value;
	var r1Address1 = document.frmMain.txtAddress1r1.value;
	var r1Address2 = document.frmMain.txtAddress2r1.value;
	var r1Address3 = document.frmMain.txtAddress3r1.value;
	var r1Phone = document.frmMain.txtPhoner1.value;
	var r1Fax = document.frmMain.txtFaxr1.value;
	var r1Email = document.frmMain.txtEmailr1.value;

	var r2Name = document.frmMain.txtNamer2.value;
	var r2Position = document.frmMain.txtPositionr2.value;
	var r2Organization = document.frmMain.txtOrganizationr2.value;
	var r2Address1 = document.frmMain.txtAddress1r2.value;
	var r2Address2 = document.frmMain.txtAddress2r2.value;
	var r2Address3 = document.frmMain.txtAddress3r2.value;
	var r2Phone = document.frmMain.txtPhoner2.value;
	var r2Fax = document.frmMain.txtFaxr2.value;
	var r2Email = document.frmMain.txtEmailr2.value;

	var r3Name = document.frmMain.txtNamer3.value;
	var r3Position = document.frmMain.txtPositionr3.value;
	var r3Organization = document.frmMain.txtOrganizationr3.value;
	var r3Address1 = document.frmMain.txtAddress1r3.value;
	var r3Address2 = document.frmMain.txtAddress2r3.value;
	var r3Address3 = document.frmMain.txtAddress3r3.value;
	var r3Phone = document.frmMain.txtPhoner3.value;
	var r3Fax = document.frmMain.txtFaxr3.value;
	var r3Email = document.frmMain.txtEmailr3.value;

	Register.GetReferences(r1Name, r1Position, r1Organization, r1Address1, r1Address2, r1Address3, r1Phone, r1Fax, r1Email,
							r2Name, r2Position, r2Organization, r2Address1, r2Address2, r2Address3, r2Phone, r2Fax, r2Email,
							r3Name, r3Position, r3Organization, r3Address1, r3Address2, r3Address3, r3Phone, r3Fax, r3Email, ServerSideGetReferences_Callback);
}

function ServerSideGetReferences_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetEducationalInstitutesAttended", "pnlGetReferences", 8);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetEducationalInstitutesAttended()
{
	ClearStatus();

	var ei1Name = document.frmMain.txtNameei1.value;
	var ei1Address1 = document.frmMain.txtAddress1ei1.value;
	var ei1Address2 = document.frmMain.txtAddress2ei1.value;
	var ei1Address3 = document.frmMain.txtAddress3ei1.value;
	var ei1AttendedFrom = document.frmMain.clndrTxtAttendedFromei1_DateBox.value;
	var ei1AttendedTo = document.frmMain.clndrTxtAttendedToei1_DateBox.value;
	var ei1ProgrammeType = document.frmMain.txtProgrammeTypeei1.value;
	var ei1Subject = document.frmMain.txtSubjectei1.value;
	var ei1ClassOfAward = document.frmMain.txtClassOfAwardei1.value;

	var ei2Name = document.frmMain.txtNameei2.value;
	var ei2Address1 = document.frmMain.txtAddress1ei2.value;
	var ei2Address2 = document.frmMain.txtAddress2ei2.value;
	var ei2Address3 = document.frmMain.txtAddress3ei2.value;
	var ei2AttendedFrom = document.frmMain.clndrTxtAttendedFromei2_DateBox.value;
	var ei2AttendedTo = document.frmMain.clndrTxtAttendedToei2_DateBox.value;
	var ei2ProgrammeType = document.frmMain.txtProgrammeTypeei2.value;
	var ei2Subject = document.frmMain.txtSubjectei2.value;
	var ei2ClassOfAward = document.frmMain.txtClassOfAwardei2.value;

	var ei3Name = document.frmMain.txtNameei3.value;
	var ei3Address1 = document.frmMain.txtAddress1ei3.value;
	var ei3Address2 = document.frmMain.txtAddress2ei3.value;
	var ei3Address3 = document.frmMain.txtAddress3ei3.value;
	var ei3AttendedFrom = document.frmMain.clndrTxtAttendedFromei3_DateBox.value;
	var ei3AttendedTo = document.frmMain.clndrTxtAttendedToei3_DateBox.value;
	var ei3ProgrammeType = document.frmMain.txtProgrammeTypeei3.value;
	var ei3Subject = document.frmMain.txtSubjectei3.value;
	var ei3ClassOfAward = document.frmMain.txtClassOfAwardei3.value;

	Register.GetEducationalInstitutesAttended(ei1Name, ei1Address1, ei1Address2, ei1Address3, ei1AttendedFrom, ei1AttendedTo, ei1ProgrammeType, ei1Subject, ei1ClassOfAward, 
												ei2Name, ei2Address1, ei2Address2, ei2Address3, ei2AttendedFrom, ei2AttendedTo, ei2ProgrammeType, ei2Subject, ei2ClassOfAward, 
												ei3Name, ei3Address1, ei3Address2, ei3Address3, ei3AttendedFrom, ei3AttendedTo, ei3ProgrammeType, ei3Subject, ei3ClassOfAward, ServerSideGetEducationalInstitutesAttended_Callback);
}

function ServerSideGetEducationalInstitutesAttended_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetSecondarySchoolPasses", "pnlGetEducationalInstitutesAttended", 9);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}		


/*
	We get the fields from the page, row by row. Each row's fields are separated by a DELIMITER character. 
	This is done to reduce the number of parameters sent, since we can send neither arrays nor objects.
*/
function GetSecondarySchoolPasses()
{
	ClearStatus();
	var DELIMITER = "_";
	
	var OLevelPasses = new Array(16);
	for (var i = 1; i <= OLevelPasses.length - 1; i++)
	{
		var ExaminingBody = document.getElementById("txtExaminingBodyol"+i).value;
		var Level = document.getElementById("txtLevelol"+i).value;
		var Subject = document.getElementById("txtSubjectol"+i).value;
		var Grade = document.getElementById("txtGradeol"+i).value;
		var DateAwarded = document.getElementById("txtDateAwardedol"+i).value;
		OLevelPasses[i] = ExaminingBody + DELIMITER + Level + DELIMITER + Subject + DELIMITER + Grade + DELIMITER + DateAwarded;
	}
	
	var ALevelPasses = new Array(6);
	for (var i = 1; i <= ALevelPasses.length - 1; i++)
	{
		var ExaminingBody = document.getElementById("txtExaminingBodyal"+i).value;
		var Level = document.getElementById("txtLevelal"+i).value;
		var Subject = document.getElementById("txtSubjectal"+i).value;
		var Grade = document.getElementById("txtGradeal"+i).value;
		var DateAwarded = document.getElementById("txtDateAwardedal"+i).value;
		ALevelPasses[i] = ExaminingBody + DELIMITER + Level + DELIMITER + Subject + DELIMITER + Grade + DELIMITER + DateAwarded;
	}
	
	Register.GetSecondarySchoolPasses(
			OLevelPasses[1],
			OLevelPasses[2],
			OLevelPasses[3],
			OLevelPasses[4],
			OLevelPasses[5],
			OLevelPasses[6],
			OLevelPasses[7],
			OLevelPasses[8],
			OLevelPasses[9],
			OLevelPasses[10],
			OLevelPasses[11],
			OLevelPasses[12],
			OLevelPasses[13],
			OLevelPasses[14],
			OLevelPasses[15],
			ALevelPasses[1],
			ALevelPasses[2],
			ALevelPasses[3],
			ALevelPasses[4],
			ALevelPasses[5],
			DELIMITER,
			ServerSideGetSecondarySchoolPasses_Callback)	
}

function ServerSideGetSecondarySchoolPasses_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetDegreeObtained", "pnlGetSecondarySchoolPasses", 10);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetDegreeObtained()
{
	ClearStatus();
	
	var DELIMITER = "_";

	var Certificates = new Array(6);
	for (var i = 1; i <= Certificates.length - 1; i++)
	{
		var ExaminingBody = document.getElementById("txtExaminingBodyc"+i).value;
		var QualificationObtained = document.getElementById("txtQualificationObtainedc"+i).value;
		var Programme = document.getElementById("txtProgrammec"+i).value;
		var ClassOfDegree = document.getElementById("txtClassOfDegreec"+i).value;
		var DateAwarded = document.getElementById("txtDateAwardedc"+i).value;
		Certificates[i] = ExaminingBody + DELIMITER + QualificationObtained + DELIMITER + Programme + DELIMITER + ClassOfDegree + DELIMITER + DateAwarded;
	}
	var ClassOfDegree = document.frmMain.drpDegreeObtained.value; //document.getElementById("drpDegreeObtained").value;
	Register.GetDegreeObtained(ClassOfDegree, Certificates[1], Certificates[2], Certificates[3], Certificates[4], Certificates[5], DELIMITER, ServerSideGetDegreeObtained_Callback);
}

function ServerSideGetDegreeObtained_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		ShowPanel("pnlGetOtherInfo", "pnlGetDegreeObtained", 11);
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetOtherInfo()
{
	ClearStatus();
	
	var previouslyApplied = document.frmMain.rbtnLstPreviouslyApplied[0].checked;
	var previouslyAwarded = document.frmMain.rbtnLstPreviouslyAwarded[0].checked;
	var activities = document.getElementById("txtActivities").value;
	var preferredAreaOfStudy = document.frmMain.drpChosenAreaOfStudy.value;
	Register.GetOtherInfo(previouslyApplied, previouslyAwarded, activities, preferredAreaOfStudy, ServerSideGetOtherInfo_Callback);
}

function ServerSideGetOtherInfo_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		document.getElementById("pnlGetPreviouslyAwardedScholarshipInformation").style.visibility = "visible";	
		HidePanel("pnlGetOtherInfo");
		document.getElementById("lblStepNumber").innerHTML = 12;
	}
	else if (response.value == "SkipScholInfo")
	{
		window.location = "UploadAttachments.aspx";
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}

function GetPreviouslyAwardedScholarshipInformation()
{
	ClearStatus();
	
	var prevScholName = document.getElementById("txtPrevScholName").value;
	var prevScholAwardedFromYear = document.getElementById("txtPrevScholAwardedFromYear").value;
	var prevScholAwardedToYear = document.getElementById("txtPrevScholAwardedToYear").value;
	var prevScholDegreeObtained = document.getElementById("txtPrevScholDegreeObtained").value;
	var prevScholProgramme = document.getElementById("txtPrevScholProgramme").value;
	Register.GetPreviouslyAwardedScholarshipInformation(prevScholName, prevScholAwardedFromYear, prevScholAwardedToYear, prevScholDegreeObtained, prevScholProgramme, ServerSideGetPreviouslyAwardedScholarshipInformation_Callback);
}

function ServerSideGetPreviouslyAwardedScholarshipInformation_Callback(response)
{
	if (response.error != null)
	{
		ShowError(errPageExpired);
	}
	if (response.value == "Continue")
	{
		document.getElementById("pnlGetAttachments").style.visibility = "visible";	
		HidePanel("pnlGetPreviouslyAwardedScholarshipInformation");
		window.location = "UploadAttachments.aspx";
	}
	else
	{
		document.getElementById("lblStatus").innerHTML = response.value;
	}
}
