	var today = new Date();
	var targetColor = "black";
	var targetErrorColor = "red";
        var validFontSize = "12px";
        var invalidFontSize = "11px";
	
	function selectHandler(cal, date)
	{
		if(!cal.dateClicked)
			return;
			
		cal.sel.value = date;
		cal.hide();
		splitdate(cal.sel);
		cd();
	}
	function closeHandler(cal)
	{
		cal.destroy();
		cal == null;
	}
	function showCalendar(id)
	{
		var elem = document.getElementById(id);
		var button = document.getElementById(id + "_button");		
		if(calendar != null)
		{
			calendar.destroy();
			calendar = null;
		}
		var calendar = new Calendar(true, null, selectHandler, closeHandler);
		calendar.setDateFormat("%d-%m-%Y");
		calendar.sel = elem;
		calendar.create();
		calendar.setDate(createDate(elem));

		calendar.showAtElement(button, "BR");
	}
	function createDate(elem)
	{
                var minuteElem = document.getElementById(elem.id + "_minute");
                var hourElem = document.getElementById(elem.id + "_hour");		
                var dayElem = document.getElementById(elem.id + "_day");
		var monthElem = document.getElementById(elem.id + "_month");
		var yearElem = document.getElementById(elem.id + "_year");
                
		var date = new Date();

		date.setYear(yearElem.value);
		date.setDate(dayElem.selectedIndex + 1);
		date.setMonth(monthElem.selectedIndex);
                date.setHours(hourElem.value);
                date.setMinutes(minuteElem.value);
		return date;
	}
	function splitdate(elem)
	{
		var date = String(elem.value).split("-");
		
		while(String(date[0]).substring(0, 1) == "0")
			date[0] = String(date[0]).substring(2, String(date[0]).length - 1)
			
		var dayElem = document.getElementById(elem.id + "_day");
		var monthElem = document.getElementById(elem.id + "_month");
		var yearElem = document.getElementById(elem.id + "_year");

		dayElem.options.selectedIndex = parseInt(date[0]) - 1;
		monthElem.options.selectedIndex = parseInt(date[1], 10) - 1;
		yearElem.options.selectedIndex = date[2] - today.getFullYear();
	}

	function calcDate(startid, endid, targetid)
	{
		var SyearElem = document.getElementById(startid + "_year");
		var SmonthElem = document.getElementById(startid + "_month");
		var SdayElem = document.getElementById(startid + "_day");
                var ShourElem = document.getElementById(startid + "_hour");
                var SminuteElem = document.getElementById(startid + "_minute");

		var EyearElem = document.getElementById(endid + "_year");
		var EmonthElem = document.getElementById(endid + "_month");
		var EdayElem = document.getElementById(endid + "_day");
                var EhourElem = document.getElementById(endid + "_hour");
                var EminuteElem = document.getElementById(endid + "_minute");
		
		var targetElem = document.getElementById(targetid);

                if(isValidDate(SmonthElem.value, SdayElem.value) && isValidDate(EmonthElem.value, EdayElem.value))
                {
                    var startdate = new Date();
                    var enddate = new Date();
		    startdate.setDate(1);
                    startdate.setFullYear(SyearElem.value);
                    startdate.setMonth(SmonthElem.value);
                    startdate.setDate(SdayElem.value);
                    startdate.setHours(ShourElem.value);
                    startdate.setMinutes(SminuteElem.value);
		    enddate.setDate(1);
                    enddate.setFullYear(EyearElem.value);                
                    enddate.setMonth(EmonthElem.value);
                    enddate.setDate(EdayElem.value);
                    enddate.setHours(EhourElem.value);
                    enddate.setMinutes(EminuteElem.value);
                    var diff = calcdays(startdate, enddate);
                    if(diff < 0)
                    {
                        var timeDiff = 1000 * 60 * 60 * 24 * 7;
                        enddate.setTime(startdate.getTime() + timeDiff);
                        EyearElem.value = enddate.getFullYear();
                        EmonthElem.selectedIndex = enddate.getMonth();
                        EdayElem.value = enddate.getDate();
                    }
                    var diff = calcdays(startdate, enddate);
                    if(diff < 0)
                            targetElem.style.color = targetErrorColor;
                    else
                            targetElem.style.color = targetColor;
                    targetElem.style.fontSize = validFontSize;
                    targetElem.value = diff;
                }
                else
                {
                    targetElem.style.color = targetErrorColor
                    targetElem.style.fontSize = invalidFontSize;
                    targetElem.value = "invalid";
                }
	}
	function calcdays(start, end)
	{
		var diff = end.getTime() - start.getTime();
                var msPday = 1000 * 60 * 60 * 24;
                diff = (diff / msPday) + (diff % msPday > 0 ? 1 : 0);
		
		return Math.floor(diff);
	}
	function cd()
	{
		calcDate('pickup', 'dropoff', 'totaldays');
	}
function isValidDate(cMonth,cDay)
{
    switch (cMonth)
    {
        case "1":
            if (parseInt(cDay)>29)
                return false;
            else
                return true;
            break;
        case "3":
            if (parseInt(cDay)>30) 
                return false;
            else
                return true;
            break;

        case "5":
            if (parseInt(cDay)>30) 
                return false;
            else
                return true;
            break;

        case "8":
            if (parseInt(cDay)>30) 
                return false;
            else
                return true;
            break;

        case "10":
            if (parseInt(cDay)>30) 
                return false;
            else
                return true;
            break;
    }
    return true
}

