var th_DOMAIN_NAME = '';
var th_ENVIRONMENT = 'prod';
var th_THALYS_LANGUAGE = 'calendar.js.php';
var th_THALYS_COUNTRY = 'fr';
var th_IMG_DOMAIN_NAME = '/img';
var lb_errors = [];
var lb_fields = [];
var label_fromstation = 'Abreisebahnhof';
var label_tostation = "Zielbahnhof";
var label_fromstation_no_utf8 = 'Abreisebahnhof';
var label_tostation_no_utf8 = "Zielbahnhof";
var label_station_tgb = 'TGB';
var combinaison_non_realisable_en_tkl = 'Zum jetzigen Zeitpunkt wird die Kombination einiger Fahrgasttypen nicht für Ticketless-Fahrten angeboten.';
var trajet_tgb_tkl_indisponible = 'Die Strecke „Alle belgischen Bahnhöfe“ ist nicht im Ticketless-Service erhältlich';
var trajet_tgb_indisponible = 'Die Strecke „Alle belgischen Bahnhöfe“ ist nicht erhältlich';
var booking_tkl_light_abo_lys_indisponible = 'Das LYS-Abonnement ist nicht erhältlich';
var tkl_offer_not_available = 'Dieses Angebot ist nur als Papierfahrschein erhältlich';
var booking_tkl_light_ticket_papier_pas_dispo = new Array('be','fr','nl','de');
booking_tkl_light_ticket_papier_pas_dispo['be'] = 'Dieses Angebot ist in Belgien nicht erhältlich';
booking_tkl_light_ticket_papier_pas_dispo['fr'] = 'Dieses Angebot ist in Frankreich nicht erhältlich';
booking_tkl_light_ticket_papier_pas_dispo['nl'] = 'Dieses Angebot ist in den Niederlanden nicht erhältlich';
booking_tkl_light_ticket_papier_pas_dispo['de'] = 'Dieses Angebot ist in Deutschland nicht erhältlich';
var booking_tkl_light_ticket_papier_trajet_pas_dispo = new Array('be','fr','nl','de');
booking_tkl_light_ticket_papier_trajet_pas_dispo['be'] = 'Diese Strecke ist in Belgien nicht erhältlich';
booking_tkl_light_ticket_papier_trajet_pas_dispo['fr'] = 'Diese Strecke ist in Frankreich nicht erhältlich';
booking_tkl_light_ticket_papier_trajet_pas_dispo['nl'] = 'Diese Strecke ist in den Niederlanden nicht erhältlich';
booking_tkl_light_ticket_papier_trajet_pas_dispo['de'] = 'Diese Strecke ist in Deutschland nicht erhältlich';
var booking_today_7  = new Date(2010,09,16);var booking_today_7_open  = new Date(2010,09,21);var label_non_dispo_7_jours = '7 Tage vor Abfahrt bestellen';
var label_booking_tkl_light_finalise_full = 'Schließen Sie mit Klick auf „Ticketless buchen“ Ihren Kauf ab.';
var label_booking_tkl_light_finalise_empty = 'Füllen Sie das nebenstehende Formular aus und schließen Sie Ihre Buchung ab.';
var labelWrongPhoneNumber = "Die telefon-Nr ist nicht korrekt";
var labelSeminaireQuestionsVide = "Sie müssen mindestens eine Frage stellen";
var labelNomMarcheSpecial = "Zuname";
var labelPrenomMarcheSpecial = "Vorname";
var labelVilleIncorrect = "Die ort ist fehlerhaft";
th_THALYS_QS = '?xtor=ADI-248';
th_THALYS_LANGUAGE = 'de';

//	written	by Tan Ling	Wee	on 2 Dec 2001
//	last updated 28 Jul 2003
//	email : fuushikaden@yahoo.com
//	website : www.pengz.com
//	TabSize: 4
//
//	modified by ALQUANTO 30 July 2003 - german language included.
//									  - modified languageLogic with the ISO-2letter-strings
//									  - changes in in showCalendar: defaultLanguage is already set...
//									  - js and html corrected... more xhtml-compliant... simplier css
//	email: popcalendar@alquanto.de
//
//	modified by PinoToy 25 July 2003  - new logic for multiple languages (English, Spanish and ready for more).
//									  - changes in popUpMonth & popDownMonth methods for hidding	popup.
//									  - changes in popDownYear & popDownYear methods for hidding	popup.
//									  - new logic for disabling dates in	the past.
//									  - new method showCalendar, dynamic	configuration of language, enabling	past & position.
//									  - changes in the styles.
//	email  : pinotoy@yahoo.com

