﻿var   _IE=   (window.navigator.appName.toLowerCase().indexOf('explorer')  >  -1)? true:false;   
var _elementId="elementId";
var _keepTopItems=0 ;//保留item的数量。如1为保留第一人下拉项值。
function $(elementId ) { 

    obj=document.getElementById(elementId); 
    
    if(obj==null)
    {
        obj=document.getElementsByName(elementId)[0]; 
    }
  return obj
} 
//function $() {   
//if ( arguments.length <= 0 ) {   
//    return null;   
//} else {   
//    var returnElements = new Array();   
//    var argCount = arguments.length;   
//    for ( var i = 0 ; i < argCount ; i++ ) {   
//      var element = null;   
//      var elementId = arguments[i];   
//      if ( typeof elementId == 'string' ) {   
//        element = document.getElementById(trim(elementId));   
//      }   
//      if ( element != null ) {   
//        returnElements.push(element);   
//      }   
//    }   
//    return returnElements;   
//}   
//}  


function trim(str){    //删除左右两端的空格 
  return str.replace(/(^\s*)|(\s*$)/g, ""); 
}
//格式化提交的参数。
function formatParam(str)
{
//    str=str.replace(/%/g,"%25");
//    str=str.replace(/\+/g,"%2B");
//    str=str.replace(/\&/g,"%26");
//    //str=str.replace(/\</g,"%3c");
//    //str=str.replace(/\>/g,"%3e");
//    str=str.replace(/\</g,"&lt;");
//    str=str.replace(/\>/g,"&gt;");
    
    str=encodeURIComponent(str) ;
    return str
}

/* 
*  根据不同的浏览器，获取Ajax对象 
*/ 
function getAjaxObject() { 
/*
if (window.ActiveXObject && !window.XMLHttpRequest) {
         window.XMLHttpRequest = function() {
        var MSXML =   ['Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP'];
        for (var i = 0; i < MSXML.length; i++) {
          try {
            return new ActiveXObject(MSXML[i]);
          } catch (e) {}
        }
        return null;
      };

    }
*/


        var xmlHttpRequest; 
        //  判断是否把XMLHttpRequest实现为一个本地javascript对象 
        if(window.XMLHttpRequest){ 
        xmlHttpRequest = new XMLHttpRequest(); 
        }else if(window.ActiveXObject){  //  判断是否支持ActiveX控件 
        var MSXML =   ['Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP'];
        for (var i = 0; i < MSXML.length; i++) {
          try {
            xmlHttpRequest= new ActiveXObject(MSXML[i]);
            break;
          } catch (e) {}
          }
          }
        
        /*
        try{ 
          //  通过实例化ActiveXObject的一个新实例来创建XMLHttpRequest对象 
            xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");  //  msxml3以上版本 
        }catch(e){ 
            try{ 
              //  通过实例化ActiveXObject的一个新实例来创建XMLHttpRequest对象 
              xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");  //  msxml3以下版本 
              }catch(e){} 
        } 
        } 
        */
        
        if ( !xmlHttpRequest ) { 
          alert("创建Ajax对象失败，您将无法正常浏览网页"); 
        } 
        return xmlHttpRequest; 
        
} 
/* 
*  异步方式提交请求 
*/ 
function sendRequestByAjax(method, url, data, dataHandler,elementId,IsAsynch) { 
 if(IsAsynch==null) 
 {
    IsAsynch=false; //同步方式
 }
  //  获取Ajax对象 
    request = getAjaxObject(); 
  //  设置回调函数 
  if(dataHandler!=null)
  {
      if( !_IE ){ 
        request.onload = dataHandler; 
      } else { 
        request.onreadystatechange = dataHandler; 
      } 
  }
  //  处理提交方式 
  if ( "get" == method.toLowerCase() ) { 
    //  使用GET方式提交数据 
    var urls = url.split("?"); 
    if ( urls[1] == "" || typeof(urls[1]) == "undefined" ) { 
      url = urls[0] + "?" + data; 
    } else { 
      url = urls[0] + "?" + urls[1] + "&" + data; 
    } 
     request.open(method, url, IsAsynch);  //  true代表使用异步方式 false代表使用同步方式     
    data = null;  //   for GET method,request必须为空
     
  } else if ( "post" == method.toLowerCase() )  { 
    //  使用POST方式提交数据 
    request.open(method, url, IsAsynch);  //  true代表使用异步方式 false代表使用同步方式     
    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
    
 } 
      if(elementId!=null){
        this._elementId=elementId;
        
      }  
      


  request.send(data); 
  return request;
}

