document.domain = "tebon.com.cn";
/*
1.获取form中的元素对象
	IE:					document.formName.item("itemName")或document.formName.elements["elementName"];
	firefox:		document.formName.elements["elementName"]
	IE&firefox:	document.formName.elements["elementName"]

2.获取集合类中的对象
	IE:					array(i)或array[i]
	firefox:		array[i]
	IE&firefox:	array[i]

3.自定义属性
	IE:					obj.propertyname = value 或 obj.setAttribute ("propertyname", value)
	firefox:		obj.setAttribute ("propertyname", value);
	IE&firefox:	obj.setAttribute ("propertyname", value);

4.获取html元素
	IE:					通过id直接调用 或 document.getElementById ("id")
	firefox:		document.getElementById ("id");
	IE&firefox:	document.getElementById ("id");

5.javascript对象定义
	IE:					const or var
	firefox:		var
	IE&firefox:	var 并且不要定义与HTML元素相同的id

6. input.type属性问题
说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.

7. window.event问题

说明:window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用. 
解决方法: 
IE: 
<input name="Button8_1" type="button" value="IE" onclick="javascript:gotoSubmit8_1()"/> 
... 
<script language="javascript"> 
function gotoSubmit8_1() { 
... 
alert(window.event); //use window.event 
... 
} 
</script> 
IE&Firefox: 
<input name="Button8_2" type="button" value="IE" onclick="javascript:gotoSubmit8_2(event)"/> 
... 
<script language="javascript"> 
function gotoSubmit8_2(evt) { 
... 
evt=evt?evt:(window.event?window.event:null);
alert(evt); //use evt
... 
} 
</script>

8. 获取页面地址
	IE&firefox:	window.location
	IE:					window.location或window.location.href
	firefox:		window.location

9. 模态和非模态窗口问题

说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能. 
解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。

如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口. 例如：var parWin = window.opener; parWin.document.getElementById("Aqing").value = "Aqing"; 

10. body问题

Firefox的body在body标签没有被浏览器完全读入之前就存在；而IE的body则必须在body标签被浏览器完全读入之后才存在.
*/

function BrowserCompatible () {}

BrowserCompatible.getEvent = function (evt)
{
	return (evt ? evt : (window.event ? window.event : null));
}

BrowserCompatible.getEventX = function (evt)
{
	if (!evt)
		return 0;
	
	var x = parseInt(evt.clientX ? evt.clientX : evt.pageX);
	
	if ( isNaN(x))
		return 0;
	else
		return x;
}

BrowserCompatible.getEventY = function (evt)
{
	if (!evt)
		return 0;
	
	var y = parseInt(evt.clientY ? evt.clientY : evt.pageY);
	
	if (isNaN (y))
		return 0;
	else
		return y;
}

BrowserCompatible.getSrcElement = function (evt)
{
	if (!evt)
		return null;
	else if (evt.button == 1)
		return (evt.srcElement ? evt.srcElement : evt.target);
	else
		return null;
}

BrowserCompatible.vmlCompatible = function ()
{
	try
	{
		if(!document.namespaces['vml'])
		{
			document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
			var styleSheet = (document.styleSheets.length > 0) ? document.styleSheets[0] : document.createStyleSheet();
			styleSheet.addRule('v\\:*', 'behavior:url(#default#VML)');
		}
		
		return true;
	}
	catch (E)
	{
		return false;
	}
}

BrowserCompatible.alphaCompatible = function ()
{
  try
	{
		if(!document.namespaces['vml'])
		{
			document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
			var styleSheet = (document.styleSheets.length > 0) ? document.styleSheets[0] : document.createStyleSheet();
			styleSheet.addRule('v\\:*', 'behavior:url(#default#VML)');
		}
		
		return true;
	}
	catch (E)
	{
		return false;
	}
}

BrowserCompatible.findWindow = function (windowName)
{
	var currentWindow = window;
	
	try
	{
		while (currentWindow.parent.window)
		{
			currentWindow = currentWindow.parent.window;
			
			if (currentWindow.name == windowName)
				break;
		}
	}
	catch (e)  {}
	
	if (currentWindow.name == windowName)
		return currentWindow;
	else
		return null;
}

