/*
ver 2007.07.09
*/

var MathUtil = {
	//將數值簡化為小數後面X位數
	roundTo: function(base, precision) {
		var m = Math.pow(10, precision);
		var a = Math.round(base * m) / m;
		return a;
	},
	randomBetween: function(min, max) {
		return min + Math.floor(Math.random() * (max - min + 1));
	},
	//格式化貨幣, 必要時加上小數點及尾端的0
	formatTo: function(base, precision) {
		var a = this.roundTo(base, precision);
		var s = a.toString();
		var decimalIndex = s.indexOf(".");
		if (precision > 0 && decimalIndex < 0) {
			decimalIndex = s.length;
			s += '.';
		}
		while (decimalIndex + precision + 1 > s.length) {
			s += '0';
		}
		return s;
	},
	getOrdinal: function(n) {
		var ord = 'th';
		if (n % 10 == 1 && n % 100 != 11) {
			ord = 'st';
		} else if (n % 10 == 2 && n % 100 != 12) {
			ord = 'nd';
		} else if (n % 10 == 3 && n % 100 != 13) {
			ord = 'rd';
		}
		return ord;
	}
	
}



var StringUtil = {
	startsWith: function(target, prefix) {
		return (target.substr(0, prefix.length) == prefix);
	},
	endsWith: function(target, suffix) {
		return target.substring(target.length-suffix.length)==suffix;
	},	
	concat: function(target, str) {
		return new String(target.toString()+str);
	},
	toCharArray: function(target) {
		var charArr=new Array(target.length);
		for(var i=0;i<target.length;i++) {
			charArr[i]=target.charAt(i);
		}
		return charArr;
	},
	containedChinese: function(target) {
		//return (target.length != target.replace(/[^\x00-\xff]/g,"**").length);
		return (/[^\x00-\xff]/g.test(target));
	},
	getlength: function(target) {
		//計算漢字, 讓漢字佔兩個字元
		var temp=target.match(/[^\x00-\xff]/ig);
		return target.length+(temp==null?0:temp.length);
	},
	trim: function(target) {
		return target.replace(/(^\s*)|(\s*$)/g,"");
	}
}

var ArrayUtil = {
	max: function(target) {
		var i, max = target[0];
		for (i = 1; i < target.length; i++) {
			if (max < target[i]) {
				max = target[i];
			}
		}
		return max;
	}
};


var SelectUtil = {
	/**
	*選中指定值的select
	*如︰有一個名稱為user的select
	*<option value="0"></option>
	*<option value="1"></option>
	*調用這個方法selectOption("user","0")那麼選項為0的選項就被選中
	*
	*@name  String  指定select的name
	*@value String  指定option的值
	*/
	selectOption: function(name, value) {
		document.getElementsByName(name)[0].value=value;
	}
};


var CheckboxUtil = {
	/**
	*選中指定值的checkbox
	*
	*@name 指定的checkbox的名稱
	*@value 狀態被更動的值(可用逗號做分隔)
	*/
	checkedByValue: function(state, name, value) {
		var checkObject = document.getElementsByName(name);
		var valuevalues = value.split(",");
		for(var j = 0; j < values.length; j++) {
			for (var i = 0; i < checkObject.length; i++) {
				if(checkObject[i].value == values[j]) {
					checkObject[i].checked = state;
					break;
				}
			}
		}
	},
	/**
	* 全選頁面上所有的checkbox
	*@state　(true|false)全選的checkbox的狀態
	*/
	checkedAll: function(state) {
		var inputs = document.getElementsByTagName("input");
		for(var i =0;i<inputs.length;i++) {
			if(inputs[i].type == "checkbox") {
				inputs[i].checked =state;
			}
		}
	}
};


var RadioUtil = {
	/**
	*選中指定值的Radio
	*@name 指定的radio名稱
	*@value 狀態被更動的值
	*/
	checkedByValue: function(name,value) {
		var radioObject = document.getElementsByName(name);
		if(value === "") {
			radioObject[0].checked = true;
			return;
		}
		for (var i = 0; i < radioObject.length; i++) {
			if(radioObject[i].value == value) {
				radioObject[i].checked = true;
				break;
			}
		}
	}
};

var ObjectUtil = {
	clone: function(target) {
		var newObj = new Object();
		for(elements in target){
			newObj[elements] = target[elements];
		}
		return newObj;
	},
	cloneAll: function(target) {
		function clonePrototype(){}
		clonePrototype.prototype = target;
		var obj = new clonePrototype();
		for(var ele in obj){
			if(typeof(obj[ele])=="object") obj[ele] = obj[ele].cloneAll();
		}
		return obj;
	}
};

/*
限制只能輸入中文：onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" 
限制只能輸入全角字符： onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" 

*/