// JavaScript Document
(function(){
	window.Yan=
	{
		/*
		1:返回html
		Yan.ajax("2.html",{action:"edithit"},function(res)
		{
		alert(res);	
		},{dataType:'html'});
		
		2：返回xml
		Yan.ajax("2.html",{action:"edithit"},function(res)
		{
			alert(res);	
		});
		*/
		ajax:function(url,para,func,option,flag)
		{
			var ajax=
			{
				url:url,
				dataType:"xml",
				type:"POST",
				data:para,
				success:func
			};
			if(option)
			{
				if(!flag)
				{
					ajax=this.extend(ajax,option);
				}else
				{
					ajax=this.append(ajax,option);
				}
			}
			$.ajax(ajax);
		},
		/*
		把source的属性覆盖掉destination的属性
		eg.:
		var from={a:123,b:000,hello:function(){alert(1);}};
		var to={b:345,c:369};
		to=Yan.extend(to,from);
		for(p in to)
		{
			alert(to[p]);
		}
		to.hello();
		out:000,369,123
		*/
		extend:function(destination,source)
		{
			destination = destination || {};
			if(source)
			{
				for(var property in source)
				{
					var value = source[property];
					if(value !== undefined)
					{
						destination[property] = value;
					}
				}
				var sourceIsEvt = typeof window.Event == "function" && source instanceof window.Event;
				if(!sourceIsEvt && source.hasOwnProperty && source.hasOwnProperty('toString'))
				{
					destination.toString = source.toString;
				}
			}
			return destination;
		},
		/*
		把from的属性添加到to的属性
		var from={a:123,b:000,hello:function(){alert(1);}};
		var to={b:345,c:369};
		to=Yan.append(to,from);
		for(p in to)
		{
		alert(to[p]);
		}
		to.hello();
		out: 345,369,123
		*/
		append:function(to,from)
		{
			to = to || {};
			var fromIsEvt = typeof window.Event == "function" && from instanceof window.Event;
			for (var key in from)
			{
				if (to[key] === undefined ||
				(!fromIsEvt && from.hasOwnProperty
				&& from.hasOwnProperty(key) && !to.hasOwnProperty(key))) {
				to[key] = from[key];
				}
			}
			if(!fromIsEvt && from && from.hasOwnProperty
			&& from.hasOwnProperty('toString') && !to.hasOwnProperty('toString')) 
			{
				to.toString = from.toString;
			}    
			return to;
		},
		/*
		把json转为url参数
		eg.:
		var from={a:123,b:3451,hello:function(){alert(1);}};
		var to={b:345,c:369};
		alert(Yan.json2para(from));
		out:a=123&b=3451
		alert(Yan.json2para(to));
		out:a=345&b=369		
		*/
		json2para:function(params)
		{
			var paramsArray = [];
			for (var key in params) 
			{
				var value = params[key];
				if ((value != null) && (typeof value != 'function')) 
				{
					var encodedValue;
					if (typeof value == 'object' && value.constructor == Array) 
					{
						/* value is an array; encode items and separate with "," */
						var encodedItemArray = [];
						var item;
						for (var itemIndex=0, len=value.length; itemIndex<len; itemIndex++) 
						{
							item = value[itemIndex];
							encodedItemArray.push(encodeURIComponent((item === null || item === undefined) ? "" : item));
						}
						encodedValue = encodedItemArray.join(",");
					}
					else
					 {
						/* value is a string; simply encode */
						encodedValue = encodeURIComponent(value);
					}
					paramsArray.push(encodeURIComponent(key) + "=" + encodedValue);
				}
			}    
			return paramsArray.join("&");
		},
		getpara:function(url)
		{},
		/*
		eg.:
		alert(Yan.urlAppend("index.asp","aa=bb"));
		alert(Yan.urlAppend("index.asp?","aa=bb"));
		alert(Yan.urlAppend("index.asp?a=1","aa=bb"));
		*/
		urlAppend:function(url, paramStr) 
		{
			var newUrl = url;
			if(paramStr) 
			{
				var parts = (url + " ").split(/[?&]/);
				newUrl += (parts.pop() === " " ?paramStr :parts.length ? "&" + paramStr : "?" + paramStr);
			}
			return newUrl;
		},
		/*
		var a=[1,2,3,4,5];
		alert(Yan.removeItem(a,3));
		out:1,2,4,5
		*/
		removeItem:function(array, item)
		{
			for(var i = array.length - 1; i >= 0; i--) 
			{
				if(array[i] == item) 
				{
					array.splice(i,1);
					//break;more than once??
				}
		}
			return array;
		},
		/*
		eg.:
		var a=[1,2,3,4,5];
		alert(Yan.indexOf(a,3));
		out:2
		 If not found, returns -1.
		*/
		indexOf:function(array, obj)
		{
			if (typeof array.indexOf == "function") 
			{
				return array.indexOf(obj);
			}else
			{
				for (var i = 0, len = array.length; i < len; i++) 
				{
					if (array[i] == obj) {
					return i;
					}
				}
				return -1;   
			}
		},
		/*
		去掉空格
		*/
		trim: function(str) 
		{
        	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    	},
		startsWith: function(str, sub) 
		{
        	return (str.indexOf(sub) == 0);
    	},
		 contains: function(str, sub) 
		 {
    	    return (str.indexOf(sub) != -1);
	    },
		chkname:function(str,tip)
		{
			var sname=$("#"+str).val();
			//var sname=str;
			if(!sname)
			{
				alert( "请先填写您的姓名!" );
				$("#"+str).focus();
				return false;
			}
			var flag = ((/>|<|,|\[|\]|\{|\}|\?|\/|\+|-|=|\||\'|\\|\"|\.|:|;|\~|\!|\@|\#|\*|\$|\%|\^|\&|\(|\)|`/i).test(sname));
			if(sname.length>6 || sname.length <2 || flag)
			{
				if(!tip)
				{
					alert("姓名中不能包含特殊字符或小于2个字符或者大于6个字符.");
				}else
				{
					alert(tip);
				}
				$("#"+str).focus();
				return false;
			}
			var regular =/\s+/g;
			if (regular.test(sname)) 
			{
				alert('姓名中请不用包含空格!');
				$("#"+str).focus();
				return false;
			}
			return true;
		},
		chkemail:function(str)
		{
			var semail=$("#"+str).val();
			if(semail=='无'){return true;}
			if(!semail)
			{
				alert( "请先填写您的邮箱!" );
				$("#"+str).focus();
				return false;
			}
			var s=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
			if(!(s.test(semail)))
			{
				alert("邮箱不合规范.");
				$("#"+str).focus();
				return false;
			}
			return true;
		},
		chkaddr:function(str)
		{
			var saddr=$("#"+str).val();
			//var sname=str;
			if(!saddr)
			{
				alert("请先填写您的地址");
				$("#"+str).focus();
				return false;
			}
			var flag = ((/>|<|,|\[|\]|\{|\}|\?|\/|\+|-|=|\||\'|\\|\"|\.|:|;|\~|\!|\@|\#|\*|\$|\%|\^|\&|\(|\)|`/i).test(saddr));
			if(flag || saddr.length<5)
			{
				alert("地址中不能包含特殊字符或小于6个字符.");
				$("#"+str).focus();
				return false;
			}
			var regular =/\s+/g;
			if (regular.test(saddr)) 
			{
				alert('地址中不能包含空格!');
				$("#"+str).focus();
				return false;
			}
			return true;
		},
		chkidcard:function(str)
		{
			var snum=$("#"+str).val();
			if(!snum)
			{
				alert( "请先填写您的身份证号码!" );
				$("#"+str).focus();
				return false;
			}
			if (!(/(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/.test(snum)))
			{
				alert('输入的身份证号长度不对，或者号码不符合规定！\n15位号码应全为数字，18位号码末位可以为数字或X|x。');
				$("#"+str).focus();
				return false; 
			} 
			return true;
		},
		chktel:function(str)
		{
			var stel=$("#"+str).val();
			if(!stel)
			{
				alert("请先填写您的手机号码!");
				$("#"+str).focus();
				return false;
			}
			var reg=/[1][0-9]{10}/;
			if(!(reg.test(stel)))
			{
				alert("手机号码不合规范.");
				$("#"+str).focus();
				return false;
			}
			return true;
		},
		chkphone:function(str)
		{
			var sphone=$("#"+str).val();
			var s= /^(\d{3}-\d{8}|\d{4}-\d{7})$/;
			if(!(s.test(sphone)))
			{
				alert("固定电话格式为123-12345678,1234-1234567.");
				$("#"+str).focus();
				return false;
			}
			return true;
		},
		chkzip:function(str)
		{
			var szip=$("#"+str).val();
			if(!/^\d{6}$/.test(szip))
			{
				alert("请填写6位数字的邮政编码.");
				$("#"+str).focus();
				return false;
			}
			return true;
		},
		chkcode:function(str)
		{
			var scode=$("#"+str).val();
			if(!scode)
			{
				alert("请先填验证码!");
				$("#"+str).focus();
				return false;
			}
			var yzcode=$.cookie("Checknum");
			if(parseInt(yzcode)!=parseInt(scode))
			{
				alert("验证码输入不正确.");
				reloadimg(document.getElementById("codeimg"));				
				return false;
			}
			return true;
		},
		chknull:function(id)
		{
			var str=$("#"+id).val();
			if(!str)
			{
				alert("请先填写身份证号码.");
				$("#"+id).focus();
				return false;
			}
			var flag = ((/>|<|,|\[|\]|\{|\}|\?|\/|\+|-|=|\||\'|\\|\"|\.|:|;|\~|\!|\@|\#|\*|\$|\%|\^|\&|\(|\)|`/i).test(str));
			if(flag)
			{
				alert("身份证号码不能包含特殊字符.");
				$("#"+id).focus();
				return false;
			}
			var reg=/^\S+$/;
			if(!reg.test(str))
			{
				alert("身份证号码不能包含空格.");
				$("#"+id).focus();
				return false;
			}
			return true;
		},
		chknum:function(id)
		{
		},
		chkcookie:function()
		{
			if(!(document.cookie || navigator.cookieEnabled))  
			{  
				return false;
			} 
			return true;
		},
		VERSION_NUMBER:"Yan1.1"				
	};
})();
