//全选函数，str为表单的form名称，如：selectall(form1)

function selectall(str){ 			

 for (var i=0;i<eval(str.elements.length);i++){ 

  var e=str.elements[i]; 

  if (e.name!="allbox") e.checked=str.allbox.checked; 

 } 

}

//表单验证函数，a为表单中datatype的类型，举例：onsubmit="return a.b(this,3)"

a = {								

	need : /.+/,

	email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,

	phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,

	mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,

	url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,

	idcard : "this.IsIdCard(value)",

	rmb : /^\d+(\.\d+)?$/,

	number : /^\d+$/,

	zip : /^[1-9]\d{5}$/,

	qq : /^[1-9]\d{4,8}$/,

	int : /^[-\+]?\d+$/,

	db : /^[-\+]?\d+(\.\d+)?$/,

	en : /^[A-Za-z]+$/,

	zh :  /^[\u0391-\uFFE5]+$/,

	date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",

	username : /^[a-z]\w{3,}$/i,

	UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,

	IsSafe : function(str){return !this.UnSafe.test(str);},

	SafeString : "this.IsSafe(value)",

	Filter : "this.DoFilter(value, getAttribute('accept'))",

	limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",

	LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",

	Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",

	Range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')",

	Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",

	Custom : "this.Exec(value, getAttribute('regexp'))",

	Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",

	ErrorItem : [document.forms[0]],

	ErrorMessage : ["请检查：\t\t\t\t"],

	

	b : function(theForm, mode){

		var obj = theForm || event.srcElement;

		var count = obj.elements.length;

		this.ErrorMessage.length = 1;

		this.ErrorItem.length = 1;

		this.ErrorItem[0] = obj;

		for(var i=0;i<count;i++){

			with(obj.elements[i]){

				var _dataType = getAttribute("t");//表单中的类型

				if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;

				this.ClearState(obj.elements[i]);

				if(getAttribute("require") == "false" && value == "") continue;

				switch(_dataType){

					case "idcard" :

					case "date" :

					case "Repeat" :

					case "Range" :

					case "Compare" :

					case "Custom" :

					case "Group" : 

					case "Limit" :

					case "LimitB" :

					case "SafeString" :

					case "Filter" :

						if(!eval(this[_dataType]))	{

							this.AddError(i, getAttribute("m"));//表单中的出错提示

						}

						break;

					default :

						if(!this[_dataType].test(value)){

							this.AddError(i, getAttribute("m"));//表单中的出错提示

						}

						break;

				}

			}

		}

		if(this.ErrorMessage.length > 1){

			mode = mode || 1;

			var errCount = this.ErrorItem.length;

			switch(mode){

			case 1 :

				alert(this.ErrorMessage.join("\n"));

				this.ErrorItem[1].focus();

				break;

			case 2 :

				for(var i=1;i<errCount;i++)

					this.ErrorItem[i].style.color = "red";

			case 3 :

				for(var i=1;i<errCount;i++){

				try{

					var span = document.createElement("SPAN");

					span.id = "__ErrorMessagePanel";

					span.style.color = "red";

					this.ErrorItem[i].parentNode.appendChild(span);

					span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");

					}

					catch(e){alert(e.description);}

				}

				this.ErrorItem[1].focus();

				break;

			default :

				alert(this.ErrorMessage.join("\n"));

				break;

			}

			return false;

		}

		return true;

	},

	limit : function(len,min, max){

		min = min || 0;

		max = max || Number.MAX_VALUE;

		return min <= len && len <= max;

	},

	LenB : function(str){

		return str.replace(/[^\x00-\xff]/g,"**").length;

	},

	ClearState : function(elem){

		with(elem){

			if(style.color == "red")

				style.color = "";

			var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];

			if(lastNode.id == "__ErrorMessagePanel")

				parentNode.removeChild(lastNode);

		}

	},

	AddError : function(index, str){

		this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];

		this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + "、" + str;

	},

	Exec : function(op, reg){

		return new RegExp(reg,"g").test(op);

	},

	compare : function(op1,operator,op2){

		switch (operator) {

			case "NotEqual":

				return (op1 != op2);

			case "GreaterThan":

				return (op1 > op2);

			case "GreaterThanEqual":

				return (op1 >= op2);

			case "LessThan":

				return (op1 < op2);

			case "LessThanEqual":

				return (op1 <= op2);

			default:

				return (op1 == op2);            

		}

	},

	MustChecked : function(name, min, max){

		var groups = document.getElementsByName(name);

		var hasChecked = 0;

		min = min || 1;

		max = max || groups.length;

		for(var i=groups.length-1;i>=0;i--)

			if(groups[i].checked) hasChecked++;

		return min <= hasChecked && hasChecked <= max;

	},

	DoFilter : function(input, filter){

return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);

	},

	IsIdCard : function(number){

		var date, Ai;

		var verify = "10x98765432";

		var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];

		var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];

		var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);

		if(re == null) return false;

		if(re[1] >= area.length || area[re[1]] == "") return false;

		if(re[2].length == 12){

			Ai = number.substr(0, 17);

			date = [re[9], re[10], re[11]].join("-");

		}

		else{

			Ai = number.substr(0, 6) + "19" + number.substr(6);

			date = ["19" + re[4], re[5], re[6]].join("-");

		}

		if(!this.IsDate(date, "ymd")) return false;

		var sum = 0;

		for(var i = 0;i<=16;i++){

			sum += Ai.charAt(i) * Wi[i];

		}

		Ai +=  verify.charAt(sum%11);

		return (number.length ==15 || number.length == 18 && number == Ai);

	},

	IsDate : function(op, formatString){

		formatString = formatString || "ymd";

		var m, year, month, day;

		switch(formatString){

			case "ymd" :

				m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));

				if(m == null ) return false;

				day = m[6];

				month = m[5]*1;

				year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));

				break;

			case "dmy" :

				m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));

				if(m == null ) return false;

				day = m[1];

				month = m[3]*1;

				year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));

				break;

			default :

				break;

		}

		if(!parseInt(month)) return false;

		month = month==0 ?12:month;

		var date = new Date(year, month-1, day);

        return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());

		function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}

	}

 }

//按比例缩小
var flag=false;   
function suo(ImgD,iwidth,iheight){   
//参数(图片,允许的宽度,允许的高度)   
var image=new Image();   
image.src=ImgD.src;   
if(image.width>0 && image.height>0){   
flag=true;   
if(image.width/image.height>= iwidth/iheight){   
if(image.width>iwidth){    
ImgD.width=iwidth;   
ImgD.height=(image.height*iwidth)/image.width;   
}else{   
ImgD.width=image.width;    
ImgD.height=image.height;   
}   
ImgD.alt=image.width+"×"+image.height;   
}   
else{   
if(image.height>iheight){    
ImgD.height=iheight;   
ImgD.width=(image.width*iheight)/image.height;    
}else{   
ImgD.width=image.width;    
ImgD.height=image.height;   
}   
ImgD.alt=image.width+"×"+image.height;   
}   
}   
}