/* 
*  返回数据格式为XML的回调函数 
参数(对象ID，需要保持数量。)
*/ 
function xmlCallBack(id,keepTopItems) 
{ 
  //  数据接收完成 
      if( request.readyState == 4 )
      { 
            //  数据正常接收 
            if( request.status == 200 )
             {
                    if(keepTopItems!=null)
                    {
                        _keepTopItems=keepTopItems;
                    }
                    else
                    {
                        _keepTopItems=0 ;
                    }
                    //  调用XML文件解析函数 
                    parseXMLMessage(id); 
              }
              else 
              { 
                //  显示错误信息 
                 alert("Not able to retrieve description "+request.statusText); 
                } 
      } 
} 
/* 
*  XML文件解析函数 
*/ 
function parseXMLMessage(id) { 
  //  获取返回的XML文件 
  var xmlDoc=request.responseXML.documentElement; 
  //  解析XML文件 
  parseXML(id, xmlDoc); 
} 
/* 
*  解析XML文件 
*  @param  elementId  要将数据绑定的对象Id 
*  @param  xmlDoc    要解析的XML文件 
*/ 
function parseXML(elementId, xmlDoc) { 
  //  这里XML文件的格式根据你的自定义，自行修改
  var xmlRoot = xmlDoc.getElementsByTagName("items"); 
  var dataType = xmlRoot[0].getAttribute("dataType"); 
  var items = xmlDoc.getElementsByTagName('item'); 
  
    if(elementId!=null)
      {
        this._elementId=elementId ;
      }
      
      if( this._elementId!=null)
      {
          switch ( dataType.toLowerCase() ) { 
            case "array" : 
              //  返回对象为结果集 
              bindItems(this._elementId, items); 
              break; 
            case "string" : 
              //  返回对象为字符串 
              bindText(this._elementId, items[0].childNodes[0].firstChild.nodeValue); 
          } 
      }
  }
  
  //是否完成页面访问。
  function isCompleted()
  {
    var rv=false ;
      if( request.readyState == 4 ){ 
        if( request.status == 200 ){ 
          rv=true;
        } else { 
          alert("Not able to retrieve description "+request.statusText); 
        } 
      } 
      return rv ;
  }

/* 
*  HTML文件解析函数 
*/ 
function htmlCallBack(elementId) { 

  if( request.readyState == 4 ){ 
    if( request.status == 200 ){ 
      parseHTMLMessage(elementId); 
    } else { 
      alert("Not able to retrieve description "+request.statusText); 
    } 
  } 
} 
/* 
*  解析HTML文件 
*/ 
function parseHTMLMessage(elementId) { 
  //  获取返回的HTML代码 
  var htmlCode = request.responseText; 
  //  绑定HTML代码 
  if(elementId!=null)
  {
    this._elementId=elementId ;
  }
  if( this._elementId!=null)
  {
  bindText(this._elementId, htmlCode); 
  }
   
}

