function newXMLHttpRequest()
{
var request=null;
try
{
request=new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e)
{
try
{
request=new ActiveXObject("Microsoft.XMLHTTP")
}
catch(sc)
{
request=null
}
}
if(!request && typeof XMLHttpRequest!="undefined")
{
request=new XMLHttpRequest()
}
return request
}
function newXmlDocument()
{
var xmlDoc=null;
try
{
xmlDoc=new ActiveXObject("Msxml2.DOMDocument")
}
catch(e)
{
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
}
catch(sc)
{
xmlDoc=null
}
}
if(!xmlDoc && typeof XmlDocument!="undefined")
{
//XmlDocument doc = new XmlDocument();
//doc.Load(strXmlName);
xmlDoc=new XmlDocument()
}
return xmlDoc
}
function elmt( id )
{
return document.getElementById(id);
}
function getReadyStateHandler(req, responseHandler)
{
return function ()
{
if (req.readyState == 4)
{
if (req.status == 200)
{
responseHandler(req);
}
else
{
// 有HTTP问题发生
alert("HTTP error: "+req.status);
}
}
}
}
function getReadyStateHandlerText(req, targetId)
{
return function ()
{
if (req.readyState == 4)
{
if (req.status == 200)
{
setElementValue(req, targetId);
}
else
{
// 有HTTP问题发生
alert("HTTP error: "+req.statusText);
}
}
}
}
function handlerRequestText( elementId )
{
var jsp_name = elmt('jsp_name');
var req = newXMLHttpRequest();
var handler = getReadyStateHandlerText(req, elementId);
req.onreadystatechange = handler;
req.open("POST", jsp_name.value, true);
req.send("");
}
function handlerRequestURLText( url, elementId )
{
if( url.length == 0 )
{
clearAndHiddenElement( elementId );
return;
}
else
{
var req = newXMLHttpRequest();
var handler = getReadyStateHandlerText(req, elementId);
req.onreadystatechange = handler;
req.open("POST", url, true);
req.send("");
}
}
function handlerSynRequestXML( sendurl, urlparam )
{
if( sendurl.length == 0 )
{
return null;
}
else
{
if( urlparam == null || urlparam == "undefined" )
{
urlparam = "";
}
var req = newXMLHttpRequest();
req.open("POST", sendurl, false);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(urlparam);
var xmldoc = req.responseXML;
setElementByXmlDoc( xmldoc );
}
}
function handlerSynRequestTXT( sendurl, urlparam )
{
if( sendurl.length == 0 )
{
return "";
}
else
{
if( urlparam == null || urlparam == "undefined" )
{
urlparam = "";
}
var req = newXMLHttpRequest();
req.open("POST", sendurl, false);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(urlparam);
var respTxt = req.responseText;
return respTxt;
}
}
function setElementValue( request, elementId )
{
document.getElementById(elementId).style.display="";
document.getElementById(elementId).innerHTML=request.responseText;
}
function clearAndHiddenElement( elementId )
{
document.getElementById(elementId).innerHTML="";
document.getElementById(elementId).style.display="none";
}
function handlerRequestURLXML( sendurl, responseHandler, urlparam )
{
if( sendurl.length == 0 )
{
responseHandler();
return;
}
else
{
if( urlparam == "undefined" || urlparam == null )
{
urlparam = "";
}
var req = newXMLHttpRequest();
var handler = getReadyStateHandler(req, responseHandler);
req.onreadystatechange = handler;
req.open("POST", sendurl, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(urlparam);
}
}
function setElementList( request )
{
if( request != null )
{
var xmldoc = request.responseXML;
return setElementByXmlDoc( xmldoc );
}
return false;
}
function setElementByXmlDoc( xmldoc ) {
//alert( xmldoc );
var root_node = xmldoc.getElementsByTagName('root').item(0);
if( root_node == null ) {
return false;
} else {
for( node = root_node.firstChild; node != null ; node=node.nextSibling ) {
// alert( elmtId + "'s Attribute: overwrite = " + node.getAttribute("overwrite") );
var elmtId = node.nodeName;
if( elmtId.charAt(0) == '_' )
elmtId = elmtId.substring(1);
var type = node.getAttribute("type");
var indexAttr = node.getAttribute("index");
var elmtObj = null;
if( indexAttr == null || indexAttr.length == 0 ) {
elmtObj = document.getElementById(elmtId);
if (elmtObj != null || "script" == type) {
setElementValueByXML( node, elmtId, type, elmtObj );
}
} else {
index = parseInt( indexAttr );
if( index < 0 ) {
elmtObjs = document.getElementsByName(elmtId);
if ("script" == type || elmtObjs != null) {
for( i=0; i<elmtObjs.length; i++ ) {
setElementValueByXML( node, elmtId, type, elmtObjs[i] );
}
}
} else {
elmtObjs = document.getElementsByName(elmtId);
if (elmtObjs != null || "script" == type) {
if( elmtObjs.length > index ) {
//alert( index );
setElementValueByXML( node, elmtId, type, elmtObjs[index] );
}
}
}
}
}
return true;
}
}
function setElementValueByXML( node, elmtId, type, elmtObj )
{
for( attr = node.firstChild; attr != null ; attr=attr.nextSibling )
{
//alert( "type: "+type );
var attrName = attr.nodeName;
if( attrName.charAt(0) == '_' )
attrName = attrName.substring(1);
var attrValue = "";
if( "select" == type && attrName == "options")
{
if(elmtObj != null)
removeAllSelectOption( elmtObj );
}
if( "script" == type )
{
attrValue = getNodeValue( attr );
//alert( attrValue );
eval( attrValue );
}
else if( "htmlurl" == type )
{
url = getNodeValue( attr );
funcText = "handlerRequestURLText( '"+url+"', '"+elmtId+"' );";
//alert( "htmlurl: " + funcText );
eval( funcText );
}
else if( "xmlurl" == type )
{
url = getNodeValue( attr );
funcText = "handlerRequestURLXML('"+url +"', "+elmtId+" );";
alert( "xmlurl: " + funcText );
eval( funcText );
}
else
{
//alert( elmtId +"."+attrName );
if( "select" == type && attrName == "options")
{
if( attr.firstChild != null && elmtObj!=null )
{
for( option= attr.firstChild; option != null ; option=option.nextSibling )
{
var opt_name = option.getAttribute("name");
var opt_value = option.getAttribute("value");
var opt_selected = option.getAttribute("selected");
if(opt_selected != 'null'){
appendSelectOptionSelected( elmtObj, opt_value, opt_name, opt_selected);
} else{
appendSelectOption( elmtObj, opt_value, opt_name );
}
}
}
}
else
{
if( attr.firstChild != null )
{
attrValue = getNodeValue( attr.firstChild )
}
var isChar = attr.getAttribute("isChar");
//alert( isChar );
if( isChar == "false" )
{
evalStr = "elmtObj."+attrName + " = "+attrValue+";";
}
else
{
evalStr = "elmtObj."+attrName + " = attrValue;";
}
//alert( evalStr );
//alert( elmtId+"." + attrName + " = "+attrValue );
try
{
eval(evalStr);
}
catch(e)
{
alert( e.message+"\n("+elmtId+"." + attrName + " = "+attrValue+";)" );
}
}
}
}
}
function getNodeValue( node )
{
if( node == null )
return "";
if( node.nodeType == 4 ) // CDATA Node
{
return node.nodeValue;
}
else
{
var nodeValue = node.xml;
nodeValue = nodeValue.replace(/\&/g, "&");
nodeValue = nodeValue.replace(/\>/g, ">");
nodeValue = nodeValue.replace(/\</g, "<");
nodeValue = nodeValue.replace(/\"/g, "\"");
nodeValue = nodeValue.replace(/\'/g, "'");
return nodeValue;
}
}
/*
function setElementByXmlDoc( xmldoc )
{
var root_node = xmldoc.getElementsByTagName('root').item(0);
if( root_node == null )
{
return false;
}
else
{
for( node = root_node.firstChild; node != null ; node=node.nextSibling )
{
// alert( elmtId + "'s Attribute: overwrite = " + node.getAttribute("overwrite") );
var elmtId = node.nodeName;
if( elmtId.charAt(0) == '_' )
elmtId = elmtId.substring(1);
var type = node.getAttribute("type");
var elmtObj = document.getElementById(elmtId);
for( attr = node.firstChild; attr != null ; attr=attr.nextSibling )
{
var attrName = attr.nodeName;
if( attrName.charAt(0) == '_' )
attrName = attrName.substring(1);
var attrValue = "";
if( "select" == type && attrName == "options")
{
removeAllSelectOption( elmtObj );
}
if( "script" == type )
{
attrValue = getNodeValue( attr );
//alert( attrValue );
eval( attrValue );
}
else// if( attr.firstChild != null )
{
//alert( elmtId +"."+attrName );
if( "select" == type && attrName == "options")
{
for( option= attr.firstChild; option != null ; option=option.nextSibling )
{
var opt_name = option.getAttribute("name");
var opt_value = option.getAttribute("value");
appendSelectOption( elmtObj, opt_value, opt_name );
}
}
else
{
//alert( elmtId +"."+attrName );
attrValue = getNodeValue( attr.firstChild )
evalStr = "elmtObj."+attrName + " = attrValue;";
//evalStr = "elmtObj."+attrName + " = "+attrValue+";
//alert( evalStr );
try
{
eval(evalStr);
}
catch(e)
{
//alert( e+"\n"+elmtId+"." + attrName + " = "+attrValue+";" );
}
}
}
}
}
return true;
}
}
*/
function setElementsByString( xmldata )
{
var xmlDoc = new ActiveXObject("microsoft.xmldom");
xmldata = unescape( xmldata );
if( xmldata.length > 50 ) // <?xml version="1.0" encoding="GB2312"?><root></root>
{
boolValue = xmlDoc.loadXML(xmldata);
if( boolValue == true )
{
setElementByXmlDoc( xmlDoc );
}
}
}