/*
 *	JavaScript
 */


/* 业务相关函数
 **********************************************************/

function reloadMailSystem() {
	var url = "index.php?module=system&action=reload";
	jQuery.get(url, {'type': 'postfix'}, function(ret_data) {
		var json_data = eval('(' + ret_data + ')');
		if(json_data.status == 'OK') {
			alert("重启邮件系统完成！");
		} else {
			alert(json_data.message);
		}
	});
}


function restartAntiSpam() {
	var url = "index.php?module=system&action=reload";
	jQuery.get(url, {'type': 'antispam'}, function(ret_data) {
		var json_data = eval('(' + ret_data + ')');
		if(json_data.status == 'OK') {
			alert("重启反垃圾程序完成！");
		} else {
			alert(json_data.message);
		}
	});
}


/* 基础函数
 **********************************************************/

function E(name) {return document.getElementById(name);}
function Go(path) {window.location.href = path;}

//剔除字符串空白: http://www.yaosansi.com
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, "");}

//删除数组中指定位置的元素
function removeArray(array, dx) {if(isNaN(dx)||dx>array.length){return false;}array.splice(dx,1);}

//查询数据组是否存在指定项目
function findArrayItem(array, item) {for(var i=0; i<array.length; i++) {if(array[i] == item) return true;}return false;}

//删除数组中指定的元素
function removeArrayItem(array, item) {for(var i=0; i<array.length; i++) {if(array[i] == item) {array.splice(i, 1);break;}}}

//检测是否存在指定名称的函数
function checkFunction(funcName) {try {if(typeof(eval(funcName)) == "function") {return true;} else {return false;}} catch(e) {return false;}}

//密码强度检测
function evaluatePassword(word) {if (word == "") {return 0;} else if (word.length < 6) {return 1;} else {return word.match(/[a-z](?![^a-z]*[a-z])|[A-Z](?![^A-Z]*[A-Z])|\d(?![^\d]*\d)|[^a-zA-Z\d](?![a-zA-Z\d]*[^a-zA-Z\d])/g).length;}}

//检测邮件列表格式
function checkMailListFormat(maillist) {
	var mail_arr = maillist.split(',');
	for(var i=0; i<mail_arr.length; i++) {
		var str = mail_arr[i];
		var j = str.search("<");
		if(j != -1) {
			var name = str.substring(0, j);
			var mail = str.substring((j + 1), (str.length - 1));
			if(!checkStringFormat(name.trim(), {'type': 'chinese'})) return false;
			if(!checkStringFormat(mail.trim(), {'type': 'email'})) return false;
		} else {
			if(!checkStringFormat(str.trim(), {'type': 'email'})) return false;
		}
	}
	return true;
}

//选择多个复选框
function selectCheckboxAll(form_name, prefix, checkall) {
	var form = E(form_name);
	var checkall = checkall ? checkall : 'chkall';
	for(var i = 0; i < form.elements.length; i++) {
		var e = form.elements[i];
		if(e.name && e.name != checkall && (!prefix || (prefix && e.name.match(prefix)))) {e.checked = form.elements[checkall].checked;}
	}
}

//取得指定复选框的值
function getCheckboxValue(form_name, prefix) {
	var form = E(form_name);
	var data_list = [];
	for(var i = 0; i < form.elements.length; i++) {
		var e = form.elements[i];
		if(e.name && e.name.match(prefix) && e.checked) {data_list.push(e.value);}
	}
	return data_list;
}

//从 FILE 类型的 INPUT 表单中取得文件名称
function getInputFileName(string) {
	var string;
	if(string.indexOf('\\') || string.indexOf('/')) {
		if(string.indexOf('\\')) {var split_char = '\\';} else {var split_char = '/';}
		var array = string.split(split_char);
		string = array[array.length - 1];
	}
	return string;
}

