﻿// 声明一个全局对象Namespace，用来注册命名空间
Namespace = new Object();
// 全局对象仅仅存在register函数，参数为名称空间全路径，如"Grandsoft.GEA"
Namespace.register = function(fullNS)

{

   // 将命名空间切成N部分, 比如Grandsoft、GEA等

   var nsArray = fullNS.split('.');

   var sEval = "";

   var sNS = "";

   for (var i = 0; i < nsArray.length; i ++ )

   {

      if (i != 0) sNS += ".";

      sNS += nsArray[i];

      // 依次创建构造命名空间对象（假如不存在的话）的语句

      // 比如先创建Grandsoft，然后创建Grandsoft.GEA，依次下去

      sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"

   }

   if (sEval != "") eval(sEval);

}

var isIE = ! ! window.ActiveXObject;
var isXML3 = false;
function GetDomObj()
{
   var srcDoc;
   if(isIE)
   {
      try
      {
         srcDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
      }
      catch(ex)
      {
         srcDoc = new ActiveXObject("Msxml.DOMDocument");
         isXML3 = true;
      }
   }
   else
   srcDoc = document.implementation.createDocument("", "", null);
   srcDoc.async = false;
   return srcDoc;
}
function LoadXml(srcXml)
{
   var srcDoc;
   if(isIE)
   {
      srcDoc = GetDomObj();
      srcDoc.loadXML(srcXml);
   }
   else
   {
      var oParser = new DOMParser();
      srcDoc = oParser.parseFromString(srcXml, "text/xml");
      srcDoc.async = "false";
   }
   return srcDoc;
}
if( ! isIE)
{
   XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
   {
      if( ! xNode )
      {
         xNode = this;

      }
      var oNSResolver = this.createNSResolver(this.documentElement)
      var aItems = this.evaluate(cXPathString, xNode, oNSResolver,
      XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
      var aResult = [];
      for( var i = 0; i < aItems.snapshotLength;
      i ++ )
      {
         aResult[i] =  aItems.snapshotItem(i);
      }
      return aResult;
   }
   // prototying the Element
   Element.prototype.selectNodes = function(cXPathString)
   {
      if(this.ownerDocument.selectNodes)
      {
         return this.ownerDocument.selectNodes(cXPathString, this);
      }
      else
      {
         throw "For XML Elements Only";
      }
   }

   // prototying the XMLDocument
   XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
   {
      if( ! xNode )
      {
         xNode = this;

      }
      var xItems = this.selectNodes(cXPathString, xNode);
      if( xItems.length > 0 )
      {
         return xItems[0];
      }
      else
      {
         return null;
      }
   }
   // prototying the Element
   Element.prototype.selectSingleNode = function(cXPathString)
   {
      if(this.ownerDocument.selectSingleNode)
      {
         return this.ownerDocument.selectSingleNode(cXPathString, this);
      }
      else
      {
         throw "For XML Elements Only";
      }
   }

   XMLDocument.prototype.transformNode = function(styleDocument)
   {
      var xslProc = new XSLTProcessor();
      xslProc.importStylesheet(styleDocument);
      // alert(styleDocument.xml);
      var mDoc = xslProc.transformToFragment(this, document);
      return mDoc.xml;
   }
   Element.prototype.transformNode = function(styleDocument)
   {
      var xslProc = new XSLTProcessor();
      xslProc.importStylesheet(styleDocument);
      // alert(styleDocument.xml);
      // var mDoc = xslProc.transformToDocument(xDoc);
      var mDoc = xslProc.transformToFragment(this, document);
      return mDoc.xml;
   }

   XMLDocument.prototype.__defineGetter__("xml", function()
   {
      var xmlStr;
      try
      {
         xmlStr = new XMLSerializer().serializeToString(this);
      }
      catch(ex)
      {
         var d = document.createElement( " div " );
         d.appendChild(this.cloneNode( true ));
         xmlStr = d.innerHTML;
      }
      var re = / encoding=\"UTF-8\"/g
      xmlStr = xmlStr.replace(re, "");
      return xmlStr;
   }
   );
   Element.prototype.__defineGetter__("xml", function()
   {
      var xmlStr;
      try
      {
         xmlStr = new XMLSerializer().serializeToString(this);
      }
      catch(ex)
      {
         var d = document.createElement( " div " );
         d.appendChild(this.cloneNode( true ));
         xmlStr = d.innerHTML;
      }
      var re = / encoding=\"UTF-8\"/g
      xmlStr = xmlStr.replace(re, "");
      return xmlStr;
   }
   );
   DocumentFragment.prototype.__defineGetter__("xml", function()
   {
      var xmlStr;
      try
      {
         xmlStr = new XMLSerializer().serializeToString(this);
      }
      catch(ex)
      {
         var d = document.createElement( " div " );
         d.appendChild(this.cloneNode( true ));
         xmlStr = d.innerHTML;
      }
      var re = / encoding=\"UTF-8\"/g
      xmlStr = xmlStr.replace(re, "");
      return xmlStr;
   }
   );

   XMLDocument.prototype.__defineGetter__("text", function()
   {
      return this.firstChild.textContent;
   }
   );
   Element.prototype.__defineGetter__("text", function()
   {
      return this.textContent;
   }
   );
}

/*
 * 描述：跨浏览器的设置 innerHTML 方法
 * 允许插入的 HTML 代码中包含 script 和 style
 */
var setInnerHTML = function (el, htmlCode)
{
   var ua = navigator.userAgent.toLowerCase();
   if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0)
   {
      htmlCode = '<div style="display:none">for IE</div>' + htmlCode;
      htmlCode = htmlCode.replace(/<script([^>]*)>/gi,
      '<script$1 defer="true">');
      el.innerHTML = htmlCode;
      el.removeChild(el.firstChild);
   }
   else
   {
      var el_next = el.nextSibling;
      var el_parent = el.parentNode;
      el_parent.removeChild(el);
      el.innerHTML = htmlCode;
      if (el_next)
      {
         el_parent.insertBefore(el, el_next)
      }
      else
      {
         el_parent.appendChild(el);
      }
   }
}


function CreatAjaxObj()
{
   var ajaxObj = null ;
   try
   {
      ajaxObj = new XMLHttpRequest();
   }
   catch ( trymicrosoft )
   {
      try
      {
         ajaxObj = new ActiveXObject( "Msxml2.XMLHTTP" );
      }
      catch ( othermicrosoft )
      {
         try
         {
            ajaxObj = new ActiveXObject( "Microsoft.XMLHTTP" );
         }
         catch ( failed )
         {
            ajaxObj = null;
         }
      }
   }
   if (ajaxObj == null )
   {
      alert( "Error initializing XMLHttpRequest!" );
   }
   else
   {
      return ajaxObj;
   }
}

function addOnloadEvent(fnc)
{
   if ( typeof window.addEventListener != "undefined" )
   window.addEventListener( "load", fnc, false );
   else if ( typeof window.attachEvent != "undefined" )
   {
      window.attachEvent( "onload", fnc );
   }
   else
   {
      if ( window.onload != null )
      {
         var oldOnload = window.onload;
         window.onload = function ( e )
         {
            oldOnload( e );
            window[fnc]();
         }
         ;
      }
      else
      window.onload = fnc;
   }
}
/* 例子：现在添加多个需要加载的函数 : addOnloadEvent(initSlideShow); addOnloadEvent(ReImgSize); */

