$.tablesorter.addParser({
	id: 'programme',
	is: function () { return false; },
	format: function(s) {
		return s.toLowerCase().replace(/---/, 'zzz');
	},
	type: 'text'
});

$.tablesorter.addParser({
	id: 'date',
	is: function () { return false; },
	format: function(s) {
		var d = new Date(s.substring(0, s.length - 4));
		return d.getTime();
	},
	type: 'numeric'
});

$(document).ready(function() {

$('table.tablesorter').tablesorter({
    headers: {
	1: { sorter: false },
	3: { sorter: 'programme' },
	4: { sorter: 'date' },
	5: { sorter: 'date' },
	5: { sorter: false },
	6: { sorter: false },
	7: { sorter: false }
    }
});

$('table.tablesorter thead th').filter('[class!=header]')
    .addClass('headerplain');

function docancel()
{
	var table = $('#dialogue').attr('table');
	var slot = $('#dialogue').attr('slot');

	if (confirm('Really remove scheduled event?'))
	{
		$.get('cancel.jim?slot=' + slot +
		    '&table=' + table, function() {
			window.location.reload(true);
		});
		$('#dialogue').dialog('close');
	}
}

var $buttons1 = {
    "Close" : function() {$(this).dialog('close');}
};
var $buttons2 = $.extend(
    {"Cancel Event": function() { docancel() }},
    $buttons1);

var $dialog = $('#dialogue').dialog({
	title: "Schedule Details",
	modal: false, autoOpen: false,
	height: 500, width: 700,
	show: 'scale', hide: 'fade',
	draggable: true, resizable: true,
	buttons: $buttons2,
	close: function(e,u) { $('#dialogue').empty().html(
	    '<img src="/img/loading.gif" alt="loading">'); }
});

function schedpopup(e, o)
{
	e.preventDefault();
	var slot = o.attr('slot');
	var table = o.attr('table');
	$('#dialogue').attr('slot', slot).attr('table', table);

	var url = 'info.jim?slot=' + slot +
	    '&table=' + table;
	$('#dialogue').load(url);
	$dialog.dialog('open');
}
$('a.schedule').click(function(e) { schedpopup(e, $(this)) });

$('table.tablesorter tbody tr').hover(
	function() { $(this).addClass('hover'); },
	function() { $(this).removeClass('hover'); });

$('button').button();

// Menu

var $paddialog = $('#padding').dialog({
	title: "Padding values",
	modal: true, autoOpen: false,
	height: 'auto', width: 'auto',
	show: 'scale', hide: 'fade',
	draggable: false, resizable: false,
	buttons: {
	    "Confirm": function() {
		$('#paddingf').ajaxSubmit({
			dataType: 'text',
			success: function(data) {
				window.location.reload(true);
			}
		});
	    },
	    "Cancel": function() { $(this).dialog('close'); }
	}
});

$('#fchange').dialog({
	autoOpen: false,
	height: 'auto', width: 'auto',
	modal: true,
	buttons: {
	    "Update": function() {
		var s = $('#fchangeform').serialize();
		$.get('folder.jim?' + s,
		    function() { window.location.reload(true); });
	    },
	    "Close": function() {
		$(this).dialog('close');
	    }
	},
	close: function() {
		$('#changeslot').val(0);
		$('#fchangename').val('');
	}
});

function preparemenu(el, menu)
{
	if (!$(el).is("tr"))
		el = $(el).closest('tr');

	if ($(el).attr('table') != 'pending' && $(el).attr('rsvtype') == 3)
	{
		if ($(el).attr('ar') == 1)
			$('#optmenu').changeContextMenuItem('#ar',
			    'Disable AR');
		else
			$('#optmenu').changeContextMenuItem('#ar',
			    'Enable AR');
		$('#optmenu').enableContextMenuItems('#ar');
	}
	else
		$('#optmenu').disableContextMenuItems('#ar');

	if ($(el).attr('table') != 'pending' && (
	    $(el).attr('reckind') == 4 || $(el).attr('reckind') == 1))
		$('#optmenu').enableContextMenuItems('#folder');
	else
		$('#optmenu').disableContextMenuItems('#folder');
}

function menuclick(action, el, pos)
{
	if (!$(el).is("tr"))
		el = $(el).closest('tr');
	var sid = $(el).attr('sid');
	//if (window.console)
	      //console.log("Got %s, el: %o, id: %d", action, el, sid);

	switch (action)
	{   
	    case 'delete':
		var table = $(el).attr('table');
		if (confirm('Are you sure you want to delete this entry?'))
			$.get('cancel.jim?slot=' + sid +
			    '&table=' + table,
			    function() {
				window.location.reload(true);
			});
		break;

	    case 'ar':
		if ($(el).attr('ar') == 1)
		{
			$('#paddingsid').val(sid);
			$paddialog.dialog('open');
		}
		else
			$.get('ar.jim?slot=' + sid,
			    function() {
				window.location.reload(true);
			});
		break;

	    case 'folder':
		$('#fchangeslot').val(sid);
		$('#fchangename').val($(el).find('a.schedule').text());
		$('#fchange').dialog('open');
		break;

	    default:
		alert('Unhandled menu event, ' + action);
	}
}

$('table.schedule tbody tr').hover(
	function() { $(this).addClass('hover'); },
	function() { $(this).removeClass('hover'); })
	.contextMenu({menu: 'optmenu', beforeShow: preparemenu}, menuclick);

$('a.smenu')
	.contextMenu({menu: 'optmenu', leftButton: true, beforeShow: preparemenu}, menuclick);

});