// JavaScript Document

var pageNum = 1;
var maxPage = 4;

function moveNext()
{
	if(pageNum == maxPage)
	{
		sendJob();
	}
	else if(canMoveNext())
	{

		if(pageNum + 1 <= maxPage)
		{
			var currentPage = document.getElementById('HireTutorStep'+pageNum);
			currentPage.className = "StepBody";
			pageNum = pageNum + 1;	
			var nextPage = document.getElementById('HireTutorStep'+pageNum);
			nextPage.className = "StepBodyVisible";
			if(pageNum == 3)
			{
				var OurPriceRange = document.getElementById('OurPriceRange');
				OurPriceRange.innerHTML = "";
				viewRates();
			}
			else if(pageNum == maxPage)
			{		
				var nextButton = document.getElementById('HireTutorNext');
				nextButton.value = "Submit";
				
						
			}
		}
		
		var backButton = document.getElementById('HireTutorBack');
		backButton.className = "";
		
	}
	
	
}

function moveBack()
{
	if(pageNum - 1 >= 1)
	{
		var currentPage = document.getElementById('HireTutorStep'+pageNum);
		currentPage.className = "StepBody";
		pageNum -= 1;	
		var nextPage = document.getElementById('HireTutorStep'+pageNum);
		nextPage.className = "StepBodyVisible";
		
	}
	if(pageNum == 1)
	{

		var backButton = document.getElementById('HireTutorBack');
		backButton.className = "invisible";
	}

	var nextButton = document.getElementById('HireTutorNext');
	nextButton.className = "";
	nextButton.value = "Next >";
}

function viewRates()
{
	var hireTutorRatesViewer = document.getElementById('hireTutorRatesViewer');
	hireTutorRatesViewer.style.visibility = "visible";
	hireTutorRatesViewer.style.display = "block";
	var isPrimarySelect = document.getElementById('isPrimarySelect');
	var levelSelect = document.getElementById('levelSelect');

	var isPrimary = isPrimarySelect.options[isPrimarySelect.selectedIndex].value;
	var level = levelSelect.options[levelSelect.selectedIndex].value;
	var frequencies = "";
	for(var i=1;i<=3;i++)		//looping through 3 frequency radio buttons
	{
		var frequencyRadioBtn = document.getElementById('frequency'+i);
		if(frequencyRadioBtn.checked)
		{
			frequencies = frequencyRadioBtn.value;
			break;
		}
	}

	var periods = "";
	for(var i=1;i<=2;i++)		//looping through 2 period radio buttons
	{
		var periodRadioBtn = document.getElementById('period'+i);
		if(periodRadioBtn.checked)
		{
			periods = periodRadioBtn.value;
			break;
		}
	}
	var tutorsExp = "";
	for(var i=1;i<=3;i++)		//looping through 3 tutor exp radio buttons
	{
		var tutorRadioBtn = document.getElementById('tutorExp'+i);
		if(tutorRadioBtn.checked)
		{
			tutorsExp = tutorRadioBtn.value;
			break;
		}
	}
	
	var groupTuition = "";
	for(var i=1;i<=2;i++)		//looping through 2 groupTuition buttons
	{
		var groupTuitionBtn = document.getElementById('groupTuition'+i);
		if(groupTuitionBtn.checked)
		{
			groupTuition = groupTuitionBtn.value;
			break;
		}
	}
	

	new Ajax.Request('db/searchrates.php',
	{
		method:'post',
		parameters:{differentiator: Math.floor(Math.random()*50000),isPrimary:isPrimary,level:level,frequencies:frequencies,periods:periods,tutorsExp:tutorsExp,groupTuition:groupTuition},
		onComplete: searchRatesComplete,
		onFailure: function(){ alert('Something went wrong...') }
	});	
}

function searchRatesComplete(result)
{
	var OurPriceRange = document.getElementById('OurPriceRange');
	OurPriceRange.innerHTML  = result.responseText;
	var hireTutorRatesViewer = document.getElementById('hireTutorRatesViewer');
	hireTutorRatesViewer.style.visibility = "hidden";
	hireTutorRatesViewer.style.display = "none";	
}

