var ddd;
var mmm;
var yyy;
var errFlight03 = 'Du';
var errFlight04 = 'Au';
var errs = new Array();
var htlLoad = true;
var lbls = new Array();
var tdate = new Date();
var req;
var udCtr = 0;
var stctr = 0;
var calClose = 0;
var charList="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\300\301\302\303\304\305\310\311\312\313\314\315\316\317\321\322\323\324\325\326\331\332\333\334\335\340\341\342\343\344\345\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\371\372\373\374\375\377,[]- ";
var xdate;
var xrdate;

var myDate = new Date();
var myFromDate = new Date(); //DAY_DATE
myFromDate.setDate(myDate.getDate() + 14);
var myToDate = new Date();   //DAY_RDATE
myToDate.setDate(myDate.getDate() + 21);
        xdate = myFromDate.getDate() + "/" + (myFromDate.getMonth()+1) + "/" + myFromDate.getFullYear();
        xrdate = myFromDate.getDate() + "/" + (myFromDate.getMonth()+1) + "/" + myFromDate.getFullYear()
function BC (id)
{
 var obj = document.getElementById(id);
 return obj;
}


function GetMonthMaxDays(y,m) // accepts 0 index month
{
	return new Date(y,m+1,0).getDate();
}
var xdate;
var xrdate;
var myDate = new Date();
var myFromDate = new Date(); //DAY_DATE
myFromDate.setDate(myDate.getDate() + 14);
var myToDate = new Date();   //DAY_RDATE
myToDate.setDate(myDate.getDate() + 21);
//	BC('X_DATE').value = myFromDate.getDate() + "." + (myFromDate.getMonth()+1) + "." + myFromDate.getFullYear();
        xdate = myFromDate.getDate() + "/" + (myFromDate.getMonth()+1) + "/" + myFromDate.getFullYear();
//        BC('X_RDATE').value = myToDate.getDate() + "." + (myToDate.getMonth()+1) + "." + myToDate.getFullYear();
        xrdate = myFromDate.getDate() + "/" + (myFromDate.getMonth()+1) + "/" + myFromDate.getFullYear()
function dateFl() 
{

	check_date(document.fbe.X_DATE, "%d.%m.%y");
	check_date(document.fbe.X_RDATE, '%d.%m.%y');
}

function tabForm(obj)
{
	CloseCalendar();
	for (var ctr = 0; ctr < 4; ctr++)
	{
		BC('tab'+ctr).className = 'betab';
		BC('beform'+ctr).style.display = 'none';
	}
	if (obj == 'tab4') {
		BC(obj).className = 'betabA1';
	}
	else {
		BC('tab4').className = 'betab1';
		BC('beform4').style.display = 'none';
		BC(obj).className = 'betabA';
	}
	BC('beform'+obj.substring(3,4)).style.display = 'block';
	if (obj == 'tab1' && htlLoad) 
	{
		var hDate = new Date();
		hDate.setDate(tdate.getDate() + hotelDateOffset);
		BC('checkin').value = (hDate.getDate())+ '/' + (hDate.getMonth()+1) + '/' + hDate.getFullYear();
		CalcNights();
		getOptions('htl');
		htlLoad = false;
	}
	if(obj == 'tab0')
	{
		BC('beforms').style.background = 'url(http://assets.ebookers.com/images/FR/v4/hp/bg_be_hp.jpg)';
	}else{
		BC('beforms').style.background = 'url(http://assets.ebookers.com/images/FR/v4/hp/bg_be.jpg)';
	}
}

function CreateDay(y,m,d,t)
{ // Function to create table cells for each day of month and all empty days
	if(t=='flret'){
		var today = new Date(yyy,mmm-1,ddd);
	}else{
		var today = new Date();
	}
	var c = document.createElement('td');
	if (y == 0 && m == 0)
	{
		c.innerHTML = '&nbsp;';
		//c.style.backgroundColor = '#ddd;';
	}
	else if ( (t == 'dpdep' || t == 'dpret') && (y < today.getFullYear() || (y == today.getFullYear() && m-1 < today.getMonth()) || 	(y == today.getFullYear() && m-1 == today.getMonth() && d < (today.getDate()+3))) ){
		c.style.textDecoration = 'line-through';
		c.innerHTML = d;
	}
	else if ( (t != 'dpdep' && t != 'dpret') && (y < today.getFullYear() || (y == today.getFullYear() && m-1 < today.getMonth()) || 	(y == today.getFullYear() && m-1 == today.getMonth() && d < today.getDate())) ) {
		c.style.textDecoration = 'line-through';
		c.innerHTML = d;
		//c.style.backgroundColor = '#fdd;';
	} else {
		c.innerHTML = '<a href="javascript:SetDates('+y+','+m+','+d+',\''+t+'\')">' + d +'<\/a>'
		//c.style.backgroundColor = '#cfc;';
	}
	return c;
}

