var Calendar=_cl={
	servData:{ 
		today:new Date(),
		weekdays:[],
		months:[],	
		type:"affinity",
		nDays:320,
		txtBackNextMonth:[]
	},
	noValidarPasajeros:false,
	slider:null,
	finalDate:null,
	lay:null,
	allCalendars:[],
	layNameDay:[],
	changeMonth:false,
	active:false,
	actualPicker:-1,
  	nomCampOb:[],
	load:function(){
    _cl.nomCampOb.push(["passangersLbl",true]);
		_cl.SD=_cl.servData;
		_cl.allC=_cl.allCalendars;
		var auxMonthtoday=_cl.SD.today.getMonth();		
		_cl.SD.today=new Date(_cl.SD.today.getFullYear(), _cl.SD.today.getMonth(), _cl.SD.today.getDate(), parseInt(_cl.SD.today.getHours()+_cl.SD.nHours,10));
		if(auxMonthtoday!=_cl.SD.today.getMonth()) _cl.changeMonth=true;
		_cl.finalDate=new Date(_cl.SD.today.getFullYear(), _cl.SD.today.getMonth()+ _cl.SD.maxMonthsjs, parseInt(_cl.SD.today.getDate(),10));
		for(var xx=0;xx<arguments.length;xx++) {_cl.create(arguments[xx],xx);}		

	},
	create:function(args,id){		
		_cl.allC.push([args[1][0],args[1][1],args[1][2]]);
		_auxDay=(_cl.SD.today.getMonth().toString().length>1)? _cl.SD.today.getMonth().toString(): "0"+ parseInt(_cl.SD.today.getMonth()+1,10).toString(); //? getDate cambiado por getMonth
		_cl.layNameDay[id]=args[1][2];
		_cl.layNameDay[id].className=(_cl.SD.type=="affinity" )? "affinityWeekDay ftl":"affinityWeekDay ftl";
		_cl.listDays=args[1][0];
		_cl.listDays.cont=id;
		_cl.listMonthYears=args[1][1];
		_cl.listMonthYears.cont=id;
		_cl.listDays.selectedIndex=_cl.SD.today.getDate()-1;
		_cl.listMonthYears.selectedIndex=forms.getSelectedByValue(_cl.listMonthYears,_cl.SD.today.getFullYear().toString() +_auxDay);
		
		var cbDate=_cl.getCbDate(_cl.listDays,_cl.listMonthYears);
		_cl.layNameDay[id].innerHTML=_cl.returnDayWeek(cbDate);		
		
		_cl.listDays.onchange=_cl.returnListDays;
		_cl.listMonthYears.onchange=_cl.returnListMonthsAndYears;

		_cl.listDays.onkeypress=_cl.returnListDays;
		_cl.listMonthYears.onkeypress=_cl.returnListMonthsAndYears;				

		var link=document.createElement("a");
		link.href="#";
		link.contId=id;
		link.onclick=function( ){
		calculaAltura();
			_cl.actualPicker=this.contId;
			_cl.init(args[1], this,this.contId);
			return false;
		}
		
		var  imgCalendar=document.createElement("img");
		imgCalendar.className="icoCalendar";
		imgCalendar.src=config.urlImg+"calendar.gif";
		
		link.appendChild(imgCalendar);
		page.$(args[0]).appendChild(link);
	},
	getCbDay:function(obj){return obj.value},
	getCbMonth:function(obj){return  parseInt(obj.value.substr(4,6),10)-1;},
	getCbYear:function(obj){return  parseInt(obj.value.substr(0,4),10);},
	getCbDate:function(obj1,obj2){return  new Date(
		_cl.getCbYear(obj2),
		_cl.getCbMonth(obj2),
		_cl.getCbDay(obj1)
		);
	},	
	init:function(obj,objBtnCalendar,id){	
		if(!_cl.active || id==0 ){
			_cl.inputReturn=[];
			_cl.inputReturn["day"]=obj[0];
			_cl.inputReturn["month"]=obj[1];
			_cl.inputReturn["nameDay"]=obj[2];
			idInput=_cl.inputReturn["day"].id;
			
			var day=_cl.inputReturn["day"].value;
			var month=parseInt(_cl.inputReturn["month"].value.substr(4,6),10)-1;
			var year=parseInt(_cl.inputReturn["month"].value.substr(0,4),10);
			
			_cl.deleteCalendars();

			var lay=document.createElement("div");
			
			lay.setAttribute("id","CAL_"+idInput);
			lay.className="calendar";
			_cl.lay=lay;
			
			_cl.paint(day,month,year,lay);

			lay.style.display="block";
			lay.style.left=(obj[2]!=null)? xy.getX(objBtnCalendar)-(-1*objBtnCalendar.childNodes[0].offsetWidth) + 99 +"px"  :xy.getX(objBtnCalendar)-(-1*objBtnCalendar.childNodes[0].offsetWidth) + 99 +"px";
			lay.style.top=(obj[2]!=null)? xy.getY(obj[2]) +"px":xy.getY(objBtnCalendar) +"px";
			
		}else {return false;}
	},
	deleteCalendars:function(){
		for(var tt=0;tt<_cl.allC.length;tt++){
			if(page.$("CAL_"+_cl.allC[tt][0].id)){
				page.$("CAL_"+_cl.allC[tt][0].id).parentNode.removeChild(page.$("CAL_"+_cl.allC[tt][0].id));
			}
		}
	},
	cleanCalendars:function(){_cl.allCalendars=[];},
	returnDayWeek:function(d,m,y){
		var fs=(arguments.length==1)? d.getDay():new Date(y,m,d).getDay();
		fs=(fs==0)? 6:fs-1;
		return (_cl.SD.type=="affinity")? _cl.SD.weekdays[fs].substr(0,3): _cl.SD.weekdays[fs];
	},
	returnDateLists:function(day,monthYear,idLayDay,typeSel){
		calculaAltura();
		_cl.deleteCalendars()
		var month=parseInt(monthYear.value.substr(4,6),10)-1;
		var year=parseInt(monthYear.value.substr(0,4),10);
		_cl.layNameDay[idLayDay].innerHTML=_cl.returnDayWeek(day,month,year);
		_cl.compareDates(day,month,year,idLayDay,typeSel);
	},
	returnListDays:function(){
		calculaAltura();
		_cl.returnDateLists(this.value, this.parentNode.parentNode.getElementsByTagName("select")[1],this.cont,"d");
	},
	returnListMonthsAndYears:function(){
	calculaAltura();
		_cl.returnDateLists(this.parentNode.parentNode.getElementsByTagName("select")[0].value, this,this.cont,"m");
	},
	compareDates:function(d,m,y,id,type){
			
		var allOptions=[]
		var _difMonth=(_cl.changeMonth)? 0:1
		var firstChange=false;

		if(_cl.SD.type=="hotelssss") {
		
			
		}else{

			for(var tt=0;tt<_cl.allC.length;tt++){
				
				if (tt==0  && _cl.SD.type=="hotels" ) {
					var dateHotels=_cl.getCbDate(page.$("diaSalidaCont"),page.$("mesAnioSalida"))
				}				
				allOptions[tt]={date:new Date(_cl.allC[tt][1].value.substr(4,6)+"/"+_cl.allC[tt][0].value+"/"+_cl.allC[tt][1].value.substr(0,4))}
				var today=new Date(_cl.SD.today.getFullYear(), _cl.SD.today.getMonth(), _cl.SD.today.getDate())
		
				
				if(allOptions[tt].date<today){
					_auxDay1= parseInt(_cl.SD.today.getMonth()+2,10).toString();
					 _cl.allC[tt][1].selectedIndex=forms.getSelectedByValue(_cl.allC[tt][1],_cl.SD.today.getFullYear().toString()+_auxDay1)
					if (!_cl.onlyBooking || _cl.SD.type=="cars"){
						var dayCD=today.getDate()-1
						var monthCD=forms.getSelectedByValue(_cl.allC[tt][1],today.getFullYear().toString() +_auxDay)
						if(tt==0){
							dayCD=_cl.allC[tt][0].value-1
							monthCD++
							firstChange=true;
						} 
						 if(tt>0){
							if((allOptions[tt-1].date -today==0) && allOptions[tt].date<today){
								_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(_cl.allC[tt][0].value,_cl.allC[tt][1].value.substr(4,6),today.getFullYear()) 
							} 
						 }else{
							_cl.allC[tt][0].selectedIndex=dayCD
							_cl.allC[tt][1].selectedIndex=monthCD
							_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(_cl.allC[tt][0].value,_cl.allC[tt][1].value.substr(4,6)-1,today.getFullYear()) 
						 }
						 if (_cl.SD.type=="cars"){
							dayCD=_cl.allC[tt][0].value-1
							//monthCD++
							firstChange=true;
							_cl.allC[tt][0].selectedIndex=dayCD
							_cl.allC[tt][1].selectedIndex=monthCD
							_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(_cl.allC[tt][0].value,_cl.allC[tt][1].value.substr(4,6)-1,today.getFullYear()) 
						 
						 }
						 
						 
					}else{
						if (_cl.SD.type!="cars"){
							var dayOfStay = parseInt(page.$("diaSalidaCont").value,10) + parseInt(page.$("lmnLengthOfStay").value,10);					
							page.$("diaSalidaNmDia").innerHTML=dayOfStay + " " + page.$("mesAnioSalida").options[page.$("mesAnioSalida").selectedIndex].text
						}
						
						
					}
					
					allOptions[tt]={date:new Date(_cl.allC[tt][1].value.substr(4,6)+"/"+_cl.allC[tt][0].value+"/"+_cl.allC[tt][1].value.substr(0,4))}
				}
				if(tt>0 && !_cl.active && _cl.SD.type!="hotels" ){
				  
					if(allOptions[tt].date<allOptions[tt-1].date){
					  
						if(
							((id>0 && type=="d") || _cl.actualPicker>0 )&&
							!(allOptions[tt-1].date>=_cl.finalDate) &&
							parseInt(_cl.allC[tt][0].value,10)<parseInt(_cl.allC[tt-1][0].value,10) && 
							_cl.allC[tt-1][1].value.substr(0,4)==_cl.allC[tt][1].value.substr(0,4))
							
						{
							if(_cl.allC[tt-1][1].value.substr(0,4)>_cl.SD.today.getFullYear()){
								 var op1=parseInt(_cl.allC[tt-1][1].value.substr(4,6),10 )
								 var op2=12*(_cl.allC[tt-1][1].value.substr(0,4)-_cl.SD.today.getFullYear())
								 var op3=_cl.SD.today.getMonth()
								 var vm=parseInt(1+(op1+op2-op3-_difMonth),10)
								 
								 
							}else {
								var vm=parseInt(1+(_cl.allC[tt-1][1].value.substr(4,6) -_cl.SD.today.getMonth() -_difMonth),10 )
							}		
							if(_cl.allC[tt][1].options.length==vm){
								_cl.allC[tt][0].selectedIndex=_cl.allC[tt-1][0].selectedIndex
								_cl.allC[tt][1].selectedIndex=_cl.allC[tt-1][1].selectedIndex
								allOptions[tt].date=allOptions[tt-1].date
							}else{
								_cl.allC[tt][1].selectedIndex=vm;			
								allOptions[tt].date=new Date(_cl.allC[tt][1].value.substr(0,4),_cl.allC[tt][1].value.substr(4,6)-1,_cl.allC[tt][0].value,0,0,0,0)
								_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(allOptions[tt].date)
							}
						}else{
							var changeDay=(firstChange)?0:1;
							_cl.allC[tt][0].selectedIndex=_cl.allC[tt-changeDay][0].value-1/***/
							 
							if(_cl.allC[tt-1][1].value.substr(0,4)>_cl.SD.today.getFullYear()){
								var p1=parseInt(_cl.allC[tt-1][1].value.substr(4,6) ,10) 
								var p2=parseInt(12*(_cl.allC[tt-1][1].value.substr(0,4)-_cl.SD.today.getFullYear())-_cl.SD.today.getMonth(),10) 
													_cl.allC[tt][1].selectedIndex=parseInt(p1+p2,10)-_difMonth
								allOptions[tt].date=new Date(_cl.allC[tt-1][1].value.substr(0,4),_cl.allC[tt-1][1].value.substr(4,6)-1,_cl.allC[tt-1][0].value,0,0,0,0)							
							}else {
								 _cl.allC[tt][1].selectedIndex=_cl.allC[tt-1][1].value.substr(4,6) -_cl.SD.today.getMonth() -_difMonth
								allOptions[tt].date=new Date(_cl.allC[tt][1].value.substr(0,4),_cl.allC[tt][1].value.substr(4,6)-1,_cl.allC[tt][0].value,0,0,0,0)
							}
							
							_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(allOptions[tt].date)
							
						}				
					}
					
				}
				
				if(allOptions[tt].date>=_cl.finalDate){		
					 _cl.allC[tt][0].selectedIndex=_cl.finalDate.getDate()-1
					
					if (!_cl.onlyBooking){
						_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(_cl.finalDate)
					} else{
						Calendar.hotels.setDate();
					}
				}
				
				var mm=parseInt(_cl.allC[tt][1].value.substr(4,6)-1,10)
				var yyyy=parseInt(_cl.allC[tt][1].value.substr(0,4),10)
				
				if(_cl.allC[tt][0].value>Gdate.dayMonth(mm,yyyy)){
					 _cl.allC[tt][0].selectedIndex=Gdate.dayMonth(mm,yyyy)-1
					var auxDate=new Date(_cl.allC[tt][1].value.substr(0,4),_cl.allC[tt][1].value.substr(4,6)-1,Gdate.dayMonth(m,y))
					_cl.allC[tt][2].innerHTML=_cl.returnDayWeek(auxDate)
					if(_cl.SD.type=="hotels"){
						Calendar.hotels.setDate()
					}
				}	


				if( tt==0 && _cl.SD.type=="hotels" && dateHotels<=_cl.SD.today){
					page.$("diaSalidaCont").selectedIndex=_cl.SD.today.getDate()-1
					page.$("mesAnioSalida").selectedIndex=_cl.SD.today.getMonth()-1
					Calendar.hotels.setDate()		
				}
			}
			 if (_cl.SD.type=="cars"){
				var dateCars=_cl.getCbDate(page.$("diaSalidaCont"),page.$("mesAnioSalida"))
				var dateCars2=_cl.getCbDate(page.$("diaRegresoCont"),page.$("mesRegresoCont"))
				page.$("diaSalidaNmDia").innerHTML=_cl.returnDayWeek(page.$("diaSalidaCont").value,page.$("mesAnioSalida").value.substr(4,6)-1,page.$("mesAnioSalida").value.substr(0,4)) 
				page.$("diaRegresoNmDia").innerHTML=_cl.returnDayWeek(page.$("diaRegresoCont").value,page.$("mesRegresoCont").value.substr(4,6)-1,page.$("mesRegresoCont").value.substr(0,4)) 
				page.$("numDays").innerHTML = Math.ceil((dateCars2.getTime() - dateCars.getTime()) / (1000*60*60*24));
				Calendar.cars.choras();
			 }
			
			firstChange=false;
			_cl.actualPicker=-1
		}
	},
	paintNavigation:function(day,month,year,lay){
		var p=document.createElement("p");
		p.className="clear";

		var lnkPrev=document.createElement("a");
		lnkPrev.setAttribute("href","#");

		var imgBack=document.createElement("img");
		imgBack.setAttribute("alt",_cl.SD.txtBackNextMonth[0]);
		imgBack.setAttribute("title",_cl.SD.txtBackNextMonth[0]);
		imgBack.src=config.urlImg+"btn_calendarBack.gif";
		imgBack.className="backmonth";
		
		var newMonth=month-1;
		var newYear=year;
		var d=day

		if (newMonth<0){
			newMonth=11;
			newYear=year-1;
		}

		lnkPrev.onclick=function(){
		calculaAltura();
			_cl.paint(d,newMonth,newYear,lay,lay.getElementsByTagName("table")[0]);
			return false;
		}
		
		lnkPrev.appendChild(imgBack);
		p.appendChild(lnkPrev);

		var spanNav=document.createElement("span");
		spanNav.className="txtmonth";

		spanNav.appendChild(document.createTextNode(_cl.SD.months[month]+" "+year));
		p.appendChild(spanNav);
		
		var lnkNext=document.createElement("a");
		lnkNext.setAttribute("href","#");
		
		var imgNext=document.createElement("img");
		imgNext.setAttribute("alt",_cl.SD.txtBackNextMonth[1]);
		imgNext.setAttribute("title",_cl.SD.txtBackNextMonth[1]);
		imgNext.src=config.urlImg+"btn_calendarForward.gif";
		imgNext.className="nextmonth";
		
		lnkNext.onclick=function(){
		calculaAltura();
			var newMonth=month+1;
			var newYear=year;
			if (newMonth==12) {
				newMonth=0;
				newYear=year+1;
			}	
			_cl.paint(d,newMonth,newYear,lay,lay.getElementsByTagName("table")[0]);
			return false;
		}
		
		lnkNext.appendChild(imgNext);
		p.appendChild(lnkNext);
		lay.appendChild(p);
	},
	paintDayOfWeek:function(weekdays,the_table){ 
		var thead=document.createElement("thead");
		var row=document.createElement("tr");
		for (i=0;i<weekdays.length;i++){
			var cell=document.createElement("th");
			var cellAbbr=document.createElement("abbr");
			cellAbbr.title=weekdays[i];
			cellAbbr.appendChild(document.createTextNode(weekdays[i].substr(0,2)));
			cell.appendChild(cellAbbr);
			row.appendChild(cell);
		}
		thead.appendChild(row);
		the_table.appendChild(thead);
	},
	paintMonth:function(day,month,year,the_table){
		var difMonth=(_cl.changeMonth)? 0:1;
		var day=parseInt(day,10);
		var f=new Date(year,month,1);
		var beginningDay=f.getDay();
		if (beginningDay==0) beginningDay=7;

		if (month>0){
			previousDay=Gdate.dayMonth(month-1,year);
			var mesaux=month-1;
			var anyoaux=year;
		}else{
			previousDay=Gdate.dayMonth(11,year-1);
			var mesaux=11;
			var anyoaux=year-1;
		}

		var tbody=document.createElement("tbody");
		var tr=document.createElement("tr");

		for (j=previousDay-(beginningDay-1)+1;j<=previousDay;j++){
			var cell=document.createElement("td");
			cell.className="cellOtroMes";
			var aux=new Date(anyoaux,mesaux,j,_cl.SD.today.getHours(),_cl.SD.today.getMinutes(),_cl.SD.today.getSeconds());
			cell.appendChild(document.createTextNode(""));
			tr.appendChild(cell);
		}
		
		var cont=beginningDay;
		for (i=1;i<=7-beginningDay+1;i++){
			var cell=document.createElement("td");
			var text=document.createTextNode(i);
			var lnk=document.createElement("a");
			lnk.setAttribute("href","#");
			var aux=new Date(year,month,i-1,_cl.SD.today.getHours(),_cl.SD.today.getMinutes(),_cl.SD.today.getSeconds());
			if (aux<=_cl.finalDate  && (_cl.SD.today<=aux || _cl.SD.today.getDate()==i)){
			
				lnk.appendChild(text);
				
				if(lnk.firstChild.data==day  && month==_cl.inputReturn["month"].value.substr(4,6)-1) {
					cell.className="nullDat";
				}
				lnk.onclick=function(){
				calculaAltura();
					_cl.returnSelection(this.firstChild.data,month,year);
					return false;
				}
				cell.appendChild(lnk);
				
			}else {
			
				var nullDat=document.createElement("span");
				nullDat.appendChild(document.createTextNode(i));
				nullDat.className="nullDat"
				cell.appendChild(nullDat);
			}
			if(aux<=_cl.SD.today ) {
				the_table.parentNode.childNodes[0].getElementsByTagName("a")[0].style.display="none";
      }
			tr.appendChild(cell);
			cont++;
		}
		tbody.appendChild(tr);
		the_table.appendChild(tbody);
		
		var d=i;
		var row2=2;
		if (month==11) {
			var messig=0;
			var anyosig=year+1;
		}else {
			messig=month+1;
			anyosig=year;
		}
		var writeThis=0;
		
		while ((row2<=6) && (parseInt(writeThis)<Gdate.dayMonth(month,year))){
			var row=document.createElement("tr");
			for (n=1;n<=7;n++) {
				if (d<=Gdate.dayMonth(month,year)){
					var cell=document.createElement("td");
					var text=document.createTextNode(d);
					var lnk=document.createElement("a");
					lnk.setAttribute("href","#");
					var aux=new Date(year,month,d+1,0,0,0,0);
					if ((aux<=_cl.finalDate) &&(_cl.SD.today<aux) || ((_cl.SD.today.getDate()==d)&&(aux.getMonth()>=month) && (aux.getMonth()>=year))){
						lnk.appendChild(text);
						if(lnk.firstChild.data==day && month==_cl.inputReturn["month"].value.substr(4,6)-1) cell.className="nullDat";
						cell.appendChild(lnk);
						lnk.onclick=function(){
						calculaAltura();
							_cl.returnSelection(this.firstChild.data,month,year);
							return false;
						}
					}else{
						var nullDay=document.createElement("span");
						nullDay.appendChild(document.createTextNode(d));
						nullDay.className="nullDat";
						cell.appendChild(nullDay);
						
						if(aux>_cl.finalDate ){
							the_table.parentNode.childNodes[0].getElementsByTagName("a")[1].style.display="none";
						}
					}
					writeThis=d;
					row.appendChild(cell);

				}else{
					var cell=document.createElement("td");
					cell.className="cellOtroMes";
					cell.appendChild(document.createTextNode(""));
					row.appendChild(cell);
				}
				d++;
			}
			tbody.appendChild(row);
			row2++;
		}
		
	},
	returnSelection:function(d,m,y,obj){
		var monthWrite=m+1;
		if(obj==null){
			var objDay=_cl.inputReturn["day"];
			var objMonth= _cl.inputReturn["month"];
			var objNameDay=_cl.inputReturn["nameDay"];
		}else if(typeof(obj[0])=="object"){
			var objDay=obj[0];
			var objMonth=obj[1];
			var objNameDay=obj[2];
		}else{
			var objDay=page.$(obj[0]);
			var objMonth=page.$(obj[1]);
			var objNameDay=page.$(obj[2]);
		}
		//objDay.selectedIndex=parseInt(d)-1;
		if(parseInt(d) < 10) d = "0"+d.toString();
		objDay.value=d;
		var difMonth=(_cl.changeMonth)? 0:1;

		if(y>_cl.SD.today.getFullYear()){
			if (page.$("mesAnioSalida")){
				page.$("mesAnioSalida").selectedIndex=parseInt(monthWrite)+(12*(y-_cl.SD.today.getFullYear())-_cl.SD.today.getMonth())-difMonth;
				objMonth.value=page.$("mesAnioSalida").value;
				}
			else{
				objMonth.selectedIndex=parseInt(monthWrite)+(12*(y-_cl.SD.today.getFullYear())-_cl.SD.today.getMonth())-difMonth;
			}
		}else{
			 //objMonth.selectedIndex=parseInt(monthWrite)-_cl.SD.today.getMonth()-difMonth;
			if (page.$("mesAnioSalida")){			 
				page.$("mesAnioSalida").selectedIndex=parseInt(monthWrite)-_cl.SD.today.getMonth()-difMonth;
				objMonth.value=page.$("mesAnioSalida").value;
			}
			else{
				objMonth.selectedIndex=parseInt(monthWrite)-_cl.SD.today.getMonth()-difMonth;
			}
		}

		objNameDay.innerHTML=_cl.returnDayWeek(new Date(monthWrite +"/"+d +"/"+y));
		_cl.compareDates(d,m,y);
		if((obj==null))_cl.lay.style.display="none";				
	},
	paint:function(d,m,y,lay){ 
		var thechilds=lay.childNodes;
		for (i=thechilds.length-1;i>=0;i--){lay.removeChild(thechilds[i]);}
		the_table=document.createElement("table");
		the_table.cellPadding=0;
		the_table.cellSpacing=0;
		
		var theBody=document.getElementsByTagName("body")[0];
		theBody.appendChild(lay);
		
		
		var auxText=document.createElement("div");
		auxText.appendChild(document.createTextNode("b"));
		auxText.style.height="1px";
		auxText.style.width="1px";
			auxText.style.border="1px solid red";
			auxText.style.display="inline";
		auxText.style.visibility="hidden";
		auxText.style.overflow="hidden";
		
		theBody.appendChild(auxText);
		_cl.paintNavigation(d,m,y,lay);
		lay.appendChild(the_table);
		_cl.paintDayOfWeek(_cl.SD.weekdays,the_table);
		_cl.paintMonth(d,m,y,the_table);
	}, 
	setType:function(v) {
		_cl.servData.type=v;
	}
}

