
			 ;(function($)
			  {
				$.extend(
				{					
					utils:
					{
						test:function(s,p)
						{
							//s 字符串或通过getElementById()得到的对象  p匹配规则						
							s = s.nodeType == 1 ? s.value : s;
							return s == '' || new RegExp(p).test(s);
						},
						ltrim:function(text){							
							return (text || "").replace(/^\s+/g,"");
						},
						rtrim:function(text){
							return (text || "").replace(/\s+$/g,"");							
						},
						isAlphaNumber:function(str){
							return this.test(str,"^[a-zA-Z0-9]+$");							
						},
						isEnglish:function(str){
							return this.test(str,"^[a-zA-Z]+$");							
						},
						isUrl: function(str){
							return this.test(str, "^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$");
						},
						charset:function(){
							if($.browser.mozilla)
							{
								return document.characterSet;
							}
							else
							{
								return document.charset;
							}
						},
						length:function(str)
						{														
							return str.replace(/[^\x00-\xff]/g, "**").length;							
						},
						isNumber:function(s)
						{						
							return this.test(s, "^(-?\\d+)(\\.\\d+)?$");						
						},
						isInt:function(val)
						{						
							return this.test(val,"^-?\\d+$"); 
						},
						isEmail:function(email)
						{							
							return this.test(email,"^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$");
						},
						isEmpty : function(s) 
						{							
							if(typeof(s) == "undefined")
							{								
								return true;
							}
							
							if( typeof(s) == "string")
							{	
								return new RegExp('^\\s*$').test(s);					
							}
														
							if( typeof(s) == "object")
							{																																
								if( s.type == "radio" || s.type == "checkbox")
								{
									if( $("input[name='" + $(s).attr("name") + "']:checked").length == 0)
									{
										return true;
									}
									else
									{
										return false;
									}
								}																
							}
							
							return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
																					
						},
						isChinese:function(s)
						{
							return this.test(s, "[\u0391-\uFFE5]+");
						},
						isCurrency:function(s)
						{
							return this.test(s,"^\d+(\.\d+)?$");
						},
						startsWith:function(s, sStarts)
						{
							s = s || "";
							sStarts = sStarts || "";
							
							if(s.length < sStarts.length)
							{
								return false;
							}								
							return  (s.substr(sStarts.length) == sStarts);														
						},
						endsWith:function(s, sEnds)
						{
							s = s || "";
							sEnds = sEnds || "";
							
							if(s.length < sEnds.length)
							{
								return false;
							}																																						
							return  (s.substr(s.length - sEndss.length. sEnds.length) == sEnds);														
						},
						
						isImage:function(ext)
						{
							if( typeof(ext) == "undefined" || ext == "")
							{
							   return false;
							}
						   //根据扩展名判断是否是图片格式的文件
						    var imgExts = "gif|jpg|jpeg|png|bmp";
						    
						    var iPos = ext.lastIndexOf(".");						    
						    var sExt = ext.substr(iPos+1).toLowerCase();	

							var bRet = false;
						    if( sExt == "gif" || sExt == "jpg" || sExt == "jpeg" || sExt == "png" || sExt == "bmp")
						    {
								bRet = true;
						    }
						    return bRet;
						   
						},			
						truncate:function(str, length, suffix) 
						{
							if (str.length <= length) {
								return str;
							}

							if (suffix == undefined) {
								suffix = '...';
							}

							return str.substr(0, length).replace(/\s+?(\S+)?$/g, '') + suffix;
						},		
						isTime:function(str)
						{
							if(!str){
								return false;
							}
							var arr = str.split(":");
							if(arr.length!=3){
								return false;
							}
							if(!isNumber(arr[0])||!isNumber(arr[1])||!isNumber(arr[2])){
								return false;
							}
							var date = new Date();
							date.setHours(arr[0]);
							date.setMinutes(arr[1]);
							date.setSeconds(arr[2]);
							return date.toString().indexOf("Invalid")<0;
						},																			
						isDate:function(sDate, sFormat)
						{
							//sFormat:ymd或者是dmy
							
							var formatString = sFormat || "ymd";		
							var m, year, month, day;
							switch(formatString){
							case "ymd" :
								m = sDate.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;								
								
								//log.info(day + "," + month + "," +  m[2]);
								if( m[2].length != 4) return false;
								
								year = m[2];
							break;
							case "dmy" :
								m = sDate.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;
								if( m[5].length != 4)
									return false;
								year = m[5];
							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());							
						},
						isNull:function(v)
						{
							return v===null||typeof(v)=="undefined";
						},
						isNotNull:function(v)
						{
							return !$.utils.isNull(v);
						},
						JSON2String:function(O)
						{ //将Json对象转化为String
							var string = [];
							var isArray = function(a) {
								var string = [];
								for(var i=0; i< a.length; i++) string.push($.utils.JSON2String(a[i]));
								return string.join(',');
							};
							var isObject = function(obj) {
								var string = [];
								for (var p in obj){
									if(obj.hasOwnProperty(p) && p!='prototype'){
										string.push('"'+p+'":'+ $.utils.JSON2String(obj[p]));
									}
								};
								return string.join(',');
							};
							
							
							if (!O) return false;
							if (O instanceof Function) string.push(O);
							else if (O instanceof Array)
							{
							
								string.push('['+isArray(O)+']');
							}
							else if (typeof O == 'object') 
							{				
								string.push('{'+isObject(O)+'}');
							}
							else if (typeof O == 'string') string.push('"'+O+'"');
							else if (typeof O == 'number' && isFinite(O)) string.push(O);
							return string.join(',');
						},
						JSON2Object:function(str)
						{ //将Json字串转化为Json对象
							return (typeof str=="string")?eval('(' + str + ')'):str;
						},
						formDataGet:function($context)
						{
							var s = "";
							var $input = $(":input");
							if( $.utils.isNotNull($context))
							{
								$input = $(":input", $context);								
							}
							
							
							var html = [];
							
							$input.each(function(){
								if( $(this).attr("name") != "__VIEWSTATE" && $(this).attr("name") != "" && $(this).attr("type") != "button")
								{
																															
									if( $(this).attr("type").toLowerCase() == "radio" || $(this).attr("type").toLowerCase() == "checkbox")
									{													
										if($(this).attr("checked"))
										{														
											html.push($(this).attr("name") + "=" + encodeURIComponent($(this).val()));
										}
									}
									else
									{																					
										html.push($(this).attr("name") + "=" + encodeURIComponent($(this).val()));
									}
								}
							});	
										
							var s = html.join("&");				
							return s;										
						},
						submit:function(obj)
						{
							//obj 为this对象
							var theForm = null;
							if(typeof(obj) != "undefined")
							{
								theForm = $(obj).parents("form");
							}
							else
							{
								theForm = $("form").eq[0];
							}
							
							if ((!theForm.onsubmit) || (theForm.onsubmit() != false)) 
							{		
								theForm.submit();
							}
						},
						reset:function(obj)
						{	
							var theForm = null;
							if(typeof(obj) != "undefined")
							{
								theForm = $(obj).parents("form");
							}
							else
							{
								theForm = $("form").eq[0];
							}
							
							theForm.get(0).reset();														
						}								
					}
				});
			 }
			 )(jQuery);
