﻿// JScript 文件

var _isIe = navigator.appName == "Microsoft Internet Explorer" ? true : false;

LocalTimeZone();
//===========================================================================================
/// <summary>设置本地的现在时区</summary>
function LocalTimeZone()
{
    var date = new Date();
    var timeZone = date.getTimezoneOffset();
    var s = timeZone != 0 ? timeZone / 60 : 0;
    //document.cookie = "uo="+ s +"; path=/";
    SetCookie("uo",s,365);
}
//===========================================================================================

//===========================================================================================
/// <summary>设置界面语言</summary>
/// <param name="language">语言代号</param>
/// <returns>无</returns>

//===========================================================================================
function BuildCulture(language,domain)
{
    document.cookie = "Language=" +language+";domain="+domain;
}
//===========================================================================================
/// <summary>与当前时间比较</summary>
/// <param name="compareDate">比较时间。</param>
/// <param name="endDate">结束时间。</param>
/// <returns>bool类型，如果大于当前时间返回true；否则返回false；</returns>
function compareCurrentDate(compareDate)
{
    var compareResult = false;   
	var currentDate = new Date();
	var i = Number(compareDate.substring(0,4)) - Number(currentDate.getYear());
	var j = Number(compareDate.substring(5,7)) - Number(currentDate.getMonth()) - 1;
	var k = Number(compareDate.substring(8,10)) - Number(currentDate.getDate());
	var m = Number(compareDate.substring(11,13)) - Number(currentDate.getHours());
	var n = Number(compareDate.substring(14,16)) - Number(currentDate.getMinutes());
	
	if ( i != 0)
	{
	    compareResult = i > 0 ? true : false;
	}
	else if (j != 0)
	{
	    compareResult = j > 0 ? true : false;
	}
	else if (k != 0)
	{
	    compareResult = k > 0 ? true : false;
	}
	else if (m != 0)
	{
	    compareResult = m > 0 ? true : false;
	}
	else if (n != 0)
	{
	    compareResult = n > 0 ? true : false;
	}
	else
	{
	    compareResult = true;
	}
	
	return compareResult;
}
//===========================================================================================


//===========================================================================================
/// <summary>比较时间</summary>
/// <param name="beginDate">开始时间。</param>
/// <param name="endDate">结束时间。</param>
/// <returns>bool类型，如果beginDate大于endDate返回true；否则返回false；</returns>
function compareDate(beginDate, endDate)
{
    var compareResult = false;   
	
	var i = Number(beginDate.substring(0,4)) - Number(endDate.substring(0,4));
	var j = Number(beginDate.substring(5,7)) - Number(endDate.substring(5,7));
	var k = Number(beginDate.substring(8,10)) - Number(endDate.substring(8,10));
	var m = Number(beginDate.substring(11,13)) - Number(endDate.substring(11,13));
	var n = Number(beginDate.substring(14,16)) - Number(beginDate.substring(14,16));
	
	if ( i != 0)
	{
	    compareResult = i > 0 ? true : false;
	}
	else if (j != 0)
	{
	    compareResult = j > 0 ? true : false;
	}
	else if (k != 0)
	{
	    compareResult = k > 0 ? true : false;
	}
	else if (m != 0)
	{
	    compareResult = m > 0 ? true : false;
	}
	else if (n != 0)
	{
	    compareResult = n > 0 ? true : false;
	}
	else
	{
	    compareResult = true;
	}
	
	return compareResult;
}
//===========================================================================================




//===========================================================================================
/// <summary>获取当前页面上的指定ID的对象。</summary>
/// <param name="id">指定ID。</param>
/// <returns>object，页面上指定ID的对象。</returns>
function $(id)
{
   return document.getElementById ? document.getElementById(id) : null;
}
//===========================================================================================


//===========================================================================================
/// <summary>获取当前页面Top页面上指定ID的对象。</summary>
/// <param name="id">指定ID。</param>
/// <returns>object，页面上指定ID的对象。</returns>
function T$(id)
{
    return top.document.getElementById ? top.document.getElementById(id) : null;
}
//===========================================================================================

