var adFx = [];

function pagePrepare() {
	if ($('calendar'))
		buildCalendar({ year : new Date().getFullYear(), month: new Date().getMonth() }, new Date());
	if ($('weather'))
		buildWeather();
	if ($('side') && $('execute_time_value')) {
		$('side').innerHTML += '<div class="side-box">' + $('execute_time_value').value + '</div>';
	}
	if ($('ads'))
		bindAdEvent($('ads'));
	$$('a.open-new-window').setProperty('target', '_blank');
}


function bindAdEvent(target) {
	var Links = target.getElements('a');
	Links.addEvents({
		'mouseenter' : function() {
			var i = Links.indexOf(this), img = this.getElement('img.ad-img'), info = this.getElement('span.ad-info');
			if (!adFx[i]) adFx[i] = new Fx.Morph(img,  { fps: 1000, duration: 500, delay: false, transition: Fx.Transitions.Circ.easeOut });
			adFx[i].pause();
			adFx[i].start({ opacity: 0.1 });
			info.setStyle('display', '');
		},
		'mouseleave' : function() {
			var i = Links.indexOf(this), info = this.getElement('span.ad-info');
			if (!adFx[i]) return;
			adFx[i].pause();
			adFx[i].start({ opacity: 1 });
			info.setStyle('display', 'none');
		}
	});
}

function buildWeather() {
	new Swiff('/images/CYYZ.swf', {
		width: 176,
		height: 110,
		params: {
			quality: 'high'
		},
		container: $('weather')
	});
}

function buildCalendar(objDate, todayDate) {
	var monthsName = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	var objDate1 = { year : parseInt(objDate['year']), month : parseInt(objDate['month']) - 1 },
		objDate2 = { year : parseInt(objDate['year']), month : parseInt(objDate['month']) + 1 };
	if (objDate1['month'] < 0) objDate1 = { year : objDate['year'] - 1, month : 11 };
	if (objDate2['month'] > 11) objDate2 = { year : objDate['year'] + 1, month : 0 };

	function getMonthDays(y, m) {
		var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
		if(m==1) return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
		else return(monthDays[m]);
	}

	var mDays = getMonthDays(objDate['year'], objDate['month']), mDays1 = getMonthDays(objDate1['year'], objDate1['month']);
	
	var mFirstLoc = new Date(objDate['year'], objDate['month'], 1).getDay() - 1;
	var mNextLoc = new Date(objDate2['year'], objDate2['month'], 1).getDay();
	
	if (mFirstLoc == -1) mFirstLoc = 6;
	var list = [], flag = 0, dTemp = mDays1 - mFirstLoc, mClass = '',
		doc = [
			'<div class="calendar-tt"><a href="javascript:void(0);" title="go previous month" onclick="buildCalendar({ year: '+objDate1['year']+', month: '+(objDate1['month'])+' });">&lt;</a><a href="javascript:void(0);" title="return today" onclick="buildCalendar({ year : new Date().getFullYear(), month: new Date().getMonth() }, new Date());" class="calendar-cr">'+objDate['year']+' '+monthsName[objDate['month']]+'</a><a href="javascript:void(0);" title="go next month" onclick="buildCalendar({ year: '+objDate2['year']+', month: '+(objDate2['month'])+' });">&gt;</a></div>',
			'<div class="calendar-hd"><span class="holiday-day">Su</span><span>Mo</span><span>Tu</span><span>We</span><span>Th</span><span>Fr</span><span class="holiday-day">Sa</span></div>',
			'<div class="calendar-bd wrapfix">'
		]
	while (list.length < 42) {
		var tIdx = list.length;
		list.push(dTemp);
		doc.push('<span class="month-loc' + (flag+1) + (tIdx % 7 == 0 || tIdx % 7 == 6 ? (flag == 1 ? ' holiday-day' : ' holiday-day-out') : '') + ((todayDate && flag == 1 && todayDate.getFullYear() == objDate['year'] && todayDate.getMonth() == objDate['month'] && todayDate.getDate() == dTemp) ? ' calendar-today' : '') + '">' + dTemp + '</span>');
		dTemp++;
		if (dTemp > mDays1 && flag == 0) {
			flag++;
			dTemp = dTemp - mDays1;
		}
		if (dTemp > mDays && flag == 1) {
			flag++;
			dTemp = dTemp - mDays;
		}
	}
	doc.push('</div>');
	$('calendar').set('html', doc.join(''));
}

window.addEvent('domready', function() {
    pagePrepare();
});