var enablePast = 0;var exclusionDay = 0;		var excludeWE = 0;		var exclude_days = '';  var exclude_weekdays = null;  var fixedX = -1;		var fixedY = -1;		var showToday = 1;		var imgDir = 'http://www.thalys.com/img/common/'; var crossobj, crossMonthObj, crossYearObj, monthSel, yearSel, daySel, omonthSel, oyearSel, odaySel, ctlDayToPlaceValue, ctlNow, dateFormat, selDayAction, isPast;
var visYear  = 0;
var visMonth = 0;
var bPageLoaded = false;
var ie  = document.all;
var dom = document.getElementById;
var ns4 = document.layers;
var today    = new Date();
var saleDate  = today.getDate();
var dateNow  = today.getDate();
var saleMonth = today.getMonth();
var saleYear  = padYear(today.getYear());
var monthNow = today.getMonth();
var yearNow  = padYear(today.getYear());
var bShow    = false;
var endDay;
var endMonth;
var endYear;
var startAt = 1;
var fromLbl = '';
var toLbl = '';
var dateDuJourLbl = 'Datum des Tages';
var me = null;
var prec = null;
var keydown = false;
var selName = '';
var fermer = 0;
var isCF1 = false;
var fermerLbl = new Array('Schließen der Zeitplan Hinfahrt','Schließen der Zeitplan Rückfahrt','Schließen der Zeitplan');
var gotoString ='Gehe zu aktuellem monat';
var todayString ='Heute :';
var monthName = new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
var dayName =new Array('Mo','Di','Mi','Do','Fr','Sa','So');
var dayNameComplete =new Array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag');
var format_date = '%s. %s %s'
function sprintf( ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Ash Searle (http://hexmen.com/blog/)
    // + namespaced by: Michael White (http://getsprink.com)
    // +    tweaked by: Jack
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: sprintf("%01.2f", 123.1);
    // *     returns 1: 123.10

    var regex = /%%|%(\d+\$)?([-+#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g;
    var a = arguments, i = 0, format = a[i++];

    // pad()
    var pad = function(str, len, chr, leftJustify) {
        var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr);
        return leftJustify ? str + padding : padding + str;
    };

    // justify()
    var justify = function(value, prefix, leftJustify, minWidth, zeroPad) {
        var diff = minWidth - value.length;
        if (diff > 0) {
            if (leftJustify || !zeroPad) {
                value = pad(value, minWidth, ' ', leftJustify);
            } else {
                value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
            }
        }
        return value;
    };

    // formatBaseX()
    var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
        // Note: casts negative numbers to positive ones
        var number = value >>> 0;
        prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || '';
        value = prefix + pad(number.toString(base), precision || 0, '0', false);
        return justify(value, prefix, leftJustify, minWidth, zeroPad);
    };

    // formatString()
    var formatString = function(value, leftJustify, minWidth, precision, zeroPad) {
        if (precision != null) {
            value = value.slice(0, precision);
        }
        return justify(value, '', leftJustify, minWidth, zeroPad);
    };

    // finalFormat()
    var doFormat = function(substring, valueIndex, flags, minWidth, _, precision, type) {
        if (substring == '%%') return '%';

        // parse flags
        var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false;
        var flagsl = flags.length;
        for (var j = 0; flags && j < flagsl; j++) switch (flags.charAt(j)) {
            case ' ': positivePrefix = ' '; break;
            case '+': positivePrefix = '+'; break;
            case '-': leftJustify = true; break;
            case '0': zeroPad = true; break;
            case '#': prefixBaseX = true; break;
        }

        // parameters may be null, undefined, empty-string or real valued
        // we want to ignore null, undefined and empty-string values
        if (!minWidth) {
            minWidth = 0;
        } else if (minWidth == '*') {
            minWidth = +a[i++];
        } else if (minWidth.charAt(0) == '*') {
            minWidth = +a[minWidth.slice(1, -1)];
        } else {
            minWidth = +minWidth;
        }

        // Note: undocumented perl feature:
        if (minWidth < 0) {
            minWidth = -minWidth;
            leftJustify = true;
        }

        if (!isFinite(minWidth)) {
            throw new Error('sprintf: (minimum-)width must be finite');
        }

        if (!precision) {
            precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0);
        } else if (precision == '*') {
            precision = +a[i++];
        } else if (precision.charAt(0) == '*') {
            precision = +a[precision.slice(1, -1)];
        } else {
            precision = +precision;
        }

        // grab value using valueIndex if required?
        var value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];

        switch (type) {
            case 's': return formatString(String(value), leftJustify, minWidth, precision, zeroPad);
            case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
            case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase();
            case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
            case 'i':
            case 'd': {
                        var number = parseInt(+value);
                        var prefix = number < 0 ? '-' : positivePrefix;
                        value = prefix + pad(String(Math.abs(number)), precision, '0', false);
                        return justify(value, prefix, leftJustify, minWidth, zeroPad);
                    }
            case 'e':
            case 'E':
            case 'f':
            case 'F':
            case 'g':
            case 'G':
                        {
                        var number = +value;
                        var prefix = number < 0 ? '-' : positivePrefix;
                        var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
                        var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
                        value = prefix + Math.abs(number)[method](precision);
                        return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
                    }
            default: return substring;
        }
    };

    return format.replace(regex, doFormat);
}

function exclus(j,m,y) {
	for (var day in exclude_days) {
		d = j+'/'+m+'/'+padYear(y);
		if (d == exclude_days[day]) return true;
	}
	return false;
}

function exclusweekday(dp) {
	if (exclude_weekdays != null) {
		for (var day in exclude_weekdays) {
			d = dp % 7;
			if (d == exclude_weekdays[day]) return true;
		}
	}
	return false;
}


