/* Tabbed Forms */

(function($){
	$.fn.switchTab=function(formName, tab){
		var tab = tab || 1;
		
		// make no tab selected
		$('#form_' + formName + ' .tabs a').removeClass('selected');
		
		// hide all the tabs
		$('#form_' + formName + ' .tab').addClass('inactive');
		
		// make tab selected
		$('#tabs_' + formName + '_' + tab).addClass('selected');
		
		// show the single tab
		$('#tab_' + formName + '_' + tab).removeClass('inactive');
		
		return false;
	};
	
	$.fn.hideTab=function(formName, tab){
		var tab = tab || 1;
		
		// make tab hidden
		$('#tabs_' + formName + '_' + tab).addClass('hidden');
		
		// hide the single tab
		$('#tab_' + formName + '_' + tab).addClass('hidden');
		
		return false;
	};
	
	$.fn.showTab=function(formName, tab){
		var tab = tab || 1;
		
		// make tab visible
		$('#tabs_' + formName + '_' + tab).removeClass('hidden');
		
		// show the single tab
		$('#tab_' + formName + '_' + tab).removeClass('hidden');
		
		return false;
	};
	
	$.fn.hideFieldset=function(formName, tab, fieldset){
		var tab = tab || 1;
		var fieldset = fieldset || 1;
		
		// make fieldset hidden
		$('#fieldset_' + formName + '_' + tab + '_' + fieldset).addClass('hidden');
		
		return false;
	};
	
	$.fn.showFieldset=function(formName, tab, fieldset){
		var tab = tab || 1;
		var fieldset = fieldset || 1;
		
		// make fieldset visible
		$('#fieldset_' + formName + '_' + tab + '_' + fieldset).removeClass('hidden');
		
		return false;
	};
	
	$.fn.hideElement=function(formName, element){
		var element = element || '';
		
		// make element hidden
		$('#element_' + formName + '_' + element).addClass('hidden');
		
		return false;
	};
	
	$.fn.showElement=function(formName, element){
		var element = element || '';

		// make element visible
		$('#element_' + formName + '_' + element).removeClass('hidden');
		
		return false;
	};
	
	$.fn.formReAlternate=function(){
		var theElements = $(this).parent('fieldset').children('.element');
		
		// redo the alternation
		theElements.each(function(i){
			if(i % 2 == 1)
				$(this).addClass('alt');
			else
				$(this).removeClass('alt');
			} );
		
		return false;
	};
	
	$.fn.formSerializeList=function(event){
		for(i = 1; i < event.data.numColumns + 1; i++) {
			theSerial = $('#' + event.data.sortable + i).sortable('serialize');
			
			theSerial = theSerial.replace(RegExp('multilistItem', 'g'), '');
			theSerial = theSerial.replace(RegExp('&', 'g'), ',');
			theSerial = theSerial.replace(RegExp('\\[\\]=', 'g'), '');
			
			$('#' + event.data.serialField + i).val(theSerial);
			
			alert(theSerial);
			
			return false;
		}
	};
	
	$.fn.formSerializeSort=function(event){
		serialized = $('#sort_' + event.data.id + '_list').sortable('serialize');
		
		serialized = serialized.replace(RegExp(event.data.type + 'Item', 'g'), '');
		serialized = serialized.replace(RegExp('&', 'g'), ',');
		serialized = serialized.replace(RegExp('\\[\\]=', 'g'), '');
		
		$('#' + event.data.id).val(serialized);
	};
	
	function attachSorting(){
		$forms = $('.form:has(.sort)');
		
		if($forms.length) {
			$sorts = $('.sort ul', $forms);
			
			id = $sorts.attr('id');
			id = id.slice(id.indexOf('_') + 1, id.lastIndexOf('_'));
			
			// Make it sortable
			$sorts.sortable({
				items: '> li',
				cursor: 'move',
				appendTo: 'body',
				placeholder : 'hover',
				start: function(e,ui) {
					ui.helper.css("width", ui.item.width());
				}
			});
			
			// Bind the onSubmit to serialize
			$forms.bind(
				'submit',
				{
					id: id,
					type: "sort"
				},
				$.fn.formSerializeSort
			);
		} // if
	}
	
	$(function() {
		attachSorting();
	})
})(jQuery);