function CloseCalendar()
{
 BC('cal').style.display = 'none';
 var elList = new Array('DAY_RDATE','MONTH_RDATE','PAX2','PAX0','PAX1','COS','rooms','starratingHtl','pick_up_hour','pick_up_min','drop_off_hour','drop_off_min','StartTime','ReturnTime','Room1Infants','Room2Infants','Room1Children','Room2Children','Location','Room1Adults','Room2Adults','Compagnie','giveOrTake','l_95','PREF_AIR','COSX');
 for (var ctr = 0; ctr < elList.length; ctr++)
 {
  if (BC(elList[ctr])) {
   BC(elList[ctr]).style.visibility = 'visible';
  }
 }
calClose = 0;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function ShowHideCalendar(requestor,elem,pos)
{
	req = requestor;
	if (req == 'close' || calClose == 1){ CloseCalendar(); calClose == 0;}
	else {
		calClose = 1;
		var doCar = '';
		var y = 0;
		var m = 0;
		var d = 0;
		var xpos = findPosX(elem);
		var ypos = findPosY(elem);
		if(req == 'dpdep') {
				ypos = ypos - 20;
		}
		BC('cal').style.display = 'block';
		BC('cal').style.top = ypos +'px';
		BC('cal').style.left = xpos +'px';
		
		switch (req){
				case "fldep":
				fltmpDt = BC('X_DATE').value;
				if(fltmpDt == 'jj/mm/aa' || fltmpDt == '' || !(fltmpDt.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/))){
					fltmpDt = xdate;
				}
				fltmpDt = fltmpDt.split("/");
				d = fltmpDt[0];
				m = fltmpDt[1];
				if(m > 12 || m < 1)
				{
					m=myFromDate.getMonth()+1
				}
				y = fltmpDt[2];
				if(y.length <= 2){
					y = "20"+y;
				}
				//BC('X_RDATE').style.visibility = 'hidden';
				//BC('PAX2').style.visibility = 'hidden';
				
				
				BC('PAX0').style.visibility = 'hidden';
				BC('PAX1').style.visibility = 'hidden';
				if(BC('PREF_AIR')){
				BC('PREF_AIR').style.visibility = 'hidden';				
				}
				
				
				if(pos == 1){
					BC('COS').style.visibility = 'hidden';	
					xpos += 0;
                                        ypos += 20;
				}else if(pos==2)
				{
					BC('Compagnie').style.visibility = 'hidden';	
					xpos += 0;
                                        ypos += 20;
				}				
				else{
					if(pos==3)	
					BC('Compagnie').style.visibility = 'hidden';
					else
						BC('COS').style.visibility = 'hidden';
					xpos += -134;
                                        ypos += 18;
				}
                                        BC('cal').style.left = xpos +'px';
                                        BC('cal').style.top = ypos +'px';
				break;
				case "flret":
				fltmpDt = BC('X_DATE').value;
				fltmpRt = BC('X_RDATE').value;

var checked=0;

if(checked!=1 && fltmpRt == '' || !(fltmpRt.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)))
{   
	fltmpRt = xrdate;
}
	
if( fltmpRt == 'jj/mm/aa' || fltmpDt == 'jj/mm/aa')
{
	checked=1;
	var nDate= new Date()
	d=nDate.getDate()+3;
	m=nDate.getMonth() +1;
	y=nDate.getFullYear();
ddd=d;
mmm = m;
yyy = y;
  
}
	
if (checked !=1)
{
	if( fltmpRt == 'jj/mm/aa' || fltmpDt == 'jj/mm/aa'|| fltmpRt == '' || !(fltmpRt.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)))
	{
    	 fltmpDt = fltmpDt.split("/");
		 d = fltmpDt[0];
		 m = fltmpDt[1];
		 y = fltmpDt[2];
		if(y.length <= 2)	
 		{
			y = "20"+y;
		 }                
		 ddd=d;
		 mmm = m;
		 yyy = y;
		}
		else
	{
		fltmpRt //= BC('X_RDATE').value;
		fltmpRt = fltmpRt.split("/");
		d = fltmpRt[0];
		m = fltmpRt[1];
		y = fltmpRt[2];
		fltmpDt = BC('X_DATE').value;
		fltmpDt = fltmpDt.split("/");
		 var dmm = fltmpDt[1];
		 var dyy = fltmpDt[2];
		if(y.length <= 2 )
		{
             y = "20"+y;
         }
		if(dyy.length <= 2 )
		{
             dyy = "20"+dyy;
         }
		if((y == dyy) && (m < dmm)||(y < dyy) && (m > dmm))
		{
			m=dmm;
			y=dyy;
		}
			
	}
			fltmpDt = BC('X_DATE').value;
			fltmpDt = fltmpDt.split("/");
			var rday = fltmpDt[0];
			var rmon = fltmpDt[1];
			var ryr = fltmpDt[2];
			if(ryr.length <= 2)
			{
				ryr = "20"+ryr;
			}
			ddd=rday;
			mmm = rmon;
			yyy = ryr;
			
		
		
}
	
			if(BC('PREF_AIR') && BC('COSX')){
					BC('PREF_AIR').style.visibility = 'hidden';
					BC('COSX').style.visibility = 'hidden';
					BC('PAX0').style.visibility = 'hidden';
					BC('PAX1').style.visibility = 'hidden';
					BC('PAX2').style.visibility = 'visible';
					}else{
					BC('PAX2').style.visibility = 'hidden';
					// Fix for issue WEB-3057  due to changes made for WEB-3005
					BC('PAX1').style.visibility = 'hidden';
			}

			if(pos == 1||pos==2)
				{
                          xpos += 0;
                          ypos += 20;
                         }else{
                         xpos -= 134;
                         ypos += 18;
                }
                BC('cal').style.left = xpos +'px';
                BC('cal').style.top = ypos +'px';
				break;
				case "htl":
					xpos += 97;
					BC('cal').style.left = xpos +'px';
					var checkin = 	BC('checkin').value.split('/');
					if (checkin.length == 3)
					{
						d = parseInt(checkin[0]);
						m = parseInt(checkin[1]);
						y = parseInt(checkin[2]);
					} else {
						
						d = tdate.getDate();
						m = parseInt(tdate.getMonth()) + 1;
						y = tdate.getFullYear();
					}
					BC('rooms').style.visibility = 'hidden';
					BC('starratingHtl').style.visibility = 'hidden';
					break;
				case "car1":
					BC('pick_up_hour').style.visibility = 'hidden';
					BC('pick_up_min').style.visibility = 'hidden';
					BC('drop_off_hour').style.visibility = 'hidden';
					BC('drop_off_min').style.visibility = 'hidden';
					cday = 'pick_up_day';
					doCar = 'pick_up';
					break;
				case "car2":
					BC('drop_off_hour').style.visibility = 'hidden';
					BC('drop_off_min').style.visibility = 'hidden';
					cday = 'drop_up_day';
					doCar = 'drop_off';
					break;
				case "dpdep":
					d = BC('StartDate1').options[BC('StartDate1').selectedIndex].value;
					m = BC('StartMonth').options[BC('StartMonth').selectedIndex].value % 100;
					y = parseInt(BC('StartMonth').options[BC('StartMonth').selectedIndex].value / 100);
					BC('StartTime').style.visibility = 'hidden';
					BC('ReturnTime').style.visibility = 'hidden';
					BC('Room1Adults').style.visibility = 'hidden';
					BC('Room2Adults').style.visibility = 'hidden';
					BC('Room1Children').style.visibility = 'hidden';
					BC('Room2Children').style.visibility = 'hidden';
					BC('Location').style.visibility = 'hidden';
					xpos += 35;
					ypos += 20;
					BC('cal').style.left = xpos +'px';
					BC('cal').style.top = ypos +'px';
					break;
				case "dpret":
					d = BC('ReturnDate1').options[BC('ReturnDate1').selectedIndex].value;
					m = BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value % 100;
					y = parseInt(BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value / 100);
					BC('ReturnTime').style.visibility = 'hidden';
				    BC('Room1Adults').style.visibility = 'hidden';
					BC('Room2Adults').style.visibility = 'hidden';
					BC('Room1Children').style.visibility = 'hidden';
					BC('Room2Children').style.visibility = 'hidden';
					BC('Location').style.visibility = 'hidden';
					xpos += 26;
					BC('cal').style.left = xpos +'px';
					break;
				case "sejours":
                                        d = BC('StartDate1').options[BC('StartDate1').selectedIndex].value;
                                        m = BC('StartMonth').options[BC('StartMonth').selectedIndex].value % 100;
                                        y = parseInt(BC('StartMonth').options[BC('StartMonth').selectedIndex].value / 100);
					BC('giveOrTake').style.visibility = 'hidden';
				 	BC('l_95').style.visibility = 'hidden';
					break;
					
				default : break;
			}
			if (doCar != '')
			{
				d = BC(doCar+'_day').value;
				m = parseInt(BC(doCar+'_month').options[BC(doCar+'_month').selectedIndex].value,10);
				if (m <= parseInt(tdate.getMonth())) y = parseInt(tdate.getFullYear()) +1;
				else y = tdate.getFullYear();
				if (parseInt(d/100) != 0)
				{
					d = tdate.getDate();
					m = parseInt(tdate.getMonth(),10) + 1;
					y = tdate.getFullYear();
					//alert(m)
				}
			}
		writeCalendar(d,m,y,req);
	}
}

function writeCalendar(d,m,y,t)
{
	var target = t;
	var renderObj = document.getElementById('calBody');
	if (renderObj.hasChildNodes)
	{
		while (renderObj.hasChildNodes()) {renderObj.removeChild(renderObj.firstChild);}
	}
	var days = new Array();
	var rawdays = new Array();
	var baseDate = new Date(y,m-1,1);
	var dow = baseDate.getDay();
	
	var maxDays = new Date(y,m,0).getDate();
	for (var ctr = 0; ctr < maxDays; ctr++)
	{
		rawdays.push(new Date(y,m-1,ctr+1));
	}
	var fday = rawdays[0].getDay();
	var lday = fday + maxDays-1;
	var dctr = 0;
	var start = (fday == 0) ? -6:1;
	var stop = (fday ==0)? 36:43;
	for (var ctr= start; ctr< stop;ctr++)
	{
		if (ctr < fday || ctr > lday) days.push(CreateDay(0,0,0,''));
		else {
			days.push(CreateDay(rawdays[dctr].getFullYear(),rawdays[dctr].getMonth()+1,rawdays[dctr].getDate(),target));
			dctr++;
		}		
	}
	for (var i = 0; i < days.length;)
	{
		var r = document.createElement('tr');
		if (i>7 && days[i].innerHTML == '&nbsp;') break;
		for (var x = 0; x<7; x++)
		{
			r.appendChild(days[i++])
		}
		renderObj.appendChild(r);
		
	}
var month;
if(m == "08" || m=="09"){
	if(m == "08"){m=8;}
	if(m == "09"){m=9;}
}else{
	m = parseInt(m);
}

	BC('showD').innerHTML = '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td style="border-color:#6498CA" width="15%"><a href="javascript:writeCalendar(1,' + (m-1) + ','+y+',\''+t+'\')" title="Mois pr&eacute;c&eacute;dent"><font color="#000000"><b>&lt;&lt;</b></font></a></td><td width="70%" style="border-color:#6498CA"><font color="#000000"><b>'+  monthNames1[baseDate.getMonth()] + ' ' + baseDate.getFullYear()+'<b></font></td><td style="border-color:#6498CA" align="right" width="15%">'+
/*	BC('showD').innerHTML +=*/ '<a href="javascript:writeCalendar(1,' + (m+1) + ','+y+',\''+t+'\')" title="Mois suivant"><font color="#000000">&gt;&gt;<b></font></a></td></tr></table>'
}