function hideElement( elmID, overDiv ) {
	if(ie) {
		for(i = 0; i < document.all.tags( elmID ).length; i++) {
			obj = document.all.tags( elmID )[i];
			if(!obj || !obj.offsetParent) continue;

						objLeft   = obj.offsetLeft;
			objTop    = obj.offsetTop;
			objParent = obj.offsetParent;

			while(objParent.tagName.toUpperCase() != 'BODY' && objParent.tagName.toUpperCase() != 'HTML') {
				objLeft  += objParent.offsetLeft;
				objTop   += objParent.offsetTop;
				objParent = objParent.offsetParent;
			}

			objHeight = obj.offsetHeight;
			objWidth  = obj.offsetWidth;
			Top = overDiv.offsetTop + overDiv.offsetHeight;
			Left = overDiv.offsetLeft + overDiv.offsetWidth;

			if(((overDiv.offsetTop <= objTop)&&(Top>=objTop))||((overDiv.offsetTop <= (objTop + objHeight))&&(Top>=(objTop + objHeight))))
			{
				if(((overDiv.offsetLeft <= objLeft)&&(Left>=objLeft))||((overDiv.offsetLeft <= (objLeft + objWidth))&&(Left>=(objLeft + objWidth))))
				{
					if(document.getElementById('booking_advanced')){
						if(obj.id != 'time_trip' && obj.id != 'age_passager_0' && obj.id != 'fromstation' && obj.id != 'tostation' && obj.id != 'passengers'){
							obj.style.visibility = 'hidden';
						}
						if(document.getElementById('time_trip_ret')){
							document.getElementById('time_trip_ret').style.visibility = 'hidden';
						}
					}
					else{
						obj.style.visibility = 'hidden';
					}
					//obj.style.visibility = 'hidden';
				}
			}
		}
	}
}

function showElement(elmID) {
	if(ie) {
		for(i = 0; i < document.all.tags( elmID ).length; i++) {
			obj = document.all.tags(elmID)[i];
			if(!obj || !obj.offsetParent) continue;

			obj.style.visibility = '';
		}
	}
}

function HideAllElement(elmID) {
    ie  = document.all;
	if(ie) {
//		alert(document.all.tags( elmID ).length);
		for(i = 0; i < document.all.tags( elmID ).length; i++) {
			obj = document.all.tags(elmID)[i];
			if(!obj || !obj.offsetParent) continue;

			obj.style.visibility = 'hidden';
		}
	}
}

if (dom) {
	document.write ('<div onclick="bShow=true" id="calendar" style="z-index:+999999;position:absolute;visibility:hidden; border: 1px solid #f0f0f0;"><table style="width:200px;font-family:Arial;font-size:11px;border: 1px solid #990033;" bgcolor="#ffffff"><tr bgcolor="#f0f0f0"><td><table style="width:198px;"><tr><td style="padding:2px;font-family:Arial;font-size:11px;"><span id="caption"></span></td><td align="right"><a href="javascript:keydown=true;closeCalendar(false);"><img id="close_cal" src="'+imgDir+'pcalclose.gif" alt="'+fermerLbl[fermer]+'" width="15" height="13" border="0" /></a></td></tr></table></td></tr><tr><td style="padding:5px" bgcolor="#ffffff"><span id="content_calendar"></span></td></tr>');

	if (showToday == 1) {
		document.write ('<tr bgcolor="#f0f0f0"><td style="padding:5px" align="center"><span id="lblToday"></span></td></tr>');
	}

	document.write ('</table></div>');
}

var	styleAnchor = 'text-decoration:none;color:black;';
var	styleLightBorder = 'border:1px solid #ffffff;';
var styleIMG = 'style="border: 1px solid #990033;"'
function init() {
	if (!ns4)
	{
		crossobj=(dom)?document.getElementById('calendar').style : ie? document.all.calendar : document.calendar;
		hideCalendar();

		if (showToday == 1) {
			document.getElementById('lblToday').innerHTML =	'<span class="red_thalys">' + todayString + ' <a onmousemove="window.status=\''+gotoString+'\'" onmouseout="window.status=\'\'" title="'+dayNameComplete[(today.getDay()-1==-1)?6:(today.getDay()-1)]+' ' + today.getDate() + ' ' + monthName[today.getMonth()]+ ' ' + yearNow + ' , '+gotoString+'" style="'+styleAnchor+'" href="javascript:monthSel=monthNow;yearSel=yearNow;constructCalendar();">'+dayName[(today.getDay()-1==-1)?6:(today.getDay()-1)]+', ' + today.getDate() + ' ' + monthName[today.getMonth()].substring(0,3) + ' ' + yearNow +'</a></span>';
		}

		var sHTML1 = '<table style="font-family:Arial;font-size:11px;border: 0px solid #990033;width:178px; color:#990033; vertical-align: middle;"><tr>';
		sHTML1 += '<td align="left"><span id="spanLeft"><a id="firstcal" href="javascript:decMonth();" onKeyDown="setFocus(event)"><img id="changeLeft" alt="vorhergehende Monat" src="'+imgDir+'pcalleft1.gif" '+ styleIMG +' align="center"></a></span></td>';
		sHTML1 += '<td align="center"><span id="spanMonth"></span>&nbsp;';
		sHTML1 += '<span id="spanYear"></span></td>';
		sHTML1 += '<td align="right"><span id="spanRight"><a href="javascript:incMonth();"><img id="changeRight" alt="folgende Monat" src="'+imgDir+'pcalright1.gif" ' + styleIMG +'   align="center"></a></span></td></tr></table>';

		document.getElementById('caption').innerHTML = sHTML1;

		bPageLoaded=true;
	}
}

function hideCalendar() {
	if (crossobj != null) crossobj.visibility = 'hidden';
	if (crossMonthObj != null) crossMonthObj.visibility = 'hidden';
	if (crossYearObj  != null) crossYearObj.visibility = 'hidden';
	showElement('SELECT');
	showElement('APPLET');
}