BrowserCompatible.isIE = function ()
{
	//return (window.navigator.userAgent.indexOf("MSIE") > -1);
	return (window.navigator.appName.indexOf("Microsoft Internet Explorer") > -1);
}

BrowserCompatible.isMYIE = function ()
{
	//return (window.navigator.userAgent.indexOf("Maxthon") > -1);
	return (window.navigator.appName.indexOf ("Maxthon") > -1);
}

BrowserCompatible.isFirefox = function ()
{
	return (window.navigator.userAgent.indexOf("Firefox") > -1);
}

function Ajax () {}
Ajax.tipDiv = null;
Ajax.pool = [];

Ajax.showTip = function (evt)
{
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	if (!srcElement)
		return false;
	
	try
	{
		if (srcElement.type && (srcElement.type + "").toLowerCase() == "button")
			srcElement.disabled = true;
	}
	catch (E) {}
	
	var x = BrowserCompatible.getEventX (evt);
	var y = BrowserCompatible.getEventY (evt);
	
	if (!Ajax.tipDiv)
	{
		Ajax.tipDiv = document.createElement ("<div style='visibility:visible;position:absolute;width:150;height:18;background-color:yellow;border-style:solid;border-width:1;border-color:#666666;font-size:12px' />");
		Ajax.tipDiv.innerHTML = "正在处理，请稍候...";
		
		Ajax.tipDiv.style.left	= x;
		Ajax.tipDiv.style.top	= y;
		
		document.body.appendChild (Ajax.tipDiv);
	}
	else
	{
		Ajax.tipDiv.style.left	= x;
		Ajax.tipDiv.style.top	= y;
		Ajax.tipDiv.style.visibility = "visible";
		Ajax.tipDiv.style.display = "";
	}
}

Ajax.hideTip = function ()
{
	if (Ajax.tipDiv)
	{
		Ajax.tipDiv.style.visibility = "hidden";
		Ajax.tipDiv.style.display = "none";
	}
}

Ajax.getInstance =function ()
{
    for (var i = 0; i < Ajax.pool.length; i++)
    {
        if (Ajax.pool[i].flag == 0 && (Ajax.pool[i].http_request.readyState == 0 || Ajax.pool[i].http_request.readyState == 4))
        {
        	Ajax.pool[i].flag = 1;
        	
        	return Ajax.pool[i];
        }
    }
    
    var http_request = Ajax.createHttpRequestObj();
    
    var l = Ajax.pool.length;
  	
    Ajax.pool[l] = {"flag":1,"http_request":http_request};
    
    return Ajax.pool[l];
}

Ajax.createHttpRequestObj = function ()
{
	var objXMLHttp = null;
	
	if (window.XMLHttpRequest)
	{
		objXMLHttp = new XMLHttpRequest();
	    
		if (objXMLHttp.overrideMimeType)
			objXMLHttp.overrideMimeType('text/xml');
	}
	else
	{
	    var MSXML = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0'];
	    
	    for(var n = 0; n < MSXML.length; n++)
	    {
	        try
	        {
	            objXMLHttp = new ActiveXObject(MSXML[n]);        
	            break;
	        }
	        catch(e) {}
	    }
	}
	
	return objXMLHttp;
}