function GetCheckIn()
{
	var checkin = BC('checkin').value.split('/');
	return new Date(parseInt(checkin[2]),parseInt(checkin[1])-1,parseInt(checkin[0]));
}

function ValidateCheckIn()
{
	var checkin = BC('checkin').value;
	var chreg = /\d\d\/\d\d\/\d\d\d\d|\d\/\d\d\/\d\d\d\d|\d\d\/\d\/\d\d\d\d|\d\/\d\/\d\d\d\d/;
	if(!checkin.match(chreg) || GetCheckIn().setHours(23,59,59) < tdate || parseInt(checkin.split('/')[0]) > GetMonthMaxDays(parseInt(checkin.split('/')[2]),parseInt(checkin.split('/')[1])-1)) return false;
	return true;
}

function ValidateNights()
{
	var nreg = /^[0-9]+$/;
	if (BC('nights').value.match(nreg)) return true;
	return false;
}

function CalcNights()
{
	BC('lcheckin').className = '';
	BC('lnights').className = '';
	errs = new Array();
	if (!ValidateCheckIn()) errs.push(new ErrMsg('lcheckin',errHotel02));
	if (!ValidateNights()) errs.push(new ErrMsg('lnights',errHotel03));
	if (errs.length > 0) ErrMsgProvidor();
	else {
		var dt = GetCheckIn();
		dt.setDate(dt.getDate() + parseInt(BC('nights').value));
		BC('checkOut').innerHTML = '' + dt.getDate() + '/' + (dt.getMonth() +1) + '/' + dt.getFullYear();
	}
}
var way = "R";
function SetType(t)
{
	var state = true;
	var disp = "none";
	var els = new Array('X_RDATE','CHECKFLEX');
	if (t == 'R') {
		state = false;
		disp="inline";
	}
	BC("calRfl").style.display = disp;
	for (var i =0; i< els.length; i++)
	{
		BC(els[i]).disabled = state;
		}
	way = t;
}

function UpdateGuess()
{
	BC('guess2').value = BC('guess').value;
}

function openCityList(wl, lang, which, formName)
{
    var popupUrl = "/components/moteurs/car_citylist.html?lang="+lang+"&wl_version="+wl+"&cbFormFieldId="+which+"&fn="+formName;
    var winpops = window.open(popupUrl, "", "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=470,height=200");
}

function ValidateHotel()
{
	errs = new Array() 
	var form = BC('beform1'); 
	var dest = form.destination.options[form.destination.selectedIndex].value; 
	if (dest == 'none' ||dest == 0) errs.push(new ErrMsg('ldestination',errHotel01)); 
	if (!ValidateCheckIn()) errs.push(new ErrMsg('lcheckin',errHotel02)); 
	if (!ValidateNights()) errs.push(new ErrMsg('lnights',errHotel03)); 
	if (errs.length > 0) { 
		ErrMsgProvidor(); 
		return false; 
	} 
	var dt = GetCheckIn(); 
	var d = (dt.getDate() > 9) ? dt.getDate() : '0' + dt.getDate(); 
	var m = (dt.getMonth() +1 > 9) ? dt.getMonth() +1 : '0'+(dt.getMonth() +1); 
	var hDT = '' + dt.getFullYear() + '-' + m + '-' + d; 
	
	octUrl = octUrl + '&destination=' + dest; 
	octUrl = octUrl + '&checkin='+ hDT + '&nights=' + BC('nights').value + '&roomtype=' + BC('roomtype').options[BC('roomtype').selectedIndex].value; octUrl = octUrl + '&rooms=' + BC('rooms').options[BC('rooms').selectedIndex].value + '&starrating=' + BC('starratingHtl').options[BC('starratingHtl').selectedIndex].value; window.location.href = octUrl; 
}
function ValidateCar()
{
	var dtreg = /\d+/;
	var flregd = /^\d+$/;
	errs= new Array();
	if (BC('guess').value.length < 3)
		errs.push(new ErrMsg('lguess',errCar01));
	if (BC('guess2').value.length < 3)
		errs.push(new ErrMsg('lguess2',errCar02));
	if (!BC('pick_up_day').value.match(dtreg)  || !ValidCarDate('c1')) errs.push(new ErrMsg('lpick_up_day', errCar04));
	if (!BC('drop_off_day').value.match(dtreg)  || !ValidCarDate('c2')) errs.push(new ErrMsg('ldrop_off_day', errCar05));
	if (parseInt(BC('driver_age').value) < 22 || parseInt(BC('driver_age').value) > 99 || BC('driver_age').value == '' || !BC('driver_age').value.match(flregd))
		errs.push(new ErrMsg('ldriver_age',errCar03));

	if (errs.length < 1) return true;
	ErrMsgProvidor();
	return false;
}

function ValidCarDate(t)
{
	if (GetDate(t).setHours(23,59,59)<tdate) return false;
	return true;
}

function GetDate(t)
{
	var yy, mm, dd, fix;
	if (t == 'd' ||t=='r')
	{
		fix = '_DATE';
		if (t == 'r') fix = '_RDATE';
		dd = parseInt(BC('DAY'+fix).selectedIndex)+1;
		mm = parseInt(BC('MONTH'+fix).options[BC('MONTH'+fix).selectedIndex].value) %100;
		yy = parseInt(BC('MONTH'+fix).options[BC('MONTH'+fix).selectedIndex].value / 100);
	}
	else if(t=='c1'||t=='c2')
	{
		fix = 'pick_up';
		if (t == 'c2') fix = 'drop_off';
		dd = parseInt(BC(fix+'_day').value);
		var tmpm = ''+BC(fix+'_month').options[BC(fix+'_month').selectedIndex].value;
		if (tmpm.indexOf('0') == 0) mm = parseInt(tmpm.substring(1,2));
		else mm = parseInt(tmpm);
		yy = tdate.getFullYear();
		if (mm < tdate.getMonth()) yy = yy + 1;
	}
	return new Date(yy, mm-1, dd);
}

