/* dropdown */
(function($){
	$.fn.dropdown = function(options) {	
		var defaults = {};		
		var options = $.extend(defaults, options);		
		return this.each(function() {
			var self = $(this);			
			self.children('li').click( function() {	
				/* change selected item classes */			
				var parent = self.closest('ul');
				parent.children('li').addClass('inactive').removeClass('active');
				parent.find('input').removeAttr('checked');
				$(this).removeClass('inactive').addClass('active');
				$(this).find('input').attr('checked','checked');
				/* toggle slide */			
				if ( parent.hasClass( 'collapsed' ) ) {				
					parent.addClass('expanded')
						.removeClass('collapsed')
						.children('li').slideDown();					
				} else {
					parent.children('li.inactive').slideUp( null, function(){
							parent.addClass('collapsed')
								.removeClass('expanded')
						});
				}
				/* to do: not good here - put this in a callback */
				var prompt_value = $(this).data('prompt');
				var prompt_input = parent.closest('form').find('input[name="description"]').eq(0);
				prompt_input.val(prompt_value);
				if ( $('.hidden').css('display') == 'none' ) $('.hidden').slideDown();
			});			
		});
	};
})(jQuery);

/* autofocus */
(function($){
	$.fn.autofocus = function(options) {	
		var defaults = {};		
		var options = $.extend(defaults, options);		
		return this.each(function() {
			var self = $(this);			
			var default_val = self.data('default');
			self.val(default_val);
			self.focus( function(){
				var default_val = $(this).data('default');
				var val = $(this).val();
				if ( val==default_val ) $(this).val('');
			} );
			self.blur( function(){
				var default_val = $(this).data('default');
				var val = $(this).val();
				if ( val=='' ) $(this).val(default_val);	
			} );
		});
	};
})(jQuery);

Util.prototype = {
	
	emailCallback : function( response ) {
		
		$('#dialog_form_email').dialog( "close" );
		$('#dialog_form_email').find('input[name="toString"]').val('');
		
	}
	
}

function Util(){}
var util = new Util();

/* onload */
jQuery(document).ready(function() {
	
	/* autofocus */
	$('.focus').autofocus();
	
	/* dropdown */
	$('#what_list').dropdown();
	
	/* ajax form */
	$('.form_ajax').submit( function(e) {
		e.preventDefault();
		var form = $(this);
		var callback = form.data('callback')==undefined ? false : eval( form.data('callback') ) ;		
		var options = {			
			'success' : function( e ) {
				var response = eval("(" + e + ")");
				if ( response.valid > 0 ) {
					if ( response.message != '' ) alert( response.message );
					if ( callback ) { setTimeout( function(){callback(response)},20 ); }
					else if ( response.redirect != '' ) window.location = response.redirect;
				} else alert( 'Error: ' + response.message );
			}
		}		
		form.ajaxSubmit(options); 
	});
	
	/* dialog */
	$('#dialog_form_email').dialog({
		autoOpen: false,
		height: 450,
		width: 400,
		modal: true,
		buttons: {
			"Send": function() {
				$( this ).dialog( "option", "buttons", {
					"Sending": function() {}
				} );
				$(this).find('form').submit();			
			},
			"Cancel": function() {
				$( this ).dialog( "close" );
				$( this ).find('input[name="toString"]').val('');
			}
		},
		close: function() {
			
		}
	});	
	$( ".button_email" ).click(function() {
		var email = $(this).data('email');
		$( "#dialog_form_email" ).find('input[name="toString"]').val(email);
		$( "#dialog_form_email" ).dialog( "open" );
	});

	
});
