
$.fn.jForms = 
function(options)
{ 
	var lastKeypress = 0;
    var keyBuffer = '';
    var self = this;
    var defaults = {
		imagePath : '../images/css/',
		listSize:20
	}	

	var opts = $.extend(defaults, options);
	var imagePath = opts.imagePath	
	
	//preload images
/*	var images = [imagePath + "button_left_xon.gif", imagePath + "button_right_xon.gif", 
	imagePath + "input_left_xon.gif", imagePath + "input_right_xon.gif",
	imagePath + "txtarea_bl_xon.gif", imagePath + "txtarea_br_xon.gif", 
	imagePath + "txtarea_cntr_xon.gif", imagePath + "txtarea_l_xon.gif", imagePath + "txtarea_tl_xon.gif", imagePath + "txtarea_tr_xon.gif"]
	var imgs = new Array();
	for(var i = 0; i<images.length; i++)
	{
		imgs[i] = $("<img>").attr("src", images[i]);
	}
*/
	$(this).attr('autocomplete','off').addClass('niceforms');

	/*------------ beginradios ------------*/
	$(':radio',self).each(function()
	{
		$(this).after('<div id="'+this.id+'_fake"></div>').addClass('outtaHere'); 
		this.checked?$('label[for='+this.id+']').addClass('chosen'):'';
		$('#'+this.id+'_fake').addClass(this.checked?'radioAreaChecked':'radioArea').click(function()
		{
			$(':radio[name='+$('#'+this.id.replace('_fake','')).attr('name')+']').each(function()
			{
				this.checked=false;	
			});
			$('#'+this.id.replace('_fake','')).attr('checked','checked');
			$('label[for='+this.id.replace('_fake','')+']').click();
			$('#'+this.id.replace('_fake','')).css("visibility",'visible');
			$('#'+this.id.replace('_fake','')).attr('checked','checked');
		});
		$(this).click(function(){
			$('#'+this.id+'_fake').addClass('checkboxArea').removeClass('checkboxAreaChecked');
			$(this).css("visibility",'hidden');
		});

		$('label[for='+this.id+']').click(function()
		{					
			$(':radio[name='+$('#'+$(this).attr('for')).attr('name')+']').each(function()
			{
				$('label[for='+this.id+']').removeClass('chosen');
				$('#'+this.id+'_fake').addClass('radioArea').removeClass('radioAreaChecked');
				$('label[for='+this.id.replace('_fake','')+']').removeClass('chosen');
			});
			$(this).addClass('chosen');	
			$('#'+$(this).attr('for')+'_fake').addClass('radioAreaChecked');	

		})
	});
	
/*--------- end radio -------------*/
	
/*------------ begin checkbox ------------*/
		//checkboxes
	jQuery(':checkbox',self).each(function()
	{
		jQuery(this).before('<a style="margin: 1px;" href="javascript:;" id="'+this.id+'_fake"></a>');
		jQuery(this).addClass('outtaHere');
		this.checked?jQuery('label[for='+this.id+']').addClass('chosen'):'';
		jQuery('#'+this.id+'_fake').addClass(this.checked?'checkboxAreaChecked':'checkboxArea').click(function()
		{
			jQuery('label[for='+this.id.replace('_fake','')+']').click();
			jQuery('#'+this.id.replace('_fake','')).attr('checked')?jQuery('#'+this.id.replace('_fake','')).attr('checked',''):jQuery('#'+this.id.replace('_fake','')).attr('checked','checked');
		});



		jQuery('label[for='+this.id+']').click(function()
		{
			//these are backwards on purpose -click functions are called before the checkbox is selected
			jQuery('#'+jQuery(this).attr('for')).attr('checked')?jQuery(this).removeClass('chosen'):jQuery(this).addClass('chosen');
			jQuery('#'+jQuery(this).attr('for')+'_fake').addClass(jQuery('#'+jQuery(this).attr('for')).attr('checked')?'checkboxArea':'checkboxAreaChecked').removeClass(jQuery('#'+jQuery(this).attr('for')).attr('checked')?'checkboxAreaChecked':'checkboxArea');
		});


	});
/*--------- end checkbox -------------*/
}
