/*****************************************************************************
		Calendar.js                                  
*****************************************************************************
	Kalenderfunktionen: Neues default design
 	Ausgangspunkt: Kalender Getsdesign       		   
 	Todo: globale Variablen eliminieren und Objektorientierung mit Daten-Kapselung 
	weiter vorantreiben
*****************************************************************************/
//  Anzahl der Tage eines Monats ausgeben 
function calc_days (month, year)  {
	theDaysofMonth = new Array (31,28,31,30,31,30,31,31,30,31,30,31)
		
	number = theDaysofMonth[month-1];
	if (month == 2 && ist_schaltjahr(year)) return (29);
	return (number);
}			


function fill_feiertage (year) {
	ot = calc_ostertermin (year);

	feiertage[0] = year*10000 + 106;    //  Hl. 3 Könige
	feiertage[1] = year*10000 + 801;  //  Nationalfeiertag
	feiertage[2] = year*10000 + 1225;  //  1. Weihnachtstag
	feiertage[3] = year*10000 + 1226;  //  2. Weihnachtstag
	feiertage[4] = calc_datum_diff (ot,-46);  //  Aschermittwoch
	feiertage[5] = calc_datum_diff (ot,-2);  //  Karfreitag
	feiertage[6] = ot;   //  Ostersonntag
	feiertage[7] = calc_datum_diff (ot,1);  //  Ostermontag
	feiertage[8] = calc_datum_diff (ot,39);  //  Christi Himmelfahrt		
	feiertage[9] = calc_datum_diff (ot,49);  //  Pfingstsonntag
	feiertage[10] = calc_datum_diff (ot,50);  //  Pfingstmontag
	feiertage[11] = 
	 (ot,60);  //  Fronleichnam
	feiertage[12] = year*10000 + 101;    //  Neujahr
	feiertage[13] = year*10000 + 102;    //  Bertoldstag
}
	
function calc_ostertermin (jahr) {
	var om, otx, r1, r2, r3, r4, r5;

	r1 = jahr % 19;
	r2 = jahr % 4;
	r3 = jahr % 7;
	r4 = (19 * r1 + 24) % 30;
	r5 = (6 * r4 + 4 * r3 + 2 * r2 + 5) % 7;

//  Ostersonntag = 22.März + r4 + r5
//  wenn jedoch 26. April resultiert, dann Korrektur auf 19. April
//  wenn jedoch 25. April resultiert und r1 > 10, dann Korrektur auf 18. April

	otx = 22 + r4 + r5;
	om = 3;
	if (otx > 31)
	{ otx -= 31;
		om ++; 
	}
	if (otx == 26 && om == 4) otx = 19;
	if (otx == 25 && om == 4 && r1 > 10) otx = 18;

	return (jahr*10000 + om*100 + otx);
}
//  Prüfen, ob es sich um einen Feiertag handelt (z.Z. nur in deutsch)
function ist_feiertag (date) {
	if (document.forms.kalform.lang.value != "d") return (0);
		
	for (k=0 ; k<14 ; k++) {
		if (feiertage[k] == date) return (k+1);
	}
	return (0);
}	

function ns_repairYear(thisYear) {
	if (thisYear <= 100) {
  		thisYear = String(thisYear)
  		thisYear = new Number("20"+thisYear.substring(1,3))
	  }
	return (thisYear);
}
	//  Startdatum lesen und selektiertes Datum = Startdatum setzen

function fillDays () {
	fillDaysHin (0);
	fillDaysRueck (0);
}
	
