﻿var dayArray = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var monthArray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var lastMonth = 11;
var today = new Date();
var todayDate = today.getDate();
var todayDay = today.getDay();
var todayMonth = today.getMonth();
var todayYear = today.getFullYear();
var thisMonth;
var thisYear;


function genCalendar(thisDate)
{
	if (!thisDate)	thisDate = today;
	var date = thisDate.getDate();
	var day = thisDate.getDay();
	var month = thisDate.getMonth();
	var year = thisDate.getFullYear();
	
	if (month == todayMonth && year == todayYear)
	{
		date = todayDate;
		day = todayDay;
	}
	
	//Gen Right Calendar
	/*var table = d.createElement('table');
	var tr = d.createElement('tr');
	var th = d.createElement('th');
	th.innerHTML = "S";
	tr.appendChild(th);
	table.appendChild(tr);*/
	
	// Find out when this month starts and ends.
	var thisMonthDate = new Date(year, month, 1);
	var nextMonthDate = new Date((month == lastMonth)?(year+1):year, (month == lastMonth)?0:(month+1), 1);
	var startDay = thisMonthDate.getDay();
	var endDay = Math.round((nextMonthDate.getTime() - thisMonthDate.getTime()) / (1000*60*60*24));
	
	//Compare the select day & end day
	date = (todayDate > endDay)	?	endDay	:	todayDate;
	day = (new Date(year, month, date)).getDay();
	
	//Gen Left Details
	genDateDetails(date, day, month, year);
	
	var col = 7;
	var totalCell = 6*col;
	var num = 1;
	var table = d.getElementById("calandarTable").getElementsByTagName("table")[0];
	
	//Remove Rows
	while (table.rows.length > 1)
	{
		table.deleteRow((table.rows.length-1));
	}
	
	for (var i=0; i<totalCell; i++)
	{
		if (i%col == 0)	var row = table.insertRow(-1);
		var cell = row.insertCell(-1);
		
		if (i >= startDay && i < (endDay + startDay))
		{
			var isLunch = false;
			var str = num;
			
			//Check Events Date
			for (var j=0; j<eventArray.length; j++)
			{
				if (!(eventArray[j].month-1 == month && eventArray[j].year == year))	continue;
				
				if (num >= eventArray[j].startDate && num <= eventArray[j].endDate)
				{
					if (eventArray[j].name)
					{
						//Highlight Events
						//str = '<div class="holidayevent"><div id="day_'+num+'" class="holidaydetail">'+eventArray[j].name+'</div><a href="'+eventArray[j].link+'" target="'+eventArray[j].target+'">'+num+'</a></div>';
						
						if (!cell.holidayevent)
						{
							var holidayevent = createDiv('', 'holidayevent');
							var holidaydetail = createDiv('day_'+num, 'holidaydetail');
							var a = createA(eventArray[j].link, eventArray[j].target, num);
							holidayevent.appendChild(holidaydetail);
							holidayevent.appendChild(a);
							
							if (cell.lunchBorder)
							{
								cell.lunchBorder.innerHTML = '';
								cell.lunchBorder.appendChild(holidayevent);
							}
							else
							{
								cell.appendChild(holidayevent);
							}
							
							var ul = d.createElement('ul');
							holidaydetail.appendChild(ul);
							cell.holidayevent = holidayevent;
							cell.a = a;
						}
						
						if (ul.getElementsByTagName('li').length > 0)
						{
							var lis = ul.getElementsByTagName('li');
							var isSame = false;
							for (var k=0; k<lis.length; k++)
							{
								if (eventArray[j].name == lis[k].innerHTML)
								{
									isSame = true;
									break;
								}
							}
							if (!isSame)
							{
								var li = d.createElement('li');
								//li.innerHTML = eventArray[j].name;
								var a = createA(eventArray[j].link, eventArray[j].target, eventArray[j].name);
								li.appendChild(a);
								ul.appendChild(li);
								cell.a.href = 'javascript:;';
								cell.a.target = '_self';
							}
						}
						else
						{
							var li = d.createElement('li');
//							li.innerHTML = eventArray[j].name;
							var a = createA(eventArray[j].link, eventArray[j].target, eventArray[j].name);
							li.appendChild(a);
							ul.appendChild(li);
						}
						
						if (!eventArray[j].lunch)	cell.className = 'holiday';
						cell.num = num;
						cell.startDate = eventArray[j].startDate;
						cell.endDate = eventArray[j].endDate;
						cell.onmouseover = function()	{showEventDetail(this.num, this.startDate, this.endDate);};
						cell.onmouseout = function()	{hideEventDetail(this.num, this.startDate, this.endDate);};
						
						isLunch = true;
					}
					
					if (eventArray[j].lunch)
					{
						//Highlight Lunch
						var div = createDiv('', 'lunchBorder');
						if (cell.holidayevent)
						{
							div.appendChild(cell.holidayevent);
						}
						else
						{
							div.innerHTML = str;
						}
						if (cell.lunchBorder)
						{
							cell.lunchBorder.innerHTML = div.innerHTML;
						}
						else
						{
							cell.appendChild(div);
							cell.lunchBorder = div;
						}
						
						cell.style.padding = 0;
						//cell.style.width = "25px";
						//cell.style.lineHeight = "12px";
						isLunch = true;
					}
					//break;
				}
			}
			
			/*//Highlight Today
			if (date == num && month == todayMonth && year == todayYear)
			{
				var div = createDiv("", "todayBorder", str);
				cell.appendChild(div);
				cell.style.padding = 0;
				cell.style.lineHeight = "16px";
			}
			else
			{
				cell.innerHTML = str;
			}*/	
			
			if (!isLunch && cell.innerHTML == '')	cell.innerHTML = str;
			
			cell.id = "date_" + num;
			
			num ++;
		}
		else
		{
			cell.innerHTML = "&nbsp;";
		}
	}
	//alert(startDay + "  :  " + endDay + "  :  " + totalCell);
	
	//table.style.visibility = "visible";
}