Ajax.bindListener = function (http_request_handler, callbackFunction, srcElement)
{
	var ME = {};
		ME.http_request = http_request_handler.http_request;
		ME.http_request_handler = http_request_handler;
		ME.callbackFunction = callbackFunction;
		ME.srcElement = srcElement;
	
	http_request_handler.http_request.onreadystatechange = function ()
	{
		if (ME.http_request_handler.http_request.readyState == 4)
		{
			Ajax.hideTip ();
			
			if (ME.http_request_handler.http_request.status == 200)
			{
				if (ME.callbackFunction != null)
				{
					try
					{
						eval (ME.callbackFunction);
					}
					catch (E)	{}
				}
			}
			else
			{
				if (ME.http_request_handler.http_request.status == "0")
					alert ("操作失败!\r\n登录后才能操作!");
				else
				{
					alert ("操作失败!\r\n错误代码:" + ME.http_request_handler.http_request.status);
					
					if (ME.errorHandleFunction != null)
					{
						try
						{
							eval (ME.errorHandleFunction);
						}
						catch (E) {}
					}
				}
			}
			
			try
			{
				ME.http_request_handler.http_request.abort ();
				ME.http_request_handler.flag = 0;
				
				if (ME.srcElement && ME.srcElement.type && ME.srcElement.type.toLowerCase() == "button")
				{
					ME.srcElement.disabled = false;
				}
			}catch (E) {}
		}
	}
}

Ajax.sendGetRequest = function (url, asynchronize, callbackFunction)
{
	var evt = window.event;
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	Ajax.showTip (evt);
	
	var http_request_handler = Ajax.getInstance();
	
	Ajax.bindListener (http_request_handler, callbackFunction, srcElement);
	
	if (url.indexOf ("?") > 0)
		url = url + "&random=" + new Date().getTime();
	else
		url = url + "?random=" + new Date().getTime();
	
	http_request_handler.http_request.open ('GET', url, asynchronize);
	
	http_request_handler.http_request.send (null);
	
	return false;
}

Ajax.sendGetRequest2 = function (url, asynchronize, callbackFunction)
{
	var evt = window.event;
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	Ajax.showTip (evt);
	
	var http_request_handler = Ajax.getInstance();
	
	Ajax.bindListener (http_request_handler, callbackFunction, srcElement);
	
	if (url.indexOf ("?") > 0)
		url = url + "&random=" + new Date().getTime();
	else
		url = url + "?random=" + new Date().getTime();
	
	http_request_handler.http_request.open ('GET', url, asynchronize);
	
	http_request_handler.http_request.send (null);
	
	return false;
}

Ajax.sendPostRequest2 = function (url, requireString, asynchronize, callbackFunction)
{
	var evt = window.event;
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	Ajax.showTip (evt);
	
	var http_request_handler = Ajax.getInstance();
	
	Ajax.bindListener (http_request_handler, callbackFunction, srcElement);
	
	if (url.indexOf ("?") > 0)
		url = url + "&random=" + new Date().getTime();
	else
		url = url + "?random=" + new Date().getTime();
	
	http_request_handler.http_request.open ('POST', url, asynchronize);
	
	http_request_handler.http_request.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
	http_request_handler.http_request.setRequestHeader ("Content-length", requireString.length);
	http_request_handler.http_request.setRequestHeader ("Connection", "close");
	
	http_request_handler.http_request.send (requireString);
	
	return false;
}

Ajax.sendPostRequest = function (url, formElement, asynchronize, callbackFunction)
{
	var evt = window.event;
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	Ajax.showTip (evt);
	
	var http_request_handler = Ajax.getInstance();
	
	Ajax.bindListener (http_request_handler, callbackFunction, srcElement);
	
	if (url.indexOf ("?") > 0)
		url = url + "&random=" + new Date().getTime();
	else
		url = url + "?random=" + new Date().getTime();
	
	http_request_handler.http_request.open ('POST', url, asynchronize);
	
	var requireString = Ajax.parseParameteres (formElement);
	
	//设置标志，用户服务器端的编码处理
	requireString = "byAjax=1&" + requireString;
	
	http_request_handler.http_request.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
	http_request_handler.http_request.setRequestHeader ("encoding", "utf-8");
	http_request_handler.http_request.setRequestHeader ("Content-length", requireString.length);
	http_request_handler.http_request.setRequestHeader ("Connection", "close");
	
	http_request_handler.http_request.send (requireString);
	
	return false;
}

