window.onerror = function(msg , url , line){
	 window.alert('error:\r\n'+msg+'\r\n'+url +'\r\nline:'+line);
	 window.onerror = null
	 return true;
}

var XMLHttp = {
    _objPool: [],

    _getInstance: function ()
    {
        for (var i = 0; i < this._objPool.length; i ++)
        {
            if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
            {
                return this._objPool[i];
            }
        }

        // IE5中不支持push方法
        this._objPool[this._objPool.length] = this._createObj();

        return this._objPool[this._objPool.length - 1];
    },

    _createObj: function ()
    {
        if (window.XMLHttpRequest)
        {
            var objXMLHttp = new XMLHttpRequest();

        }
        else
        {
            var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
            for(var n = 0; n < MSXML.length; n ++)
            {
                try
                {
                    var objXMLHttp = new ActiveXObject(MSXML[n]);
                    break;
                }
                catch(e)
                {
                }
            }
         }          

        // mozilla某些版本没有readyState属性
        if (objXMLHttp.readyState == null)
        {
            objXMLHttp.readyState = 0;

            objXMLHttp.addEventListener("load", function ()
                {
                    objXMLHttp.readyState = 4;

                    if (typeof objXMLHttp.onreadystatechange == "function")
                    {
                        objXMLHttp.onreadystatechange();
                    }
                }, false);
        }

        return objXMLHttp;
    },

    // 发送请求(方法[post,get], 地址, 数据, 回调函数 , 异步)
    sendReq: function (method, url, data, callback , XMLHttpbool)
    {
	    if(!XMLHttpbool) XMLHttpbool = true;
        var objXMLHttp = this._getInstance();

        with(objXMLHttp)
        {
            try
            {
                // 加随机数防止缓存
                if (url.indexOf("?") > 0)
                {
                    url += "&randnum=" + Math.random();
                }
                else
                {
                    url += "?randnum=" + Math.random();
                }

                open(method, url, XMLHttpbool);

                // 设定请求编码方式
                setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                send(data);
                onreadystatechange = function ()
                {
                    if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                    {
                        callback(objXMLHttp);
                    }
                }
            }
            catch(e)
            {
                alert(e);
            }
        }
    }
};  

function ajaxSubmit(form , url , func){
    if(typeof form != 'object'){
	  var form = document.getElementById(form);
    }
	var ele = form.elements;
    var post = new Array();
	 
	for(var i = 0 ; i <ele.length ; i ++ ){
	   	var v = false ;
		if(ele[i].type == 'select'){
		    v = ele[i].options[ele[i].options.selectedIndex].value;	
		}else if(ele[i].type == 'radio' || ele[i].type=='checkbox'){
		 	if(ele[i].checked){
			   v = ele[i].value;  
		    }
	    }else{
		    var v = ele[i].value;
		}  
		if(v !== false){
		   post[post.length] = ele[i].name +"=" + encodeURIComponent(v);  	
	    }
    }
	
	if(url.indexOf('?') > 0 ){
	   url += '&sessionid='+Math.random();
	}else{
	   url += '?sessionid='+Math.random();	
	}
	var data = post.join('&');
	XMLHttp.sendReq('post' , url , data , func , false);
	
}

