if (!String.prototype.replaceArray) {
	String.prototype.replaceArray=function(f,r,ci) { // f: array of values to search for; r: array of values to replace corresponding f; ci: boolean, case insensitive (optional; default: false)
		
		if (ci=="undefined" || ci==null) {
			var ci=false;
		}
		var str = this;
		var searchCase = "";
		if (ci) {var searchCase = "i";}
		for(var i=0; i<f.length; i++){
			if (f[i]!="undefined" && f[i]!=null && r[i]!="undefined" && r[i]!=null  && ( typeof(f[i])=="string" || typeof(f[i])=="number" || typeof(r[i])=="string" || typeof(r[i])=="number" ) ) {
				var re_f = f[i].toString();
				var sp = "g"+searchCase;
				var re = new RegExp(re_f,sp);
				str = str.replace(re,r[i]);
			}
		}
		return str;
	};
}
if (!String.prototype.unescapeHtml) {
	String.prototype.unescapeHtml = function () {
		var temp = document.createElement("div");
		temp.innerHTML = this;
		var result = temp.childNodes[0].nodeValue;
		temp.removeChild(temp.firstChild)
		return result;
	};
}

if (!String.prototype.removeCRLF) {
	String.prototype.removeCRLF=function() {	
		var str = this;
		str=str.replace(/\r\n/gi, "");
		str=str.replace(/\r/gi, "");
		str=str.replace(/\n/gi, "");
		return str;
	};
}

if (!String.prototype.cleanFileName) {
	String.prototype.cleanFileName=function(){
		var str=this;
		str = str.unescapeHtml();
		str = str.removeCRLF();
		str = str.substring(0,100);
		var f=new Array("ş","ţ","ă","î","â","Ş","Ă","Î","Ţ","Â",
		" ","&",
		"#|%|=",
		"\\\"|\\\'",
		"\<|\>",
		"＃|”|΄|％|＆|＋|？|／|＼|＜|＞|＝|﹡",
		"( |^)Lynx( |$)");
		var r=new Array("s","t","a","i","a","S","A","I","T","A",
		"_","_", 
		"_",
		"_",
		"_",
		"_",
		"Lynxx");
		str=str.replaceArray(f,r);
		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,"_");
		str=str.replace(/\./g,"_");
		str=str.replace(/\|/g,"_");
		str=str.replace(/\\/g,"_");
		str=encodeURI(str);
		return str;
	};
}


if (!String.prototype.replaceWideWithBasicASCII) {
	String.prototype.replaceWideWithBasicASCII = function() {
		// Unicode Block 'Halfwidth and Fullwidth Forms' => Unicode Block 'Basic Latin'
		// http://www.fileformat.info/info/unicode/block/halfwidth_and_fullwidth_forms/index.htm
		var str = this;
		str=str.replace(/／/gi, "/");
		str=str.replace(/﹡/gi, "*");
		str=str.replace(/”/gi, "\"");
		str=str.replace(/΄/gi, "'");
		str=str.replace(/％/gi, "%");
		str=str.replace(/＆/gi, "&");
		str=str.replace(/＋/gi, "+");
		str=str.replace(/＼/gi, "\\");
		str=str.replace(/＄/gi, "$");
		str=str.replace(/＜/gi, "<");
		str=str.replace(/＞/gi, ">");
		str=str.replace(/＝/gi, "=");
		str=str.replace(/？/gi, "?");
		str=str.replace(/＃/gi, "#");
		str=str.replace(/？/gi, "?");	
		str=str.replace(/＂/gi, "\"");	
		str=str.replace(/＇/gi, "'");
		return str;
	};
}

if (!String.prototype.cutString) {
	String.prototype.cutString=function(str_length){
		var str=this;
		str = str.unescapeHtml();
		str = str.replaceWideWithBasicASCII();
		str = str.removeCRLF();
		if (str.length > str_length) {str = str.substring(0,str_length) + '…';}
		return str;
	};
}