Calendar.affinity={
	servData:{
		strErrsOrDest:[], 
		strErrsPassengers:[]
	},
	maxTickets:9,
	strErrors:"",
	isok:true,
	crlOriginDestination:function(){
		var originCity=page.$("ciudadOrigen");
		//var destinationCity=page.$("ciudadDestino");
		if (originCity.value==-1){
			_cl.affinity.addErr(_cl.affinity.servData.strErrsOrDest[1]);
			page.$("origen").getElementsByTagName("SPAN")[0].getElementsByTagName("STRONG")[0].className="error";
		}
		/*if (destinationCity.value==-1){
			_cl.affinity.addErr(_cl.affinity.servData.strErrsOrDest[2]);
			page.$("destino").getElementsByTagName("SPAN")[0].getElementsByTagName("STRONG")[0].className="error";
		}
		if (originCity.value==destinationCity.value){
			_cl.affinity.addErr(_cl.affinity.servData.strErrsOrDest[0]);
			page.$("origen").getElementsByTagName("SPAN")[0].getElementsByTagName("STRONG")[0].className="error";
			page.$("destino").getElementsByTagName("SPAN")[0].getElementsByTagName("STRONG")[0].className="error";
		}*/		
	}, 
	crtPassengers:function(){
		var numAdult = parseInt(page.$("ADTCont").value,10);
		var numChild = parseInt(page.$("CHDCont").value,10);
		var numInfant = parseInt(page.$("INFCont").value,10);
		
		var total=parseInt(numAdult+numChild,10);
		var totalMinors=parseInt(numChild+numInfant,10);
		
		if(numAdult<numInfant){_cl.affinity.addErr(_cl.affinity.servData.strErrsPassengers[0]);}
		if(total>_cl.affinity.maxTickets){_cl.affinity.addErr(_cl.affinity.servData.strErrsPassengers[1]);}
		if(totalMinors/2 > numAdult){_cl.affinity.addErr(_cl.affinity.servData.strErrsPassengers[2]);}
	},
	onlyOneWay:function(obj){
		_cl.active=obj.checked;
		_cl.deleteCalendars();
		for(var xx=1;xx<_cl.allC.length;xx++){
			_cl.allC[xx][0].disabled=obj.checked;
			_cl.allC[xx][1].disabled=obj.checked;			
		}		
		page.$("mesRegresoCompleto").disabled=obj.checked;
		if(!obj.checked){_cl.compareDates();}
	},
	hasMaxPrice:function(obj){
		page.$("maxPrice").disabled=!obj.checked
	},
	validarPrecio:function(obj,min) {
		var valorPrecio = 0;
		var valorPrevio = parseInt(obj.value,10);
		if (isNaN(valorPrevio)) {
			valorPrecio = parseInt(min,10);
    	} else {
	    	valorPrecio = parseInt(obj.value,10);
    	}

	},
	addErr:function(err){
		_cl.affinity.isok=false;
		_cl.affinity.strErrors+=err +"\n";
	},
	clearErr:function(){
		_cl.affinity.isok=true;
		_cl.affinity.strErrors="";
	},
	clearErrorLabels:function(){
		elements =dom.getElementsByClassName(page.$("content"),"strong","error");
		for(i=0;i<elements.length;i++)
			elements[i].className=elements[i].className.replace("error","");
	}, 
	showErr:function(){
		alert(_cl.affinity.strErrors);        
		_cl.affinity.clearErr();
	}, 
	setNoValidarPasajeros:function() {
		_cl.noValidarPasajeros=true;
	},
	findErr:function(){
		_cl.affinity.crlOriginDestination(); 
		//Para que no de errores de validacion de pasajeros si pulsamos en el formulario lateral "Ver mejores ofertas", lo que hacemos es reestablecer el numero de pasajeros a "0"
		if(_cl.noValidarPasajeros) {
			page.$("ADTCont").value=1;
			page.$("CHDCont").value=0;
			page.$("INFCont").value=0;
			_cl.noValidarPasajeros=false;
		}
		//Validamos los pasajeros unicamente si el div donde se contienen los combos existe en el formulario (solamente para resultados) y est� visible
		if(page.$("pasajeros")) {
			if(page.$("pasajeros").style.display != "none"){
				_cl.affinity.crtPassengers(); 
			}		
		}
		_cl.compareDates(); 
		return (_cl.affinity.strErrors!="");
	},	
	submitFirst:false,
	send:function(){       
		Calendar.affinity.clearErrorLabels();
		if(_cl.affinity.findErr()) {   
			_cl.affinity.showErr();
			return false;
		}else if(!_cl.affinity.submitFirst){
			_cl.affinity.submitFirst=true;
		} else{return false;}

	},
	sliderPrecio:function(min,max) {
		min = parseInt(min,10);
		max = parseInt(max,10);
		max = max+1; //Por si es un precio decimal
      	//page.$('maxPrice').value = max;
   		_cl.slider= new Control.Slider('handle1','track1',{ sliderValue:max,range:$R(min,max),onSlide:function(v){},onChange:function(v){	_cl.affinity.filter(parseInt(v,10), 'tablaVuelos_affinity', '1');}});
     },
     changeSliderValue:function(min) {
     	//if (page.$('maxPrice').value=="") {
        //	page.$('maxPrice').value=min
        //} 
      	//_cl.slider.setValue(parseInt(page.$('maxPrice').value,10));
	},
	 filter:function (phrase, _id,tipo){
	 	
	 	$('capturarPrecio').innerHTML=parseInt(_cl.slider.value);
	 	 //var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
	 	//var mapaObj = InternetExplorer? mapa : document.mapa;
	 	var checkboxes;
		/*if (tipo == 0) {
			checkboxes = _cl.affinity.contar(0);
		}else{
			checkboxes = _cl.affinity.contar(1);
		}*/
		checkboxes = _cl.affinity.contar();
 		 // Precio del slider para filtrar
 		 
		 var precio = phrase;
		 if (mostrarMapaSlide) {
			filtroFlashPrecio(precio);
			}
			
		if (mostrarMapaSlide) {
			filtroFlashDestino(checkboxes);
		}
		//Recupera la tabla por el id
		 var table = document.getElementById(_id);
		 var ele;
		 for (var r = 1; r < table.rows.length; r++){
		 //Recupera el valor de la colummna hijo número 8 de cada fila
		 ele = $(table.rows[r]).getElementsByTagName('td')[0].innerHTML;
		 ele = ele.trim();
		 var displayStyle = 'none';
		 //var mapaObj = document.getElementByName('mapa');
 		//mapaObj.SetVariable("precio_limite",precio);
 		//mapaObj.TCallFrame("_root",3);
		 
		 if ((parseInt(ele,10) <= precio)&&(_cl.affinity.filterDestinoPart1(checkboxes,$(table.rows[r]))==true)){
		  displayStyle = ''
		  }
		 else {
		  displayStyle = 'none';		
		 }
		 
		 table.rows[r].style.display = displayStyle;
		 }
 
		 pintarFondosTabla(table);
 	},filterCiudad:function (listaCiudad, _id,tipo){
	 	 var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
	 	var mapaObj = InternetExplorer? mapa : document.mapa;
	 	var checkboxes;
		/*if (tipo == 0) {
			checkboxes = _cl.affinity.contar(0);
		}else{
			checkboxes = _cl.affinity.contar(1);
		}*/
		checkboxes = listaCiudad;
 		 // Precio del slider para filtrar
 		 
		 var precio = parseInt(_cl.slider.value,10);
		
		//Recupera la tabla por el id
		 var table = document.getElementById(_id);
		 var ele;
		 for (var r = 1; r < table.rows.length; r++){
		 //Recupera el valor de la colummna hijo número 8 de cada fila
		 ele = $(table.rows[r]).childElements()[1].firstChild.data;
		 var displayStyle = 'none';
		 //var mapaObj = document.getElementByName('mapa');
 		mapaObj.SetVariable("precio_limite",precio);
 		mapaObj.TCallFrame("_root",3);
		 
		 if ((parseInt(ele,10) < precio)&&(_cl.affinity.filterDestinoPart1(checkboxes,$(table.rows[r]))==true)){
		  displayStyle = ''
		  }
		 else {
		  displayStyle = 'none';		
		 }
		 
		 table.rows[r].style.display = displayStyle;
		 }
		  pintarFondosTabla(table);
 	},
	
    /*
	Función que crea un array con los values de los checkboxs que están seleccionados.
	Llama a la función filterDestino (_id,listaCiudades) pasándole por parámetro el id de la
	tabla que queremos filtrar y la lista de values que ha creado.
	
	*/
	contar:function(){
	  var checkboxes;
	  var form = $('affinityShoppingSearchForm');

		
		
		var checkboxes = form.getInputs('checkbox', 'selectedCity');
		
			//checkboxes = document.getElementById("affinityShoppingSearchForm").selectedCity;
		
  
	  var listaCiudades = new Array();
	  var cont = 0;
	  for (var x=0; x < checkboxes.length; x++) {
	    if (checkboxes[x].checked) {
	      listaCiudades[cont]=checkboxes[x].value;
	      cont = cont + 1;
	     }
	   }
	   return listaCiudades;
	 // _cl.affinity.filterDestino ("tablaVuelos_affinity",listaCiudades);
	},
	
	postMarcado:function(){
	  var checkboxes;
	  var form = $('affinityShoppingSearchForm');

		
		
		var checkboxes = form.getInputs('checkbox', 'selectedCity');
	  var listaCiudades = new Array();
	  var cont = 0;
	  for (var x=0; x < checkboxes.length; x++) {
	    if (checkboxes[x].checked) {
	      listaCiudades[cont]=checkboxes[x].value;
	      cont = cont + 1;
	     }
	  }
	  _cl.affinity.filterDestino ("tablaVuelos_affinity",listaCiudades);
	}, 
	
	filterDestinoPart1:function (listaCiudades,fila){
		//Recupera el valor de la colummna hijo número 3 de cada fila
	    var display=false;
		var ciudad = fila.childElements()[1].firstChild.data;
	    var displayStyle = 'none';
	    for (var index=0; index < listaCiudades.length; index++) {
	      if (ciudad == listaCiudades[index]){
	        //displayStyle = '';
			display=true;
			break;
	        }
	      else {
	        dispaly=false;
			//displayStyle = 'none';
	        }
	     }
		
		return display;
		
		
		},
	
	/*
	Función que filtra ciudades
	*/
	filterDestino:function (_id,listaCiudades){
	 var ciudades = listaCiudades; 
	 var table = document.getElementById(_id);
	 var ele;
	 for (var r = 1; r < table.rows.length; r++){
	 //Recupera el valor de la colummna hijo número 3 de cada fila
	    ele = $(table.rows[r]).childElements()[3].firstChild.data;
	    var displayStyle = 'none';
	    for (var i=0; i < listaCiudades.length; i++) {
	      if (ele == listaCiudades[i]){
	        displayStyle = '';
	        break;
	        }
	      else {
	        displayStyle = 'none';
	        }
	     }
	  table.rows[r].style.display = displayStyle;
	 }
	  pintarFondosTabla(table);
	},
	/*
	Función que marca todos los checkboxs
	*/
	marcarTodasCiudades:function(){
	  var checkboxes;
	  var form = $('affinityShoppingSearchForm');

		
		
		var checkboxes = form.getInputs('checkbox', 'selectedCity');

	 if (checkboxes[0].checked){
	    for (var x=0; x < checkboxes.length; x++) {
	        checkboxes[x].checked = true;
	    }
	 
	 }else{
	    for (var x=0; x < checkboxes.length; x++) {
	        checkboxes[x].checked = false;
	    }
	 }
	 
	 	_cl.affinity.filter(parseInt(_cl.slider.value,10), 'tablaVuelos_affinity',0);
	 //_cl.affinity.filter();
	},
	
		/*
	Función que marca todos los checkboxs
	*/
	marcarUnaCiudad:function(){
		var checkboxes;
	  var form = $('affinityShoppingSearchForm');

		
		
		var checkboxes = form.getInputs('checkbox', 'selectedCity');
		
	 if (checkboxes[0].checked){
	    	checkboxes[0].checked=false;
	 
	 }	 
	 	_cl.affinity.filter(parseInt(_cl.slider.value,10), 'tablaVuelos_affinity',0);
	 	
	 //_cl.affinity.filter();
	},
	
	actualizarCombos:function(ori,dest,fsal,freg) {
		page.$("departureCityOculto").value = ori;
		page.$("destinationCityOculto").value = dest;
		
		var fecha = fsal.toString();
		var d=parseInt(fecha.substr(0,2),10);
		var m=parseInt(fecha.substr(3,2),10);
		var y=parseInt(fecha.substr(6,4),10);
		
		page.$("departureDayOculto").value = fecha.substr(0,2);
		var mes = (fecha.substr(6,4)+fecha.substr(3,2)).toString();
		page.$("departureMonthOculto").value = mes; //El mes se forma con el a�o y mes conjuntamente
		////page.$("diaSalidaNmDia").textContent = _cl.returnDayWeek(d,m-1,y);
		
		fecha = freg.toString();
		d=parseInt(fecha.substr(0,2),10);
		m=parseInt(fecha.substr(3,2),10);
		y=parseInt(fecha.substr(6,4),10);
		
		page.$("returnDayOculto").value = fecha.substr(0,2);
		mes = (fecha.substr(6,4)+fecha.substr(3,2)).toString();
		page.$("returnMonthOculto").value = mes; //El mes se forma con el a�o y mes conjuntamente
		////page.$("diaRegresoNmDia").textContent = _cl.returnDayWeek(d,m-1,y);	
	},
	
	cargarDatosSimples:function(ori,dest,fsal,freg,precio,encontrado,ori3,dest3,moneda,index,urlDirectData, pichadoTabla) {						
		var strSession=(ClientSession.getBVsession()==null ||ClientSession.getBVengenie()==null )? "":"&BV_SessionID="+ClientSession.getBVsession()+"&BV_EngineID="+ClientSession.getBVengenie();		
		var market=page.$("mercado").value;
   		var language=page.$("idioma").value;
		var country = page.$("pais").value;
		var returnType = page.$(index).cells[9].innerHTML;
		var consultaDirecta=objAjax.create();
		var isDeparture = "true";
		consultaDirecta.abort();
		consultaDirecta.open('GET',urlDirectData+'&country='+country+'&origen='+ori3+'&returnType='+returnType+'&isDeparture='+isDeparture+'&destino='+dest3+'&departureDate='+fsal+'&returnDate='+freg+'&market='+market+'&language='+language +strSession, true);
		
		consultaDirecta.onreadystatechange = function(){
			if (consultaDirecta.readyState == 4){
				if (consultaDirecta.status == 200){						
					var resultado = consultaDirecta.responseXML;	

						_cl.affinity.actualizarCombos(ori3,dest3,fsal,freg);
						page.$("resultados").style.display = "none";
						page.$("cabecera").style.display = "block";
						page.$("detalleVuelo").style.display = "block";						
						page.$("bestPrice").style.display = "block";
						page.$("volverListado").style.display = "block";	
						page.$("numPasajeros").style.display = "block";		
						page.$("precioSimpleTotal").style.display = "block";					
						page.$("textoCabecera").innerHTML = ori + ' - ' + dest;
						//Vemos la posicion de la moneda y la mostramos junto con el precio
						if((moneda == '&pound;')||(moneda == '&#36;')) {
							page.$("textoDetallePrecioSalida").innerHTML=moneda + " " + resultadoXML.firstChild.childNodes[0].firstChild.data; //Salida
							page.$("textoDetallePrecioRegreso").innerHTML=moneda + " " + resultadoXML.firstChild.childNodes[1].firstChild.data; //Regreso
							page.$("textoDetallePrecio").innerHTML=moneda + " " + resultadoXML.firstChild.childNodes[2].firstChild.data;
							page.$("textoPrecioTotal").innerHTML=moneda+" "+resultadoXML.firstChild.childNodes[2].firstChild.data;													
							//Seteamos el precio seleccionado en el input hidden
							page.$("finalPrice").value=resultadoXML.firstChild.childNodes[2].firstChild.data;
						}
						else {
							var resultadoXML=resultado.documentElement;
							//var departuXML = resultadoXML.childNodes(0).getElementsByTagName("departurePrice");
							page.$("textoDetallePrecioSalida").innerHTML=resultadoXML.firstChild.childNodes[0].firstChild.data + " " + moneda; //Salida
							page.$("textoDetallePrecioRegreso").innerHTML=resultadoXML.firstChild.childNodes[1].firstChild.data + " " + moneda; //Regreso
							page.$("textoDetallePrecio").innerHTML=resultadoXML.firstChild.childNodes[2].firstChild.data + " " + moneda;
							page.$("textoPrecioTotal").innerHTML=resultadoXML.firstChild.childNodes[2].firstChild.data+" "+moneda;	
							page.$("finalPrice").value=resultadoXML.firstChild.childNodes[2].firstChild.data;					
							//page.$("textoDetallePrecioSalida").innerHTML=resultadoXML.childNodes(0).getElementsByTagName("departurePrice") + " " + moneda; //Salida
							//page.$("textoDetallePrecioRegreso").innerHTML=resultado.firstChild.firstChild.childNodes[1].firstChild.data + " " + moneda; //Regreso
							//page.$("textoDetallePrecio").innerHTML=resultado.firstChild.firstChild.childNodes[2].firstChild.data + " " + moneda;
						}
							
						page.$("from").innerHTML=ori;
						page.$("to").innerHTML=dest;
						page.$("textoDetalleFechaSalida").innerHTML=fsal;
						page.$("textoDetalleFechaRegreso").innerHTML=freg;
						page.$("textoDetalleEncontrado").innerHTML=encontrado;						
						

						page.$("departureCityOculto").value = ori3;	
						page.$("destinationCityOculto").value = dest3;	
						/*page.$("departureCityOculto").value = ori3;	
						page.$("destinationCityOculto").value = dest3;	*/
						if (!pichadoTabla){
							_Gr.situaRuta(dest);
							}
          var ini=xy.getY(document.getElementById("sectionMenu").getElementsByTagName("ul")[0]);
          var fin=xy.getY(page.$("footer"));
          if(page.$("ldgsadow")){
          	page.$("ldgsadow").style.height = (fin-ini) +"px";
          }
				}
			}
		}
		consultaDirecta.send(null);
				
	},
    eliminarResultadosDetalle:function() {
    
    		 _Gr.situaRuta("sin_ruta"); 
    
			page.$("numPasajeros").style.display = "none";
			page.$("cabecera").style.display = "none";
			page.$("detalleVuelo").style.display = "none";
			page.$("bestPrice").style.display = "none";
			page.$("volverListado").style.display = "none";
			page.$("resultados").style.display = "block";
			page.$("tablaVuelos_affinity").removeAttribute('style');
			page.$("precioSimpleTotal").style.display = "none";					
						

			if (page.$("graficoIda")){
				var padre = page.$("graficoIda").parentNode;
				padre.removeChild(page.$("graficoIda"));
			}
			if (page.$("graficoVuelta")){
				var padre = page.$("graficoVuelta").parentNode;
				padre.removeChild(page.$("graficoVuelta"));
			}
            
            if(page.$("totalPrice"))page.$("totalPrice").style.display = "none";
            
    var ini=xy.getY(document.getElementById("sectionMenu").getElementsByTagName("ul")[0])
    var fin=xy.getY(page.$("footer"))
     
    if(page.$("ldgsadow")){
    
    page.$("ldgsadow").style.height = (fin-ini) +"px";
    
     }  
       
    }
	/*,
	diaSemana:function(f){
		var fecha = f.toString();
		var d=parseInt(fecha.substr(0,2));
		var m=parseInt(fecha.substr(3,5));
		var y=parseInt(fecha.substr(6,10));
		
		var fs=new Date(y,m-1,d).getDay();
		fs=(fs==0)? 6:fs-1;
		return _cl.servData.weekdays[fs];
	},
	mesDelAnio:function(f){
		var fecha = f.toString();
		var d=parseInt(fecha.substr(0,2));
		var m=parseInt(fecha.substr(3,5));
		var y=parseInt(fecha.substr(6,10));
		
		var fs=new Date(y,m,d).getMonth();
		fs=(fs==0)? 11:fs-1;
		return _cl.servData.months[fs];
	}*/
}

