// --- [start /site/calendar_any.js] ---
//CALENDAR
var n=navigator,B=(n.userAgent+n.appName).toLowerCase(),V=parseInt(n.appVersion);
var N4=(B.indexOf("netscape")!=-1 && V==4),IE=(B.indexOf("microsoft")!=-1);

var calForm;
var dropDay1,dropMonth1,dropDay2,dropMonth2;
var currButtonNo;

var initDay,initMonth,initYear;
var endDay,endMonth;
var numMonths;
var anyMonthVal;

var calWidth=142;
var calHeight=182;

var bPressed,calendar;
var calendarHTML="";
var monthNames=new Array("x","x","x","x","x","x","x","x","x","x","x","x","x");//placeholders

if(!N4)document.onmouseup=function(e){
	calendar.hide();
	if(bPressed){
		bPressed=false;
		showCalendar(e);}
}

function startUpCalendar(stDate,endDate,formName,dd1,dm1,dd2,dm2){
	if(N4)return;
	if(!document.all)document.all=document.getElementsByTagName("*");
	calForm=document.forms[formName];
	dropDay1=calForm[dd1];dropMonth1=calForm[dm1];
	dropDay2=calForm[dd2];dropMonth2=calForm[dm2];

	calendar=new LayerFrame('cIframe');
	stPos=currpos=0;

	initDate=stDate.split('/');
	initDay=initDate[0]*1,initMonth=initDate[1]*1,initYear=initDate[2];
	endDate=endDate.split('/');
	endDay=endDate[0]*1,endMonth=endDate[1]*1;
  anyMonthVal = initMonth-1;
  if (category=="restaurants" | category=="frontier") anyMonthVal=0;
  if (anyMonthVal < 0) anyMonthVal == 11;
	if(endMonth > initMonth)numMonths=endMonth-initMonth+1;
	else numMonths=(12-initMonth)+endMonth+1;
	if(endMonth==initMonth)numMonths=1;

	/* start on current date
	if(dropMonth1)setDropdowns(initDay,initMonth,1);
	if(dropMonth2){setDropdowns(initDay,initMonth,2);currButtonNo=1;syncDropdowns();} */
}

function setCalendar(buttonNo){
	bPressed=true;
	currButtonNo=buttonNo;
	var ops=eval('dropMonth'+buttonNo);
	for(i=0;i < ops.length;i++){
		var opVal=ops.options[i].value;
		monthNames[opVal]=ops.options[i].text;
	}

	var currMonth=getChronMonth(eval('dropMonth'+buttonNo).value*1);
	if(eval('dropMonth'+buttonNo).value*1==anyMonthVal)currMonth=getChronMonth(initMonth);//if on "any"
	currpos=calHeight*currMonth;

	getCalendarHTML();
	var cIframe=frames['cIframe'];
	cIframe.document.write(calendarHTML);
	cIframe.document.close();
}

function showCalendar(e){
	var button=new posElement((IE)?event.srcElement:e.target);
	posX=button.x;posY=button.y;
	doc_height=document.body.clientHeight+(IE?document.body.scrollTop:0);
	if(posY > doc_height-calHeight)calendar.show(posX+36,posY-calHeight+20);
	else calendar.show(posX+36,posY);		
}

function posElement(element){
	this.x=element.offsetLeft;
	this.y=element.offsetTop;
    var pElement=element.offsetParent;
    while(pElement && pElement.id!='master_center'){
        this.x+=pElement.offsetLeft;
        this.y+=pElement.offsetTop;
        pElement=pElement.offsetParent;}
}

function LayerFrame(id){
	this.style=eval('document.all.'+id).style;
	this.reset=cReset;
	this.show=function(x,y){cReset();this.style.left=x+"px";this.style.top=y+"px";}
	this.hide=function(){this.style.top="-2000px";}
	this.next=scrollDown;
	this.previous=scrollUp;
}

function cReset(){
	//cIframe.scroll(0,stPos);currpos=stPos;
	cIframe.scroll(0,currpos);//keep state
}

function scrollDown(){
	currpos+=calHeight;
	cIframe.scroll(0,currpos);
}

function scrollUp(){
	currpos-=calHeight;
	if(currpos > 0)cIframe.scroll(0,currpos);
	else{currpos=stPos;calendar.reset();}
}

function displayDate(dt){
	calendar.hide();

	var DMY=dt.split("/");
	var day=DMY[0];
	var month=DMY[1];

	setDropdowns(day,month,currButtonNo);
	if(dropDay2)syncDropdowns();
}

