var path = "/eng/";

//For Calendar
var today = new Date();
var todayDate = today.getDate();
var todayDay = today.getDay();
var todayMonth = today.getMonth();
var todayYear = today.getFullYear();

var usePullDown = false;
var useToday = false;


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 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;


function genPulldown()
{
	var monthSelect = d.getElementById('monthSelect');
	var yearSelect = d.getElementById('yearSelect');
	var pulldownBtn = d.getElementById('pulldownBtn');
	
	//Gen Month Pulldown
	for (var i=0; i<monthArray.length; i++)
	{
		monthSelect.options.add(new Option(monthArray[i], i));
	}
	monthSelect[todayMonth].selected = true; //Highlight Pulldown
	
	//Gen Year Pulldown
	for (var i=0; i<eventArray.length; i++)
	{
		var sameYear = true;
		var year = Number(eventArray[i].startDate[2]);
		for (var j=0; j<yearSelect.options.length; j++)
		{
			if (yearSelect.options[j].value == year)
			{
				sameYear = false;
				break;
			}
		}
		if (!sameYear)	continue;
		
		var option = new Option(year, year);
		if (year == todayYear)	option.selected = true; //Highlight Pulldown
		yearSelect.options.add(option);
	}
	
	monthSelect.onchange = function()
	{
		thisMonth = this.value;
	}
	
	yearSelect.onchange = function()
	{
		thisYear = this.value;
	}
	
	pulldownBtn.onclick = function()
	{
		//usePullDown = true;
		setCookie('monthVar', thisMonth);
		setCookie('yearVar', thisYear);
		genCalendar(new Date(thisYear, thisMonth, 1));
	}
}

function genCalendar(thisDate)
{
	if(getCookie('monthVar') != "" && getCookie('yearVar') != "")
	{
		if (!thisDate)	thisDate = today;
		var date = thisDate.getDate();
		var day = thisDate.getDay();
		var month = parseInt(getCookie('monthVar'));
		var year = parseInt(getCookie('yearVar'));
	}
	else{	
		if (!thisDate)	thisDate = today;
		var date = thisDate.getDate();
		var day = thisDate.getDay();
		var month = thisDate.getMonth();
		var year = thisDate.getFullYear();
	}
	
	var monthlyNews = d.getElementById('monthlyNews');
	var monthlyNewsCalendar = d.getElementById('monthlyNewsCalendar');
	
	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));
	
	monthlyNews.innerHTML = "";
	monthlyNewsCalendar.innerHTML = "";
	var eventDatestr = "";
	var eventNamestr = "";
	var eventBool = false;
	var eventDateArray = new Array();
	var calendarPageTitle = d.getElementById('calendarPageTitle');

	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 = '#FFF0B2';
		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);
				
				if((eventArray[j].startDate[1]-1) < 4 && (eventArray[j].startDate[2]) <2010)
				{
					calendarPageTitle.innerHTML = "<h1>Pre-Expo Activities</h1>";
				}else if((eventArray[j].startDate[1]-1) > 3 && (eventArray[j].startDate[2]) == 2010)
				{
					calendarPageTitle.innerHTML = "<h1>Expo Events</h1>";
				}
				
				
				//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);
						eventDate.className = 'date';
						
						if (startDate.getTime() != endDate.getTime())
						{
							/*eventDate.innerHTML = eventArray[j].startDate[0] + ' ' + monthArray[(eventArray[j].startDate[1]-1)] + ' ' + eventArray[j].startDate[2] + ' - ' + eventArray[j].endDate[0] + ' ' + monthArray[(eventArray[j].endDate[1]-1)] + ' ' + eventArray[j].endDate[2];*/
							if(monthArray[(eventArray[j].startDate[1]-1)] == monthArray[(eventArray[j].endDate[1]-1)])
							{
								eventDate.innerHTML = monthArray[(eventArray[j].endDate[1]-1)] + ' ' + eventArray[j].startDate[0] + '-' + eventArray[j].endDate[0];
							}else
							{
								eventDate.innerHTML = monthArray[(eventArray[j].startDate[1]-1)] + ' ' + eventArray[j].startDate[0] + '-' + monthArray[(eventArray[j].endDate[1]-1)] + ' ' +eventArray[j].endDate[0];
							}
						}
						else
						{
							eventDate.innerHTML = monthArray[(eventArray[j].startDate[1]-1)] + ' ' + eventArray[j].startDate[0] /*+ ' ' + eventArray[j].startDate[2]*/;
						}
							
						if (eventArray[j].specialDate)	eventDate.innerHTML = eventArray[j].specialDate;
						
						
						var eventName = eventRow.insertCell(-1);
						eventName.className = 'item';
						
						if (eventArray[j].link == '')
						{
							eventName.innerHTML = eventArray[j].name;
						}
						else
						{
							eventName.innerHTML = '<a href="'+eventArray[j].link+'" target="'+eventArray[j].target+'">'+eventArray[j].name+'</a>';
						}
							
						if (!eventBool)	eventBool = true;
						eventRow.time = startDate.getTime();
						eventRow.eventName = eventArray[j].name;
						eventDateArray.push({time:startDate.getTime(), name:eventArray[j].name});
					}
					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;
						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())
					{
						cell.className = 'event'; //change event
					}
				}
				
				//Highlight Events
				if(eventArray[j].name !="")
					//if(eventArray[j].link == "")
						//str= '<a href="#" target="'+eventArray[j].target+'">'+num+'</a>';
					//else
						//str = '<a href="'+eventArray[j].link+'" target="'+eventArray[j].target+'">'+num+'</a>';
						str = '<a href="#' + eventRow.id + '">'+num+'</a>';
				//break;
			}
			
			pos.innerHTML = str;
			
			//Highlight Today
			if (date == num && month == todayMonth && year == todayYear)
			{
				//cell.className += ' todayDate';
				var todayDiv = createDiv('', 'todayDate');
				pos.appendChild(todayDiv);
			}
			
			cell.appendChild(pos);
			cell.id = 'date_' + num;
			
			num ++;
		}
		else
		{
			cell.innerHTML = "&nbsp;";
		}

	}
	if(!eventBool){
			var eventRow = eventList.insertRow(-1);
			var eventDate = eventRow.insertCell(-1);
			var eventName = eventRow.insertCell(-1);
			eventDate.innerHTML = "&nbsp;";
			eventName.innerHTML = eventNamestr;
	}
	
	for(var i=0; i<monthNewsArray.length; i++)
	{
		//if (!((monthArray[i].month-1) == month && monthArray[i].year == year))	continue;	
		if(monthNewsArray[i].month-1 == month && monthNewsArray[i].year == year){
			monthlyNews.innerHTML = monthNewsArray[i].content;
			break;
		}
	}	
	
	for(var i=0; i<monthNewsCalArray.length; i++)
	{
		//if (!((monthArray[i].month-1) == month && monthArray[i].year == year))	continue;	
		if(monthNewsCalArray[i].month-1 == month && monthNewsCalArray[i].year == year){
			var src = monthNewsCalArray[i].content;
			src += "<div style=\"padding:7px 0px 0px 0; line-height:15px; margin-top:7px;\"><a href=\"publication/eventCalender.pdf\" target=\"_blank\"><img src=\"../images/home/pdf_download_icon_event.jpg\" /></a><br/><a href=\"publication/Expo Bro_Eng_TC.pdf\" target=\"_blank\"><img src=\"../images/home/pdf_download_icon_culture.jpg\"  style=\"margin-top:5px;\"/></a><br/><a href=\"publication/Monthly_Pamphlet_Oct_E.pdf\" target=\"_blank\"><img src=\"../images/home/pdf_download_icon_highlight.jpg\"  style=\"margin-top:5px;\"/></a></div>";
			monthlyNewsCalendar.innerHTML = src;
			break;
		}
	}	
