﻿//为String对象加入可以不区分大小写的indexOf方法
//最后一个参数为true表示不区分大小写
String.prototype._indexOf = String.prototype.indexOf;
String.prototype.indexOf = function(){
    if(typeof(arguments[arguments.length - 1]) != 'boolean')
        return this._indexOf.apply(this,arguments);
    else{
        var bi = arguments[arguments.length - 1];
        var thisObj = this;
        var idx = 0;
        if(typeof(arguments[arguments.length - 2]) == 'number') {
            idx = arguments[arguments.length - 2];
            thisObj = this.substr(idx);
        }
        
        var re = new RegExp(arguments[0],bi ? 'i':'');
        var r = thisObj.match(re);
        return r == null ? -1 : r.index + idx;
    }
}

//去左空格; 
String.prototype.ltrim = function(){ 
    return this.replace( /^\s*/, ""); 
} 
//去右空格; 
String.prototype.rtrim = function(){ 
    return this.replace( /\s*$/, ""); 
} 
//去左右空格; 
String.prototype.trim = function(){ 
    return this.rtrim().ltrim(); 
}

//创建一个XMLHttpRequest对象
if(typeof(XMLHttpRequest) == 'undefined'){
    var XMLHttpRequest = function(){
	    var request = null;
	    try{
		    request = new ActiveXObject('Msxml2.XMLHTTP');
	    }
	    catch(e){
		    try{
			    request = new ActiveXObject('Microsoft.XMLHTTP');
		    }
		    catch(ee)
		    {}
	    }
	    return request;
    }
}


//给FireFox XMLDocument添加 loadXML,selectNodes,selectSingleNode,selectSingleNode方法
if(!document.all){
	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";}
       }
    }

    // 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";}
       }
   }
}


//创建xmlDocument对象
var CreateXMLDom=function(){
	if (window.ActiveXObject) 
		var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
	else 
		if (document.implementation&&document.implementation.createDocument)
			var xmldoc=document.implementation.createDocument("","doc",null);
	xmldoc.async = false;
	//为了和FireFox一至，这里不能改为False;
	xmldoc.preserveWhiteSpace=true;
	return xmldoc;
}

//取得Url的HTML代码
function getHttpHtml(url)
{
	var host=url;	var myGet=new XMLHttpRequest();	myGet.open("get",host,false);	myGet.send(null);		return myGet.responseText;}

//检测浏览器 1为IE 2为FireFox 3为其他
function checkIE(){
	if(window.ActiveXObject){
		return 1;
	}
	else if (document.implementation && document.implementation.createDocument){		return 2;	}
	else{
		return 3;
	}
}

//功能：用XML nodes绑定select
//参数：objId select控件的ID
//      nodes xmldoc对象
//      selectValue 默认值
//返回：void
function bindSelect(objId,nodes,selectValue){
	var sObj=document.getElementById(objId);
	for(var i=0;i<nodes.length;i++){
		var opt=new Option(nodes[i].attributes[1].value,nodes[i].attributes[0].value);
		if(selectValue!=null&&nodes[i].attributes[0].value==selectValue){
			opt.selected=true;
		}
		sObj.options.add(opt);		
	}
	for(var i=0;i<sObj.options.length;i++){
		if(sObj.options[i].value==selectValue){
			sObj.options[i].selected=true;
		}
	}
}

//功能：设置Select值
//参数：objId select控件ID
//      selectValue 设置的值
//返回: void
function setSelectValue(objId,selectValue){	
	var sObj=document.getElementById(objId);
	var ops=sObj.getElementsByTagName('option');
	for(var i=0;i<ops.length;i++){
		if(ops[i].value==selectValue){
			ops[i].selected=true;
			return;
		}
	}
}

//功能：获取下拉菜单值
//参数：objId select控件的ID
//返回：string
function getSelectValue(objId){
	var sObj=document.getElementById(objId);
	try{
		return sObj.options[sObj.selectedIndex].value;
	}
	catch(e){
		return null;
	}
}

//功能：选择radio
//参数: objName radio控件的Name
//返回：string
function getRadioValue(objName){
	var radioObjs = document.getElementsByName(objName);
	try{
		for(var i=0;i<radioObjs.length;i++){
			if(radioObjs[i].checked==true){
				return radioObjs[i].value;
			}
		}
	}catch(e){
		return null;
	}
}

//获取复选框是否选中
function getCheckValue(objId)
{
	var checkObj = document.getElementById(objId);
	return checkObj.checked;
}

//选择CheckBox
function SelectCheckBox(setValue)
{
	var checkObjs = document.getElementsByName("checkID");
	for(var i=0;i<checkObjs.length;i++)
	{
		checkObjs[i].checked=setValue;
	}
}