function syncDropdowns(){
	var d1=dropDay1.value*1;
	var d2=dropDay2.value*1;
	var m1=dropMonth1.value*1;
	var m2=dropMonth2.value*1;
	if(m1==0||m2==0)return;
	var cm1=getChronMonth(m1),cm2=getChronMonth(m2);

	if(cm1 > cm2||(cm1==cm2 && d1 >= d2)){
	var tg,setDay,setMonth;
		if(currButtonNo==1){
			setDay=d1+1;setMonth=m1;
			if(!hasOptionVal(dropDay1,setDay)){setMonth+=1;if(setMonth > 12)setMonth=1;setDay=1;}
			if(m1==endMonth && d1==endDay){setMonth=m1;setDay=d1;}
		setDropdowns(setDay,setMonth,2);
		}
	if(currButtonNo==2){
			setDay=d2;setMonth=m2;
		setDropdowns(setDay,setMonth,1);
		}
	}
}

function setDropdowns(dv,mv,bn){
	var drDay=eval("dropDay"+bn);
	var drMonth=eval("dropMonth"+bn);
		
		selOptionVal(drMonth,mv);
		setDays(bn);
		selOptionVal(drDay,dv);
}

function selOptionVal(ob,val){
	//console.log(ob);
	var ops=new Object();
	for(var i=0;i < ob.length;i++)ops[ob[i].value]=ob[i];
	if(ops[val]){
		ops[val].selected=true;
		//console.log(ops[val])
	}
}

function hasOptionVal(ob,val){
	var ops=new Object();
	for(var i=0;i < ob.length;i++)ops[ob[i].value]=ob[i];
	if(ops[val])return true;
	else return false;
}

function getChronMonth(month){
	var cM=month-initMonth;
	return (cM < 0)?cM+12:cM;
}

function getCalendarHTML(){
	calendarHTML="";
	var currDate=new Date(Date.UTC(initYear,initMonth-1,initDay));//yyyy/mm from 0/d from 1

	calendarHTML+='<html><head><title>Calendar</title><style type="text/css">\
		body{font-family:Verdana,sans-serif;font-size:13px;}\
		a{text-decoration:none;}\
		a:hover{text-decoration:underline;}\
		td{font-family:Verdana,Helvetica,sans-serif;font-size:10px;text-align:center;color:#cccccc}\
		td a{color:#000000;}\
		b{color:#000000;}\
		.white{color:#FFFFFF;font-weight:bold;}\
		</style></head><body bgcolor="#000000" leftmargin="1" topmargin="1">'

	for(i=1;i <= numMonths;i++){//For each month

		var month=currDate.getMonth()+1;//mm is from 0
		var numDays=getNumDays(month);
		var year=currDate.getYear();if(year < 2000)year+=1900;

		currDate.setDate(1);//set to first of the month and get day of the week
		var firstDay=currDate.getDay()-1;//Sun is 0 from getDay() but we run from Mon
		if(firstDay < 0)firstDay=6;

	//Compile HTML
		var monthHTML='\
			<table border="0" cellspacing="0" cellpadding="0" height="180" width="140" bgcolor="#FFFFFF">\
			<tr><td height="20" width="15" bgcolor="#E43784">';
		if(i > 1)
			monthHTML+='<a href="javascript:top.calendar.previous()"><img src="http://www.lastminute.com/lmn/calendar/images/arrowl.gif" hspace="2" width="15" height="13" border="0"></a>';
		else
			monthHTML+='<img src="http://www.lastminute.com/lmn/calendar/images/trans.gif" width="20" height="13" border="0">';

			monthHTML+='</td><td colspan="5" width="100" bgcolor="#E43784" class="white">'+ monthNames[currDate.getMonth()+1] +
			' ' + year + '</td><td bgcolor="#E43784" width="20">';
			
		if(i < numMonths)
			monthHTML+='<a href="javascript:top.calendar.next()"><img src="http://www.lastminute.com/lmn/calendar/images/arrowr.gif" hspace="2" width="15" height="13" border="0"></a>';
		else
			monthHTML+='<img src="http://www.lastminute.com/lmn/calendar/images/trans.gif" width="15" height="13" border="0">';

			monthHTML+='</td></tr><tr><td height="20" width="20"><b>L</b></td><td width="20"><b>M</b></td><td width="20"><b>M</b></td>\
			<td width="20"><b>J</b></td><td width="20"><b>V</b></td><td width="20"><b>S</b></td><td width="20"><b>D</b></td></tr>';

		for(j=0;j < 42;j+=7){//for 6 week slots in month

			monthHTML+='<tr>';

			for(k=1;k < 8;k++){//for each day of week

				var slotNo=j+k;
				var countFromFirstDay=slotNo-firstDay;
				var isLink=(slotNo > firstDay) && (countFromFirstDay <= numDays);
				var preDays=(month==initMonth && countFromFirstDay < initDay);
				if(currButtonNo==2){
					var M=dropMonth1.value*1,D=dropDay1.value*1;
					var M1=getChronMonth(M),cM=getChronMonth(month);
					preDays=(cM < M1)||(cM==M1 && countFromFirstDay < D);
					if(M==anyMonthVal||D==0)preDays=(month==initMonth && countFromFirstDay < initDay);//if on "any"
				}
				var postDays=(month==endMonth && countFromFirstDay > endDay);
				var dateToShow=(isLink)?countFromFirstDay:'';

			//compile displayDate('dd/mm/yyyy') argument for link
				var dateDay=countFromFirstDay;
				var dateMonth=currDate.getMonth()+1;
				var dateYear=currDate.getYear();
				var dateString=dateDay+"/"+dateMonth+"/"+dateYear;

			//Write table cell with link
				monthHTML+='<td height="20">';
				if(isLink&&!preDays&&!postDays)
				monthHTML+='<a href="javascript:top.displayDate(\''+dateString+'\')">';
				monthHTML+=dateToShow;
				if(isLink&&!preDays&&!postDays)
				monthHTML+='</a>';
				monthHTML+='</td>';
			}
			monthHTML+='</tr>';
		}
			monthHTML+='\
			<tr><td height="20" bgcolor="#E43784" class="white">&nbsp;</td>\
			<td colspan="5" bgcolor="#E43784"><a href="javascript:top.calendar.hide()" class="white">fermer</a></td>\
			<td bgcolor="#E43784" class="white">&nbsp;</td></tr>\
			<tr><td colspan="7" bgcolor="#000000"><img src="http://www.lastminute.com/lmn/calendar/images/trans.gif" width="140" height="2"></td></tr></table>'
	
		calendarHTML+=monthHTML+'</body></html>';

		currDate.setMonth(currDate.getMonth()+1);
	}
}

