var arrDateSelectorParents = new Array()

function DateSelectorCloseAll(){
	for (var i = 0; i < arrDateSelectorParents.length; i++){
		DateSelectorHide(arrDateSelectorParents[i])
	}
}

function DateSelectorInit(sSelectorID,sParentID,sTriggerButton){
	
	arrDateSelectorParents.push(sParentID)
	
	DateSelectorHide(sParentID)

	var oSelector = getObject(sSelectorID)
	oSelector.isDateSelectorObject = true
	oSelector.CurrentMonth = new Date().getMonth()
	oSelector.CurrentYear = new Date().getFullYear()
	
	DateSelectorLoadmonth(sSelectorID,oSelector.CurrentYear,oSelector.CurrentMonth)
	
	var oButton = getObject(sTriggerButton)
	oButton.isDateSelectorObject = true
	oButton.onclick = function(){DateSelectorShow(sParentID)}
	oButton.style.cursor = 'pointer'
	
	var oHeader = getObject(sSelectorID + '_Header')
	oHeader.isDateSelectorObject = true
	
	var oPreviousMonth = getObject(sSelectorID + '_PreviousMonth')
	oPreviousMonth.isDateSelectorObject = true
	var oNextMonth = getObject(sSelectorID + '_NextMonth')
	oNextMonth.isDateSelectorObject = true
	var oPreviousYear = getObject(sSelectorID + '_PreviousYear')
	oPreviousYear.isDateSelectorObject = true
	var oNextYear = getObject(sSelectorID + '_NextYear')
	oNextYear.isDateSelectorObject = true
	
	var oMonday = getObject(sSelectorID + '_Monday')
	oMonday.isDateSelectorObject = true
	var oTuesday = getObject(sSelectorID + '_Tuesday')
	oTuesday.isDateSelectorObject = true
	var oWednesday = getObject(sSelectorID + '_Wednesday')
	oWednesday.isDateSelectorObject = true
	var oThursday = getObject(sSelectorID + '_Thursday')
	oThursday.isDateSelectorObject = true
	var oFriday = getObject(sSelectorID + '_Friday')
	oFriday.isDateSelectorObject = true
	var oSaturday = getObject(sSelectorID + '_Saturday')
	oSaturday.isDateSelectorObject = true
	var oSunday = getObject(sSelectorID + '_Sunday')
	oSunday.isDateSelectorObject = true
	
	var lRows = 6
	var lColumns = 7
	
	for (var i = 1; i <= lRows; i++){
		for (var j = 1; j <= lColumns; j++){
			
			var sCellID = sSelectorID + '_' + i + '_' + j
			
			var oCell = getObject(sCellID)
			
			oCell.isDateSelectorObject = true
		}
	}
}

function DateSelectorShow(sParentID){
	DateSelectorCloseAll()
	
	var sSelectorID = sParentID + '_Date_Selector'
	
	getObject(sSelectorID).style.display = 'block'
	
}

function DateSelectorHide(sParentID){
	var sSelectorID = sParentID + '_Date_Selector'
	
	getObject(sSelectorID).style.display = 'none'	
}

function DateSelectorHilightCell(sCellID){
	getObject(sCellID).style.textDecoration = 'underline'
}

function DateSelectorDehilightCell(sCellID){
	getObject(sCellID).style.textDecoration = 'none'
}

function EnableCell(sCellID){
	getObject(sCellID).style.background = '#ffffff'
	getObject(sCellID).style.color = '#000000'
}

function DisableCell(sCellID){
	getObject(sCellID).style.background = '#cccccc'
	getObject(sCellID).style.color = '#eeeeee'
}

function DateSelectorUpdateParent(sParentID,sSelectorID,lRow,lColumn){
	var sCellID = sSelectorID + '_' + lRow + '_' + lColumn
	var oCell = getObject(sCellID)
	getObject(sParentID).value = DateSelectorFormatDate(oCell.SelectorDate)
	
	DateSelectorHide(sParentID)

}

function DateSelectorFormatDate(oDate){
	var lDay = DateSelectorAddLeadingZero(oDate.getDate())
	var lMonth = DateSelectorAddLeadingZero(oDate.getMonth()+1)
	
	return lDay + '/' + lMonth + '/' + oDate.getFullYear()
}

function DateSelectorAddLeadingZero(lNumber){
	var sNumber = lNumber + ''
	
	if (sNumber.length == 1){
		sNumber = '0' + sNumber
	}
	
	return sNumber
	
}

function DateSelectorPreviousMonth(sSelectorID){
	var oSelector = getObject(sSelectorID)
	
	oSelector.CurrentMonth --
	if (oSelector.CurrentMonth < 0){
		oSelector.CurrentMonth = 11
		oSelector.CurrentYear --
	}
	
	DateSelectorLoadmonth(sSelectorID,oSelector.CurrentYear,oSelector.CurrentMonth)
}

function DateSelectorNextMonth(sSelectorID){
	var oSelector = getObject(sSelectorID)
	
	oSelector.CurrentMonth ++
	if (oSelector.CurrentMonth == 12){
		oSelector.CurrentMonth = 0
		oSelector.CurrentYear ++
	}
	
	DateSelectorLoadmonth(sSelectorID,oSelector.CurrentYear,oSelector.CurrentMonth)
}




function DateSelectorPreviousYear(sSelectorID){
	var oSelector = getObject(sSelectorID)
	
	oSelector.CurrentYear --
	
	DateSelectorLoadmonth(sSelectorID,oSelector.CurrentYear,oSelector.CurrentMonth)
}

function DateSelectorNextYear(sSelectorID){
	var oSelector = getObject(sSelectorID)
	
	oSelector.CurrentYear ++
	
	DateSelectorLoadmonth(sSelectorID,oSelector.CurrentYear,oSelector.CurrentMonth)
}


function DateSelectorLoadmonth(sSelectorID,lYear,lMonth){
	var oStartDate = new Date(lYear,lMonth,1) 

	var lOffset = oStartDate.getDay()
	
	if (lOffset == 0){lOffset = 7}
	
	lOffset -= 1
	
	var lOneDay=1000*60*60*24
	
	var oThisDate = new Date(oStartDate.getTime() - (lOneDay * lOffset))
	
	var lRows = 6
	var lColumns = 7
	
	for (var i = 1; i <= lRows; i++){
		for (var j = 1; j <= lColumns; j++){
			
			var sCellID = sSelectorID + '_' + i + '_' + j
			
			var oCell = getObject(sCellID)
			
			oCell.innerHTML = oThisDate.getDate()
			
			if (oStartDate.getMonth() != oThisDate.getMonth()){
				DisableCell(sCellID)
			}else{
				EnableCell(sCellID)
			}
			
			oCell.SelectorDate = oThisDate
			
			oThisDate = new Date(oThisDate.getTime() + lOneDay)
				
		}
	}
	
	var oReadout = getObject(sSelectorID + '_Month_Readout')
	
	oReadout.innerHTML = DateSelectorMonthName(lMonth) + ' ' + lYear
	
}

function DateSelectorMonthName(lMonth){
	var arrMonthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December')
	return arrMonthNames[lMonth]
}



document.onclick = function(event) {
	if(getEvent(event).target.isDateSelectorObject == undefined){
		DateSelectorCloseAll()
	}
}