//-----------------------------------------------------------------------------
//Module      :   DateFunctions.js
//Created By  :   
//Created On  :   
//Description :   Javascript date functions
//-----------------------------------------------------------------------------
//Modification History:
//-----------------------------------------------------------------------------
//SNo    Who     Date            Description
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
//used to validate the date entry and select the values in the dropdowns accordingly


function SetDates(datetextboxid,monthdropdownid,daydropdownid,lblDayID,datetextboxtocompare,compareswitch)
{
	var txtDateTextBox	= document.getElementById(datetextboxid);
	var ddlMonth		= document.getElementById(monthdropdownid);
	var ddlDay			= document.getElementById(daydropdownid);
	var lblDay			= document.getElementById(lblDayID);
	var txtDateToCompare = document.getElementById(datetextboxtocompare);
	
	var strDateToCompare = txtDateToCompare.value;
	var dateToCompare	= new Date();
	
	var strDate = txtDateTextBox.value;
	var strMonth;
	
	if(strDateToCompare!='')
	{
		if(strDateToCompare.indexOf("-") >= 0) 
		{
			dateToCompare.setDate(1);
			dateToCompare.setFullYear(Number(strDateToCompare.substr(0,4)));
			dateToCompare.setMonth(Number(strDateToCompare.substr(5,2))-1);
			dateToCompare.setDate(Number(strDateToCompare.substr(8,2)));
		}
	}
	
	//date operations 
	if(strDate!= '')
	{
		if(strDate.indexOf("-") >= 0) 
		{
			var enteredDate = new Date();
			enteredDate.setDate(1);
			enteredDate.setFullYear(Number(strDate.substr(0,4)));
			enteredDate.setMonth(Number(strDate.substr(5,2))-1);
			enteredDate.setDate(Number(strDate.substr(8,2)));
			
			//vinod: mod. for valid date
			if( (Number(strDate.substr(8,2)) != enteredDate.getDate()) ||
				(Number(strDate.substr(5,2))-1 != enteredDate.getMonth()) ||
				(Number(strDate.substr(0,4)) != enteredDate.getFullYear()) )
			{
				enteredDate.setDate(1);
				enteredDate.setFullYear(Number(strDate.substr(0,4)));
				enteredDate.setMonth(Number(strDate.substr(5,2))-1);
				for(i = 27;i < 32;i++)
				{
					enteredDate.setDate(i+1);
					if(Number(strDate.substr(5,2)) != (enteredDate.getMonth()+1))
						break;
				}
				enteredDate.setMonth(Number(strDate.substr(5,2))-1);
				enteredDate.setDate(i);
			}
			//vinod: mod. for valid date
			strMonth = '0'+ String(enteredDate.getMonth()+1);
			if(strMonth.length > 2)
			{
				strMonth = strMonth.substr(1);
			}
			dayPopulate(daysInMonth(strMonth,enteredDate.getFullYear()),daydropdownid);
			if(DateCompareAndAdjust(enteredDate,dateToCompare,compareswitch,datetextboxid,datetextboxtocompare)==true)
			{
				for(i=0;i < ddlDay.length;i++)
				{
					if(ddlDay[i].value == String(enteredDate.getDate()))
					{
						ddlDay[i].selected = true;
						break;
					}								
				}
				//end of setting the day
				
				
				//setting the month variable
				
				//end of setting the month variable
				//setting the textbox to the new date				
				txtDateTextBox.value = enteredDate.getFullYear() + '-' + strMonth + '-' + enteredDate.getDate();
				
				if(lblDay!=null)
				{
					lblDay.innerHTML= GetWeekDay(enteredDate.getDay());
				}
				
				//begin for
				for(i=0;i < ddlMonth.length;i++)
				{
				//alert(ddlMonth[i].value);
					
					if(ddlMonth[i].value == (enteredDate.getFullYear() + '-'+ strMonth))
					{
						ddlMonth[i].selected = true;
						break;
					}								
				}
				//end for
				return true;
				
			}
			else
			{
				
				return false;
			}
		
		}
	}

}

