/**
*	Angel脚本公用规划
*	Creat Date:2007-05-25 LaoDing
*	company  Richmap @ CariPower 2007
*	本脚本为utf-8编码
*/
//把过滤空格写成String的私有函数
String.prototype.ltrim = function(){
	return this.replace(/^\s+/g,"");
};
String.prototype.rtrim = function(){
	return this.replace(/\s+$/g,"");
};
String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g,"");
};
String.prototype.atrim = function(){
	return this.replace(/\s/g,"");
};
// 过滤常见的转义和后台关键字符
function clearKey(sStr){
	if(sStr == null || sStr == "")return sStr;
	if(sStr == "null")return "";
	var sReplaceStr="";
	sStr=sStr.replace(/[\+\&\|\!\^\"\~\*\?\:\\\'\%\$\<\>\#]/g,"");
	return sStr;
}

//删除数组中的某个值
Array.prototype.remove=function(count){
	if(this.splice){return this.splice(count,1);}	//如果是ie5.5及以上，支持splice函数
	var tempArr=this.slice(count+1,this.length);
	for(var i=this.length-count;i>0;i--){
		this.pop();
	}
	for(var j=0;j<tempArr.length;j++){
		this.push(tempArr[j]);
	}
	return;
};

/**
*	getRandFlag	得到一个唯一的标志
*/
var nRandCount=0;	//
function getRandFlag(){
	nRandCount++;
	var returnstr=nRandCount.toString(2);
	returnstr="l"+returnstr.replace(/0/g,"l");
	return "sRandFlag_"+returnstr;            
};

/**
*	getUrlParam 从某url中得到参数
*	@param sUrl 指定url,如果为空，则从当前页的url读取
*	@param sParam 指定要读取得参数
*/
function getUrlParam(sUrl,sParam){
	if(sUrl==""||sUrl==null)sUrl = window.location.href;
	var fi_index,fi_index1;
	fi_index = sUrl.indexOf("?");
	if (fi_index > -1){
		sUrl = "&" + sUrl.substring(fi_index+1);
		fi_index = sUrl.indexOf("&" + sParam + "=");
		if (fi_index > -1){
			fi_index1 = sUrl.indexOf("&",fi_index + 2);
			if (fi_index1 ==-1) fi_index1=9999;
			return unescape(sUrl.substring(fi_index + sParam.length + 2,fi_index1));
		}else{
			return "";
		}
	}else{
		return "";
	}
}
//xml对象
function getXmlRequest() {
	var req=null;
	try{
		req = new ActiveXObject("Msxml2.XMLHTTP.4.0");
	}catch(e){
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP"); 
			}catch(e){
				req = null;
			};
		};
	};
	if (req==null && typeof XMLHttpRequest!='undefined'){
		req = new XMLHttpRequest();
	};
	return req;
};
//根据id得到页面对象
function getById(objId){
	return document.getElementById(objId);
}