function getNumDays(M){
	if(M==2){
		var febYear=(initMonth <= 2)?initYear:initYear*1+1;
		var febDate=new Date(Date.UTC(febYear,1,29));//yyyy/mm from 0/d from 1
		return (febDate.getMonth()==1)?29:28;
	}
	else return (M==9||M==4||M==6||M==11)?30:31;
}

//DROPDOWNS--
function setDays(buttonNo){
	if(N4)return;
	var D=eval("dropDay"+buttonNo).value*1;
	var M=eval("dropMonth"+buttonNo).value*1;
	var selectedMonth=eval("dropMonth"+buttonNo).value*1;
	var daysDD=eval("dropDay"+buttonNo);
	
	var weekday= new Array('dim','lun','mar','mer','jeu','ven','sam');
	
	
	daysDD.length=0;
	daysDD.options[0]=new Option("any_day",0);
	for(i=1;i <= getNumDays(M);i++){
		
		if (M < initMonth){
			var thisDate=new Date(Date.UTC(parseInt(initYear)+1,M-1,i));
		}else {
			var thisDate=new Date(Date.UTC(initYear,M-1,i));
		}
		
		if (i==1 || i==21 || i==31){
			var dayEndingLetters = '';
		}else if (i==2 || i==22){
			var dayEndingLetters = '';
		}else if (i==3 || i==23){
			var dayEndingLetters = '';
		}else {
			var dayEndingLetters = '';
		}
		
		var dayOfWeek = (typeof dayNameDisplay != 'undefined' && selectedMonth!=0) ? i + dayEndingLetters + ' ' + weekday[thisDate.getDay()] : i;
		/*var dayOfWeek = (typeof dayNameDisplay != 'undefined' && selectedMonth!=0) ? i : i;//See above for the original var which outputs 'xxth Mon' etc.*/
				
		daysDD.options[i]=new Option(dayOfWeek,i);
		
		if(hasOptionVal(daysDD,D))selOptionVal(daysDD,D);//keep day selected
		else daysDD[0].selected=true;//or set to first
	}
}

function setDates(buttonNo){//onchange from month dropdown
	if(N4)return;
	setDays(buttonNo);
	currButtonNo=buttonNo;
	if(dropDay2)syncDropdowns();
}
// --- [end prdpwgbd4804:4002 - /site/calendar_any.js - Feb 9, 2010 2:45 pm GMT - akamai,pcth0312,pct0410 - @WoMEgqoQ1kAAB5Jgg8AAFBw - cache 1800 ] ---
