function ClientBrowser(){
	var ClientInfo = window.clientInformation;
	var Version = ClientInfo.appVersion;
	if (Version.length>3)
	{
		var ClientVer = Version.substring(0,2);
		var intStart = Version.indexOf("(");
		var intEnd = Version.indexOf(")");
		var VerArray;
		if (intStart>-1 && intEnd>-1 && intEnd>intStart){
			var strTemp = Version.substring(intStart, intEnd);
			VerArray = strTemp.split(";");
		}
		if (VerArray.length>=3)
		{
			return{
				Client: ClientVer,
				PlatForm: VerArray[0],
				IEVersion: VerArray[1],
				OSVersion: VerArray[2]
			};
		} else {
			return{
				Client: ClientVer,
				PlatForm: null,
				IEVersion: null,
				OSVersion: null
			};
		}
	} else {
		return{
			Client: ClientVer,
			PlatForm: null,
			IEVersion: null,
			OSVersion: null
		};
	}
}

//*********************************************************************************
//    COMMENT: Get version's name.
//    AUTHOR:  Li Fubang 2005-04-08
//    INPUT:   Version (String)
//    OUTPUT:  AppName (String)
//    MODIFY LIST:
//    
//*********************************************************************************
function GetAppName(strString){
	if (strString.length>4)
	{
		return strString.substring(0, strString.length-4);
	}
	else {
		return null;
	}
}

//*********************************************************************************
//    COMMENT: Get version's version number.
//    AUTHOR:  Li Fubang 2005-04-08
//    INPUT:   Version (String)
//    OUTPUT:  Version Number (Float)
//    MODIFY LIST:
//    
//*********************************************************************************
function GetVersion(strString){
	if (strString.length>4)
	{
		return parseFloat(strString.substring(strString.length-4, strString.length));
	}
	else {
		return 0;
	}
}

//*********************************************************************************
//    COMMENT: Get object's rect
//    AUTHOR:  Li Fubang 2005-04-08
//    INPUT:   Object (Object)
//    OUTPUT:  Object with propertys "Left, Top, Width, Height"
//    MODIFY LIST:
//    
//*********************************************************************************
function GetClientRect(Obj){
	var ol;
	var ot;
	var ow;
	var oh;
	var strConstEnd = "BODY"
	
	var el = Obj;
	ol = 0;
	ot = 0;
	while(el.tagName.toUpperCase()!="BODY"){
		ot += el.offsetTop+el.clientTop;
		ol += el.offsetLeft+el.clientLeft;
		el=el.offsetParent;
	}
	ow = parseInt(Obj.offsetWidth);
	oh = parseInt(Obj.offsetHeight);
	return{
		Left: ol,
		Top: ot,
		Width: ow,
		Height: oh
	};
}

//*********************************************************************************
//    COMMENT: Display the div with attribute, other's with the same attribute hidde
//    AUTHOR:  Li Fubang 2005-04-08
//    INPUT:   Attribute's name (String), Attribute's value (String), Div's name (String)
//    OUTPUT:  NOTHING
//    MODIFY LIST:
//    
//*********************************************************************************
function DisplayOnlyDivByAttribute(strAttributeName, strAttributeValue, strOnlyDiv){
	var Divs = document.body.getElementsByTagName('DIV');
	for (var intFor=0; intFor<Divs.length; intFor++)
	{
		if (Divs(intFor).getAttribute(strAttributeName)==strAttributeValue)
		{
			if (Divs(intFor).getAttribute('NAME')==strOnlyDiv)
			{
				Divs(intFor).style.visibility = 'visible';
				Divs(intFor).focus();
			}
			else {
				Divs(intFor).style.visibility = 'hidden';
				Divs(intFor).style.top = 0;
				Divs(intFor).style.left = 0;
			}
		}
	}
}


//*********************************************************************************
//    COMMENT: Event's source element's parent by attribute
//    AUTHOR:  Li Fubang 2005-04-08
//    INPUT:   Attribute's name (String), Attribute's value (String)
//    OUTPUT:  boolean
//    MODIFY LIST:
//    
//*********************************************************************************
function WindowEventSrcElementByAttribute(strAttributeName, strAttributeValue){
	var boolRet = false;
	if (arguments.length>0)
	{
		var Source = window.event.srcElement;
		var Split = " "
		var Filter = Split;
		var strConstEnd = "BODY"
		for (var intFor=1; intFor<arguments.length; intFor++)
		{
			Filter = Filter+arguments[intFor]+Split;
		}
		while (!boolRet && Source && (Source.tagName.toUpperCase()!="BODY"))
		{
			if (Filter.indexOf(Source.getAttribute(strAttributeName))>-1)
			{
				boolRet = true;
			} else {
				Source = Source.offsetParent;
			}
		}
	}
	return boolRet;
}
function ImportJS(Doc, JsSrc){
	var el = Doc.createElement( "script" );
	el.setAttribute( "type", "text/javascript" );
	el.setAttribute( "src", JsSrc);
	Doc.getElementsByTagName( "head" )[ 0 ].appendChild( el );	
}