/* 编辑器用函数 ***/
function getEditorHTMLContents(EditorName) {var oEditor = FCKeditorAPI.GetInstance(EditorName);return(oEditor.GetXHTML(true));}
function setEditorContents(EditorName, ContentStr) {var oEditor = FCKeditorAPI.GetInstance(EditorName);oEditor.SetHTML(ContentStr);}

/* 格式检测函数 ***/

//检测指定的值是否为无效或空值
function isInvalid(v) {if(v == undefined || v == '') return true;else return false;}

//检测指定的值是否为空
function isEmpty(v) {if(v == '') return true;else return false;}

//检测字串格式
//调用方法：checkStringFormat(string, {type: 'custom', pattern: /^[a-zA-Z0-9_]{3,15}$/})
function checkStringFormat(string, param) {
	if(isInvalid(string)) {return false;}
	if(isInvalid(param.type)) {alert("参数错误！");return false;}
	if(!isInvalid(param.length) && (string.length > param.length)) {return false;}

	var type = param.type;
	switch(type) {
		case "custom":
			if(isInvalid(param.pattern)) {alert("参数错误！");return false;}
			pattern = param.pattern;
		break;
		case "userid":
			pattern = /^[a-zA-Z0-9_]{3,15}$/;
		break;
		case "alphanum":
			pattern = /^[a-zA-Z0-9_.]*$/;
		break;
		case "mailname":
			pattern = /^\w+([-+.]\w+)*$/;
		break;
		case "number":
			pattern = /^\d+(\.(\d)+)?$/;
		break;
		case "integer":
			pattern = /^[-\+]?\d+$/;
		break;
		case "chinese":
			pattern = /^[\u4e00-\u9fa5_a-zA-Z0-9_.]+$/;
		break;
		case "email":
			pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
		break;
		case "domain":
			pattern = /^\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
		break;
		case "url":
			pattern = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
		break;
		case "phones":
			pattern = /^[0-9-]{3,15}$/;
		break;
		case "mobile":
			pattern = /(^[1][3][0-9]{9}$)|(^0[1][3][0-9]{9}$)/;
		break;
		case "phone":
			pattern = /(^([0][1-9]{2,3}[-])?\d{3,8}(-\d{1,6})?$)|(^\([0][1-9]{2,3}\)\d{3,8}(\(\d{1,6}\))?$)|(^\d{3,8}$)/;
		break;
		case "date":
			var re_dt = /^(\d{4})\-(\d{1,2})\-(\d{1,2})$/;
			pattern = function (s_date) {
				if (!re_dt.test(s_date)) return false;
				if (RegExp.$3 > 31 || RegExp.$2 > 12) return false;
				var dt_test = new Date(RegExp.$1, Number(RegExp.$2-1), RegExp.$3);
				if (dt_test.getMonth() != Number(RegExp.$2-1)) return false;
				return true;
			}
		break;
		case "time":
			var re_tm = /^(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/;
			pattern = function (s_time) {
				if (!re_tm.test(s_time)) return false;
				if (RegExp.$1 > 23 || RegExp.$2 > 59 || RegExp.$3 > 59) return false;
				return true;
			}
		break;
		case "ip":
			var re = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
			pattern = function (s_ip) {
				if (!re.test(s_ip)) return false;
				if (RegExp.$1>255 || RegExp.$2>255 || RegExp.$3>255 || RegExp.$4>255) return false;
				return true;
			}
		break;
		case "mac":
			pattern = /^([0-9A-Fa-f]{2})(-[0-9A-Fa-f]{2}){5}|([0-9A-Fa-f]{2})(:[0-9A-Fa-f]{2}){5}/;
		break;
		case "port":
			var re = /^[-\+]?\d+$/;
			pattern = function(s_port) {
				if (!re.test(s_port)) return false;
				if (s_port > 65535) return false;
				return true;
			}
		break;
	}

	if(typeof(pattern) != "function") {
		if(!pattern.test(string)) return false;
		if(string.search(pattern) == -1) return false;
	} else if(!pattern(string)) {return false;}

	return true;
}


