function BC (id)
{
 var obj = document.getElementById(id);
 return obj;
}
var ddd;
var mmm;
var yyy;
var errFlight01 = ''//'The name of a city or an airport code from where you would like to start your flight.';
var errFlight02 = ''//'The name of a city or an airport code where you are going.';
var errFlight03 = ''//'The date you would like to leave for your trip';
var errFlight04 = ''//'The date you would like to return from your trip.';
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 monthNames1 = new Array('January','Febuary','March','April','May','June','July','August','September','October','November','December');
var weekday=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var xdate;
var xrdate;
var myDate = new Date();
var myFromDate = new Date(); 
        xdate = myFromDate.getDate() + "/" + (myFromDate.getMonth()+1) + "/" + myFromDate.getFullYear();
        xrdate = myFromDate.getDate() + "/" + (myFromDate.getMonth()+1) + "/" + myFromDate.getFullYear()



function GetMonthMaxDays(y,m) // accepts 0 index month
{
	return new Date(y,m+1,0).getDate();
}



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()
{
if(BC('iframeCal'))
{
    BC('iframeCal').style.display = 'none';
}
 BC('cal').style.display = 'none';
 var elList = new Array('td_departspan','td_returnspan','td_adult','td_seniors','td_children');
 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);
		BC('cal').style.display = 'block';
		
		if(BC('iframeCal'))
        {
            BC('iframeCal').style.display = 'block';
		    if(BC('iframeCal'))
		    {
			    BC('iframeCal').style.top = ypos +'px';
			    BC('iframeCal').style.left = xpos +'px';
		    }
		}
		BC('cal').style.top = ypos +'px';
		BC('cal').style.left = xpos +'px';
		
		switch (req){
				case "fldep":
				var dt=BC('Dat').value;
				dt = (dt < 10)? '0'+dt:dt;
				var mt=BC('Month').value;
				mt++;
				mt = (mt < 10)? '0'+mt:mt;
				var yr=BC('Year').value;
				
				fltmpDt =dt +"/"+mt+"/"+yr;//BC('td_departdate').value;
//				alert(fltmpDt)
				if(fltmpDt == 'dd/mm/yy' || 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('td_adult').style.visibility = 'hidden';
			//	BC('td_seniors').style.visibility = 'hidden';
			//	BC('td_children').style.visibility = 'hidden';
				
				if(pos == 1){
				//	BC('td_departspan').style.visibility = 'hidden';	
					xpos += 0;
                                        ypos += 22;

				}
				                    if(BC('iframeCal'))
                                        {
                                            if(BC('iframeCal'))
										    {
											    BC('iframeCal').style.top = ypos +'px';
											    BC('iframeCal').style.left = xpos +'px';
										    }
										}
										BC('cal').style.left = xpos +'px';
                                        BC('cal').style.top = ypos +'px';
				break;
				case "flret":
			//	alert("flret")
				var dt=BC('Dat').value;
				dt = (dt < 10)? '0'+dt:dt;
				var mt=BC('Month').value;
				mt++;
				mt = (mt < 10)? '0'+mt:mt;
				var yr=BC('Year').value;
				
				fltmpDt =dt +"/"+mt+"/"+yr;//BC('td_departdate').value;
			//	alert(fltmpDt);

				var dt=BC('NxDat').value;
				dt = (dt < 10)? '0'+dt:dt;
				var mt=BC('NxMonth').value;
				mt++;
				mt = (mt < 10)? '0'+mt:mt;
				var yr=BC('NxYear').value;
				
				fltmpRt =dt +"/"+mt+"/"+yr;//BC('td_departdate').value;
			//	alert(fltmpRt)

				//fltmpDt = BC('td_departdate').value;
				//fltmpRt = BC('td_returndate').value;
				if(fltmpRt == 'dd/mm/yy' || !(fltmpRt.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)))
				{
					if(fltmpDt == 'dd/mm/yy'|| !(fltmpDt.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)))
					{
						fltmpRt = xrdate;
						fltmpRt = fltmpRt.split("/");
						d = fltmpRt[0];
						m = fltmpRt[1];
						y = fltmpRt[2];
						if(y.length <= 2)
						{
							y = "20"+y;
						}
						ddd=d;
						mmm = m;
						yyy = y;
						
					}
					else
					{
						fltmpDt = fltmpDt.split("/");
						d = fltmpDt[0];
						m = fltmpDt[1];
						y = fltmpDt[2];
						if(y.length <= 2)
						{
							y = "20"+y;
						}
						if(m > 12)
						{
							fltmpDt = xdate;
							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 = fltmpRt.split("/");
					d = fltmpRt[0];
					m = fltmpRt[1];
					y = fltmpRt[2];
					if(y.length <= 2)
					{
						y = "20"+y;
					}
					if(m > 12)
					{
						fltmpRt = xrdate;
						fltmpRt = fltmpRt.split("/");
						d = fltmpRt[0];
						m = fltmpRt[1];
						y = fltmpRt[2];	
						if(y.length <= 2)
						{
							y = "20"+y;
						}
					}
					
					if(!(fltmpDt.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/)))
					{
						
					/*	ddd=d;
						mmm = m;
						yyy = y;*/
					}
					else 
					{
						
						fltmpDt = fltmpDt.split("/");
						var tdd = fltmpDt[0];
						var tdm = fltmpDt[1];			//temp date var for 
						var tdy = fltmpDt[2];			//checking with return date
						if(tdy.length <= 2)
						{
							tdy = "20"+tdy;
						}
						  if(tdm > 12)
						{
							fltmpDt = xdate;
							fltmpDt = fltmpDt.split("/");
							tdd = fltmpDt[0];
							tdm = fltmpDt[1];
							tdy = fltmpDt[2];	
							if(tdy.length <= 2)
							{					
								tdy = "20"+tdy;
							}
						}	
						if((tdy > y)||(tdy == y && tdm > m)||(tdy == y && tdm == m && tdd > d))
						{
							d=tdd;
							m=tdm;
							y=tdy;
						}
							ddd=tdd;
							mmm = tdm;
							yyy = tdy;
					}

				}

			//	BC('td_returnspan').style.visibility = 'hidden';
				if(pos == 1){
                                        xpos += 0;
                                        ypos += 20;
                                }else{
                                        xpos -= 134;
                                        ypos += 18;
                                }
                                        if(BC('iframeCal'))
										{
											BC('iframeCal').style.top = ypos +'px';
											BC('iframeCal').style.left = xpos +'px';
										}
										BC('cal').style.left = xpos +'px';
                                        BC('cal').style.top = ypos +'px';
				break;
									
				default : break;
			}
			
			
		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:#c2b290;" width="15%"><a href="javascript:writeCalendar(1,' + (m-1) + ','+y+',\''+t+'\')" ><font color="#ffffff"><b><<</b></a></td><td width="70%" style="border-color:#c2b290"><font color="#ffffff"><b>'+  monthNames1[baseDate.getMonth()] + ' ' + baseDate.getFullYear()+'<b></font></td><td style="border-color:#c2b290;" align="right" width="15%">'+