//=== 异步读取数据分页开始 ===
var CP_TitArr	=new Array();		//保存标志
var CP_CountArr	=new Array();		//保存总记录数
var CP_NPageArr	=new Array();		//保存当前页
var CP_UrlArr	=new Array();		//保存连接记录
var CP_FuncArr	=new Array();		//保存动作函数
var CP_FlagArr	=new Array();		//保存名称
var PageCounts=0;					//记录多个地方分页时的总计数
/**
*	分页 CPage v3.3 author:laoding creat:2005-12-22	LastUpdate:2006-06-28
*	@update 2006-6-28 新增分页样式 v3.2
*	@update 2006-8-4 修订分页输入框对页码的判断及点击分页的动作函数 v3.3 
*	显示异步读取的分页信息
*	@param PageShow	显示容器，同时和PageTitle一起组成本次分页的标志。如果不指定显示位置的话，分页信息将显示在该id标志的页面元素
*	@param howpages	一页显示多少条
*	@param Page_url	下一页的链接
*	@param PageFlag	本次分页的标志
*	@param TotalC	总计录数
*	@param func		指定的动作函数，即把Page_url和pageno传递给该函数
*	@param PageShowT	指定显示位置，这样，同一个分页可以显示在多个页面元素中
*	@param display	指定显示样式
					1、基本样式，形如：首页 上一页 共2538/16页 下一页 末页 到 页GO
					2、列表样式，形如：页码 << < 3 4 5 6 7 8 9 10 11 12 13 > >> 
*	@return null
*/ 
function creatPage(PageShow,howpages,Page_url,PageFlag,TotalC,func,PageShowT,display,fun,sFlag){	
	var NCou=-1;	//判断是哪个地方的分页	
	for(i=0;i<=PageCounts;i++){if(CP_TitArr[i]==PageFlag){NCou=i;}}		
	//如果是第一次
	if(NCou==-1){
		//之前可能已经存在其他形式的分页		
		if(!CP_TitArr[PageCounts]){PageCounts++;NCou=PageCounts;}else{NCou=PageCounts;}
		//初始化	
		CP_TitArr[NCou]=PageFlag;	//记录分页标志
		CP_NPageArr[NCou]=1;		//记录本次分页的当前页
		CP_UrlArr[NCou]=Page_url;	//记录本次分页的url
		CP_FuncArr[NCou]=func;		//记录本次分页返回运行的函数
		CP_FlagArr[NCou]=PageShow;	//记录本次分页内容的显示位置
		if(TotalC==null||TotalC==""){
			//如果没有指定总记录数，那说明总记录数在生成的页面中
			CP_CountArr[NCou]=getById(PageShow+"Tb").count;
		}else{
			CP_CountArr[NCou]=TotalC;
		}
	}	
	var totalpage = 0;
	if(sFlag){
		totalpage = TotalC%howpages==0?parseInt(TotalC/howpages):(parseInt(TotalC/howpages)+1);
	}else{
		totalpage = CP_CountArr[NCou]%howpages==0?parseInt(CP_CountArr[NCou]/howpages):(parseInt(CP_CountArr[NCou]/howpages)+1);
	}
	//计算总页数
	//var totalpage=CP_CountArr[NCou]%howpages==0?parseInt(CP_CountArr[NCou]/howpages):(parseInt(CP_CountArr[NCou]/howpages)+1);
	
	if(totalpage==0){
		document.getElementById(PageShow).innerHTML="<font color=#eeeeee>无分页信息</font>";
	}else{
		if(display==null){display=1;}	//默认为分页样式1
		var pageStr="";	//定义向外输出的分页信息
		switch(display){
			case 1:	//分页样式1 形如：首页 上一页 共2538/16页 下一页 末页 到 页GO
				var firstpage=CP_NPageArr[NCou]==1?"<img src='images/map/unhome.jpg'>":"<img src='images/map/home.jpg' style='cursor:pointer' onclick=\"turnPage("+ NCou +","+ totalpage +",1)\" alt='回到首页'>";
				var downpage=CP_NPageArr[NCou]==totalpage?"<img src='images/map/unnext.jpg'>":"<img src='images/map/next.jpg' onclick=\"turnPage("+ NCou +","+ totalpage +","+ (CP_NPageArr[NCou]*1+1) +")\" style='cursor:pointer' alt='下一页'>";
				var uppage=CP_NPageArr[NCou]==1?"<img src='images/map/unback.jpg'>":"<img src='images/map/back.jpg' onclick=\"turnPage("+NCou+","+ totalpage +","+ (CP_NPageArr[NCou]*1-1) +")\" style='cursor:pointer' alt='上一页'>";
				var endpage=CP_NPageArr[NCou]==totalpage?"<img src='images/map/unend.jpg'>":"<img src='images/map/end.jpg' onclick=\"turnPage("+ NCou +","+ totalpage +","+ totalpage +")\" style='cursor:pointer' alt='到最后一页'>";
				var back = "";
				fun = fun || "";
				if(fun!=""){
					back = "<span style='cursor:pointer;' onclick ="+fun+">返回搜索</span>"
				}
				pageStr="共"+totalpage+"/"+CP_NPageArr[NCou]+"页 " + firstpage+" "+uppage+" "+downpage+" "+endpage+" " + back; // 到<input type='text' id='"+ CP_FlagArr[NCou] +"PN' class='page1_input' size='2' maxlength='4' onKeyDown=\"checkEnter('"+CP_FlagArr[NCou]+"GO')\">页<span id='"+ CP_FlagArr[NCou] +"GO' class='page1_btn' onclick=\"turnPage("+ NCou +","+ totalpage +")\">GO</span>
			break;
			case 2://分页样式2 形如：页码 << < 3 4 5 6 7 8 9 10 11 12 13 > >> 
				var firstpage=CP_NPageArr[NCou]==1?"":"<span class='page2_btn' onclick=\"turnPage("+NCou+","+totalpage+",1)\" id='"+CP_FlagArr[NCou]+"_Home' title='到首页'><<</span>&nbsp;";
				var uppage=CP_NPageArr[NCou]==1?"":"<span class='page2_btn' onclick=\"turnPage("+NCou+","+totalpage+","+(CP_NPageArr[NCou]*1-1)+")\" id='"+CP_FlagArr[NCou]+"_Up' title='上一页'><</span>&nbsp;";
				var downpage=CP_NPageArr[NCou]==totalpage?"":"<span class='page2_btn' onclick=\"turnPage("+NCou+","+totalpage+","+(CP_NPageArr[NCou]*1+1)+")\" id='"+CP_FlagArr[NCou]+"_Down' title='下一页'>></span>&nbsp;";
				var endpage=CP_NPageArr[NCou]==totalpage?"":"<span class='page2_btn' onclick=\"turnPage("+NCou+","+totalpage+","+totalpage+")\" id='"+CP_FlagArr[NCou]+"_End' title='到最后一页'>>></span>";
				var pagelist="";	//显示页码
				var nStartPage=1;	//从第几页开始显示
				var nPageNoCount=6;	//在页面上最多显示几个页码
				var nStartPage=CP_NPageArr[NCou]==1?1:(CP_NPageArr[NCou]-1);	//如果当前页不是第一页，默认从当前页的上一页开始显示
				if((nStartPage+nPageNoCount)>totalpage&&totalpage>=nPageNoCount){nStartPage=totalpage-nPageNoCount+1}	//如果当前页后面的页码总和小于nPageNoCount页，从倒数第nPageNoCount条开始显示
				if(totalpage<nPageNoCount){nStartPage=1;}		//如果页码总和小于nPageNoCount页，从第一页开始显示
				for(var j=nStartPage;(j<=totalpage)&&(j<(nStartPage+nPageNoCount));j++){
					if(j==CP_NPageArr[NCou]){
						pagelist+="<span class='page2_focus'>"+j+"</span> ";
					}else{
						pagelist+="<span class='page2_blur' onclick=\"turnPage("+NCou+","+totalpage+","+j+")\" onMouseOver=\"this.className='page2_focus';\" onMouseOut=\"this.className='page2_blur';\">"+j+"</span> ";
					}
				}
				pageStr = firstpage+uppage+pagelist+downpage+endpage;
			break;
		}		
		
		if(PageShowT!=null&&PageShowT!=""){PageShow=PageShowT}			
		document.getElementById(PageShow).innerHTML=pageStr;
	}
}
/**
*	turnPage() 判定输入的页码是否正确并运行分页
*	@param nNcou	//当前分页在总分页数组中的下标
*	@param nTotalPage	//当前分页的总页码
*	@param nPageNo	//当前分页的页码,如果不指定，说明当前的页码从输入框中来
*/
function turnPage(nNcou,nTotalPage,nPageNo){
	var oTempObj=getById(CP_FlagArr[nNcou]+"PN");	//得到页码输入框
	if((nPageNo == ""||nPageNo == null)&&oTempObj){nPageNo = oTempObj.value;}	//得到输入框内值
	var sWrongStr = "";	//定义错误
	if(nPageNo == ""){
		sWrongStr = "请输入页码！";
	}else if(nPageNo.toString().match(/^(?:[1-9]\d*|0)$/) == null){
		sWrongStr = "请在页码中输入数字！";
	}else if(nPageNo<=0||nPageNo>nTotalPage){
		sWrongStr = "您输入的页码超出范围！";
	}
	if(sWrongStr != ""){
		alert(sWrongStr);
		oTempObj.focus();
		oTempObj.select();
		return false;
	}else{		
		CP_NPageArr[nNcou] = nPageNo;	//保存当前分页的当前页码			
		eval(CP_FuncArr[nNcou]+"'"+CP_UrlArr[nNcou]+"','"+nPageNo+"','"+CP_TitArr[nNcou]+"');");
	}
}
/**
*	把某输入框的回车键绑定到指定元素的onclick事件
*	@param obj 指定元素的id
*/
function checkEnter(obj){
	if(event.keyCode==13){getById(obj).fireEvent("onclick");return false;}	
}
//-------------------------------异步读取数据分页结束-------------------------------

