var req;
var calendar_hide_popup = true;
var events_cache = {};

function navigate(month, year, evt) {
	setFade(0);
	var url = "/vendors/calendar/super_calendar.php?month=" + month + "&year="
			+ year + "&event=" + evt;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.open("GET", url, true);
	req.onreadystatechange = callback;
	req.send(null);
}

function callback() {
	if (req.readyState == 4) {
		var response = req.responseXML;
		var resp = response.getElementsByTagName("response");
		getObject("calendar").innerHTML = resp[0].getElementsByTagName("content")[0].childNodes[0].nodeValue;
		
		getObject("next_events").innerHTML = resp[0].getElementsByTagName("content")[1].childNodes[0].nodeValue;
		fade(50);
	}
}

function getObject(obj) {
	var o;
	if (document.getElementById)
		o = document.getElementById(obj);
	else if (document.all)
		o = document.all.obj;
	return o;
}

function fade(amt, obj) {
	if (amt <= 100) {
		setFade(amt, obj);
		amt += 5;
		setTimeout("fade(" + amt + (obj ? ",'" + obj + "'" : "") + ")", 5);
	}
}

function fadeOut(amt, obj) {
	if (amt >= 0) {
		setFade(amt, obj);
		amt -= 5;
		setTimeout("fadeOut(" + amt + (obj ? ",'" + obj + "'" : "") + ")", 5);
	}
}

function setFade(amt, obj) {
	var obj = obj ? $(obj) : getObject("calendar");
	amt = (amt == 100) ? 99.999 : amt;
	obj.style.filter = "alpha(opacity:" + amt + ")";
	obj.style.KHTMLOpacity = amt / 100;
	obj.style.MozOpacity = amt / 100;
	obj.style.opacity = amt / 100;
}

function calendarDateOver(cell) {
	calendar_hide_popup = false;
	updatePopup('<div class="event_waiting">Загрузка...</div>');
	loadDateEvents(cell.id.replace('d_',''));
	var p = $('calendar_popup');
	p.style.left = (getPosX(cell) - p.offsetParent.offsetLeft) + 'px';
	p.style.top = (getPosY(cell) + cell.clientHeight) + 'px';
	p.style.visibility = 'visible';
}

function calendarDateOut(cell) {
	calendar_hide_popup = true;
	var p = $('calendar_popup');
	setTimeout("calendarDateOutCallback()", 1000);
}

function calendarDateOutCallback() {
	if (calendar_hide_popup) {
		$('calendar_popup').style.visibility = 'hidden';
	}
}

function loadDateEvents(date) {
	if (events_cache[date]) {
		updatePopup(events_cache[date]);
	} else {
		new Ajax.Request('/vendors/calendar/super_calendar.php', {
			parameters : 'date=' + date,
			onSuccess : loadDateEventsCallback
		});
	}
}

function loadDateEventsCallback(transport, json) {
	if (json) {
		events_cache[json.date] = json.html;
		updatePopup(json.html);
	}
}

function updatePopup(html) {
	//alert(html);
	//$$('#calendar_popup div[class="popup_content"]')[0].update(html);
	//$$('#calendar_popup div[class="popup_content"]').each(function(i){i.update(html)});
	document.getElementById('calendar_popup_content').innerHTML=html;
}

function getPosX(o) {
	var x = 0;
	while (o && o.tagName != "BODY") {
		x += o.offsetLeft + (o.clientLeft || 0);
		o = o.offsetParent;
	}
	return x;
}

function getPosY(o) {
	var y = 0;
	while (o && o.tagName != "BODY") {
		y += o.offsetTop + (o.clientTop || 0);
		o = o.offsetParent;
	}
	return y;
}
