var showingCal1=false;
var showingCal2=false;
var weekFares = new Array(
//new Array(36,2008,1),
//new Array(37,2008,1),
new Array(38,2008,1),
new Array(39,2008,1),
new Array(40,2008,1),
new Array(41,2008,1),
new Array(42,2008,1),
new Array(43,2008,1),
new Array(44,2008,0),
new Array(45,2008,0),
new Array(46,2008,0),
new Array(47,2008,0),
new Array(48,2008,0),
new Array(49,2008,0),
new Array(50,2008,0),
new Array(51,2008,0),
new Array(52,2008,1),
new Array(1,2009,1),
new Array(2,2009,0),
new Array(3,2009,0),
new Array(4,2009,0),
new Array(5,2009,0),
new Array(6,2009,0),
new Array(7,2009,0),
new Array(8,2009,0),
new Array(9,2009,0),
new Array(10,2009,0),
new Array(11,2009,0),
new Array(12,2009,0),
new Array(13,2009,0),
new Array(14,2009,0),
new Array(15,2009,1),
new Array(16,2009,0),
new Array(17,2009,1),
new Array(18,2009,1),
new Array(19,2009,0),
new Array(20,2009,0),
new Array(21,2009,0),
new Array(22,2009,0),
new Array(23,2009,1),
new Array(24,2009,0),
new Array(25,2009,0),
new Array(26,2009,0),
new Array(27,2009,2),
new Array(28,2009,2),
new Array(29,2009,2),
new Array(30,2009,2),
new Array(31,2009,2),
new Array(32,2009,2),
new Array(33,2009,2),
new Array(34,2009,2),
new Array(35,2009,2),
new Array(36,2009,2),
new Array(37,2009,1),
new Array(38,2009,1),
new Array(39,2009,1),
new Array(40,2009,1),
new Array(41,2009,1),
new Array(42,2009,1),
new Array(43,2009,1),
new Array(44,2009,0),
new Array(45,2009,0),
new Array(46,2009,0),
new Array(47,2009,0),
new Array(48,2009,0),
new Array(49,2009,0),
new Array(50,2009,0),
new Array(51,2009,0),
new Array(52,2009,1),
new Array(1,2010,1)
);

function positionInfo(object) {

  var p_elm = object;

  this.getElementLeft = getElementLeft;
  function getElementLeft() {
    var x = 0;
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    while (elm != null) {
      x+= elm.offsetLeft;
      elm = elm.offsetParent;
    }
    return parseInt(x);
  }

  this.getElementWidth = getElementWidth;
  function getElementWidth(){
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    return parseInt(elm.offsetWidth);
  }

  this.getElementRight = getElementRight;
  function getElementRight(){
    return getElementLeft(p_elm) + getElementWidth(p_elm);
  }

  this.getElementTop = getElementTop;
  function getElementTop() {
    var y = 0;
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    while (elm != null) {
      y+= elm.offsetTop;
      elm = elm.offsetParent;
    }
    return parseInt(y);
  }

  this.getElementHeight = getElementHeight;
  function getElementHeight(){
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    return parseInt(elm.offsetHeight);
  }

  this.getElementBottom = getElementBottom;
  function getElementBottom(){
    return getElementTop(p_elm) + getElementHeight(p_elm);
  }
}

