

var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

function getMonthAsNumber(strMonth) {
var j = -1;
for (i=0; i<12; i++) {
	if (strMonth == months[i])
		j = i;
}
return j;
}


function nths(day) {
    if (day == 1 || day == 21 || day == 31) return 'st';
    if (day == 2 || day == 22) return 'nd';
    if (day == 3 || day == 23) return 'rd';
    return 'th';
}


//function y2k(number) { return (number &lt; 1000) ? number + 1900 : number; }

function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}


function initDates(ids)
{
var p1 = [];
var p2 = [];
var j = 0;
//
//	ids contains a sting of paired control parameters (one pair per control, and many controls)
//	id1:dd/mm/yyyy:id2:dd/mm/yyyy:id3:dd/mm/yyyy:......
//
//
//Set the selected date to today
var today = new Date();
var d = today.getDate();
var m = today.getMonth();
var mm = m + 1;
var y = today.getFullYear();
var selection = d + "/" + mm + "/" + y;

//Get the control ID's and initial dates (IN PAIRS) from the parameter
var parts = ids.split(":");
if (parts.length > 0)
{

for (j=0; j< parts.length; j=j+2)
{
	//Load the parameters into arrays of control ids and date strings
	p1.push(parts[j]);
	p2.push(parts[j+1]);
}
}
else
{
return;
}

//Go through the control array and set the date
if (p1.length > 0)
{
var element;
var i = 0;
	for (i=0; i<p1.length; i++)
	{
		//Now get the components of the p2 date - which is delimited by "/"
		var dateparts = p2[i].split("/");
		d = parseInt(dateparts[0], 10);
		m = parseInt(dateparts[1], 10);
		y = parseInt(dateparts[2], 10);
		//Adjust month for array index
		mm =  m;

		//Set the selected date field
		var selection = d + "/" + mm + "/" + y;
		//var selection = dateparts[0] + "/" + dateparts[1] + "/" + dateparts[2];

		element = p1[i] + "Date";
  		document.getElementById(element).innerHTML = selection;
		//now we assign the new value to the input
		element = p1[i] + "hDate";
		document.getElementById(element).value=selection;


		var title = months[mm] + " " + y;
		element = p1[i] + "b3";
		document.getElementById(element).innerHTML = title;
		doPast(element);
	}
}
}


function doPast(elId)
{
	doDateY(elId, -2);				
}
function doFuture(elId)
{
	doDateY(elId, 2);
}
function doPastY(elId)
{
	doDateY(elId, -1);				
}
function doFutureY(elId)
{
	doDateY(elId, 1);				
}