//------------------------------- 窗口拖动函数组开始 -------------------------------
var nEvent_x=0,nEvent_y=0;	//初始化鼠标x,y
var nDrag_x=0,nDrag_y=0;	//初始化拖动窗口x,y
var nInfo_x=0,nInfo_y=0;	//初始化地图左边窗口x,y
var nInfoBtn_x=0,nInfoBtn_y=0; //初始化地图左边窗口按钮x,y
var bMoveable=false;		//当前是否有窗口处于被拖动状态

/**
*	DragDiv v1.0 窗口拖动公用函数	Author:laoding @ Richmap	CreatDate: 2006-04-14
*	开始拖动
*	@param classObj	窗口类，该类必须符合以下条件
			必须有成员.m_oDragObj,该成员指定了窗口拖动的起始鼠标触发事件的元素
			必须有成员函数getPositionX(x)来返回窗口的坐标x
			必须有成员函数getPositionY(y)来返回窗口的坐标y
			必须有成员函数setPosition(x,y)来设置窗口的坐标x,y
*/
function startDrag(classObj){
	var evt = getEvent();
	var isIE= false;
	if(document.all){
		isIE = true;
	}else {
		isIE = false;
	}
	if( (isIE &&evt.button==1)|| (!isIE && evt.button==0))	{
		if(isIE){
			classObj.m_oDragObj.setCapture();
		}else{
			window.document.onmousemove=draging;//为document绑定mousemove事件
			window.document.onmouseup=stopDrag;//为document绑定mouseup事件
		}
		classObj.m_oDragObj.style.cursor="move";
		nEvent_x = evt.clientX;
		nEvent_y = evt.clientY;
		nDrag_x = classObj.getPositionX();
		nDrag_y = classObj.getPositionY();
		bMoveable = true;
	}
};
//拖动
function draging(){
	var evt = getEvent();
	if(bMoveable){
		mymoveObj.setPosition(nDrag_x + evt.clientX - nEvent_x,nDrag_y + evt.clientY - nEvent_y);
	}
};
//结束拖动
function stopDrag(){
	if(bMoveable){
		if(document.all){
			mymoveObj.m_oDragObj.releaseCapture();
		}else{
			window.captureEvents("mouseup",mymoveObj.m_oDragObj)//(Event.MOUSEMOVE|Event.MOUSEUP);
		}
		bMoveable = false;
	}
	mymoveObj.m_oDragObj.style.cursor="default";
	//当窗口被拖动到顶部以上
	if(mymoveObj.getPositionY()<0){mymoveObj.setPosition(mymoveObj.getPositionX(),0);}
	//当窗口被拖动到底部以下
	var nBodyTop=document.body.clientTop;
	var nBodyHeight=document.body.clientHeight;
	if(mymoveObj.getPositionY() > nBodyTop + nBodyHeight-5){
		mymoveObj.setPosition(mymoveObj.getPositionX(),nBodyTop+nBodyHeight-mymoveObj.m_oMoveObj.offsetHeight);
	}
};
function  moveObject(pObj,fObj){
	if(pObj == null && fObj ==null){return ;}
	this.m_oDragObj = pObj;
	this.m_oMoveObj = fObj;	
	
	this.getPositionX = function (){return parseInt(this.m_oMoveObj.style.left);}
	this.getPositionY = function (){return parseInt(this.m_oMoveObj.style.top);}
	this.setPosition = function (x,y){this.m_oMoveObj.style.left = x;this.m_oMoveObj.style.top = y;}
};
//------------------------------- 窗口拖动函数组结束 -------------------------------