function genDateDetails(date, day, month, year)
{
	d.getElementById("calandarDay").innerHTML = "";
	
	var weekDiv = createDiv("week", "", dayArray[day]);
	
	var dayDiv = createDiv("", "day");
	var img = createImg((path + "images/index/day_" + date + ".gif"), date);
	dayDiv.appendChild(img);
	
	var monthDiv = createDiv("monthbtn");
	
	var img = createImg((path + "images/index/btn_pre.gif"), "Previous Month", "", "", "javascript:changeMonth(-1);", "", "montharrow");
	var div = createDiv("", "floatleft");
	div.style.marginTop = "3px";
	div.appendChild(img);
	monthDiv.appendChild(div);
	
	var div = createDiv("month", "floatleft", monthArray[month].toUpperCase() + "<br />" + year);
	monthDiv.appendChild(div);
	
	var img = createImg((path + "images/index/btn_next.gif"), "Next Month", "", "", "javascript:changeMonth(1);", "", "montharrow");
	var div = createDiv("", "floatleft");
	div.style.marginTop = "3px";
	div.appendChild(img);
	monthDiv.appendChild(div);
	
	d.getElementById("calandarDay").appendChild(weekDiv);
	d.getElementById("calandarDay").appendChild(dayDiv);
	d.getElementById("calandarDay").appendChild(monthDiv);
	
	thisMonth = month;
	thisYear = year;
}

function changeMonth(index)
{
	thisMonth += index;
	
	if (thisMonth > lastMonth)
	{
		thisMonth = 0;
		thisYear += 1;
	}
	else if (thisMonth < 0)
	{
		thisMonth = lastMonth;
		thisYear -= 1;
	}
	
	genCalendar(new Date(thisYear, thisMonth, 1));
}

/*display tip box*/
function showEventDetail(id, startDate, endDate)
{
	var layer = d.getElementById('day_'+id);	
	var btn = d.getElementById('date_'+id);	
	var w = d.getElementById('calandarTable').getElementsByTagName('table')[0].offsetWidth;
	var padValue = w - btn.offsetLeft;
	var different = layer.offsetWidth - padValue + ((isIE)?5:3);
	
	layer.style.display = 'block';
	
	if (padValue < layer.offsetWidth)
	{
		var total = different + layer.offsetWidth;
		//layer.style.margin = '0px 0px 0px -'+total+'px';
		layer.style.left = -total + "px";
	}
	
	for (var i=startDate; i<=endDate; i++)
	{
		btn = d.getElementById('date_'+i);
		
		//btn.style.backgroundColor = "#5A4A25";
		btn.className += " active";
	}
}

function hideEventDetail(id, startDate, endDate)
{
	var layer = d.getElementById('day_'+id);
	var btn = d.getElementById('date_'+id);
	
	layer.style.display = 'none';
	
	for (var i=startDate; i<=endDate; i++)
	{
		btn = d.getElementById('date_'+i);
		
		//btn2.style.backgroundColor = "#9C7C3A";
		btn.className = btn.className.replace(/active/, '');
	}
}
/*end of display tip box*/