/* 
*  绑定结果集 
*/ 
function bindItems(elementId, items) { 
  var elem = $(elementId); 
  //  判断要绑定的对象，类型是否匹配 
  if ( elem.tagName.toLowerCase() != "select" && elem.tagName.toLowerCase() != "ul" ) { 
    alert("数据类型不匹配，无法进行数据绑定"); 
    return; 
  } 
  //  绑定select 
  if ( elem.tagName.toLowerCase() == "select" ) 
  { 
        while ( elem.options.length > _keepTopItems ) 
        { 
            elem.options[_keepTopItems] = null;
                //  清除现有数据 
                //elem.removeChild(elem.childNodes[_keepTopItems]); 
                //elem.removeChild(elem.childNodes[elem.childNodes.length-1]); 
          
          }
        //  alert(items[0].childNodes[1]) ;
       //alert(getNodeText(items[0].childNodes[0])) ;
       //alert(getLastNodeText(items[0])) ;
       
        // 绑定数据 
        for ( var i = 0; i < items.length; i++ ) { 
          var option = document.createElement("OPTION"); 
          var Data = items[i]; 
            
          option.value = Data.getElementsByTagName("value")[0].firstChild.nodeValue;// Data.childNodes[0].firstChild.nodeValue; 
          option.text =Data.getElementsByTagName("text")[0].firstChild.nodeValue;// Data.childNodes[1].firstChild.nodeValue; 
            
          elem.options.add(option); 
        } 
  } else if ( elem.tagName.toLowerCase() == "ul" ) { 
    //  绑定ul列表 
    elem.innerHTML = ""; 
    // bind data 
    for ( var i = 0; i < items.length; i++ ) { 
      var Data = items[i]; 
      var urlAddress = Data.childNodes[0].firstChild.nodeValue; 
      var showText = Data.childNodes[1].firstChild.nodeValue; 
      var innerCode = "<li><a href=\"" + urlAddress + "\" title=\"" + showText + "\">" + showText + "</a></li>"; 
      elem.innerHTML += innerCode; 
    } 
  } 
} 
/* 
*  绑定字符串，也可以实现绑定HTML代码 
*/ 
function bindText(elementId, value) { 
  var elem = $(elementId); 
  //  分析绑定对象类型 
  switch (elem.tagName.toLowerCase() ) { 
  case "div": 
  case "span": 
    elem.innerHTML = value; 
    break; 
  case "textarea": 
  case "input": 
    elem.value = value; 
    break; 
    default: 
      alert("数据类型不匹配，无法进行数据绑定"); 
      return; 
  } 
  saveHistory(elementId);     //  保存历史记录用于实现浏览器的前进、后退按钮
}

/* 
*  通过Ajax异步提交表单 
*/ 
function submitFormByAjax(formId) { 
  sendRequestByAjax($(formId).method, $(formId).getAttributeNode("action").value, encodeFormData($(formId)), htmlCallBack); 
}

/* 
*  分析Form表单数据 
*  @param  formElement  Form对象 
*/ 
function encodeFormData(formElement) { 
  var whereClause = ""; 
  var and = ""; 
  for ( i = 0 ; i < formElement.length ; i++ ) { 
    var element = formElement[i]; 
    if ( element.name != "" ) { 
      if (element.type=='select-one') { 
        element_value = element.options[element.selectedIndex].value; 
      } else if ( element.type == 'checkbox' || element.type == 'radio' ) { 
        if ( element.checked == false ) { 
          break;    
        } 
        element_value = trim(element.value); 
      } else { 
        element_value = trim(element.value); 
      } 
      whereClause += and + trim(element.name) + '=' + element_value.replace(/\&/g,"%26"); 
      and = "&" 
    } 
  } 
  return whereClause; 
}
//判断字符串是否空值。
function IsNullOrEmpty(v)
{
    var rv=true;
    if(v!=null)
    {
        if(trim(v)!="") rv=false ;
    }
    return rv ;
}

//访问某URL。
function goUrl(url)
{
    if(IsNullOrEmpty(url)==false)
    {
        document.location=url ;
    }
}

//getElementsByName:function (name) {  
//alert("Jd");
//	var returns = document.getElementsByName(name);  
//	if(returns.length > 0) return returns;  
//	returns = new Array();  
//	var e = document.getElementsByName(name);  
//	for(i = 0; i < e.length; i++) {  
//			if(e[i].getAttribute("name") == name)
//	{  
//					   returns[returns.length] = e[i];  
//			}  
//	}  
//	return returns;  
//} 