function ValidateDP()
{
	var error_text = '';
	var date=new Date();
	var sd = new Date( parseInt(BC('StartMonth').options[BC('StartMonth').selectedIndex].value / 100), BC('StartMonth').options[BC('StartMonth').selectedIndex].value % 100 -1, BC('StartDate1').options[BC('StartDate1').selectedIndex].text);
	var rd = new Date( parseInt(BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value / 100), BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value % 100 -1, BC('ReturnDate1').options[BC('ReturnDate1').selectedIndex].text);
	var a = BC('Room1Adults').options[BC('Room1Adults').selectedIndex].value + BC('Room2Adults').options[BC('Room2Adults').selectedIndex].value;
	var r1 = BC('Room1').options[BC('Room1').selectedIndex].value; 
	var r1a = BC('Room1Adults').options[BC('Room1Adults').selectedIndex].value; 
	var r1c	= BC('Room1Children').options[BC('Room1Children').selectedIndex].value;
	var r2 = BC('Room2').options[BC('Room2').selectedIndex].value; 
	var r2a = BC('Room2Adults').options[BC('Room2Adults').selectedIndex].value;
	var r2c = BC('Room2Children').options[BC('Room2Children').selectedIndex].value;
	
	if(sd.getTime() - date.getTime() <  (1000 * 60 * 60 * 24 * 2) ) {
		error_text = "La date doit \352tre sup\351rieure \340 + 3 jours.";
	}
	else if(rd.getTime() <= sd.getTime()) {
		error_text = "La date doit \352tre ult\351rieure \340 la date de d\351part.";
	}
	else if(a <= 0) {
		error_text = "Nombre d'adultes doit \352tre sup\351rieur \340 0. ";
	}
	
	if(r1a > 0) {
		if(r1 == '@SB' && (r1a != 1 || r1c > 0)) {
			error_text = "Pour les chambres individuelles, maximum 1 personne autoris\351e";
		}
		else if(r1 == '@DB' && r1a + r1c < 2) {
			error_text = "Pour les chambres doubles, maximum 2 personnes autoris\351es";
		}
	}
	
	if(r2a > 0) {
		if(r2 == '@SB' && (r2a != 1 || r2c > 0)) {
			error_text = "Pour les chambres individuelles, maximum 1 personne autoris\351e";
		}
		else if(r2 == '@DB' && r2a + r2c < 2) {
			error_text = "Pour les chambres doubles, maximum 2 personnes autoris\351es";
		}
	}
	
	if(document.dpbe._DirectOnly.checked) {
		document.dpbe.DirectOnly.value = '1';
	}
	else {
		document.dpbe.DirectOnly.value = '0';
	}
    
	
	var d = (sd.getDate() > 9) ? sd.getDate() : '0' + sd.getDate(); 
	var m = (sd.getMonth() +1 > 9) ? sd.getMonth() +1 : '0'+(sd.getMonth() +1);
	document.dpbe.StartDate.value = '' + d + '.' + m + '.' + sd.getFullYear();	
	
	d = (rd.getDate() > 9) ? rd.getDate() : '0' + rd.getDate(); 
	m = (rd.getMonth() +1 > 9) ? rd.getMonth() +1 : '0'+(rd.getMonth() +1);
	document.dpbe.ReturnDate.value = '' + d + '.' + m + '.' + rd.getFullYear();
	
	if(error_text.length == 0) {
       // passed validation, result page should be framed, so pass all data through the frameset
		var fc = document.dpbe.length - 1; 
        var result_url = '/dynapack/index.html?VERSION=FR&LANG=FR&URL=http://montreal.onlinetravel.ch/hotel/session/default/hotel.cgi?';
		// walk through form, create query string
		for (var c=0; c<fc; c++) { 
			result_url = result_url + document.dpbe.elements[c].name + "=" + document.dpbe.elements[c].value + "&"; 
		}
        document.location.href = result_url;
        return false;
	} else {
		alert(error_text);
		return false;
	}
}

function ErrMsg(label, alertTxt)
{
	this.Label = label;
	this.AlertText = alertTxt;
}

function ErrMsgProvidor()
{
	var errStr = ErrStr;
	for (var i = 0; i < lbls.length; i++)
	{
		BC(lbls[i]).className = '';
	} 

	for (var i = 0; i < errs.length; i++)
	{
		lbls.push(errs[i].Label);
		BC(errs[i].Label).className = 'lblErr';
		errStr += ' - ' + errs[i].AlertText + '\n';
	}	
	alert(errStr);
}

function chkretdate(t)
{
	var depDD, depMY, retDD, retMY;
	if(t=='fldep')
	{
		depDD = parseInt(BC('DAY_DATE').selectedIndex)+1;
		depMY = parseInt(BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value);
		retDD = parseInt(BC('DAY_RDATE').selectedIndex)+1;
		retMY = parseInt(BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value);
		if(retDD < depDD && (retMY < depMY) )
		{
			BC('MONTH_RDATE').selectedIndex = BC('MONTH_RDATE').selectedIndex + 1;
		}
	}
	if (t=='car1')
	{
		depDD = parseInt(BC('pick_up_day').value);
		retDD = parseInt(BC('drop_off_day').value);
		depMY = BC('pick_up_month').options[BC('pick_up_month').selectedIndex].value;
		retMY = BC('drop_off_month').options[BC('drop_off_month').selectedIndex].value;

		var cmth = parseInt(tdate.getMonth()) + 1;
		if( (retDD < depDD) && (retMY < depMY || retMY == depMY) && (retMY > cmth) )
		{
			BC('drop_off_month').selectedIndex = BC('drop_off_month').selectedIndex + 1;
		}
	}
	 if(t == 'dpret')
	{
		depDD = parseInt(BC('StartDate1').selectedIndex)+1;
		depMY = parseInt(BC('StartMonth').options[BC('StartMonth').selectedIndex].value);
		retDD = parseInt(BC('ReturnDate1').selectedIndex)+1;
		retMY = parseInt(BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value);
		if(retDD < depDD && (retMY == depMY || retMY < depMY) )
		{
			BC('ReturnMonth').selectedIndex = BC('ReturnMonth').selectedIndex + 2;
		}
	}
}

function UpdateDates(orig)
{
	if (udCtr > 0)
	{
		udCtr = 0;
	} else {
		chkretdate(orig);
		if (orig == 'fldep' || orig =='flret')
		{
			var fldepDT = new Date( parseInt(BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value / 100), BC('MONTH_DATE').options[BC('MONTH_DATE').selectedIndex].value % 100 -1, BC('DAY_DATE').options[BC('DAY_DATE').selectedIndex].text);
			var flretDT = new Date( parseInt(BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value / 100), BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value % 100 -1, BC('DAY_RDATE').options[BC('DAY_RDATE').selectedIndex].text);
 			if (fldepDT > flretDT)
	 		{
 				udCtr = 1;
 				if (orig == 'flret') SetDates(fldepDT.getFullYear(), (fldepDT.getMonth() +1), (fldepDT.getDate() + 7), 'flret');
 				else SetDates(flretDT.getFullYear(), (flretDT.getMonth() +1), 'fldep');
			}
			if(orig == 'flret')
			{
				var flretDT = new Date( parseInt(BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value / 100), BC('MONTH_RDATE').options[BC('MONTH_RDATE').selectedIndex].value % 100 -1, parseInt(BC('DAY_RDATE').options[BC('DAY_RDATE').selectedIndex].text) );
				orig = 'fldep';
				RenderDays(flretDT, orig)
				orig = 'flret';
				RenderDays(fldepDT, orig)
			}else
			{
				RenderDays(flretDT, orig)
			}
		}
		if (orig == 'car1' || orig == 'car2')
		{
			var pd = BC('pick_up_day').value;
			var pm = parseInt(BC('pick_up_month').options[BC('pick_up_month').selectedIndex].value,10);
			var dd = BC('drop_off_day').value;
			var dm = parseInt(BC('drop_off_month').options[BC('drop_off_month').selectedIndex].value,10);
			var py = tdate.getFullYear();
			var dy = py;
			var m = parseInt(tdate.getMonth()) + 1;
			if (pm < m) py = py + 1;
			if (dm < m) dy = dy + 1;
		
			var pDT = new Date(py, pm, pd);
			var dDT = new Date(dy, dm, dd);
			if (pDT >= dDT)
 			{
 				udCtr = 1;
				if (orig == 'car2') SetDates(pDT.getFullYear(), pDT.getMonth(), (pDT.getDate() + 7), 'car2');
 				else SetDates(dDT.getFullYear(), dDT.getMonth(), (dDT.getDate() - 7), 'car1');
			}
		}
		if (orig == 'dpdep' || orig =='dpret')
		{
			var dpdepDT = new Date( parseInt(BC('StartMonth').options[BC('StartMonth').selectedIndex].value / 100), BC('StartMonth').options[BC('StartMonth').selectedIndex].value % 100 -1, BC('StartDate1').options[BC('StartDate1').selectedIndex].text);
			var dpretDT = new Date( parseInt(BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value / 100), BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value % 100 -1, BC('ReturnDate1').options[BC('ReturnDate1').selectedIndex].text);
			
			if (dpdepDT > dpretDT)
	 		{
 				udCtr = 1;
 				if(orig == 'dpdep')	SetDates(dpdepDT.getFullYear(), (dpdepDT.getMonth() +1), (dpdepDT.getDate() + 3), 'dpret'); 
 				else SetDates(dpretDT.getFullYear(), (dpretDT.getMonth() +1), (dpretDT.getDate()), 'dpret');
			}
			if(orig == 'dpdep')
			{
				var dpretDT = new Date( parseInt(BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value / 100), BC('ReturnMonth').options[BC('ReturnMonth').selectedIndex].value % 100 -1, BC('ReturnDate1').options[BC('ReturnDate1').selectedIndex].text);
				RenderDays(dpdepDT, orig)
				orig = 'dpret';
				RenderDays(dpretDT, orig)
			}else{
				RenderDays(dpretDT, orig)
			}
		}
		if (orig == 'sejours')
		{
		var sejoursDT = new Date( parseInt(BC('depMonth').options[BC('depMonth').selectedIndex].value / 100), BC('depMonth').options[BC('depMonth').selectedIndex].value % 100 -1, BC('depDay').options[BC('depDay').selectedIndex].text);	
		SetDates(sejoursDT.getFullYear(), (sejoursDT.getMonth() +1), (sejoursDT.getDate() + 3), 'sejours');

		}
	}
}

