// JavaScript Document

function createCalendar ()
{
	GetStartDate();
	
	newTable = document.createElement('table');
	var tableName = "calendarTable";
	
	newTable.setAttribute('id',tableName);
	newTable.className = "calendarTable";
	newdiv.appendChild(newTable);

	//ponemos el titulo del mes
		var lastRow = newTable.rows.length;
		var row = newTable.insertRow(-1);
		
		var offSetCell = new Array;
		
		if (todayYear < year)
		{
			offSetCell[0] = row.insertCell(-1);
			offSetCell[0].colSpan="1";
			var textNode = document.createTextNode("<<");
			offSetCell[0].appendChild(textNode);
			offSetCell[0].className = "CalendarTitleRow";
			offSetCell[0].id = "minusYear";
		}
		else
		{
			cellLeft = row.insertCell(-1);
			cellLeft.colSpan="1";
			var textNode = document.createTextNode(" ");
			cellLeft.appendChild(textNode);
			cellLeft.className = "CalendarTitleRow";
		}

		if ((todayMonth < month)||(todayYear < year))
		{
			offSetCell[1] = row.insertCell(-1);
			offSetCell[1].colSpan="1";
			var textNode = document.createTextNode("<");
			offSetCell[1].appendChild(textNode);
			offSetCell[1].className = "CalendarTitleRow";
			offSetCell[1].id = "minusMonth";
		}
		else
		{
			cellLeft = row.insertCell(-1);
			cellLeft.colSpan="1";
			var textNode = document.createTextNode(" ");
			cellLeft.appendChild(textNode);
			cellLeft.className = "CalendarTitleRow";
		}
		
		cellLeft = row.insertCell(-1);
		cellLeft.colSpan="2";
		var textNode = document.createTextNode(NameOfMonth.substring(0, 3) + " - " + year);
		cellLeft.appendChild(textNode);
		cellLeft.className = "CalendarTitleRow";
		
		if (monthOffset < 24)
		{
			offSetCell[2] = row.insertCell(-1);
			offSetCell[2].colSpan="1";
			var textNode = document.createTextNode(">");
			offSetCell[2].appendChild(textNode);
			offSetCell[2].className = "CalendarTitleRow";
			offSetCell[2].id = "plusMonth";
		}
		else
		{
			cellLeft = row.insertCell(-1);
			cellLeft.colSpan="1";
			var textNode = document.createTextNode(" ");
			cellLeft.appendChild(textNode);
			cellLeft.className = "CalendarTitleRow";
		}

		if (monthOffset < 24)
		{
			offSetCell[3] = row.insertCell(-1);
			offSetCell[3].colSpan="1";
			var textNode = document.createTextNode(">>");
			offSetCell[3].appendChild(textNode);
			offSetCell[3].className = "CalendarTitleRow";
			offSetCell[3].id = "plusYear";
		}
		else
		{
			cellLeft = row.insertCell(-1);
			cellLeft.colSpan="1";
			var textNode = document.createTextNode(" ");
			cellLeft.appendChild(textNode);
			cellLeft.className = "CalendarTitleRow";
		}
		
		offSetCell[4] = row.insertCell(-1);
		offSetCell[4].colSpan="1";
		var textNode = document.createTextNode("x");
		offSetCell[4].appendChild(textNode);
		offSetCell[4].className = "CalendarTitleRow";
		offSetCell[4].id = "CloseCalendar";

	//pones los titulos de los dias
		var lastRow = newTable.rows.length;
		var row = newTable.insertRow(-1);
		row.className = "CalendarDaysRow";
		
		for (var i=0; i < 7; i++)
		{
			var dayName = GetDayName (i);
			var cellLeft = row.insertCell(-1);
			var textNode = document.createTextNode(dayName.substr(0,3));
			cellLeft.appendChild(textNode);
		}	
	
	//rellenamos los primeros espacios blancos
		var lastRow = newTable.rows.length;
		var row = newTable.insertRow(-1);
		
		for (var i=0; i<dayOfWeek; i++)
		{
			var cellLeft = row.insertCell(-1);
			var textNode = document.createTextNode(" ");
			cellLeft.appendChild(textNode);
			cellLeft.className = "CalendarDateCell";

		}
		var cellLeftArray = new Array;
		var dayCount = 1;
		for (var i=dayOfWeek; i< 7; i++)
		{
			cellLeftArray[dayCount] = row.insertCell(-1);
			var textNode = document.createTextNode(dayCount);
			cellLeftArray[dayCount].appendChild(textNode);
			cellLeftArray[dayCount].className = "CalendarDateCell";

			dayCount++;

		}
		while (dayCount < daysInMonth+1)
		{
			var lastRow = newTable.rows.length;
			var row = newTable.insertRow(-1);
			row.className = "RowTitle";

			for (var i=0; i< 7; i++)
			{
				cellLeftArray[dayCount] = row.insertCell(-1);
				if (dayCount < daysInMonth+1)
				{
					var textNode = document.createTextNode(dayCount);
				}
				else
				{
					var textNode = document.createTextNode(" ");
				}
				cellLeftArray[dayCount].appendChild(textNode);
				cellLeftArray[dayCount].className = "CalendarDateCell";

				dayCount++;
	
			}
		}
		addEventesToCell (cellLeftArray, offSetCell);
}
function GetStartDate()
{
	
	month = todayMonth + monthOffset;
	year = todayYear;
	//dayOfWeek = now.getDay();
	
	var newDate = new Date();
	
	if ((month > 1)&&(month < 12))
	{
		newDate.setFullYear(year, month, 1);
	}
	else if (month >= 12)
	{
		newDate.setFullYear(year+1, month - 12, 1);
	}
	else if (month < 1)
	{
		
	}

	day = newDate.getDate();
	month = newDate.getMonth();
	year = newDate.getFullYear();
	dayOfWeek = newDate.getDay();

	NameOfMonth = GetMonthName (month );
	daysInMonth = GetdaysInMonth(month + 1,year);
}
function addEventesToCell (cellLeftArray, offSetCell)
{
	for (var i = 1; i < cellLeftArray.length; i++ )
	{
		cellLeftArray[i].id = "DateCell_" + i;
		
		var elm = cellLeftArray[i];
		var evType = "mousedown";
		var fn = DayMouseDown;
		var useCapture = false;
		addEvent (elm, evType,fn,useCapture);

		var evType = "mouseover";
		var fn = DayMouseOver;
		addEvent (elm, evType,fn,useCapture);
		
		var evType = "mouseout";
		var fn = DayMouseOut;
		addEvent (elm, evType,fn,useCapture);
	}
	for (var i = 0; i<offSetCell.length; i++)
	{
		if (offSetCell[i] != null)
		{
			if (offSetCell[i].id != "CloseCalendar")
			{
				var elm = offSetCell[i];
				var evType = "mousedown";
				var fn = MouseDownOffset;
				var useCapture = false;
				addEvent (elm, evType,fn,useCapture);
			}
			else
			{
				var elm = offSetCell[i];
				var evType = "mousedown";
				var fn = removeElement;
				var useCapture = false;
				addEvent (elm, evType,fn,useCapture);
			}
		}
	}
}
function GetdaysInMonth(month,year) 
{
	var m = [31,28,31,30,31,30,31,31,30,31,30,31];
	if (month != 2) return m[month - 1];
	if (year%4 != 0) return m[1];
	if (year%100 == 0 && year%400 != 0) return m[1];
	return m[1] + 1;
} 
function GetMonthName (month)
{
	var d = new Date();
	var monthName = new Array(12);
	monthName[0]="January";
	monthName[1]="February";
	monthName[2]="March";
	monthName[3]="April";
	monthName[4]="May";
	monthName[5]="June";
	monthName[6]="July";
	monthName[7]="August";
	monthName[8]="September";
	monthName[9]="October";
	monthName[10]="November";
	monthName[11]="December";
	return (monthName[month]);
}
function GetDayName (dayIndex)
{
	var d=new Date();
	var weekday=new Array(7);
	weekday[0]="Sunday";
	weekday[1]="Monday";
	weekday[2]="Tuesday";
	weekday[3]="Wednesday";
	weekday[4]="Thursday";
	weekday[5]="Friday";
	weekday[6]="Saturday";
	return (weekday [dayIndex]);
}
function DayMouseDown (e)
{
	if (!e) var e = window.event;
	var targetCell = e.target;
	var DayNumber = (targetCell.id.replace("DateCell_", ""));
	PlaceDateValue (DayNumber);
	removeElement();

}
function DayMouseOver (e)
{
	if (!e) var e = window.event;
	var targetCell = e.target;
	targetCell.className = "CalendarDateCell_over";
}
function DayMouseOut (e)
{
	if (!e) var e = window.event;
	var targetCell = e.target;
	targetCell.className = "CalendarDateCell";
}
function MouseDownOffset(e)
{
	if (!e) var e = window.event;
	var targetCell = e.target;
	//alert (targetCell.id);
	if (targetCell.id == "plusMonth")
	{
		monthOffset ++;
	}
	else if (targetCell.id == "plusYear")
	{
		monthOffset = monthOffset + 12;
	}
	else if (targetCell.id == "minusMonth")
	{
		monthOffset--;
	}
	else if (targetCell.id == "minusYear")
	{
		monthOffset = monthOffset - 12;
	}
	
	

	
	//monthOffset ++;
	removeElement ();
	CreateDiv(e);
	
}

