// JavaScript Document
/*==========
XMLHttpRequest兼容类
==========*/
/*
###cross-browser
这个地方,FF不支持VB
cross-browser###
*/
document.write( "<scr" + "ipt language=\"vbscript\" language=\"vbscript\">\n" )
document.write( "Function bytes2BSTR(vIn)\n" )
document.write( "strReturn = \"\"\n" )
document.write( "For i = 1 To LenB(vIn)\n" )
document.write( "ThisCharCode = AscB(MidB(vIn,i,1))\n" )
document.write( "If ThisCharCode < &H80 Then\n" )
document.write( "strReturn = strReturn & Chr(ThisCharCode)\n" )
document.write( "Else\n" )
document.write( "NextCharCode = AscB(MidB(vIn,i+1,1))\n" )
document.write( "strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))\n" )
document.write( "i = i + 1\n" )
document.write( "End If\n" )
document.write( "Next\n" )
document.write( "bytes2BSTR = strReturn \n" )
document.write( "End Function\n" )
document.write( "\n" )
document.write( "function JS_Len( s )\n" )
document.write( "JS_Len = len( s )\n" )
document.write( "end function\n" )
document.write( "<\/scri" + "pt>\n" )

function includeFile( url , _dom )
{
	var dom = typeof _dom == "object" ? _dom : null ;
	if( dom == null || typeof dom.innerHTML != "string" )
	{
		dom = null ;
	}
	var xmlObj = XMLHttp() ;
	xmlObj.open( "GET" , url , false );
	xmlObj.send();
	var code = xmlObj.responseText ;
	if( dom != null )
	{
		dom.innerHTML = code ;
		return ;
	}
	document.write( code )
}