function RenderDays(dt,t)
{
	if (t == 'c1'||t=='c2'){
		var prefix = (t=='c1') ? 'pick_up':'drop_off';
		BC(prefix+'_day').value = dt.getDate();
	} else {
		var d = dt.getDate() -1;
		var m = (dt.getMonth()+1 <10)? '0'+(dt.getMonth()+1):(dt.getMonth()+1); 
		var ym = dt.getFullYear()+""+m;
		var maxdays = GetMonthMaxDays(dt.getFullYear(),dt.getMonth());
		var suffix = (t=='flret') ? 'DATE':'RDATE';
                var myprefix = 'DAY_';
		if(t == 'dpret')
                {
                        myprefix = 'Return';
                        suffix = 'Date1';
			monthfix = 'Month'
                }
                if(t == 'dpdep')
                {
                        myprefix = 'Start';
                        suffix = 'Date1';
			monthfix = 'Month';
                }	
		if(t == 'sejours')
		{
			myprefix = 'dep';
                        suffix = 'Day';
                        monthfix = 'Month';
		}
                var el = BC(myprefix+suffix);
		var monobj = BC(myprefix+monthfix);
                for (var i = el.length -1; i >=0; i--)
                {
                        el.remove(i);
                }
                for (var i=0; i < maxdays; i++)
                {
                        var op = new Option(i+1, i+1, false, false);
                        el.options[el.length] = op;
                }
                el.selectedIndex = d;
		for (var i=0;i<monobj.length;i++)
		{ 
			if (monobj.options[i].value == ym){ monobj.selectedIndex = i;}

		}
		if(t == 'sejours'){	
			monobj.selectedIndex = m;
		}
	}
}

function SetDates(iy,im,id,t)
{
	var safeDate = new Date(iy,im-1,id);
	var y = safeDate.getFullYear();
	var m = parseInt(safeDate.getMonth(),10) +1;
	m = (m < 10)? '0'+m:m;	
	var d = safeDate.getDate();
	d = (d < 10)? '0'+d:d;
	var dT;
	var mT;
	var sisterField = '';
	var compareValue = 0;
	var mode = 0;
	
	switch (t)
	{
		case 'fldep':
			BC('X_DATE').value = d + '/' + m + '/' + y;
			break;
		case 'flret':
			BC('X_RDATE').value = d + '/' + m + '/' + y;
			break;
		case 'htl':
			if(m=="08"){m=8;}
            if(m=="09"){m=9;}
			if(d=="08"){d=8;}
            if(d=="09"){d=9;}
            BC('checkin').value = parseInt(d) + '/' + parseInt(m) + '/' + y;
		    CalcNights();
			break;
		case 'car1':
			BC('pick_up_day').value = d;
			mT = 'pick_up_month';
			mode = 'c';
			sisterField = 'car2';
			var dt = safeDate;
        	        var d = dt.getDate() -1;
                	var m = (dt.getMonth()+1 <10)? '0'+(dt.getMonth()+1):(dt.getMonth()+1);
	                var monobj = BC("pick_up_month");
        	        for (var i=0;i<monobj.length;i++)
                	{
                        	if (monobj.options[i].value == m){ monobj.selectedIndex = i;}

	                }
			break;
		case 'car2':
			BC('drop_off_day').value = d;
			mT = 'drop_off_month';
			mode = 'c';
			sisterField = 'car1';
			var monobj = BC("drop_off_month");
                        for (var i=0;i<monobj.length;i++)
                        {
                                if (monobj.options[i].value == m){ monobj.selectedIndex = i; }

                        }
			break;
		case 'dpdep':
			//BC('StartDate1').selectedIndex = d-1;
			mT = 'StartMonth'
			mode = 'f';
			sisterField = 'dpret';
			RenderDays(safeDate, t)
			break;
		case 'dpret':
			//BC('ReturnDate1').selectedIndex = d-1;
			mT = 'ReturnMonth';
			mode = 'f';
			sisterField = 'dpdep';
			RenderDays(safeDate, t)
			break;
		case 'sejours':
			mT = 'depMonth';
			RenderDays(safeDate, t)
			break;
	}
	if (mode != 0)
	{
		if (m < 10) m = '0'+m;
		var op = m;
		if (mode == 'f') op= y+''+m;
		for (var i = 0; i < BC(mT).length; i++)
		{	
			if (BC(mT).options[i].value == op)
			{
				BC(mT).selectedIndex = i;
			}
		}
	}
	if (sisterField != '') UpdateDates(sisterField);
	CloseCalendar();	
}

// AJAX

function _getXmlHttp()
{
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
	var progids=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
	for (i in progids) {
		try { return new ActiveXObject(progids[i]) }
		catch (e) {}
	}
@end @*/

	try { return new XMLHttpRequest();}
	catch (e2) {return null; }
}

var request = new Request();
var activity = 'fldep';

var myAjaxUrl = '';
	
function getOptions(activity)
{
	
	myAjaxUrl = '/components/v4/hpDestinations.html?activity=' + activity;
	request.GetNoCache(myAjaxUrl,function(result)
	{
		if (result.readyState!=ReadyState.Complete)
			return;	
		//alert(result.status+"=="+HttpStatus.OK +"&&"+ result.responseText+"::"+HttpStatus.OK+"::::"+result.readyState+"!="+ReadyState.Complete)
		if (result.status==HttpStatus.OK && result.responseText != "")
		{
			var vals = result.responseText.split("~");
			var sel;
			
			switch (activity){
				case "fldep":
					sel = BC("DEP");
					break;
				default : break;
			}

			if (activity == 'fldep') {
				for (var i = sel.length -1; i >=0; i--) {
					sel.remove(i);
				}
				var selectThis = 0;
				for (var i=0; i < vals.length -1; i++) {
					var pair = vals[i].split("|");
					var op = new Option(pair[1], pair[0], false, false);
					if (pair[0] == 'PAR') selectThis = i;
					sel.options[sel.length] = op;
				}
				sel.selectedIndex = selectThis;
				RepopulateFlightSearchForm();
			}
		}
		else
		{
			alert('Get options failed. ' + result.responseText);
		}
	}
	)
	RepopulateFlightSearchForm();
}

