﻿
	$.widget("ui.tiptextbox", {

		defText: 'enter text',
		textBox: null,
		defTextBox : null,
		tipCssClass: 'text-tip',
		normalCssClass: 'text',
		textMode:'singleline',

		_create: function() {
			this._initOptions(this.options);
			this.textBox = $(this.element);
			if (this.textMode == "password"){
				this.defTextBox = $("#"+this.textBox.attr("id")+"_def");
			}else{
				var v = this.textBox.val();
				if (v.length == 0) this.textBox.val(this.defText);
				if (this.textBox.val() == this.defText) {
					this.textBox.removeClass(this.normalCssClass);
					this.textBox.addClass(this.tipCssClass);
				}
			}
			this._initEvents();
		},

		_initEvents: function() {
			var self = this;
			this.textBox.bind("focus", function() {
				var v = self.textBox.val();
				if (self.textMode == "password"){
					return;
				}else{
					if (v == self.defText) {
						self.textBox.addClass(self.normalCssClass);
						self.textBox.removeClass(self.tipCssClass);
						self.textBox.val("");
					}
				}
			});
			this.textBox.bind("blur", function() {
				var v = self.textBox.val();
				if (self.textMode == "password"){
					if (v.length == 0){
						self.defTextBox.show();
						self.textBox.hide();
					}
				}else{
					if (v.length == 0) {
						self.textBox.removeClass(self.normalCssClass);
						self.textBox.addClass(self.tipCssClass);
						self.textBox.val(self.defText);
					}
				}
			});
			if (this.textMode == "password"){
				this.defTextBox.bind("focus", function(){
					self.defTextBox.hide();
					self.textBox.show();
					self.textBox[0].focus();
				});
			}
		},

		_initOptions: function(_o) {
			if (typeof (_o) == "undefined") _o = {};
			this.tipCssClass = typeof (_o.tipCssClass) != "undefined" ? _o.tipCssClass : this.defs.tipCssClass;
			this.normalCssClass = typeof (_o.normalCssClass) != "undefined" ? _o.normalCssClass : this.defs.normalCssClass;
			this.defText = typeof (_o.defText) != "undefined" ? _o.defText : this.defs.defText;
			this.textMode = typeof (_o.textMode) != "undefined" ? _o.textMode : this.defs.textMode;
		},
		
		getDefText:function(){
			return this.defText;
		},
		
		reset : function(){
			this.textBox.val(this.defText);
			this.textBox.removeClass(this.normalCssClass);
			this.textBox.addClass(this.tipCssClass);
		},

		defs: {
			defText: 'enter text',
			tipCssClass: 'tip-tb',
			normalCssClass: 'tb',
			textMode:'singleline'
		}
	})