Calendar.iberia={
	load:function(){
	
	  
		//Mostramos los divs con los filtros (ciudades y slider), puesto que unicamente tienen sentido si disponemos de JavaScript
		if(page.$("txtCInoJS") != null) page.$("txtCInoJS").style.display= "none";
		if(page.$("slider") != null) page.$("slider").style.display= "block";
		if(page.$("ciudades") != null) page.$("ciudades").style.display= "block";	
		if (page.$("txtMap"))
			page.$("txtMap").style.display = "block";
		if (page.$("txtCI"))
			page.$("txtCI").style.display = "block";	
		
		//Mostramos los radio-buttons si disponemos de JavaScript. En caso contrario, por defecto se encuentran ocultos
		if (page.$("radioVuelo")){
			page.$("radioVuelo").style.display = "none";
		}
		var radioButtons = document.getElementsByTagName("input");
		var i = 0;
		for(i = 0; i < radioButtons.length; i++) {
			if((radioButtons[i].type == 'radio')&&(((radioButtons[i].id).indexOf('vuelo')!=-1 ))) radioButtons[i].parentNode.style.display = "none";
		}
		if(page.$("blockElegir") != null) page.$("blockElegir").style.display= "none";
		
		if (document.getElementsByClassName('cajaAlerta').length == 0) {
			_cl.cleanCalendars()
			_cl.load(
						["calendar1",[page.$("diaSalidaCont"), page.$("mesSalida"),page.$("diaSalidaNmDia")]],
						["calendar2",[page.$("diaRegresoCont"), page.$("mesRegresoCont"),page.$("diaRegresoNmDia")]]
			)
			
			//El mes se establece en los combos como a�o+mes (si tiene solamente una cifra, se le antepone un "0")
			if ((_cl.SD.today.getMonth().toString().length > 1) ||(_cl.SD.today.getMonth().toString()=="9") ) {
				page.$("mesSalida").value = page.$("mesRegresoCont").value = _cl.SD.today.getFullYear().toString()+parseInt(_cl.SD.today.getMonth()+1,10).toString(); //A�o+Mes
			}
			else {
				page.$("mesSalida").value = page.$("mesRegresoCont").value = _cl.SD.today.getFullYear().toString()+"0"+ parseInt(_cl.SD.today.getMonth()+1,10).toString(); //A�o+0+Mes
			}
		}
		/*_cl.cleanCalendars()
		
		_cl.load(
					["calendar1",[page.$("diaSalidaCont"), page.$("mesSalida"),page.$("diaSalidaNmDia")]],
					["calendar2",[page.$("diaRegresoCont"), page.$("mesRegresoCont"),page.$("diaRegresoNmDia")]]
		)*/			
		//page.$("diaSalida").value = page.$("diaRegreso").value = (_cl.SD.today.getDate().toString().length>1)? _cl.SD.today.getDate().toString(): "0"+ _cl.SD.today.getDate().toString();//_cl.SD.today.getDate();								
		
		//Si tenemos JavaScript activado, se mostrar� el flash. Si no, la tabla.		
	    /*if (page.$("graphics")!=null){
	    	page.$("graphics").style.display = "none";
	    }*/
	    if (page.$("flash")!=null){
			page.$("flash").style.display = "block";
		}
	
		/*if (page.$("hayMaxPrecio")) {
			page.$("hayMaxPrecio").onclick=function(){_cl.affinity.hasMaxPrice(page.$("hayMaxPrecio"))}
			_cl.affinity.hasMaxPrice(page.$("hayMaxPrecio")); //Al iniciar, se actualiza con el estado inicial
		}
		
		if ((page.$("soloIda"))||page.$("idaVuelta")) {
			page.$("soloIda").onclick=function(){_cl.affinity.onlyOneWay(page.$("soloIda"))}    //Al poner en ambos soloIda. Si es �ste el que est� seleccionado, al comprobar su valor para idaVuelta, ser� falso, por lo que se deshabilitar�n los controles de destino
			page.$("idaVuelta").onclick=function(){_cl.affinity.onlyOneWay(page.$("soloIda"))}			
			_cl.affinity.onlyOneWay(page.$("soloIda")); //Actualizamos para el valor inicial de la p�gina
		}*/
		if (page.$("affinityShoppingSearchForm")) {
			page.$("affinityShoppingSearchForm").onsubmit=_cl.affinity.send
		}	
		
		//if ((page.$("maxPrice")) && (_cl.slider)) {
		//	page.$("maxPrice").onblur=function() {_cl.affinity.validarPrecio(page.$("maxPrice"),_cl.slider.range.start)}				
		//	page.$("maxPrice").onkeypress=function(oEvent) {
		//				if (oEvent.keyCode == 13){
		//					_cl.affinity.validarPrecio(page.$("maxPrice"),_cl.slider.range.start)
		//				}
		//		}
		//}
		if (page.$("formPlanitGo")!=null){
			page.$("formPlanitGo").style.display = "none";
		}
		if(self.comprobarValoresCookie){
			comprobarValoresCookie();
		}
		if(self.establecerValoresMeses){
			establecerValoresMeses();
		}
		
		if ($('mostrar_actividades')){
			if ($('mostrar_actividades').checked){
				$('mostrar_actividades').checked=false;
				mostrarActividades();
				
			}	
		}	
		
		if(self.establecerKeyMaxPrice){
			establecerKeyMaxPrice();
		}
		
		if (page.$("mapaFlash")!=null && document.mapa!=null){
			 if ((!!(window.attachEvent && !window.opera))==true){
				cargaXML("");
			}
		}		
		
				
		//CONTROL DE LOS COMBOS EN LA CARGA INICIAL.
		if ($('ciudadOrigen').selectedIndex == 0) {
			$('areaDestino').selectedIndex = 0;
			$('areaDestino').disabled = true;
			$('paisDestino').selectedIndex = 0;
			$('paisDestino').disabled = true;
			$('ciudadDestino').selectedIndex = 0;
			$('ciudadDestino').disabled = true;
		} else {
			$('areaDestino').disabled = false;
			if ($('areaDestino').selectedIndex == 0) {
				$('paisDestino').selectedIndex = 0;
				$('paisDestino').disabled = true;
				$('ciudadDestino').selectedIndex = 0;
				$('ciudadDestino').disabled = true;
			} else {
				loadComboContent(urlAffinityCitiesAjax, 'areaDestino', $('paisSelec').value);
			}
		}
   
	
		
	if (page.$("diferenciaExtractionTimeIdAff")!=null){
			page.$("diferenciaExtractionTimeIdAff").style.background = "transparent url(/ibcomv3/images/fndAffyTable.gif) no-repeat left center";
		}	
	
	if (page.$("maxPrice")!=null){
			page.$("maxPrice").focus();
		}	
		if ($('tablaVuelos_affinity')){
			var arrayTrsPares = $('tablaVuelos_affinity').getElementsByClassName('classPar');
			var arrayTrsImpares = $('tablaVuelos_affinity').getElementsByClassName('classImpar');
			
			for(var xhj=0;xhj<arrayTrsPares.length;xhj++) {
				arrayTrsPares[xhj].style.cursor="pointer";
			}
			for(var xhk=0;xhk<arrayTrsImpares.length;xhk++) {
				arrayTrsImpares[xhk].style.cursor="pointer";
			}	
		}
		
		if ($("selectedCity0")!= null) {
			if ($("selectedCity1") == null) {
				if ($("tablaVuelos_affinity").style.display != "none") {
					$("a0").onclick();
				}
			}
		}
		
		if (document.getElementsByClassName('cajaAlerta').length == 0) {
			if (!$("tablaVuelos_affinity")){
				_auxMonthIda=(_cl.SD.todayBV.getMonth().toString().length>1)? _cl.SD.todayBV.getMonth().toString(): "0"+ parseInt(_cl.SD.todayBV.getMonth()+1,10).toString(); //? getDate cambiado por getMonth
				_cl.listDays1=$("diaSalidaCont");
				_cl.listDays1.cont=0;
				_cl.listMonthYears1=$("mesSalida");
				_cl.listMonthYears1.cont=0;
				if ($("diaSalidaCont")!= null)	$("diaSalidaCont").selectedIndex=_cl.SD.todayBV.getDate()-1;		
				_cl.listMonthYears1.selectedIndex=forms.getSelectedByValue(_cl.listMonthYears1,_cl.SD.todayBV.getFullYear().toString() +_auxMonthIda);		
				$("diaSalidaCont").onchange();		
				
				_auxMonth=(_cl.SD.tomorrow.getMonth().toString().length>1)? _cl.SD.tomorrow.getMonth().toString(): "0"+ parseInt(_cl.SD.tomorrow.getMonth()+1,10).toString(); //? getDate cambiado por getMonth
				_cl.listDays2=$("diaRegresoCont");
				_cl.listDays2.cont=1;
				_cl.listMonthYears2=$("mesRegresoCont");
				_cl.listMonthYears2.cont=1;
				if ($("diaRegresoCont")!= null)	$("diaRegresoCont").selectedIndex=_cl.SD.tomorrow.getDate()-1;		
				_cl.listMonthYears2.selectedIndex=forms.getSelectedByValue(_cl.listMonthYears2,_cl.SD.tomorrow.getFullYear().toString() +_auxMonth);		
				$("diaRegresoCont").onchange();
			}
		}
		/*
		if (!$("tablaVuelos_affinity")){
		
			_auxMonthIda=(_cl.SD.todayBV.getMonth().toString().length>1)? _cl.SD.todayBV.getMonth().toString(): "0"+ parseInt(_cl.SD.todayBV.getMonth()+1,10).toString(); //? getDate cambiado por getMonth
			_cl.listDays1=$("diaSalidaCont");
			_cl.listDays1.cont=0;
			_cl.listMonthYears1=$("mesSalida");
			_cl.listMonthYears1.cont=0;
			if ($("diaSalidaCont")!= null)	$("diaSalidaCont").selectedIndex=_cl.SD.todayBV.getDate()-1;		
			_cl.listMonthYears1.selectedIndex=forms.getSelectedByValue(_cl.listMonthYears1,_cl.SD.todayBV.getFullYear().toString() +_auxMonthIda);		
			$("diaSalidaCont").onchange();		
			alert('por aqui');
			
			_auxMonth=(_cl.SD.tomorrow.getMonth().toString().length>1)? _cl.SD.tomorrow.getMonth().toString(): "0"+ parseInt(_cl.SD.tomorrow.getMonth()+1,10).toString(); //? getDate cambiado por getMonth
			_cl.listDays2=$("diaRegresoCont");
			_cl.listDays2.cont=1;
			_cl.listMonthYears2=$("mesRegresoCont");
			_cl.listMonthYears2.cont=1;
			if ($("diaRegresoCont")!= null)	$("diaRegresoCont").selectedIndex=_cl.SD.tomorrow.getDate()-1;		
			_cl.listMonthYears2.selectedIndex=forms.getSelectedByValue(_cl.listMonthYears2,_cl.SD.tomorrow.getFullYear().toString() +_auxMonth);		
			$("diaRegresoCont").onchange();
		}*/
		
		//if ($("mesRegresoCont")!= null)	$("mesRegresoCont").selectedIndex=_cl.SD.tomorrow.getMonth + _cl.SD.tomorrow.getYear();		
		
		
		
		
						

// alert((fin-ini) +"px");
		
		
		/*if (page.$("volverListado")!=null){
			page.$("volverListado").onkeyup=function() {_cl.affinity.validarPrecio(page.$("maxPrice"))}				
		}*/	
 	}	
}


