if (document.getElementById && document.getElementsByTagName) {
if (window.addEventListener) window.addEventListener('load', init, false);
else if (window.attachEvent) window.attachEvent('onload', init);
}

var globalHandlers = {
	onCreate: function(){
		document.getElementById('calContainer').style.background="url(private/5-0.gif) no-repeat 5% 5%";
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			document.getElementById('calContainer').style.background="";
		}
	}
};
var blurred = 0;
Ajax.Responders.register(globalHandlers);

function init() {
		var eventElements = getElementsByAttribute("id","eventDiv",document.getElementById('calendar'))
		for(var i=0; i<eventElements.length; i++) {
			eventElements[i].eventNum = i;
			eventElements[i].eventID = "eventDetails_" + i;
			eventElements[i].onmouseover = showDetails;
			eventElements[i].onmouseout = hideDetails;
			var linkElements = eventElements[i].getElementsByTagName('a');
			for(var t=0; t<linkElements.length; t++) {
			//	hrefparts = linkElements[t].href.split('&');
			//	eventID = hrefparts[1].split('id=');
			//	linkElements[t].eventNum = eventID[1];
				linkElements[t].onclick = linkReroute;
			}
		}
		var adminElements = getElementsByAttribute("class","admin",document.getElementById('calendar'))
		for(var i=0; i<adminElements.length; i++) {
			adminElements[i].adminNum = i;
			adminElements[i].onclick = displayOnCal;
		}

		function showDetails() {
			if (!document.getElementById(this.eventID) && Ajax.activeRequestCount == 0 && blurred == 0){
				removeDetails();
				var detailHref = this.getElementsByTagName('a');
				var hrefParts = detailHref[0].href.split('?');
				var par = hrefParts[1]||'';
				var elm = eventElements[this.eventNum];
				var myAjax = new Ajax.Request(
					hrefParts[0], 
					{
						method: 'get', 
						parameters: par,
						onComplete: function(response) {
							new Insertion.Bottom(elm,
							"<div class=\"eventDetails\" id=" + elm.eventID + " style=\"position: absolute; display:none;\">" +
							"<div class=\"eventDetails_content\" id=\"eventDetails_content\">" +
							response.responseText + 
							"</div>");
							var adminDynElements = document.getElementById('eventDetails_content').getElementsByTagName('a');
							for(var i=0; i<adminDynElements.length; i++) {
								adminDynElements[i].onclick = displayOnCal;
							}
							new Effect.Appear(elm.eventID, {duration:.5});
						}
					});			
			}
		}

		function hideDetails(e) {
			var e = e||window.event;
			var tg = (window.event) ? e.srcElement : e.target;
			if (tg.nodeName != 'DIV') return;
			var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
			while (reltg != tg && reltg.nodeName != 'BODY')
				reltg= reltg.parentNode
			if (reltg== tg) return;
			removeDetails();
		}
	}

function removeDetails(){
	var detailElements = getElementsByAttribute("class","eventDetails",document.getElementById('calendar'));
	for(var i=0; i<detailElements.length; i++) {
		elmId = detailElements[i].id;
		if (detailElements[i].style.display == "none")
			Element.remove(elmId)
		else
			new Effect.Fade(detailElements[i].id, {duration:.5,afterFinish:function(){try{Element.remove(elmId);}catch(err){}}});
	}
}

function displayOnCal(mousevent, rdcURL){
	//toggleCal(1);
	var container = 'adminContent';
	if (!rdcURL)
		var hrefParts = this.href.split('?');
	else
		var hrefParts = rdcURL.split('?');
	var par = hrefParts[1]||'';
	if (navigator.appName.toUpperCase().match(/MICROSOFT INTERNET EXPLORER/) != null)
		Element.update(container, '<div width="100%"><br><center>PLEASE WAIT...<br><br><img src="private/progress.gif" /></center></div>');
	var myAjax = new Ajax.Updater(
		container,
		hrefParts[0], 
		{
			method: 'get', 
			parameters: par,
			evalScripts: true,
			onComplete: registerRedirection
		});
	return false;		
}