function fillDaysHin (theMonth) {

	//  wenn noch keine Selektion erfolgte, wird der 2. Kalender bei einer Vorwärtsbewegung des 1. Kalenders
	//  immer um 1 weitergeführt.

	if (theMonth == 1 && ! selH && ! selR) fillDaysRueck (1);
	/* TODO: MIN /MAX */
	if (curMonthH == MonthMin && curYearH == YearMin && theMonth < 0) return;
	if (curMonthH == MonthMax && curYearH == YearMax && theMonth > 0) return;

	if (theMonth) {
		curMonthH = curMonthH + theMonth
		if (curMonthH < 1) 
		{ 
			curMonthH += 12; 
			curYearH --; 
			fill_feiertage (curYearH);
		}
		if (curMonthH > 12) 
		{ 
			curMonthH -= 12; 
			curYearH ++; 
			fill_feiertage (curYearH);
		}
	}    

	prevMonth = curMonthH - 1;
	if (prevMonth <= 0) prevLeng = 31; else prevLeng = calc_days (prevMonth, curYearH);		
	nextMonth = curMonthH + 1;
	if (nextMonth > 12) nextLeng = 31; else nextLeng = calc_days (nextMonth, curYearH);
	curLeng = calc_days (curMonthH, curYearH);
		 		
//  den Anfang des Kalenders bestimmen
	curDateH = new Date(curYearH,curMonthH-1,1)

	weekDay = curDateH.getDay();
	if (! weekDay) weekDay = 7;
	aktDay = prevLeng - weekDay + 2;
	aktMonth = prevMonth;
	if (aktDay > prevLeng) { aktDay = aktDay - prevLeng; aktMonth = curMonthH }

	var e = document.getElementById("dd_monthsH");
	str_month = (curMonthH < 10) ? '0'+curMonthH : curMonthH; 
	for (var i = 0; i < e.length; i++) {
		if (e.options[i].value ==  String(curYearH) + str_month) {
			e.selectedIndex = i;
			break;
		}
	}
	//document.getElementById("monthNameH").selectedIndex = curMonthH-1;
//	document.getElementById("monthNameH").innerHTML = theMonths[curMonthH-1]+"&nbsp;"+curYearH
	//document.getElementById("monthNameH").innerHTML = OLT_Calendar.get_monthname(curMonthH-1)+"&nbsp;"+curYearH

	for (i=1 ; i<=6 ; i++)
	{
		for (ii=1 ; ii<=7 ; ii++)
		{
			index="c"+i+"_"+ii;
			datum = curYearH*10000 + aktMonth*100 + aktDay;
//			ft = ist_feiertag (datum);

			if (aktMonth == prevMonth || aktMonth == nextMonth)   //  nicht aktive Tageszahlen
			{
				if (ii <= 5)
					document.getElementById(index).innerHTML =  "<span class='workday_inactiv'>"+aktDay+"</span>"
				else
					document.getElementById(index).innerHTML =  "<span class='weekend_inactiv'>"+aktDay+"</span>"
			}
			
			if (aktMonth == curMonthH && (datum < datMin || datum > datMax))   //  nicht aktive Tageszahlen
			{
				document.getElementById(index).innerHTML =  "<span class='allday_inactiv'>"+aktDay+"</span>"
			}

			if (aktMonth == curMonthH && datum >= datMin && datum <= datMax)
			{
        		if (selDayH == aktDay && selMonthH == aktMonth && selYearH == curYearH)
				{
					selRowH = i;
					selColH = ii;
					setze_invers (aktDay, i, ii, 1);
					zeige_datum (selDayH, selMonthH, selYearH, 1);					
//					if (ft) document.getElementById(index).innerHTML = "<div style='border-width:1px; border-color:red; border-style:solid;'><a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+aktDay+","+i+","+ii+",1)'>"+aktDay+"</a></div>"
				}
            else
				{
					setze_normal (aktDay, i, ii, 1);
//					if (ft) document.getElementById(index).innerHTML = "<a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+aktDay+","+i+","+ii+",1)'>"+aktDay+"</a>"
        		}
     		}
			
			aktDay ++
			if (aktDay > prevLeng && aktMonth == prevMonth) { aktDay = aktDay - prevLeng; aktMonth ++ }
			if (aktDay > curLeng && aktMonth == curMonthH) { aktDay = aktDay - curLeng; aktMonth ++ }
		}
	}

}

function fillDaysRueck (theMonth) {
	if (curMonthR == MonthMin && curYearR == YearMin && theMonth < 0) return;
	if (curMonthR == MonthMax && curYearR == YearMax && theMonth > 0) return;

	if (theMonth)
	{
		curMonthR = curMonthR + theMonth
		if (curMonthR < 1) 
		{ 
			curMonthR += 12; 
			curYearR --; 
			fill_feiertage (curYearR);
		}
		if (curMonthR > 12) 
		{ 
			curMonthR -= 12; 
			curYearR ++; 
			fill_feiertage (curYearR);
		}
	}

	prevMonth = curMonthR - 1;
	if (prevMonth <= 0) prevLeng = 31; else prevLeng = calc_days (prevMonth, curYearR);		
	nextMonth = curMonthR + 1;
	if (nextMonth > 12) nextLeng = 31; else nextLeng = calc_days (nextMonth, curYearR);
	curLeng = calc_days (curMonthR, curYearR);
		 		
//  den Anfang des Kalenders bestimmen
	curDateR = new Date(curYearR,curMonthR-1,1)

	weekDay = curDateR.getDay();
	if (! weekDay) weekDay = 7;
	aktDay = prevLeng - weekDay + 2;
	aktMonth = prevMonth;
	if (aktDay > prevLeng) { aktDay = aktDay - prevLeng; aktMonth = curMonthR }
	
	var e = document.getElementById("dd_monthsR");
	str_month = (curMonthR < 10) ? '0'+curMonthR : curMonthR; 
	for (var i = 0; i < e.length; i++) {
		if (e.options[i].value ==  String(curYearR) + str_month) {
			e.selectedIndex = i;
			break;
		}
	}
//	document.getElementById("monthNameR").innerHTML = theMonths[curMonthR-1]+"&nbsp;"+curYearR
//	document.getElementById("monthNameR").innerHTML = get_monatsname(curMonthR-1)+"&nbsp;"+curYearR

	for (var i=1 ; i<=6 ; i++)
	{
		for (var ii=1 ; ii<=7 ; ii++)
		{
			index="d"+i+"_"+ii;
			datum = curYearR*10000 + aktMonth*100 + aktDay;
//			ft = ist_feiertag (datum);

			if (aktMonth == prevMonth || aktMonth == nextMonth)   //  nicht aktive Tageszahlen
			{
				if (ii <= 5)
					document.getElementById(index).innerHTML =  "<span class='workday_inactiv'>"+aktDay+"</span>"
				else
					document.getElementById(index).innerHTML =  "<span class='weekend_inactiv'>"+aktDay+"</span>"
			}

			if (aktMonth == curMonthR && (datum < datMin || datum > datMax))   //  nicht aktive Tageszahlen
			{
				document.getElementById(index).innerHTML =  "<span class='allday_inactiv'>"+aktDay+"</span>"
			}
			if (aktMonth == curMonthR && datum >= datMin && datum <= datMax)
			{
        		
        		/*
        		alert('selDayR = ' + selDayR);
        		alert('aktDay = ' + aktDay);
        		*/
        		if (selDayR == aktDay && selMonthR == aktMonth && selYearR == curYearR)
				{
					selRowR = i;
					selColR = ii;
					setze_invers (aktDay, i, ii, 2);
					zeige_datum (selDayR, selMonthR, selYearR, 2);					
//					if (ft) document.getElementById(index).innerHTML = "<div style='border-width:1px; border-color:red; border-style:solid;'><a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+aktDay+","+i+","+ii+",1)'>"+aktDay+"</a></div>"
				}
            else
				{
					setze_normal (aktDay, i, ii, 2);
//					if (ft) document.getElementById(index).innerHTML = "<a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+aktDay+","+i+","+ii+",1)'>"+aktDay+"</a>"
        		}
     		}
			
			aktDay ++
			if (aktDay > prevLeng && aktMonth == prevMonth) { aktDay = aktDay - prevLeng; aktMonth ++ }
			if (aktDay > curLeng && aktMonth == curMonthR) { aktDay = aktDay - curLeng; aktMonth ++ }
		}
	}

}

