﻿var path = "../";

//For Calendar
var today = new Date();
var todayDate = today.getDate();
var todayDay = today.getDay();
var todayMonth = today.getMonth();
var todayYear = today.getFullYear();
var scrollContainer;
var scrollbar;
var scrollAL;
var scrollbarAL;

function createImg(src, alt, w, h, link, t, className)
{
	var img = d.createElement('img');
	if (src)	img.setAttribute('src', src);
	if (alt)	img.setAttribute('alt', alt);
	if (w)	img.setAttribute('width', w);
	if (h)	img.setAttribute('height', h);
	if (className)	img.className = className;
	
	if (link)
	{ 
		img.setAttribute('border', 0);
		
		var a = d.createElement('a');
		a.setAttribute('href', link);
		if (t && typeof(t) != 'undefined')	a.setAttribute('target', t);
		a.appendChild(img);
		return a;
	}
	else
	{	
		return img;
	}
}

function createA(link, t, txt, id, className)
{		
	var a = d.createElement('a');
	if (link)	a.setAttribute('href', link);
	if (t && typeof(t) != 'undefined')	a.setAttribute('target', t);
	
	//if (txt)	a.appendChild(d.createTextNode(txt));
	if (txt)	a.innerHTML = txt;
	if (id)	a.setAttribute('id', id);
	if (className)	a.className = className;
	
	return a;
}

function createDiv(id, className, txt)
{		
	var div = d.createElement('div');
	if (id)	div.setAttribute('id', id);
	if (className)	div.className = className;
	//if (txt)	div.appendChild(d.createTextNode(txt));
	if (txt)	div.innerHTML = txt;
	return div;
}

function createTag(tag, id, className)
{		
	var div = d.createElement(tag);
	if (id)	div.setAttribute('id', id);
	if (className)	div.className = className;
	return div;
}

function createInput(name, type, value, className)
{		
	var input = d.createElement('input');
	if (name)	input.setAttribute('name', name);
	if (type)	input.setAttribute('type', type);
	if (value)	input.setAttribute('value', value);
	if (className)	input.className = className;
	return input;
}

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 monthArray2 = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
var lastMonth = 11;
if (!today)
{
	var today = new Date();
	var todayDate = today.getDate();
	var todayDay = today.getDay();
	var todayMonth = today.getMonth();
	var todayYear = today.getFullYear();
}
var thisMonth;
var thisYear;


