var Issues = {

	initialise: function()
	{
		Issues.container = $('issue_list');

		// Columns, Pages & Status links at top
		Issues.links(Issues.container.getElements('th a'));
		Issues.links(Issues.container.getElements('#pagination a'));

		Issues.links(Issues.container.getElements('#navigation a'));

		// Filters
		Issues.Filters.initialise();
	},

	links: function(links)
	{
		links.each(function(link)
		{
			// Get the query string
			var query = link.href.split('?')[1];

			// Add event handler
			link.addEvent('click', function() { Issues.get(query); });
			link.href = 'javascript:;';
		});
	},

	get: function(query)
	{
		// Show loading image
		new Element('img', { src: 'templates/arctic/images/loading.gif' }).setStyle('float', 'right').injectTop(Issues.container.getElement('h2'));

		// Create AJAX request
		new Ajax('index.php?' + query,
		{
			data: 'ajax=true',
			update: Issues.container,
			onComplete: Issues.initialise
		}).request();
	}

}

Issues.Filters = {

	initialTitle: '',

	initialise: function()
	{
		var form = $('filters');

		if ($defined(form))
		{
			form.action = 'javascript:;';

			// Add events
			form.getElements('input[type=submit]').each(function(button)
			{
				button.addEvent('click', function() { Issues.Filters.load(button.value); });
			});

			// Hijack links
			if ($('clear_filter'))
			{
				$('clear_filter').href = 'javascript:;';
				$('clear_filter').addEvent('click', Issues.Filters.clear);
			}

			// Filter title
			var title = form.getElement('input[type=text]');

			if ($defined(title))
			{
				// Store initial title
				this.initialTitle = title.getValue();

				// Make it nicely styled
				title.setStyle('color', '#888');
				title.addEvent('focus', function() { if (this.value == Issues.Filters.initialTitle) { this.value = ''; this.setStyle('color', '#000') } });
				title.addEvent('blur', function() { if (!this.value) { this.value = Issues.Filters.initialTitle; this.setStyle('color', '#888') } });
			}
		}
	},

	load: function(action)
	{
		// Show loading image
		new Element('img', { src: 'templates/arctic/images/loading.gif' }).setStyle('float', 'right').injectTop(Issues.container.getElement('h2'));

		// Create AJAX request
		new Ajax('index.php',
		{
			method: 'post',
			data: 'ajax=true&submit=' + escape(action) + '&' + $('filters').toQueryString(),
			update: 'issue_list',
			onComplete: Issues.initialise
		}).request();
	},

	clear: function()
	{
		// Show loading image
		new Element('img', { src: 'templates/arctic/images/loading.gif' }).setStyle('float', 'right').injectTop(Issues.container.getElement('h2'));

		// Create AJAX request
		new Ajax('index.php',
		{
			method: 'get',
			data: 'ajax=true&filter=clear',
			update: 'issue_list',
			onComplete: Issues.initialise
		}).request();
	}

}

// Start it up
window.addEvent('domready', Issues.initialise);