//function getElementsByName_iefix(tag, name) {
//     
//     var elem = document.getElementsByTagName(tag);
//     var arr = new Array();
//     for(i = 0,iarr = 0; i < elem.length; i++) {
//          att = elem[i].getAttribute("name");
//          if(att == name) {
//               arr[iarr] = elem[i];
//               iarr++;
//          }
//     }
//     return arr;
//}
function getFormValue(fieldName)
{

    var obj=document.getElementsByName(fieldName) ; //getElementsByName(fieldName);//
//    if(obj==null)
//    {
//        obj=$(fieldName) ;
//    }
    var rv="" ;
    try
        {
            if(obj!=null && obj!="undefined")
            {
                
                    switch (obj[0].type) 
                    {
                           case "checkbox" :
                           case "radio":
                           for(var i=0;i<obj.length;i++)
                           {
                               if(obj[i].checked )
                                   {
                                     rv += obj[i].value+";"
                                   }
                            }
                             break;
                           default :
                           rv=obj[0].value
                           break;
                           
                     } 
                     rv=trim(rv) ; 
             }
         }
         catch(e)
         {
           // alert("getFormValue "+fieldName+"  "+e);
         }
   
    return rv ;

}



//获取Form输入内容列表已格式化为URI值。getFormContent(字段集合,标题结果字符,分行符,必填字段)
//如：
function getFormContent(fieldCol,titleLastKey,splitHtmlTag,reqFieldArray)
{
    var rv="";
    var iValue="";
    var eleObj,eleName ;
    var msg="";
    
    if(splitHtmlTag==null){ splitHtmlTag="" ;}
    //必填值
    for(var si in reqFieldArray)
    {
        eleName=reqFieldArray[si] ;
        if(getFormValue(eleName)=="")
        {
            eleObj=$(eleName + titleLastKey) ;
            
                if(eleObj!=null)
                {
                  try{
                        if(eleObj.tagName.toLowerCase()=="input")
                        {
                         msg+=eleObj.value +"\n" ;
                        }
                        else
                        {
                        msg+=eleObj.innerHTML +"\n" ;
                        }
                    }
                    catch(e)
                    {}
                   
                }
        }
        
    }
    
    
   if(msg!="")
   {
    alert(msg) ;
   }
   else
   {
        for ( var s in fieldCol)
        {
            eleName=fieldCol[s] ;
            
            iValue=getFormValue(eleName) ;
             if(iValue!="")
             {
                eleObj=$(eleName + titleLastKey) ;
                if(eleObj!=null)
                {
                    try{
                    if(eleObj.tagName.toLowerCase()=="input")
                    {
                        rv+=eleObj.value ;
                        
                    }
                    else
                    {
                        rv+=eleObj.innerHTML ;
                    }
                    }
                    catch(e)
                    {}
                   
                }
                rv += iValue + splitHtmlTag;
             }
          }
    }
    
    return rv ;
}

function filePara(formObj)
{
     //fileAttachments       
    //element.type=="file"
    var elements = formObj.elements;// Enumeration the form elements
    var element;
    var i;
    var filesContent = "";
    for(i=0;i<elements.length;++i) 
    {
        var element=elements[i];
        if(element.name==""||element.name==null||element.type=="")
        continue;
        if(element.type=="file") 
        {
            if(element.value != "") 
            {
                filesContent +="&"+ encodeURIComponent("fileAttachments_"+element.name) + "=" + byteToHex(loadFile(encodeURIComponent(element.value)));
            }
        }  
    }
    return filesContent ;
}