//Give the day of the week this function returns the name of the day of the week
function GetWeekDay(intDayofWeek)
{
    var DayArray = new Array("Sun","Mon", "Tue", "Wed","Thu", "Fri", "Sat"
                               )
    return DayArray[intDayofWeek]; 	 
}

function DateCompareAndAdjust(dtDate1,dtDate2,compareswitch,textboxfromdate,textboxtodate)
{

if(dtDate1>=new Date() && dtDate2 >new Date())
{
	if(compareswitch==1)
	{
			
		if(dtDate1>dtDate2)
		{
			
			var txtDepartureDate=document.getElementById(textboxfromdate);
			var txtReturnDate=document.getElementById(textboxtodate);
			var returndate=new Date()
			var strDepartureDate=txtDepartureDate.value;
			var strMonth;
			
			if(strDepartureDate!='')
			{
				if(strDepartureDate.indexOf("-") >= 0) 
				{
				returndate.setDate(1);
				returndate.setFullYear(Number(strDepartureDate.substr(0,4)));
				returndate.setMonth(Number(strDepartureDate.substr(5,2))-1);
				returndate.setDate(Number(strDepartureDate.substr(8,2))+1);
				strMonth='0' + String(returndate.getMonth()+1);
				if(strMonth.length>2)
				{
					strMonth = strMonth.substr(1);
				}
				var strDay = '0'+ String(returndate.getDate());
				if(strDay.length > 2)
				{
					strDay = strDay.substr(1);
				}
				txtReturnDate.value=returndate.getFullYear() + '-' + strMonth + '-' + strDay;
				//programmatically firing the onchange event for the returndate textbox
				txtReturnDate.onchange();
			}
			
		}
			
			
			
			
			
			
			
			//window.event;
			//alert('From Date Cannot be more than the to Date');
			//return false;
		}
	}
//return date validation

	if(compareswitch==2)
	{
		if(dtDate1<dtDate2)
		{
			
			alert('Return cannot be before departure');
			return false;
		}
	}
	return true;
}
else
{
	alert('Please select correct dates');
	return false;
}
}

function daysInMonth(iMonth, iYear)
{
	//return 32 - new Date(iYear, iMonth, 32).getDate();
	
            var dd = new Date(iYear, iMonth, 0);
            return dd.getDate();
}

function dayPopulate(NumberOfDays,dayDropDownID)
{
var ddlDay=document.getElementById(dayDropDownID)

//for(i=0;i<=ddlDay.length;i++

			
			//alert(ddlDay.length);
			for(i=ddlDay.length-1;i>=0;i--)
			{
				if(ddlDay[i].value > NumberOfDays)
				{
					
					ddlDay.options[i]=null;
					
				}								
			}
			
			
			
			if (ddlDay.length<NumberOfDays)
			{
				for (i=ddlDay.length+1;i<32;i++)
				{
					ddlDay.options.add(new Option(i,i));
				}
			}
			
}

function SetDDLDates(datetextboxid,monthdropdownid,daydropdownid,lblDayID,datetextboxtocompare,compareswitch)
{
	var ddlDay = document.getElementById(daydropdownid);
	var ddlMonth = document.getElementById(monthdropdownid);
	//	Call custom DateValidate function 
	var retInt= DateValidate(ddlDay[ddlDay.selectedIndex].value,ddlMonth[ddlMonth.selectedIndex].value);
	var intArrivalDay = ddlDay[ddlDay.selectedIndex].value;
	
	
	//	set checkin date
	var txtDate = document.getElementById(datetextboxid);	
	var strDay = '0'+ String(intArrivalDay);
	if(strDay.length > 2)
	{
		strDay = strDay.substr(1);
	}
	txtDate.value = ddlMonth[ddlMonth.selectedIndex].value+ '-' + strDay;
	//SetDates(datetextboxid,monthdropdownid,daydropdownid,lblDayID,datetextboxtocompare,compareswitch);
	txtDate.onchange();
	
}