/**
*	得到某元素在页面上的位置
*	返回位置数组
*/
function getoffset(obj){
	var t=obj.offsetTop; 
	var l=obj.offsetLeft;
	while(obj=obj.offsetParent){
		t+=obj.offsetTop;
		l+=obj.offsetLeft;
	}
	var rec = new Array(1);
	rec[0]  = t;
	rec[1] = l;
	return rec;
}
//cookie
function setCookie(name,value){
	var today = new Date();
	var expires = new Date();
	expires.setTime(today.getTime() + 1000*60*60*24*365);
	document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()+";path=/";
}

function getCookie(Name){
	var search = Name + "=";
	if(document.cookie.length > 0) {
		offset = document.cookie.indexOf(search);
		if(offset != -1) {
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if(end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(offset, end));
		}else return('');
	}else return('');
}
//错误反馈
function showErrorAdvice(cityname,wrongmodule,wrongkey,wrongcontent){
	window.open(encodeURI("errAdvice.jsp?city="+cityname+"&operation="+wrongmodule+"&keyword="+wrongkey+"&appendinfo="+wrongcontent));
}
/*
function showErrorAdvice(cityname,wrongmodule,wrongkey,wrongcontent){
	var sFeatures="dialogWidth:407px;dialogHeight:452px;scroll:no;status:no;help:no;";
	window.open(encodeURI("errorAdvice.jsp?city="+cityname+"&operation="+wrongmodule+"&keyword="+wrongkey+"&appendinfo="+wrongcontent),"errorReport");
}
*/
//==============sarissa js start====================
function Sarissa(){};
Sarissa.PARSED_OK = "Document contains no parsing errors";
Sarissa.IS_ENABLED_TRANSFORM_NODE = false;
Sarissa.IS_ENABLED_XMLHTTP = false;
Sarissa.IS_ENABLED_SELECT_NODES = false;
var _sarissa_iNsCounter = 0;
var _SARISSA_IEPREFIX4XSLPARAM = "";
var _SARISSA_HAS_DOM_IMPLEMENTATION = document.implementation && true;
var _SARISSA_HAS_DOM_CREATE_DOCUMENT = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.createDocument;
var _SARISSA_HAS_DOM_FEATURE = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.hasFeature;
var _SARISSA_IS_MOZ = _SARISSA_HAS_DOM_CREATE_DOCUMENT && _SARISSA_HAS_DOM_FEATURE;
var _SARISSA_IS_SAFARI = (navigator.userAgent && navigator.vendor && (navigator.userAgent.toLowerCase().indexOf("applewebkit") != -1 || navigator.vendor.indexOf("Apple") != -1));
var _SARISSA_IS_IE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1  && navigator.userAgent.toLowerCase().indexOf("opera") == -1;
if(!window.Node || !window.Node.ELEMENT_NODE){
    var Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
};
if(_SARISSA_IS_IE){
    _SARISSA_IEPREFIX4XSLPARAM = "xsl:";
    var _SARISSA_DOM_PROGID = "";
    var _SARISSA_XMLHTTP_PROGID = "";
    pickRecentProgID = function (idList, enabledList){
        var bFound = false;
        for(var i=0; i < idList.length && !bFound; i++){
            try{
                var oDoc = new ActiveXObject(idList[i]);
                o2Store = idList[i];
                bFound = true;
                for(var j=0;j<enabledList.length;j++)
                    if(i <= enabledList[j][1])
                        Sarissa["IS_ENABLED_"+enabledList[j][0]] = true;
            }catch (objException){
            };
        };
        if (!bFound)
            throw "Could not retreive a valid progID of Class: " + idList[idList.length-1]+". (original exception: "+e+")";
        idList = null;
        return o2Store;
    };
    _SARISSA_DOM_PROGID = pickRecentProgID(["Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"], [["SELECT_NODES", 2],["TRANSFORM_NODE", 2]]);
    _SARISSA_XMLHTTP_PROGID = pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], [["XMLHTTP", 4]]);
    _SARISSA_THREADEDDOM_PROGID = pickRecentProgID(["Msxml2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.4.0", "MSXML2.FreeThreadedDOMDocument.3.0"]);
    _SARISSA_XSLTEMPLATE_PROGID = pickRecentProgID(["Msxml2.XSLTemplate.5.0", "Msxml2.XSLTemplate.4.0", "MSXML2.XSLTemplate.3.0"], [["XSLTPROC", 2]]);
    pickRecentProgID = null;
    Sarissa.getDomDocument = function(sUri, sName){
        var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
        if (sName){
            if (sUri){
                oDoc.loadXML("<a" + _sarissa_iNsCounter + ":" + sName + " xmlns:a" + _sarissa_iNsCounter + "=\"" + sUri + "\" />");
                ++_sarissa_iNsCounter;
            }
            else
                oDoc.loadXML("<" + sName + "/>");
        };
        return oDoc;
    };
    Sarissa.getParseErrorText = function (oDoc) {
        var parseErrorText = Sarissa.PARSED_OK;
        if(oDoc.parseError != 0){
            parseErrorText = "XML Parsing Error: " + oDoc.parseError.reason + 
                "\nLocation: " + oDoc.parseError.url + 
                "\nLine Number " + oDoc.parseError.line + ", Column " + 
                oDoc.parseError.linepos + 
                ":\n" + oDoc.parseError.srcText +
                "\n";
            for(var i = 0;  i < oDoc.parseError.linepos;i++){
                parseErrorText += "-";
            };
            parseErrorText +=  "^\n";
        };
        return parseErrorText;
    };
    Sarissa.setXpathNamespaces = function(oDoc, sNsSet) {
        oDoc.setProperty("SelectionLanguage", "XPath");
        oDoc.setProperty("SelectionNamespaces", sNsSet);
    };   
    XSLTProcessor = function(){
        this.template = new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);
        this.processor = null;
    };
    XSLTProcessor.prototype.importStylesheet = function(xslDoc){
        var converted = new ActiveXObject(_SARISSA_THREADEDDOM_PROGID); 
        converted.loadXML(xslDoc.xml);
        this.template.stylesheet = converted;
        this.processor = this.template.createProcessor();
        this.paramsSet = new Array();
    };
    XSLTProcessor.prototype.transformToDocument = function(sourceDoc){
        this.processor.input = sourceDoc;
        var outDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
        this.processor.output = outDoc; 
        this.processor.transform();
        return outDoc;
    };
    XSLTProcessor.prototype.setParameter = function(nsURI, name, value){
        if(nsURI){
            this.processor.addParameter(name, value, nsURI);
        }else{
            this.processor.addParameter(name, value);
        };
        if(!this.paramsSet[""+nsURI]){
            this.paramsSet[""+nsURI] = new Array();
        };
        this.paramsSet[""+nsURI][name] = value;
    };
    XSLTProcessor.prototype.getParameter = function(nsURI, name){
        nsURI = nsURI || "";
        if(nsURI in this.paramsSet && name in this.paramsSet[nsURI]){
            return this.paramsSet[nsURI][name];
        }else{
            return null;
        };
    };
}else{
    if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){
        Sarissa.__handleLoad__ = function(oDoc){
            if (!oDoc.documentElement || oDoc.documentElement.tagName == "parsererror")
                oDoc.parseError = -1;
            Sarissa.__setReadyState__(oDoc, 4);
        };
        _sarissa_XMLDocument_onload = function(){
            Sarissa.__handleLoad__(this);
        };
        Sarissa.__setReadyState__ = function(oDoc, iReadyState){
            oDoc.readyState = iReadyState;
            if (oDoc.onreadystatechange != null && typeof oDoc.onreadystatechange == "function")
                oDoc.onreadystatechange();
        };
        Sarissa.getDomDocument = function(sUri, sName){
            var oDoc = document.implementation.createDocument(sUri?sUri:"", sName?sName:"", null);
            oDoc.addEventListener("load", _sarissa_XMLDocument_onload, false);
            return oDoc;
        };
        if(window.XMLDocument){
            XMLDocument.prototype.onreadystatechange = null;
            XMLDocument.prototype.readyState = 0;
            XMLDocument.prototype.parseError = 0;
			var _SARISSA_SYNC_NON_IMPLEMENTED = false;
            XMLDocument.prototype._sarissa_load = XMLDocument.prototype.load;
			XMLDocument.prototype.load = function(sURI) {
                var oDoc = document.implementation.createDocument("", "", null);
                Sarissa.copyChildNodes(this, oDoc);
                this.parseError = 0;
                Sarissa.__setReadyState__(this, 1);
                try {
                    if(this.async == false && _SARISSA_SYNC_NON_IMPLEMENTED) {
                        var tmp = new XMLHttpRequest();
                        tmp.open("GET", sURI, false);
                        tmp.send(null);
                        Sarissa.__setReadyState__(this, 2);
                        Sarissa.copyChildNodes(tmp.responseXML, this);
                        Sarissa.__setReadyState__(this, 3);
                    }
                    else {
                        this._sarissa_load(sURI);
                    };
                }
                catch (objException) {
                    this.parseError = -1;
                }
                finally {
                    if(this.async == false){
                        Sarissa.__handleLoad__(this);
                    };
                };
                return oDoc;
            };
        }
        else if(document.implementation && document.implementation.hasFeature && document.implementation.hasFeature('LS', '3.0')){
            Document.prototype.async = true;
            Document.prototype.onreadystatechange = null;
            Document.prototype.parseError = 0;
            Document.prototype.load = function(sURI) {
                var parser = document.implementation.createLSParser(this.async ? document.implementation.MODE_ASYNCHRONOUS : document.implementation.MODE_SYNCHRONOUS, null);
                if(this.async){
                    var self = this;
                    parser.addEventListener("load", 
                        function(e) { 
                            self.readyState = 4;
                            Sarissa.copyChildNodes(e.newDocument, self.documentElement, false);
                            self.onreadystatechange.call(); 
                        }, 
                        false); 
                };
                try {
                    var oDoc = parser.parseURI(sURI);
                }
                catch(e){
                    this.parseError = -1;
                };
                if(!this.async)
                   Sarissa.copyChildNodes(oDoc, this.documentElement, false);
                return oDoc;
            };
            Sarissa.getDomDocument = function(sUri, sName){
                return document.implementation.createDocument(sUri?sUri:"", sName?sName:"", null);
            };        
        };
    };
};
if(!window.DOMParser){
    DOMParser = function() {
    };
    if(_SARISSA_IS_SAFARI){
        DOMParser.prototype.parseFromString = function(sXml, contentType){
            if(contentType.toLowerCase() != "application/xml"){
                throw "Cannot handle content type: \"" + contentType + "\"";
            };
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open("GET", "data:text/xml;charset=utf-8," + encodeURIComponent(str), false);
            xmlhttp.send(null);
            return xmlhttp.responseXML;
        };
    }else if(Sarissa.getDomDocument && Sarissa.getDomDocument() && "loadXML" in Sarissa.getDomDocument()){
        DOMParser.prototype.parseFromString = function(sXml, contentType){
            var doc = Sarissa.getDomDocument();
            doc.loadXML(sXml);
            return doc;
        };
    };
};
if(window.XMLHttpRequest){
    Sarissa.IS_ENABLED_XMLHTTP = true;
}
else if(_SARISSA_IS_IE){
    XMLHttpRequest = function() {
        return new ActiveXObject(_SARISSA_XMLHTTP_PROGID);
    };
    Sarissa.IS_ENABLED_XMLHTTP = true;
};
if(!window.document.importNode && _SARISSA_IS_IE){
    try{
        window.document.importNode = function(oNode, bChildren){
            var importNode = document.createElement("div");
            if(bChildren)
                importNode.innerHTML = Sarissa.serialize(oNode);
            else
                importNode.innerHTML = Sarissa.serialize(oNode.cloneNode(false));
            return importNode.firstChild;
        };
        }catch(e){};
};
if(!Sarissa.getParseErrorText){
    Sarissa.getParseErrorText = function (oDoc){
        var parseErrorText = Sarissa.PARSED_OK;
        if(oDoc && oDoc.parseError && oDoc.parseError != 0){
            if(oDoc.documentElement.tagName == "parsererror"){
                parseErrorText = oDoc.documentElement.firstChild.data;
                parseErrorText += "\n" +  oDoc.documentElement.firstChild.nextSibling.firstChild.data;
            }
            else{
                parseErrorText = Sarissa.getText(oDoc.documentElement);
            };
        };
        return parseErrorText;
    };
};
Sarissa.getText = function(oNode, deep){
    var s = "";
    var nodes = oNode.childNodes;
    for(var i=0; i < nodes.length; i++){
        var node = nodes[i];
        var nodeType = node.nodeType;
        if(nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE){
            s += node.data;
        }else if(deep == true
                    && (nodeType == Node.ELEMENT_NODE
                        || nodeType == Node.DOCUMENT_NODE
                        || nodeType == Node.DOCUMENT_FRAGMENT_NODE)){
            s += Sarissa.getText(node, true);
        };
    };
    return s;
};
if(window.XMLSerializer){
    Sarissa.serialize = function(oDoc){
        var s = null;
        if(oDoc){
            s = oDoc.innerHTML?oDoc.innerHTML:(new XMLSerializer()).serializeToString(oDoc);
        };
        return s;
    };
}else{
    if(Sarissa.getDomDocument && (Sarissa.getDomDocument("","foo", null)).xml){
        Sarissa.serialize = function(oDoc) {
            var s = null;
            if(oDoc){
                s = oDoc.innerHTML?oDoc.innerHTML:oDoc.xml;
            };
            return s;
        };
        XMLSerializer = function(){};
        XMLSerializer.prototype.serializeToString = function(oNode) {
            return oNode.xml;
        };
    };
};
Sarissa.stripTags = function (s) {
    return s.replace(/<[^>]+>/g,"");
};
Sarissa.clearChildNodes = function(oNode) {
    while(oNode.firstChild){
        oNode.removeChild(oNode.firstChild);
    };
};
Sarissa.copyChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) {
    if((!nodeFrom) || (!nodeTo)){
        throw "Both source and destination nodes must be provided";
    };
    if(!bPreserveExisting){
        Sarissa.clearChildNodes(nodeTo);
    };
    var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
    var nodes = nodeFrom.childNodes;
    if(ownerDoc.importNode && (!_SARISSA_IS_IE)) {
        for(var i=0;i < nodes.length;i++) {
            nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
        };
    }
    else{
        for(var i=0;i < nodes.length;i++) {
            nodeTo.appendChild(nodes[i].cloneNode(true));
        };
    };
};
Sarissa.moveChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) {
    if((!nodeFrom) || (!nodeTo)){
        throw "Both source and destination nodes must be provided";
    };
    if(!bPreserveExisting){
        Sarissa.clearChildNodes(nodeTo);
    };
    var nodes = nodeFrom.childNodes;
    if(nodeFrom.ownerDocument == nodeTo.ownerDocument){
        while(nodeFrom.firstChild){
            nodeTo.appendChild(nodeFrom.firstChild);
        };
    }else{
        var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
        if(ownerDoc.importNode && (!_SARISSA_IS_IE)) {
           for(var i=0;i < nodes.length;i++) {
               nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
           };
        }else{
           for(var i=0;i < nodes.length;i++) {
               nodeTo.appendChild(nodes[i].cloneNode(true));
           };
        };
        Sarissa.clearChildNodes(nodeFrom);
    };
};
Sarissa.xmlize = function(anyObject, objectName, indentSpace){
    indentSpace = indentSpace?indentSpace:'';
    var s = indentSpace  + '<' + objectName + '>';
    var isLeaf = false;
    if(!(anyObject instanceof Object) || anyObject instanceof Number || anyObject instanceof String 
        || anyObject instanceof Boolean || anyObject instanceof Date){
        s += Sarissa.escape(""+anyObject);
        isLeaf = true;
    }else{
        s += "\n";
        var itemKey = '';
        var isArrayItem = anyObject instanceof Array;
        for(var name in anyObject){
            s += Sarissa.xmlize(anyObject[name], (isArrayItem?"array-item key=\""+name+"\"":name), indentSpace + "   ");
        };
        s += indentSpace;
    };
    return s += (objectName.indexOf(' ')!=-1?"</array-item>\n":"</" + objectName + ">\n");
};
Sarissa.escape = function(sXml){
    return sXml.replace(/&/g, "&amp;")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&apos;");
};
Sarissa.unescape = function(sXml){
    return sXml.replace(/&apos;/g,"'")
        .replace(/&quot;/g,"\"")
        .replace(/&gt;/g,">")
        .replace(/&lt;/g,"<")
        .replace(/&amp;/g,"&");
};
/*****--在Firefox 下也可以像IE一样去取XML节点的值----------------********/
Sarissa.selectNodesValue = function (obj){
	if(document.all){
		return obj.text;
	}else{
		return obj.childNodes[0].nodeValue;
	}
}
Sarissa.selectNodes = function (obj){
		return obj.childNodes;
}
Sarissa.selectNode = function (obj){	
		return obj;
}
if(document.implementation && document.implementation.createDocument)
{
    XMLDocument.prototype.loadXML = function(xmlString)
    {
        var childNodes = this.childNodes;
        for (var i = childNodes.length - 1; i >= 0; i--)
            this.removeChild(childNodes[i]);

        var dp = new DOMParser();
        var newDOM = dp.parseFromString(xmlString, "text/xml");
        var newElt = this.importNode(newDOM.documentElement, true);
        this.appendChild(newElt);
    };

    // check for XPath implementation
    if( document.implementation.hasFeature("XPath", "3.0") ){
       // prototying the XMLDocument
       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";}
       }
    }else{
    	throw " XML analyaze Error"
    }

    // check for XPath implementation
    if( document.implementation.hasFeature("XPath", "3.0") ){
       // 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";}
       }
    }else{
    	throw " XML analyaze Error"
    }
}
//================sarissa js end=============================