function zeige_datum (day, month, year, typ) {
	dayString = String (day);
	dayString = dayString.length == 1 ? "0"+dayString : dayString;

	monthString = String (month);
	monthString = monthString.length == 1 ? "0"+monthString : monthString;

	yearString = String (ns_repairYear(year));
	
	if (typ == 1)
		document.getElementById("div_hdate").innerHTML = dayString+"."+monthString+"."+yearString;
		
	else
		document.getElementById("div_rdate").innerHTML = dayString+"."+monthString+"."+yearString;
}

function selectDate (theDay,row,col,typ) {
	if (typ == 1)
	{
		if (selMonthH == curMonthH && selYearH == curYearH)
			setze_normal (selDayH,selRowH,selColH,typ)   //  bisherige Selection löschen
		setze_invers (theDay,row,col,typ);
	
		selRowH = row;
		selColH = col;
		selDayH = theDay;
		selMonthH = curMonthH;
		selYearH = curYearH;
	
		zeige_datum (selDayH, selMonthH, selYearH,1);					
	
		selH = 1;	
	}
	else
	{
		if (selMonthR == curMonthR && selYearR == curYearR)
			setze_normal (selDayR,selRowR,selColR,typ)   //  bisherige Selection löschen
		setze_invers (theDay,row,col,typ);
	
		selRowR = row;
		selColR = col;
		selDayR = theDay;
		selMonthR = curMonthR;
		selYearR = curYearR;
	
		zeige_datum (selDayR, selMonthR, selYearR,2);					
		
		selR = 1;
	}

}

//function fillMonths(curMonthH, curYearH, curMonthR, curYearR) {
function fillMonths(MonthMin, YearMin) {
	/* Hinflug Monate */
	var dropdown = '<select class="dd_month" id="dd_monthsH" name="dd_monthsH" onchange="OLT_Calendar.change_month(1)">'
	var month = MonthMin;
	var year = YearMin;
	
	for (var i = MonthMin; i < (MonthMin+12); i++) {
		if (month >12) {
			month = 1;
			year++;
		}
		str_month = (month < 10) ? '0'+month : month; 
		dropdown += '<option value="' + String(year) + str_month + '">' + OLT_Calendar.get_monthname(month -1) + ' ' +  String(year) +  '</option>'; 
		month++;
	}
	dropdown += '</select>';
	document.getElementById("monthNameH").innerHTML = dropdown;
	
	/* Rückflug Monate */
	var dropdown = '<select class="dd_month" id="dd_monthsR" name="dd_monthsR" onchange="OLT_Calendar.change_month(2)" >'
	var month = MonthMin;
	var year = YearMin;
	for (var i = MonthMin; i < (MonthMin+24); i++) {
		if (month >12) {
			month = 1;
			year++;
		}
		str_month = (month < 10) ? '0'+month : month; 
		dropdown += '<option value="' + String(year) + String(str_month) + '">' + OLT_Calendar.get_monthname(month -1) + ' ' +  String(year) +  '</option>'; 
		month++;
	}
	dropdown += '</select>';
	document.getElementById("monthNameR").innerHTML = dropdown;
}

