var bg_effects = new Array();
var onloadEvents = new Array();

/*Example:
bg_effects[bg_effects.length] = new Array('game[time]', '9:00 pm, 19:00 or 9pm');*/

function ajax_link(link)
{
	var linkParts = link.split('/');
	var newLink = '/' + linkParts[1] + '/' + linkParts[2] + '/ajax';
	for (var i = 3; i < link.length; i++)
		newLink += '/' + linkParts[i];
	return newLink;
}


function hijack(parent)
{	// Bug in IE!!!!
	// fixed. Armando.
	if($(parent) == null)
		return false;
		
	var allLinks = $(parent).getElementsByTagName('a');
	for(var i = 0; i < allLinks.length; i++)
	{
		var thisLink = allLinks[i];
		
		// abort if we're not supposed to ajax-ify this form.
		if (('' + thisLink.getAttribute('class')).indexOf('ajax') == -1) continue;
		thisLink.onclick = function() {
			var myAjax = new Ajax.Updater($('totalteams'), ajax_link(this.getAttribute('href')),
				{ evalScripts:true,
				  method: 'get',
				  insertion: function(element, content) { element.innerHTML = content; hijack(element); },
				  onFailure: function(xmlhttp) { Form.enable(thisForm); }
				  } );
			return false;
		}
	}
	
	//alert('there');
	var allForms = $(parent).getElementsByTagName('form');
	for(var i = 0; i < allForms.length; i++)
	{
		var thisForm = allForms[i];
		
		// abort if we're not supposed to ajax-ify this form.
		if (('' + thisForm.getAttribute('class')).indexOf('ajax') == -1) continue;
		//alert('here');
		// FIXED BUG. Armando 14/Nov/06
		// Note: Change thisForm for this otherwise thisForm will be a reference to the last form in the document.
		thisForm.onsubmit = function() {
			bg_effect("disable_mask");
			Form.disable(this);
			var spinner = $(this.id + '_spinner');
			if (spinner) spinner.style.visibility = 'visible';
			
			var myAjax = new Ajax.Updater($('totalteams'), ajax_link(this.getAttribute('action')),
				{ method: 'post',
				  insertion: function(element, content) { 
									element.innerHTML = content; hijack(element); 
									bg_effect();
				  				},
				  onFailure: function(xmlhttp) { Form.enable(this); },
				  parameters: Form.serialize(this) } );
			return false;
		}
		
		Form.enable(thisForm);
		Form.reset(thisForm);
		//thisForm.getElementsByTagName('input')[0].focus();
	}
}

// this is a function for making calendar clicks show individual day's events,
// and also populate the calendar form.
function calendar_click() {
	var cal = $('cal')
	if (cal) {
		var days = cal.getElementsByTagName('tbody')[0].getElementsByTagName('a');
		for(var day = days.length - 1; day >= 0; day--) {
			(function() { 
				var date = days[day].href.split('#d')[1];
				days[day].onclick = function() { 	
					var events = $('events');
					if (events) {
						var allEvents = events.getElementsByTagName('div');
						if ($('d' + date)) var setall = 'none'; else var setall = 'block';
						for(var event = allEvents.length - 1; event >= 0; event--) {
							allEvents[event].style.display = setall;
						}
						if (setall == 'none') $('d' + date).style.display = 'block';
					}
					var note_date = $('note_date');
					if (note_date) {
						note_date.value = date;
					}
					return false;
				}
			})();
		}
		var events = $('events');
		if(events != null)
		{	var allEvents = events.getElementsByTagName('div');
			$('view_all_events').onclick = function()
				{	for(var event = allEvents.length - 1; event >= 0; event--) 
					{	allEvents[event].style.display = 'block';
					}
				}
		}
	}
}

function calendar_form_box() {
}

function bg_effect()
{	for(var i = 0; i < bg_effects.length; i++)
	{	var id = bg_effects[i][0];
		var text = bg_effects[i][1];
	
		// Replace "[", "]"
		id = id.replace("[", "_").replace("]", "");
		if($(id) != null)
		{	if(arguments[0] == "disable_mask")
			{	if($(id).value == text)
					$(id).value = "";
			} else
			{	apply_event(id, text);
			}
		}
	}
}

function apply_event(id, text)
{	if($(id).value == "")
	{	$(id).value = text;
		$(id).style.color = '#cccccc';
	}	
	$(id).onfocus = function () {
		if(this.value == text)
		{ 	this.value = '';
		} 
		this.style.color = '#000000';
		
	};
	$(id).onblur = function () {
		if(this.value == '')
		{	this.value = text;
			this.style.color = '#cccccc';
		}
		
	};
}


/*
This is a very handy function written by Simon Willison:
http://simon.incutio.com/archive/2004/05/26/addLoadEvent
*/

function addLoadEvent(func) {
	var oldonload = window.onload;
	
	if (typeof window.onload != 'function') {
		window.onload = func;
		onloadEvents.push(func);
	} else {
		window.onload = function() {
			oldonload();
			func();
			onloadEvents.push(func);
		}
	}
}

/* Reloads all the onload events */
function reloadOnLoadEvents()
{	for(var i = 0; i < onloadEvents.length; i++)
	{	onloadEvents[i]();
	}
}


function fixImageWidthInPage(contentAreaId,maxWidth) 
{	if(!document.getElementsByTagName) return false;
	var page = document.getElementById(contentAreaId);
	if(!page) return;
	var img = page.getElementsByTagName('IMG');
	
	if(!img) return;
	for(i in img) 
	{	if(img[i].width > maxWidth) {
			img[i].style.height = Math.floor((maxWidth/img[i].width)*img[i].height) + 'px';
			img[i].style.width = maxWidth + 'px';
		}
	}
}

addLoadEvent( function() { hijack('totalteams'); } );
addLoadEvent( calendar_click );
addLoadEvent( calendar_form_box );
addLoadEvent( bg_effect );
