function HttpRequest(method,url){
	this.method = method;
	this.url = url;
	this.init = CreateXMLHTTPObject;
	this.self_url = self.location.href;
	this.func = function () {};

	this.go=function go(str_url){
		self.location.href=str_url;
	}
	function CreateXMLHTTPObject(){
		var xObject = null;
		try {
			xObject = new ActiveXObject("Msxml2.xmlhttp.4.0");
		}
		catch (e){
			try{
				xObject = new XMLHttpRequest(); 
				if(xObject.overrideMimeType){
					xObject.overrideMimeType('text/xml');
				}

			}
			catch (e){
				try {
					xObject = new ActiveXObject("Msxml2.xmlhttp");
				}catch (e) {
					try {
						xObject = new ActiveXObject("Microsoft.xmlhttp");
					}catch (e) {	
						alert("Error: Unable to create XML HTTP object!");
					}
				}
			}
		}
		return xObject;
	}

	this.post = dopost;
	function dopost(obj,func,param)
	{
		/*
		var process_login = function () {
			if(obj.readyState==4){
				if (obj.responseText.indexOf("login.php")==-1) {
					this.func();
				}else {
					window.location.href = "login.shtml";	// /login/login.php;
				}
			}
		}
		this.func = func;
		*/
		obj.onreadystatechange = func;
		obj.open(this.method, this.url, true);
		obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
		obj.send(param);
	}

	this.utf16to8 = utf16to8;
	function utf16to8(str) {
		if(str==''){
			return '';
		}
		var out, i, len, c;

		out = "";
		len = str.length;
		for(i = 0; i < len; i++) {
		c = str.charCodeAt(i);
		if ((c >= 0x0001) && (c <= 0x007F)) {
			out += str.charAt(i);
		} else if (c > 0x07FF) {
			out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
			out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
			out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
		} else {
			out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
			out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
		}
		}
		return out;
	}

	this.$ = $;
	function $(id){
		return document.getElementById(id);
	}

	this.tagNameParam = tagNameParam
	function tagNameParam(name,obj){
		var objs = obj.getElementsByTagName(name);
		var param = '';
		for (i=0;i<objs.length;i++){
			param = param + objs.name+"="+escape(utf16to8(Trim(objs.value)))+"&";		
		}
		return param;
	}

	this.form2param = form2param
	function form2param( objs, ignore ) {
		/**                     //getElementsByClass('test')
		 * 调用方法: form2param(document.getElementsByTagName('*'), Array('submit'));
		 * param1: 一般不需要修改
		 * param2: 需要忽略的表单域名称
		 * retrun: 字符串
		 */
		var param = "";

		function add2param( str_param, tagName, value ) {
			var param
			if (str_param.length==0) {
				return tagName+"="+escape(utf16to8(value));
			}
			else {
				return str_param+'&'+tagName+"="+escape(utf16to8(value));
			}
		}

		function arrayToObject(arr) {
			var obj=new Object();
			for (i=0; i<arr.length; i++) {
				obj[arr[i]]=null;
			}
			return obj;
		}
		
		var tagnames = new Array("input", "textarea", "select");
		var chkboxs = new Array("checkbox", "radio");
		var obj_tagnames = arrayToObject(tagnames);
		var obj_ignore = arrayToObject(ignore);
		var obj_chkboxs = arrayToObject(chkboxs);
		
		for (var i=0; i<objs.length; i++) {
			if (objs[i].tagName.toLowerCase() in obj_tagnames) {
				if (!(objs[i].name.toLowerCase() in obj_ignore)) {
					if (objs[i].type.toLowerCase() in obj_chkboxs) {
						if (objs[i].checked) {
							param = add2param(param, objs[i].name.toLowerCase(), objs[i].value);
						}
					}
					else {
						param = add2param(param, objs[i].name.toLowerCase(), objs[i].value);
					}				
				}
			}
		}

		return param;
	}


	this.checkboxToArray = function (form,tag){
		var objs = form.getElementsByTagName(tag);
		var param = null;
		for (i=0;i<objs.length;i++ )
		{
			if(objs[i].type=="checkbox" && objs[i].checked){
				param+=objs[i].name+"="+escape(utf16to8(objs[i].value));
			}
		}
		return param;
	}

	this.load = function( url ){
		var ss = document.getElementsByTagName("script");
		for( i=0;i<ss.length;i++ ){
			if( ss[i].src && ss[i].src.indexOf( url ) != -1 ){
				this.onsuccess();
				return;
			}
		}
		 s = document.createElement("script");
		 s.type = "text/javascript";
		 s.src = url;
		 var head = document.getElementsByTagName("head")[0];
		 head.appendChild(s);
		 var self = this;

		 s.onload = s.onreadystatechange = function(){
			if( this.readyState && this.readyState == "loading" )
				return;
			self.onsuccess();
		 }
		 s.onerror = function(){
			head.removeChild(s);
			self.onfailure;
		 }
	};
	
	this.onsuccess = function(){};
	this.onfailure = function(){};
	this.afterloadhtml = function(){};
	//去掉字符串 的左边 空格
	this.LTrim = LTrim ;
	function LTrim(str){ 
		var i;
		for(i=0;i<str.length;i++)  {
			if( str.charAt(i)!=" " && str.charAt(i)!=null )
			break;
		}
		str = str.substring(i,str.length);
		return str;
	};
	//去掉字符串 的右边 空格
	this.RTrim = RTrim ;
	function RTrim(str){
		var i;
		for( i=str.length-1;i>=0;i-- ){
			if( str.charAt(i)!=" "&&str.charAt(i)!=null ) 
			break;
		}
		str = str.substring(0,i+1);
		return str;
	};
	//去掉字符串 的 左右边 空格
	this.Trim = Trim ; 
	function Trim(str){
		var trimRe = /^\s+|\s+$/g;
		str = String(str).replace(trimRe,""); 
		return LTrim(RTrim(str));
	};	

	//去掉字符串 的 左右边 空格
	this.strReplace = strReplace ;
	function strReplace( string ){
		string = string.replace(/(^\s*)|(\s*$)/g,"");
		return string ;
	};

	/*验证数字0-9*/
	this.ValidateNumber = ValidateNumber;
	function ValidateNumber(num){
		str = str1=/^[0-9]+$/;
		var num_length = num.length;
		var final_num = "";
		var charNum = "";
		for(i=0;i<num_length;i++){
			var charNum = num.charAt(i);	
			if(!str1.test(charNum)){
				switch(charNum){
					case '１':
						final_num=final_num+1;	
						break;
					case '２':
						final_num=final_num+2;
						break;
					case '３':
						final_num=final_num+3;
						break;
					case '４':
						final_num=final_num+4;
						break;
					case '５':
						final_num=final_num+5;
						break;
					case '６':
						final_num=final_num+6;
						break;					
					case '７':
						final_num=final_num+7;
						break;		
					case '８':
						final_num=final_num+8;
						break;
					case '９':
						final_num=final_num+9;
						break;
					case '０':
						final_num=final_num+0;
						break;				
					default:
						return false;
						break;											
				}				
			}else{
				final_num=final_num+charNum;	
			}
		}
		num = final_num;			
		return str.test(num)	
	};	
	
	/*电话传真正则表达式*/ 
	this.ValidateTelNo = ValidateTelNo;
	function ValidateTelNo(teleno){
		//str=/^[0-9A-Za-z]+[\-]?[0-9A-Za-z]+[\-]?[0-9A-Za-z]+$/;
		var str = str1=/^[0-9\-\ ]+$/;
		var telno_length = teleno.length;
		var final_telno = "";
		var charTelno = "";
		for(i=0;i<telno_length;i++){
			var charTelno = teleno.charAt(i);	
			if(!str1.test(charTelno)){
				var temp_telno = "";
				switch(charTelno){
					case '１':
						final_telno=final_telno+1;	
						break;
					case '２':
						final_telno=final_telno+2;
						break;
					case '３':
						final_telno=final_telno+3;
						break;
					case '４':
						final_telno=final_telno+4;
						break;
					case '５':
						final_telno=final_telno+5;
						break;
					case '６':
						final_telno=final_telno+6;
						break;					
					case '７':
						final_telno=final_telno+7;
						break;		
					case '８':
						final_telno=final_telno+8;
						break;
					case '９':
						final_telno=final_telno+9;
						break;
					case '０':
						final_telno=final_telno+0;
						break;
					case '－':
						final_telno=final_telno+"-";
						break;						
					default:
						//alert(charTelno+charTelno);
						return false;
						break;											
				}				
			}else{
				final_telno=final_telno+charTelno;	
			}
			
		}
		teleno = final_telno;
		//alert(teleno);return false;
		return str.test(teleno)	;
	};	
	
	/*验证网址*/
	this.ValidateUrl = ValidateUrl;
	function ValidateUrl( str ){
		var patten = /^(http:\/\/)|(\w+\.)+[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])+[\.]+[A-Za-z0-9]/;
		return patten.test( str );		
		/*
		//var patten = /^(http\:\/\/)?(\w+\.)+\w+(\/\w+)*((\/)|(\/\w+\.\w+))?$/;
		var patten1 = /^(http|https|ftp|HTTP|HTTPS|FTP):\/\/([A-Z0-9][A-Z0-9_-]*)(:(\d+))?\/?/i;
		var patten2 = /^([A-Z0-9][A-Z0-9_-]*)(:(\d+))?\/?/i;
		if ( patten1.test( str ) ){
			return patten1.test( str );
		}else{
			return patten2.test( str );
		}*/
	}
	/**英文和数字的正则表达式**/
	this.IsEnglighAndNumber = IsEnglighAndNumber;
	function IsEnglighAndNumber(str){
		var patten=/^[a-zA-Z0-9]*$/;
		return patten.test(str);
	};	
	/**英文公司名称正则表达式**/
	this.IsCompanyName = IsCompanyName;
	function IsCompanyName(str){
		//var patten=/^[a-zA-Z0-9\,\.\-\_\(\)\&\ ]*$/;
		var patten=/^[\w\-,\. &\(\)]+$/;
		return patten.test(str);
	};	

	/*E-mail正则表达式*/
	this.ValidateEmail = ValidateEmail;
	function ValidateEmail(email){
		var str=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
		return str.test(email);
	};
	/*英文大小写字符正则验证*/
	this.ValidateEngCode = ValidateEngCode;
	function ValidateEngCode(code){
		str=/^[A-Za-z]+$/;
		return str.test(name);
	};
	/*身份证正则表达式*/
	this.ValidateIDCard = ValidateIDCard;
	function ValidateIDCard (idcard){
		isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
		isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}[0-9xX]{1}$/; 
		return isIDCard1.test(idcard)||isIDCard2.test(idcard);
	};
	/*日期正则表达式 Exp: 年-月-日*/
	this.ValidateDate = ValidateDate;
	function ValidateDate(date){
		str=/^[1|2][0-9]{3}\-[0|1]?[0-9]\-[0|1|2|3]?[0-9]$/;
		return str.test(date)
	};	

	/*验证数字0-9加，和。*/
	this.ValidateNumberExtra = ValidateNumberExtra;
	function ValidateNumberExtra(num){
		str = str1=/^[0-9\,\.]+$/;
		var num_length = num.length;
		var final_num = "";
		var charNum = "";
		for(i=0;i<num_length;i++){
			var charNum = num.charAt(i);	
			if(!str1.test(charNum)){
				switch(charNum){
					case '１':
						final_num=final_num+1;	
						break;
					case '２':
						final_num=final_num+2;
						break;
					case '３':
						final_num=final_num+3;
						break;
					case '４':
						final_num=final_num+4;
						break;
					case '５':
						final_num=final_num+5;
						break;
					case '６':
						final_num=final_num+6;
						break;					
					case '７':
						final_num=final_num+7;
						break;		
					case '８':
						final_num=final_num+8;
						break;
					case '９':
						final_num=final_num+9;
						break;
					case '０':
						final_num=final_num+0;
						break;	
					case '，':
						final_num=final_num+',';
						break;
					case '。':
						final_num=final_num+'.';
						break;
					default:
						return false;
						break;											
				}				
			}else{
				final_num=final_num+charNum;	
			}
		}
		num = final_num;			
		return str.test(num)	
	};	
		
	//验证长*宽*高
	this.ValidateSize = ValidateSize;
	function ValidateSize(size){
		str = /^\d+\*\d+\*\d+$/;
		return str.test(size);
	}
	
}