function isdefined(variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

ev.addEvent(window,"load",Calendar.iberia.load,false);


function pintarFondosTabla(tabla){

	listaTRs = tabla.getElementsByTagName('tr');
	var contVisibles = 0;
	//Saltamos el primer tr, porque es el de encabezado
	for (i=1;i<listaTRs.length;i++){
			if (listaTRs[i].style.display !=  "none"){
		
			contVisibles=contVisibles+1;
			if ((contVisibles%2)==0){
				listaTRs[i].className = "classImpar";
			}
			else{
				listaTRs[i].className = "classPar";
			}
		}
	}
	var ini=xy.getY(document.getElementById("sectionMenu").getElementsByTagName("ul")[0]);
    var fin=xy.getY(page.$("footer"));

	if (page.$("ldgsadow")!=null){
			page.$("ldgsadow").style.height = (fin-ini) +"px";
		}
		
	var filaCabe=tabla.getElementsByTagName('th');
    for (j=0; j<filaCabe.length; j++) {
    	if (j!=5){
    	 if (filaCabe[j].className.search(/\bsorttable_sorted\b/) != -1){
 	        filaCabe[j].style.background=" #F4F1EA url(/ibcomv3/images/U25BEBlack.gif) no-repeat center left";
	        filaCabe[j].className = "sorttable_sorted";
	        } else if (filaCabe[j].className.search(/\bsorttable_sorted_reverse\b/) != -1){
		        filaCabe[j].style.background=" #F4F1EA url(/ibcomv3/images/U25BEBlackR.gif) no-repeat center left";
		        filaCabe[j].className = "sorttable_sorted_reverse";
	        } else {
		        filaCabe[j].style.background = " #F4F1EA url(/ibcomv3/images/U25BE.gif) no-repeat center left";
	      	}
    	}//Si j != 5
    }//del for
}

function validarNumero(e){
		var keynum;
		keynum = e.keyCode?e.keyCode:e.which;
		if (keynum == '8' || keynum == '9' || keynum == '37'||keynum == '39'||keynum == '46') {
			return true;
		}
		keynum=String.fromCharCode(keynum);
		if(/[^0-9]/.test(keynum)) return false;
}

function comprobarValoresCookie(){
	var nameEQ = "coockieAffinityIda=";
	var nameEQ2 = "coockieAffinityVuelta=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) {
			var valorCo = c.substring(nameEQ.length,c.length);
			var valueIda = valorCo.split('=');
			if (valueIda.length > 1){
				seleccionarValorCombo('ciudadOrigen',valueIda[1]);
			}
		}
		if (c.indexOf(nameEQ2) == 0) {
			var valorCo2 = c.substring(nameEQ2.length,c.length);
			var valueVuelta = valorCo2.split('=');
			if (valueVuelta.length > 1){
				seleccionarValorCombo('ciudadDestino',valueVuelta[1]);
			}
		}
	}
}