var isToday = false;
var tempDate = 0;
var firstGen = true;
function genCalendar(thisDate)
{
	if (!thisDate)
	{
		thisDate = today;
		isToday = true;
	}
	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;
	}
	
	genDateDetails(date, day, month, year);
	
	// 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));
	
	
	var col = 7;
	var totalCell = 6*col;
	var num = 1;
	var table = d.getElementById('calandar').getElementsByTagName('table')[0];
	var eventList = d.getElementById('eventList').getElementsByTagName('table')[0];
	var eventID = 1;
	
	//Remove Rows
	while (table.rows.length > 1)	table.deleteRow((table.rows.length-1));
	while (eventList.rows.length > 0)	eventList.deleteRow((eventList.rows.length-1));
	

	var eventDatestr = "";
	var eventNamestr = "";
	var eventBool = false;
	var eventDateArray = new Array();
	
	var currentTime = new Date(thisDate.getFullYear(), thisDate.getMonth(), thisDate.getDate());
	var todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate())
	var eventCounter = 0;
	var nextDayActive = false;
	var nextDay = 0;
	var latestDate = 0;
	
	if(firstGen)
	{
		tempDate = 0;
	}
	
	for (var i=0; i<totalCell; i++)
	{
		if (i%col == 0)	var row = table.insertRow(-1);
		var cell = row.insertCell(-1);
		var pos = createDiv('', 'pos');
		
		if (i%(col) == 0)	row.style.backgroundColor = '#fff';
		if (i%(col*2) == 0)	row.style.backgroundColor = '#FFF';
		if (i%col == 0)	cell.className = 'sunday';
		
		if (i >= startDay && i < (endDay + startDay))
		{
			var str = num;
			var highLightRow = new Array();
			
			//Check Events Date
			for (var j=0; j<eventArray.length; j++)
			{
				//if (!eventArray[j].year == year)	continue;
				//if (!((eventArray[j].startMonth-1) >= month && (eventArray[j].endMonth-1) <= month))	continue;
				//if (!(num >= eventArray[j].startDate && num <= eventArray[j].endDate))	continue;
				
				var thisDate	= new Date(year, month, num);
				var startDate	= new Date(eventArray[j].startDate[2], (eventArray[j].startDate[1]-1), eventArray[j].startDate[0]);
				var endDate		= new Date(eventArray[j].endDate[2], (eventArray[j].endDate[1]-1), eventArray[j].endDate[0]);
				var isSame = false;
				
				if (!(thisDate.getTime() >= startDate.getTime() && thisDate.getTime() <= endDate.getTime()))	continue;
				//alert(thisDate + '\r' + startDate  + '\r' + endDate);
				
				//Events List
				if (eventArray[j].name != '')
				{
					for (var k=0; k<eventDateArray.length; k++)
					{
						if (eventDateArray[k].time == startDate.getTime() && eventDateArray[k].name == eventArray[j].name)
						{
							isSame = true;
							break;
						}
					}
					
					if (!isSame)
					{
						var eventRow = eventList.insertRow(-1);
						var eventDate = eventRow.insertCell(-1);
						
						//today
						if(startDate.getTime() == currentTime.getTime() && endDate.getTime() >= currentTime.getTime())
						{
							eventDate.className = 'date';
							if (startDate.getTime() != endDate.getTime())
							{
								var stringStartDate = "";
								
								if(eventArray[j].startDate[0] < 10)
								{
									stringStartDate = "0"+eventArray[j].startDate[0].toString();
								}else
									stringStartDate = eventArray[j].startDate[0].toString();
								
								var stringEndDate = "";
								if(eventArray[j].endDate[0] < 10)
								{
									stringEndDate = "0"+eventArray[j].endDate[0].toString();
								}else
									stringEndDate = eventArray[j].endDate[0].toString();
								
								if(eventArray[j].link == '')
								{
									eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringStartDate + ' - ' + eventArray[j].endDate[2] + '/' + monthArray2[(eventArray[j].endDate[1]-1)] + '/' + stringEndDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><span style="color:#000;">'+ eventArray[j].name + '</span></div>';
								}else{
									eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringStartDate + ' - ' + eventArray[j].endDate[2] + '/' + monthArray2[(eventArray[j].endDate[1]-1)] + '/' + stringEndDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><a href=\"'+ eventArray[j].link + '\" target='+ eventArray[j].target +' style="color:#000;">'+ eventArray[j].name + '</a></div>';	
								}
									
							}
							else
							{
								var stringDate = "";
								latestDate = eventArray[j].startDate[0];
									if(eventArray[j].startDate[0] < 10)
									{
										stringDate = "0"+eventArray[j].startDate[0].toString();
									}else
										stringDate = eventArray[j].startDate[0].toString();
								
								if(eventArray[j].link == '')
								{
									eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><span style="color:#000;">'+ eventArray[j].name + '</span></div>';
								}else{
									eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><a href=\"'+ eventArray[j].link + '\" target='+ eventArray[j].target +' style="color:#000;">'+ eventArray[j].name + '</a></div>';
								}
							}
								
							if (eventArray[j].specialDate)	eventDate.innerHTML = eventArray[j].specialDate;
							
							if (!eventBool)	eventBool = true;
							eventRow.time = startDate.getTime();
							eventRow.eventName = eventArray[j].name;
							eventDateArray.push({time:startDate.getTime(), name:eventArray[j].name});
							firstGen=false;
						}
						
						if(startDate.getMonth() == today.getMonth() && endDate.getMonth() >= today.getMonth() && startDate.getTime()>today.getTime())
						{
							if(tempDate == 0 && firstGen)
							{
								tempDate = startDate.getTime();
								firstGen = false;
							}
							
							if(tempDate == startDate.getTime())
							{
								eventDate.className = 'date';
								if (startDate.getTime() != endDate.getTime())
								{
									var stringStartDate = "";
									if(eventArray[j].startDate[0] < 10)
									{
										stringStartDate = "0"+eventArray[j].startDate[0].toString();
									}else
										stringStartDate = eventArray[j].startDate[0].toString();
									
									var stringEndDate = "";
									if(eventArray[j].endDate[0] < 10)
									{
										stringEndDate = "0"+eventArray[j].endDate[0].toString();
									}else
										stringEndDate = eventArray[j].endDate[0].toString();
									
									if(eventArray[j].link == '')
									{
										eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringStartDate + ' - ' + eventArray[j].endDate[2] + '/' + monthArray2[(eventArray[j].endDate[1]-1)] + '/' + stringEndDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><span style="color:#000;">'+ eventArray[j].name + '</span>123</div>';
									}else{
										eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringStartDate + ' - ' + eventArray[j].endDate[2] + '/' + monthArray2[(eventArray[j].endDate[1]-1)] + '/' + stringEndDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><a href=\"'+ eventArray[j].link + '\" target="_blank" style="color:#000;">'+ eventArray[j].name + '</a>123</div>';
									}
								}
								else
								{
									var stringDate = "";
									latestDate = eventArray[j].startDate[0];
									if(eventArray[j].startDate[0] < 10)
									{
										stringDate = "0"+eventArray[j].startDate[0].toString();
									}else
										stringDate = eventArray[j].startDate[0].toString();
									if(eventArray[j].link == '')
									{	
										eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><span style="color:#000;">'+ eventArray[j].name + '</span></div>';
									}else{
										eventDate.innerHTML = eventArray[j].startDate[2] + '/' +  monthArray2[(eventArray[j].startDate[1]-1)] + '/' + stringDate + '<br><div style=\"color:#000; width:180px; font-weight:normal; line-height:15px;\"><a href=\"'+ eventArray[j].link + '\" target='+ eventArray[j].target +' style="color:#000;">'+ eventArray[j].name + '</a></div>';
									}
								}
									
								if (eventArray[j].specialDate)	eventDate.innerHTML = eventArray[j].specialDate;
								
								if (!eventBool)	eventBool = true;
								eventRow.time = startDate.getTime();
								eventRow.eventName = eventArray[j].name;
								eventDateArray.push({time:startDate.getTime(), name:eventArray[j].name});
								nextDayActive = true;
								nextDay = startDate.getDate();
							}
						}
					}
					else
					{
						for (var k=0; k<eventList.rows.length; k++)
						{
							if (eventList.rows[k].time == startDate.getTime() && eventList.rows[k].eventName == eventArray[j].name)
							{
								eventRow = eventList.rows[k];
								break;
							}
						}
					}
				}
				
				//Calendar
				if (eventArray[j].name == '')
				{
					cell.className = 'sunday';
				}
				else
				{
					highLightRow.push(eventRow);
					if (!eventRow.id)
					{
						eventRow.id = 'row_' + eventID;
						if(eventRow.getElementsByTagName('td')[0].innerHTML == "" || eventRow.getElementsByTagName('td')[0].innerHTML == null)
						{
							eventRow.style.display = "none";
						}
						eventID ++;
					}
					
					cell.highLightRow = highLightRow;
					cell.num = num;
					cell.startDate = eventArray[j].startDate;
					cell.endDate = eventArray[j].endDate;
					//cell.onmouseover = function()	{showEventDetail(this);};
					//cell.onmouseout = function()	{hideEventDetail(this);};
					
					if (thisDate.getTime() == startDate.getTime() /*|| thisDate.getTime() == endDate.getTime()*/)
					{
						if(startDate.getTime() >= todayDate.getTime())
						{
							cell.className = 'event'; //change event
							
						}else if(startDate.getTime() < todayDate.getTime())
						{
							cell.className = 'passEvent';
						}
					}
				}
				
				//Highlight Events
				if(eventArray[j].name !="" && startDate.getDate() == num && startDate.getMonth() == month)
				{
					str = '<a href="javascript:genCalendar(new Date(thisYear, thisMonth,'+ num + ')); setActive('+ num + ');">'+num+'</a>';
					notToday = true;
				}
			}
			
			pos.innerHTML = str;
			
			//Highlight Today
			if (today.getDate() == num && month == todayMonth && year == todayYear)
			{
				
				cell.className += ' todayDate';
				var todayDiv = createDiv('', 'todayDate');
				pos.appendChild(todayDiv);
				var eventRow = eventList.insertRow(-1);
				var eventDate = eventRow.insertCell(-1);
			}
			
			cell.appendChild(pos);
			cell.id = 'date_' + num;
			
			num ++;
		}
		else
		{
			cell.innerHTML = "&nbsp;";
		}

	}
	isToday = false;
	if(!eventBool){
			var eventRow = eventList.insertRow(-1);
			var eventDate = eventRow.insertCell(-1);
			var eventName = eventRow.insertCell(-1);
			eventDate.innerHTML = "&nbsp;";
			eventName.innerHTML = eventNamestr;
	}
	tempDate = 0;
	
	if (scrollAL && scrollbarAL)
	{
		scrollAL.swapContent(scrollContainer, scrollContainer.offsetWidth, scrollbar.offsetHeight);
		scrollbarAL.swapContent(scrollContainer, scrollContainer.offsetWidth, scrollbar.offsetHeight);
	}
	if(latestDate !=0)
	{	
		setActive(latestDate);
	}
}