function CalendarControl(taal, id) {

  var calendarId;
  if (id == 1) {
  	calendarId = 'CalendarControl';
  }else{
  	calendarId = 'CalendarControl2';
  }
  var currentYear = 0;
  var currentMonth = 0;
  var currentDay = 0;

  var selectedYear = 0;
  var selectedMonth = 0;
  var selectedDay = 0;

  var months;
  if(taal=="nl"){
   	 months= ['Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December'];
  }
  if(taal=="de"){
   	 months= ['Januar','Februar','Martz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
  }
  var dateField = null;

  function getProperty(p_property){
    var p_elm = calendarId;
    var elm = null;

    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    if (elm != null){
      if(elm.style){
        elm = elm.style;
        if(elm[p_property]){
          return elm[p_property];
        } else {
          return null;
        }
      } else {
        return null;
      }
    }
  }

  function setElementProperty(p_property, p_value, p_elmId){
    var p_elm = p_elmId;
    var elm = null;

    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    if((elm != null) && (elm.style != null)){
      elm = elm.style;
      elm[ p_property ] = p_value;
    }
  }

  function setProperty(p_property, p_value) {
    setElementProperty(p_property, p_value, calendarId);
  }

  function getDaysInMonth(year, month) {
    return [31,((!(year % 4 ) && ( (year % 100 ) || !( year % 400 ) ))?29:28),31,30,31,30,31,31,30,31,30,31][month-1];
  }

  function getDayOfWeek(year, month, day) {
    var date = new Date(year,month-1,day)
    return date.getDay();
  }

  this.clearDate = clearDate;
  function clearDate() {
    dateField.value = '';
    hide();
  }

  this.setDate = setDate;
  function setDate(year, month, day) {
  	/*
    if (dateField) {
      if (month < 10) {month = "0" + month;}
      if (day < 10) {day = "0" + day;}

      var dateString = month+"-"+day+"-"+year;
      dateField.value = dateString;
      hide();
    }
    */
	if (calendarId == 'CalendarControl') {
		fillYears(year, month, day);
		fillYears2("init");
	}else{
		fillYears2(year, month, day);
	}
	hide();
    return;
  }

  this.changeMonth = changeMonth;
  function changeMonth(change) {
    currentMonth += change;
    currentDay = 0;
    if(currentMonth > 12) {
      currentMonth = 1;
      currentYear++;
    } else if(currentMonth < 1) {
      currentMonth = 12;
      currentYear--;
    }

    calendar = document.getElementById(calendarId);
    calendar.innerHTML = calendarDrawTable();
  }

  this.changeYear = changeYear;
  function changeYear(change) {
    currentYear += change;
    currentDay = 0;
    calendar = document.getElementById(calendarId);
    calendar.innerHTML = calendarDrawTable();
  }

  function getCurrentYear() {
    var year = new Date().getYear();
    if(year < 1900) year += 1900;
	if(year<2008){
		year=2008;
	}
    return year;
  }

  function getCurrentMonth() {
  	month=new Date().getMonth() + 1;
	if(month<9&&getCurrentYear()==2008){
		month=9;
	}
    return month;
  } 

  function getCurrentDay() {
  	day=new Date().getDate();
	if(getCurrentMonth()<9&&getCurrentYear()==2008){
		day=1;
	}
    return day;
  }
  function getCss(year,month,day){
  	year=year+"";
	month=month+"";
	if(month.length==1){
		month="0"+month;
	}
	day=day+"";
	if(day.length==1){
		day="0"+day;
	}
  	checkd = parseInt(year+month+day);

	for(gci=0;gci<middenseizoen.length;gci++){

		if(middenseizoen[gci][0]<=checkd && middenseizoen[gci][1]>=checkd){
			return "midden";
		}
	}
	for(gci=0;gci<hoogseizoen.length;gci++){

		if(hoogseizoen[gci][0]<=checkd && hoogseizoen[gci][1]>=checkd){
			if(checkd>=20100716 && checkd<=20100822){
				return "zomer";
			}else{
				return "hoog";
			}
		}
	}

    return "laag";        
  }
  function calendarDrawTable() {

    var dayOfMonth = 1;
    var validDay = 0;
    var startDayOfWeek = getDayOfWeek(currentYear, currentMonth, dayOfMonth);
    var daysInMonth = getDaysInMonth(currentYear, currentMonth);
    var css_class = null; //CSS class for each day
    var table = "<table cellspacing='0' cellpadding='0' border='0'>";
    table = table + "<tr class='header'>";
    table = table + "  <td colspan='2' class='previous'>";
	if (!(currentYear == 2008 && currentMonth == 9)) {
		table = table + "<a href='javascript:changeCalendarControlMonth(-1,\""+calendarId+"\");'>&lt;</a>";
	}
	table = table + "</td>";
    table = table + "  <td colspan='3' class='title'>" + months[currentMonth-1] + "<br>" + currentYear + "</td>";
	table = table + "  <td colspan='2' class='next'>";
    if (!(currentYear == 2010 && currentMonth == 12)) {
		table = table + "<a href='javascript:changeCalendarControlMonth(1,\""+calendarId+"\");'>&gt;</a>";
	}
	table = table + "</td>";
    table = table + "</tr>";
    table = table + "<tr><th>Z</th><th>M</th><th>D</th><th>W</th><th>D</th><th>V</th><th>Z</th></tr>";

    for(var week=0; week < 6; week++) {
      table = table + "<tr>";
      for(var dayOfWeek=0; dayOfWeek < 7; dayOfWeek++) {
	  	if (calendarId == 'CalendarControl') {
			if (week == 0 && startDayOfWeek == dayOfWeek) {
				validDay = 1;
			}
			else 
				if (validDay == 1 && dayOfMonth > daysInMonth) {
					validDay = 0;
				}
			
			if (validDay) {
				css_class = getCss(currentYear, currentMonth, dayOfMonth);
				if ((dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth) && (css_class != "")) {
					css_class += ' current';
				}
				tdat = new Date(currentYear, currentMonth - 1, dayOfMonth);
				if (
					(!(currentYear == 2009 && currentMonth == 7 && dayOfMonth > 2) && !(currentYear == 2009 && currentMonth == 8 && dayOfMonth < 14)) &&
					(!(currentYear == 2010 && currentMonth == 7 && dayOfMonth > 15) && !(currentYear == 2010 && currentMonth == 8 && dayOfMonth < 23))
					) {
				
					table = table + "<td><a class='" + css_class + " active' href=\"javascript:setCalendarControlDate(" + currentYear + "," + currentMonth + "," + dayOfMonth + ",'"+calendarId+"')\">" + dayOfMonth + "</a></td>";
				}
				else {
					if (tdat.getDay() == 5 || tdat.getDay() == 1) {
						table = table + "<td><a class='" + css_class + " active' href=\"javascript:setCalendarControlDate(" + currentYear + "," + currentMonth + "," + dayOfMonth + ",'"+calendarId+"')\">" + dayOfMonth + "</a></td>";
					}
					else {
						table = table + "<td><a class='" + css_class + "' href=\"javascript:void(0);\">" + dayOfMonth + "</a></td>";
					}
				}

				dayOfMonth++;
			}
			else {
				table = table + "<td class='empty'>&nbsp;</td>";
			}
		}
		else {
			if (week == 0 && startDayOfWeek == dayOfWeek) {
				validDay = 1;
			}
			else 
				if (validDay == 1 && dayOfMonth > daysInMonth) {
					validDay = 0;
				}
				
			
			if (validDay) {
				//alert("cal" + min2.getDate());
				if ((currentYear> min2.getFullYear())||(currentYear >= min2.getFullYear() && currentMonth > min2.getMonth() + 1)||(currentYear >= min2.getFullYear() && currentMonth >= min2.getMonth() + 1 && dayOfMonth >= min2.getDate())) {
					css_class = getCss(currentYear, currentMonth, dayOfMonth);
					/*if ((dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth) && (css_class != "")) {
					alert("2current");
						css_class += ' current';
					}
					table = table + "<td><a class='" + css_class + " active' href=\"javascript:setCalendarControlDate(" + currentYear + "," + currentMonth + "," + dayOfMonth + ",'"+calendarId+"')\">" + dayOfMonth + "</a></td>";
*/
					if ((dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth) && (css_class != "")) {
					css_class += ' current';
				}
				tdat = new Date(currentYear, currentMonth - 1, dayOfMonth);
				if (
					(!(currentYear == 2009 && currentMonth == 7 && dayOfMonth > 2) && !(currentYear == 2009 && currentMonth == 8 && dayOfMonth < 14))
					&&
					(!(currentYear == 2010 && currentMonth == 7 && dayOfMonth > 15) && !(currentYear == 2010 && currentMonth == 8 && dayOfMonth < 23))
				) {
				
					table = table + "<td><a class='" + css_class + " active' href=\"javascript:setCalendarControlDate(" + currentYear + "," + currentMonth + "," + dayOfMonth + ",'"+calendarId+"')\">" + dayOfMonth + "</a></td>";
				}
				else {
					if (tdat.getDay() == 5 || tdat.getDay() == 1) {
						table = table + "<td><a class='" + css_class + " active' href=\"javascript:setCalendarControlDate(" + currentYear + "," + currentMonth + "," + dayOfMonth + ",'"+calendarId+"')\">" + dayOfMonth + "</a></td>";
					}
					else {
						table = table + "<td><a class='" + css_class + "' href=\"javascript:void(0);\">" + dayOfMonth + "</a></td>";
					}
				}
				}else{
					table = table + "<td class='empty'>&nbsp;</td>";
				}
				dayOfMonth++;
			}
			else {
				table = table + "<td class='empty'>&nbsp;</td>";
			}
		}
      }
      table = table + "</tr>";
    }

    table = table + "<tr class='header'><th colspan='7' style='padding: 3px;'><a href='javascript:hideCalendarControl();'>Sluiten</a></td></tr>";
    table = table + "</table>";

    return table;
  }

  this.show = show;
  function show(field) {
    can_hide = 0;
  
    // If the calendar is visible and associated with
    // this field do not do anything.
    if (dateField == field) {
      return;
    } else {
      dateField = field;
    }
	/*
    if(dateField) {
      try {
        var dateString = new String(dateField.value);
        var dateParts = dateString.split("-");
        
        selectedMonth = parseInt(dateParts[0],10);
        selectedDay = parseInt(dateParts[1],10);
        selectedYear = parseInt(dateParts[2],10);
      } catch(e) {}
    }
	*/
	try {
		if (calendarId == "CalendarControl") {
			selectedMonth = parseInt(document.getElementById('aankomstM').options[document.getElementById('aankomstM').selectedIndex].value);
			selectedDay = parseInt(document.getElementById('aankomstD').options[document.getElementById('aankomstD').selectedIndex].value);
			selectedYear = parseInt(document.getElementById('aankomstJ').options[document.getElementById('aankomstJ').selectedIndex].value);
		}else{
			selectedMonth = parseInt(document.getElementById('vertrekM').options[document.getElementById('vertrekM').selectedIndex].value);
			selectedDay = parseInt(document.getElementById('vertrekD').options[document.getElementById('vertrekD').selectedIndex].value);
			selectedYear = parseInt(document.getElementById('vertrekJ').options[document.getElementById('vertrekJ').selectedIndex].value);
		}
	} catch(e) {}
    if (!(selectedYear && selectedMonth && selectedDay)) {
      selectedMonth = getCurrentMonth();
      selectedDay = getCurrentDay();
      selectedYear = getCurrentYear();
    }

    currentMonth = selectedMonth;
    currentDay = selectedDay;
    currentYear = selectedYear;

    if(document.getElementById){
      calendar = document.getElementById(calendarId);
      calendar.innerHTML = calendarDrawTable(currentYear, currentMonth);

      setProperty('display', 'block');

      var fieldPos = new positionInfo(dateField);
      var calendarPos = new positionInfo(calendarId);

      var x = fieldPos.getElementLeft();
      var y = fieldPos.getElementBottom();

      setProperty('left', x + "px");
      setProperty('top', y + "px");
 
      if (document.all) {
        setElementProperty('display', 'block', 'CalendarControlIFrame');
        setElementProperty('left', x + "px", 'CalendarControlIFrame');
        setElementProperty('top', y + "px", 'CalendarControlIFrame');
        setElementProperty('width', calendarPos.getElementWidth() + "px", 'CalendarControlIFrame');
        setElementProperty('height', calendarPos.getElementHeight() + "px", 'CalendarControlIFrame');
      }
    }
  }

  this.hide = hide;
  function hide() {
    if(dateField) {
      setProperty('display', 'none');
      setElementProperty('display', 'none', 'CalendarControlIFrame');
      dateField = null;
	  showingCal1=false;
	  showingCal2=false;
    }
  }

  this.visible = visible;
  function visible() {
    return dateField
  }

  this.can_hide = can_hide;
  var can_hide = 0;
}

var calendarControl = new CalendarControl(taal,1);
var calendarControl2 = new CalendarControl(taal,2);

function showCalendarControl(textField,calid) {
  // textField.onblur = hideCalendarControl;
  if (calid == 1) {
  	if(calendarControl2.visible()){
		hideCalendarControl(2);
	}
  	if (!showingCal1) {
		showingCal1 = true;
  		calendarControl.show(textField);
  		
  	}
  	else {
  		hideCalendarControl(1);
  	}
  }else{
  	if(calendarControl.visible()){
		hideCalendarControl(1);
	}
  	if (!showingCal2) {
		showingCal2 = true;
  		calendarControl2.show(textField);
  		
  	}
  	else {
  		hideCalendarControl(2);
  	}
	
  }
  
}

function clearCalendarControl() {
  calendarControl.clearDate();
  calendarControl2.clearDate();
}

function hideCalendarControl(calid) {
	if(calid==null || calid==undefined){
		if (calendarControl.visible()) {
			calendarControl.hide();
		}
		showingCal1 = false;
		if (calendarControl2.visible()) {
			calendarControl2.hide();
		}
		showingCal2 = false;
	}else if (calid == 1) {
		if (calendarControl.visible()) {
			calendarControl.hide();
		}
		showingCal1 = false;
	}else{
		if (calendarControl2.visible()) {
			calendarControl2.hide();
		}
		showingCal2 = false;
	}
}

function setCalendarControlDate(year, month, day,id) {
  if (id == 'CalendarControl') {
  calendarControl.setDate(year, month, day);
  }else{
		calendarControl2.setDate(year, month, day);
	}
}

function changeCalendarControlYear(change,id) {
  if (id == 'CalendarControl') {
  calendarControl.changeYear(change);
  }else{
		calendarControl2.changeYear(change);
	}
}

function changeCalendarControlMonth(change,id) {
	if (id == 'CalendarControl') {
		calendarControl.changeMonth(change);
	}else{
		calendarControl2.changeMonth(change);
	}
}