function seleccionarValorCombo(identificador,selectedValue) {
	var select = page.$(identificador);
	if (select == null) return;
	//obtener el contenido del combo
	var options = select.options;
	//recorrer el contenido buscando la opcion a seleccionar
	var index = -1;
	var i = 0;
	while ((index == -1) && (i < options.length)){
	    if (selectedValue == options[i].value){
			index = i;
	    }
	    i++;
	}
	//Marcar el indice que hemos encontrado
	if (index != -1){
		select.selectedIndex = index;
	}
}
var banderaAltura = false;
function calculaAltura() {
   if (!banderaAltura){
    var ini=xy.getY(document.getElementById("sectionMenu").getElementsByTagName("ul")[0]);
    var fin=xy.getY(page.$("footer"));
   if (document.getElementById("Affy")){
	    if(document.getElementById("centralContent")){
	    document.getElementById("centralContent").style.height = (fin-ini) +"px";
	     banderaAltura = true;	
	    }	
   	 } 
    }
}

/**
 * Función para cargar los valores dependientes de los combos de paises y ciudades
 */
function loadComboContent(urlData, comboId){
	loadComboContent(urlData, comboId, '');
}
/**
 * Función para cargar los valores dependientes de los combos de paises y ciudades
 */
function loadComboContent(urlData, comboId, selectedValue) { 
	var strSession=(ClientSession.getBVsession()==null ||ClientSession.getBVengenie()==null )? "":"&BV_SessionID="+ClientSession.getBVsession()+"&BV_EngineID="+ClientSession.getBVengenie();		
	
	var requestSender = 'affinity';
	var selectedValueArea = null;
	var selectedValueCountry = null;
	var selectedValueOrigin = null;
	var selectedCombo = null;
	var procesar = true;
	if ((comboId == 'areaDestino') || (comboId == 'paisDestino')) {
		listaHijos = $('areaDestino').options;
		
		for (i=0; i<listaHijos.length; i++) {
			if (listaHijos[i].selected == true) {
				selectedValueArea = escape(listaHijos[i].value);
			}
		}
		
		if (comboId == 'paisDestino') {
			listaHijos = $('paisDestino').options;
			
			for (i=0; i<listaHijos.length; i++) {
				if (listaHijos[i].selected == true) {
					selectedValueCountry = escape(listaHijos[i].value);
				}
			}
			
			//obtenemos el value de la ciudad origen
			listaHijos = $('ciudadOrigen').options;
			
			for (i=0; i<listaHijos.length; i++) {
				if (listaHijos[i].selected == true) {
					selectedValueOrigin = escape(listaHijos[i].value);
				}
			}
		}
	}

	if (comboId == 'areaDestino') {
		if (selectedValueArea == '-1') {
			procesar = false;
			limpiarSelect('paisDestino');
			limpiarSelect('ciudadDestino');
		}
		else {
			selectedCombo = 'area';
			limpiarSelect('paisDestino');
			limpiarSelect('ciudadDestino');
		}
	} else if (comboId == 'paisDestino') {
		if (selectedValueCountry == '-1') {
			procesar = false;
			limpiarSelect('ciudadDestino');
		}
		else {
			selectedCombo = 'country';
			limpiarSelect('ciudadDestino');
		}
	}
	if (procesar == true) {
		var sep = "&";
		var objGraph = objAjax.create();
		objGraph.abort()
		
		urlData = urlData.replace(/&amp;/g, "&");
		if (comboId == 'areaDestino') {
			selectedCombo = 'area';
			
			objGraph.open('GET', urlData + sep + 'requestSender=' + requestSender + '&selectedCombo=' + selectedCombo + '&selectedValueArea=' + selectedValueArea + strSession, true);
		}
		else 
			if (comboId == 'paisDestino') {
				$('paisDestino').disabled = true;
				$('areaDestino').disabled = true;
				$('ciudadOrigen').disabled = true;
				selectedCombo = 'country';
				objGraph.open('GET', urlData + sep + 'requestSender=' + requestSender + '&selectedCombo=' + selectedCombo + '&selectedValueArea=' + selectedValueArea + '&selectedValueCountry=' + selectedValueCountry + '&selectedOrigin=' + selectedValueOrigin + strSession, true);
			}
		
		objGraph.onreadystatechange = function(){
			if (objGraph.readyState == 4) {
				if (objGraph.status == 200) {
					if (selectedCombo == 'area') {
						cargaOptions('paisDestino', objGraph.responseXML, selectedValue);
					}
					else {
						cargaOptions('ciudadDestino', objGraph.responseXML, selectedValue);
						$('paisDestino').disabled = false;
						$('areaDestino').disabled = false;
						$('ciudadOrigen').disabled = false;
					}
					if (($('paisSelec').value != null) && ( comboId != 'paisDestino' ) && ($('paisSelec').value != '-1') && ($('paisSelec').value != 'null')) {
						loadComboContent(urlAffinityCitiesAjax, 'paisDestino', $('ciudadSelec').value);
					}
				}
			}
		}
		objGraph.send(null);
	}
}