function sendJob()
{
	if(verifyPage4())
	{
		var hireTutorLoaderStep4 = document.getElementById('hireTutorLoaderStep4');
		hireTutorLoaderStep4.style.visibility = "visible";
		hireTutorLoaderStep4.style.display = "block";	

		var isPrimarySelect = document.getElementById('isPrimarySelect');
		var levelSelect = document.getElementById('levelSelect');
		var streamSelect = document.getElementById('streamSelect');	
		var isPrimary = parseInt(isPrimarySelect.options[isPrimarySelect.selectedIndex].value);
		
		var level = levelSelect.options[levelSelect.selectedIndex].value;
		var stream = -1;
		if(!isPrimary)
		{
			stream = streamSelect.options[streamSelect.selectedIndex].value;
		}
		var SubjectContainer = document.getElementById('SubjectContainer');
		var subjects = "";
		for(var i=0;i<SubjectContainer.childNodes.length;i++)
		{
			var div = SubjectContainer.childNodes[i];
			for(var j=0;j<div.childNodes.length;j++)
			{
				if(div.childNodes[j].nodeType == 1)
				{
					if(div.childNodes[j].checked)
					{	
						subjects += div.childNodes[j].value+",";
					}
				}
			}
		}
		var timeSlots = "";
		for(var i=1;i<=28;i++)		//looping through 28 checkboxes
		{
			var timeSlotCheckBox = document.getElementById('timeslot_'+i);
			if(timeSlotCheckBox.checked)
			{
				timeSlots += timeSlotCheckBox.value+",";
			}
		}
		
		var frequencies = "";
		for(var i=1;i<=3;i++)		//looping through 3 frequency radio buttons
		{
			var frequencyRadioBtn = document.getElementById('frequency'+i);
			if(frequencyRadioBtn.checked)
			{
				frequencies = frequencyRadioBtn.value;
				break;
			}
		}

		var periods = "";
		for(var i=1;i<=2;i++)		//looping through 2 period radio buttons
		{
			var periodRadioBtn = document.getElementById('period'+i);
			if(periodRadioBtn.checked)
			{
				periods = periodRadioBtn.value;
				break;
			}
		}
		
		var tutorsExp = "";
		for(var i=1;i<=4;i++)		//looping through 4 tutor exp radio buttons
		{
			var tutorRadioBtn = document.getElementById('tutorExp'+i);
			if(tutorRadioBtn.checked)
			{
				tutorsExp = tutorRadioBtn.value;
				break;
			}
		}
		
		var gender = "";
		for(var i=1;i<=3;i++)		//looping through 3 gender radio buttons
		{
			var genderRadioBtn = document.getElementById('gender'+i);
			if(genderRadioBtn.checked)
			{
				gender = genderRadioBtn.value;
				break;
			}
		}
		
		var groupTuition = "";
		for(var i=1;i<=2;i++)		//looping through 2 groupTuition buttons
		{
			var groupTuitionBtn = document.getElementById('groupTuition'+i);
			if(groupTuitionBtn.checked)
			{
				groupTuition = groupTuitionBtn.value;
				break;
			}
		}
	
		var studentRates = trim(document.getElementById('studentRates').value);
		var studentName = trim(document.getElementById('studentName').value);
		var studentContactNum = trim(document.getElementById('studentContactNum').value);
		var studentEmail = trim(document.getElementById('studentEmail').value);
		var studentAddress = trim(document.getElementById('studentAddress').value);
		var studentPostalCode = trim(document.getElementById('studentPostalCode').value);
		var studentSchool = trim(document.getElementById('studentSchool').value);
		var studentRemarks = trim(document.getElementById('studentRemarks').value);
		var studentFindOut = trim(document.getElementById('studentFindOut').value);
		var studentFindOutOthers = trim(document.getElementById('studentFindOutOthers').value);
		
		if(studentEmail == "")
		{
			studentEmail = "No Email";	
		}
		new Ajax.Request('db/savejob.php',
		{
			method:'post',
			parameters:{differentiator: Math.floor(Math.random()*50000),isPrimary:isPrimary,level:level,stream:stream,subjects:subjects,timeSlots:timeSlots,frequencies:frequencies,periods:periods,tutorsExp:tutorsExp,gender:gender,groupTuition:groupTuition,studentRates:studentRates,studentName:studentName,studentContactNum:studentContactNum,studentEmail:studentEmail,studentAddress:studentAddress,studentPostalCode:studentPostalCode,studentRemarks:studentRemarks,studentSchool:studentSchool,studentFindOut:studentFindOut,studentFindOutOthers:studentFindOutOthers},
			onComplete: saveJobsCompleted,
			onFailure: function(){ alert('Something went wrong...') }
		});	

	}
	else
	{
		
		return false;	
	}
}

