jQuery(function($cf){
	$cf.fn.cleanform = function() {
		this.each(function() {
			$cf('input[type="text"], textarea',this).not('.exclude, .datepicker, .amount input').each(function() {
				$cf(this).wrap('<div id="' + $cf(this).attr('id') + '" class="inputWrap ' + ($cf(this).is('input') ? 'inputs' : $cf(this).is('textarea') ? 'textareas' : '' ) + '"/>');
				var label = $cf('body').find('label[for="' + $cf(this).attr('id') + '"]');
				label.appendTo($cf(this).parent());
				label.text($cf(this).val() ? $cf(this).val() : label.text());
				$cf(this).val() ? $cf(this).val('') : '' ;
				
				$cf(this).parent().hover( function () { $cf(this).toggleClass('hover'); });
				
				$cf(this).focus(function() {
					$cf(this).parent().addClass('selected');		   
				}).blur(function() {
					$cf(this).parent().removeClass('selected');	
					if ($cf(this).attr('value') == '') {$cf(this).parent().removeClass('filledIn'); label.show();	}	
				});
				$cf(this).keypress(function() {
					$cf(this).parent().addClass('filledIn'); label.fadeOut('fast');
				});
			});
			
			
			$cf('input[type="checkbox"]',this).not('.exclude').each(function() {
				// Grab any inline javascript
				var code = $cf(this).attr('onclick');
				var input = $cf(this).removeAttr('onclick');
				
				//Wrap & hide the element
				$cf(this).hide().wrap('<div id="' + $cf(this).attr('id') + '" class="cbWrap"></div>');
				// Add faux checkbox
				$cf(this).parent('.cbWrap').prepend('<div class="checkbox"></div>');
				// reassign onclick code from above to the faux checkbox
				var checkbox = $cf(this).parent().find('.checkbox');
				
				input.prop('checked') ? checkbox.addClass('on') : checkbox.removeClass('on');
				
				$cf(this).parent().find('.checkbox').on('click',function() {
					input.trigger('click');
					checkbox.toggleClass('on');
					eval(code);
				});
			});
			$cf('input[type="radio"]',this).not('.exclude').each(function(i) {
				$cf(this).parent().wrapInner('<div class="radioOverlay"></div>');
				$cf(this).parent().prepend('<div class="radio"></div>');
				$cf(this).hide();
				if ($cf(this).attr('rel') != false) { $cf(this).parent().toggleClass('hide'); }
				$cf(this).parent().live('click',function() {
					var input = $cf(this).find('input');
					var radio = $cf(this).find('.radio');
					
					$cf('input[name="' + input.attr('name') + '"]').attr('checked',false).parent().find('.radio').removeClass('on');
					input.attr('checked',true);
					radio.addClass('on');
				});
			});
			$cf('#reset').click(function() {
				$cf('#other-details').hide();
				$cf('.input-wrapper span').show();
				$cf(this).find('input').attr('checked', false);
				$cf('.cbOverlay').find('.checkbox').removeClass('on');
				$cf('.radioOverlay').find('.radio').removeClass('on');
			});
			$cf(function(){
				$cf.extend($cf.fn.disableTextSelect = function() {
					return this.each(function(){
						if($cf.browser.mozilla){//Firefox
							$cf(this).css('MozUserSelect','none');
						}else if($cf.browser.msie){//IE
							$cf(this).bind('selectstart',function(){return false;});
						}else{//Opera, etc.
							$cf(this).mousedown(function(){return false;});
						}
					});
				});
				$cf('.cbOverlay').disableTextSelect();
				$cf('.radioOverlay').disableTextSelect();
			});
		});
		return this;
	};
});

