function SearchClear()
{
        if(document.quicksearch.keyword.value == "Quick Search")
                document.quicksearch.keyword.value="";
}

function ValidEmail(email)
{
        emailTest = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if(!emailTest.test(email))
                return false;
        else 
                return true;
}

function SubmitUnSubscribeForm(form)
{
        email = form.email.value;

        if(!ValidEmail(email))
        {
                alert("The email address you entered is not valid");
                return false;
        }
}

function SubmitSubscribeForm(form)
{
        email = form.email.value;

        if(!ValidEmail(email))
        {
                alert("Your email address is invalid.");
                return false;
        }
        else if(form.selectedEvents.length == 0)
        {
                alert("Please select one or more activities from the activity list.");
                return false;
        }

        i = 0;
        length = form.selectedEvents.length - 1;
        for(i = length; i > -1; i--)
        {
                optionVal = form.selectedEvents.options[i].value;
                if(i == length)
                        form.selectedActivities.value = optionVal;
                else
                        form.selectedActivities.value = form.selectedActivities.value + "," + optionVal;
        }

        return true;
}

function TransferEvent(fromForm, toForm)
{
        var length = fromForm.length - 1;
        var options = new Array();
        var values = new Array();
        var count = 0;
        var i = 0;

        for(i = length; i > -1; i--)
        {
                if(fromForm.options[i].selected)
                {
                        options[count] = fromForm.options[i].text;
                        values[count] = fromForm.options[i].value;
                        count++;
        
                        DeleteFromOption(fromForm, i);
                }
        }

        count--;

        for(i = count; i > -1; i--)
                AddToOption(toForm, options[i], values[i]);
}

function DeleteFromOption(fromForm, index)
{
        var length = fromForm.length;
        if(length > 0)
                fromForm.options[index] = null;
}

function AddToOption(toForm, option, value)
{
        var length = toForm.length;
        var newOption = new Option(option, value);
        toForm.options[length] = newOption;
}

function CheckUpdateEvent(form)
{
	if(form.programName.value == "")
	{
                alert("Please enter an event name for the event.");
	        return false;
	}

        if(form.ageGroupFrom.value == "" || form.ageGroupTo.value == "")
        {
                alert("Please enter an age group for your event.");
        	return false;
        }

        if(isNaN(parseInt(form.ageGroupFrom.value)))
        {
                alert("The from age group you entered is not numeric. Please enter a numeric age.");
        	return false;
        }

        if(isNaN(parseInt(form.ageGroupTo.value)))
        {
                alert("The to age group you entered is not numeric. Please enter a numeric age.");
        	return false;
	}

	if(form.description.value == "")
	{
        	alert("Please enter a description for your event.");
	        return false;
	}

	if(form.location.value == "")
	{
	        alert("Please enter a location for your event.");
        	return false;
	}

	if(form.postcode.value == "")
	{	
	        alert("Please enter a postcode for your event.");
        	return false;
	}
	else if(form.postcode.value.length != 4)
	{
	        if(form.postcode.value.length < 4)
        	        alert("The postcode you entered was too short. Please enter a correct postcode for your event.");
	        if(form.postcode.value.length > 4)
        	        alert("The postcode you entered was too long. Please enter a correct postcode for your event.");

	        return false;
	}
	else if(isNaN(parseInt(form.postcode.value)))
	{
	        alert("The postcode you entered was not a number. Please a 4 digit postcode.");
        	return false;
	}

	if(form.cost.value == "")
	{
	        alert("Please enter cost information for your event.");
        	return false;
	}

	if(form.selectedEvents.length == 0)
	{
	        alert("Please choose at least one activity type for your event.");
        	return false;
	}

	var i = 0;
	var length = form.selectedEvents.length - 1;
	for(i = length; i > -1; i--)
	{
        	var optionVal = form.selectedEvents.options[i].value;
	        if(i == length)
        	        form.selectedActivities.value = optionVal;
	        else
        	        form.selectedActivities.value = form.selectedActivities.value + "," + optionVal;
	}
	return true;

}

function CheckAddEventForm(form, step)
{
	if(step == "step1")
	{
		if(form.name.value == "")
		{
			alert("Please enter an event name for your event.");
			return false;
		}

		if(form.ageGroupFrom.value == "" || form.ageGroupTo.value == "")
		{
			alert("Please enter an age group for your event.");
			return false;
		}

		if(isNaN(parseInt(form.ageGroupFrom.value)))
		{
			alert("The from age group you entered is not numeric. Please enter a numeric age.");
			return false;
		}

                if(isNaN(parseInt(form.ageGroupTo.value)))
                {
                        alert("The to age group you entered is not numeric. Please enter a numeric age.");
                        return false;
                }
        	
		startDate = form.startDay.value + "/" + form.startMonth.value + "/" + form.startYear.value;
		endDate = form.endDay.value + "/" + form.endMonth.value + "/" + form.endYear.value;
		if(IsDate(startDate) && IsDate(endDate))
	        {
                	var startDateDT = stringToDate(startDate);
        	        var endDateDT = stringToDate(endDate);
	                var todayDate = new Date();
                	var futureDate = new Date();
        	        var tStr = "Values: ";
	                futureDate.setDate(futureDate.getDate() + 90);

                	if (startDateDT > endDateDT)
        	        {
	                  alert("The start date must be the same as or BEFORE the end date.");
                	  return false;
        	        }
	                if (endDateDT < todayDate)
                	{
        	          alert("Check your end date - you cannot enter an event which is already over!");
	                  return false;
                	}
        	        return true;
	        }
        	       
		return false;
	}
	else if(step == "step2")
	{
		if(form.description.value == "")
		{
			alert("Please enter a description for your event.");
			return false;
		}
		
		if(form.selectedEvents.length == 0)
		{
			alert("Please choose at least one activity type for your event.");
			return false;
		}

        	var i = 0;
	        var length = form.selectedEvents.length - 1;
        	for(i = length; i > -1; i--)
	        {
        	        var optionVal = form.selectedEvents.options[i].value;
	                if(i == length)
                        	form.selectedActivities.value = optionVal;
                	else
        	                form.selectedActivities.value = form.selectedActivities.value + "," + optionVal;
	        }

		//alert('Maintenance, please try again in 5 minutes.');
		return true;
	}
	else if(step == "step3")
	{
	        if(form.location.value == "")
        	{
                	alert("Please enter a location for your event.");
        	        return false;
	        }

        	if(form.postcode.value == "")
	        {
                	alert("Please enter a postcode for your event.");
        	        return false;
	        }
        	else if(form.postcode.value.length != 4)
	        {
                	if(form.postcode.value.length < 4)
        	                alert("The postcode you entered was too short. Please enter a correct postcode for your event.");
	                if(form.postcode.value.length > 4)
                	        alert("The postcode you entered was too long. Please enter a correct postcode for your event.");

        	        return false;
	        }
		else if(isNaN(parseInt(form.postcode.value)))
		{
			alert("The postcode you entered was not a number. Please a 4 digit postcode.");
			return false;
		}

        	if(form.cost.value == "")
	        {
                	alert("Please enter cost information for your event.");
        	        return false;
        	}

		return true;	
	}
}