function setActive(num)
{
	var tdNum = d.getElementById('date_'+num);
	var tdNumLink = tdNum.getElementsByTagName('A')[0];
	tdNumLink.style.fontWeight = 'bold';
	tdNumLink.style.color = '#920101';
}

function scroller(el, duration) {
	if(typeof el != 'object') { el = document.getElementById(el); }
	if(!el) return;      
	var z = this;     
	z.el = el;     
	z.p = getPos(el);     
	z.s = getScroll();     
	z.clear = function(){window.clearInterval(z.timer);z.timer=null};     
	z.t=(new Date).getTime();      
	z.step = function(){         
		var t = (new Date).getTime();         
		var p = (t - z.t) / duration;         
		if (t >= duration + z.t) {             
			z.clear();             
			window.setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);         
		} else {             
			st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;             
			sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;             
			z.scroll(st, sl);         
			}     
		};     
		
		z.scroll = function (t, l){window.scrollTo(l, t)};     
		z.timer = window.setInterval(function(){z.step();},13); 
} 


function genDateDetails(date, day, month, year)
{
	var calandar = d.getElementById('calandarDay');
	
	calandar.innerHTML = "";
	
	var prevImg = createImg(('/en/images/calander_arrow_l.gif'), 'Previous Month', '', '', 'javascript:changeMonth(-1);' );
	
	var monthDiv = createDiv('month');
	var ydiv = createDiv('', 'date', monthArray[month].toUpperCase()+" "+year);
	monthDiv.appendChild(ydiv);
	
	
	var nextImg = createImg(('/en/images/calander_arrow_r.gif'), 'Next Month', '', '', 'javascript:changeMonth(1);');
	
	calandar.appendChild(prevImg);
	calandar.appendChild(monthDiv);
	calandar.appendChild(nextImg);
	
	thisMonth = month;
	thisYear = year;
}

