var ev = YAHOO.util.Event;
var dom = YAHOO.util.Dom;
var curdate;
var today;
var curid;
var datepickeroverlay;

var loader = new YAHOO.util.YUILoader({ 
	require: ["autocomplete", 'container'], 
	loadOptional: true, 
	timeout: 10000, 
	combine: true }); 
	 
loader.insert();
ev.onDOMReady(init);

function init()
{
	today = document.getElementById('today').value;
	curdate = document.getElementById('curdate').value;
	document.getElementById('cal').style.display = 'block';
}

function processDate(type, args)
{

	var input = document.getElementById('userdate');
	var display = document.getElementById('datedisplay');
	var secs = Date.parse(input.value);
	
	if(input.style.display == 'none')
	{
		var d = new Date();
		d.setTime(document.getElementById('date').value*1000+4*60*60*1000);
		input.style.border = '1px solid #7D7D7D';
		input.style.display = "inline";
		display.style.display = 'none';
		input.focus();
		input.value = monthnames[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
		return;
	}
	
	
	if(!isNaN(secs))
	{
		var d = new Date();
		d.setTime(secs);
		display.innerHTML = monthnames[d.getMonth()] + " " + ordinal(d.getDate(), false) + ", " + d.getFullYear();
		document.getElementById('date').value = secs/1000+10800;
	}
	
	input.style.display = 'none';
	display.style.display = 'inline';

}

function subscribeHowTo()
{
	var text = "<div style = 'padding:3px'>The Westfield XC, Track & Field calendar is published to the web at \"http://www.westfieldtrack.com/ical.php\".<br><br>To subscribe to it in a calendar application (eg. iCal or Google Calendar), follow the application's instructions on subscribing to online calendars and enter the above URL when prompted for the calendar's location on the web.<br><br>Once you subscribe, the Westfield XC, Track & Field calendar will be automatically published to your application. Be sure to set the calendar to auto-refresh if the option is available - the team calendar is frequently updated with new events.</div>";
	var d = new dialogBox('30em', text, false);
	d.show();
}

function changeMonth(date)
{
	ajax('cal', 'calendar.php?f=ajaxcal&date='+date);
	curdate = date;
	var d = new Date();
	d.setTime(curdate*1000);
	document.title = monthnames[d.getMonth()] + " " + d.getFullYear() + " • Team Calendar • " + siteName;
}

function postFromForm(event, args)
{
	var isedit = dom.hasClass(args.el, "editevent");
	var dialog = args.dialog;
	
	var finished = function(query, width, box)
	{
		var dialogbox = new dialogBox('430px', "calendar.php?f=show&id="+curid, true);
		dialogbox.onLoadFinishedShow(initWeather);
		reloadContent();
	}
	
	
	var didNewEvent = function(box)
	{
		box.onGone.subscribe(reloadContent)
		box.remove();
	}
	

	function checkZip()
	{
		var zip = document.getElementById('zipcode');
		var isnewloc  = document.getElementById('isnewlocation').value;
		if(isnewloc == 1 && zip.value != '' && zip.value.search(/^\d{5}$|^\d{5}-\d{4}$/) == -1)
		{
			zip.style.background = "#F27364";
			alert('The zip code entered is not valid.');
		}
	}
	
	if(isedit)
	{	
		sendForm('newevent', 'calendar.php?f=update', finished, 'calendar.php?f=show&id='+curid, '53ex', dialog, checkZip); //dialog box ajax - pass query, width, and ref back to dialog box
	}
	else
	{
		sendForm('newevent', 'calendar.php?f=post', didNewEvent, dialog, null, null, checkZip); //send form and have it remove - remove then reloads content
	}

}

function initWeather(box)
{
	var address = document.getElementById('eventaddress').innerHTML;
	ajax('eventweather', 'weather.php?f=getweather&location='+address, box.alignVertical, box);
}

function showEvent(id, date)
{	
	var today = (new Date()).getTime()/1000;
	var dialogbox = new dialogBox('430px', "calendar.php?f=show&id="+id, true);
	
	if(date >= today)
	{
		dialogbox.onLoadFinishedShow(initWeather);
	}
	else
	{
		dialogbox.onLoadFinishedShow();
	}
	curid = id;
}

function showForm(date, id)
{	
	var request;
	
	if(id == null) //new event
	{
		request = "calendar.php?f=form&date="+date;
	}
	else //editing
	{
		request = "calendar.php?f=form&sf=edit&date="+date+"&id="+id;
	}
	
	var dialogbox = new dialogBox('63ex', request, true);
	
	function initBox(box)
	{
		var input = document.getElementById('userdate');
		var display = document.getElementById('datedisplay');
		ev.addListener(display, 'click', processDate);
		ev.addBlurListener(input, processDate, input);
		var key = new YAHOO.util.KeyListener(input, { keys:[13] }, function(){document.getElementById('userdate').blur();});
		key.enable();
		ev.addListener('postfromform', 'click', postFromForm, {dialog:box, el:document.getElementById('postfromform')});
	}
	
	dialogbox.onLoadFinishedShow(initBox);
}		

function updateLocationFields(select)
{
	select.style.background = '';
	var val = select.value;
	var opt = getOptByValue(select, val);
	var addr = document.getElementById('addressdisplay');
	var zip = document.getElementById('zipcodedisplay');
	var city = document.getElementById('citydisplay');
	var state = document.getElementById('statedisplay');
	if(opt.value != "")
	{
		var obj = eval("("+URL.decode(opt.value)+")");
		addr.innerHTML = obj['address'];
		zip.innerHTML = obj['zipcode'];
		city.innerHTML = obj['city'];
		state.innerHTML = obj['state'];
		
		document.getElementById('address').value = obj['address'];
		document.getElementById('city').value = obj['city'];
		document.getElementById('state').value = obj['state'];
		document.getElementById('zipcode').value = obj['zipcode'];
		document.getElementById('locationid').value = obj['locationid'];
		document.getElementById('location').value = obj['name'];
		document.getElementById('locationid').value = obj['id'];
	}
	else
	{
		addr.innerHTML = '';
		zip.innerHTML = '';
		city.innerHTML = '';
		state.innerHTML = '';
	}
	
}

function toggleNewLocForm(ref)
{
	var address = document.getElementById('address');
	var city = document.getElementById('city');
	var state = document.getElementById('state');
	var zipcode = document.getElementById('zipcode');
	var location = document.getElementById('location');
	var picker = document.getElementById('locationpicker');
		
	if(picker.style.display === "none") {
    	
    	picker.style.display = 'inline';
		document.getElementById('isnewlocation').value = '0';
		location.style.display = 'none';
		address.style.display = 'none';
		city.style.display = 'none';
		zipcode.style.display = 'none';
		document.getElementById('addressdisplay').style.display = 'inline';
		document.getElementById('addressdisplay').style.display = 'inline';
		document.getElementById('zipcodedisplay').style.display = 'inline';
		document.getElementById('citydisplay').style.display = 'inline';
		document.getElementById('statedisplay').style.display = 'inline';
		state.style.display = 'none';
		ref.style.background = "";
		dom.setAttribute(ref, "class", "togglenewloc hoverlink");
		ref.innerHTML = 'New Location';
		ref.style.background = "url('css/core_style/images/additem.png') center left no-repeat";
		updateLocationFields(picker); 
	}
	else {
		picker.style.display = 'none';
		location.style.display = 'inline';
		address.style.display = 'inline';
		city.style.display = 'inline';
		zipcode.style.display = 'inline';
		location.value = "";
		address.value = "";
		city.value = "";
		zipcode.value = "";
		address.style.background = "#F0F0F0";
		location.style.background = "#F0F0F0";
		city.style.background = "#F0F0F0";
		document.getElementById('addressdisplay').style.display = 'none';
		document.getElementById('zipcodedisplay').style.display = 'none';
		document.getElementById('citydisplay').style.display = 'none';
		document.getElementById('statedisplay').style.display = 'none';
		state.style.display = 'inline';
		state.value = "NJ";
		ref.style.background = "url('css/core_style/images/red-x.png') center left no-repeat";
		ref.innerHTML = 'Cancel';
		document.getElementById('isnewlocation').value = '1';
	}
	
}

function reloadContent()
{
	ajax('cal', 'calendar.php?f=ajaxcal&date='+curdate);
}

function deleteEvent(id, name)
{
	myConfirm("Are you sure you want to delete the event \""+URL.decode(name)+"\"?", requestDelete, id, '250px');
}

function requestDelete(type, args, e)
{
	ajaxPost('calendar.php?f=delete', 'id='+e, reloadContent);
}