//检测文件类型 fileType为文件类型字符串用逗号分割 如'gif,jpeg,bmp'
function CheckFileType(fileName,fileType)
{
	var type=fileName.substr(fileName.lastIndexOf('.')+1)
	var types=fileType.split(',');
	var isCheck=false;
	for(var i=0;i<types.length;i++)
	{
		if(types[i].toLowerCase()==type.toLowerCase())
		{
			isCheck=true;
			break;
		}
	}
	return isCheck;
}


//隐藏/显示Bar栏
function switchSysBar(strPoint, strBar){
    var objPoint = $(strPoint);
    var objBar = $(strBar);
    if (objPoint.innerText==3){
        objPoint.innerText=4
        objBar.style.display="none"
    }
    else{
        objPoint.innerText=3
        objBar.style.display=""
    }
}

//全选 反选
function SelectAll(tablename)
{
    var objTalbe = $(tablename);
    
	var e=objTalbe.getElementsByTagName("input");
	for(var i=0;i<e.length;i++)
	{
		if (e[i].type=="checkbox")
		{
			if(document.getElementById("selall").checked==true)
				e[i].checked=true;
			else
				e[i].checked=false;
		}
	}
}

//批量操作确认
function Mutil_Confirm(tablename,ShowMessage){
    if (confirm(ShowMessage)){
        if (SelCheckBox(tablename) == ''){
            alert('请至少选择一项！');
            return false;
        }else{
            return true;
            //alert(SelCheckBox(tablename));
        }		        
    }else{
        return false;
    }
}

//获取选择的CheckBox
function SelCheckBox(tablename){
    var objTable;
    if (tablename == '')
        objTalbe = document;
    else
        objTable = $(tablename);
    var element = objTable.getElementsByTagName("input");
	var mulid = "";
	for(var i=0; i<element.length; i++){
		if (element[i].type == "checkbox" && element[i].id != "selall"){	
			if (element[i].checked == true){
				if(mulid == '')
					mulid = element[i].value;
				else
					mulid += ", " + element[i].value;
			}
		}
	}
	if (mulid != ''){
	    return mulid;
	}
	else{
		return '';
	}
}

//弹出窗口
function WinOpenAllowResize(url,Width,Height,Left,Top){
    var parameters = 
        'height=' + Height + ',' +
        'width=' + Width + ',' +
        'top=' + Top + ',' +
        'left=' + Left + ',' +
        'toolbar=no,menubar=no,scrollbars=yes, resizable=yes,location=no, status=no';
    window.open(url,'',parameters);
}

//弹出窗口
function WinOpenUnResize(url,Width,Height,Left,Top){
    var parameters = 
        'height=' + Height + ',' +
        'width=' + Width + ',' +
        'top=' + Top + ',' +
        'left=' + Left + ',' +
        'toolbar=no,menubar=no,scrollbars=yes, resizable=no,location=no, status=no';
    window.open(url,'',parameters);
}

//弹出对话框
function PopDialog(url,vArguments,Width,Height,Left,Top){
	showx=Left;
	showy=Top;

	newWINwidth = Width + 4 + 18;
	var features =
		'dialogWidth:'  + newWINwidth  + 'px;' +
		'dialogHeight:' + Height + 'px;' +
		'dialogLeft:'   + showx     + 'px;' +
		'dialogTop:'    + showy     + 'px;' +
		'directories:no; localtion:no; menubar:no; status=no; toolbar=no;scrollbars:yes;Resizeable=no';
	
	retval = window.showModalDialog(url, vArguments , features );
	if( retval != null ){
		return retval;
	}else{
		return null;
	}
}

//获取url参数 strname:参数名称
function GetParaStr(strname){
    var pageUrl=document.location.href;
    pageUrl=pageUrl.substring(pageUrl.indexOf("?")+1);
    var para=pageUrl.split("&");
    var tempstr="";
    for (var i=0; i<para.length; i++){
        tempstr=para[i].split("=");
        if (strname==tempstr[0])
        {
            return tempstr[1];
        }
        //document.write(tempstr+'\n');
    }
    return "";
}

//生成一个javascript GUID
function CreateGUID(){    
    function S4(){
        return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    }
    
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
    
}

//生成一个日期字符串
function GetDataTimeString(){
    var a = new Date();
    var y = a.getYear()+"-";
    var m = a.getMonth()+"-";
    var d = a.getDay()+"-";
    var h = a.getHours()+"-";
    var x = a.getMinutes()+"-";
    var s = a.getSeconds()+"-";
    var ms = a.getMilliseconds();
    return y + m + d + h + x + s + ms;
}