//alert(startDay + "  :  " + endDay + "  :  " + totalCell);
	
	//table.style.visibility = "visible";
}

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((path + 'images/calander_arrow_l.gif'), 'Previous Month', '', '', 'javascript:changeMonth(-1);');
	
	var monthDiv = createDiv('month');
	//var holderDiv = createDiv('', 'monthDiv');
	//var img = createImg((path + 'images/calendar/' + monthArray[month].toLowerCase() + '.gif'), monthArray[month].toUpperCase());
	//holderDiv.appendChild(img);
	var ydiv = createDiv('', 'date', monthArray[month].toUpperCase()+" "+year);
	//var mdiv = creatDiv('','',);
	//monthDiv.appendChild(holderDiv);
	//monthDiv.innerHTML += monthArray[month];
	monthDiv.appendChild(ydiv);
	
	
	var nextImg = createImg((path + 'images/calander_arrow_r.gif'), 'Next Month', '', '', 'javascript:changeMonth(1);');
	
	/*var todayDiv = createDiv('today');
	var img = createImg((path + 'images/today_icon.gif'), 'Today');
	todayDiv.appendChild(img);
	todayDiv.innerHTML += '&nbsp;Today';*/
	
	calandar.appendChild(prevImg);
	calandar.appendChild(monthDiv);
	calandar.appendChild(nextImg);
	//calandar.appendChild(todayDiv);
	
	thisMonth = month;
	thisYear = year;
}

function changeMonth(index)
{
	thisMonth += index;
	
	if (thisMonth > lastMonth)
	{
		thisMonth = 0;
		thisYear += 1;
	}
	else if (thisMonth < 0)
	{
		thisMonth = lastMonth;
		thisYear -= 1;
	}
	
	//Highlight Pulldown
	var monthSelect = d.getElementById('monthSelect');
	var yearSelect = d.getElementById('yearSelect');
	
	var yearLimit = true;
	for (var j=0; j<yearSelect.options.length; j++)
	{
		if (yearSelect.options[j].value == thisYear)
		{
			yearSelect[j].selected = true;
			yearLimit = false;
			break;
		}
	}
	
	if(yearLimit)
	{
		thisMonth = Number(monthSelect.value);
		thisYear = Number(yearSelect.value);
		return;
	}
	//alert(thisMonth + '  :  ' + thisYear);
	var calendarPageTitle = d.getElementById('calendarPageTitle');
	if(thisMonth < 4 && (thisYear) == 2010 || thisYear != 2010)
	{
		calendarPageTitle.innerHTML = "<h1>Pre-Expo Activities</h1>";
	}else if(thisMonth > 3 && thisYear == 2010)
	{
		calendarPageTitle.innerHTML = "<h1>Expo Events</h1>";
	}
	
	//alert("thisMonth: "+thisMonth+" thisYear: "+thisYear);
	setCookie('monthVar', thisMonth);
	setCookie('yearVar', thisYear);
	
	monthSelect[thisMonth].selected = true;
	
	genCalendar(new Date(thisYear, thisMonth, 1));
}

/*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()
	{
		setCookie('monthVar', todayMonth);
		setCookie('yearVar', todayYear);
		genCalendar(new Date(todayYear, todayMonth, 1));
	}	
}

function setCookie(c_name,value)
{
	/*var expiredays = 60*60*1000;
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+ expiredays;*/

	var exdate=new Date();
	exdate.setDate(exdate.getDate());
	document.cookie=c_name+ "=" +escape(value);
	/*((expiredays==null) ? "" : ";expires="+exdate.toGMTString());*/
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}