function saveJobsCompleted(result)
{
	
	var hireTutorLoaderStep4 = document.getElementById('hireTutorLoaderStep4');
	hireTutorLoaderStep4.style.visibility = "hidden";
	hireTutorLoaderStep4.style.display = "none";	

	var HireTutorStep5 = document.getElementById('HireTutorStep5');
	HireTutorStep5.className = "StepBodyVisible";

	var HireTutorStep4 = document.getElementById('HireTutorStep4');
	HireTutorStep4.className = "StepBody";
	
	
	var backButton = document.getElementById('HireTutorBack');
	backButton.className = "invisible";

	var nextButton = document.getElementById('HireTutorNext');
	nextButton.className = "invisible";
	
	var resetButton = document.getElementById('HireTutorRestart');
	resetButton.className = "";
	
	pageTracker._trackPageview("/NewRequest");
}

function startAgain()
{

	
	location.reload(true);

}

//verification function
function canMoveNext()
{
	var canMove = false;
	if(pageNum == 1)
	{
		canMove = verifyPage1();	
	}
	else if(pageNum ==2)
	{
		canMove = verifyPage2();
	}
	else if(pageNum == 3)
	{
		canMove = verifyPage3();	
	}
	return canMove;
}

function verifyPage1()
{
	var isPrimarySelect = document.getElementById('isPrimarySelect');
	var levelSelect = document.getElementById('levelSelect');
	var streamSelect = document.getElementById('streamSelect');	
	var FooterErrMsg = document.getElementById('FooterErrMsg');
	var isPrimary = isPrimarySelect.options[isPrimarySelect.selectedIndex].value;
	if( isPrimary == -1)//no primary or secondary selected
	{
		FooterErrMsg.innerHTML = "Please select either Primary or Secondary";
		return false;
	}
	if(levelSelect.options[levelSelect.selectedIndex].value == -1)//no primary or secondary selected
	{
		FooterErrMsg.innerHTML = "Please select a level";
		return false;
	}
	if(!isPrimary)
	{
		if(streamSelect.options[streamSelect.selectedIndex].value == -1)//no primary or secondary selected
		{
			FooterErrMsg.innerHTML = "Please select a stream";
			return false;
		}
	}
	
	var SubjectContainer = document.getElementById('SubjectContainer');
	var subjectSelected = false;
	for(var i=0;i<SubjectContainer.childNodes.length;i++)
	{
		var div = SubjectContainer.childNodes[i];
		for(var j=0;j<div.childNodes.length;j++)
		{
			if(div.childNodes[j].nodeType == 1)
			{
				if(div.childNodes[j].checked)
				{	
					subjectSelected = true;
				}
			}
		}
	}
	if(!subjectSelected)
	{
		FooterErrMsg.innerHTML = "Please select at least a subject";	
	}
	else
	{
		FooterErrMsg.innerHTML = "";	
	}
	return subjectSelected;
}

function verifyPage2()
{
	var FooterErrMsg = document.getElementById('FooterErrMsg');
	var timeslotSelected = false;
	for(var i=1;i<=28;i++)		//looping through 28 checkboxes
	{
		var timeSlotCheckBox = document.getElementById('timeslot_'+i);
		if(timeSlotCheckBox.checked)
		{
			timeslotSelected = true;
			break;
		}
	}
	if(!timeslotSelected)
	{
		FooterErrMsg.innerHTML = "Please select at least one time slot";
		return false;	
	}
	var frequencySelected = false;
	for(var i=1;i<=3;i++)		//looping through 3 frequency radio buttons
	{
		var frequencyRadioBtn = document.getElementById('frequency'+i);
		if(frequencyRadioBtn.checked)
		{
			frequencySelected = true;
			break;
		}
	}
	if(!frequencySelected)
	{
		FooterErrMsg.innerHTML = "Please select at least one frequency";
		return false;	
	}

	var periodSelected = false;
	for(var i=1;i<=2;i++)		//looping through 2 period radio buttons
	{
		var periodRadioBtn = document.getElementById('period'+i);
		if(periodRadioBtn.checked)
		{
			periodSelected = true;
			break;
		}
	}
	if(!periodSelected)
	{
		FooterErrMsg.innerHTML = "Please select at least one period";
		return false;	
	}
	FooterErrMsg.innerHTML = "";
	return true;
}

