/*
	Copyright (c) 2007-2010 JB Interactive Pty. Ltd.
	All Rights Reserved
	http://www.jbinteractive.com.au/
*/

(function ($) {

$.fn.disable = function () {
	$(this[0].elements)
		.trigger('disable') // Last minute chance to clean-up if required.
		.attr('disabled', true);
	return this.addClass('disabled');
};

$.fn.enable = function () {
	$(this[0].elements).removeAttr('disabled');
	return this.removeClass('disabled');
};

// Because I can! :)
$.show = function (observer) {
	observer = $(observer);
	return {
		when: function (target) {
			target = $(target);
			return {
				equals: function (value) {
					target
						.change(function () {
							var cmp = target.is(':checkbox') ? target.is(':checked') : target.val();
							observer[cmp == value ? 'show' : 'hide']();
						})
						.trigger('change');
				}
			};
		}
	};
};

$(function () {
	
	$.show('#used_again_when_field').when('#used_again').equals(1);
	$.show('#used_previously_when_field').when('#used_previously').equals(1);
	
	var form_valid = false;
	
	$('.cb-form')
		.submit(function (e) {
			
			if (form_valid) {
				return;
			}
			
			e.preventDefault();
			var $this = $(this),
				data  = $this.serializeArray();
			
			$this.disable()
				 .find('.cb-loading')
					.show();
			
			$.post($this.attr('action'), data, function (json) {
				
				$this.enable()
					 .find('.cb-loading')
						.hide();
				
				if (json.valid) {
					form_valid = true;
					return $this.trigger('submit');
				} else {
					$this.errors(json.messages);
				}
				
			}, 'json');
			
		});
	
	$('#enrolment_date_commencing')
		.datepicker({
			'dateFormat': 'dd/mm/yy',
			'showAnim': 'fadeIn',
			'showOptions': {
				'direction': 'down'
			}
		});
	
	var delete_target,
		dialog = $('<p>Are you sure you wish do delete <strong class="title"></strong>?</p>')
		.dialog({
			'autoOpen': false,
			'buttons': {
				'Delete': function () {
					$.post(delete_target.attr('href'));
					
					if (delete_target.parents('tr').siblings().length) {
						delete_target.parents('tr').remove();
					} else {
						delete_target.parents('.cb-form-table').remove();
					}
					
					dialog.dialog('close');
				},
				'Cancel': function () {
					dialog.dialog('close');
				}
			},
			'modal': true,
			'title': 'Confirm delete'
		});
	
	$('.cb-form-action-delete')
		.live('click', function (e) {
			e.preventDefault();
			delete_target = $(this);
			dialog
				.find('.title')
					.text($(this).parents('tr').find('.title').text())
				.end()
				.find('.type')
					.text('Book')
				.end()
				.dialog('open');
		});
	
	$(function () {
		$('.actions a').button({
				'icons': {
					'primary': 'ui-icon-close'
				}
			});
	});
});


})(jQuery);