function formRedirect(){
	//toggleCal(1);
	var container = 'adminContent';
	var hrefParts = this.action.split('?');
	var par = hrefParts[1] + '&' + Form.serialize(this)||Form.serialize(this);
	if (navigator.appName.toUpperCase().match(/MICROSOFT INTERNET EXPLORER/) != null)
		Element.update(container, '<br><center>PLEASE WAIT...<br><br><img src="private/progress.gif" /></center>&nbsp;');
	var myAjax = new Ajax.Updater(
		container,
		hrefParts[0], 
		{
			method: 'post', 
			parameters: par,
			evalScripts: true,
			onComplete: registerRedirection
		});
	return false;	
}

function linkReroute(){
	removeDetails();
	displayOnCal(null, this.href);
	return false;
}

function registerRedirection(response){	
	if (response.responseText.indexOf("refresh") == -1){
		document.getElementById('adminContent').style.height = (response.responseText.length < 2100) ? '' : '300px';
		if (navigator.appName.toUpperCase().match(/MICROSOFT INTERNET EXPLORER/) == null)
			document.getElementById('formContainer').style.width = '';
		//alert(document.getElementById('formContainer').style.width);
		var formElements = document.getElementById('formContainer').getElementsByTagName('form');
		for(var i=0; i<formElements.length; i++) {
			formElements[i].onsubmit = formRedirect;
			//formElements[i].id = 'form_' + i;
		}
		var tableElements = document.getElementById('formContainer').getElementsByTagName('table');
		for(var i=0; i<tableElements.length; i++) {
			tableElements[i].border = '0';
		}
		var linkElements = document.getElementById('adminContent').getElementsByTagName('a');
		for(var t=0; t<linkElements.length; t++) {
			linkElements[t].onclick = linkReroute;
		}
		Element.show('formContainer');
		var theHandle = document.getElementById("admin_handle");
		var theRoot = document.getElementById("formContainer");
		new Drag.init(theHandle, theRoot);
	}else{
		Element.hide('formContainer');
		//toggleCal(0);					
		window.location.reload(true);
	}
}

function toggleCal(blur){
	if (!blur){
		blurred = 0;
		document.getElementById('calContainer').style.background="";
		document.getElementById('calContainer').style.filter="";
		document.getElementById('calContainer').style.mozopacity="";
		document.getElementById('calContainer').style.opacity="";
	} else {
		var detailElements = getElementsByAttribute("class","eventDetails",document.getElementById('calendar'))
		for(var i=0; i<detailElements.length; i++) {
			elmId = detailElements[i].id;
			if (detailElements[i].style.display == "none")
				Element.remove(elmId)
			else
				new Effect.Fade(detailElements[i].id, {duration:.5,afterFinish:function(){try{Element.remove(elmId);}catch(err){}}});
		}
		blurred = 1;
		document.getElementById('calContainer').style.background="#FFFFFF";
		document.getElementById('calContainer').style.filter="alpha(opacity=40)";
		document.getElementById('calContainer').style.mozopacity=".40";
		document.getElementById('calContainer').style.opacity=".40";
	}
}

function toggleRegistrationDetails(id){
	if (document.getElementById('details_' + id).style.display == 'none'){
		document.getElementById('pic' + id).src = 'private/colapse.gif';
		new Effect.BlindDown('details_' + id, {duration:.5});
	}else{
		document.getElementById('pic' + id).src = 'private/expand.gif';
		new Effect.BlindUp('details_' + id, {duration:.5});
	}
	return false;
}

function closeAdmin(){
	Element.hide('formContainer');
	//toggleCal(0);
}

function getElementsByAttribute(attr,val,container)
{
	container = container||document;
	var all = container.all||container.getElementsByTagName('*');
	var arr = [];
	for(var k=0;k<all.length;k++){
		try{
			attrValue = all[k].getAttributeNode(attr).value;
		} catch(err) {
			attrValue = all[k].getAttribute(attr);
		}
		if(attrValue == val){
			arr[arr.length] = all[k];
		}	
	}
	return arr;
}