function padZero(num) {
	return (num	< 10) ? '0' + num : '' + num;
}

function padYear(num) {
	return (num	<1900) ? num+1900 : num;
}

function formatDate(day) {
		j = padZero(day.getDate());
		m = padZero(day.getMonth()+1);
		a = padYear(day.getYear());
	return j+'/'+m+'/'+a;
}

function constructDate(d,m,y, t) {
	sTmp = dateFormat;
	sTmp = sTmp.replace ('dd',padZero(d));
	sTmp = sTmp.replace ('mm',padZero(m+1));
	sTmp = sTmp.replace ('yyyy',y);
	return sTmp.replace ('tt',t);

}

function checkkey(event){
	keydown = false;
	if(ie) event = window.event;
	if (event.keyCode==13) {
		keydown = true;
	}
}

function closeCalendar(quit) {
	hideCalendar();
	if (keydown != true) {
		me.blur();
	} else {
		next.focus();
	}
		keydown = false;
		//alert(callback);
	eval(callback+'('+daySel+','+monthSel+','+yearSel+','+quit+');');
}
function emptyArrayCal(a, len) {
	for (var i = 1; i <= len; i++) {
		a[i] = null;
	}
	a.length = 1;
	return a;
}

function addToSelect (d,m,y,quit)
{
	if(quit == true)
	{
		var timed = new Date();
		var tt = timed.getHours() + ":" + timed.getMinutes() + ":" +timed.getSeconds() + "";
		ctlToPlaceValue.value = constructDate(d,m,y, tt );
		var optDay = document.getElementById(selName+"_day").options;
		for (var i = 0; i < optDay.length; i++) {
			if (optDay[i].value == d) {
				optDay.selectedIndex = i;
			}
		}
		var optMonth = document.getElementById(selName+"_month").options;
		for (var i = 0; i < optMonth.length; i++) {
			if (optMonth[i].value == (m+1)) {
				optMonth.selectedIndex = i;
			}
		}
		var optYear = document.getElementById(selName+"_year").options;
		for (var i = 0; i < optYear.length; i++) {
			if (optYear[i].value == y) {
				optYear.selectedIndex = i;
			}
		}
	}

}

function addToSelectSameDay (d,m,y,quit)
{
	if(quit == true)
	{
		selName = selName.replace("_ret","");

		var timed = new Date();
		var tt = timed.getHours() + ":" + timed.getMinutes() + ":" +timed.getSeconds() + "";
		ctlToPlaceValue.value = constructDate(d,m,y, tt );
		var optDay = document.getElementById(selName+"_day").options;
		for (var i = 0; i < optDay.length; i++) {
			if (optDay[i].value == d) {
				optDay.selectedIndex = i;
			}
		}
		var optMonth = document.getElementById(selName+"_month").options;
		for (var i = 0; i < optMonth.length; i++) {
			if (optMonth[i].value == (m+1)) {
				optMonth.selectedIndex = i;
			}
		}
		var optYear = document.getElementById(selName+"_year").options;
		for (var i = 0; i < optYear.length; i++) {
			if (optYear[i].value == y) {
				optYear.selectedIndex = i;
			}
		}

		//RETURN
		var selDay = document.getElementById(selName+"_ret_day");
		var inputDay = document.getElementById("input_"+selName+"_ret_day");
		selDay.disabled = false;
		var optDay = selDay.options;
		optDay = emptyArrayCal(optDay, optDay.length);
		aff_d = (d < 10)? "0"+d : ""+d;
		var opt_d = new Option(aff_d, d);
		optDay[0] = opt_d;
		inputDay.value = d;
		selDay.disabled = true;
		var selMonth = document.getElementById(selName+"_ret_month");
		var inputMonth = document.getElementById("input_"+selName+"_ret_month");
		selMonth.disabled = false;
		var optMonth = selMonth.options;
		optMonth = emptyArrayCal(optMonth, optMonth.length);
		m++;
		aff_m = (m < 10)? "0"+m : ""+m;
		var opt_m = new Option(aff_m, m);
		optMonth[0] = opt_m;
		inputMonth.value = m;
		selMonth.disabled = true;
		var selYear = document.getElementById(selName+"_ret_year");
		var inputYear = document.getElementById("input_"+selName+"_ret_year");
		selYear.disabled = false;
		var optYear = selYear.options;
		optYear = emptyArrayCal(optYear, optYear.length);
		aff_y = ""+y;
		var opt_y = new Option(aff_y, y);
		optYear[0] = opt_y;
		inputYear.value = y;
		selYear.disabled = true;
	}

}

function addToInput (d,m,y,quit)
{
	if(quit == true)
	{
		var timed = new Date();
		var tt = timed.getHours() + ":" + timed.getMinutes() + ":" +timed.getSeconds() + "";
		ctlToPlaceValue.value = constructDate(d,m,y, tt );
		var inputDay = document.getElementById(selName+"_day");
		var inputMonth = document.getElementById(selName+"_month");
		var inputYear = document.getElementById(selName+"_year");
		if(null == inputDay)
		{
			inputDay = document.getElementById("input_"+selName+"_day");
		}
		if(null == inputMonth)
		{
			inputMonth = document.getElementById("input_"+selName+"_month");
		}
		if(null == inputYear)
		{
			inputYear = document.getElementById("input_"+selName+"_year");
		}
		inputDay.value = d;
		inputMonth.value = m+1;
		inputYear.value = y;
	}
	synchronizeDays();
}