/*	BC('showD').innerHTML +=*/ '<a href="javascript:writeCalendar(1,' + (m+1) + ','+y+',\''+t+'\')" ><font color="#ffffff"><b>>></b></a></td></tr></table>'
    if(BC('iframeCal'))
    {
    	BC('iframeCal').style.height=BC('cal').offsetHeight-5+'px';
		BC('iframeCal').style.width=BC('cal').offsetWidth-5+'px';
	}
}

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();
	
	var nextD1 = new Date(iy,im-1,id);;
	nextD1.setDate(d+1);
    var ndayName =  (weekday[nextD1.getDay()]).substring(0,3);
    
    //alert(nextD1);
    
    var ny = nextD1.getFullYear();
	var nm = parseInt(nextD1.getMonth(),10) +1;
	//m = (m < 10)? '0'+m:m;	
	var nd = nextD1.getDate();
	
	var dayName=(weekday[safeDate.getDay()]).substring(0,3);
	//d = (d < 10)? '0'+d:d;
	var dT;
	var mT;
	var sisterField = '';
	var compareValue = 0;
	var mode = 0;
	//alert(t)
	switch (t)
	{
		case 'fldep':
//			//BC('td_departdate').value = d + '/' + m + '/' + y;
//			//alert("d::"+d+"::m::"+m+"::y::"+y);
//			BC('Dat').value=d;
//			BC('Month').value=m-1;
//			BC('Year').value=y;
//			//BC('Day').innerHTML="[ "+dayName+" ]";			
//			BC('dateFrom').value = dayName + ", " + d + "-" + monthNames1[m-1].substring(0,3) + "-" + y;
//			
//			BC('NxDat').value=nd;
//			BC('NxMonth').value=nm-1;
//			BC('NxYear').value=ny;
//			
//			BC('dateTo').value = ndayName + ", " + nd + "-" + monthNames1[nm-1].substring(0,3) + "-" + ny;
			BC('txtdate').value = d + '-' + m + '-' + y;

			break;
//		case 'flret':
//			//BC('td_returndate').value = d + '/' + m + '/' + y;
//			//alert('flret')
//			BC('NxDat').value=d;
//			BC('NxMonth').value=m-1;
//			BC('NxYear').value=y;
//			//BC('NxDay').innerHTML="[ "+dayName+" ]";
//			BC('dateTo').value = dayName + ", " + d + "-" + monthNames1[m-1].substring(0,3) + "-" + y;
//			break;
		
	}
	
	if (sisterField != '') UpdateDates(sisterField);
	CloseCalendar();	
}

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