function CachedResponse(response) {
	this.readyState = ReadyState.Complete
	this.status = HttpStatus.OK
	this.responseText = response
}

ReadyState = {
	Uninitialized: 0,
	Loading: 1,
	Loaded:2,
	Interactive:3,
	Complete: 4
	}
	
HttpStatus = {
	OK: 200,
	NotFound: 404
	}

function Request_from_cache(url, f_change) {
	var result = this._cache[url];
	
	if (result != null) {
		var response = new CachedResponse(result)
		f_change(response)
		return true
	}
	else
		return false
}

function Request_cached_get(url, f_change) {
	if (!this.FromCache(url, f_change)){
		var request = this
		this.Get(url,
			/* Cache results if request completed */
			function(x){
				if ((x.readyState==ReadyState.Complete)&&(x.status==HttpStatus.OK))
				{request._cache[url]=x.responseText}
				f_change(x)
			},
			"GET")
	}
}

function Request_get(url, f_change, method) {
	if (!this._get) return;
	
	if (method == null) method="GET"
	if (this._get.readyState != ReadyState.Uninitialized)
		this._get.abort() 
	
	this._get.open(method, url, true);
	
	if (f_change != null) {
		var _get = this._get;
		this._get.onreadystatechange = function(){f_change(_get);}
	}
	this._get.send(null);
}

function Request_get_no_cache(url, f_change, method){
	var sep = (-1 < url.indexOf("?")) ? "&" : "?"	
	var newurl = url + sep + "__=" + encodeURIComponent((new Date()).toString());
	return this.Get(newurl, f_change, method);
}

function Request() {
	this.Get = Request_get
	this.GetNoCache = Request_get_no_cache
	this.CachedGet = Request_cached_get
	this.FromCache = Request_from_cache
	
	this.Use = function(){return this._get!=null}
	this.Cancel = function(){if (this._get) this._get.abort();}
	this._cache = new Object();
	
	this._get = _getXmlHttp();
	if (this._get == null) return;
}

function chngClick(linkObject, tag, clickType)
{
	var linkType = 'clickin';
	if (clickType == 'out') {linkType = 'clickout'};
	var newLink = 'http://int.sitestat.com/ebookers/fra/s?'+ tag + '&ns_type=' + linkType + '&ns_url='+ linkObject.href;
	linkObject.href = newLink;
}

// making the fields blank on focus
function clear_box(box) {
	if(box.value == box.defaultValue) {
		box.value = '';
	}
}


// Email validation
function chkEMail(emailstr)
{
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (!filter.test(emailstr))
	{
		alert (errEmail);
		return false;
	}
	window.open('', 'news', 'width=350,height=250', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=no, resizable=no, dependent=yes');
	return true;
}

function newsletterValidation(emailstr)
{
	document.getElementById("spnEMail").style.color="#000000";
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (!filter.test(emailstr))
	{
		document.getElementById("spnEMail").style.color="#FF0000";
		alert ("Merci de remplir les champs indiqu\351s en rouge :\n - Indiquez l'adresse e-mail");
		return false;
	}
	window.open('', 'news', 'width=350,height=250', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=no, resizable=no, dependent=yes');
	return true;
}

function set_room_selection(room_selection_idx) {
	
	var room_selection = eval('document.dpbe.Room' + room_selection_idx); 
	var room_adult_selection = eval('document.dpbe.Room' + room_selection_idx + 'Adults'); 
	var i = 0;
	var num_adults = 0;
	
	if(room_selection.value == '@SB') {
		num_adults = 1;
	}
	if(room_selection.value == '@DB' || room_selection.value == '@TB') {
		num_adults = 2;
	}
	
	for(i = 0; i < room_adult_selection.length; i++) {
		if(room_adult_selection[i].value == num_adults) {
			room_adult_selection[i].selected = true;
		}
		else {
			room_adult_selection[i].selected = false;
		}
	}
}

var myDate = new Date();

var myFromDate = new Date(); //DAY_DATE
myFromDate.setDate(myDate.getDate() + 14);

var myToDate = new Date();   //DAY_RDATE
myToDate.setDate(myDate.getDate() + 21);

function check_date(field, dFormat) {
if((field.value == "") || (field.value.charAt(0) == " ")){
	if(field.name == "X_DATE"){
		field.value = myFromDate.getDate() + "." + (myFromDate.getMonth()+1) + "." + myFromDate.getFullYear();
	}else{
		field.value = myToDate.getDate() + "." + (myToDate.getMonth()+1) + "." + myToDate.getFullYear();
	}
	field.focus();
	return false;
}
else
{
	var checkstr = "0123456789";
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var seperator = ".";
	var day = "";
	var month = "";
	var year = "";
	var leap = 0;
	var err = 0;
	var i,j;
	var Flag = false;        //????
	var MonthNameDE = new Array ("1","2","3","4","5","6","7","8","9","10","11","12");
	var MonthNameEN = new Array ("1","2","3","4","5","6","7","8","9","10","11","12");
	
	var checkDateString=0;
	
	var date = new Date();
	err = 0; 
	DateValue = DateField.value;
	for(i = 0; i < DateValue.length; i++)
	{
		if(DateValue.charAt(i)=="-" || DateValue.charAt(i)=="/" || DateValue.charAt(i)==" " || DateValue.charAt(i)=="," || DateValue.charAt(i)==".")
		{
			checkDateString +=1;
		}
	}
	if(checkDateString !=2)
	{
		return false;
	}
	
	//alert("DateValue=" + DateValue); //14/3/2007

	//DateValue = DateValue.toUpperCase();
	var tempDate;
	tempDate = DateField.value;
	for (i = 0; i < tempDate.length; i++) {
		tempDate = tempDate.replace("-",".");
		tempDate = tempDate.replace("/",".");
		tempDate = tempDate.replace(" ",".");
		tempDate = tempDate.replace(",",".");
	}
	tempDate = tempDate.split(".");
	if(parseInt(tempDate[0]) < 10)
	{
		tempDate[0] ="0" + eval(tempDate[0]);
		//alert(tempDate[0]);
	}
	if(parseInt(tempDate[1]) < 10)
	{
		tempDate[1] ="0" + eval(tempDate[1]);
	}
	var currYear = date.getFullYear();
	currYear = currYear + "";

	if (tempDate[2].length == 2) 
	{
		//alert(eval(currYear.substr(2,2)) + "==" + eval(tempDate[2]));
		if(eval(currYear.substr(2,2)) == eval(tempDate[2]))
		{
			//alert("IN if" + currYear.substr(0,2)+ ":" +tempDate[2]);
			tempDate[2] = currYear.substr(0,2)+ "" +tempDate[2];
		}
		else
		{
			var temp = parseInt(currYear) + 1;
			temp = temp + "";
			tempDate[2] = temp.substr(0,2) + "" + tempDate[2];
		}
		alert(tempDate[2]);
	}

	for (i = 0; i < DateValue.length; i++) {
		DateValue = DateValue.replace(".","");
		DateValue = DateValue.replace("-","");
		DateValue = DateValue.replace("/","");
		DateValue = DateValue.replace(" ","");
		DateValue = DateValue.replace(",","");
	}
	if(DateValue.charAt(0) < '0' || DateValue.charAt(0) > '9')
		DateValue = DateValue.substr(1,DateValue.length);
	/* for(i=0; i < DateValue.length;i++) 
		alert("'" + DateValue.charAt(i) + "'"); */

	if(DateValue.length < 4) {
		err = 29;
	}
	else {
		/* Always change date to 8 digits - string*/
		/* if year is entered as 2-digit / always assume 20xx */

		//DateValue = DateValue.substr(0,4) + date.getFullYear();

		if(tempDate[2].length > 2 && tempDate[2].length < 4){
			err=50;
		}
		else
			DateValue = tempDate[0] + "" + tempDate[1] + "" + tempDate[2];
		
		if(DateValue.length == 7) {
			for(i = 0; i <= 11; i++) {
				if(MonthNameEN[i] == DateValue.substr(2,1).toUpperCase()) {
					Flag=true;
					if((i + 1) < 10) { 
						DateValue = DateValue.substr(0,2) + "0" + (i + 1) + date.getFullYear()+""; 
					}
					else { 
						DateValue = DateValue.substr(0,2) + (i + 1) + date.getFullYear(); 
					}
				}
			}
		}
		
	
		/****************************************************/
		
		if(DateValue.length != 8) {
			err = 19;
		}
		//alert("DateValue after correction:" + DateValue);
		/* year is wrong if year = 0000 */
		year = DateValue.substr(4,4);
		if(year == 0) {
			err = 20;
		}
		/* Validation of month*/
		month=DateValue.substr(2,2);
		if ((month < 1) || (month > 12)) {
			err = 21;
		}
		/* Validation of day*/
		day=DateValue.substr(0,2);
		if (day < 1) {
			err = 22;
		}
		//increase year if actual month is higher than etered month
		if ((date.getMonth()+1 > month) && (date.getFullYear() == year)) {
			year++;
		}
		/* Validation leap-year / february / day */
		if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
			leap = 1;
		}
		if ((month == 2) && (leap == 1) && (day > 29)) {
			err = 23;
		}
		if ((month == 2) && (leap != 1) && (day > 28)) {
			err = 24;
		}
		/* Validation of other months */
		if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
			err = 25;
		}
		if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
			err = 26;
		}
		
		if (year < date.getFullYear()){
			err = 27;
		}
		
		/* if 00 ist entered, no error, deleting the entry */
		if ((day == 0) && (month == 0) && (year == 00)) {
			err = 0; day = ""; month = ""; year = ""; seperator = "";
		}
		/* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	}
	if(err == 0) {
		sysday=date.getDate();
		sysmonth=date.getMonth()+1;
		sysyear=date.getFullYear();
		if(sysday<10) {
			sysday="0" + sysday + "";
		}
		if(sysmonth<10) {
			sysmonth="0" + sysmonth + "";
		}
		var tmpSysDate;
		var tmpSelecetedDate;
		tmpSysDate = sysyear + "" + sysmonth + "" + sysday;
		//alert("sysday" + day + "\nsysmonth" + month + "\nsysyear" + year);
		//return false;
		tmpSelectedDate = year + month + day;
		if(tmpSelectedDate < tmpSysDate) {
			err=28;
		}
	}

	var MonthNameList = new Array("Januar","Februar","Maerz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember")
	var monthName = "";
	if(month > 0 && month <= 12) {
		monthName = MonthNameList[month - 1];
		var szDateFormat = dFormat;
		szDateFormat = szDateFormat.replace(/%d/,day)
		szDateFormat = szDateFormat.replace(/%m/,month)
		szDateFormat = szDateFormat.replace(/%B/,monthName)
		szDateFormat = szDateFormat.replace(/%b/,monthName.substring(0,3))
		szDateFormat = szDateFormat.replace(/%y/,String(year).substring(0,4))
		if(err==28) {
			if(arguments.length>2) {
				if(arguments[3]=='DoNotRoundItUp') {
					szDateFormat = szDateFormat.replace(/%y/,year);
				}
				else {
					szDateFormat = szDateFormat.replace(/%y/,(date.getFullYear() + 1));
				}
			}
			else {
				szDateFormat = szDateFormat.replace(/%y/,(date.getFullYear() + 1));
			}
		}
		else {
			szDateFormat = szDateFormat.replace(/%y/,year);
		}
	}
	
	if(err == 0) {
		DateField.value = szDateFormat;
		//alert(DateField.value);
	}
	/* Error-message if err != 0 */
	else {
		if(err==28) {
			DateField.value = szDateFormat;
		}
		else {
			if(arguments.length>2 && err==27) {
				if(arguments[3]=='DoNotRoundItUp') {
					DateField.value = szDateFormat;
				}
				else {
					DateField.value = "";
				}
			}
			else {
				DateField.value = "";
			}
		}  
	}
	
	if(err == 0) {

		return true;

	}
	else {
		return false;
	}
}
}

