if (!window.Spark) window.Spark=new Object();
if (!window.Spark.Web) window.Spark.Web=new Object();
if (!window.Spark.Web.UI) window.Spark.Web.UI=new Object();
if (!window.Spark.Web.UI.WebControls) window.Spark.Web.UI.WebControls=new Object();
if (!window.Spark.Web.UI.WebControls.DateTimePicker) window.Spark.Web.UI.WebControls.DateTimePicker=new Object();

Spark.Web.UI.WebControls.DateTimePicker.OnDateChanged=function(evt,ID)
{
	if (!evt) evt=window.event;
	var Source=(evt.srcElement?evt.srcElement:evt.target);
	var Control=document.getElementById(ID);
	var CurrentDate=Control.getElementsByTagName("input")[0];
	var Day=Control.getElementsByTagName("select");
	var IsDay=(((Day.length>=3)&&(Day[2].id.lastIndexOf("Year")!=-1))?true:false);
	var IsHour=((((Day.length>=3)&&(Day[2].id.lastIndexOf("Hour")!=-1))||((Day.length>=4)&&(Day[3].id.lastIndexOf("Hour")!=-1)))?true:false);
	var IsCounter=(Control.getAttribute("isCounter")==null?false:true);
	var Month=Day[1-(IsDay==true?0:1)];
	var Year=Day[2-(IsDay==true?0:1)];
	var Hour=Day[3-(IsDay==true?0:1)];
	Day=Day[0];
	var YearValue=(Year.selectedIndex>0?parseInt(Year.options[Year.selectedIndex].value):new Date().getFullYear());
	var MonthValue=(Month.selectedIndex>0?parseInt(Month.options[Month.selectedIndex].value.replace(/0(\d)/g,"$1")):new Date().getMonth());
	
	var MyDate = new Date();
	var IsFutureDateOnly=(Control.getAttribute("isFutureDateOnly")==null?false:true);
	
	if ((IsDay==true)&&(IsCounter==false)&&(IsFutureDateOnly==false))
	{
		var DaysNumber=32-new Date(YearValue,MonthValue-1,32).getDate();
		if ((MonthValue==2)&&(Day.options.length>28))
		{
			while (Day.options.length>DaysNumber)
				Day.removeChild(Day.options[Day.options.length-1]);
		}
		else if ((MonthValue!=2)&&(Day.options.length<=DaysNumber))
		{
			while (Day.options.length<=DaysNumber)
			{
				var Option=document.createElement("option");
				Option.value=parseInt(Day.options[Day.options.length-1].value)+1;
				Option.innerHTML=Option.value;
				Day.appendChild(Option);
			}
		}
	}
	
	
	if(Source.id.indexOf("Year")!=-1)
	{
	    if (IsFutureDateOnly==true && IsDay==false)
	    {
            var MonthValue = Month.value;
	        var MyMonth = MyDate.getMonth();
	        if(MyDate.getFullYear()==parseInt(Year.options[Year.selectedIndex].value))
	        {
                while (Month.hasChildNodes())
                    Month.removeChild(Month.firstChild);
                var Option=document.createElement("option");
			    Option.value="";
			    Option.innerHTML="MM";
			    Month.appendChild(Option);
			    for (var Index=MyMonth+1;Index<=MonthNames.length-1;Index++)
			    {
                    var Option=document.createElement("option");
				    Option.value=Index;
				    Option.innerHTML=MonthNames[Index];
				    Month.appendChild(Option);
                }
    	        
	        }
	        else 
	        {
	            while (Month.hasChildNodes())
                    Month.removeChild(Month.firstChild);
                for (var Index=0;Index<=MonthNames.length-1;Index++)
                {
                    var Option=document.createElement("option");
				    Option.value=Index;
				    Option.innerHTML=MonthNames[Index];
				    Month.appendChild(Option);
                }
	        }
	        for (var Index=0;Index<=Month.length-1;Index++)
	        {
	            if (Month.options[Index].value==MonthValue)
	                Month.options[Index].selected=true;
	        }
	    }
	}
	
	
	if ((Year.selectedIndex>0)&&(Month.selectedIndex>0)&&
		(((Day.selectedIndex>0)&&(IsDay==true))||(IsDay==false)))
	{
		var SelectedDate=new Date(parseInt(Year.options[Year.selectedIndex].value),
			parseInt(Month.options[Month.selectedIndex].value.replace(/0(\d)/g,"$1"))-1,
			parseInt((IsDay==true?Day.options[Day.selectedIndex].value.replace(/0(\d)/g,"$1"):"1")));
		if ((CurrentDate.getAttribute("minDate")!=null)&&(CurrentDate.getAttribute("minDate")!=""))
		{
			var MinDate=CurrentDate.getAttribute("minDate");
			MinDate=new Date(parseInt(MinDate.substr(0,4)),
				parseInt(MinDate.substr(5,2).replace(/0(\d)/g,"$1"))-1,
				parseInt(MinDate.substr(8,2).replace(/0(\d)/g,"$1")));
			if (SelectedDate<MinDate)
				SelectedDate=null;
		}
		if (SelectedDate!=null)
			CurrentDate.value=Year.options[Year.selectedIndex].value+"/"+
				Month.options[Month.selectedIndex].value+"/"+
				(IsDay==true?Day.options[Day.selectedIndex].value:"01");
		else
			CurrentDate.value="";
	}
	else
		CurrentDate.value="";
	Control.value=CurrentDate.value;
}