//===========================================================================================
/// <summary>获取当前页面父页面上指定ID的对象。</summary>
/// <param name="id">指定ID。</param>
/// <returns>object，页面上指定ID的对象。</returns>
function P$(id)
{
    return parent.document.getElementById ? parent.document.getElementById(id) : null;
}
//===========================================================================================



//===========================================================================================
/// <summary>
/// 获取制定编号的控件对象。
/// </summary>
/// <param name="objectId">控件ID号。</param>
/// <param name="objectType">控件类型。</param>
/// <returns>返回当前选中的值。</returns>
function _getObj(objectId, objectType)
{
    var object = null;
    var coll = document.all;
    if(coll != null)
    {
        for(i = 0; i < coll.length; i++)
        {
            if (coll.item(i).tagName.toLowerCase() == objectType.toLowerCase())
            { 
                if (coll.item(i).id.length >= objectId.length)
                {
                    if (coll.item(i).id.substring(coll.item(i).id.length - objectId.length, coll.item(i).id.length).toLowerCase() == objectId.toLowerCase())
                    {
                        object = coll.item(i);
                        break;
                    }
                }
            }
        }
    }
    return object;
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 获取制定编号的RadioButtonList的值。
/// </summary>
/// <param name="objectId">控件ID号。</param>
/// <returns>返回当前选中的值。</returns>
function GetRadioButtonListValue(objectId)
{
    var value = 0;
    var coll = document.all;
    if (coll != null)
    {
        for (i = 0; i < coll.length; i++)
        {
            if (coll.item(i).type == "radio")
            {
                if (coll.item(i).id.toLowerCase().indexOf(objectId.toLowerCase()) >= 0)
                {
                    if (coll.item(i).checked == true) { value = coll.item(i).value; break; }
                }
            }
        }
    }
    return value;
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 获取制定编号的DropDownList的值。
/// </summary>
/// <param name="objectId">控件ID号。</param>
/// <returns>返回当前选中的值。</returns>
function GetDropDownListType(objectId)
{
    var value = 0;
    var coll = document.all;
    if (coll != null)
    {
        for (i = 0; i < coll.length; i++)
        {
            if (coll.item(i).tagName.toLowerCase() == "select")
            {
                if (coll.item(i).id.toLowerCase().indexOf(objectId.toLowerCase()) >= 0)
                {
                    value = coll.item(i).options[coll.item(i).selectedIndex].value;
                    break;
                }
            }
        }
    }
    return value;
}
//===========================================================================================


//===========================================================================================
/// <summary>
/// The handle for document submit event.
/// 是否提交的句柄函数。
/// </summary>
/// <param name="value">is submit. if "true" then submit document form.</param>
function submitHandle(value)
{
    if (!value)
    {
        $("aspnetForm").onsubmit = function stopSubmit(){ return false;}
    }
    else
    {
        $("aspnetForm").onsubmit = function stopSubmit(){ }
    }
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// Retrieve the value of the cookie with the specified name.
/// 根据指定的名称获取cookie值。
/// </summary>
/// <param name="sName">指定的cookie名称</param>
function GetCookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return null;
}

//function GetCookie(name)
//{
//    var nameEQ = name + "=";
//    var ca = document.cookie.split(';');
//    for(var i=0;i < ca.length;i++)
//    {
//    var c = ca[i];
//    while (c.charAt(0)==' ') c = c.substring(1,c.length);
//    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
//    }
//    return null;
//}
//===========================================================================================

//===========================================================================================
/// <summary>
/// Set the value of the cookie with the specified name.
/// 设定cookie值。
/// </summary>
/// <param name="name">指定的cookie名称</param>
/// <param name="value">要保存在cookie里的值</param>
/// <param name="days">cookie有效的天数</param>
function SetCookie(name,value,days)
{
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"=" + value + expires + "; path=/";
}

//===========================================================================================


//===========================================================================================
/// <summary>
/// Delete the value of the cookie with the specified name.
/// 根据指定的名称删除cookie值。
/// </summary>
/// <param name="name">指定的cookie名称</param>
function delCookie(name)
{
    var exp = new Date();
    exp.setTime (exp.getTime() - 1);
    var cval = GetCookie (name);
    document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 当选项值无效时，默认选第一项
/// </summary>
/// <param name="obj">选择控件对象</param>
function ValidSelected(obj)
{
    if(obj.value == -1)
    {
        obj.options[0].selected = true;//; alert("error");
    }
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 清除字符串两端的空格
/// </summary>
/// <param name="s">要处理的字符串</param>
function Trim(s)
{
  return(s.replace(/(^\s+|\s+$)/g,''));
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 限制文本输入框的文字长度
/// </summary>
/// <param name="obj">文本输入框的对象实例</param>
/// <param name="count">限制的字符长度</param>
function CheckTextNum(obj,count)
{
    obj.focus();
	var  slct = document.selection;  
 	var  rng = slct.createRange();//obj.createTextRange();  
	obj.select();
	rng.setEndPoint("StartToStart", slct.createRange()); 
    var cursor = rng.text.length; 
    rng.collapse(false); 
    rng.select();

	if(obj.innerHTML.length>count)
	{
	    var overLength = (obj.innerHTML.length - count);
	    var strart = cursor-overLength;
		var result = obj.innerHTML.substring(0, strart);
		result += obj.innerHTML.substring(cursor, obj.innerHTML.length);
		obj.innerHTML = result;		
	}
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 生成验证码
/// </summary>
function CheckCode(attachObjName)
{
	var numkey = Math.random();
	numkey = Math.round(numkey*10000);
	var Obj = document.getElementById(attachObjName);
	Obj.innerHTML = "<img src=\"/Common/CheckCode.aspx?numkey=" + numkey +"\">";
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// button当作链接
/// </summary>
function ELSLinkButton_OnClientClick(url)
{
    location.href=url;
    return false;
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 设置Repeater中一组RadioButton单选
/// </summary>
function SetUniqueRadioButton(nameregex, current)
{
   re = new RegExp(nameregex);
   for(i = 0; i < document.forms[0].elements.length; i++)
   {
      elm = document.forms[0].elements[i]
      if (elm.type == 'radio')
      {
         if (re.test(elm.name))
         {
            elm.checked = false;
         }
      }
   }
   current.checked = true;
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 显示遮罩层时隐藏掉不能被遮住的html控件
/// </summary>
function hideElement(elmID)
{
	if(document.all) 
	{
		for(i = 0; i < document.all.tags( elmID ).length; i++) 
		{
			obj = document.all.tags( elmID )[i];
			if(!obj||obj.style.display=="none"||obj.className.toLowerCase()) continue;
			obj.parentNode.firstChild.innerText=obj.options[obj.selectedIndex].text;
			obj.style.visibility  = "hidden";
		}
	}
}
//===========================================================================================

//===========================================================================================
/// <summary>
/// 隐藏遮罩层时显示隐藏的不能被遮住的html控件
/// </summary>
function showElement(elmID) 
{
	if(document.all) 
	{
		for(i = 0; i < document.all.tags( elmID ).length; i++)
		 {
			obj = document.all.tags(elmID)[i];
			if(!obj) continue;
			obj.parentNode.firstChild.innerText="";
			obj.style.visibility = "";
		}
	}
}
//===========================================================================================
//
var isIE; 
var isNav; 
isIE = (navigator.appName == "Microsoft Internet Explorer"); 
isNav = (navigator.appName == "Netscape"); 
function TransformXml(xslUrl,xmlUrl)
{
	try
	{
		if (isIE) 
		{ 
			var xml = new ActiveXObject("Microsoft.XMLDOM") 
			xml.async = false 
			xml.load(xmlUrl) 
			if(xml.text=="")
			{
				return "";
			}
			var xsl = new ActiveXObject("Microsoft.XMLDOM") 
			xsl.async = false 
			xsl.load(xslUrl) 

			return xml.transformNode(xsl);
		} 
		else if(isNav) 
		{ 
			var processor = new XSLTProcessor(); 
			var xslt = document.implementation.createDocument("", "", null); 
			xslt.async = false; 
			xslt.load(xslUrl); 
			processor.importStylesheet(xslt); 

			var src_doc = document.implementation.createDocument("","", null); 
			src_doc.async = false; 
			src_doc.load(xmlUrl); 
			var result = processor.transformToDocument(src_doc); 
			var xmls = new XMLSerializer(); 
			return xmls.serializeToString(result); 
		}
	}catch(e)
	{
		return "";
	}
}


function findNodeByIdx(nodes, index)
{
    var intCount = 0;
    for(var i = 0; i < nodes.length; i++)
    {
        if(nodes[i].nodeType != 3)
        {
            intCount += 1;
            if(intCount == index)
            {
                return nodes[i];
            }
        }
    }
}


//===========================================================================================
/// <summary>切换面板</summary>
/// <param name="obj">当前点击的菜单项</param>
/// <param name="showIndex">点击后显示的内容层位置索引，从0起</param>
/// <param name="containerIdx">内容容器标识</param>
/// <param name="showClassName">当前菜单项样式名</param>
/// <param name="hideClassName">非激活菜单项样式名</param>
/// <returns>无</returns>
function showDiv(obj, showIndex, containerIdx, showClassName, hideClassName)
{    
    var count = 0;
    
    // 修改li的样式    
    var lis = obj.parentNode.childNodes;
    var startIndex = _isIe ? 0 : 1;    
    
    for(var i = startIndex; i < lis.length; i++)    
    {
        if(lis[i].nodeType != 3)
        {   
            lis[i].className = hideClassName;
        }
    }
    
    obj.className = showClassName;
    
    // 控制内容层的显示
    var content = document.getElementById(containerIdx);
    if(content != null)
    {
        var contentDivs = content.childNodes;

        for(var j = startIndex ; j < contentDivs.length; j++)
        {       
            // 查找有效节点    
            if(contentDivs[j].nodeType != 3)
            {   
                if(count == showIndex)
                {
                    contentDivs[j].style.display = "";
                }
                else
                {
                    contentDivs[j].style.display = "none";
                }            
                count++;
            }        
        }
    }
}
//===========================================================================================


/// <summary>创建xml对象</summary>
/// <returns>返回创建成功的xml对象</returns>
function createDomDoc()
{        
    if(_isIe)
    {
        var signatures=["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","Msxml2.DOMDocument","Microsoft.XmlDom"];
	    for(var i=0;i<signatures.length;i++){try{ this.domDoc=new ActiveXObject(signatures[i]);return this.domDoc;}catch(e){}}
	    return null;
	}
	else
	{
	    return document.implementation.createDocument("","",null);
	}
}

/// <summary>根据xpath取符合条件的节点集合</summary>
/// <param name="domDoc">xml对象</param>
/// <param name="xpath">xpath语句</param>
/// <returns>返回符合条件的节点集合</returns>
function selectNodes(domDoc, xpath)
{
    if (_isIe)
		return domDoc.selectNodes(xpath) ;
	else{
		var aNodeArray = new Array();
		var xPathResult = domDoc.evaluate(xpath, domDoc, domDoc.createNSResolver(domDoc.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
		if (xPathResult){
			var oNode = xPathResult.iterateNext() ;
			while(oNode){
				aNodeArray[aNodeArray.length] = oNode ;
				oNode = xPathResult.iterateNext();
			}
		}
		return aNodeArray ;
	}
}

/// <summary>返回xml对象的内容字符串</summary>
/// <param name="domDoc">xml对象</param>
/// <returns>返回xml对象的内容字符串</returns>
function lookXml(domDoc){
	if(_isIe){return domDoc.xml;}
	else{
		var serializer=new XMLSerializer();
		var xml=serializer.serializeToString(domDoc);
		return xml;
	}
}

/// <summary>根据url异步加载xml对象</summary>
/// <param name="domDoc">传入创建好的xml对象</param>
/// <param name="url">xml文件存在的地址（有人说此方法只能访问本服务器上的文件，尚未验证）</param>
/// <param name="fun">加载成功后执行的函数名（带一个xml对象参数）</param>
/// <returns>无</returns>
function loadByUrl(domDoc, url, fun)
{
    domDoc.async = true;
    if(_isIe)
    {
        domDoc.onreadystatechange = function() 
        { 
            //alert(domDoc.readyState);
            if (domDoc.readyState == 4) 
            {
   		        //alert("readyState载入完毕!");
   		        fun(domDoc);
            } 
        } 
    }
    else
    {
        domDoc.onload = function(success)
        {
            if(success)
            {
                //alert("onload加载完成。");
                fun(domDoc);
            }
        }
    }
    domDoc.load(url);
}

/// <summary>获取节点的内容</summary>
/// <param name="obj">xml节点对象</param>
/// <returns>返回节点内的值</returns>
function getText(obj)
{
    return obj.firstChild.nodeValue;
}

/// <summary>获取节点属性</summary>
/// <param name="obj">xml节点对象</param>
/// <param name="key">属性名</param>
/// <returns>返回节点指定属性的值</returns>
function getKey(obj, key)
{
    var o=obj.getAttribute(key);
    return o==null?"":o;
}

/// <summary>设置节点的内容</summary>
/// <param name="obj">xml节点对象</param>
/// <param name="text">要写入节点的内容</param>
/// <returns>无</returns>
function setText(obj, text)
{
    obj.firstChild.nodeValue=text;
}

/// <summary>设置节点的属性</summary>
/// <param name="obj">xml节点对象</param>
/// <param name="key">属性名</param>
/// <param name="text">要写入节点属性的内容</param>
/// <returns>无</returns>
function setKey(obj, key, text)
{
    obj.setAttribute(key,text);
}

if (!_isIe){
    var  ex;
    XMLDocument.prototype.__proto__.__defineGetter__("xml" ,function (){
         try {
             return  new XMLSerializer().serializeToString(this);
        } catch (ex){
             var  d  =  document.createElement("div");
            d.appendChild(this.cloneNode( true ));
             return  d.innerHTML;
        }
    });
    Element.prototype.__proto__.__defineGetter__("xml",  function (){
         try {
             return   new  XMLSerializer().serializeToString(this);
        } catch (ex){
             var  d  =  document.createElement("div");
            d.appendChild(this.cloneNode(true));
             return  d.innerHTML;
        }
    });
    XMLDocument.prototype.__proto__.__defineGetter__("text",  function (){
         return   this.firstChild.textContent;
    });
    Element.prototype.__proto__.__defineGetter__("text",  function (){
         return   this.textContent;
    });

    XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (XPath){
        alert("selectSingleNode");
         var  x = this.selectNodes(xpath);
         alert(x);
         alert(x.length);
         if ( !x || x.length < 1 ) return  null;
         return  x[0];
    }
    XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){       
     alert("selectNodes");
        var xpe = new XPathEvaluator();
     alert("1");         
      var nsResolver = xpe.createNSResolver(this.ownerDocument == null ? this.documentElement : this.ownerDocument.documentElement);       
         alert("2");    
           var result = xpe.evaluate(xpath, this, nsResolver, 0, null);
         alert("3");    
         var  found =  [];
         var  res;         
         while (res = result.iterateNext())
        found.push(res);
        return found;
    }
    
    Node.prototype.transformNode = function (oXslDom) { 
                 
        var oProcessor = new XSLTProcessor(); 
        oProcessor.importStylesheet(oXslDom); 
     
        var oResultDom = oProcessor.transformToDocument(this); 
        var sResult = oResultDom.xml; 
     
        if (sResult.indexOf(" <transformiix:result") >  -1) { 
            sResult = sResult.substring(sResult.indexOf("> ") + 1, sResult.lastIndexOf(" <")); 
        } 
     
        return sResult;                 
    };
}