function SF_Util()
{
	///////////////////////////////////////////////////////////////////////////
	//	Constants

	var c_nKeyCodeF1 = 112;
	var c_nKeyCodeF12 = 123;
	var c_nKeyCode0 = 48;
	var c_nKeyCode9 = 57;
	var c_nKeyCodeA = 65;
	var c_nKeyCodeZ = 90;
	
	var c_nKeyCodeTab   = 9;
	var c_nKeyCodeEnter = 13;
	var c_nKeyCodeEsc   = 27;
		
	var c_nKeyPageUp		= 33;
	var c_nKeyPageDown		= 34;
	var c_nKeyEnd			= 35;
	var c_nKeyHome			= 36;	
	var c_nKeyLeftArrow		= 37;
	var c_nKeyUpArrow		= 38;
	var c_nKeyRightArrow	= 39;
	var c_nKeyDownArrow		= 40;
	
	
	///////////////////////////////////////////////////////////////////////////
	//	String utils
	
	this.IsTrue = function( sVal )
	{
		var bRet = false;

		if ("boolean" == typeof( sVal ))
		{
			bRet = sVal;
		}
		else if (null != sVal && sVal.length > 0)
		{
			var ch = sVal.toLowerCase().charAt(0);
			if( ch == "t" || ch == "y" || ch == "1" )
			{
				bRet = true;
			}
		}

		return bRet;
	}
	
	///////////////////////////////////////////////////////////////////////////
	//	General
	
	this.PostExec = function( fn, oData )
	{
		function fnPostHandler()
		{	
			fn( oData );
		}

		return window.setTimeout( fnPostHandler, 0 );
	}
	
	/////////////////////////////////////////////////////////////////////////
	//	Keyboard utils
	
	this.IsDigitOrLetterKey = function( code )
	{
		return (( c_nKeyCode0 <= code )&&( c_nKeyCode9 >= code )) ||
				(( c_nKeyCodeA <= code )&&( c_nKeyCodeZ >= code ));
	}
	
	this.IsFunctionKey = function( code )
	{
		return ( c_nKeyCodeF1 <= code )&&( c_nKeyCodeF12 >= code );
	}
	
	this.IsEnterKey = function( code )
	{
		return ( c_nKeyCodeEnter == code )
	}
	
	this.IsEscKey = function( code )
	{
		return ( c_nKeyCodeEsc == code )
	}
	
	this.IsTabKey = function( code )
	{
	    return ( c_nKeyCodeTab == code )
	}
	
	this.GetFnKeyStr = function( code )
	{
		var s = "F" + (code - c_nKeyCodeF1 + 1 );
	}	
	
	this.IsNavigationKey = function( code )
	{
		return ( c_nKeyPageUp <= code )&&( c_nKeyDownArrow >= code );
	}
	
	this.IsUpArrowKey = function( code )
	{
		return ( c_nKeyUpArrow == code );
	}
	
	this.IsLeftArrowKey = function( code )
	{
		return ( c_nKeyLeftArrow == code );
	}
	
	this.IsRightArrowKey = function( code )
	{
		return ( c_nKeyRightArrow == code );
	}
	
	this.IsDownArrowKey = function( code )
	{
		return ( c_nKeyDownArrow == code );
	}
	
	this.IsPageUpKey = function( code )
	{
		return ( c_nKeyPageUp == code );
	}
	
	this.IsPageDownKey = function( code )
	{
		return ( c_nKeyPageDown == code );
	}
	
	this.IsHomeKey = function( code )
	{
		return ( c_nKeyHome == code );
	}
	
	this.IsEndKey = function( code )
	{
		return ( c_nKeyEnd == code );
	}
	
}