Spark.Web.UI.WebControls.DateTimePicker.OnTestDriveChanged=function(evt,ID,type)
{
	if (!evt) evt=window.event;
	var Source=(evt.srcElement?evt.srcElement:evt.target);
	var Control=document.getElementById(ID);
	var CurrentDate=Control.getElementsByTagName("input")[0];
	var Day=Control.getElementsByTagName("select");
	var Month=Day[1];
	var Year=Day[2];
	Day=Day[0];
	var YearValue=(Year.selectedIndex>0?parseInt(Year.options[Year.selectedIndex].value):new Date().getFullYear());
	var MonthValue=(Month.selectedIndex>0?parseInt(Month.options[Month.selectedIndex].value.replace(/0(\d)/g,"$1")):new Date().getMonth());
	var DaysNumber=32-new Date(YearValue,MonthValue-1,32).getDate();

    while (Day.options.length>0)
	    Day.removeChild(Day.options[Day.options.length-1]);
//	if ( (parseInt(CurrentDate.getAttribute("minDate").split("-")[0])==YearValue)&&(parseInt(CurrentDate.getAttribute("minDate").split("-")[1])==MonthValue) )
//	{
//	    for (i=parseInt(CurrentDate.getAttribute("minDate").split("-")[2]);i<=DaysNumber;i++)
//	    {
//	        var Option=document.createElement("option");
//	        Option.value=i;
//	        Option.innerHTML=Option.value;
//	        Day.appendChild(Option);
//	    }
//	}
//	else
//	{
	    for (i=1;i<=DaysNumber;i++)
	    {
	        var Option=document.createElement("option");
	        Option.value=i;
	        Option.innerHTML=Option.value;
	        Day.appendChild(Option);
	    }
//	}
    if ((MonthValue==2)&&(parseInt(Day.options[Day.options.length-1])>28))
    {
	    while (parseInt(Day.options[Day.options.length-1])>DaysNumber)
		    Day.removeChild(Day.options[Day.options.length-1]);
    }
    else if ((MonthValue!=2)&&(Day.options.length<=DaysNumber))
    {			
	    while (Day.options.length<DaysNumber)
	    {
		    var Option=document.createElement("option");
		    Option.value=parseInt(Day.options[Day.options.length-1].value)+1;
		    Option.innerHTML=Option.value;
		    Day.appendChild(Option);
	    }
    }
    if ((CurrentDate.getAttribute("minDate")!=null)&&(type=='Y'))
    {
    	for (i=Month.options.length-1;i>=0;i--)
		    Month.removeChild(Month.options[i]);
        if(CurrentDate.getAttribute("minDate").split("-")[0]!=YearValue)
        {
            for (i=0; i<12;i++)
	        {
		        var Option=document.createElement("option");
		        Option.value=i+1;
		        Option.innerHTML=CurrentDate.getAttribute("months").split(";")[i];
		        Month.appendChild(Option);
	        }
	    }
	    else
	    {
	        for (i=parseInt(CurrentDate.getAttribute("minDate").split("-")[1]);i<13;i++)
	        {
		        var Option=document.createElement("option");
		        Option.value=i;
		        Option.innerHTML=CurrentDate.getAttribute("months").split(";")[i-1];
		        Month.appendChild(Option);
	        }
	    }
    }
}