function addToInputFlashOctobre2008 (d,m,y,quit)
{
	d_ret = d;
	m_ret = m;
	y_ret = y;
	if(quit == true)
	{
		var timed = new Date();
		var tt = timed.getHours() + ":" + timed.getMinutes() + ":" +timed.getSeconds() + "";
		ctlToPlaceValue.value = constructDate(d,m,y, tt );
		var inputDay = document.getElementById(selName+"_day");
		var inputMonth = document.getElementById(selName+"_month");
		var inputYear = document.getElementById(selName+"_year");
		if(null == inputDay)
		{
			inputDay = document.getElementById("input_"+selName+"_day");
		}
		if(null == inputMonth)
		{
			inputMonth = document.getElementById("input_"+selName+"_month");
		}
		if(null == inputYear)
		{
			inputYear = document.getElementById("input_"+selName+"_year");
		}
		inputDay.value = d;
		inputMonth.value = m+1;
		inputYear.value = y;

		if(document.getElementById("date_trip"))
		{
			var optComfort = document.getElementById("cf").options;
			if(selName != 'date_trip')
			{
				ArrayComfortDateTrip = document.getElementById("date_trip").value.split('/');
				d = parseInt(ArrayComfortDateTrip[0], 10);
				m = parseInt(ArrayComfortDateTrip[1], 10)-1;
				y = parseInt(ArrayComfortDateTrip[2], 10);
			}
			comfortDateTrip = new Date(y,m,d);
			selComfort = (comfortDateTrip.getDay() >= 5 || comfortDateTrip.getDay() == 0 ) ? 0 : 1;
			if(selComfort == 1)
			{
				if(document.getElementById("date_trip_ret"))
				{
					if(selName == 'date_trip_ret' || document.getElementById("date_trip_ret").value != '')
					{
						if(selName != 'date_trip_ret')
						{
							ArrayComfortDateTripRet = document.getElementById("date_trip_ret").value.split('/');
							d_ret = parseInt(ArrayComfortDateTripRet[0], 10);
							m_ret = parseInt(ArrayComfortDateTripRet[1], 10)-1;
							y_ret = parseInt(ArrayComfortDateTripRet[2], 10);
						}
						comfortDateTripRet = new Date(y_ret,m_ret,d_ret);
						selComfort = (comfortDateTripRet.getDay() >= 5 || comfortDateTripRet.getDay() == 0 ) ? 0 : 1;
					}
				}
			}
			optComfort.selectedIndex = selComfort;
		}

	}

}

function addToInputSameDay (d,m,y,quit)
{
	if(quit == true)
	{
		var timed = new Date();
		var tt = timed.getHours() + ":" + timed.getMinutes() + ":" +timed.getSeconds() + "";
		ctlToPlaceValue.value = constructDate(d,m,y, tt );

		selName = selName.replace("_ret","");

		document.getElementById("input_"+selName+"_day").value = d;
		document.getElementById("input_"+selName+"_month").value = m+1;
		document.getElementById("input_"+selName+"_year").value = y;

		document.getElementById("input_"+selName+"_ret_day").value = d;
		document.getElementById("input_"+selName+"_ret_month").value = m+1;
		document.getElementById("input_"+selName+"_ret_year").value = y;

		document.getElementById(selName).value = ctlToPlaceValue.value;
		document.getElementById(selName+"_ret").value = ctlToPlaceValue.value;

		synchronizeBookingComfortThalysDay(d,m,y);
	}

}

function newSchedulePage(d,m,y,quit)
{
	if(quit == true)
	{
		m = m + 1;
		d = padZero(d);
		m = padZero(m);
		var joint = (th_THALYS_QS == '')? '?' : '&';
		var path = unescape(window.location.href).split("?");
		//alert(path[0]);
		//var url = th_DOMAIN_NAME+"/"+th_THALYS_COUNTRY+"/"+th_THALYS_LANGUAGE+"/horaires"+th_THALYS_QS+joint+"date="+d+"/"+m+"/"+y;
		var url = path[0]+th_THALYS_QS+joint+"date="+d+"/"+m+"/"+y;
		//alert(url);
		window.location = (url);
	}
}

function changeFormat(date) {
	var sep = date.charAt(2);
	if (isNaN(sep)){
		temp = date.split(sep);
		j=temp[0];
		m=temp[1];
		a=temp[2];
	}else {
		sep = date.charAt(4);
		temp = date.split(sep);
		j=temp[2];
		m=temp[1];
		a=temp[0];
	}
	newdate =j+'/'+m+'/'+a;
	return newdate;
}

function incMonth () {
	monthSel++;
	if (monthSel > 11) {
		monthSel = 0;
		yearSel++;
	}
	constructCalendar();
}

function decMonth () {
	monthSel--;
	if (monthSel < 0) {
		monthSel = 11;
		yearSel--;
	}
	constructCalendar();
}

