jQuery(document).ready(function ($) {
	var endpoint = '/schedule';
	
	// fill a jquery select element with the given data
	var fillSelect = function (select, model, data) {
		select.empty();
		select.append('<option value = "0"> -- </option>');

		$.each(data, function (key, obj) {
			option = $('<option>', {
				value: obj[model].id,
				text: obj[model].name
			});

			select.append(option);
		});
	};
	
	// when location is chosen, ajax in relevant series list
	$('#selectLocation').change(function () {
		var locid = $(this).find(':selected').val(),
		    conditions, querystr = '/';
		
		conditions = { 'LocationsSeries.location_id' : locid };
		
		for (field in conditions) {
			querystr += field + ':' + conditions[field] + '/';
		}
		
		var url = endpoint + '/series/get/type:all/limit:999/order:Series.name/bindModel:LocationsSeries' + querystr + '.json';
		
		$.getJSON(url, function (results) {
			fillSelect($('#selectSeries'), 'Series', results);
		});
	});
	
	// check that both location and series are selected before allowing users
	// to submit the form and do a search
	$('#location-series-submit').click(function (e) {		
		var goodtogo = true;
		e.preventDefault();
		
		// check that the selects have been moved from default
		$('#location-series-form select').each(function (i) {
			if ($(this).val() == '0') {
				goodtogo = false;
			}
		});
		
		if (goodtogo) {
			$('#location-series-form').submit();
		} else {
			alert('Please choose both a location and series to continue.');
		}
	});
	
	// initalize a dialog
	// var d = $('<div></div>').dialog({
	// 	autoOpen: false,
	// 	'class': 'shadow',
	// 	modal: true
	// });
	
	$('#resetCalBox').click(function (e) {
		e.preventDefault();
		$('.formSelect input[type="checkbox"]').removeAttr('checked');
	});
	
	if ($('#class-search-form input[type="submit"]').length) {
		$('#class-search-form input[type="submit"]').button();
	}
	
	if ($('#the-entire-calendar input[type="submit"]').length) {
		$('#the-entire-calendar input[type="submit"]').button();
	}
	
	if ($('#the-entire-calendar input[type="checkbox"]').length) {
		$('#the-entire-calendar input[type="checkbox"]').button();
	}
	
	// initalize a dialog
	var d = $('<div></div>').dialog({
		autoOpen: false,
		'class': 'shadow',
		modal: true
	});	
	
	$('#calBox .klass').click(function (e) {
		var coords = $(this).offset();
		var x = Math.round(coords.left);
		var el;
		if ($.browser.safari) { el = $("body"); } else { el = $("html"); } 
		
		var y = Math.round(coords.top) + $(this).height() + 10 - el.scrollTop();

		d.empty();
		d.append($(this).find('.dialog').html());
		d.dialog('option', 'position', [x, y]);
		d.dialog('option', 'title', $(this).find('.dialog').attr('title'));
		d.dialog('option', 'buttons', { 'Close' : function () { d.dialog('close'); }});
		d.dialog('open');
	});
	
	// super hax; phase 2 needs to track this info in the schapi object
	var calinfo = '<br>' + $('#selectLocation option:selected').text() + ' &bull; '
	    + $('#selectSeries option:selected').text() + '<br>'
	    + '<span>' + $('#calrange').val() + '</span>';
	$('#calendar-info').append(calinfo);
	
	// kinda hacky; bring up print dialog if applicable
	if ($('#printing').length && $('#printing').val()) {
		window.print();
	}
});