var ParamsLabels = new Array();
ParamsLabels.color = 'red';
ParamsLabels.fontWeight = 'bold';
var Styles_wo_Errors = new Array();

function ValidateFlight()
{
        var myFromDate = new Date();
		var haserror = false;
        errs = new Array();

        var depDD1, depMY1, retDD1, retMY1;
        flytmpDep1 = BC('X_DATE').value;
        flytmpDep = flytmpDep1.split("/");

        flytmpRet1 = BC('X_RDATE').value;
        flytmpRet = flytmpRet1.split("/");
	var temp = 0;
	if(way == 'O'){
                if(flytmpDep1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)){
		depDD1 = flytmpDep[0];
	        depMY1 = flytmpDep[1];
        	depYY1 = flytmpDep[2];
                if(depYY1.length <= 2){
                  depYY1 = "20"+depYY1;
                }
		}
		if(!flytmpDep1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/) || !(depYY1 >= myFromDate.getFullYear())){
                errs.push(new ErrMsg('D_DATE',errFlight03)); temp = 1;
		}else if ((depMY1 == '04') || (depMY1 == '06') || (depMY1 == '09') || (depMY1 == '11') )
        {
                if (depDD1 > 30)
                {
                        errs.push(new ErrMsg('D_DATE',errFlight03)); temp = 1;
                }
        }
        else if (depMY1 == 02)
        {
                if (depDD1 > 29)
                {
                        errs.push(new ErrMsg('D_DATE',errFlight03)); temp = 1;
                }
        }
	else if((depMY1 == 0) || (depMY1 > 12)){
		errs.push(new ErrMsg('D_DATE',errFlight03)); temp = 1;
		
	}else
        {
                if (depDD1 > 31)
                {
                        errs.push(new ErrMsg('D_DATE',errFlight03)); temp = 1;
                }
        }
            
        }else{
		if((flytmpDep1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)) || (flytmpRet1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/))){
		depDD1 = flytmpDep[0];
                depMY1 = flytmpDep[1];
                depYY1 = flytmpDep[2];
                if(depYY1.length <= 2){
                  depYY1 = "20"+depYY1;
                }
		retDD1 = flytmpRet[0];
	        retMY1 = flytmpRet[1];
        	retYY1 = flytmpRet[2];
                if(retYY1.length <= 2){
                  retYY1 = "20"+retYY1;
                }
		}
                if(!(flytmpDep1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)) || !(depYY1 >= myFromDate.getFullYear())){
                errs.push(new ErrMsg('D_DATE',errFlight03)); temp = 1;
    		}
		if(!(flytmpRet1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)) || !(retYY1 >= myFromDate.getFullYear())){
		if( temp == 0){
                errs.push(new ErrMsg('D_RDATE',errFlight04)); temp = 1;
		}
                }
	
	}
	if(way != '0' && temp == 0){
	if(depYY1 > retYY1){errs.push(new ErrMsg('D_DATE','La date de d\351part doit etre anterieur a la date de retour')); temp = 1;}
	else{
		if(depMY1 > retMY1 && depYY1 >= retYY1){errs.push(new ErrMsg('D_DATE','La date de d\351part doit etre anterieur a la date de retour')); temp = 1;}
		else{
			if(depMY1 == retMY1 && depDD1 > retDD1){errs.push(new ErrMsg('D_DATE','La date de d\351part doit etre anterieur a la date de retour')); temp = 1;}
		}
	
	}
	if(temp == 0){
	if ((depMY1 == '04') || (depMY1 == '06') || (depMY1 == '09') || (depMY1 == '11') )
        {
                if (depDD1 > 30)
                {
                        errs.push(new ErrMsg('D_DATE',errFlight03));
                }
        }
        else if (depMY1 == 02)
        {
                if (depDD1 > 29)
                {
                        errs.push(new ErrMsg('D_DATE',errFlight03));
                }
        }
        else if((depMY1 == 0) || (depMY1 > 12)){
                errs.push(new ErrMsg('D_DATE',errFlight03));

        }else
        {
                if (depDD1 > 31)
                {
                        errs.push(new ErrMsg('D_DATE',errFlight03));
                }
        }

	if ((retMY1 == '04') || (retMY1 == '06') || (retMY1 == '09') || (retMY1 == '11') )
        {
                if (retDD1 > 30)
                {
                        errs.push(new ErrMsg('D_RDATE',errFlight04));
                }
        }
        else if (retMY1 == 02)
        {
                if (retDD1 > 29)
                {
                        errs.push(new ErrMsg('D_RDATE',errFlight04));
                }
        }
        else if((retMY1 == 0) || (retMY1 > 12)){
                errs.push(new ErrMsg('D_RDATE',errFlight04));

        }else
        {
                if (retDD1 > 31)
                {
                        errs.push(new ErrMsg('D_RDATE',errFlight04));
                }
        }
	}

}

	// Validation for Max Passenger
        InitLabel('lbl_PAX0'); InitLabel('lbl_PAX1'); InitLabel('lbl_PAX2');
        if( (BC('PAX0').selectedIndex + BC('PAX1').selectedIndex + 1) > 9){
		HighlightLabel('lbl_PAX1');
		HighlightLabel('lbl_PAX0');
                alert("Il ne peut pas y avoir plus de 9 passagers par r\xE9servation.");
                return false;
        }
        // max pasngr val ends


        //if (retDD1 < depDD1) errs.push(new ErrMsg('D_DATE',errFlight03));
        //else if (retMY1 < depMY1) errs.push(new ErrMsg('D_DATE',errFlight03));

        var dest = BC('LARR').value;
        if (dest.length < 3) haserror = true;
        for (var i = 0; i < dest.length; i++)
        {
                if (charList.indexOf(dest.substring(i,i+1)) == -1) haserror = true;
        }
        if (haserror) errs.push(new ErrMsg('lLARR',errFlight01));
        if (BC('PAX2').selectedIndex > BC('PAX0').selectedIndex + 1) errs.push(new ErrMsg('lPAX2',errFlight02));

        if (errs.length < 1) return true;
        ErrMsgProvidor();
        return false;
	fnCapturePass()
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

  function AddError(field, label, error) {
    if (Errors.length == 0 && field) { form.elements[field].focus(); }
    Errors.push(error);
    Styles_wo_Errors[label] = new Object();
    if (label) { HighlightLabel(label); }
  }

  function HighlightLabel(label) {
         if (Styles_wo_Errors[label].ok) { return false; }
         Styles_wo_Errors[label].ok = true;
         var Label = MM_findObj(label);
    for (param in ParamsLabels) { Styles_wo_Errors[label][param] = Label.style[param]; Label.style[param] = ParamsLabels[param];  }
  }

  function InitLabel(label) {
    if (Styles_wo_Errors[label]) {
      var Label = MM_findObj(label);
      for (param in ParamsLabels) { if (typeof(Styles_wo_Errors[label][param]) != 'undefined') { Label.style[param] = Styles_wo_Errors[label][param]; } }
    } else {
      Styles_wo_Errors[label] = new Object();
    }
    Styles_wo_Errors[label].ok = false;
  }