function constructCalendar () {
	var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31);
	var startDate = new Date (yearSel,monthSel,1);
	var endDate;

	if (monthSel==1) {
		endDate = new Date (yearSel,monthSel+1,1);
		endDate = new Date (endDate - (24*60*60*1000));
		numDaysInMonth = endDate.getDate();
	} else {
		numDaysInMonth = aNumDays[monthSel];
	}

	datePointer = 0;
	dayPointer = startDate.getDay() - 1;

	if (dayPointer<0) dayPointer = 6;

	sHTML = '<table border="0" style="font-family:verdana;font-size:10px;"><tr>';

	for (i = 0; i<7; i++) {
		sHTML += '<th width="27" align="right" scope="col"><span title="' + dayNameComplete[i] + '" class="red_thalys">' + dayName[i] + '</span></th>';
	}

	sHTML += '</tr><tr>';

	for	( var i=1; i<=dayPointer;i++ ) {
		sHTML += '<td>&nbsp;</td>';
	}

	for	( datePointer=1; datePointer <= numDaysInMonth; datePointer++ ) {
		dayPointer++;
		sStyle=styleAnchor;
		if ((datePointer == odaySel) && (monthSel == omonthSel) && (yearSel == oyearSel))
		{ sStyle+=styleLightBorder }

		sHint = '';

		sHint = sHint.replace('/\"/g', '&quot;');

		var exclusdate = exclus(padZero(datePointer),padZero(monthSel+1),padYear(yearSel));
		var exclusweekdays = exclusweekday(dayPointer);
		var firstday = ((yearSel < saleYear) || (monthSel < saleMonth) && (yearSel == saleYear) || (datePointer < saleDate) && (monthSel == saleMonth) && (yearSel == saleYear));
		var lastday = ((yearSel > endYear) || (monthSel > endMonth) && (yearSel == endYear) || (datePointer > endDay) && (monthSel == endMonth) && (yearSel == endYear));
		if (enablePast == 0 && ((firstday)|| (exclusdate)|| (exclusweekdays) ||(lastday) )) {
			selDayAction = '';
			isPast = 1;
		} else {
			selDayAction = 'href="javascript:daySel=' + datePointer + ';closeCalendar(true);" onkeydown="checkkey(event);"';
			isPast = 0;
		}

		sHTML += (isPast==1) ? '<td align="right" style="background:url('+imgDir+'croix.gif) no-repeat;background-position:15px 3px;">':'<td align="right">';

			pointerDay = dayPointer % 7;

			dayLabelComplete = dayNameComplete[(pointerDay-1==-1)?6:(pointerDay-1)];

		if ((datePointer == dateNow) && (monthSel == monthNow) && (yearSel == yearNow)) {
			sHTML += "<b><a title=\"" + dayLabelComplete + " " + sprintf(format_date,datePointer,monthName[monthSel],yearSel) + ", " + dateDuJourLbl + "\" style='"+sStyle+"' "+selDayAction+"><span class=\"red\">&nbsp;" + datePointer + "</span>&nbsp;</a></b>";
		} else if (isPast==1) {
			sHTML += "<a  title=\"" + dayLabelComplete + " " + sprintf(format_date,datePointer,monthName[monthSel],yearSel) + "\" style='"+sStyle+"' "+selDayAction+">&nbsp;<span class=\"gris\">" + datePointer + "</span>&nbsp;</a>";

		} else if (dayPointer % 7 == 0 || dayPointer % 7 == 6) {
			sHTML += "<a title=\"" + dayLabelComplete + " " + sprintf(format_date,datePointer,monthName[monthSel],yearSel) + "\" style='"+sStyle+"' "+selDayAction+">&nbsp;<span class=\"bleu\">" + datePointer + "</span>&nbsp;</a>";
		}else
			sHTML += "<a  title=\"" + dayLabelComplete + " " + sprintf(format_date,datePointer,monthName[monthSel],yearSel) + "\" style='"+sStyle+"' "+selDayAction+">&nbsp;<span class=\"red_thalys\">" + datePointer + "</span>&nbsp;</a>";

		sHTML += '';
		if ((dayPointer) % 7 == 0) {
			sHTML += '</tr><tr>';
		}
	}

	document.getElementById('content_calendar').innerHTML   = sHTML
	document.getElementById('spanMonth').innerHTML = '&nbsp;' +	monthName[monthSel]
	document.getElementById('spanYear').innerHTML  = '&nbsp;' + yearSel
}