function setze_normal (theDay,row,col,typ) {
	if (typ == 1)
	{
		datum = curYearH*10000 + curMonthH*100 + theDay
		index="c"+row+"_"+col;
	}
	else
	{
		datum= curYearR*10000 + curMonthR*100 + theDay
		index="d"+row+"_"+col;
	}
	ft = ist_feiertag (datum);

	if (ft)
	{	
		if (ii <= 5)
			document.getElementById(index).innerHTML = "<span class='workday_activ'><a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+theDay+","+row+","+col+","+typ+")'>"+theDay+"</a></span>"
		else
			document.getElementById(index).innerHTML = "<span class='weekend_activ'><a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+theDay+","+row+","+col+","+typ+")'>"+theDay+"</a></span>"
	}
	else
	{	
		if (ii <= 5)
			document.getElementById(index).innerHTML = "<span class='workday_activ'><a href='javascript:selectDate("+theDay+","+row+","+col+","+typ+")'>"+theDay+"</a></span>"
		else
			document.getElementById(index).innerHTML = "<span class='weekend_activ'><a href='javascript:selectDate("+theDay+","+row+","+col+","+typ+")'>"+theDay+"</a></span>"
	}
}


function setze_invers (theDay,row,col,typ) {
	if (typ == 1)
	{
		datum = curYearH*10000 + curMonthH*100 + theDay
		index="c"+row+"_"+col;
	}
	else
	{
		datum= curYearR*10000 + curMonthR*100 + theDay
		index="d"+row+"_"+col;	
	}
	ft = ist_feiertag (datum);

	if (ft)
		document.getElementById(index).innerHTML = "<div style='border-width:1px; border-color:red; border-style:solid;'><a style='text-decoration:underline' title='"+ftname[ft-1]+"'href='javascript:selectDate("+theDay+","+row+","+col+","+typ+")'>"+theDay+"</a></div>"
	else
		document.getElementById(index).innerHTML = "<div style='border-width:1px; border-color:red; border-style:solid;'><a href='javascript:selectDate("+theDay+","+row+","+col+","+typ+")'>"+theDay+"</a></div>"
}

function cdIE6Hack(sts)
{
	if(navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('MSIE 6') > -1)
	{			// IFrame Hack for IE6
		var e = document.getElementById('ifie6hack');
		if(e){
			var zindex = OLT_Calendar.element.currentStyle.zIndex;
			
			if(zindex > 0) {
				zindex = zindex - 1;
			}
			
			with (e.style){
				position	=	'absolute';
				left			=	OLT_Calendar.element.currentStyle.left;
				top				=	OLT_Calendar.element.currentStyle.top;
				zIndex			=	zindex;
				width     = OLT_Calendar.element.offsetWidth;
				height    = OLT_Calendar.element.offsetHeight;
				filter		=	'Alpha(opacity=0)';
			}

			if(sts==true) e.style.display='';
			else e.style.display='none';
		}
	}
}


/* ab hier rededigned */
var OLT_Calendar = (function() {
	/* hier die privaten statischen methoden */
	return function(element, options) {
		OLT_Calendar.monthnames = options.monthnames || new Array ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
		OLT_Calendar.departureField = options.departureField;
		OLT_Calendar.returnField = options.returnField;
		OLT_Calendar.element =  document.getElementById(element);
		this.image_dir = options.image_dir || String("images/calendar");
		OLT_Calendar.element.innerHTML = get_html_template(this.image_dir);

		this.mindate = options.mindate || getFmtDate("yyyymmdd"); // options.startdate;
		this.maxdate = options.maxdate || String(parseInt(options.startdate) + 10000);

		this.weekdays = options.weekdays_short || new Array("mo","tu","mi","do","fr","sa","so"); 
		this.initialize (options.startdate, options.enddate, this.mindate, this.maxdate);
		this.set_weekdays(this.weekdays);
		this.set_text('apply', options.text_apply);
		this.set_text('hinflug', options.text_outbound_flight);
		this.set_text('rueckflug', options.text_return_flight);
		OLT_Calendar.hide();
	}
})();