/**
 * Sustituye las options de un campo select menos la genérica
 */
function cargaOptions(idSelect, respuesta, selectedValue) {
	var mensajeDestinosError = 'No hay destinos';
	listaOptions = respuesta.getElementsByTagName('option');
	if (listaOptions.length == 0) {
		alert(mensajeDestinosError);
		limpiarSelect(idSelect);
	}
	else {
		opcionesAntiguas = $(idSelect).options;
		for (i = 1; i <= listaOptions.length; i++) {
			var y = document.createElement('option');

			y.text = respuesta.lastChild.childNodes[i - 1].textContent;
			if (y.text == 'undefined') {
				y.text = respuesta.lastChild.childNodes[i - 1].text;
			}
			y.value = respuesta.lastChild.childNodes[i - 1].attributes[0].nodeValue;
			
			if (y.value == selectedValue) {
				y.selected = true;
			}
			var x = $(idSelect);
			try {
				x.add(y, null); // standards compliant
			} 
			catch (ex) {
				x.add(y); // IE only
			}
		}
		$(idSelect).disabled = false;
		if (idSelect == 'ciudadDestino') {
			$('paisDestino').disabled = false;
		}
	}
}

/**
 * Limpia los select de paises y ciudades
 */
function limpiarSelect(idSelect) {
	if (idSelect == 'paisDestino') {
		opcionesAntiguas = $('paisDestino').options;
		tamPais = opcionesAntiguas.length;
		for (i = 1; i <tamPais; i++) {
			$('paisDestino').remove(1);
		}
	}
	//Limpiamos la lista de ciudades
	opcionesAntiguas = $('ciudadDestino').options
	tamCiudades = opcionesAntiguas.length;
	for (i=1; i<tamCiudades; i++) {
		$('ciudadDestino').remove(1);
	}
	
	if (idSelect == 'paisDestino') {
		$('paisDestino').disabled = true;
	}
	$('ciudadDestino').disabled = true;
}

