function cancelRegistration() {
	var cancel = confirm("Are you sure you want to cancel?");
	if (cancel) {
		history.go(-1);
	}
}

function showHours(obj) {
	document.getElementById('hours').style.display = "block";
}

function hideHours(obj) {
	document.getElementById('hours').style.display = "none";
}

function showMonths(obj) {
	document.getElementById('months').style.display = "block";
}

function hideMonths(obj) {
	document.getElementById('months').style.display = "none";
}

function showQuarters(obj) {
	document.getElementById('quarters').style.display = "block";
}

function hideQuarters(obj) {
	document.getElementById('quarters').style.display = "none";
}

function togglePAddress(obj) {
	if (obj.checked == true) {
		document.getElementById('postal').style.display = "block";
	} else {
		document.getElementById('postal').style.display = "none";
	}
}

function toggleLOTE(obj) {
	if (obj.checked == true) {
		document.getElementById('lotecontainer').style.display = "block";
	} else {
		document.getElementById('lotecontainer').style.display = "none";	
	}
}

function toggleATSI(obj) {
	if (obj.checked == true) {
		document.getElementById('atsicontainer').style.display = "block";
	} else {
		document.getElementById('atsicontainer').style.display = "none";
	}
}

function toggleLicence(obj) {
	if (obj.checked == true) {
		document.getElementById('licencecontainer').style.display = "block";
	} else {
		document.getElementById('licencecontainer').style.display = "none";
	}
}

function toggleEntitlements(obj) {
	if (obj.checked == true) {
		document.getElementById('entitlementscontainer').style.display = "block";
	} else {
		document.getElementById('entitlementscontainer').style.display = "none";
	}
}

function isInvalidEmail(email) {
	var apos = email.indexOf("@");
	var dotpos = value.lastIndexOf(".");
	if (apos < 1 || dotpos - apos < 2) 
		return 1;
	return 0;
}

function validateYear(year) {
	with(year) {
		if (value == "") {
			alert("Please a valid year");
			return false;
		}
		if (!isNumeric(value)) {
			alert("Please enter a valid year");
			return false;
		}
		return true;
	}
}

function isNumeric(sText){
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;   
   }


function validateForm(form) {
	var ongoing = document.getElementById("position_ongoing");
	var unlimited = document.getElementById("position_unlimited");
	var startOnly = 0;
	var isUnlimited = 0;
	if(ongoing != undefined){
		if(ongoing.checked)
			startOnly = 1;
	}
	if(unlimited != undefined){
		if(unlimited.checked)
			isUnlimited = 1;
	}
	with (form) {
		/*if (validateEmail(email) == false) {
			alert("Please enter a valid email address");
			email.focus();
			return false;
		}*/
		if (validateYear(adStartYear) == false) {
			return false;
		}
		if (validateYear(posStartYear) == false) {
			return false;
		}

		if(!startOnly){
			if (validateYear(adEndYear) == false) {
				return false;
			}
			if (validateYear(posEndYear) == false) {
				return false;
			}
		}
		if(roleTitle.value == ""){
			alert("Position title is required");
			roleTitle.focus();
			return false;
		}
		if(!isUnlimited){
			if(noPos.value == "" || isNaN(noPos.value) || noPos.value < 1){
				alert("Number of positions must be a valid number or set to unlimited positions");
				noPos.value = "";
				noPos.focus();
				return false;
			}
		}
		var currentTime = new Date()
		if(!startOnly){
			if(compareDates(adStartYear.value, adStartMonth.value, adStartDate.value, adEndYear.value, adEndMonth.value, adEndDate.value, "Advertised", "The end advertised date is not after the start of the advertised date", "")){
				return false;
			}

			if(compareDates(posStartYear.value, posStartMonth.value, posStartDate.value, posEndYear.value, posEndMonth.value, posEndDate.value, "Position", "The end date of the position is not after the start date", "canEqual")){
				return false;
			}

			if(compareDates(adEndYear.value, adEndMonth.value, adEndDate.value, posEndYear.value, posEndMonth.value, posEndDate.value, "", "Position end advertised date is not before the position end date", "")){
				return false;
			}

			if(compareDates(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate(), posEndYear.value, posEndMonth.value, posEndDate.value, "", "Position end date is in the past", "canEqual")){
				return false;
			}
		}

		if(compareDates(adStartYear.value, adStartMonth.value, adStartDate.value, posStartYear.value, posStartMonth.value, posStartDate.value, "", "Position start date is not after the advertised start date", "canEqual")){
			return false;
		}
	}
	return true;
}