//--------library by et begin---------------------
function $(element_id)
{
	return document.getElementById(element_id);
}

function et_trace(msg){
	var trace_ctrl = document.getElementById('et_trace_div');
	if(!trace_ctrl){
		trace_ctrl = document.createElement('div');
		trace_ctrl.id = 'et_trace_div';
		trace_ctrl.style.clear = 'both';
		document.getElementsByTagName('body')[0].appendChild(trace_ctrl);
	}
	trace_ctrl.innerHTML += '<br />' + msg;
}

function et_bookmark(url, title){
	if(window.ActiveXObject){window.external.AddFavorite(url, title);}
	else if(window.sidebar){window.sidebar.addPanel(title, url, '');}
	else if(window.opera)
	{
		var elem = document.createElement('a');
		elem.setAttribute('href', url);
		elem.setAttribute('title', title);
		elem.setAttribute('rel', 'sidebar');
		elem.click();
	}
}

function et_hint(msg)
{
	var hint_elem = $('et_hint');
	if(hint_elem){
		msg = msg.replace(/\n/g, '<br />');
		hint_elem.innerHTML = msg;
	}
	else
	{
		msg = msg.replace(/(<br>)|(<br\/>)|(<br \/>)/g, '\n');
		alert(msg);
	}
}

function et_str_trim(str)
{
	return str.replace(/^\s+|\s+$/g, '');
}