OLT_Calendar.prototype = {
	set_weekdays: function (weekdays) {
		for (var i = 1; i <= 2; i++) { 
			var weekday = document.getElementById('mo' +String(i));
			weekday.innerHTML = weekdays[0];
			
			var weekday = document.getElementById('di' +String(i));
			weekday.innerHTML = weekdays[1];
			
			var weekday = document.getElementById('mi' +String(i));
			weekday.innerHTML = weekdays[2];
			
			var weekday = document.getElementById('do' +String(i));
			weekday.innerHTML = weekdays[3];
			
			var weekday = document.getElementById('fr' +String(i));
			weekday.innerHTML = weekdays[4];
			
			var weekday = document.getElementById('sa' +String(i));
			weekday.innerHTML = weekdays[5];
			
			var weekday = document.getElementById('su' +String(i));
			weekday.innerHTML = weekdays[6];
		}
	},
	
	
	/*****************************************************************************
		Format der Datums Parameter: YYYYMMDD
	*****************************************************************************/
	initialize: function (startdate, enddate, mindate, maxdate) {
		//theMonths = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember")
		//theDays   = new Array("mo","tu","mi","do","fr","sa","so")
		ftname =    new Array("Hl. 3 Könige","Nationalfeiertag","1. Weihnachtstag","2.Weihnachtstag","Aschermittwoch","Karfreitag","Ostersonntag","Ostermontag",
					"Christi Himmelfahrt","Pfingstsonntag","Pfingstmontag","Fronleichnam","Neujahr", "Bertoldstag")
		
		feiertage = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0)
		/*
		alert("startdate" + startdate);
		alert("enddate" + enddate);
		alert("mindate" + mindate);
		alert("maxdate" +maxdate);
		*/
		
		curDayH= parseInt(parseFloat(startdate.substring(6,8)));
		curMonthH=parseInt(parseFloat(startdate.substring(4,6)));
		curYearH=parseInt(startdate.substring(0,4));
		
		curDayR=parseInt(parseFloat(enddate.substring(6,8)));
		curMonthR=parseInt(parseFloat(enddate.substring(4,6)));
		curYearR=parseInt(enddate.substring(0,4));
		/*
		alert(enddate);
		alert('enddate.substring(6,8) = ' + enddate.substring(6,8));
		alert('curDayR1 = ' + curDayR);
		*/
		datMin=parseInt(mindate);
		datMax=parseInt(maxdate);
		
		DayMin = parseInt (datMin%100);
		YearMin = parseInt(datMin/10000);
		MonthMin = parseInt((datMin-YearMin*10000)/100);
		DayMax = parseInt (datMax%100);
		YearMax = parseInt(datMax/10000);
		MonthMax = parseInt((datMax-YearMax*10000)/100);
		//debugger;
		
		//  besonders bei den BrokerHits kann es sein, dass das Minimumdatum weit vor dem aktuellen Datum liegt
		DayMin = parseInt(parseFloat(mindate.substring(6,8)));
		MonthMin = parseInt(parseFloat(mindate.substring(4,6)));
		YearMin = parseInt(mindate.substring(0,4));
		
				
	
		if (curYearH*10000 + curMonthH*100 + curDayH < datMin)
		{
			curDayH = DayMin;
			curMonthH = MonthMin;
			curYearH = YearMin;
		}
		if (curYearR*10000 + curMonthR*100 + curDayR > datMax)
		{
			curDayR = DayMax;
			curMonthR = MonthMax;
			curYearR = YearMax;
			//alert('curDayR2 = ' + curDayR);
		}
		
		selDayH = curDayH;
		selMonthH = curMonthH;
		selYearH = curYearH;
		
	//	alert('curDayR = ' + curDayR);
		/*
		alert('enddate = ' + enddate);
		alert('mindate = ' + mindate);
		alert('maxdate = ' + maxdate);
		*/
		
		selDayR = curDayR;
		selMonthR = curMonthR;
		selYearR = curYearR;
		
		selH = selR = 0;  //  Kennzeichnung, dass noch nichts angeklickt wurde
		
		fillMonths(MonthMin, YearMin);
		fillDays ();
		fill_feiertage (curYearH);
	
	},
	set_text: function(element, text) {
		var e = document.getElementById(element);
		e.innerHTML = text;	
	}
	
};


OLT_Calendar.get_monthname = function (number) {
	return (OLT_Calendar.monthnames[number]);
};

OLT_Calendar.change_month = function(type) {
	var e; 
	var prevSelectedMonthH;
	var prevSelectedMonthR;
	
	if (type == 1) { // Abflug
		e = document.getElementById("dd_monthsH");
		str_month = (curMonthH < 10) ? '0'+curMonthH : curMonthH; 
		for (var i = 0; i < e.length; i++) {
			if (e.options[i].value ==  String(curYearH) + str_month) {
				prevSelectedMonthH = i;
				break;
			}
		}
		var firstMonth = new Number(e.options[prevSelectedMonthH].value.substring(4,6));
		var firstYear = new Number(e.options[prevSelectedMonthH].value.substring(0,4));
	}
	else { // Rückflug
		e = document.getElementById("dd_monthsR");
		str_month = (curMonthR < 10) ? '0'+curMonthR : curMonthR; 
		for (var i = 0; i < e.length; i++) {
			if (e.options[i].value ==  String(curYearR) + str_month) {
				prevSelectedMonthR = i;
				break;
			}
		}
		var firstMonth = new Number(e.options[prevSelectedMonthR].value.substring(4,6));
		var firstYear = new Number(e.options[prevSelectedMonthR].value.substring(0,4));
	}
	
	var choosenMonth =  new Number(e.value.substring(4,6));
	var choosenYear =  new Number(e.value.substring(0,4));
	
	if (choosenYear > firstYear) choosenMonth +=12;
	else if (choosenYear < firstYear) choosenMonth -=12;
	
	var diff = choosenMonth - firstMonth;
	if (type == 1) {
		fillDaysHin(diff);
		while (curYearR*100+curMonthR < curYearH*100+curMonthH) {
			fillDaysRueck(1);
		}
	}
	else {
		fillDaysRueck(diff);
	}
	
}


