	
			
		function isLeapYear(year) 
		{
			return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
		}
		
		function setMonth(monthid, selected, maxMonths, monthNames)
		{
			if (maxMonths == null) maxMonths = 12;
			if (monthNames == null) monthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
		
			if (jQuery('#'+monthid+' option').size() != maxMonths)
			{
			    jQuery('#'+monthid).empty("option");
			
			    var date = new Date();
	    	    date.setDate(1);
			    var sMonth = '';
			
			    for (i=0;i<maxMonths;i++)
			    {			
					sMonth = (((date.getMonth() + 1) < 10) ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1));
					jQuery('#'+monthid).addOption(monthNames[date.getMonth()] + ' ' + date.getFullYear().toString().substring(2), date.getFullYear()+''+sMonth);
					if (date.getMonth() == 11) 
					{
						date.setMonth(0); 
						date.setFullYear(date.getFullYear() + 1);
					}
					else date.setMonth(date.getMonth() + 1);

			    }
			}
			if (selected != null) jQuery('#'+monthid).selectedByValue(selected);
		}
		
		function setDays(dayid, month, selected, monthNames)
		{
			var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
			if (parseInt(selected, 10) < 1) selected = jQuery('#'+dayid).val();

			var dayCount = monthDays[(parseInt(month.substring(4), 10) - 1)];
									
			if (month.substring(4) == '02')
			{
			    if (isLeapYear(month.substring(0, 4))) dayCount = 29;
			}
			
			if (parseInt(selected, 10) > dayCount) selected = dayCount;
			
			if (jQuery('#'+dayid+' option').size() < 28)
			{
			    jQuery('#'+dayid).empty("option");
			    var startDay = 1;
			}
			else
			{
			    jQuery('#'+dayid+' option[value=29]').remove();
			    jQuery('#'+dayid+' option[value=30]').remove();
		    	    jQuery('#'+dayid+' option[value=31]').remove();
			    var startDay = 29;
			}
	
			for (i=startDay;i<=dayCount;i++)
			{
			    jQuery('#'+dayid).addOption(i, ((i < 10) ? '0' + i : i)) 			    			    
    
			}
			if (selected != null) document.getElementById(dayid).selectedIndex = parseInt(selected ,10) - 1;
		}
		
		function setDate(pmid, pdid, dmid, ddid, element, diff, monthNames)
		{
			if (diff == null) diff = 24;
			if (monthNames == null) monthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
		
			var departureDate = Date.parse(jQuery('#'+pmid).val().substring(0, 4) + '/' + jQuery('#'+pmid).val().substring(4) + '/' + jQuery('#'+pdid).val());
			var returnDate = Date.parse(jQuery('#'+dmid).val().substring(0, 4) + '/' + jQuery('#'+dmid).val().substring(4) + '/' + jQuery('#'+ddid).val());
			var d;	
					
			if (element == 0)
			{
				if (departureDate >= returnDate)
				{
					var depDate = new Date(departureDate);
					var retDate = new Date(returnDate);
							
					if (depDate.getMonth() == 11)			
					{
					    retDate.setMonth(0);
					    retDate.setFullYear(depDate.getFullYear() + 1);
					}
					else
					{
					    retDate.setMonth(depDate.getMonth() + 1);
					}
										
					d = new Date(retDate.getTime());
					setMonth(dmid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), 12, monthNames);	
					setDays(ddid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), d.getDate());
				}
			}

			if (element == 1)
			{
				if (departureDate >= returnDate)
				{
					// setting returndate 'diff' hours after departuredate
					returnDate = departureDate + (3600000 * diff);
				}
				setDays(pdid, jQuery('#'+pmid).val(), jQuery('#'+pdid).val());
			
				d = new Date(returnDate);
				setMonth(dmid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), 12, monthNames);	
				setDays(ddid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), d.getDate());	
			}
						
		}

		function setDateWithTime(pmid, pdid, ptid, dmid, ddid, dtid, element, diff, monthNames)
		{
			if (monthNames == null) monthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
            var date = new Date();
            if (diff == null) diff = 24;

            var pickupDate = Date.parse(jQuery('#'+pmid).val().substring(0, 4) + '/' + jQuery('#'+pmid).val().substring(4) + '/' + jQuery('#'+pdid).val() + ' ' +
 jQuery('#'+ptid+' :selected').text());
            var dropoffDate = Date.parse(jQuery('#'+dmid).val().substring(0, 4) + '/' + jQuery('#'+dmid).val().substring(4) + '/' + jQuery('#'+ddid).val() + ' '
+ jQuery('#'+dtid+' :selected').text());

            if (pickupDate < date.getTime()) pickupDate = date.getTime();
            if (dropoffDate < date.getTime()) dropoffDate = date.getTime();

            if (element == 1)
            {
                if (pickupDate > dropoffDate)
                {
					// setting pickupdate 1 hour before dropoffdate
                    pickupDate = dropoffDate - (3600000 * diff);
                }
				setDays(ddid, jQuery('#'+dmid).val(), jQuery('#'+ddid).val());
                
                var d = new Date(pickupDate);
				setMonth(pmid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), 12, monthNames);
				setDays(pdid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), d.getDate());
				setTime(ptid, d.getHours());
				d = new Date(dropoffDate);
				setMonth(dmid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), 12, monthNames);
				setDays(ddid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), d.getDate());
				setTime(dtid, d.getHours());

			}

                        
			if (element == 0)
            {
				if (pickupDate > dropoffDate)
				{
					// setting dropoffdate 1 hour after pickupdate
                    dropoffDate = pickupDate + (3600000 * diff);
                }
                setDays(pdid, jQuery('#'+pmid).val(), jQuery('#'+pdid).val());

				var d = new Date(dropoffDate);
				setMonth(dmid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), 12, monthNames);
				setDays(ddid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), d.getDate());
				setTime(dtid, d.getHours());
				d = new Date(pickupDate);
				setMonth(pmid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), 12, monthNames);
				setDays(pdid, d.getFullYear()+''+(((d.getMonth()+1) < 10) ? '0'+(d.getMonth()+1) : (d.getMonth()+1)), d.getDate());
				setTime(ptid, d.getHours());
			}
		}

        function setTime(id, selected)
        {
			if (jQuery('#'+id+' option').size() < 24)
			{
				jQuery('#'+id).empty("option");
				for (i=0;i<=23;i++)
				{
					jQuery('#'+id).addOption(((i < 10) ? '0' + i + ':00' : i + ':00'), i);
				}
			}
			if (selected != null) jQuery('#'+id).attr('selectedIndex', parseInt(selected, 10));
		}

	