function attachEventListener(target, eventType, functionRef, capture)
{
  if (typeof target.addEventListener != "undefined")
  {
	target.addEventListener(eventType, functionRef, capture);
  }
  else if (typeof target.attachEvent != "undefined")
  {
	target.attachEvent("on" + eventType, functionRef);
  }
  else
  {
	eventType = "on" + eventType;

	if (typeof target[eventType] == "function")
	{
	  var oldListener = target[eventType];

	  target[eventType] = function()
	  {
		oldListener();

		return  functionRef();
	  }
	}
	else
	{
	  target[eventType] = functionRef;
	}
  }

  return true; 
}

function initHandler() {
	var dateStart = new Date(2009,11,24);   // 24-12-2009
	var dateEnd = new Date(2010,0,1); 	 // 01-01-2010
	
	var dateStart2 = new Date(2008,11,25);   // 25-12-2007
	var dateEnd2 = new Date(2008,11,25); 	 // 25-12-2007
	
	for (var f=0; f < document.forms.length; f++) {
		var form = isInputForm(document.forms[f]);
		
		if (!form)
			continue;
		
		form.onsubmit = function (e) {
			e = (e) ? e : ((window.event) ? window.event : "");
			
			var selected = getSelectedDate();
			var ret = false;
			var ret2 = false;
			
			if (typeof selected == 'object')
				ret = !isInPeriod(dateStart, dateEnd, selected);
			
			if (!ret)
				alert('Information regarding services over the Christmas period will be available in mid-December.');
				
			if (typeof selected == 'object')
				ret2 = !isInPeriod(dateStart2, dateEnd2, selected);
			
			if (!ret2)
				alert('On Christmas day, 25 December, no public transport is operating in London.');
				
				
			if(!ret2){
				ret = false
			}
			
			e.returnValue = ret;
			return ret;
		}
	}	
	
}

function getSelectedDate() {
	var dateSelect = new Date();
		dateSelect.setHours(0);
		dateSelect.setMinutes(0);
		dateSelect.setSeconds(0);
		dateSelect.setMilliseconds(0);

		var itdDateDay = document.getElementById('choose-date') || document.getElementById('itdDateDay');
		var itdDateYearMonth = document.getElementById('choose-month') || document.getElementById('itdDateYearMonth');
		var itdDate = document.getElementById('depart-date') || document.getElementById('itdDate');
		var itdDateMonth = document.getElementById('itdDateMonth');
		var itdDateYear = document.getElementById('itdDateYear');		

		if (itdDateDay && itdDateMonth && itdDateYear) {
			dateSelect.setFullYear(parseInt(itdDateYear.value.toString()));
			dateSelect.setMonth(parseInt(itdDateMonth.value)-1);
			dateSelect.setDate(itdDateDay.value.toString());
		} else if (itdDateDay && itdDateYearMonth) {
			dateSelect.setFullYear(itdDateYearMonth.value.toString().substring(0, 4));
			dateSelect.setMonth((itdDateYearMonth.value.toString().substring(4, 6)-1));
			dateSelect.setDate(itdDateDay.value.toString());
		} else if (itdDate) {
			// e.g. 20071102
			dateSelect.setFullYear(itdDate.value.toString().substring(0, 4));
			dateSelect.setMonth((itdDate.value.toString().substring(4, 6)-1));
			dateSelect.setDate(itdDate.value.toString().substring(6, 8));
		} else {
			dateSelect = null;
		}
		
	return dateSelect;
}

function isInputForm(form)
{
	var itdDateDay = document.getElementById('choose-date') || document.getElementById('itdDateDay');
	var itdDate = document.getElementById('depart-date') || document.getElementById('itdDate');
	var itdDateMonth = document.getElementById('itdDateMonth');
	
	for (var i=0; i < form.length; i++) {
		if ((form[i].name == 'type_origin' || form[i].name == 'type_destination' || form[i].name == 'type_dm') && (itdDateDay || itdDate))
			return form;
		else if ((form[i].name == 'type_origin' || form[i].name == 'type_destination' || form[i].name == 'type_dm') && itdDateMonth)
			return form;
	}
	
	return null;
}

function isInPeriod(startDate, endDate, selectedDate)
{
	tmpStartDate = Date.parse(startDate);
	tmpEndDate = Date.parse(endDate);
	tmpSelectedDate = Date.parse(selectedDate);

	return (tmpStartDate <= tmpSelectedDate && tmpEndDate >= tmpSelectedDate);
}

attachEventListener(window, 'load', initHandler, false);
