/*******************************************

表单验证程序


[eg]
var ck_data = new Array(); 
ck_data.push(Array("realname","0","请输入姓名！","text","2","9"));
ck_data.push(Array("contract_type","1","请输入电子邮件！","email....","6"));
ck_data._dockform();

二维数组：
realname		表单元素的 ID 值
1 or 0			该表单值是否需要判空，1 表示需要（即必填项），0 表示不需要（即非必填项，如 email、手机等）
请输入姓名！		在 alert 中显示的语言
text|phone...	是否需要进行特殊的判断（具体包含：[text]正常字符串、[mphone]手机号、[phone]电话号、[email]邮箱地址、[num]纯数字、[letter]纯字母）
2				指定字符串最短长度（若无后一个参数，则次数为最大长度，最小为1）
9				指定字符串的最大长度

********************************************/

/*
window.onload = function(){
	var ck_data = new Array(); 
	ck_data.push(Array("realname","0","请输入姓名！","text","2","9"));
	ck_data.push(Array("contract_type","1","请输入电子邮件！","email....","6"));
	ck_data._dockform();
}
//*/

//去除两边的空格
function Trim(str)
{
    return str.replace(/(^\s*)|(\s*$)/g, "");
}


//去除左边的空格
function LTrim(str)
{
    return str.replace(/(^\s*)/g, "");
}


//函数功能：去除右边的空格
function RTrim(str)
{
    return this.replace(/(\s*$)/g, "");
}



//函数功能：判断给定字符串是否为空
function IsNull(str)
{
    return (Trim(str) == "") ? true : false;
}


//函数功能：判断给定字符串长度是否在指定范围
function lengthbetwin(str,lengthbegin,lengthend)
{
	if(Trim(str).length < lengthbegin || Trim(str).length > lengthend)
	{
		return false;
	}
	return true;
}

//函数功能：判断给定字符串长度是否为指定值
function lengthcheck(str,length)
{
	if(Trim(str).length == length)
	{ 
	 return true;
	 
	}
	return false;

}


//判断是否是有效的EMAIL地址
function IsEmail(mail)
{
	mail = Trim(mail);
    return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}


//检测字符串是否全为数字
function IsNumber(str)
{
	str = Trim(str);
    var number_chars = "1234567890.";
    var i;
    for (i = 0; i < str.length; i++)
    {
        if (number_chars.indexOf(str.charAt(i))==-1) return false;
    }
    return true;
}
/*
函数名称：IsTelephone
函数功能：固话，手机号码检查函数，合法返回true,反之,返回false
函数参数：obj,待检查的号码
检查规则：
　　(1)电话号码由数字、"("、")"和"-"构成
　　(2)电话号码为3到8位
　　(3)如果电话号码中包含有区号，那么区号为三位或四位
　　(4)区号用"("、")"或"-"和其他部分隔开
　　(5)移动电话号码为11或12位，如果为12位,那么第一位为0
　　(6)11位移动电话号码的第一位和第二位为"13"
　　(7)12位移动电话号码的第二位和第三位为"13"
*/

function Isphone(obj)
{
	obj = Trim(obj);
    var pattern=/(^([0\+]\d{2,3})\d{3,4}\-\d{3,8}$)|(^([0\+]\d{2,3})\d{3,4}\d{3,8}$)|(^\d{3,4}\d{3,8}$)|(^\d{3,4}\-\d{3,8}$)/;
    return (pattern.test(obj)) ? true : false;
}

function Ismobile(obj)
{
	obj = Trim(obj);
    var pattern=/^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])\d{8}$/;
    return (pattern.test(obj)) ? true : false;
}

//检测字符串是否为字母
function Isletter(str)
{
	str = Trim(str);
    var number_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    var i;
    for (i = 0; i < str.length; i++)
    {
        if (number_chars.indexOf(str.charAt(i))==-1) return false;
    }
    return true;
}

//检测字符串是否为数字或字母
function IsNumberletter(str)
{
	str = Trim(str);
    var number_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    var i;
    for (i = 0; i < str.length; i++)
    {
        if (number_chars.indexOf(str.charAt(i))==-1) return false;
    }
    return true;
}

//检测是否正常字符串
function IsRealString(str)
{
	str = Trim(str);
    var number_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
    var i;
    for (i = 0; i < str.length; i++)
    {
        if (number_chars.indexOf(str.charAt(i))==-1) return false;
    }
    return true;
}


function $obj(s){
	return document.getElementById(s);
}

Array.prototype.checkformdata = function (){
	//alert(this.length);
	
	if(this[0] == "undefined" || this[1] == "undefined" || this[2] == "undefined"){
		return false;
	}
	
	var obj = $obj(this[0]);
	if(obj == null) return false;
	
	var v	= obj.value;
	var alert_msg = this[2];
	
	
	// 判断是否为空
	if(IsNull(v)) {
		if(this[1]==1){ // 对于不能为空的字段，返回 false
			alert(alert_msg);
			obj.focus();
			return false;
		}else{
			return true;
		}
		
	}
	
	
	if(this[5] != "undefined"){  // 判断是否为指定的区间长度
		var s = this[4];
		var e = this[5];
		if(!lengthbetwin(v,s,e)){
			alert(alert_msg);
			obj.focus();
			return false;
		}
	}else if(this[4] != "undefined"){ // 判断是否为指定长度
		var s = this[4];
		if(!lengthcheck(v,s)){
			alert(alert_msg);
			obj.focus();
			return false;
		}
	}
	if(this[3] != "undefined"){ // 判断各种特殊情况
		var t = this[3];
		var rst = true;
		switch (t) {
			case "text":
				rst = IsRealString(v);
				break;
			case "mphone":
				rst = Ismobile(v);
				break;
			case "phone":
				rst = Isphone(v);
				break;
			case "email":
				rst = IsEmail(v);
				break;
			case "num":
				rst = IsNumber(v);
				break;
			case "letter":
				rst = Isletter(v);
				break;
		}
		if(!rst){
			alert(alert_msg);
			obj.focus();
			return false;
		}
	}
	
	return true;
	
};

Array.prototype._dockform = function () {
	_tmp_ary = new Array;
	for(var i=0; i<this.length; i++){
		
		_tmp_ary = this[i];
		
		if(!_tmp_ary.checkformdata()) return false;
		
	}
	
	return true;
}
