(function ($) {
	$.fn.argoForm = function (options) {
		var defaults = {

		}
		
		var options = $.extend (defaults, options);
		
		return this.each (function () {
			obj = $(this);
	
			/**
			 * Initialize form
			 */
			_init ();
			
			$('.radiobutton').bind('click', function () {
				hideRadiofields (obj);
				var showFieldset = $(this).attr('id');
				$('fieldset.' + showFieldset).show ();
				addFieldsetElementsActive (showFieldset);
			});
			
			$('.checkboxbutton').bind('click', function () {
				var fieldsetClass = $(this).attr('id');
				var status = '';
				if ($(this).attr('checked')) {
					status = 'checked';
				} else {
					status = 'unchecked';
				}
				toggleCheckboxfield (fieldsetClass, status);
			});
		});
	};
})(jQuery);



function _init () {
	// Add classes to controll buttons (radios and checkboxes)
	obj.find('.controllfield').each (function(e) {
		if ($(this).attr('type') == 'radio') {
			$(this).addClass('radiobutton');
		} else if ($(this).attr('type') == 'checkbox') {
			$(this).addClass('checkboxbutton');
		}
	});
	
	// Hide fieldset to be hidden
	obj.find('fieldset.hidden').hide ();
	
	
}



function hideRadiofields (obj) {
	var fieldsetId;
	obj.find('.radiobutton').each (function(e) {
		fieldsetId = $(this).attr('id');
		$('fieldset.' + fieldsetId + '.hidden').hide();
		removeFieldsetElementsActive (fieldsetId);
	});
}



function toggleCheckboxfield (fieldsetClass, status) {
	// Show / hide fieldset
	if (status == 'checked') {
		var fieldset = $('fieldset.' + fieldsetClass + '.hidden');
		fieldset.css({'opacity':0});
		fieldset.show ('fast', function() {
			$(this).animate({'opacity':1}, 500);
		});
	} else {
		$('fieldset.' + fieldsetClass + '.hidden').hide ('fast');
	}
	// Add / remove active class on elementes
	$('fieldset.' + fieldsetClass + '.hidden').find('input, textarea, select').each (function () {
		if (status == 'checked') {
			$(this).addClass('active');
		} else {
			$(this).removeClass('active');
		}
	});
}



function addFieldsetElementsActive (fieldsetClass) {
	$('fieldset.' + fieldsetClass).find('input').each(function() {
		$(this).addClass ('active');
	});
}



function removeFieldsetElementsActive (fieldsetClass) {
	$('fieldset.' + fieldsetClass).find('input').each(function() {
		$(this).removeClass ('active');
	});
}