//Function to navigate the date control
function doDateY(elId, optn)
{
//Get the element prefix
var prefix = elId.substring(0,3)  // First three characters to determine the control
var dynmId;
var titleText;
titleText = document.getElementById(elId).innerHTML;
var mySplitResult = titleText.split(" ");
var currMonthNo = getMonthAsNumber(mySplitResult[0]);
var currMonthReal;
var currYearNo = parseInt(mySplitResult[1]);
//Forward 1 year
if (optn == 1)
	currYearNo = currYearNo + 1;
//forward 1 month
if (optn == 2)
{
	currMonthNo = currMonthNo + 1;
	if (currMonthNo > 11) {
		currMonthNo = 1;
		currYearNo = currYearNo + 1;}
}
//Backward 1 year
if (optn == -1)
	currYearNo = currYearNo - 1;
//forward 1 month
if (optn == -2)
{
	currMonthNo = currMonthNo - 1;
	if (currMonthNo < 0) {
		currMonthNo = 11;
		currYearNo = currYearNo - 1;}
}
	currMonthReal = currMonthNo + 1;
	var this_date = new Date(currMonthReal + "/01/" + currYearNo)	//get day-time stamp
	var this_weekday = this_date.getDay()	//extract weekday
	var mDays = daysInMonth(currMonthNo,currYearNo);
	document.getElementById(elId).innerHTML = months[currMonthNo] + " " + currYearNo;
	//Get this date
	var cellDay;
	var thisDate = new Date();
	var selectedDate = new Date();
	var celId;
	celId = prefix + "Date";
	selectedDate = getSelectedDate(celId);
	//Clear the cells
	for (i=1; i<=6; i++) {
		for (j=1; j<=7; j++) {
			celId = prefix + i + j;
				document.getElementById(celId).style.backgroundColor = "#00DFAA";
		}
	}				//Now replenish the cellvalues for this month
	var k = 0;
	var dynmId;
	for (i=1; i<7; i++) {
		for (j=1; j <8; j++) {
			dynmId = prefix + i + j;
			if ((k < this_weekday) || (k - this_weekday >= mDays)) {
				document.getElementById(dynmId).innerHTML = "";
				document.getElementById(dynmId).style.backgroundColor = "transparent";}
			else 
			{
				var strDay = k + 1 - this_weekday;
				//If this cell is the seleted date set its colour
				if (!(selectedDate == null)) 
				{
					thisDate.setFullYear(currYearNo,currMonthNo,strDay);
					if (Date.parse(thisDate) == Date.parse(selectedDate))
						document.getElementById(dynmId).style.backgroundColor = "#CCCC00";
				}
				//Set day value in the cell
				document.getElementById(dynmId).innerHTML = strDay;
			}
		k = k + 1;
		}
	}
}

function doXXX(elementID)
{
	//Get the element prefix
	var prefix = elementID.substring(0,3)  // First three characters to determine the control
	//Get day number
	var strDay = document.getElementById(elementID).innerHTML
	if (strDay.length == 0)
		return;
	var elId;
	//Clear the boxes
	for (i=1; i<=6; i++) {
		for (j=1; j<=7; j++) {
			elId = prefix + i + j;
			if (document.getElementById(elId).innerHTML == "")
				document.getElementById(elId).style.backgroundColor = "transparent";
			else
				document.getElementById(elId).style.backgroundColor = "#00DFAA";
		}
	}

	//Set the color of this cell
        document.getElementById(elementID).style.backgroundColor = "#CCCC00";

	//Get day number and get year and date
	var strDay = document.getElementById(elementID).innerHTML
 	var titleText;
	elId = prefix + "b3";
  	titleText = document.getElementById(elId).innerHTML;
	var mySplitResult = titleText.split(" ");
 	var strMonth = getMonthAsNumber(mySplitResult[0]) + 1;
 	var strYear = mySplitResult[1];
	var strDate = strDay +"/" + strMonth + "/" + strYear;
	//Set the selected date field
	elId = prefix + "Date";
	document.getElementById(elId).innerHTML = strDate; 
	//now we assign the new value to the input
	elId = prefix + "hDate";
	document.getElementById(elId).value=strDate;
 }
function getBarDate(elId, strDay)
{
	var titleText;
	titleText = document.getElementById(elId).innerHTML;
	var mySplitResult = titleText.split(" ");
	var currMonthNo = getMonthAsNumber(mySplitResult[0]);
	var currYearNo = parseInt(mySplitResult[1]);
	var thisDate=new Date();
	thisDate.setFullYear(currYearNo,currMonthNo,strDay);
	return thisDate;
}
function getSelectedDate(elId)
{
	var thisDate=new Date();
	var selText;
	selText = document.getElementById(elId).innerHTML;
	//Check date is set
	if (selText.search("/") < 0)
		return null;					
	else {
		var mySplitResult = selText.split("/");
 		var selDay = parseInt(mySplitResult[0]);
 		var selMonth = parseInt(mySplitResult[1]) - 1;
 		var selYear = parseInt(mySplitResult[2]);
		thisDate.setFullYear(selYear,selMonth,selDay);
		return thisDate;}
	}
function getStyle(el,styleProp)
{
	//background-color or backgroundColor - check for undefined returned
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}