if(!window.XMLHttpRequest)
{
//如果有XMLHttpRequest对象，赋给其版本属性值"XMLHttpRequest"
	XMLHttpRequest.prototype.version="XMLHttpRequest";
	function XMLHttp(){return new XMLHttpRequest}
}
else if(window.ActiveXObject)
{
//如果没有XMLHttpRequest对象，则可能是IE，通过try方法取得其版本，同时自定义XMLHttpRequest对象以通用化
/*
###advice
//注意try方法的版本问题
advice###
*/
	function XMLHttpRequest(){}
	try{
		new ActiveXObject("MSXML2.XMLHTTP.7.0");
		function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP.7.0");}
		XMLHttpRequest.prototype.version="MSXML2.XMLHTTP.7.0";
	}
	catch(e)
	{
		try{
			new ActiveXObject("MSXML2.XMLHTTP.6.0");
			function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP.6.0");}
			//XMLHttpRequest = function ()
			{
			//	this = new ActiveXObject("MSXML2.XMLHTTP.6.0");
			}
		}
		catch(e)
		{
			try{
				new ActiveXObject("MSXML2.XMLHTTP.5.0");
				function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP.5.0");}
				XMLHttpRequest.prototype.version="MSXML2.XMLHTTP.5.0";
			}
			catch(e)
			{
				try{
					new ActiveXObject("MSXML2.XMLHTTP.4.0");
					function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP.4.0");}
					XMLHttpRequest.prototype.version="MSXML2.XMLHTTP.4.0";
				}
				catch(e)
				{
					try{
						new ActiveXObject("MSXML2.XMLHTTP.3.0");
						function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP.3.0");}
						XMLHttpRequest.prototype.version="MSXML2.XMLHTTP.3.0";
					}
					catch(e)
					{
						try{
							new ActiveXObject("MSXML2.XMLHTTP.2.6");
							function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP.2.6");}
							XMLHttpRequest.prototype.version="MSXML2.XMLHTTP.2.6";
						}
						catch(e)
						{
							try{
								new ActiveXObject("MSXML2.XMLHTTP");
								function XMLHttp(){return new ActiveXObject("MSXML2.XMLHTTP");}
								XMLHttpRequest.prototype.version="MSXML2.XMLHTTP";
							}
							catch(e)
							{
								try{
									new ActiveXObject("Microsoft.XMLHTTP");
									function XMLHttp(){return new ActiveXObject("Microsoft.XMLHTTP");}
									XMLHttpRequest.prototype.version="Microsoft.XMLHTTP";
								}
								catch(e)
								{
									
								}
							}
						}
					}
				}
			}
		}
	}
}
//alert(XMLHttpRequest.readyState);
Function.prototype.inherits = function ( _child , _arguments )
{
	//用以实现在JS中的继承,并为子类增加一个_super对象的属性,用以引用基类
	//_super可以使子类很方便地实现重载父类的方法
	this.apply(_child,_arguments)
	
	_child.superObj = new Function() ;
	for( key in _child )
	{
		if( ( typeof _child[ key ] ) == "function" )
		{
			
			eval( "_child.superObj." + key + " = _child." + key + " ; "  )
		}
	}
}
String.prototype.trim   =   function()   {   
return   this.replace(/(^\s*)|(\s*$)/g,"");   
}   
function FEOtherHandler(__root,paraObj)
{
	var _this = this ;
	var _root = __root ;

	this.getXMLHTTP = function ()
	{
		/*得到新的xmlhttp对象*/
		
		return XMLHttp();
	}
	
	this.parseArray = function ( s )
	{
		/*解析地地址栏参数格式的字符串,并返回一个数组*/
		/*即解析a=1&b=&c=3这样的字符串*/
		/*
		将返回以下格式的数组:
		_array[ "a" ] = 1 ;
		_array[ "b" ] = 2 ;
		_array[ "c" ] = 3 ;
		*/
		var r = new Array() ;
		var theArray = s.split( "&" ) ;
		for( var i = 0 ; i < theArray.length ; i++ )
		{
			var theArray2 = theArray[ i ].split( "=" ) ;
			r[ theArray2[ 0 ] ] = unescape( theArray2[ 1 ] ) ;
		}
		return r ;
	}
	
	this.getVar = function ( _value , _default )
	{
		if( ( typeof _value ) == "undefined" )
		{
			return _default ;
		}
		return _value ;
	}

	this.getObjAttribute = function ( _Object , _name , _default )
	{
		//alert(this.getObjAttribute.caller)
		if( ( typeof _Object ) != "object" || _Object == null )
		{
			return _default ;
		}
		if( typeof _Object.getAttribute != "undefined" )
		{
			try
			{
				if( _Object.getAttribute( _name ) != null )
				{
					return 	_Object.getAttribute( _name ) ;
				}
			}
			catch(e){return _default}
		}
		if( ( typeof _Object[ _name ] ) !="undefined" )
		{
				return _Object[ _name ] ;
		}
		return _default ;
	}

	this.parseBool = function ( _value )
	{
		//待完善
		return eval( _value.toLowerCase() ) ;
	}
	
	this.isNumberStr = function ( n )
	{
		n += "" ;
		n = n.trim();
		if( n == "" )
		{
			return false ;	
		}
		return !isNaN( n )
	}

	this.isNumber = function ( n )
	{
		return ( ( typeof n ) == "number" )
	}
	
	this.cloneObj = function ( obj )
	{
		var newObj = new Array() ;
		for( i in obj )
		{
			newObj[ i ] = obj[ i ] ;	
		}
		return newObj ;
	}

	this.getDictionary = function ()
	{
		//返回一个字典对象,在IE中,将直接使用ActiveX控件
		//在FF,将使用自己封闭的字典对象
		//此函数有待完善,FF部分尚未实现
		//return new ActiveXObject("Scripting.Dictionary") ;
		return new FEDictionary() ;
	}
	
	this.getUndefinedName = function (  )
	{
		//根据时间,返回未使用过的变量名称
		//这并不能完全保证该变量名未被使用过,建议再加上Math.random()方法,或结合getUndefinedName函数使用
		var _time = new Date() ;
		var str = "" ;
		str += _getPrefixStr( _time.getYear() , 4 )
		str += _getPrefixStr( _time.getMonth() )
		str += _getPrefixStr( _time.getDay() )
		str += _getPrefixStr( _time.getHours() )
		str += _getPrefixStr( _time.getMinutes() )
		str += _getPrefixStr( _time.getSeconds() )
		return str ;
	}
	
	this.DateAdd = _DateAdd ;
	function _DateAdd(type,NumDay,dtDate)
	{
		var date = new Date(dtDate)
		lIntval = parseInt(NumDay)
		switch(type)
		{
			case "yyyy" :
				date.setYear(date.getYear() + lIntval)
				break;
			case "q" :
				date.setMonth(date.getMonth() + (lIntval * 3) )
				break;
			case "m" :
				date.setMonth(date.getMonth() + lIntval)
				break;
			case "d" :
				date.setDate(date.getDate() + lIntval)
				break
			case "h" :
				date.setHours(date.getHours() + lIntval)
				break
			case "n" :
				date.setMinutes(date.getMinutes() + lIntval)
				break
			case "s" :
				date.setSeconds(date.getSeconds() + lIntval)
				break;
			default:
		} 
		return date ;
	}
	
	this.getPrefixStr = _getPrefixStr;
	function _getPrefixStr( _n , _length )
	{
		//此函数为getUndefinedName函数服务
		var length = 2 ;
		if( ( typeof _length ) != "undefined" )
		{
			length = _length ;
		}
		var n = new Number( _n ) ;
		var _min = Math.pow( 10 , length - 1 ) ;
	
		if( n >= _min )
		{
			return n.toString() ;
		}
		else if( n >=0 && n < _min )
		{
			var str = n.toString() ;
			var _max = length - str.length ;
			for( var i = 0 ; i < _max ; i++ )
			{
				str = "0" + str ;
			}
			return str ;
		}
		else
		{
			return 0 ;
		}
	}
	this.getDateStr = _getDateStr ;
	function _getDateStr( _d )
	{
		if( ( typeof _d ) == "string" )
		{
			_d = new Date( _d );
		}
		return _d.getYear()+"-"+(_d.getMonth()+1)+"-"+_d.getDate()+" "+_d.getHours()+":"+_d.getMinutes()+":"+_d.getSeconds();
	}
	this.flashChecker = _flashChecker ;
	function _flashChecker()
	{
	//Powered By smvv @hi.baidu.com/smvv21
		var hasFlash=false;         //ÊÇ·ñ°²×°ÁËflash
		var flashVersion=0; //flash°æ±¾
		var isIE=/*@cc_on!@*/false;      //ÊÇ·ñIEä¯ÀÀÆ÷
		return {f:true,v:9};
		if(isIE)
		{
			var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
			if(swf)
			{
			hasFlash=true;
			VSwf=swf.GetVariable("$version");
			flashVersion=parseInt(VSwf.split(" ")[1].split(",")[0]); 
			}
		}
		else
		{
			if (navigator.plugins && navigator.plugins.length > 0)
			{
				var swf=navigator.plugins["Shockwave Flash"];
				if (swf)
				 {
					hasFlash=true;
					var words = swf.description.split(" ");
					for (var i = 0; i < words.length; ++i)
					{
								if (isNaN(parseInt(words[i]))) continue;
								flashVersion = parseInt(words[i]);
					}
				}
			}
		}
		return {f:hasFlash,v:flashVersion};
	}
	
}
function FEDictionary()
{
	this.Add = _Add ;
	this.Exists = _Exists ;
	this.Items = _Items ;
	this.Keys = _Keys ;
	this.Remove = _Remove ;
	this.RemoveAll = _RemoveAll ;
	this.Item = _Item ;
	this.Key = _key ;
	this.setValue = _setValue ;
	this.setKey = _setKey ;

	this.Count = 0 ;

	var varData = new Array() ;

	function _Add( key , item )
	{
		if( ( typeof varData[ key ] ) != "undefined" )
		{
			return false ;
		}
		varData[ key ] = item ;
		this.Count++ ;
		return true ;
	}

	function _Exists( key )
	{
		if( ( typeof varData[ key ] ) != "undefined" )
		{
			return true ;
		}	
		return false ;
	}

	function _Items()
	{
		var list = new Array() ;
		for( i in varData )
		{
			list[ list.length ] = varData[ i ] ;
		}
		return list ;
	}

	function _Keys()
	{
		var list = new Array() ;
		for( i in varData )
		{
			list[ list.length ] = i ;
		}
		return list ;	
	}

	function _Remove( key )
	{
		if( !this.Exists( key ) )
		{
			return null ;
		}
		var the = varData[ key ] ;
		this.Count-- ;
		delete varData[ key ] ;
		return the ;
	}

	function _RemoveAll()
	{
		for( i in varData )
		{
			delete varData[ i ] ;
		}
		this.Count = 0 ;
	}

	function _Item( key )
	{
		if( !this.Exists( key ) )
		{
			return null ;
		}
		return varData[ key ] ;
	}

	function _key()
	{
	}

	function _setValue( key , value , _createFlag )
	{
		var createFlag = false ;
		if( ( typeof _createFlag ) != "undefined" )
		{
			createFlag = _createFlag ;
		}
		if( this.Exists( key ) && !createFlag )
		{
			return false ;
		}
		varData[ key ] = value ;
		return true ;
	}

	function _setKey( key , newKey )
	{
		if( !this.Exists( key ) || this.Exists( newKey ) )
		{
			return false ;
		}
		varData[ newKey ] = varData[ key ] ;
		delete varData[ key ] ;
	}
}