function stringToDate(datestr)
{
  var dateArray = datestr.split("/");
  var tempArray = dateArray[2].split(" ");
  dateArray[2] = tempArray[0];
  var theDate = new Date();

  theDate.setFullYear(1,1,1);

  if(dateArray[1] > 12 || dateArray[1] < 1)
  {
    alert("Bad Month: " + dateArray[1]);
    return false;
  }

  var daysInMonths = new Array(12)

  daysInMonths[0] = 31;
  if(dateArray[2] % 4 == 0 && (dateArray[2] % 100 != 0 || dateArray[2] % 400 == 0))
  {
    daysInMonths[1] = 29;
  }
  else
  {
    daysInMonths[1] = 28;
  }
  daysInMonths[2] = 31;
  daysInMonths[3] = 30;
  daysInMonths[4] = 31;
  daysInMonths[5] = 30;
  daysInMonths[6] = 31;
  daysInMonths[7] = 31;
  daysInMonths[8] = 30;
  daysInMonths[9] = 31;
  daysInMonths[10] = 30;
  daysInMonths[11] = 31;

  var month = Number(dateArray[1]) - 1;

  if(dateArray[0] > daysInMonths[month] || dateArray[0] < 1)
  {
    alert("Too many days for given month: " + dateArray[0] + "/" + dateArray[1]);
    return theDate;
  }

  theDate.setFullYear(dateArray[2], month, dateArray[0]);
  return theDate;
}


function IsDate(date)
{
  var dateArray = date.split("/");
  var tempArray = dateArray[2].split(" ");
  dateArray[2] = tempArray[0];

  if(dateArray[1] > 12 || dateArray[1] < 1)
  {
    alert("Bad Month: " + dateArray[1]);
    return false;
  }

  var daysInMonths = new Array(12)

  daysInMonths[0] = 31;
  if(dateArray[2] % 4 == 0 && (dateArray[2] % 100 != 0 ||
    dateArray[2] % 400 == 0))
  {
    daysInMonths[1] = 29;
  }
  else
  {
    daysInMonths[1] = 28;
  }
  daysInMonths[2] = 31;
  daysInMonths[3] = 30;
  daysInMonths[4] = 31;
  daysInMonths[5] = 30;
  daysInMonths[6] = 31;
  daysInMonths[7] = 31;
  daysInMonths[8] = 30;
  daysInMonths[9] = 31;
  daysInMonths[10] = 30;
  daysInMonths[11] = 31;

  var month = Number(dateArray[1]) - 1;

  if(dateArray[0] > daysInMonths[month] || dateArray[0] < 1)
  {
    alert("Too many days for given month: " + dateArray[0] + "/" + dateArray[1]);
    return false;
  }

  return true;
}

function ClearSuburbs()
{
	document.forms[0].selectedSuburbs.value = "";
	document.forms[0].suburbs.value = "";
}


function ClearActivities()
{
	document.forms[0].selectedActivities.value = "";
	document.forms[0].activity.value = "";
}

function SelectedSuburbItem()
{
	var index = document.forms[0].postcode.selectedIndex;
	if(document.forms[0].selectedSuburbs.value.indexOf(document.forms[0].postcode[index].value) == -1)
	{
		document.forms[0].selectedSuburbs.value = document.forms[0].selectedSuburbs.value + "," + document.forms[0].postcode[index].value;

        	if(document.forms[0].suburbs.value == "")
                	document.forms[0].suburbs.value = document.forms[0].postcode[index].text;
	        else
        	        document.forms[0].suburbs.value = document.forms[0].suburbs.value + ", " + document.forms[0].postcode[index].text;
	}

	document.forms[0].postcode.selectedIndex = 0;
}

function SelectedActivityItem()
{
        var index = document.forms[0].eventType.selectedIndex;
	
	if(document.forms[0].selectedActivities.value.indexOf(document.forms[0].eventType[index].value) == -1)
	{
		document.forms[0].selectedActivities.value = document.forms[0].selectedActivities.value + "," + document.forms[0].eventType[index].value;

		if(document.forms[0].activity.value == "")
			document.forms[0].activity.value = document.forms[0].eventType[index].text;
		else
			document.forms[0].activity.value = document.forms[0].activity.value + ", " + document.forms[0].eventType[index].text;
	}

	document.forms[0].eventType.selectedIndex = 0;
}
