$(function(){
	var defaultOptions = {preloadImg:true};
	var jqFmImgPreloaded = false;
	/***************************
	  Labels
	***************************/
	var jqFmGetLabel = function(objfield){
		var selfForm = $(objfield.get(0).form);
		var sLabel = objfield.next();
		if(!sLabel.is('label')) {
			sLabel = objfield.prev();
			if(sLabel.is('label')){
				var inputname = objfield.attr('id');
				if(inputname){
					sLabel = selfForm.find('label[for="'+inputname+'"]');
				} 
			}
		}
		if(sLabel.is('label')){return sLabel.css('cursor','pointer');}
		return false;
	};	
	/***************************
	  Check Boxes 
	 ***************************/	
	$.fn.jqTransCheckBox = function(){
		return this.each(function(){
			if($(this).hasClass('jqFmHidden')) {return;}
			var $input = $(this);
			var inputSelf = this;
			//set the click on the label
			var sLabel=jqFmGetLabel($input);
			sLabel && sLabel.click(function(){aLink.trigger('click');});			
			var aLink = $('<a href="#" class="jqFmCheckbox"></a>');
			//wrap and add the link
			$input.addClass('jqFmHidden').wrap('<span class="jqFmCheckboxWrapper"></span>').parent().prepend(aLink);
			//on change, change the class of the link
			$input.change(function(){
				this.checked && aLink.addClass('jqFmChecked') || aLink.removeClass('jqFmChecked');
				return true;
			});
			// Click Handler, trigger the click and change event on the input
			aLink.click(function(){
				//do nothing if the original input is disabled
				if($input.attr('disabled')){return false;}
				//trigger the envents on the input object
				$input.trigger('click').trigger('change');	
				return false;
			});
			// set the default state
			this.checked && aLink.addClass('jqFmChecked');		
		});
	};
	/***************************
	  Radio Buttons 
	 ***************************/	
	$.fn.jqTransRadio = function(){
		return this.each(function(){
			if($(this).hasClass('jqFmHidden')) {return;}
			var $input = $(this);
			var inputSelf = this;				
			sLabel = jqFmGetLabel($input);
			sLabel && sLabel.click(function(){aLink.trigger('click');});	
			var aLink = $('<a href="#" class="jqFmRadio" rel="'+ this.name +'"></a>');
			$input.addClass('jqFmHidden').wrap('<span class="jqFmRadioWrapper"></span>').parent().prepend(aLink);			
			$input.change(function(){
				inputSelf.checked && aLink.addClass('jqFmChecked1') || aLink.removeClass('jqFmChecked1');
				return true;
			});
			// Click Handler
			aLink.click(function(){
				if($input.attr('disabled')){return false;}
				$input.trigger('click').trigger('change');	
				// uncheck all others of same name input radio elements
				$('input[name="'+$input.attr('name')+'"]',inputSelf.form).not($input).each(function(){
					$(this).attr('type')=='radio' && $(this).trigger('change');
				});
				return false;					
			});
			// set the default state
			inputSelf.checked && aLink.addClass('jqFmChecked1');
		});
	};
/* End the Plugin */
            $('input:checkbox').jqTransCheckBox({imgPath:'/images/'});
            $('input:radio').jqTransRadio({imgPath:'/images/'});
        });
