(function($) {
	
	$.fn.textbox = function(options) {
	
		var defaults = {
			watermark: true
		};
		
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			
			var input = $(this);
			
			input.wrap("<div class='textbox'></div>");
			
			var wrapper = $(this).parent();
			wrapper.prepend("<div class='cleft'></div>").append("<div class='cright'></div><div class='cback'></div>");

			var cleft = wrapper.find(".cleft");
			var cright = wrapper.find(".cright");
			var cback = wrapper.find(".cback");
			
			wrapper.width(input.width());
			input.width(input.width() - parseInt(input.css("padding-left")) - parseInt(input.css("padding-right")));
			cback.width(input.width() - parseInt(input.css("margin-left")) - parseInt(input.css("margin-right")));
			
			if (options.watermark) {

				if (input.val() == "")
					input.val(input.attr("title")).addClass("inactive");
					
				input.focus(function(evt) { $(this).val() == $(this).attr("title") ? $(this).val("").removeClass("inactive") : null;  });
				input.blur(function(evt) { $(this).val().trim() == "" ? $(this).val($(this).attr("title")).addClass("inactive") : $(this).val($(this).val().trim());  });
					
			}
			
		});
		
	};
	
	$.fn.checkbox = function(options) {
		
		var defaults = {};
		
		var options = $.extend(defaults, options);
		
		return this.each(function() {
		
			var input = $(this);
			
			input.wrap("<div class='checkbox'></div>");
			
			var wrapper = input.parent();
			
			wrapper.prepend("<div class='cbox'></div>");
			
			if (input.attr("checked"))
				wrapper.addClass("checked");
			
			wrapper.click(function(evt) {

				if (wrapper.find("input").attr("checked")) {
					wrapper.removeClass("checked");
					wrapper.find("input").attr("checked","");
				} else {
					wrapper.addClass("checked");
					wrapper.find("input").attr("checked","checked");
				}
				
			});
			
			input.change(function(evt) {
				
				if (wrapper.find("input").attr("checked")) {
					wrapper.removeClass("checked");
					wrapper.find("input").attr("checked","");
				} else {
					wrapper.addClass("checked");
					wrapper.find("input").attr("checked","checked");
				}
				
			});
			
		});
		
	};
	
	$.fn.select = function(options) {
		
		var defaults = {};
		
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			
			var select = $(this);
			var origwidth = select.width();
			
			select.wrap("<div class='select'></div>");
			
			var wrapper = select.parent();
			wrapper.width(select.width());
			
			wrapper.prepend("<div class='cleft'></div><span class='selected'>"+select.attr("title")+"</span>").append("<div class='cright'></div><div class='cback'></div>");
			
			var cback = wrapper.find(".cback");
			
			cback.width(select.width() - parseInt(cback.css("margin-left")) - parseInt(cback.css("margin-right")));
			
			select.css("opacity",0).change(function(evt) {
				
				$(this).prev().text($(this).find(":selected").text());
				
			});
			
			var autowidth = select.width("auto").width();
			
			if (origwidth > autowidth)
			    select.width(origwidth);
			
		});
		
	}
	
})(jQuery);

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}