function verifyPage3()
{
	var FooterErrMsg = document.getElementById('FooterErrMsg');
	var tutorExpSelected = false;
	for(var i=1;i<=4;i++)		//looping through 4 tutor exp radio buttons
	{
		var tutorRadioBtn = document.getElementById('tutorExp'+i);
		if(tutorRadioBtn.checked)
		{
			tutorExpSelected = true;
			break;
		}
	}
	if(!tutorExpSelected)
	{
		FooterErrMsg.innerHTML = "Please select at least one tutor experience";
		return false;	
	}

	var genderSelected = false;
	for(var i=1;i<=3;i++)		//looping through 3 gender radio buttons
	{
		var genderRadioBtn = document.getElementById('gender'+i);
		if(genderRadioBtn.checked)
		{
			genderSelected = true;
			break;
		}
	}
	if(!genderSelected)
	{
		FooterErrMsg.innerHTML = "Please select at least one gender";
		return false;	
	}
	
	var studentRates = trim(document.getElementById('studentRates').value);
	
	if(parseInt(studentRates) == null || parseInt(studentRates) == 0 || isNaN(parseInt(studentRates)))
	{
		FooterErrMsg.innerHTML = "Please indicate your preferred price (digits only)";
		return false;	
	}
	/*
	var ourPriceRange = document.getElementById('OurPriceRange').innerHTML;
	var prices = ourPriceRange.split("-");
	var lowPrice = prices[0];
	if(studentRates < lowPrice){
		if(confirm("Your price of $"+studentRates+" is lower than the last 5 transacted price range. Do you wish to continue with this price?")){
			return true;
		}else{
			return false;
		}
	}
	*/
	
	FooterErrMsg.innerHTML = "";
	return true;
}

function verifyPage4()
{
	var FooterErrMsg = document.getElementById('FooterErrMsg');
	var studentName = trim(document.getElementById('studentName').value);
	if(studentName.length <= 3)
	{
		FooterErrMsg.innerHTML = "Please key in a valid name with at least 4 characters.";
		return false;
	}
	else if(studentName.length > 254)
	{
		FooterErrMsg.innerHTML = "Please key in a name less than 253 characters.";
		return false;
	}
	var studentContactNum = trim(document.getElementById('studentContactNum').value);

	if(studentContactNum.length < 8)
	{
		FooterErrMsg.innerHTML = "Please key in a valid contact number.";
		return false;
	}
	var studentEmail = trim(document.getElementById('studentEmail').value);
	if(studentEmail!="")
	{
		if(!emailok(studentEmail))
		{
			FooterErrMsg.innerHTML = "Please key in a valid email address.";
			return false;			
		}
	}
	
	
	var studentAddress = trim(document.getElementById('studentAddress').value);
	if(studentAddress == "" || studentAddress == null)
	{
		FooterErrMsg.innerHTML = "Please key in a valid address.";
		return false;
	}
	
	var studentPostalCode = trim(document.getElementById('studentPostalCode').value);
	var re6digit=/^\d{6}$/; //regular expression defining a 6 digit number
	if (studentPostalCode.search(re6digit)==-1) //if match failed
	{
		FooterErrMsg.innerHTML = "Please key in a valid postal code (6 digit number, omit the S)";
		return false;
	}
	
	var studentSchool = trim(document.getElementById('studentSchool').value);
	if(studentSchool == "" || studentSchool == null)
	{
		FooterErrMsg.innerHTML = "Please key in a valid school.";
		return false;
	}
	
	FooterErrMsg.innerHTML = "";
	return true;
}