function cal_prs_date_cal(str_date) {
  	var RE_NUM = /^\-?\d+$/;
        var arr_date = str_date.split('/');
	var err_msg_date = '';

        if (arr_date.length != 3) {
		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        if (!arr_date[0]) {
		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        if (!RE_NUM.exec(arr_date[0])) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        if (!arr_date[1]) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        if (!RE_NUM.exec(arr_date[1])) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        if (!arr_date[2]) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        if (!RE_NUM.exec(arr_date[2])) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        var dt_date = new Date();
        dt_date.setDate(1);
        if (arr_date[1] < 1 || arr_date[1] > 12) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        dt_date.setMonth(arr_date[1]-1);
        if (arr_date[2] < 100) {
		arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	}
        dt_date.setFullYear(arr_date[2]);
        var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
        dt_date.setDate(arr_date[0]);
        if (dt_date.getMonth() != (arr_date[1]-1)) {

		 return alert(err_msg_date.replace(/%s/g, str_date));
	}
        return (dt_date)
}

function timeDiff_cal(date1, date2) {
	return  Math.floor(date1.getTime() - date2.getTime());
}

function showCalendar(ctl, ctl2, format, lang, past, fx, fy,saleday,excludedays,enddate,excludeweekdays,restrictdays,restrictreturn,aller,retour,cback,posTop,posLeft,id_replace) {

	val_ctl2 = ctl2.value;
	ret_value = ctl2.value;
	if(ctl2.value != aller.value){
	 ret_value = aller.value;
	 val_ctl2 = aller.value;
	}
	seq = '_';
	ret_ctl = ctl.split(seq);
	ret = (ret_ctl[ret_ctl.length-1] == 'ret')? true : false;
	if(ret)
	{
		fermer = 1;
	} else {
		fermer = (aller == retour) ? 2 : 0;
	}

	imgClose = document.getElementById('close_cal');
	imgClose.alt = fermerLbl[fermer];
	selName = ctl;
	//ctl = document.getElementById(ctl+'_year');
	ctl = document.getElementById(ctl+'_calendar');
	if (past != null) enablePast = past;
	else enablePast = 0;
	if (fx != null) fixedX = fx;
	else fixedX = -1;
	if (fy != null) fixedY = fy;
	else fixedY = -1;

	if(aller != null && aller.name!=ctl2.name && aller.value != fromLbl && timeDiff_cal(cal_prs_date_cal(saleday),cal_prs_date_cal(aller.value))<0) saleday = aller.value;
	//if(retour != null && retour.name!=ctl2.name && aller.name!=retour.name) retour.value = '';
	if (excludedays != null) exclude_days = excludedays.split("-");
	if (excludeweekdays != null){
		if (isNaN(excludeweekdays)){
			exclude_weekdays = excludeweekdays.split("-");
		} else {
			exclude_weekdays = new Array(excludeweekdays);
		}
	}
	if(restrictdays==null || isNaN(restrictdays))restrictdays = 0;
	if(restrictreturn==null || isNaN(restrictreturn))restrictreturn = 0;
	if(posTop==null || isNaN(posTop))posTop = 0;
	if(posLeft==null || isNaN(posLeft))posLeft = 0;
	callback = cback;
	var ch = parseInt(saleday.substring(0,2),10);
	if(isNaN(ch)) {
		sday=new Date();
		saleday =formatDate(sday);
	}
	var days = 0;
	if(aller != null) {
		days = (aller.name==ctl2.name)?restrictdays :restrictreturn;
	}

	if(ret == true){
		var a = parseInt(saleday.substring(6),10);
		var m = parseInt(saleday.substring(3,5),10)-1;
		var j = parseInt(saleday.substring(0,2),10);
		var tmp_saleDay = new Date(a,m,j);
		if (days == null) days = 0;
		tmp_saleDay.setDate(tmp_saleDay.getDate()+days);
		saleday =formatDate(tmp_saleDay);
	}
	if(val_ctl2!="" && timeDiff_cal(cal_prs_date_cal(val_ctl2),cal_prs_date_cal(saleday))<0) val_ctl2 = saleday;
	var sd = changeFormat(saleday);
	var end = enddate;
	ctl_form = ctl.parentNode;
	ctl_form_name = ctl_form.tagName.toUpperCase();
	while(ctl_form_name != 'FORM')
	{
		ctl_form = ctl_form.parentNode;
		ctl_form_name = ctl_form.tagName.toUpperCase();
	}


	next = ctl_form.elements[0];
	prec = ctl_form.elements[0];
	me = ctl_form.elements[0];
	for(var z = 1; z < ctl_form.length ; z++) {
		if(ctl2 == ctl_form.elements[z]) {
			prec = ctl_form.elements[z-1];
			me = ctl_form.elements[z];
			next = (z==ctl_form.length)? 0 : ctl_form.elements[z+1];

			if(ie)
			{
				var hasattr = next.getAttribute('disabled');
			} else {
				var hasattr = next.hasAttribute('disabled');
			}

			while((next.type == 'hidden' || hasattr) && z < ctl_form.length) {
			//alert(next.type);
				z++;
				next = (z==ctl_form.length)? 0 : ctl_form.elements[z+1];

				if(ie)
				{
					hasattr = next.getAttribute('disabled');
				} else {
					hasattr = next.hasAttribute('disabled');
				}
			}
			//alert(next.type);
			if(z==ctl_form.length) {
			 next = 0;
			}
			break;
		}
	}

	if (showToday == 1) {
		document.getElementById('lblToday').innerHTML = '<span class="red_thalys">' + todayString + ' <a onmousemove="window.status=\''+gotoString+'\'" onmouseout="window.status=\'\'" title="'+dayNameComplete[(today.getDay()-1==-1)?6:(today.getDay()-1)]+' ' + today.getDate() + ' ' + monthName[today.getMonth()]+ ' ' + yearNow + ', '+gotoString+'" style="'+styleAnchor+'" href="javascript:monthSel=monthNow;yearSel=yearNow;constructCalendar();">'+dayName[(today.getDay()-1==-1)?6:(today.getDay()-1)]+', ' + today.getDate() + ' ' + monthName[today.getMonth()].substring(0,3) + ' ' + yearNow + '</a></span>';
	}

	popUpCalendar(ctl, ctl2, format,sd,end,days,posTop,posLeft,ret_value, val_ctl2);
}

function popUpCalendar(ctl, ctl2, format,sd,enddate,days,Toppos,Leftpos,ret_value, val_ctl2) {

	//ctl2.value = ret_value;
	var leftpos = 0;
	var toppos  = 0;
	var a = parseInt(sd.substring(6),10);
	var m = parseInt(sd.substring(3,5),10)-1;
	var j = parseInt(sd.substring(0,2),10);
	var saleDay = new Date(a,m,j);
	if (days == null) days = 0;
	//saleDay.setDate(saleDay.getDate()+days);
	saleDate  = saleDay.getDate();
	saleMonth = saleDay.getMonth();
	saleYear  = padYear(saleDay.getYear());
	if (enddate=='' || enddate == null) end = formatDate(new Date());
	var enda = parseInt(enddate.substring(6),10);
	var endm = parseInt(enddate.substring(3,5),10)-1;
	var endj = parseInt(enddate.substring(0,2),10);
	var lastDay = new Date(enda,endm,endj);
	endDay  = lastDay.getDate();
	endMonth = lastDay.getMonth();
	endYear  = padYear(lastDay.getYear());
	if (bPageLoaded) {
		if (crossobj.visibility == 'hidden') {
			ctlToPlaceValue = ctl2;
			dateFormat = format;
			formatChar = ' ';
			aFormat = dateFormat.split(formatChar);
			if (aFormat.length < 3) {
				formatChar = '/';
				aFormat = dateFormat.split(formatChar);
				if (aFormat.length < 3) {
					formatChar = '.';
					aFormat = dateFormat.split(formatChar);
					if (aFormat.length < 3) {
						formatChar = '-';
						aFormat = dateFormat.split(formatChar);
						if (aFormat.length < 3) {
							formatChar = '';					
						}
					}
				}
			}

			nbChange = 0;
			if (formatChar != "") {
				aData =	val_ctl2.split(formatChar);							for (i=0; i<3; i++) {
					if ((aFormat[i] == "d") || (aFormat[i] == "dd")) {
						daySel = parseInt(aData[i], 10);
						nbChange++;
					} else if ((aFormat[i] == "m") || (aFormat[i] == "mm")) {
						monthSel = parseInt(aData[i], 10) - 1;
						nbChange++;
					} else if (aFormat[i] == "yyyy") {
						yearSel = parseInt(aData[i], 10);
						nbChange++;
					}
				}
			}

			if ((nbChange != 3) || isNaN(daySel) || isNaN(monthSel) || isNaN(yearSel)) {
				daySel  = saleDate;
				monthSel = saleMonth;
				yearSel  = saleYear;

			}

			odaySel  = dateNow;
			omonthSel = monthNow;
			oyearSel  = yearNow;

			oObj = ctl;
			toppos  = GetDomOffset(oObj, 'offsetTop');
			leftpos  = GetDomOffset(oObj, 'offsetLeft');

			var x = (ie)? 5 : 20;

			cal=document.getElementById('calendar');
			//leftpos-=cal.offsetWidth;
			leftpos -= 16;
			posleft = (fixedX == -1) ? ctl.offsetLeft + leftpos + ctl.offsetWidth : fixedX ;
			if(posleft < 0) posleft = ctl.offsetLeft;
			crossobj.left = posleft + 'px';
			crossobj.top = (fixedY == -1) ? ctl.offsetTop + toppos + ctl.offsetHeight + x + 'px' : fixedY + 'px';
			constructCalendar (1, monthSel, yearSel);
			crossobj.visibility = (dom||ie) ? "visible" : "show";

			hideElement('SELECT', document.getElementById('calendar'));
			hideElement('APPLET', document.getElementById('calendar'));
			posleft = (fixedX == -1) ? ctl.offsetLeft - Leftpos + leftpos + ctl.offsetWidth : fixedX ;
			if(posleft < 0) posleft = ctl.offsetLeft;
			crossobj.left = posleft + 'px';
			crossobj.top = (fixedY == -1) ? ctl.offsetTop - Toppos + toppos + ctl.offsetHeight + x + 'px' : fixedY + 'px';


	//alert('crossobj.top : '+crossobj.top);
			bShow = true;
			document.getElementById('firstcal').focus();
		} else {
			hideCalendar();
			if (ctlNow!=ctl) popUpCalendar(ctl, ctl2, format,sd,enddate,days, val_ctl2);

		}
		ctlNow = ctl;
	}
}

function setFocus (event) {
	if(ie) event = window.event;
	if (!event.ctrlKey && event.shiftKey && event.keyCode==9) {
		if (ie) {
			event.returnValue = false;
		} else {
			if (event.preventDefault) event.preventDefault();
		}
		prec.focus();
		hideCalendar();
	}
}

function changeHiddenDate(name)
{
	var optDay = document.getElementById(name+"_day").options;
	var optMonth = document.getElementById(name+"_month").options;
	var optYear = document.getElementById(name+"_year").options;
	var day = optDay[optDay.selectedIndex].value;
	var month = optMonth[optMonth.selectedIndex].value;
	var year = optYear[optYear.selectedIndex].value;
	if(day==''||month == '' ||year == ''){
		optDay.selectedIndex = 0;
		optMonth.selectedIndex = 0;
		optYear.selectedIndex = 0;
	}
	document.getElementById(name).value = day+'/'+month+'/'+year;

}

function GetDomOffset( Obj, Prop ) {
	var iVal = 0;
	var aTag = Obj;
	//Obj = Obj.offsetParent;
	while (Obj && Obj.tagName != 'BODY' && Obj.tagName != 'HTML') {
		eval('iVal += Obj.' + Prop + ';');
		Obj = Obj.offsetParent;
	}

	return iVal;
}

/*
document.onclick = function hidecal2 () {
	if (!bShow) hideCalendar();
	bShow = false;
}*/

if(ie) {
	init();
} else {
	window.onload = init;
}
