//this script create <OPTION> tag for Date. Day, Month, Year.

function HTMLDateSelector()
{
	var objDay   = null;
	var objMonth = null;
	var objYear  = null;
	
	this.createDays    = createDays;
	this.createMonths  = createMonths;
	this.createYears   = createYears;
	this.getDateString = getDateString;
	this.updateDateTo  = updateDateTo;

	function createYears(jvarSelectId, jvarFirstOption, jvarStart, jvarRange, jvarFirstOptionValue, jvarDefaultSelected, jvarExtraOptionPosition)
	{
		var firstOptionValue = "";
		var extraOptionPosition = true;
		
		if(jvarFirstOptionValue != null)
			firstOptionValue = jvarFirstOptionValue;
		
		if(jvarExtraOptionPosition != null)
			extraOptionPosition = jvarExtraOptionPosition;
		
		objYear = document.getElementById(jvarSelectId);
		
		var yearStart = new Date().getFullYear();
		var yearRange = jvarRange;
		
		if(jvarStart != null)
			yearStart = jvarStart;
		
		if(jvarFirstOption != null && extraOptionPosition)
			createFirstOption(objYear, jvarFirstOption, firstOptionValue);
		
		for(var i = yearStart; i < yearStart + yearRange; i++)
		{
			var newOPTION       = document.createElement("option");			   
			newOPTION.value     = i;
			newOPTION.innerText = i; //for IE
			newOPTION.text      = i; //for FireFox

			if(jvarDefaultSelected != null && newOPTION.value == jvarDefaultSelected)
				newOPTION.selected = true;

			objYear.appendChild(newOPTION);
		}
		
		if(jvarFirstOption != null && !extraOptionPosition)
			createFirstOption(objYear, jvarFirstOption, firstOptionValue);
		
	}
	
	function createMonths(jvarSelectId, jvarFirstOption, jvarFormat, jvarFirstOptionValue, jvarDefaultSelected)
	{
		/* M   =  numeric month, 
		   MM  = first 3 letter e.g. Jan, 
		   MMM = full spelling of month e.g. January
		*/
		
		objMonth = document.getElementById(jvarSelectId);
		
		var format_M   = 0;
		var format_MM  = 1;
		var format_MMM = 2;
		
		var aryMonth = new Array();
		aryMonth.push(new Array("01", "Jan", "January"));
		aryMonth.push(new Array("02", "Feb", "February"));
		aryMonth.push(new Array("03", "Mar", "March"));
		aryMonth.push(new Array("04", "Apr", "April"));
		aryMonth.push(new Array("05", "May", "May"));
		aryMonth.push(new Array("06", "Jun", "Jun"));
		aryMonth.push(new Array("07", "Jul", "July"));
		aryMonth.push(new Array("08", "Aug", "August"));
		aryMonth.push(new Array("09", "Sep", "September"));
		aryMonth.push(new Array("10", "Oct", "October"));
		aryMonth.push(new Array("11", "Nov", "November"));
		aryMonth.push(new Array("12", "Dec", "December"));
		
		var selectedFormat = format_M;
		
		if(jvarFormat == "M")
			selectedFormat = format_M;
		else if(jvarFormat == "MM")
			selectedFormat = format_MM;
		else if(jvarFormat == "MMM")
			selectedFormat = format_MMM;
		
		if(jvarFirstOption != null)
			createFirstOption(objMonth, jvarFirstOption, jvarFirstOptionValue);
		
		for(var i = 0; i < aryMonth.length; i++)
		{
			var newOPTION       = document.createElement("option");			
			newOPTION.value     = aryMonth[i][format_M];
			newOPTION.innerText = aryMonth[i][selectedFormat]; //for IE
			newOPTION.text      = aryMonth[i][selectedFormat]; //for FireFox
			
			if(jvarDefaultSelected != null && newOPTION.value == jvarDefaultSelected)
				newOPTION.selected = true;
			
			objMonth.appendChild(newOPTION);
		}	
	}
	
	function createDays(jvarSelectId, jvarFirstOption, jvarEnd, jvarFirstOptionValue, jvarDefaultSelected)
	{
		objDay = document.getElementById(jvarSelectId);
		
		var dayEnd = 31;
		
		if(jvarEnd)
			dayEnd = jvarEnd;
		
		if(jvarFirstOption != null)
			createFirstOption(objDay, jvarFirstOption, jvarFirstOptionValue);
		
		for(var i = 1; i <= dayEnd; i++)
		{
			var newOPTION   = document.createElement("option");
			var leadingZero = "";
			
			if( i < 10)
				leadingZero = "0";
				
			newOPTION.value     = leadingZero + i;
			newOPTION.innerText = leadingZero + i; //for IE
			newOPTION.text      = leadingZero + i; //for FireFox
			
			
			if(jvarDefaultSelected != null && newOPTION.value == jvarDefaultSelected)
			{
				newOPTION.selected = true;
			}
			objDay.appendChild(newOPTION);
		}	
	}
	
	function getDateString(jvarFormat, jvarDelimiter)// Date format-> DMY, YMD, MDY
	{
		// Date format-> DMY, YMD, MDY
		
		var DMY = "DMY";
		var YMD = "YMD";
		var MDY = "MDY";
		
		var strDay   = "01";
		
		if(objDay != null)
			strDay = objDay.value;
		
		var strMonth = objMonth.value;
		var strYear  = objYear.value;
		var newDate  = strDay + jvarDelimiter + strMonth + jvarDelimiter + strYear;
		
		if(jvarFormat != null)
		{
			if(jvarFormat == DMY)
				newDate = strDay + jvarDelimiter + strMonth + jvarDelimiter + strYear;
			else if(jvarFormat == MDY)
				newDate = strMonth + jvarDelimiter + strDay + jvarDelimiter + strYear;
			else
				newDate = strYear + jvarDelimiter + strMonth + jvarDelimiter + strDay;
		}
		else
			newDate = strYear + jvarDelimiter + strMonth + jvarDelimiter + strDay;//defaut is YMD

		return newDate;
	}
	
	function updateDateTo(jvarSelectId, jvarFormat, jvarDelimiter)
	{
	
		document.getElementById(jvarSelectId).value = getDateString(jvarFormat, jvarDelimiter);
	}

	function createFirstOption(jvarObj, jvarFirstOption, jvarFirstOptionValue)
	{
		var firstOptionValue = "";
		if(jvarFirstOptionValue != null)
			firstOptionValue = jvarFirstOptionValue;
		
		var firstOPTION       = document.createElement("option");
		firstOPTION.value     = firstOptionValue;
		firstOPTION.innerText = jvarFirstOption; //for IE
		firstOPTION.text      = jvarFirstOption; //for FireFox
		jvarObj.appendChild(firstOPTION);		
	}
}
