if (typeof NEATFORMS == "undefined"){
    /**
     * The NEATFORMS global namespace object
     * @class NEATFORMS
     * @static
     */
    var NEATFORMS = {};
}

NEATFORMS.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; ++i) {
        d=a[i].split(".");
        o=NEATFORMS;
        for (j=(d[0] == "NEATFORMS") ? 1 : 0; j<d.length; ++j) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
};

NEATFORMS.namespace("core");

NEATFORMS.core.apply = function() {
	$(document).ready(function(){
		if (typeof NEATFORMS == "undefined"){
		    /**
		     * The NEATFORMS global namespace object
		     * @class NEATFORMS
		     * @static
		     */
		    var NEATFORMS = {};
		}

		NEATFORMS.namespace = function() {
		    var a=arguments, o=null, i, j, d;
		    for (i=0; i<a.length; ++i) {
		        d=a[i].split(".");
		        o=NEATFORMS;
		        for (j=(d[0] == "NEATFORMS") ? 1 : 0; j<d.length; ++j) {
		            o[d[j]]=o[d[j]] || {};
		            o=o[d[j]];
		        }
		    }
		    return o;
		};

		NEATFORMS.namespace("core");

		NEATFORMS.core.apply = function() {
			$(document).ready(function(){
				$("form.neatForm").each(function(){
					
					var changeEvent = function($neatWrapper, state) {
						switch (state){
							case false:
								$neatWrapper.removeClass('checked');
								break;
							case true:
								$neatWrapper.addClass('checked');
								break;
					    }
					};
					
					// radio buttons
					$(this).find("input:radio").each(function(){
						var $neatElement = $("<div class='neatRadio' />");
						
						if ($(this).attr('checked')) {
							$neatElement.addClass('checked');
						}
						$neatElement.click(function(ev){
							var $input = $(this).find('input');
							var radioButtonName = $input.attr('name');
							// untick all other radio buttons with that name
							$("input[name="+radioButtonName+"]").parent('div.neatRadio').removeClass('checked');
							$(this).find("input").attr('checked', true);
							$(this).find("input").trigger('change');
							changeEvent($(this), true);
						});
						$(this).wrap($neatElement);
					});
					
					// checkboxes
					$(this).find("input:checkbox").each(function(){
						var $neatElement = $("<div class='neatCheckbox' />");
						if ($(this).attr('checked')) {
							$neatElement.addClass('checked');
						}
						$neatElement.click(function(ev){
							changeEvent($(this), $(this).find('input').attr('checked'));
						});
						$(this).wrap($neatElement);
					});
					
				});
			});	
		}();
	});	
}();
