/*
 * 该类已作废，相关方法转至utils.js
 */

// 返回 min~max之间的随机数，包括min，不包括max
function rand (min, max){
	if(max-min<1)
		return -1;
	else
		return Math.floor(Math.random()*(max-min))+min
}

//验证字符串的是否为数字\字母\中文\下划线\空格
function validChars(str){
	if (str.replace(/ /g,"").length==0)
		return null;
	var re = new RegExp("^[A-Za-z0-9_ (\\u4e00-\u9fa5)]*$");
		return (str.match(re));
}

//客户端取得文本内容长度（以中文占两位计算str长度）
function getRealLen(str){
	var len=0;
	if (str)
		for(var i=0;i<str.length;i++)
			len+=str.charCodeAt(i)>255?2:1;
	return len;
}

//按照长度限制maxlen截取字符串str（以中文占两位计算str长度），如果str长度不足，则返回str
function truncUnicodeStr(str, maxlen){
	var len=0;
	if (str)
		for(var i=0;i<str.length;i++){
			len+=str.charCodeAt(i)>255?2:1;
			if (len>=maxlen)
				return str.substr(0,i+1);
		}

	return str;
}

// 计算超长短信将被拆分为多少条
function splitLongSMS(sms){
	len = sms.length;
	rlen = getRealLen(sms);

	if (len==rlen){
		if (len>160)
			return Math.ceil(len/152);
		else
			return 1;
	}else{
		if (len>70)
			return Math.ceil(len/66);
		else
			return 1;
	}
}

// 提取numbers中的合法手机号
function validMobileNumbers(numbers, separator){
	if (!numbers)
		return null;
	
	var reg = new RegExp("^(?:\\+?86)?((?:1(?:3|4|5|8)\\d{9})|(?:1060|0\\d{10,11}))$", "i");

	numbers = numbers.replace(/\D+/g, separator);
	var aryNum = numbers.split(separator);
	numbers="";
	

	for(var i=0; i<aryNum.length; i++){
		var num = aryNum[i];
		if (reg.test(num)){
			num = num.replace(reg, "$1");
			if(numbers.indexOf(num)<0)
				numbers+=separator+num;
		}
	}

	if (numbers.length>0)
		return numbers.substr(separator.length);
	else
		return null;
}