function ErrMsgProvidor()
{
	
var errStr = 'Please enter';
	for (var i = 0; i < errs.length; i++)
	{
		errStr += '\n - ' + errs[i].AlertText;
	}	
//	alert(errStr);
}

function ValidateFlight()
{
        var haserror = false;
        errs = new Array();
		var depDD1, depMY1, retDD1, retMY1;
		var from=BC('td_origin').value;
		var to=BC('td_dest').value;
		
		if((from.length < 3)||!(from.match(/^[a-zA-Z]+$/)))
		{
			errs.push(new ErrMsg(errFlight01));
		}
		if((to.length < 3)||!(to.match(/^[a-zA-Z]+$/)))
		{
			errs.push(new ErrMsg(errFlight02));
		}

        flytmpDep1 = BC('td_departdate').value;
        flytmpDep = flytmpDep1.split("/");

        flytmpRet1 = BC('td_returndate').value;
        flytmpRet = flytmpRet1.split("/");
		
						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(errFlight03)); temp = 1;
							}
							else if ((depMY1 == '04') || (depMY1 == '06') || (depMY1 == '09') || (depMY1 == '11') )
							{
									if (depDD1 > 30)
									{
											errs.push(new ErrMsg(errFlight03)); temp = 1;
									}
							}
							else if (depMY1 == 02)
							{	
									if (depDD1 > 29)
									{
											errs.push(new ErrMsg(errFlight03)); temp = 1;
									}
							}
							else if((depMY1 == 0) || (depMY1 > 12))
							{
								errs.push(new ErrMsg(errFlight03)); temp = 1;
							
							}
							else
							{
									if (depDD1 > 31)
									{
											errs.push(new ErrMsg(errFlight03)); temp = 1;
									}
							}
						}
						else if(!flytmpDep1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/))
						{
							errs.push(new ErrMsg(errFlight03));
						}

						if(document.form.td_triptype[1].checked != true)
						{
							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}$/))
							{
						
							retDD1 = flytmpRet[0];
							retMY1 = flytmpRet[1];
							retYY1 = flytmpRet[2];
								if(retYY1.length <= 2){
								  retYY1 = "20"+retYY1;}
								  if(!(retYY1 >= myFromDate.getFullYear()))
									{	
										errs.push(new ErrMsg(errFlight04));
									}
								   if ((retMY1 == '04') || (retMY1 == '06') || (retMY1 == '09') || (retMY1 == '11') )
									{if (retDD1 > 30)
											{
													errs.push(new ErrMsg(errFlight04));
											}
									}
									else if (retMY1 == 02)
									{if (retDD1 > 29)
											{
													errs.push(new ErrMsg(errFlight04));
											}
									}
									else if((retMY1 == 0) || (retMY1 > 12)){
											errs.push(new ErrMsg(errFlight04));

									}
									else if (retDD1 > 31)
									{
													errs.push(new ErrMsg(errFlight04));
									}
									
									else if((retYY1 < depYY1) ||(retYY1 == depYY1 && retMY1 < depMY1) || (retYY1 == depYY1 && retMY1 == depMY1 && retDD1 < depDD1))
									{
											errs.push(new ErrMsg(errFlight04));
									}
							}
									else if(!flytmpRet1.match(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){2,4}$/))
									{
											
										errs.push(new ErrMsg(errFlight04));
									}
						}
						
	
        if (errs.length < 1) return true;
        ErrMsgProvidor();
        return false;
	document.form.submit();
}
function hidereturn(boostate)
{
	if(boostate)
	{
	//	BC('return').disabled=false;
	//	BC('td_returndate').disabled=false;
	//	BC('return_time').disabled=false;
		//BC('td_returnspan').disabled=false;
	}
	else
	{
	//	BC('return').disabled=true;
	//	BC('td_returndate').disabled=true;
	//	BC('return_time').disabled=true;
	//	BC('td_returnspan').disabled=true;
}
}