function isLeapYear(year){
    return((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}

function isInvalidDate(year, day, month){
	if(month == "02" && day == 29){
		// Leap year set...check to see if it's actually a leap year
		if(!isLeapYear(year))
			return "29th Feb selected and year is not a leap year";
	}

	switch(month){
		case "02":
			if(day > 29)
				return "This is not a valid day for this month";
		case "09":
		case "04":
		case "06":
		case "11":
			if(day > 30)
				return "The month selected only has 30 days";
			break;
	}
}	

function compareDates(startYear, startMonth, startDate, endYear, endMonth, endDate, dateType, dateMessage, canEqual){
	var dateErr;
	dateErr = isInvalidDate(startYear, startDate, startMonth);
	if(dateErr){
		alert(dateType + " 'start' date is invalid: " + dateErr);
		return true;
	}

	var fromDate = new Date();
	fromDate.setFullYear(startYear,startMonth - 1,startDate);

	dateErr = isInvalidDate(endYear, endDate, endMonth);
	if(dateErr){
		alert(dateType + " 'end' date is invalid: " + dateErr);
		return true;
	}
	
	var toDate = new Date();
	toDate.setFullYear(endYear, endMonth - 1, endDate);

	if(canEqual){
		if (fromDate > toDate){
			alert(dateMessage);
			return true;
		}
	}
	else{
		if (fromDate >= toDate){
			alert(dateMessage);
			return true;
		}
	}
	return false;
}

function step2Pos(flag, theForm){
	if(validateForm(theForm))
		step2(flag);
}

function step2Org(flag, admin){
	var message = "";
	$.ajax({
		url: 'http://www.volunteerconnections.org.au/ajax/volunteer.ajax.php',
		data: 'action=check_username&username='+$('#username').val(),
		success: function(result) {
		
			if (result)
				message += ("\t - " + result + "\n");
			
			if(document.getElementById("organisation").value == "")
				message += ("\t - Username is required\n");
			
			if(document.getElementById("email").value == "")
				message += ("\t - Email is required\n");
			
			if(document.getElementById("contact").value == "")
				message += ("\t - Contact person is required\n");
			
			if(message){
				alert("The following errors occurred:\n\n" + message);
				return false;
			}
			step2(flag, admin);
		}
	});
}

function validateEditVolForm(){
	var message = "";
	if(document.getElementById("username").value == "")
		message += ("\t - Username is required\n");

	if(document.getElementById("fname").value == "")
		message += ("\t - First name is required\n");

	if(document.getElementById("lname").value == "")
		message += ("\t - Surname is required\n");


	if(message){
		alert("The following errors occurred:\n\n" + message);
		return false;
	}
	return true;
}

function step2Vol(flag, admin){
	var message = "";
	$.ajax({
		async: false,
		url: 'http://www.volunteerconnections.org.au/ajax/volunteer.ajax.php',
		data: 'action=check_username&username='+$('#username').val(),
		success: function(result) {
			if (result) {
				message += ("\t - " + result + "\n");
			}
			
			
		}
	});
	
	if(!admin){
		if(document.getElementById("username").value.length <5)
			message += ("\t - Username must be at least 5 characters long\n");

	if(document.getElementById("password").value.length < 5)
		message += ("\t - Password must be at least 5 characters long\n");

	}

	if(document.getElementById("fname").value == "")
		message += ("\t - First name is required\n");

	if(document.getElementById("lname").value == "")
		message += ("\t - Surname is required\n");


	if(message){
		alert("The following errors occurred:\n\n" + message);
		return false;
	}
	
	step2(flag, admin);
	
	
}


function step2(flag, admin) {
	if (flag == "forward") {
		document.getElementById('p1').style.display = "none";
		document.getElementById('p2').style.display = "block";
	} else if (flag == "back") {
		document.getElementById('p1').style.display = "block";
		document.getElementById('p2').style.display = "none";
	}
	window.scroll(0, 0);
}

function step3(flag) {
	if (flag == "forward") {
		document.getElementById('p2').style.display = "none";
		document.getElementById('p3').style.display = "block";
	} else if (flag == "back") {
		document.getElementById('p2').style.display = "block";
		document.getElementById('p3').style.display = "none";
	}
	window.scroll(0, 0);
}

function step4(flag) {
	if (flag == "forward") {
		document.getElementById('p3').style.display = "none";
		document.getElementById('p4').style.display = "block";
	} else if (flag == "back") {
		document.getElementById('p3').style.display = "block";
		document.getElementById('p4').style.display = "none";
	}
	window.scroll(0, 0);
}

function step5(flag) {
	if (flag == "forward") {
		document.getElementById('p4').style.display = "none";
		document.getElementById('p5').style.display = "block";
	} else if (flag == "back") {
		document.getElementById('p4').style.display = "block";
		document.getElementById('p5').style.display = "none";
	}
	window.scroll(0, 0);
}

function checkAll(obj) {
	var flag = false;
	if (obj.checked == true) {
		flag = true;
	}
		document.getElementById('administration').checked = flag;
		document.getElementById('agriculture').checked = flag;
		document.getElementById('animalServices').checked = flag;
		document.getElementById('artsCulture').checked = flag;
		document.getElementById('children').checked = flag;
		document.getElementById('communityAged').checked = flag;
		document.getElementById('commGeneral').checked = flag;
		document.getElementById('commhealth').checked = flag;
		document.getElementById('communityTransport').checked = flag;
		document.getElementById('disabilities').checked = flag;
		document.getElementById('diversity').checked = flag;
		document.getElementById('eduAdult').checked = flag;
		document.getElementById('eduCommunity').checked = flag;
		document.getElementById('eduSchools').checked = flag;
		document.getElementById('emergencyServices').checked = flag;
		document.getElementById('environmental').checked = flag;
		document.getElementById('events').checked = flag;
		document.getElementById('gardening').checked = flag;
		document.getElementById('handyPerson').checked = flag;
		document.getElementById('health').checked = flag;
		document.getElementById('historical').checked = flag;
		document.getElementById('hospiceCare').checked = flag;
		document.getElementById('humanRights').checked = flag;
		document.getElementById('infoTech').checked = flag;
		document.getElementById('fundraising').checked = flag;
		document.getElementById('library').checked = flag;
		document.getElementById('marketing').checked = flag;
		document.getElementById('mealsWheels').checked = flag;
		document.getElementById('mentoring').checked = flag;
		document.getElementById('music').checked = flag;
		document.getElementById('sales').checked = flag;
		document.getElementById('socEvents').checked = flag;
		document.getElementById('sports').checked = flag;		
		document.getElementById('courier').checked = flag;
		document.getElementById('tourism').checked = flag;
		document.getElementById('volunteerVisiting').checked = flag;
		document.getElementById('youthInt').checked = flag;
}

function validateLGA(message) {
	if (document.getElementById('password').value.length <5) {
		message += ("\t - password must be at least 5 characters long\n");
	}

	if (document.getElementById('organisation').value == "") {
		message += ("\t - organisation name is required\n");
	}

	if(document.getElementById("email").value == "" || isInvalidEmail(document.getElementById("email").value)){
		message += ("\t - valid email is required\n");
	}

	if (document.getElementById('lga').value == "none") {
		message += ("\t - LGA is required\n");
	}
	if(message != ""){
		alert("The following errors occurred:\n\n" + message);
		return false;
	}
	return true;	
}

function validateOrgRegistration() {
	var message = "";
	
	$.ajax({
		async: false,
		url: 'http://www.volunteerconnections.org.au/ajax/volunteer.ajax.php',
		data: 'action=check_username&username='+$('#username').val(),
		success: function(result) {
		
			if (result)
				message += ("\t - " + result + "\n");

		}
	});
	
	if (document.getElementById('username').value.length < 5) {
		message += ("\t - username must be at least 5 characters long\n");
	}
	
	if (document.getElementById('password').value.length <5) {
		message += ("\t - password must be at least 5 characters long\n");
	}

	if (document.getElementById('organisation').value == "") {
		message += ("\t - organisation name is required\n");
	}

	if(document.getElementById("email").value == "" || isInvalidEmail(document.getElementById("email").value)){
		message += ("\t - valid email is required\n");
	}

	if (document.getElementById('lga').value == "none") {
		message += ("\t - LGA is required\n");
	}
	
	if(message != ""){
		alert("The following errors occurred:\n\n" + message);
		return false;
	} else {
		return true;
	}
}

function toggleInsurancePA(obj) {
	if (obj.checked == true) {
		document.getElementById('personalaccidentdetail').style.display = "block";
	} else {
		document.getElementById('personalaccidentdetail').style.display = "none";
	}
}

function toggleInsurancePL(obj) {
	if (obj.checked == true) {
		document.getElementById('publicliabilitydetail').style.display = "block";
	} else {
		document.getElementById('publicliabilitydetail').style.display = "none";
	}
}

function age(combo) {
	var d = new Date();
	var curYear = d.getFullYear();
	if ((curYear - parseInt(combo)) < 18) {
		alert("Some volunteer positions have specified a minimum age, and this is included in the position details. Written parental consent (such as a letter) is required if you are applying for a volunteer position and you are under the age of 18 years. ");
	}
}

function checkPassword() {	
	if (document.getElementById('password1').value == document.getElementById('password2').value) {		
		return true;
	} else {
		alert("Passwords do not match");
		return false;
	}
}

function collapse(obj, max) {
 	if (obj.style.height == "1.6em") {
 		obj.style.height = max + "em";
 	} else {
 		obj.style.height = "1.6em";
 	}
}

function confirmVolRemoval(){
	if(confirm("You are about to remove this volunteer from your organisation. Removing a volunteer affects all of the positions this volunteer has held within the organsation - you will no longer have access to personal or position information for this volunteer.\n\nIf you wish to continue and remove this volunteer from your organsation, click OK."))
		return true;
	return false;
}