// 翻页
function pageJump(key, v){
	window.location=setQueryString(window.location.href.replace(/\#$/,""), key, escape(escape(v)));
}

// 设入一个查询键值
function setQueryString(url, key, v){
	if (!key) return url;
	
	var re = new RegExp("((?:.*)(?:^|&|\\?)"+key+"=)([^&#]*)(.+|$)");
	var re_qm = new RegExp("\\?", "ig");
	
	if (re.test(url))
		url=url.replace(re, "$1"+v+"$3");
	else if (re_qm.test(url))
		url=url+"&"+key+"="+v;
	else
		url=url+"?"+key+"="+v;
	return url;
}


// 获取一个查询键值
function getQueryString(url, key){
	if (!key) return url;
	
	var re = new RegExp("((?:.*)(?:^|&|\\?)"+key+"=)([^&#]*)(.+|$)");
	var mt = url.match(re);
	if (mt != null && mt.length>2)
		return unescape(mt[2]);
	else
		return null;
}


	// 把newstr附加到strset，sep为分割符（默认值为逗号）
	function addStr(strset, newstr, sep){
		if (!sep) sep=",";
		if (!newstr)
			return strset;
		else if (!strset)
			return newstr
		else{
			var ary = strset.split(sep);
			for (var i=0; i<ary.length; i++)
				if (ary[i]==newstr) return strset;
			// 未找到，附加并返回
			return strset+sep+newstr
		}
	}

	// 把newstr从strset中移除，sep为分割符（默认值为逗号）
	function removeStr(strset, newstr, sep){
		if (!sep) sep=",";
		if (!newstr)
			return strset;
		else if (!strset)
			return "";
		else{
			var ary = strset.split(sep);
			for (var i=0; i<ary.length; i++)
				if (ary[i]==newstr) ary[i]="";
			strset="";
			for (var i=0; i<ary.length; i++)
				if (ary[i]) strset+=sep+ary[i];
			
			if (strset) strset = strset.substr(sep.length);

			return strset;
		}
	}

	// Common functions for Paging
	// 隐藏元素
	function hideElement(id){
		var elm = document.getElementById(id);
		if (elm) elm.style.display="none";
	}
	
	// 显示元素
	function showElement(id){
		var elm = document.getElementById(id);
		if (elm) elm.style.display="";
	}
	
	// 重置文件域
	function resetFile(id){
		var old_file = document.getElementById(id);
		var new_file= old_file.cloneNode(false);
		new_file.onchange= old_file.onchange;// events are not cloned
		old_file.parentNode.replaceChild(new_file, old_file);
	}

	// 用于构造日期+时间选择下拉框
	// datetime 为时间字串，合法时间格式为yyyy-MM-dd HH:mm:ss或yyyyMMddHHmmss
	// id_datetime 指明日期变化时要修改的表单项的ID，日期初始值亦从这里修改
	// id_suffix 为选择单ID的后缀
	// flag_enable 标记是否disable
	function genDateTime(id_datetime, id_suffix, flag_enable){
		if (!id_datetime || !document.getElementById(id_datetime)) return "";

		var datetime = document.getElementById(id_datetime).value;

		var re = new RegExp("^(\\d{2,4})\\D*(\\d{1,2})\\D*(\\d{1,2})\\D*(\\d{1,2})\\D*(\\d{1,2})\\D*(\\d{1,2})$");
		var mt = datetime.match(re);

		var year, month, day, disable, onchange="";

		if (mt && mt.length==7){
			year = mt[1];
			month = mt[2];
			day = mt[3];
		}else{
			var date = new Date();
			year = date.getFullYear();
			month = date.getMonth()+1;
			if (month<10) month="0"+month;
			day = date.getDate();
			if (day<10) day="0"+day;
		}

		disable=(flag_enable?"":" disabled");
		onchange=" onpropertychange=\"document.getElementById('"+id_datetime+"').value=document.getElementById('d_"+id_suffix+"').value+' '+document.getElementById('h_"+id_suffix+"').value+':'+document.getElementById('m_"+id_suffix+"').value+':'+document.getElementById('s_"+id_suffix+"').value\"";

		var str="<input id=\"d_"+id_suffix+"\" value=\""+year+"-"+month+"-"+day+"\" type=\"text\" onfocus=\"setday(this);\" "+onchange+" size=\"10\""+disable+" readonly />\n";

		str+=genTime(id_datetime, id_suffix, flag_enable, true);

		return str;
	}
	
	// 用于构造时间选择下拉框
	// datetime 为时间字串，合法时间格式为hh:mm:ss或hhmmss
	// id_datetime 指明日期变化时要修改的表单项的ID
	// id_suffix 为选择单ID的后缀
	// flag_enable 标记是否disable
	// flag_with_date 是否连同日期一起，用于区分单独的时间模块和日期时间综合模块
	function genTime(id_datetime, id_suffix, flag_enable, flag_with_date){
		if (!id_datetime || !document.getElementById(id_datetime)) return "";

		var datetime = document.getElementById(id_datetime).value;
		
		var re = new RegExp("^(?:(\\d{2,4})\\D*(\\d{1,2})\\D*(\\d{1,2})\\D*)*(\\d{1,2})\\D*(\\d{1,2})\\D*(\\d{1,2})$");
		var mt = datetime.match(re);
		
		var hour, minute, second, disable, onchange="";

		disable=(flag_enable?"":" disabled");
		onchange=" onchange=\"";
		onchange+="document.getElementById('"+id_datetime+"').value=";
		onchange+=flag_with_date?"document.getElementById('d_"+id_suffix+"').value+' '+":"";
		onchange+="document.getElementById('h_"+id_suffix+"').value+':'+document.getElementById('m_"+id_suffix+"').value+':'+document.getElementById('s_"+id_suffix+"').value";
		onchange+="\"";

		if (mt && mt.length==7){
			hour = mt[4];
			minute = mt[5];
			second = mt[6];
		}else{
			var date = new Date();
			hour = date.getHours();
			if (hour<10) hour="0"+hour;
			minute = date.getMinutes();
			if (minute<10) minute="0"+minute;
			second = date.getSeconds();
			if (second<10) second="0"+second;
		}
		
		var str="";
		str+="<select id=\"h_"+id_suffix+"\""+disable+" "+onchange+">\n";
		str+=genTimeOptions(24, hour);
		str+="</select>时\n";
		str+="<select id=\"m_"+id_suffix+"\""+disable+" "+onchange+">\n";
		str+=genTimeOptions(60, minute);
		str+="</select>分\n";
		str+="<select id=\"s_"+id_suffix+"\""+disable+" "+onchange+">\n";
		str+=genTimeOptions(60, second);
		str+="</select>秒";
		
		return str;
	}

	// 用于构造时间选择下拉框的选项
	function genTimeOptions(n, sel){
		var str = "";
		for (var i=0; i<n; i++){
			var ii=(i<10)?"0"+i:i;
			if (i==sel)
				str+="<option value=\""+ii+"\" selected>"+ii+"</option>";
			else
				str+="<option value=\""+ii+"\">"+ii+"</option>";
		}
		return str;
	}
	
	// 用于enable和disable时间表单
	function enableDateTime(id_suffix, flag_enable){
		var elm;
		elm = document.getElementById("d_"+id_suffix);
		if (elm) elm.disabled=flag_enable?false:true;
		
		elm = document.getElementById("h_"+id_suffix);
		if (elm) elm.disabled=flag_enable?false:true;
		
		elm = document.getElementById("m_"+id_suffix);
		if (elm) elm.disabled=flag_enable?false:true;
		
		elm = document.getElementById("s_"+id_suffix);
		if (elm) elm.disabled=flag_enable?false:true;
	}

	//设定cookie值
	function setCookie(name, value, domain) {
		document.cookie = "[" + name + "]=" + escape(value) +";path=/"+ ((domain)?";domain="+domain:"")
		// + ((expire == null) ? "" : ("; expires=" + expire.toGMTString())) +";secure"
	}//:$
	
	//读取cookie值
	function getCookie(Name) {
		var search = "[" + Name + "]="
		if (document.cookie.length > 0) { // if there are any cookies
			offset = document.cookie.indexOf(search) 
			if (offset != -1) { // if cookie exists 
				offset += search.length 
				// set index of beginning of value
				end = document.cookie.indexOf(";", offset) 
				// set index of end of cookie value
				if (end == -1) 
					end = document.cookie.length
				return unescape(document.cookie.substring(offset, end))
			}
		}
	}//:$
	
	//删除cookie值
	function deleteCookie(name,path,domain){
		if(getCookie(name)) document.cookie = "["+ name +"]="+ ((path)?";path="+path:"") + ((domain)?";domain="+domain:"") //+";expires=Thu,01-Jan-70 00:00:01 GMT"
	}
	
	//设定类cookie值
	function setValue(src, Name, value) {
		var search = "[" + Name + "]=";
		if (Name && value){
			if (src) { // if there are any cookies
				var offset = src.indexOf(search);
				if (offset != -1) { // if cookie exists 
					offset += search.length;
					var end = src.indexOf(";", offset);
					if (end == -1) end = src.length;
					if (value) return src.substring(0,offset) + escape(value) + src.substring(end);
				} 
			}
			return search + escape(value) + ";" + ((src)?src:"")
		}else return src
	}//:$
	
	//读取类cookie值
	function getValue(src, Name) {
		var search = "[" + Name + "]=";
		if (Name){
			if (src) { // if there are any cookies
				var offset = src.indexOf(search);
				if (offset != -1) { // if cookie exists 
					offset += search.length;
					var end = src.indexOf(";", offset);
					if (end == -1) end = src.length;
					return unescape(src.substring(offset, end));
				} 
			}
		}
	}//:$

	// 把对象的内容输出
	function printObject(obj){
		var str="";
		for (e in obj) str+=(e+"\t"+obj[e]+"\n");
		return str;
	}

	// 交换数组中两个元素的位置
	function swap(ary, idx1, idx2){
		if (!ary){
			alert("Array to be swapped is null !");
			return;
		}
		if (ary.length<idx1||ary.length<idx2){
			alert("The indexes of items to be swapped are out of range !"
				+"\n\nary.length="+ary.length+"\nindex1="+idx1+"\nindex2="+idx2);
			return;
		}
		var x=ary[idx1];
		ary[idx1]=ary[idx2];
		ary[idx2]=x;
	}

	// 如果图片大小超过设定的上限，则按比例缩小之。建议将图片对象设为display:none，以免出现明显的缩小动作
	function resize(img, widthAllowance, heightAllowance){
		img.style.display="block";

		if (img.width/img.height>widthAllowance/heightAllowance){
			if (img.width>widthAllowance) img.width=widthAllowance;
		}else{
			if (img.height>heightAllowance) img.height=heightAllowance;
		}
	}
	
	// trim
	function trim(s){
		return s.replace(/(^\s*)|(\s*$)/g,"");
	}
	
	function isBlank(s){
		return (s == null) || (s == undefined) || (trim(s) == "");
	}
	

	