OLT_Calendar.close = function() {
	// Änderung für den Fall, dass nur die Monate im Selectfeld angezeigt werden, in denen Angebote existieren
	var datH = selYearH*10000 + selMonthH*100 + selDayH;
	var datR = selYearR*10000 + selMonthR*100 + selDayR;

	if (datR < datH) {
		// alert ("Das Rückreisedatum liegt vor dem Abreisedatum!");
		//alert(msg['RET_BEFORE_DEST_DATE']); // kein alert -> muss im Hauptprogramm angefangen werden
		//return (false);
	}

	datH = selYearH*100 + selMonthH;
	datR = selYearR*100 + selMonthR;
   
	/* 2 Dropdownfelder */
	if(typeof OLT_Calendar.departureField != 'string' && OLT_Calendar.departureField.length == 2) {
		var hdate1 =  document.getElementById(OLT_Calendar.departureField[0]);
		var hdate2 =  document.getElementById(OLT_Calendar.departureField[1]);
		hdate1.selectedIndex =  parseInt(parseFloat (selDayH))-1;
		for (i=0 ; i< hdate2.length ; i++) 	{
			if (parseInt(parseFloat(hdate2.options[i].value)) == datH) {
				hdate2.selectedIndex = i;
				break;
			}
		}
	
		var rdate1 =  document.getElementById(OLT_Calendar.returnField[0]);
		var rdate2 =  document.getElementById(OLT_Calendar.returnField[1]);
		rdate1.selectedIndex =  parseInt(parseFloat(selDayR))-1; 
		   
		rdate1.selectedIndex =  parseInt(parseFloat (selDayR))-1; 
	   
		for (i=0 ; i<rdate2.length ; i++) {
			if (parseInt(parseFloat(rdate2.options[i].value)) == datR) {
				rdate2.selectedIndex = i;
				break;
			}
		}
	}
	/* Freies Datumfeld */
	else {
		/* TODO: Lokalisieren: ersetzen durch format_date */ 
		var hdate =  document.getElementById(OLT_Calendar.departureField);
		var rdate =  document.getElementById(OLT_Calendar.returnField);
		
		var month = selMonthH < 10 ? '0' + selMonthH: selMonthH;
		var day =	selDayH < 10 ? '0' + selDayH: selDayH;
		hdate.value  = day + '.' + month + '.' + selYearH;
		//hdate.value  = selDayH + '.' + month + '.' + selYearH;
		var month = selMonthR < 10 ? '0' + selMonthR: selMonthR;
		var day =	selDayR < 10 ? '0' + selDayR: selDayR;
		rdate.value = day + '.' + month + '.' + selYearR;
				
	}
	OLT_Calendar.hide();
	return false;
};


OLT_Calendar.show = function() {
	cdIE6Hack(true);
	OLT_Calendar.element.style.visibility = '';
};

OLT_Calendar.hide = function() {
	OLT_Calendar.element.style.visibility = 'hidden';
	cdIE6Hack(false);
};


//init_calendar(hdate.reverse().join('') , rdate.reverse().join(''), f.mindatum.value, f.maxdatum.value);

