(function($) {
	
	$.fn.watermark = function(options) {
		
		var defaults = {};
		
		var options = $.extend(defaults, options);
		
		return this.each(function() {
		
			var input = $(this);
		
			switch(input.attr("type")) {
				
				case "password":
				
					input.before("<input type='text' id='" + input.attr("id") + "alt" + "' class='" + input.attr("class") + "' />")
					var inputalt = input.prev();
					
					if (input.val() == "") {
						inputalt.val(input.attr("title"));
						input.hide();
					} else {
						input.show();
						inputalt.hide();
					}
					
					inputalt.focus(function(evt) {
						var inputalt = $(this);
						var input = inputalt.next();
						
						inputalt.hide();
						input.show().focus();						
					});
					
					input.blur(function(evt) {
						var input = $(this);
						var inputalt = input.prev();
						
						if (input.val() == "") {
							input.hide();
							inputalt.show();
						}
					});
				
				break;
		
				default:
					if (input.val() == "")
						input.val(input.attr("title"));
						
					input.focus(function(evt) {
						var input = $(this);
						input.val() == input.attr("title") ? input.val("").addClass("active") : null;
					});
					
					input.blur(function(evt) {
						var input = $(this);
						input.val().trim() == "" ? input.val(input.attr("title")).removeClass("active") : input.val(input.val().trim());
					});
				
			}
		
		});
		
	};
	
	$.fn.textbox = function(options) {
	
		var defaults = {
			width: 135,
			height: 29,
			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(options.width);
			input.width(options.width - parseInt(input.css("padding-left")) - parseInt(input.css("padding-right")));
			cback.width(options.width - cback.outerWidth(true) - cback.outerWidth(false));
			
			if (options.watermark)
				input.watermark();
			
		});
		
	};
	
	$.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);
			
			select.wrap("<div class='select'></div>");
			
			var wrapper = select.parent();
			wrapper.width(select.outerWidth());
			
			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.outerWidth() - parseInt(cback.css("margin-left")) - parseInt(cback.css("margin-right")));
			
			select.css("opacity",0).change(function(evt) {
				
				if ($(this).val() != "")
					$(this).prev().text($(this).find(":selected").text());
				else
					$(this).prev().text("");
				
			});
			
		});
		
	};
	
})(jQuery);

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