function fnCapturePass(){
var checkmydate = checkDateFormat(document.fbe.X_DATE,8);
if(!checkmydate)
{
}
else
{
	document.fbe.submit();
}
}

function checkDateFormat(d1,calFormat,d2){
var dArr = new Array();
	dArr[0] = d1;
if (d2)
	dArr[1] = d2;
	
var re= /\D/;
var error = false; var errorMsg = '?berpr?fen Sie das Datum';
var mn = new Array(); var dy = new Array(); var yr = new Array();
for (i=0; i<dArr.length;i++){
	var num=eval(dArr[i]).value;
	if (num == ''){ error = true; }
	else{
		while (re.test(num)){num = num.replace(re,"");}		
		if (calFormat == 0 || calFormat == 3){ // mmddyy
			if (num.length != 6) error = true;
			else { mn[i] = num.substring(0,2); dy[i] = num.substring(2,4); yr[i] = num.substring(4,6);}
		}
		if (calFormat == 1 || calFormat == 2){ // mmddyyyy
			if (num.length != 8) error = true;
			else { mn[i] = num.substring(0,2); dy[i] = num.substring(2,4); yr[i] = num.substring(4,8);}
		}
		if (calFormat == 4){ // yyyymm
			if (num.length != 6) error = true;
			else { mn[i] = num.substring(4,6); dy[i] = 0; yr[i] = num.substring(4,8);}
		}
		if (calFormat == 5 || calFormat == 6 ){ // ddmmyy
			if (num.length != 6) error = true;
			else { dy[i] = num.substring(0,2); mn[i] = num.substring(2,4); yr[i] = num.substring(4,6);}
		}
		if (calFormat == 7 || calFormat == 8){ // ddmmyyyy
			if (num.length != 8) error = true;
			else { dy[i] = num.substring(0,2); mn[i] = num.substring(2,4); yr[i] = num.substring(4,8);}
		}
		if (parseFloat(mn[i]) > 12 || parseFloat(mn[i]) < 1) error = true;
		else {
			if (parseFloat(dy[i]) > Calendar_get_daysofmonth(parseFloat(mn[i])-1, parseFloat(yr[i])) || parseFloat(dy[i]) < 1) error = true; 
			}
		}
	if (error){alert(errorMsg); eval(dArr[i]).select(); return false;}
	else {
		eval(dArr[i]).value=dateFormats(parseFloat(mn[i])-1,dy[i],yr[i],calFormat);
		return true;
		}
	}
	if (d2){
		for (x=0;x<2;x++){
			if (yr[x].length == 2 && parseFloat(yr[x]) > 50) yr[x] = 19+yr[x];
			if (yr[x].length == 2 && parseFloat(yr[x]) < 50) yr[x] = 20+yr[x];
		}
		var date1 =new Date(yr[0], parseFloat(mn[0])-1, dy[0]); 
		var date2 =new Date(yr[1], parseFloat(mn[1])-1, dy[1]); 
		var one_day=1000*60*60*24
		var diff = Math.ceil(((date2.getTime()) - date1.getTime())/(one_day));
		if (diff < 0) {
		alert('Das von Ihnen angegebene R?ckreisedatum liegt vor dem Abreisedatum.'); d1.select();
		return false;
		}
		else{
		return true;
		}
	}
}

function dateFormats(m,d,y,calFormat){
	d = d.toString();
	m = m+1; m = m.toString();
	y = y.toString(); 
	var sy = y;
// -- convert to 2 digit numbers
	if (m.length == 1){m = '0'+ m;}
	if (d.length == 1){d = '0'+ d;}
	if (y.length == 4)
	 sy = y.substring(2,4);
	var format;
	switch (calFormat){
		case 0 : format = m + d + sy; break; 			//  mmddyy
		case 1 : format = m + d + y; break; 			//  mmddyyyy
		case 2 : format = m +'/'+ d +'/'+ y; break; 	//  mm/dd/yyyy
		case 3 : format = m +'/'+ d +'/'+ sy; break; 	//  mm/dd/yy
		case 4 : format = y + m; break; 				//  yyyymm
		case 5 : format = d + m + sy; break;			//  ddmmyy
		case 6 : format = d +'/'+ m +'/'+ sy; break; 	//  dd/mm/yy
		case 7 : format = d + m + y; break;				//  ddmmyyyy
		case 8 : format = d +'/'+ m +'/'+ y; break; 	//  dd/mm/yyyy
		default: format = m + d + y; break; 			//  mmddyyyy
	}
	return format;
}
<!-- OY - staging -->
