  var now = new Date();
  var month = new Date(fixYear(now.getFullYear()), fixMonth(now.getMonth()), now.getDate());
  var months = new Array( "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep","Oct", "Nov", "Dec" );
	
	function fixYear( year )
  {
      return( year < 1000 ? year + 1900 : year );
  }
  function fixMonth( month )
  {
      return( month < 0 ? month + 12 : (month > 11 ? month - 12 : month) );
  }      
  function getNumberDays( d )
  {
          switch( d.getMonth() + 1 )
          {
            case 1: case 3: case 5: case 7:
            case 8: case 10: case 12:
              return( 31 );
            case 4: case 6: case 9: case 11:
              return( 30 );
            case 2:
              return( 28 + ( d.getFullYear % 4 == 0 ? 1 : 0 ) );
          }
  }
	function compareDate (dobj1, dobj2)
	{
			if (dobj1.getFullYear() == dobj2.getFullYear())
			{
				if (dobj1.getMonth() == dobj2.getMonth())
				{
					return (dobj1.getDate() < dobj2.getDate())
				}else
				{
					return (dobj1.getMonth() < dobj2.getMonth())
				}	
					
			}else
			{
				return (dobj1.getFullYear() < dobj2.getFullYear())
			}
	}   
  function setDateOption(month, dobj)
  {  
			var numDays = getNumberDays( month );
      var startDate  = month.getDate();
     
      dobj.length = numDays;
      for( var i = 0 ; i < numDays ; i++ )
      {
				dobj.options[i].value = i + 1;
				dobj.options[i].text = i + 1;
				if (startDate == i+1)
        {
					dobj.options[i].selected = true;
				}
			}
   }
    
		function chgDate(yobj, mobj, dobj)
		{
			var nobj = document.forms[0].nights;
			var outdmyobj = document.forms[0].checkout;
			inputdateobj = document.forms[0].inputdate;
			//nobj.value = '1'			
			var rtn = getCheckin(yobj, mobj, dobj);
			inputdateobj.value = rtn;	
			chgNights(nobj, yobj, mobj, dobj, outdmyobj);
    }
    function chgMonth(yobj, mobj, dobj)
    {
				var y = fixYear(parseInt(yobj.options[yobj.selectedIndex].value));
				var m = fixMonth(parseInt(mobj.options[mobj.selectedIndex].value));
				month = new Date(y, m, 1); 
				mobj.selectedIndex = month.getMonth();
				mobj.options[mobj.selectedIndex].value = month.getMonth(); 
				mobj.options[mobj.selectedIndex].text = months[month.getMonth()]; 
				setDateOption(month, dobj);
				dobj.selectedIndex = month.getDate()-1;
				dobj.options[dobj.selectedIndex].value = month.getDate(); 
				dobj.options[dobj.selectedIndex].text = month.getDate(); 
				
				var nobj = document.forms[0].nights;
				var outdmyobj = document.forms[0].checkout;
				inputdateobj = document.forms[0].inputdate;
				nobj.value = '1';
				var rtn = getCheckin(yobj, mobj, dobj)	
				inputdateobj.value = rtn;	
				chgNights(nobj, yobj, mobj, dobj, outdmyobj);
				
    }
    function chgYear(yobj, mobj, dobj)
    {
				var y = fixYear(parseInt(yobj.options[yobj.selectedIndex].value));
				month = new Date(y, 0, 1);
				mobj.selectedIndex = month.getMonth();
				mobj.options[mobj.selectedIndex].value = month.getMonth(); 
				mobj.options[mobj.selectedIndex].text = months[month.getMonth()];
				setDateOption(month, dobj); 
				dobj.selectedIndex = month.getDate()-1;
				dobj.options[dobj.selectedIndex].value = month.getDate(); 
				dobj.options[dobj.selectedIndex].text = month.getDate();
				
				var nobj = document.forms[0].nights;
				var outdmyobj = document.forms[0].checkout;
				inputdateobj = document.forms[0].inputdate;
				nobj.value = '1';
				var rtn = getCheckin(yobj, mobj, dobj)
				inputdateobj.value = rtn;		
				chgNights(nobj, yobj, mobj, dobj, outdmyobj); 
    }
          
    function getCheckout(nobj, inyobj, inmobj, indobj)
    {
			var n = parseInt(nobj.options[nobj.selectedIndex].value);
			var ind = parseInt(indobj.options[indobj.selectedIndex].value);
			var inm = parseInt(inmobj.options[inmobj.selectedIndex].value);
			var iny = parseInt(inyobj.options[inyobj.selectedIndex].value);
			var numDaysinM = getNumberDays( month );
			var outDate =((ind + n)>numDaysinM ? (ind + n)%numDaysinM : (ind + n));
			var outMonth = ( (ind + n) > numDaysinM ? fixMonth(inm + 1) : inm );	
			var outYear = ( outMonth < inm ? fixYear(iny + 1):iny);
			return (outDate + ' ' +  months[outMonth] + ' ' + outYear);    
    } 
    function chgNights(nobj, inyobj, inmobj, indobj, outdmyobj)
    {
			var input = getCheckout(nobj, inyobj, inmobj, indobj);
			outdmyobj.value = input;
    }
    
    function LZ(x) {return(x<0||x>9?"":"0")+x}
    function getDateString(y_obj,m_obj,d_obj) 
		{
			var y = y_obj.options[y_obj.selectedIndex].value;
			var mNum = parseInt(m_obj.options[m_obj.selectedIndex].value) + 1;
			var m = LZ(mNum.toString());
			var d = LZ(d_obj.options[d_obj.selectedIndex].value);
			
			//datestr in dateformat of canlendarpopup_obj.select(datestr, anchorname, dateformat)
			var str = d+'/'+m+'/'+y;
			return (str)
		}
		function getCheckin(inyobj, inmobj, indobj)
		{
			var inputdateval = getDateString(inyobj, inmobj, indobj);
			return (inputdateval);
		}
    
    function minusDate(days, startDate)
    {
			var startD = startDate.getDate();
			var startM = startDate.getMonth();
			var startY = startDate.getFullYear();
			//if (startM == 0) 
			//{
				//prestartM = 11
			//}else
			//{
				//prestartM = fixMonth(startM - 1)
			//}
			
			//var numDayprestartM = getNumberDays(prestartDate);
			
			var minusD =((startD - days)<=0? (numDayprestartM - abs(startD - days)) : (startD - days));
			var minusM = ((startD - days)<=0 ? fixMonth(startM-1) : startM);	
			var minusY = (minusM > startM ? fixYear(startY - 1): startY);
			var minusDate = new Date (fixYear(minusY), fixMonth(minusM), minusD);
			return (minusDate);    
    } 
    function plusDate(days, startDate)
    {
			var numDaystartM = getNumberDays(startDate);
			var startD = startDate.getDate();
			var startM = startDate.getMonth();
			var startY = startDate.getFullYear();
			var plusD =((startD + days)>numDaystartM ? (startD + days)%numDaystartM : (startD + days));
			var plusM = ((startD + days)>numDaystartM ? fixMonth(startM + 1) : startM);	
			var plusY = (plusM < startM ? fixYear(startY + 1): startY);
			var plusDate = new Date (fixYear(plusY), fixMonth(plusM), plusD);
			return (plusDate);    
    }
    function DateOBJ2String(date_obj) 
		{
			var dateD = date_obj.getDate();
			var dateM = date_obj.getMonth() + 1;
			var dateY = date_obj.getFullYear();
			var y = dateY.toString();
			var m = LZ(dateM.toString());
			var d = LZ(dateD.toString());
			//format to match function calendar.addDisabledDates(usMMDDYYYY)
			var str = m+'/'+d+'/'+y;
			return (str)
		}
    
    function verifyDate(formobj)
    {
			var inDobj = formobj.inDT;
			var inMobj = formobj.inMTH;
			var inYobj = formobj.inYR;
			var ind = parseInt(inDobj.options[inDobj.selectedIndex].value);
			var inm = parseInt(inMobj.options[inMobj.selectedIndex].value);
			var iny = parseInt(inYobj.options[inYobj.selectedIndex].value);
			var checkin = new Date (fixYear(iny), fixMonth(inm), ind);
			var today = new Date();
			
			var checkoutDate = formobj.checkout;
			var chkoutArr = new Array();
			chkoutArr = (checkoutDate.value).split(" ");
			var outd = parseInt(chkoutArr[0]);
			var outmn = chkoutArr[1];
			var i = 0
			while (months[i] != outmn)
			{
				i = i + 1
			}
			var outm = i;					
			var outy = parseInt(chkoutArr[2]);
			var checkout = new Date (fixYear(outy), fixMonth(outm), outd);
			var today28 = plusDate(28, today);
			
			if (compareDate(checkin, today))
			{
				alert ("Check in date is before today date. Please re-select date"); 
				return false;
			} 
    
			if (compareDate(today28, checkout))
			{
				alert ("Check out date is after in-4-week date. Please re-select check in date and/or re-select number of nights to stay"); 
				return false;
			}
			
			return true
    }