function et_str_ltrim(str)
{
	return str.replace(/^\s+/g, '');
}

function et_str_rtrim(str)
{
	return str.replace(/\s+$/g, '');
}

//arguments plus @ref :boolean reference equation
function et_arr_exists(arr, item)
{
	if(!arr){return false;}
	var ret = false;
	for(var i = 0; i < arr.length; i++)
	{
		if(arguments[2] == 1)
		{
			if(arr[i] === item)
			{
				ret = true;
				break;
			}
		}
		else
		{
			if(arr[i] == item)
			{
				ret = true;
				break;
			}
		}
	}
	return ret;
}

function et_time_format(format)
{
	format = new String(format);
	var ret = format;
	var local_time = new Date();
	var yy = local_time.getFullYear();
	var mm = (((local_time.getMonth() + 1) < 10) ? ('0' + (local_time.getMonth() + 1)) :(local_time.getMonth() + 1));
	var dd = ((local_time.getDate() < 10) ?  ('0' + local_time.getDate()) :local_time.getDate());
	var hh = ((local_time.getHours() < 10) ?  ('0' + local_time.getHours()) :local_time.getHours());
	var ii = ((local_time.getMinutes() < 10) ?  ('0' + local_time.getMinutes()) :local_time.getMinutes());
	var ss = ((local_time.getSeconds() < 10) ?  ('0' + local_time.getSeconds()) :local_time.getSeconds());
	var ww = local_time.getDay();
	if(ret == ''){ret = 'y-m-d h:i:s';}
	ret = ret.replace('y', yy);
	ret = ret.replace('m', mm);
	ret = ret.replace('d', dd);
	ret = ret.replace('h', hh);
	ret = ret.replace('i', ii);
	ret = ret.replace('s', ss);
	ret = ret.replace('w', ww);
	return ret;
}