Ajax.sendPostRequest3 = function (url, formElement, asynchronize, callbackFunction)
{
	var evt = window.event;
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	Ajax.showTip (evt);
	
	var http_request_handler = Ajax.getInstance();
	
	Ajax.bindListener (http_request_handler, callbackFunction, srcElement);
	
	if (url.indexOf ("?") > 0)
		url = url + "&random=" + new Date().getTime();
	else
		url = url + "?random=" + new Date().getTime();
	
	http_request_handler.http_request.open ('POST', url, asynchronize);
	
	var requireString = Ajax.parseParameteres (formElement);
	
	//设置标志，用户服务器端的编码处理
	requireString = "byAjax=1&" + requireString;
	
	http_request_handler.http_request.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
	http_request_handler.http_request.setRequestHeader ("encoding", "utf-8");
	http_request_handler.http_request.setRequestHeader ("Content-length", requireString.length);
	http_request_handler.http_request.setRequestHeader ("Connection", "close");
	
	http_request_handler.http_request.send (requireString);
	
	return false;
}

Ajax.parseElements = function (elements, formNode)
{
	for (var i = 0; i < formNode.elements.length; i++)
	{
		var elm = formNode.elements[i];
		
		if(!elm || elm.tagName.toLowerCase() == "fieldset")
			continue;
		
		var t = elm.type.toLowerCase ();
		
		if (t == "hidden" || t == "text" || t == "textarea" || t == "password" || t == "checkbox" || t == "radio" || t == "select" || t == "select-one")
			elements[elements.length] = elm;
	}
}

Ajax.encodeString = function (str)
{
	if (str == null || str == "")
		return str;
	
	var ret = "";
	var value = escape(str);
	var match, re = /%u([0-9A-F]{4})/i;
	
	value = value.replace(/\+/g, "%2B");
	
	while((match = value.match(re)))
	{
		ret += value.substring(0, match.index) + escape("%u") + match[1];
		value = value.substring(match.index+match[0].length);
	}
	
	ret += value;
	
	return ret;
}

Ajax.encodeAcute = function(str)
{
	if (str == null || str == "")
		return str;
	
	var value = str;
	var ret = "";
	var match, re = /'/;
	
	while((match = value.match(re)))
	{
		ret += value.substring(0, match.index) + "&acute;";
		value = value.substring(match.index+match[0].length);
	}
	
	ret += value;
	
	return ret;
}

Ajax.uncodeAcute = function(str)
{
	if (str == null || str == "")
		return str;
	
	var value = str;
	var ret = "";
	var match, re = /&acute;/;
	
	while((match = value.match(re)))
	{
		ret += value.substring(0, match.index) + "'";
		value = value.substring(match.index+match[0].length);
	}
	
	ret += value;
	
	return ret;
}

Ajax.parseParameteres = function (formObj)
{
	Ajax.elements = [];
	Ajax.parseElements (Ajax.elements, formObj);
	
	var s = "";
	
	for (var i = 0; i < Ajax.elements.length; i++)
	{
		var obj = Ajax.elements[i];
		
		if (obj.type == "hidden")
		{
			s += obj.name + "=" + Ajax.encodeString(obj.value) + "&";
		}
		else if (obj.type == "text")
		{
			s += obj.name + "=" + Ajax.encodeString(obj.value) + "&";
		}
		else if (obj.type == "textarea")
		{
			s += obj.name + "=" + Ajax.encodeString(obj.value) + "&";
		}
		else if (obj.type == "password")
		{
			s += obj.name + "=" + Ajax.encodeString(obj.value) + "&";
		}
		else if (obj.type == "checkbox")
		{
			if (obj.checked)
			{
				s += obj.name + "=" + Ajax.encodeString(obj.value) + "&";
			}
		}
		else if (obj.type == "radio")
		{
			if (obj.checked)
			{
				s += obj.name + "=" + Ajax.encodeString(obj.value) + "&";
			}
		}
		else if (obj.type == "select")
		{
			if (obj.selectedIndex > -1)
				s += obj.name + "=" + Ajax.encodeString(obj.options[obj.selectedIndex].value) + "&";
		}
		else if (obj.type == "select-one")
		{
			if (obj.selectedIndex > -1)
				s += obj.name + "=" + Ajax.encodeString(obj.options[obj.selectedIndex].value) + "&";
		}
	}

	return s;
}