// JavaScript Document

//重写一些常用方法
String.prototype.Trim = function(){return Trim(this);} 
String.prototype.ToStrs = function(){return ToStrs(this);}
String.prototype.ToNumbers = function(){return ToNumbers(this);}
Array.prototype.ToStr = function(){return ToStr(this);}
Array.prototype.Desc = function(){return Desc(this);}
Array.prototype.Asc = function(){return Asc(this);}
function Trim(str){
    var i;
    for(i = 0; i < str.length; i++) { 
        if(str.charAt(i) != " "){
        	break; 
		}
    }
	var j; 
    for(j = str.length-1; j >= 0; j--){ 
        if(str.charAt(j) != " "){
			break; 
		}
    } 
    str = str.substring(i, j+1);
	if(str == " "){
		return "";	
	}
	else{
		return str;
	}
} 
function ToStrs(str){
	var strs = str.split(',');
	for(var i = 0; i < strs.length; i++){
		strs[i] = strs[i].toString().Trim();
	}
	return strs;
}

function ToNumbers(str){
	var strs = str.split(',');
	var nums = new Array();
	for(var i = 0; i < strs.length; i++){
		nums[i] = Number(strs[i].Trim());
	}
	return nums;
}
function ToStr(arr){
	for(var i = 0; i < arr.length; i++){
		arr[i] = arr[i].toString().Trim();
	}
	return arr;
}
function Desc(arr){
	return ToOrder(arr, false);
}
function Asc(arr){
	return ToOrder(arr, true);
}
function ToOrder(arr, bl){
	if(arr.length > 0){
		if(typeof(arr[0]) == 'string'){
			
			for(var i = 0; i < arr.length; i++){
				for(var j = i + 1; j < arr.length; j++){
					if((!bl && arr[i].length < arr[j].length)||(bl && arr[i].length > arr[j].length)){
						var temp = arr[i];
						arr[i] = arr[j];
						arr[j] = temp;
					}
				}	
			}
			return arr;
		}
		else if(typeof(arr[0]) == 'number'){
			for(var i = 0; i < arr.length; i++){
				for(var j = i + 1; j < arr.length; j++){
					if((!bl && arr[i] < arr[j])||(bl && arr[i] > arr[j])){
						var temp = arr[i];
						arr[i] = arr[j];
						arr[j] = temp;
					}	
				}	
			}
			return arr;
		}
		else{
			return arr;	
		}
	}
	else{
		return arr;	
	}
}
//替换字符串方案
//按照i为字符标签移动替换
//遇见<则跳到到>后,不会替换a, strong, font, span节点中的字符串
//能够保持原来字符串的大小写不变化
//odds=true表示跳跃替换,即只替换50%的匹配项,
//odds=int表示替换的数量
function ToReplace(str, aimStr, reStr, value){
	var i = 0;
	var n = 0;
	var able = true;
	if(typeof(value) == 'boolean'){
		able = value;
	}
	var noElements = new Array();
	noElements[0] = "a";
	noElements[1] = "strong";//用于加粗提示
	noElements[2] = "font";//用于文字颜色显示
	noElements[3] = "span";//用于文字背景显示
    while (i < str.length){
		if(str.charAt(i) == "<" ){
			var noElement = null;
			for(var j = 0; j < noElements.length; j++){
				if(i+noElements[j].length < str.length +1 && str.substr(i, noElements[j].length + 1) == "<" + noElements[j]){
					noElement = noElements[j];
					break;
				}
			}
			if(noElement != null){
				for(var k = i + noElement.length + 1; k < str.length; k++){
					i = k;
					if(str.charAt(k) == "<" && k + noElement.length + 3 < str.length + 1 && str.substr(k, noElement.length + 3) == "</"+noElement+">"){
						i = k + noElement.length + 3;
						break;
					}
				}
			}
			else{
				for(var j = i + 1; j < str.length; j++){
					i = j;
					if(str.charAt(j) == ">"){
						i++;
						break;
					}
				}
			}
		}
		else if (str.charAt(i).toLowerCase() == aimStr.charAt(0).toLowerCase() && i + aimStr.length < str.length + 1 && str.substr(i, aimStr.length).toLowerCase() == aimStr.toLowerCase()){
			if(reStr == undefined){
				return true;	
			}
			if(able){
				var newStr = reStr;
				var bl = true;
				for(var j = 0; j < newStr.length; j++){
					if(newStr.charAt(j) == "<"){
						bl = false;	
					}
					if(newStr.charAt(j) == ">"){
						bl = true;
					}
					if(bl && newStr.charAt(j).toLowerCase() == aimStr.charAt(0).toLowerCase() && j + aimStr.length < newStr.length + 1 && newStr.substr(j, aimStr.length).toLowerCase() == aimStr.toLowerCase()){
						newStr = newStr.substr(0, j) + str.substr(i, aimStr.length) + newStr.substr(j + aimStr.length, newStr.length - (aimStr.length + j));
						break;
					}
				}
				str =  str.substr(0, i) + newStr + str.substr(i + aimStr.length, str.length - (aimStr.length + i));
				i += newStr.length;
				n++;
			}
			else{
				i += aimStr.length;
			}
			
			if(typeof(value) == 'boolean'){
				if(able){
					able = false;
				}
				else{
					able = true;
				}
			}
			else if(typeof(value) == 'number'){
				if(n >= value){
					break;
				}
			}
        }
        else{
			i++;
		}
	}
	if(reStr == undefined){
		return false;
	}
	else{
		return str;
	}
}

//把普通字符串转换为html代码
function StrToHtml(str){
	str = str.replace(/\t/g, "");
	str = str.replace(/\r/g, "");
	str = str.replace(/  /g, "&nbsp;&nbsp;");
	//str = str.replace(/</g, "&lt;");
	//str = str.replace(/>/g, "&gt;");
	str = str.replace(/\n/g, "<br />");
	return str;
}
//把html代码转换为普通字符串
function HtmlToStr(str){
	//alert(str);
	str = str.replace(/&nbsp;/g, ' ');
	str = str.replace(/<br \/>/g, '\n');
	str = str.replace(/<BR>/g, '\n');
	var i =0;
	while(i < str.length){
		if(i + 4 < str.length - 1 && str.substr(i, 4).toLowerCase() == "<img"){
			for(var j = i; j < str.length; j++){
				i = j;
				if(str.charAt(j) == '>'){
					i++;
					break;	
				}
			}
		}
		else if(str.charAt(i) == '<'){
			var bl = false;
			for(var j = i; j < str.length; j++){
				if(str.charAt(j) == '>'){
					str = str.substr(0, i) + str.substr(j + 1, str.length - j);
					bl = true;
					break;
				}
			}
			if(!bl){
				return str;
			}
		}
		else{
			i++;	
		}
	}
	return str;
}

