//String Object
String.prototype.trimStart = function(character)
{
	character = character || '\\s'
	var regExp = new RegExp('^' + character + '+','g');	
	return this.replace(regExp, '');
}
String.prototype.trimEnd = function(character)
{
	character = character || '\\s'
	var regExp = new RegExp('' + character + '+$','g');	
	return this.replace(regExp, '');
}	
String.prototype.trim = function(character)
{
	return this.trimStart(character).trimEnd(character)
}
String.prototype.isNullOrEmpty = function()
{
	return (this != null && this.length > 0);
}
String.prototype.contains = function(value)
{
	return this.indexOf(value) != -1;
}

String.prototype.extractAllNodes = function(nodes)
{
    var retVal = "";
    for(i=0; i<nodes.length; i++)
        retVal +=  nodes[i].nodeValue;
	return retVal;
}

var specialControlCodes = [8, 9, 13, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 46]

function TextUtil()
{
	if(typeof TextUtil.__initialized == 'undefined')
	{
		TextUtil.prototype.isControlCharacter = function(charCode)
		{
				var code = (isNaN(charCode) ? String(charCode).charCodeAt(0) : charCode)
				var result = false;
				for(i = 0; !result && i < specialControlCodes.length; i++)
					result = (code == specialControlCodes[i]);
					
				return result;
		}
		
		TextUtil.__initialized = true;
	}
}
var TextUtil = new TextUtil();

function checkIfKeyIsNumber(tb, evt, regFormat) 
{
	var code = (evt.keyCode ? evt.keyCode : evt.charCode);
	var result = TextUtil.isControlCharacter(code);
	if (!result) 
	{
		var c = String.fromCharCode(code);
		var reg = regFormat;
		result = reg.test(c);
	}
	return result;
}

function keyIsNumber(tb, evt)
{
	return checkIfKeyIsNumber(tb, evt, /\d/);
}

function keyIsWholeNumber(tb, evt) 
{
	for (var i = 0; i < specialControlCodes.length; i++) 
	{
		if (specialControlCodes[i] == 46)
			specialControlCodes[i] = -1;
	}		
	return checkIfKeyIsNumber(tb, evt, /([0-9])/);
}

