//扩展String类的方法
String.prototype.Trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}
String.prototype.Ltrim = function(){return this.replace(/(^\s*)/g, "");}
String.prototype.Rtrim = function(){return this.replace(/(\s*$)/g, "");}
String.prototype.TrimALL = function(){return this.replace(/[　\s\n\r]/g, "");}
String.prototype.ToNumber = function(){
	var str=this.Trim();
	var formatStr="1234567890.-";
	var dotHave=false;
	var _rt="";
	
	if (str!=null && str!="")
	for(var i=0;i<str.length;i++){
		var _char=str.substr(i,1);
		if (formatStr.indexOf(_char)>=0){
			if (_char!="-"&&_char!=".") _rt+=_char;
			else if(_char=="."&&!dotHave){_rt+=_char; dotHave=true;}
			else if(_char=="-"&&_rt==""&&!dotHave) _rt+=_char;
		}
	}
	return ((_rt=="")?0:Number(_rt));
};
String.prototype.toDbString=function(){
		var str=this;
		str=str.replace(/"/g,"＂");
		str=str.replace(/'/g,"＇");
		str=str.replace(/</g,"＜");
		str=str.replace(/>/g,"＞");
		str=str.replace(/,/g,"，");
		//str=str.replace(/\//g,"／");
		//str=str.replace(/[~`\!@#\$%\^&\*\(\)\-\+\=\|\\\{\}\[\]\:;"'<>,\.\?\/]/g,"");
		return str;
};
String.prototype.EchoHTML=function(){
	var str=this;
	if (str==null) return "";
	str=str.replace(/</g, "&lt;");
	str=str.replace(/>/g, "&gt;");
	str=str.replace(/ /g, "&nbsp;");
	return str;
};

String.prototype.strInFormat=function(FormatStr){
	var str=this;
	for(var i=0;i<str.length;i++){
		if(FormatStr.indexOf(str.charAt(i))==-1) return false;
	}
	return true;
};
String.prototype.IsDate=function(){
	var str=this;
	if(str=="") return false;
	if(!str.strInFormat("0123456789-")) return false;
	var tmpArr=str.split("-");
	if(tmpArr.length!=3) return false;
	var y=tmpArr[0]; m=tmpArr[1]; d=tmpArr[2];
	//if(y<2000||y>2020) return false;
	if(m<1||m>12) return false;
	if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&(d<1||d>31)) return false;
	if((m==4||m==6||m==9||m==11)&&(d<1||d>30)) return false;
	if((m==2&&y%4==0&&y%100!=0)&&(d<1||d>29)) return false;
	if((m==2&&!(y%4==0&&y%100!=0))&&(d<1||d>28)) return false;
	return true;
};

String.prototype.ToDate=function(){
	var str=this;
	var rt=null;
	if (this.IsDate()){
		var tmpArr=this.split("-");
		rt=new Date(tmpArr[0],Number(tmpArr[1])-1,tmpArr[2])
	}
	return rt;
};

String.prototype.IsNumeric=function(){
	return !isNaN(new Number(this))&&this.Trim()!="";	
};

String.prototype.ToRegExpStr=function(){
	return this.replace(/(\^|\$|\*|\+|\?|\{|\}|\,|\?|\.|\(|\)|\[|\]|\=|\:|\!|\-|\\|\|)/ig,"\\$1");
};

//==WordHTML==/////////////////////////////////////////////////////////////////////////
//WordHTML CSS 格式清除
String.prototype.CleanWordCss=function DoCleanCss(){
	var HtmlX=this;
	HtmlX=HtmlX.replace(/mso-[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	HtmlX=HtmlX.replace(/tab-[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	//HtmlX=HtmlX.replace(/MARGIN-?[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	//HtmlX=HtmlX.replace(/BORDER-?[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	HtmlX=HtmlX.replace(/PADDING-?[^:^=]*:[ ]*[^"^;]*;? ?/ig,"");

	HtmlX=HtmlX.replace(/TEXT-[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	HtmlX=HtmlX.replace(/PAGE-[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	HtmlX=HtmlX.replace(/LAYOUT-[^:]*:[ ]*[^"^;]*;? ?/ig,"");
	HtmlX=HtmlX.replace(/<\/?FONT[^>]*>/ig,"");
	HtmlX=HtmlX.replace(/FONT[-]?[^:^ ]*:[ ]*[^"^;]*;? ?/ig,"");

	HtmlX=HtmlX.replace(/ class=[^ ^>]*/ig,"");
	HtmlX=HtmlX.replace(/ style="[ ]*"/ig,"");
	return HtmlX;
};
//WordHTML Img 替换
String.prototype.ReplaceWordImg=function(){
	var HtmlX=this.toLowerCase();
	var strStart="<v:shape ",strEnd="</v:shape>";
	var i1,i2,ImgPart="";
	var re = new RegExp('width: *([^;^"]*).*height: *([^;^"]*).*<v:imagedata.*src="([^"]*)"','ig');
	i1=0;
	while(i1>=0){
		i2=0;
		i1=HtmlX.indexOf(strStart,i1);
		if (i1>=0){
			i2=HtmlX.indexOf(strEnd,i1);
			if (i2>i1){
				i2+=strEnd.length;
				
				ImgPart=HtmlX.substr(i1,i2-i1);
				var tmpArr = re.exec(ImgPart);
				if (RegExp.$1!=""&&RegExp.$2!=""&&RegExp.$3!=""){
					ImgPart="<img width='"+RegExp.$1+"' height='"+RegExp.$2+"' src='"+RegExp.$3+"'>";
				}else{
					ImgPart="";
				}
				
				var part1=HtmlX.substr(0,i1);
				var part2=(i2<HtmlX.length)?HtmlX.substr(i2):"";
				HtmlX=part1+ImgPart+part2;
				i1=0;
			}
		}
	}
	return HtmlX;
};
//WordHTML 所有 格式清除
String.prototype.CleanWordHtml=function(){
	var HtmlX=this;
	HtmlX=HtmlX.CleanWordCss();	//Word Css
	HtmlX=HtmlX.ReplaceWordImg();	//Word Image Tags
	
	//Word Other Tags
	HtmlX=HtmlX.replace(/<\/?.:[^>]*>/ig,""); //如：<v:imagedata>、</v:path>、<o:p>等
	HtmlX=HtmlX.replace(/<\/?[\?]?xml[^>]*>/ig,"");
	HtmlX=HtmlX.replace(/<\/?SPAN[^>]*>/ig,"");
	HtmlX=HtmlX.replace(/<\/?DIV[^>]*>/ig,"");
	HtmlX=HtmlX.replace(/(?:&nbsp;){2,}/ig,"&nbsp;");
	HtmlX=HtmlX.replace(/>l(?:&nbsp;)* /ig,">· ");
	return HtmlX;
};

//清除所有脚本
String.prototype.NoScript=function(){
	var HtmlX=this;
	//处理script标签
	HtmlX=HtmlX.replace(/((?:<|&lt;)script(?:.*)(?:>|&gt;))[\n|\x13|\\n]+/ig,"$1 ");
	HtmlX=HtmlX.replace(/[\n|\x13|\\n]+((?:<|&lt;)\/script(?:.*)(?:>|&gt;))/ig," $1");
	HtmlX=HtmlX.replace(/((?:<|&lt;)\/script(?:>|&gt;))/ig,"$1"+String.fromCharCode(10)+"_rn_"+String.fromCharCode(10));
	
	HtmlX=HtmlX.replace(/(?:<|&lt;)script(?:.*)(?:>|&gt;)(.*)((?:<|&lt;)\/script(?:>|&gt;))/ig,"");
	HtmlX=HtmlX.replace(/(?:<|&lt;)\/?script(?:.*)(?:>|&gt;)/ig,"");

	HtmlX=HtmlX.replace(/\n_rn_\n/ig,"");
	
	//处理标签中的事件
	HtmlX=HtmlX.replace(/([\s]+on(?:[^=]*)[\s]*\=[\s]*'(?:[^']*)')/ig,"");
	HtmlX=HtmlX.replace(/([\s]+on(?:[^=]*)[\s]*\=[\s]*"(?:[^"]*)")/ig,"");
	HtmlX=HtmlX.replace(/([\s]+)on((?:[^=]*)[\s]*\=)/ig,"$1$2");
	return HtmlX;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function IsNumKey(event){
	var K=event.keyCode;
	if (!(K==9||K==37||K==39||K==8||K==46||K==144||(K>=48&&K<=57)||(K>=96&&K<=105)||K==189)){
		event.returnValue=false;
	}
}

//== 文件名处理 ==///////////////////////////////////////////////////////////////
//文件名字符合法性检测
String.prototype.CheckFileChars=function(bAlert){
	var _rt=true;
	var FileNoChars=["\\","/",":","*","?","\"","<",">","|","'","&","#"];
	for (var i=0;i<FileNoChars.length;i++)
		if (this.indexOf(FileNoChars[i])>=0){
			_rt=false;
			break;
		}
	if (!_rt&&bAlert) window.alert("名称不能含有 "+FileNoChars.join(""));
	return _rt;
};
String.prototype.ToFileChars=function(){
	var _rt=this;
	_rt=_rt.replace(/\\/g	,"＼");
	_rt=_rt.replace(/\//g	,"／");
	_rt=_rt.replace(/\:/g	,"：");
	_rt=_rt.replace(/\*/g	,"＊");
	_rt=_rt.replace(/\?/g	,"？");
	_rt=_rt.replace(/"/g	,"＂");
	_rt=_rt.replace(/</g	,"＜");
	_rt=_rt.replace(/>/g	,"＞");
	_rt=_rt.replace(/\|/g	,"｜");
	_rt=_rt.replace(/'/g	,"＇");
	_rt=_rt.replace(/&/g	,"＆");
	_rt=_rt.replace(/#/g	,"＃");
	return _rt;
};
String.prototype.ToFileSize=function(unitLen){
	if (!unitLen) unitLen=1;
	var _unit=this.Trim(); _unit=_unit.substr(_unit.length-unitLen).toLowerCase();
	var _X=1;
	switch(_unit){
		case "k":
		case "kb":
			_X=1024;
			break;
		case "m":
		case "mb":
			_X=1024*1024;
			break;
		case "g":
		case "gb":
			_X=1024*1024*1024;
	}
	return _rt=this.ToNumber()*_X;
};
String.prototype.FormartFileSize=function(){
	if (this=="") return "";
	var num=this.ToNumber();
	var _unit="";
	if (num>=1024*1024*1024){
		num=num/(1024*1024*1024)
		_unit="G";
	}else if (num>=1024*1024){
		num=num/(1024*1024)
		_unit="M";
	}else if (num>=1024){
		num=num/1024
		_unit="K";
	}
	num=Math.round(num*100)/100
	return String(num)+_unit
};

function GetFileName(FileName){
	var tmpMain=FileName.Trim();
	if (tmpMain!=""){
		tmpMain=tmpMain.replace(/\//g,"\\");
		var n = tmpMain.lastIndexOf("\\");
		if (n!=-1) tmpMain=tmpMain.substr(n+1);
	}
	tmpMain=tmpMain.Trim();
	//if (tmpMain=="") tmpMain="unTitle";
	return tmpMain;
}

function GetMainName(FileName){
	var tmpMain=GetFileName(FileName);
	if (tmpMain!=""){
//		tmpMain=tmpMain.replace(/\//g,"\\");
//		var n = tmpMain.lastIndexOf("\\");
//		if (n!=-1){
//			tmpMain=tmpMain.substr(n+1);
			n = tmpMain.lastIndexOf(".");
			if (n!=-1)	tmpMain=tmpMain.substr(0,n);
//		}
	}
	tmpMain=tmpMain.Trim();
	//if (tmpMain=="") tmpMain="unTitle";
	return tmpMain;
}

function GetExtName(FileName){
	var tmpExt=FileName.Trim();//toUpperCase();
	if (tmpExt!=""){
		var n = tmpExt.lastIndexOf(".");
		if (n!=-1) tmpExt=tmpExt.substr(n+1)
		else tmpExt="";
	}
	return tmpExt;
}

function StringList(_value){
	try{_value=String(_value);}catch(e){_value="";}
	var _inst_=this;

	this.toString=function(){return _value;};
	this.toSortString=function(){
		var _tmpArr=_value.split(",");
		_tmpArr.sort();
		return _tmpArr.join(",");
	};

	this.ItemsAdd=function(str){
		try{str=String(str);}catch(e){str="";}
		var _tmpArr=str.split(",");
		
		for(var i=0;i<_tmpArr.length;i++)
		if (String("," + _value + ",").indexOf("," +_tmpArr[i]+ ",")<0)
			_value += (_value==""?"":",") + _tmpArr[i];
		return _value;
	};
	
	this.ItemsDel=function(str){
		try{str=String(str);}catch(e){str="";}
		var _tmpArr=str.split(",");
		var _tmpVal=String("," + _value + ",")
		for(var i=0;i<_tmpArr.length;i++){
			var _one="," +_tmpArr[i]+ ",";
			var _start=_tmpVal.indexOf(_one);
			if (_start>=0){
				_tmpVal=_tmpVal.substr(0,_start)+","+_tmpVal.substr(_start+_one.length);
			}
		}
		_value=_tmpVal.substr(1,_tmpVal.length-2);
		return _value;
	};
	
}

var JsLoaded_String=true;