/**
 * Comprueba el estado de los destinos cuando se cambia el origen
 */
function comprobarDestinos() {
	//Obtenemos el  valor del origen seleccionado
	listaHijos = $('ciudadOrigen').options;
			
	for (i=0; i<listaHijos.length; i++) {
		if (listaHijos[i].selected == true) {
			selectedValueOrigin = listaHijos[i].value;
		}
	}
	
	$('areaDestino').selectedIndex = 0;
	if (selectedValueOrigin == '-1') {
		$('areaDestino').disabled = true;
	} else {
		$('areaDestino').disabled = false;
	}
	
	limpiarSelect('paisDestino');
	limpiarSelect('ciudadDestino');
	$('paisDestino').disabled = true;
	$('ciudadDestino').disabled = true;
}

function mostrarActividades(){

	if ($('mostrar_actividades').checked){
		$('actividadesContResult').style.display="block";
	}else{
		$('actividadesContResult').style.display="none";
	}


}
function getFirefoxVersion() {
    var usrAgents = navigator.userAgent.split(" ");
    var ffVersion = null;
    for (var i = 0; i < usrAgents.length; ++i) {
        var usrAgent = usrAgents[i];

        if (usrAgent.toLowerCase().indexOf("firefox") != -1) {
            ffVersion = usrAgent.split("/")[1];
        }
    }

    return ffVersion;
}