function loadFile(path)
 {
  var stream = new ActiveXObject("ADODB.Stream")
  stream.Type = 1
  stream.Open()
  stream.LoadFromFile(path)
  var binaryStream = stream.Read()
  stream.close()
  return binaryStream
 }
 function byteToHex(byteStr)
 {
  var xmldom = new ActiveXObject("Microsoft.XMLDOM")
  var byteObj= xmldom.createElement("byteObj")
  byteObj.dataType = 'bin.hex'
  byteObj.nodeTypedValue = byteStr
  return(String(byteObj.text))
 }

 function hexToByte(hexStr)
 {
  var xmldom = new ActiveXObject("Microsoft.XMLDOM")
  var byteObj= xmldom.createElement("byteObj")
  byteObj.dataType = "bin.hex"
  byteObj.nodeTypedValue = hexStr
  return(byteObj.nodeTypedValue)
 }
 function strToByte(str)
 {
  return hexToByte(strToHex(str))
 }

 function byteToStr(byteStr)
 {
  return hexTostr(byteToHex(byteStr))
 }


//**********************************************************

var historyValue = new Array(10); //    保存记录的最大次数 
var historyCount = 0; 

/* 
*  保存历史记录 
*  @param  elementId  要保存的区域ID 
*/ 
function saveHistory(elementId) { 
  //  "historyFrame"隐藏的IFrame的ID属性值 
  var iframeDocument = $("historyFrame"); 
  if ( iframeDocument != null ) { 
    if ( historyCount == 9 ) { 
      historyCount = 0; 
    } else { 
      historyCount++; 
    } 
    historyValue[historyCount] = new Array(2); 
    historyValue[historyCount][0] = elementId; 
    var element = $(elementId); 
    historyValue[historyCount][1] = element.innerHTML; 
    iframeDocument.src = "/history.htm?" + historyCount; 
  } 
} 
/* 
*  获取历史记录 
*  @param  historyIndex  历史记录索引号 
*/ 
function getHistory(historyIndex) { 
  if ( historyIndex != historyCount ) { 
    if ( historyValue[historyIndex] ) { 
      historyCount = historyIndex; 
    } 
    var element = $(historyValue[historyCount][0]); 
    element.innerHTML = historyValue[historyCount][1]; 
  } 
}


/*
history.jsp页面中的代码很简单，只有以下代码：
<script> 
var url=window.location.href; 
if(url.indexOf('?')>-1) 
{ 
     parent.getHistory(url.substr(url.indexOf('?')+1)); 
     document.write(window.location.search.substr(1)); 
} 

</script>
//在页面最下端记得写上下面的代码：
//<iframe id="historyFrame" name="historyFrame" src="/history.htm?0" height="0px" frameborder="no"></iframe>



function getNodeText(oNode) {
    var sText = "";
    for (var i = 0; i < oNode.childNodes.length; i++) {
        if (oNode.childNodes[i].hasChildNodes()) {
            sText += getNodeText(oNode.childNodes[i]);
        } else {
            sText += oNode.childNodes[i].nodeValue;
            
        }
       }
    return sText;
}
function getLastNodeText(oNode) {
    var sText = "";
    for (var i = 0; i < oNode.childNodes.length; i++) {
        if (oNode.childNodes[i].hasChildNodes()) {
            sText = getNodeText(oNode.childNodes[i]);
        } else {
            sText = oNode.childNodes[i].nodeValue;
            break ;
        }
       }
    return sText;
}
*/



/*

function ajaxSubmitForm(form) {

var elements = form.elements;// Enumeration the form elements
var element;
var i;
var postContent = "";// Form contents need to submit
for(i=0;i<elements.length;++i) {
var element=elements[i];
if(element.name==""||element.name==null||element.type=="")
continue;
if(element.type=="text" || element.type=="textarea" || element.type=="hidden"||element.type=="password") {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&"; 
  
}
else if(element.type=="select-one"||element.type=="select-multiple") {
var options=element.options,j,item;
for(j=0;j<options.length;++j){
item=options[j];
if(item.selected) {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(item.value) + "&";
}
}
} else if(element.type=="checkbox"||element.type=="radio") {
if(element.checked) {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
} else if(element.type=="file") {
if(element.value != "") {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
} 
else {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
}
  ajaxSubmit(form.action, form.method, postContent);
}
*/
