ICL.Web.TextBox = 
	function(el)
	{	
		if (arguments.length > 0)
		{
			this.init(el);
		}
	}

ICL.Web.TextBox.prototype.init = 
	function(el)
	{
		if (typeof el == 'string') 
		{
			this.el = YAHOO.util.Dom.get(el);
		}
		else
		{
			this.el = el;
		}
		YAHOO.util.Event.addListener(this.el, 'focus', ICL.Web.TextBox.OnFocus);
		YAHOO.util.Event.addListener(this.el, 'blur', ICL.Web.TextBox.OnBlur);
	}

ICL.Web.TextBox.prototype.toString = 
	function()
	{
		return this.el.value;
	}

ICL.Web.TextBox.booleanAttribute = 
	function(el, attributeName, defaultValue)
	{
		var finalValue = defaultValue;
		var tagOverride = el.getAttribute(attributeName);
		
		if (ICL.Web.HasValue(tagOverride))
			finalValue = ICL.Web.Boolean(tagOverride);

		return finalValue;
	}

ICL.Web.TextBox.intAttribute = 
	function(el, attributeName, defaultValue)
	{
		var finalValue = defaultValue;
		var tagOverride = el.getAttribute(attributeName);
		
		if (ICL.Web.HasValue(tagOverride) && isFinite(parseInt(tagOverride)))
			finalValue = parseInt(tagOverride);

		return finalValue;
	}

ICL.Web.TextBox.stringAttribute = 
	function(el, attributeName, defaultValue)
	{
		var finalValue = defaultValue;
		var tagOverride = el.getAttribute(attributeName);
		
		if (ICL.Web.HasValue(tagOverride))
			finalValue = tagOverride;

		return finalValue;
	}

ICL.Web.TextBox.ClearSelection = 
	function(el)
	{
		if (typeof el == 'string') 
		{
			this.el = YAHOO.util.Dom.get(el);
		}
		else
		{
			this.el = el;
		}
		ICL.Web.Selection.clear(this.el);
	}

ICL.Web.TextBox.OnBlur = 
	function(e)
	{
		var el = YAHOO.util.Event.getTarget(e);
		
		// do not do anything if no value entered
		
		if (el.value == '') return true;

		// get field's attributes
		
		var lowerCase = ICL.Web.TextBox.booleanAttribute(el, 'lowercase', false);
		var upperCase = ICL.Web.TextBox.booleanAttribute(el, 'uppercase', false);
		var spaceLess = ICL.Web.TextBox.booleanAttribute(el, 'spaceless', false);

		// format data entered as necessary
		
		var finalValue = el.value;
		
		if (lowerCase) finalValue =finalValue.toLowerCase();	
		if (upperCase) finalValue =finalValue.toUpperCase();	
		if (spaceLess)
		{
			var re = /\s/g;
			var finalValue = finalValue.replace(re, '');
		}
		
		el.value = finalValue;
		return true;
		
	}

ICL.Web.TextBox.OnFocus = 
	function(e)
	{
		// automatically highlight text when the field gains focus
		YAHOO.util.Event.getTarget(e).select();
	}