function genMonthArray(thisYear, thisMonth, singleMonthArray)
{
	for(var j=0; j<eventArray.length; j++)
	{
		var startDate	= new Date(eventArray[j].startDate[2], (eventArray[j].startDate[1]-1), eventArray[j].startDate[0]);

		if((eventArray[j].startDate[1]-1) == thisMonth && eventArray[j].startDate[2] == thisYear)
		{
			if (eventArray[j].name != '')
			{
				eventArray[j].startDateValue = startDate.getTime();
				singleMonthArray.push(eventArray[j]);
			}
		}
	}
	
	singleMonthArray.sort(
		function(a, b)
		{
			return (a.startDateValue - b.startDateValue);
		}
	);
}

function changeMonth(index)
{
	var firstDate = "";
	var singleMonthArray = new Array();
	thisMonth += index;
	
	if (thisMonth > lastMonth)
	{
		thisMonth = 0;
		thisYear += 1;
	}
	else if (thisMonth < 0)
	{
		thisMonth = lastMonth;
		thisYear -= 1;
	}
	
	genMonthArray(thisYear, thisMonth, singleMonthArray);
	
	if(singleMonthArray.length == 0)
	{
		firstDate = 1;	
	}else{
		firstDate = singleMonthArray[0].startDate[0];
		//alert(singleMonthArray[0].startDate[2]+","+singleMonthArray[0].startDate[1]+","+ singleMonthArray[0].startDate[0])
	}
	firstGen = true;
	if(thisYear == todayYear && thisMonth == todayMonth)
	{
		genCalendar(new Date(todayYear, todayMonth, todayDate));
	}else{
		genCalendar(new Date(thisYear, thisMonth, firstDate));
	}
}

/*display tip box*/
function showEventDetail(eventItem)
{
	for (var i=0; i<eventItem.highLightRow.length; i++)
	{
		eventItem.highLightRow[i].className = 'active';
	}
}

function hideEventDetail(eventItem)
{
	for (var i=0; i<eventItem.highLightRow.length; i++)
	{
		eventItem.highLightRow[i].className = '';
	}
}
/*end of display tip box*/

function backToday()
{
	var todayBtn = d.getElementById('todayBtn');
	todayBtn.onclick = function()
	{
		genCalendar(new Date(todayYear, todayMonth, 1));
	}	
}

	var calandarShow = false;
	function showHideCalendar()
	{
		if(!d.getElementById('showCalendar')) return;
		var div = d.getElementById('showCalendar');
		
		if(!d.getElementById('calandarContainer')) return;
		var calandarDiv = d.getElementById('calandarContainer');

		calandarDiv.style.display = 'none';
		
		div.onclick = function()
		{
			if(!calandarShow)
			{
				calandarShow = true;
				calandarDiv.style.display = 'block';
				setTimeout(function()
				{
					//scrollAL = new listScroll.init('evenItemList', 'Scrollbar-Container');
					scrollContainer = d.getElementById('evenItemList');
					scrollbar = d.getElementById('Scrollbar-Container');
					scrollAL  = new Scrolling.Scroller(scrollContainer, scrollContainer.offsetWidth, scrollContainer.offsetHeight);
					scrollbarAL = new Scrolling.Scrollbar(scrollbar, scrollAL, new Scrolling.ScrollTween());
				}, 1);
				div.style.backgroundImage = "url(/" + lang + "/images/banner_calendar_minus.jpg)";
} else {
    calandarShow = false;
    calandarDiv.style.display = 'none';
    div.style.backgroundImage = "url(/" + lang + "/images/banner_calendar.jpg)";
			}
		}		
	}