/// <summary>
/// 去除html标签
/// 要控制被删除的标签列表,可以通过向TAGLIST常数中添加/删除标记来实现. 例如,要保留所有的<B>标签,则从TAGLIST中删除B. 
/// 当前的列表包含了MSDN中的所有html标签以及 LAYER 标签. 每个标签要用";"括起来. 
/// 开始标签和结束标签都会被删除,例如"<A...>"和</A...> 
/// 若标签同时在 TAGLIST 和 BLOCKTAGLIST 常数中,则起始标签和结束标签之间的所有内容都会被删除 
/// 没有结束标记的标签不被视为html标签,其内容不会被删除 
/// 块标签若没有结尾标记,从此标签开始到文本结束的所有内容会被删除 
/// 若"<!--"后跟的字符不是空格,注释标签不会被删除 
/// 使用这个函数很简单: 
/// strPlainText = RemoveHTML(strTextWithHTML)
/// 函数内容如下: 
/// </summary>
/// <param name="strHtml"></param>
/// <returns></returns>
function RemoveHTML(strHtml){
    String.prototype._indexOf = String.prototype.indexOf;
    String.prototype.indexOf = function(){
        if(typeof(arguments[arguments.length - 1]) != 'boolean')
            return this._indexOf.apply(this,arguments);
        else{
            var bi = arguments[arguments.length - 1];
            var thisObj = this;
            var idx = 0;
            if(typeof(arguments[arguments.length - 2]) == 'number') {
                idx = arguments[arguments.length - 2];
                thisObj = this.substr(idx);
            }
            
            var re = new RegExp(arguments[0],bi ? 'i':'');
            var r = thisObj.match(re);
            return r == null ? -1 : r.index + idx;
        }
    }

    var TAGLIST = "";
    TAGLIST += ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;";
    TAGLIST += "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;";
    TAGLIST += "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;";
    TAGLIST += "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;";
    TAGLIST += "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;";
    TAGLIST += "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;";
    TAGLIST += "PRE;Q;S;SAMP;SCRIPT;Select;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;";
    TAGLIST += "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;";

    var BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;";

    var nPos1 = 0, nPos2 = 0, nPos3 = 0;
    var strResult = "", strTagName = "";
    var bRemove, bSearchForBlock;

    nPos1 = strHtml.indexOf("<");
    while (nPos1 > -1){
        nPos2 = strHtml.indexOf(">", nPos1 + 1);
        if (nPos2 > -1){
            strTagName = strHtml.substr(nPos1 + 1, nPos2 - nPos1 - 1);
            strTagName = strTagName.replace(/\r/ig, " ").replace(/\n/ig, " ");

            nPos3 = strTagName.indexOf(" ");
            if (nPos3 > -1){
                strTagName = strTagName.substr(0, nPos3);
            }

            if (strTagName.substr(0, 1) == "/"){
                strTagName = strTagName.substr(1);
                bSearchForBlock = false;
            }
            else{
                bSearchForBlock = true;
            }

            if (TAGLIST.indexOf(";" + strTagName + ";", 1, true) > -1){
                bRemove = true;
                if (bSearchForBlock == true){
                    if (BLOCKTAGLIST.indexOf(";" + strTagName + ";", 1, true) > -1){
                        nPos2 = strHtml.length;
                        nPos3 = strHtml.indexOf("</" + strTagName, nPos1 + 1, true);
                        if (nPos3 > 0)
                            nPos3 = strHtml.indexOf(">", nPos3 + 1);
                        if (nPos3 > 0)
                            nPos2 = nPos3;
                    }
                }
            }
            else{
                bRemove = false;
            }

            if (bRemove == true){
                strResult = strResult + strHtml.substr(0, nPos1);
                strHtml = strHtml.substr(nPos2 + 1);
            }
            else
            {
                strResult = strResult + strHtml.substr(0, nPos1 + 1);
                strHtml = strHtml.substr(nPos1 + 1);
            }
        }
        else
        {
            strResult = strResult + strHtml;
            strHtml = "";
        }
        nPos1 = strHtml.indexOf("<");
    }

    strResult = strResult + strHtml;
    return strResult;
}

function FormatNum(Source,Length){   
    var strTemp="";   
    for(i=1; i<=Length-Source.length; i++){   
        strTemp+="0";   
    }   
    return   strTemp+Source;   
}     

function ClearError(obj){
    var lastNode = obj.parentNode.childNodes[obj.parentNode.childNodes.length-1];
	if(lastNode.id == "__ErrorMessagePanel")
		obj.parentNode.removeChild(lastNode);
}

function AddError(obj, msg){         
	try{
		var span = document.createElement("SPAN");
		span.id = "__ErrorMessagePanel";
		span.style.color = "red";
		obj.parentNode.appendChild(span);
		span.innerHTML = "*" + msg.replace(/\d+:/,"*");
    }catch(e){
        alert(e.description);
    }        
}



	