function fillDate()
	{
	     for(var j=0;j<2;j++)
	    {
	        var temp;
	        if(j==0)
	        temp="Dat";
	        else{
	            temp="NxDat"
	        }
		for(var i=1;i<32;i++)
		{
			
			var optn = document.createElement("OPTION");
			optn.text = i;
			optn.value = i;
			//document.getElementById(temp).options.add(optn);
		//	document.getElementById("NxDat").options.add(optn);

		}
		}
	}
	function fillMonths()
	{
	
	    for(var j=0;j<2;j++)
	    {
	        var temp;
	        if(j==0)
	        temp="Month";
	        else{
	            temp="NxMonth"
	        }
		for(var i=0;i<monthNames1.length;i++)
		{
			var optn = document.createElement("OPTION");
			optn.text = (monthNames1[i]).substring(0,3);
			optn.value = i;
			//document.getElementById(temp).options.add(optn);
			//document.getElementById("NxMonth").options.add(optn);
		}
		}
	}
	function fillyears()
	{
	    
		
		for(var j=0;j<2;j++)
	    {
	        var dt=new Date();
		var currYear=dt.getFullYear();
	        var temp;
	        if(j==0)
	        temp="Year";
	        else{
	            temp="NxYear"
	        }
		for(var i=0;i<5;i++)
		{
			var optn = document.createElement("OPTION");
			optn.text = currYear;
			optn.value = currYear;
			//document.getElementById(temp).options.add(optn);
			//document.getElementById("NxYear").options.add(optn);
			currYear=currYear+1;
		}
		}
	}
function setTodayDate()
{
    var nDt= new Date();
    var nextD = new Date();
    
    var nd=nDt.getDate();
    var nm=nDt.getMonth();
    var ny=nDt.getFullYear();
    var ndy=(weekday[nDt.getDay()]).substring(0,3);
   // alert("d::"+nd+":nd:"+nm+":ny:"+ny+":ndy:"+ndy);  
    nextD.setDate(nd+1);
   var nextDay = (weekday[nextD.getDay()]).substring(0,3);
   var nextDate = nextD.getDate();
   var nextMnt = nextD.getMonth();
   var nextYear = nextD.getFullYear();
   
        BC('Dat').value=nd;
	    BC('Month').value=nm;
	    BC('Year').value=ny;
	    
	    BC('NxDat').value=nextDate;
	    BC('NxMonth').value=nextMnt;
	    BC('NxYear').value=nextYear;
	    
	    BC('dateFrom').value = ndy + ", " + nd + "-" + monthNames1[nm].substring(0,3) + "-" + ny;
	    BC('dateTo').value = nextDay + ", " + nextDate + "-" + monthNames1[nextMnt].substring(0,3) + "-" + nextYear;
}