function et_win_scroll_pos() 
{
  var scr_x = 0, scr_y = 0;
  if(document.body 
	 && (document.body.scrollLeft || document.body.scrollTop) 
	)
  {
    scr_y = document.body.scrollTop;
    scr_x = document.body.scrollLeft;
  }
  else if(document.documentElement
		  && (document.documentElement.scrollLeft || document.documentElement.scrollTop) 
	     ) 
  {
    scr_y = document.documentElement.scrollTop;
    scr_x = document.documentElement.scrollLeft;
  }
  return [scr_x, scr_y];
}

function et_win_size() 
{
	var myWidth = 0, myHeight = 0;
	if(typeof(window.innerWidth) == 'number') 
	{
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	}
	else if(document.documentElement 
			&& (document.documentElement.clientWidth || document.documentElement.clientHeight)
		   ) 
	{
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	}
	else if(document.body && (document.body.clientWidth || document.body.clientHeight)) 
	{
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [myWidth, myHeight];
}

function et_event_attach(target, event_type, function_ref, to_capture)
{
	if(typeof target.addEventListener != 'undefined')
	{
		target.addEventListener(event_type, function_ref, to_capture);
	}
	else if(typeof target.attachEvent != 'undefined')
	{
		var func_str = event_type + function_ref;
		target['e' + func_str] = function_ref;
		target[func_str] = function(event)
		{
			if(typeof event == 'undefined')
			{
				event = window.event;
			}
			target['e' + func_str](event);
		};
		target.attachEvent('on' + event_type, target[func_str]);
	}
	else
	{
		event_type = 'on' + event_type;
		if(typeof target[event_type] == 'function')
		{
			var old_listener = target[event_type];
			target[event_type] = function()
			{
				old_listener();
				return function_ref();
			}
		}
		else
		{
			target[event_type] = function_ref;
		}
	}
}

function et_event_detach(target, event_type, function_ref, to_capture)
{
	if(typeof target.addEventListener != 'undefined')
	{
		target.removeEventListener(event_type, function_ref, to_capture);
	}
	else if(typeof target.attachEvent != 'undefined')
	{
		var func_str = event_type + function_ref;
		target.attachEvent('on' + event_type, target[func_str]);
		target['e' + func_str] = null;
		target[func_str] = null;
		
	}
	else
	{
		event_type = 'on' + event_type;
		target[event_type] = null;
	}
}

function et_event_target(event)
{
	var target = null;
	if(typeof event.target != 'undefined')
	{
		target = event.target;
	}
	else
	{
		target = event.srcElement;
	}

	while(target.nodeType == 3 && target.parentNode != null)
	{
		target = target.parentNode;
	}
	return target;
}

function et_event_stop_default(event)
{
	event.returnValue = false;
	if(typeof event.preventDefault != 'undefined')
	{
		event.preventDefault();
	}
}

function et_event_cancel_bubble(event)
{
	if(typeof event.stopPropagation != 'undefined')
	{
		event.stopPropagation();
	}
	else
	{
		event.cancelBubble = true;
	}
}
//--------library by et end----------------------------------
function $urlParamValue(urls,name){
	var url = urls;
	var i = url.indexOf("?");
	if(i <0){
		return "";
	}
	var params = url;
	i = params.indexOf(name);
	if (i < 0) {
		return "";
	}else {
		return params.substring(0,i+name.length);
	}
}
function $url(name){
	var url = window.location.href;
	var i = url.indexOf("?");
	if (i < 0) {
		return "";
	}
	var params = url.substring(i + 1);
	i = params.indexOf(name + "=");
	if (i < 0) {
		return "";
	}
	var ei = params.indexOf("&", i + name.length);
	if (ei < 0) {
		ei = params.length;
	}
	return params.substring(i + name.length + 1, ei);
};
/**---取浏览器的 event 事件，主要是为了支持FireFox浏览器**/
function getEvent(){
	  if(document.all) {return window.event; }
      var func=getEvent.caller;  
      while(func!=null){    
          var arg0=func.arguments[0];
          if(arg0){
             if((arg0.constructor==Event || arg0.constructor ==MouseEvent)|| (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){    
                 return arg0;
              }
           }
           func=func.caller;
      }
   return null;
}