function primarySelectChange()
{
	var isPrimarySelect = document.getElementById('isPrimarySelect');
	var levelSelect = document.getElementById('levelSelect');
	var streamSelect = document.getElementById('streamSelect');	
	var SubjectContainer = document.getElementById('SubjectContainer');
	removeChildElements(levelSelect);
	removeChildElements(streamSelect);
	removeChildElements(SubjectContainer);
	
	var levels = 0;
	var schType = 0;
	
	if(isPrimarySelect.options[isPrimarySelect.selectedIndex].value == -1)		//nothing selected
	{
		levelSelect.disabled = true;
		streamSelect.disabled = true;
		var subjectContainer = document.getElementById('SubjectContainer');
		subjectContainer.innerHTML = "Please select your level to view the available subjects...";
	}
	else if(isPrimarySelect.options[isPrimarySelect.selectedIndex].value == 0)
	{
		levels = 5;
		schType = 0;
		levelSelect.disabled = false;
		streamSelect.disabled = false;
	}
	else if(isPrimarySelect.options[isPrimarySelect.selectedIndex].value == 1)
	{
		levels = 6;
		schType = 1;
		levelSelect.disabled = false;
		streamSelect.disabled = true;
	}
	else if(isPrimarySelect.options[isPrimarySelect.selectedIndex].value == 2)
	{
		levels = 2;
		schType = 2;
		levelSelect.disabled = false;
		streamSelect.disabled = false;
		
	}
	
	for(var i=1;i<=levels;i++)
	{
		var option = document.createElement('option');
		option.value = i;
		option.innerHTML = i;
		levelSelect.appendChild(option);
		
	}
	
	if(schType == 0)
	{
		var streams = new Array("Express","Normal Acad.","Normal Tech.");
		for(var i=0;i<streams.length;i++)
		{
			var option = document.createElement('option');
			option.value = streams[i];
			option.innerHTML = streams[i];
			streamSelect.appendChild(option);	
		}
	}
	else if(schType == 2)
	{
		var streams = new Array("H1","H2","H3");
		
		for(var i=0;i<streams.length;i++)
		{
			var option = document.createElement('option');
			option.value = streams[i];
			option.innerHTML = streams[i];
			streamSelect.appendChild(option);	
		}
	}
	else
	{
		var option = document.createElement('option');
		option.value = "-1";
		option.innerHTML = "N/A";
		streamSelect.appendChild(option);		
	}
	if(isPrimarySelect.options[isPrimarySelect.selectedIndex].value != -1)		//nothing selected
	{
		levelStreamChange();
	}
}


function levelStreamChange()
{
	displayTutorLoader();
	var isPrimarySelect = document.getElementById('isPrimarySelect');
	var levelSelect = document.getElementById('levelSelect');
	var streamSelect = document.getElementById('streamSelect');	
	var SubjectContainer = document.getElementById('SubjectContainer');
	removeChildElements(SubjectContainer);	
	
	var isPrimary = parseInt(isPrimarySelect.options[isPrimarySelect.selectedIndex].value);
	var level = levelSelect.options[levelSelect.selectedIndex].value;
	var stream = streamSelect.options[streamSelect.selectedIndex].value;

 	new Ajax.Request('db/getSubjects.php',
	{
		method:'post',
		parameters:{differentiator: Math.floor(Math.random()*50000),isPrimary:isPrimary,level:level,stream:stream},
		onSuccess: levelSelectProcessComplete,
		onFailure: function(){ alert('Something went wrong...') }
	});	
}


function levelSelectProcessComplete(result)
{
	hideTutorLoader();
}



function removeChildElements(parent)
{
	while (parent.firstChild) 
	{
 	 	parent.removeChild(parent.firstChild);
	}	
}

function displayTutorLoader()
{
	var hireTutorLoader = document.getElementById('hireTutorLoader');
	hireTutorLoader.style.visibility = "visible";
	hireTutorLoader.style.display = "block";	
}

function hideTutorLoader()
{
	var hireTutorLoader = document.getElementById('hireTutorLoader');
	hireTutorLoader.style.visibility = "hidden";
	hireTutorLoader.style.display = "none";	
}

function trim(str) {
    return str.replace(/^\s+|\s+$/g, '') ;
}



function emailok(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false;
		 }

 		 return true;				
	}

function displayOtherFindOut(value)
{
	var studentFindOutOthers = document.getElementById('studentFindOutOthers');
	if(value == "Others")
	{
		studentFindOutOthers.style.visibility = "visible";
		studentFindOutOthers.style.display = "block";
	}
	else
	{
		studentFindOutOthers.style.visibility = "hidden";
		studentFindOutOthers.style.display = "none";		
	}
	
}

function studentFindOutOthersFocus(value)
{
	var studentFindOutOthers = document.getElementById('studentFindOutOthers');
	if(value == "Please key in how you find out about us")
	{
		studentFindOutOthers.value = "";
		studentFindOutOthers.style.color = "#000000";
	}
}

function studentFindOutOthersBlur(value)
{
	if(value == "")
	{
		var studentFindOutOthers = document.getElementById('studentFindOutOthers');
		studentFindOutOthers.value ="Please key in how you find out about us";
		studentFindOutOthers.style.color = "#AAAAAA";
	}
}

