
function fnShowMMenu()
{
	var vh = document.body.clientHeight - 60;
	if( vh < 550 )
		vh = 550;

	document.writeln( "<td width=\"160\" class=\"eastdmenu\" nowrap height=\"" + vh + "\" bgcolor=\"#003366\" style=\"padding-left:8pt; padding-top:12pt\">" );
}

function fnHelp( name )
{
	var vh = window.screen.height - 100
	var vw = 400;
	var left = window.screen.width - vw - 20
	window.open( "/help/" + name, 
				"", 
				"height=" + vh + ",width=" + vw + ", top=0, left=" + left +", menubar=no,resizable=yes,scrollbars=yes,status=yes", 
				false );
}

function fnChangeTrBg( selected )
{
	if( selected.type != "checkbox" )
		return;
		
	var oTd, oTr;
	oTd = selected.parentNode;
	if( oTd == null )
		return;
	
	oTr = oTd.parentNode;
	if( oTr == null )
		return;
		
	if( oTr.tagName != "TR" )
		return;
	
	oTr.bgColor = ( selected.checked )?"#cccccc":"#ffffff";
}

function fnTrim( src, trimer )
{
	var len = src.length;
	var i = 0;
	if( len > 0 )
	{
		for( i = 0; i < len; i++ )
		{
			var ch = src.charAt(i);
			if( trimer.indexOf( ch ) == -1 )
			{
				break;
			}
		}
		src = src.substr(i);
	}
	
	len = src.length
	if( len > 0 )
	{
		for( i = len-1; i >=0; i-- )
		{
			var ch = src.charAt(i);
			if( trimer.indexOf( ch ) == -1 )
			{
				break;
			}		
		}
		
		src = src.substr(0, i+1);
	}
	return src;
}

function fnSearch( src, finder )
{
	var len = src.length;
	var i = 0;
	if( len > 0 )
	{
		for( i = 0; i < len; i++ )
		{
			var ch = src.charAt(i);
			if( finder.indexOf( ch ) != -1 )
			{
				return true;
			}
		}
	}

	return false;
}

function fnIsAscII( src, addition )
{
	var search = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	search += addition;
	var len = src.length;

	for( var i = 0; i < len; i++ )
	{
		var ch = src.charAt(i);
		if( search.indexOf( ch ) == -1 )
		{
			return false;
		}
	}
	
	return true;
}
function fnIsNumeric( src )
{
	var search = "0123456789";
	var len = src.length;
	if( len == 0 )
		return false;
		
	for( var i = 0; i < len; i++ )
	{
		var ch = src.charAt(i);
		if( search.indexOf( ch ) == -1 )
		{
			return false;
		}
	}	
	return true;
}

function fnIsIpAddr( src )
{
	if( src.length == 0 )
		return true;
		
	var search = "0123456789.*?:%abcdefABCDEF/";
	var len = src.length;
	for( var i = 0; i < len; i++ )
	{
		var ch = src.charAt(i);
		if( search.indexOf( ch ) == -1 )
		{
			return false;
		}
	}
			
	return true;
}

function fnLimiteIpAddr( o )
{
	if(!fnIsIpAddr( o.value ))
	{
		o.value = "";
		o.focus();
		alert("Ip address should be xxx.xxx.xxx.xxx");
		return false;
	}
	else
	{
		return true;
	}
}

function fnLimiteNumeric( o, minval, maxval, defaultval )
{
	var src = o.value;
	if(!fnIsNumeric(src))
	{
		o.value = defaultval;
		o.focus();
		alert( o.name + " must be unsigned integer!" );
		return false;
	}
	
	var n = parseInt( src )
	if( n < minval || n > maxval )
	{
		o.value = defaultval;
		o.focus();
		alert( o.name + " must be greater than " + minval + " and less than " + maxval );
		return false;
	}
	
	return true;
}

function fnReplace( s )
{
	window.location.replace( s );
}