// setze id="hinflug" auf Hinflug:
// setze id="rueckflug" auf Rückflug:
// zurueck (alt Attribut)
// weiter (alt Attribut)
// id=apply Daten übernehmen
function get_html_template(image_dir) {
	var html_template = '<form name="kalform">' +
	'<table cellspacing="0">' +
	'    <tr>' +
	'	  <td align="right"><div class="btnbox_x"><a href="_self" onclick="OLT_Calendar.hide(); return false;">X</a></div></td>'+
	'	</tr>'+
	'	</table>'+
	'<table cellspacing="0">' +
	'  <tbody>' +
	'    <tr>' +
	
	'      <td><table class="date" cellspacing="0">' +
	'        <tbody>' +
	'          <tr>' +
	'            <td class="title" id="hinflug"></td>'+
	'            <td class="date_title"><div id="div_hdate">&nbsp;</div></td>'+
	'          </tr>'+
	'        </tbody>'+
	'      </table></td>'+
	'      <td width="10">&nbsp;</td>'+
	'      <td><table class="date" cellspacing="0" border="0">'+
	'        <tbody>'+
	'          <tr>'+
	'            <td class="title" id="rueckflug">:</td>'+
	'            <td class="date_title"><div id="div_rdate"/></td>'+
	'          </tr>'+
	'        </tbody>'+
	'      </table></td>'+
	'    </tr>'+
	'   '+
	'    <tr>'+
	'      <td><table class="table" cellspacing="1" border="0">'+
	'        <tbody>'+
	'          <tr class="tr_month">'+
	'				<td class="arrow_lft">'+
	'					<a href="javascript:fillDaysHin(-1)">'+
	'						<img src="' + image_dir + '/arrowshim.gif" border="0" id="zurueck" >'+
	'						</img>'+
	'					</a>'+
	'				</td>'+
	'				<td colspan="5">'+
	'					<div id="monthNameH">&nbsp;</div>'+
	'				</td>'+
	'				<td class="arrow_rgt">&nbsp;'+
	'					<a href="javascript:fillDaysHin(1)">'+
	'						<img src="' + image_dir + '/arrowshim.gif" border="0">'+
	'						</img>'+
	'					</a>'+
	'				</td>'+
	'			</tr>'+
	'					'+
	'			<tr class="tr_weekday">'+
	'				<td id="mo1"></td>'+
	'				<td id="di1"></td>'+
	'				<td id="mi1"></td>'+
	'				<td id="do1"></td>'+
	'				<td id="fr1"></td>'+
	'				<td id="sa1"></td>'+
	'				<td id="su1"></td>'+
	'			</tr>'+
	'			<tr>'+
	'				<td class="td_workday"><div id="c1_1"></div></td>'+
	'			    <td class="td_workday"><div id="c1_2"></div></td>'+
	'			    <td class="td_workday"><div id="c1_3"></div></td>'+
	'			    <td class="td_workday"><div id="c1_4"></div></td>'+
	'			    <td class="td_workday"><div id="c1_5"></div></td>'+
	'			    <td class="td_weekend"><div id="c1_6"></div></td>'+
	'			    <td class="td_weekend"><div id="c1_7"></div></td>'+
	'			</tr>'+
	'				<tr>'+
	'		       		<td class="td_workday"><div id="c2_1"></div></td>'+
	'		       		<td class="td_workday"><div id="c2_2"></div></td>'+
	'		       		<td class="td_workday"><div id="c2_3"></div></td>'+
	'		       		<td class="td_workday"><div id="c2_4"></div></td>'+
	'		       		<td class="td_workday"><div id="c2_5"></div></td>'+
	'		       		<td class="td_weekend"><div id="c2_6"></div></td>'+
	'		       		<td class="td_weekend"><div id="c2_7"></div></td>'+
	'				</tr>'+
	'				<tr>'+
	'		       		<td class="td_workday"><div id="c3_1"></div></td>'+
	'		       		<td class="td_workday"><div id="c3_2"></div></td>'+
	'		       		<td class="td_workday"><div id="c3_3"></div></td>'+
	'		       		<td class="td_workday"><div id="c3_4"></div></td>'+
	'		       		<td class="td_workday"><div id="c3_5"></div></td>'+
	'		       		<td class="td_weekend"><div id="c3_6"></div></td>'+
	'		       		<td class="td_weekend"><div id="c3_7"></div></td>'+
	'				</tr>'+
	'				<tr>'+
	'		       		<td class="td_workday"><div id="c4_1"></div></td>'+
	'		       		<td class="td_workday"><div id="c4_2"></div></td>'+
	'		       		<td class="td_workday"><div id="c4_3"></div></td>'+
	'		       		<td class="td_workday"><div id="c4_4"></div></td>'+
	'		       		<td class="td_workday"><div id="c4_5"></div></td>'+
	'		       		<td class="td_weekend"><div id="c4_6"></div></td>'+
	'		       		<td class="td_weekend"><div id="c4_7"></div></td>'+
	'				</tr>'+
	'				<tr>'+
	'		       		<td class="td_workday"><div id="c5_1"></div></td>'+
	'		       		<td class="td_workday"><div id="c5_2"></div></td>'+
	'		       		<td class="td_workday"><div id="c5_3"></div></td>'+
	'		       		<td class="td_workday"><div id="c5_4"></div></td>'+
	'		       		<td class="td_workday"><div id="c5_5"></div></td>'+
	'		       		<td class="td_weekend"><div id="c5_6"></div></td>'+
	'		       		<td class="td_weekend"><div id="c5_7"></div></td>'+
	'				</tr>'+
	'				<tr>'+
	'		       		<td class="td_workday"><div id="c6_1"></div></td>'+
	'		       		<td class="td_workday"><div id="c6_2"></div></td>'+
	'		       		<td class="td_workday"><div id="c6_3"></div></td>'+
	'		       		<td class="td_workday"><div id="c6_4"></div></td>'+
	'		       		<td class="td_workday"><div id="c6_5"></div></td>'+
	'		       		<td class="td_weekend"><div id="c6_6"></div></td>'+
	'		       		<td class="td_weekend"><div id="c6_7"></div></td>'+
	'				</tr>'+
	'				</tbody>'+
	'			</table>'+
	'			</td>'+
	
	'			'+
	'			<td>&nbsp;</td>'+
	'			<td><table class="table" cellspacing="1">'+
	'        		<tbody>'+
	'					<tr class="tr_month"> '+
	'						<td class="arrow_lft">'+
	'							<a href="javascript:fillDaysRueck(-1)">'+
	'								<img src="' + image_dir + '/arrowshim.gif" border="0">'+
	'								</img>'+
	'							</a>'+
	'						</td>'+
	'						<td colspan="5">'+
	'							<div id="monthNameR">&nbsp;</div>'+
	'						</td>'+
	'						<td class="arrow_rgt">&nbsp;'+
	'							<a href="javascript:fillDaysRueck(1)">'+
	'								<img src="' + image_dir + '/arrowshim.gif" border="0">'+
	'								</img>'+
	'							</a>'+
	'						</td>'+
	'					</tr>'+
	'					<tr class="tr_weekday">'+
	'	       				<td id="mo2"></td>'+
	'						<td id="di2"></td>'+
	'						<td id="mi2"></td>'+
	'						<td id="do2"></td>'+
	'						<td id="fr2"></td>'+
	'						<td id="sa2"></td>'+
	'						<td id="su2"></td>'+
	'					</tr>'+
	'					<tr>'+
	'			       		<td class="td_workday"><div id="d1_1"></div></td>'+
	'			       		<td class="td_workday"><div id="d1_2"></div></td>'+
	'			       		<td class="td_workday"><div id="d1_3"></div></td>'+
	'			       		<td class="td_workday"><div id="d1_4"></div></td>'+
	'			       		<td class="td_workday"><div id="d1_5"></div></td>'+
	'			       		<td class="td_weekend"><div id="d1_6"></div></td>'+
	'			       		<td class="td_weekend"><div id="d1_7"></div></td>'+
	'					</tr>'+
	'					<tr>'+
	'			       		<td class="td_workday"><div id="d2_1"></div></td>'+
	'			       		<td class="td_workday"><div id="d2_2"></div></td>'+
	'			       		<td class="td_workday"><div id="d2_3"></div></td>'+
	'			       		<td class="td_workday"><div id="d2_4"></div></td>'+
	'			       		<td class="td_workday"><div id="d2_5"></div></td>'+
	'			       		<td class="td_weekend"><div id="d2_6"></div></td>'+
	'			       		<td class="td_weekend"><div id="d2_7"></div></td>'+
	'					</tr>'+
	'					<tr>'+
	'			       		<td class="td_workday"><div id="d3_1"></div></td>'+
	'			       		<td class="td_workday"><div id="d3_2"></div></td>'+
	'			       		<td class="td_workday"><div id="d3_3"></div></td>'+
	'			       		<td class="td_workday"><div id="d3_4"></div></td>'+
	'			       		<td class="td_workday"><div id="d3_5"></div></td>'+
	'			       		<td class="td_weekend"><div id="d3_6"></div></td>'+
	'			       		<td class="td_weekend"><div id="d3_7"></div></td>'+
	'					</tr>'+
	'					<tr>'+
	'			       		<td class="td_workday"><div id="d4_1"></div></td>'+
	'			       		<td class="td_workday"><div id="d4_2"></div></td>'+
	'			       		<td class="td_workday"><div id="d4_3"></div></td>'+
	'			       		<td class="td_workday"><div id="d4_4"></div></td>'+
	'			       		<td class="td_workday"><div id="d4_5"></div></td>'+
	'			       		<td class="td_weekend"><div id="d4_6"></div></td>'+
	'			       		<td class="td_weekend"><div id="d4_7"></div></td>'+
	'					</tr>'+
	'					<tr>'+
	'			       		<td class="td_workday"><div id="d5_1"></div></td>'+
	'			       		<td class="td_workday"><div id="d5_2"></div></td>'+
	'			       		<td class="td_workday"><div id="d5_3"></div></td>'+
	'			       		<td class="td_workday"><div id="d5_4"></div></td>'+
	'			       		<td class="td_workday"><div id="d5_5"></div></td>'+
	'			       		<td class="td_weekend"><div id="d5_6"></div></td>'+
	'			       		<td class="td_weekend"><div id="d5_7"></div></td>'+
	'					</tr>'+
	'					<tr>'+
	'			       		<td class="td_workday"><div id="d6_1"></div></td>'+
	'			       		<td class="td_workday"><div id="d6_2"></div></td>'+
	'			       		<td class="td_workday"><div id="d6_3"></div></td>'+
	'			       		<td class="td_workday"><div id="d6_4"></div></td>'+
	'			       		<td class="td_workday"><div id="d6_5"></div></td>'+
	'			       		<td class="td_weekend"><div id="d6_6"></div></td>'+
	'			       		<td class="td_weekend"><div id="d6_7"></div></td>'+
	'					</tr>'+
	'				</tbody>'+
	'				</table>'+
	'			'+
	'			</td>'+
	'			'+
	'		</tr>'+
	'		<tr>'+
	'	           <td colspan="3"><div id="buttonbox">'+
	'	        	<div class="btnbox_r">'+
	'					<a id="apply" href="_self" onclick="OLT_Calendar.close(); return false;"></a>'+
	'				</div>'+
	'			</div>'+
	'		  </td>'+
	'		</tr>'+
	'	</tbody>'+
	'</table>'+
	'</form>';
	return (html_template);
}

/*****************************************************************************
	TODO: Nach und nach mit neuen Formaten ausbauen
*****************************************************************************/
function getFmtDate(fmt) {
	var d = new Date();
	var day = (d.getDate() < 10) ? '0' + d.getDate().toString() :  d.getDate().toString();
	m = d.getMonth() + 1;
	var month =  (m < 9) ? '0' + m.toString() :  m.toString();
	var year = d.getFullYear().toString();
	
	if (fmt = "yyyymmdd") {
		fmtDate = year  + month + day ;
	}
	
	return (fmtDate);
}
