
var CalS = '';
var CalS2 = '';
var CalE = '';
var posEl=null;

var cF=null;var cW=null;var g_tid=0;var g_cP,g_eD,g_eDP,g_dmin,g_dmax;
var nextFocus;var g_fNoCal=false;

var nm = 12;

var months=new Array('','JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');

var nextFocus = null;

var g_calShown = false;
var g_calCB;
var g_nOfCals=2;
	
var returnCal = false;
var intCal = false;	
	
var rM=new Array(12);rM[0]=rM[2]=rM[4]=rM[6]=rM[7]=rM[9]=rM[11]=31;rM[3]=rM[5]=rM[8]=rM[10]=30;rM[1]=28;
function GetMonthCount(m,y){var c=rM[m];if((1==m)&&IsLY(y))c++;return c;}
function IsLY(y){if(0==y%4&&((y%100!=0)||(y%400==0)))return true;else return false;}
function DefYr(m,d){var dt=new Date();var yC=(dt.getYear()<1000)?1900+dt.getYear():dt.getYear();if(m<dt.getMonth()||(m==dt.getMonth()&&d<dt.getDate()))yC++;return yC;}


	
	function SetCalShown(fcshown){g_calShown=fcshown;}
	function CalendarCallback(){if(g_calCB)g_calCB();}
	function SetCalendarCallback(cb){g_calCB=cb;}
	function getEventObj(e){if(!e)e=window.event;return e;}
	function stopBubble(e){e=getEventObj(e);e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();}
	function CB(){stopBubble(event);}
	function CancelCal(){clearTimeout(g_tid);if(!cF)cF=getObj('CalFrame');cF.style.visibility="hidden";g_calShown=false;}
	function SetNextFocus(e){nextFocus=e;if(nextFocus)nextFocus.onfocus=CancelCal;}
	function SetPrevFocus(e){if(e)e.onfocus=CancelCal;}
	function FGoNextFocus(){if(nextFocus){nextFocus.focus();return true;}return false;}
	function CalSetFocus(e){if(e){g_fNoCal=true; try { e.focus(); } catch(e){}; setTimeout("EndCalFocus()", 200);}}
	function EndCalFocus(){g_fNoCal=false;}


	function UpdDt(e,d,m,y)
	{
		
		
		try 
		{

			//update selected year
			
					
			switch(e.id)
			{
		
				case "fdt":
						var f = DE('fdt');
						var t = DE('tdt');				
						
						document.agentid.outyear.value=y;									
						
						setSelectedOption(document.agentid.outmonth,months[m]); //change outmonth
						setSelectedOption(document.agentid.outday,d); //change outday
										
						showdayofWeek(document.agentid.outmonth,'outDayOfWeek'); //set day word
						updateDates(document.agentid);
						break;
			
				case "fdt1":
						var f = DE('fdt1');
						var t = DE('tdt1');	
						
						document.agentid.outyear1.value=y;			
						
						setSelectedOption(document.agentid.outmonth1,months[m]); //change outmonth
						setSelectedOption(document.agentid.outday1,d); //change outday
										
						showdayofWeek(document.agentid.outmonth1,'out1DayOfWeek'); //set day word
						updateDatesMultileg1(document.agentid);
						break;

				case "fdt2":
						var f = DE('fdt2');
						var t = DE('tdt2');				
						
						document.agentid.outyear2.value=y;
						
						setSelectedOption(document.agentid.outmonth2,months[m]); //change outmonth
						setSelectedOption(document.agentid.outday2,d); //change outday
										
						showdayofWeek(document.agentid.outmonth2,'out2DayOfWeek'); //set day word
						updateDatesMultileg2(document.agentid);
						break;

				case "fdt3":
						var f = DE('fdt3');
						var t = DE('tdt3');				
						
						document.agentid.outyear3.value=y;

						setSelectedOption(document.agentid.outmonth3,months[m]); //change outmonth
						setSelectedOption(document.agentid.outday3,d); //change outday
										
						showdayofWeek(document.agentid.outmonth3,'out3DayOfWeek'); //set day word
						updateDatesMultileg3(document.agentid);
						break;

				case "fdt4":
						var f = DE('fdt4');
						var t = DE('tdt4');				
						
						document.agentid.outyear4.value=y;
						
						setSelectedOption(document.agentid.outmonth4,months[m]); //change outmonth
						setSelectedOption(document.agentid.outday4,d); //change outday
										
						showdayofWeek(document.agentid.outmonth4,'out4DayOfWeek'); //set day word
						updateDatesMultileg4(document.agentid);
						break;

						
				case 'tdt':	
				
						document.agentid.retyear.value=y;
						setSelectedOption(document.agentid.retmonth,months[m]); //change retmonth
						setSelectedOption(document.agentid.retday,d); //change retday
						showdayofWeek(document.agentid.retmonth,'retDayOfWeek'); //set day word
						break;
				default:
					var f = null;
					var t = null;
					break;
			}
		} catch (e){}

		if(null!=f&&null!=t&&null!=GetInputDate(f.value)&&(null==GetInputDate(t.value)||GetInputDate(f.value)>GetInputDate(t.value))){
			//alert('');
			//t.value=f.value;
			//setSelectedOption(document.agentid.retmonth,months[m]); //change retmonth
			//setSelectedOption(document.agentid.retday,d); //change retday
			//showdayofWeek(document.agentid.retmonth,'retDayOfWeek'); //set day word
		}
	}



	function DE(el){return document.getElementById(el);}

	function SH(id,s){var e = DE(id);if(s){e.style.display = 'block';}else{e.style.display = 'none';}}

		var aS = new Array();

		function Concat(StringToConcat){this.aS[this.aS.length] = StringToConcat;}
		function GetValue(){return this.aS.join('');}
		function Reset(){this.aS = null;this.aS = new Array();}

		function SC(srcEl,el,nOfCals)
		{
			
			if (DE('CalFrame') == null){return;}
			
			posEl=srcEl; //store
				
			var id = el.id;
			var n = nOfCals || el.id.substr(3);

			//CalS = DE('CalS').value;
			//CalE = DE('CalE').value;		
			
			var currentTime = new Date();
			var month = currentTime.getMonth() + 1;
			var day = currentTime.getDate();
			var year = currentTime.getFullYear();			
						
			var myDate = new Date();
			myDate.setFullYear(myDate.getFullYear() + 1);			
									
			CalS = month + "/" + day + "/" + year;
			CalS1 = "12/31/" +myDate.getFullYear();	
			CalS2 = "12/31/" +myDate.getFullYear();	
			CalS3 = "12/31/" +myDate.getFullYear();	
			CalS4 = "12/31/" +myDate.getFullYear();	
			CalE = "12/31/" +myDate.getFullYear();	
			
			
			var gdmin = new Date();			
			if (searchFrm=='ferries') {
				gdmin.addDays(7);
			}	
			//gdmin = tmpdmin.setDate(tmpdmin.getDate());
			//new IBE permits next day bookings								
			//tmpdmin.setDate(tmpdmin.getDate() + 1);									
			//g_dmin=tmpdmin;	
			

				
					if (id.substr(0,3) == 'fdt')
					{
						el.select();
						returnCal = false;
						intCal = false;
						if(n == ''){ShowCalendar(el,el,null,gdmin,CalE,nOfCals);}
						else if(n == '2'){ShowCalendar(el,el,DE('fdt'),gdmin,CalE,nOfCals);}
						else{ ShowCalendar(el,el,DE('fdt' + (n - 1)),gdmin,CalE,nOfCals);}
					}

					if (id.substr(0,4) == 'fdt1'){
						el.select();
						
						v=DE('fdt').value;
						if (v!='') CalS=GetInputDate(v);

						returnCal = false;
						intCal = true;
						//alert(document.getElementById("fdt").value);
						//alert(CalS + '  '+ GetInputDate(v));
						//ShowCalendar(el,el,DE('fdt'),CalS,CalE,nOfCals);
						ShowCalendar(el,el,DE('fdt'),GetInputDate(document.getElementById("fdt").value),CalE,nOfCals);
						
					}

					if (id.substr(0,4) == 'fdt2'){
						el.select();
						
						v=DE('fdt').value;
						if (v!='') CalS=GetInputDate(v);

						returnCal = false;
						intCal = true;
						//alert(document.getElementById("fdt").value);
						//alert(CalS + '  '+ GetInputDate(v));
						//ShowCalendar(el,el,DE('fdt'),CalS,CalE,nOfCals);
						ShowCalendar(el,el,DE('fdt'),GetInputDate(document.getElementById("fdt").value),CalE,nOfCals);
						
					}
					
					if (id.substr(0,4) == 'fdt3'){
						el.select();
						
						v=DE('fdt').value;
						if (v!='') CalS=GetInputDate(v);

						returnCal = false;
						intCal = true;
						//alert(document.getElementById("fdt").value);
						//alert(CalS + '  '+ GetInputDate(v));
						//ShowCalendar(el,el,DE('fdt'),CalS,CalE,nOfCals);
						ShowCalendar(el,el,DE('fdt'),GetInputDate(document.getElementById("fdt").value),CalE,nOfCals);
						
					}
					
					if (id.substr(0,4) == 'fdt4'){
						el.select();
						
						v=DE('fdt').value;
						if (v!='') CalS=GetInputDate(v);

						returnCal = false;
						intCal = true;
						//alert(document.getElementById("fdt").value);
						//alert(CalS + '  '+ GetInputDate(v));
						//ShowCalendar(el,el,DE('fdt'),CalS,CalE,nOfCals);
						ShowCalendar(el,el,DE('fdt'),GetInputDate(document.getElementById("fdt").value),CalE,nOfCals);
						
					}															
			
					if (id.substr(0,3) == 'tdt'){
						el.select();

						if (GetTripType()=="MULTILEG") {
							v=DE('fdt1').value;
							if (v!='') CalS=GetInputDate(v);
							returnCal = true;
							intCal = false;
							ShowCalendar(el,el,DE('fdt1'),GetInputDate(document.getElementById("fdt1").value),CalS2,nOfCals);
							
							v=DE('fdt2').value;
							if (v!='') CalS=GetInputDate(v);
							returnCal = true;
							intCal = false;
							ShowCalendar(el,el,DE('fdt2'),GetInputDate(document.getElementById("fdt2").value),CalS2,nOfCals);
							
							v=DE('fdt3').value;
							if (v!='') CalS=GetInputDate(v);
							returnCal = true;
							intCal = false;
							ShowCalendar(el,el,DE('fdt3'),GetInputDate(document.getElementById("fdt3").value),CalS2,nOfCals);
							
							v=DE('fdt4').value;
							if (v!='') CalS=GetInputDate(v);
							returnCal = true;
							intCal = false;
							ShowCalendar(el,el,DE('fdt4'),GetInputDate(document.getElementById("fdt4").value),CalS2,nOfCals);																					
						}
						else {
							v=DE('fdt').value;
							if (v!='') CalS=GetInputDate(v);

							returnCal = true;
							//alert(document.getElementById("fdt").value);
							//alert(CalS + '  '+ GetInputDate(v));
							//ShowCalendar(el,el,DE('fdt'),CalS,CalE,nOfCals);
							ShowCalendar(el,el,DE('fdt'),GetInputDate(document.getElementById("fdt").value),CalE,nOfCals);						
						}
						
					}
				}

				function HCal(e)
				{
					var c = DE('CalFrame');
					//if (c!=null){SH(c,false);}
					if (c!=null){CancelCal();}
					var d;
					d = DE('fdt');
					if (d!=null){d.value = d.value;}
					d = DE('tdt');
					if (d!=null){d.value = d.value;}
				}



				function getObj(objID)
				{
					if (document.getElementById) {return document.getElementById(objID);}
					else if (document.all) {return document.all[objID];}
						else if (document.layers) {return document.layers[objID];}
						}

						var g_rgFreeEventElements=new Array();
						g_rgFreeEventElements[0] = window;

						function AddFreeEventElement(elm){FreeEventsOnUnLoad(); g_rgFreeEventElements[g_rgFreeEventElements.length]=elm;}

						var g_clearElementProps = ['onmouseover','onmouseout','onmousedown','onmouseup','onmousemove','onclick','onkeypress','onkeydown','onkeyup','onblur','onfocus',];
						var g_fFreeEventOnUnLoad = false;
						function FreeEventsOnUnLoad()
						{
							if (!g_fFreeEventOnUnLoad)
							{
								if (window.attachEvent){window.attachEvent("onunload", function(){var el;for(var d = g_rgFreeEventElements.length;d--;){el = g_rgFreeEventElements[d];for(var c = g_clearElementProps.length;c--;){el[g_clearElementProps[c]] = null;}}});}
								g_fFreeEventOnUnLoad=true;
							}
						}


						function SetFocus(obj) { try { if(obj) DE(obj.id).focus(); } catch(e){} }
						function GetDowStart() {return 0;}function GetDateFmt() {return "ddmmyy";}function GetDateSep() {return "/";}
						function ShowCalendar(eP,eD,eDP,dmin,dmax,nOfCals) { SCal(eP,eD,eDP,dmin,dmax,nOfCals); }
						function ShowCalSimp(fm,eD,eDP,dmin,dmax){
							if(!dmin)dmin='1/3/2005';if(!dmax)dmax='25/1/2006';
							if(fm){SetNextFocus(objNext(fm,eD));SetPrevFocus(objPrev(fm,eD));}
							SCal(eD,eD,eDP,dmin,dmax);
						}


						function IsVis(o)
						{
							if(!o || o.type=="hidden") return false;
							while(o && o.style && o.style.display!='none') o=o.parentNode;
							return !o || !o.style;
						}


						function getObj(objID)
						{
							if (document.getElementById) {return document.getElementById(objID);}
							else if (document.all) {return document.all[objID];}
							else if (document.layers) {return document.layers[objID];}
						}

						function objNext(f,d)
								{
									var fFnd=false,el=f.elements,i=0;
									for(;i < el.length;i++)
									{
										if('hidden'!=el[i].type && false==el[i].disabled && IsVis(el[i]) && fFnd)return el[i];
										if(d.id==el[i].id)fFnd=true;
									}
									return null;
						}
						
						function objPrev(f,d)
						{
									var fFnd=false,el=f.elements,i=el.length - 1;
									for(;i >= 0;i--)
									{
										if('hidden'!=el[i].type && false==el[i].disabled && IsVis(el[i]) && fFnd)return el[i];
										if(d.id==el[i].id)fFnd=true;
									}
									return null;
						}


						function SCal(cP,eD,eDP,dmin,dmax,nOfCals){
									clearTimeout(g_tid);

									if(g_fNoCal){g_fNoCal=false;return;}
									if(g_calShown && eD==g_eD){return;}
									g_calShown = true;
									g_calCB = null;
									//g_cP=cP;
									g_nOfCals=nOfCals;
									g_cP=posEl;
									g_eD=eD;
									g_eDP=eDP;
									
									//var tmpdmin = new Date();		
									//new IBE permits next day bookings								
									//tmpdmin.setDate(tmpdmin.getDate() + 1);									
									//g_dmin=tmpdmin;
									g_dmin=dmin;
									
									var tmpdmax = new Date();	
									if (searchFrm=='ferries') {
										tmpdmax.addMonths(7);									
									}
									else {
										tmpdmax.addMonths(10);									
									}
									g_dmax=tmpdmax;			
																											
									//alert(tmpdmin);
									//alert(tmpdmax);
									WaitCal();

						}

								function WaitCal()
								{
									if(!cW)cW=frames['CalFrame'];

									if(null==cW||null==cW.g_fCL||false==cW.g_fCL){
										g_tid=setTimeout("WaitCal()", 200);
									}
									else{
										if(!cF)cF=getObj('CalFrame');
										cF.style.visibility="hidden";
										setTimeout("DoCal()",1);
									}
								}
								function DoCal(){
									PosCal(g_cP);
									if(!cW)cW=frames['CalFrame'];

									cW.DoCal(g_eD,g_eDP,g_dmin,g_dmax,g_nOfCals);
								}

								function getScrollTop(){return document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset || 0;}
								function getWinWidth(){return window.innerWidth || document.documentElement.clientWidth || document.body.offsetWidth || 0;}
								function getWinHeight(){	return  window.innerHeight || document.documentElement.clientHeight || document.body.offsetHeight || 0; }


								function PosCal(cP)
								{
									var dB=document.body;var eL=0;var eT=0;
									if(!cF)cF=getObj('CalFrame');
									
									
									for(var p=cP; p && p.tagName!='BODY'; p=p.offsetParent){eL+=p.offsetLeft;eT+=p.offsetTop;}
									
									var eH=cP.offsetHeight;
									var dH=parseInt(cF.style.height);
									var sT=getScrollTop();
									
									if(eT-dH>=sT&&eT+eH+dH>getWinHeight()+sT)eT-=dH;
									else eT+=eH;
										cF.style.left=eL+'px';cF.style.top=eT+'px';
										
									}


									function CalDateSet(eInp,d,m,y,giveFocus)
									{
										var ds=GetDateSep();
										var fmt=GetDateFmt();

										if(fmt=="mmddyy")eInp.value=m+ds+d+ds+y;
										else if(fmt=="ddmmyy")eInp.value=d+ds+m+ds+y;
										else eInp.value=y+ds+m+ds+d;

										UpdDt(eInp,d,m,y); //update values
										

										if(!giveFocus) CalSetFocus(eInp);
									}


									function GetInputDate(t)
									{
												if (!t) return null;
												if(!t.length) return null;
												t=t.replace(/\s+/g,"");
												if(t.match(/[^-|\d|\.|\/]/)) return null;
												var rgt=t.split(/-|\.|\//);
												for(var i=0;i<rgt.length;i++) rgt[i]=parseInt(rgt[i],10);
												if(!rgt[1]) return null;
												var m,d,y;
												var fmt=GetDateFmt();
												if(fmt=="yymmdd")
												{
													if(!rgt[2]) return null;
													m=rgt[1];d=rgt[2];y=rgt[0];
												}
												else
													{
														if(fmt=="mmddyy") { m=rgt[0];d=rgt[1];} else { m=rgt[1];d=rgt[0]; } //fmt=="ddmmyy"
															if(rgt[2]) y=rgt[2]; else y=DefYr(m-1,d);
															}
															m-=1;if(y<100) y+=2000;
															if(y<1601||y>4500||m<0||m>11||d<1||d>GetMonthCount(m,y)) return null;
															return new Date(y,m,d);
									}

									function GetTripType() {
										var triptype="ROUNDTRIP";
										if  (searchFrm == 'flights') {
											if (frm.triptype[0].checked) triptype="ROUNDTRIP";
											if (frm.triptype[1].checked) triptype="ONEWAY";				
											if (frm.triptype[2].checked) triptype="MULTILEG";								
										}
										if  (searchFrm == 'short') {
											if (frm.triptype[1].checked) triptype="ROUNDTRIP";
											if (frm.triptype[0].checked) triptype="ONEWAY";									
										}
										//alert(triptype);									
										return triptype;										
									}

									document.onclick = HCal;