//document.domain = "cindasc.com";

/*
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 : BrowserCompatible.getEvent.caller.arguments[0]));
}

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.fireKeyEvent = function (evt)
{
	if (evt)
	{
		if (evt.keyCode)
			evt.keyCode = 0;
		else
			evt.which = 0;
		
		evt.returnValue = false;
	}
}

BrowserCompatible.getSrcElement = function (evt)
{
	if (!evt)
		return null;
	else
		return (evt.srcElement ? evt.srcElement : evt.target);
}

BrowserCompatible.getKeyCode = function (evt)
{
	if (!evt)
		return 0;
	else
		return (evt.keyCode ? evt.keyCode : evt.which); 
}

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);
}

BrowserCompatible.winWidth   = 0;
BrowserCompatible.winHeight  = 0;
BrowserCompatible.getwinWidth = function()
{
	if (window.innerWidth)//for Firefox
	{
		BrowserCompatible.winWidth = window.innerWidth;
	}
	else if((document.body) && (document.body.clientWidth))
	{
		BrowserCompatible.winWidth = document.body.clientWidth;
	}

	if (document.documentElement && document.documentElement.clientWidth)
	{
		BrowserCompatible.winWidth = document.documentElement.clientWidth;
	}
	return BrowserCompatible.winWidth;
}

BrowserCompatible.getwinHeight = function()
{
	if (window.innerHeight)//for Firefox
	{
		BrowserCompatible.winHeight = window.innerHeight;
	}
	else if((document.body) && (document.body.clientHeight))
	{
		BrowserCompatible.winHeight = document.body.clientHeight;
	}

	if (document.documentElement  && document.documentElement.clientHeight)
	{
		BrowserCompatible.winHeight = document.documentElement.clientHeight;
	}
	return BrowserCompatible.winHeight;
}

BrowserCompatible.getObjTop = function(obj)
{
	var top = 28;
	var tmp = '';
	while (eval("obj" + tmp).tagName != "BODY") 
	{
		tmp += ".offsetParent";
		top += eval("obj" + tmp).offsetTop;
	}
	return top;
}

BrowserCompatible.getObjLeft = function(obj)
{
	var left = 0;
	var tmp = '';
	while (eval("obj" + tmp).tagName != "BODY") 
	{
		tmp += ".offsetParent";
		left += eval("obj" + tmp).offsetLeft;
	}
	return left;
}

BrowserCompatible.hasClassName = function(element, className) 
{
    if (!element) return;
    var elementClassName = element.className;
    if (elementClassName.length == 0) return false;
    if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
      return true;
    return false;
}

BrowserCompatible.addClassName = function(element, className) 
{
    if (!element) return;
    var elementClassName = element.className;
	if (elementClassName.length == 0) 
	{
		element.className = elementClassName;
		return;
	}
    if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) 
		return;
	element.className = elementClassName + " " +  className;
}

BrowserCompatible.removeClassName = function(element, className) 
{
    if (!element) return;
	var elementClassName = element.className;
    if (elementClassName.length == 0) return;
	if(elementClassName == className)
	{
		element.className = "";
		return;
	}
	if (elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
		element.className = elementClassName.replace((new RegExp("(^|\\s)" + className + "(\\s|$)"))," ");
}

function Ajax () {}
Ajax.tipDiv = null;
Ajax.bgColor     = "#CC4444";
Ajax.borderColor = "#666666";
Ajax.fontColor   = "#ffffff";
Ajax.message     = "\u6b63\u5728\u5904\u7406\uff0c\u8bf7\u7a0d\u5019...";
Ajax.pool = [];
Ajax.tipBinder = ["INPUT", "SPAN", "DIV", "IMAGE"];

Ajax.inTipBinder = function (tagName)
{
	for (var i = 0; i < Ajax.tipBinder.length; i++)
	{
		if (tagName == Ajax.tipBinder[i])
			return true;
	}
	
	return false;
}

Ajax.getSrcElement = function (evt)
{
	var srcElement = BrowserCompatible.getSrcElement (evt);
	
	if (!srcElement || !Ajax.inTipBinder (srcElement.tagName) || evt.button >= 2)
		return null;
	else
		return srcElement;
}

Ajax.setTip = function(bgColor,borderColor,fontColor,message)
{
	if(!(bgColor == "null" || bgColor == null))
		Ajax.bgColor = bgColor;
		
	if(!(borderColor == "null" || borderColor == null))
		Ajax.borderColor = borderColor;

	if(!(fontColor == "null" || fontColor == null))
		Ajax.fontColor = fontColor;
	
	if(!(message == "null" || message == null))
		Ajax.message = message;
};

Ajax.showTip = function (evt)
{
	var srcElement = Ajax.getSrcElement (evt);
	
	if (!srcElement)
		return;
	
	try
	{
		if (!srcElement.type || srcElement.type.toLowerCase() != "text")
			srcElement.disabled = true;
	}
	catch (E) {}
	
	var x = BrowserCompatible.getEventX (evt);
	var y = BrowserCompatible.getEventY (evt);
	
	if (!Ajax.tipDiv)
	{
		Ajax.tipDiv = document.createElement("div");
		Ajax.tipDiv.style.cssText =  "visibility:visible;position:absolute;width:150;height:18;background-color:" + Ajax.bgColor + ";border-style:solid;border-width:1;border-color:" + Ajax.borderColor + ";font-size:12px;color:" + Ajax.fontColor + ";padding:1px;";
		Ajax.tipDiv.innerHTML = Ajax.message;
		
		Ajax.tipDiv.style.left = (x + 15) + "px";
		Ajax.tipDiv.style.top = (y + 10) + "px";
		
		document.body.appendChild (Ajax.tipDiv);
	}
	else
	{
		Ajax.tipDiv.style.left = (x + 15) + "px";
		Ajax.tipDiv.style.top = (y + 10) + "px";
		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.abort = function (ME)
{
	try
	{
		ME.http_request_handler.http_request.abort ();
		ME.http_request_handler.flag = 0;
	}
	catch (e) {}
} 

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;
		ME.responseText = "";
	
	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)
			{
				ME.responseText = ME.http_request.responseText;
				
				if (ME.callbackFunction != null)
				{
					try
					{
						eval (ME.callbackFunction);
					}
					catch (e)	
					{
						alert("实际错误消息为：" + e.message + "\n错误类型字符串为：" + e.name);
					}
				}
			}
			else
			{
				var status = ME.http_request_handler.http_request.status;
				if(status == 403)
				{
					alert("你请求的页面禁止访问!");
				}
				else if(status == 404)
				{
					alert("你请求的页面不存在!");
				}
				else if(status == 500)
				{
					//alert("你请求的页面服务器内部错误!");
				}
				else if(status == 502)
				{
					alert("Web服务器收到无效的响应!");
				}
				else if(status == 503)
				{
					alert("服务器繁忙，请稍后再试!");
				}
				else
				{
					//alert("你请求的页面遇到问题，操作失败!");
				}
				
				if (ME.errorHandleFunction != null)
				{
					try
					{
						eval (ME.errorHandleFunction);
					}
					catch (E) {}
				}
			}
			
			try
			{
				ME.http_request_handler.flag = 0;
				ME.http_request_handler.http_request.abort ();
				
				if (ME.srcElement && (!ME.srcElement.type || ME.srcElement.type.toLowerCase() != "text"))
				{
					ME.srcElement.disabled = false;
				}
			}catch (E) {}
		}
	}
}

Ajax.sendGetRequest = function (url, asynchronize, callbackFunction)
{
	var evt = BrowserCompatible.getEvent();
	var srcElement = Ajax.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 = BrowserCompatible.getEvent();
	var srcElement = Ajax.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 = BrowserCompatible.getEvent();
	var srcElement = Ajax.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 = BrowserCompatible.getEvent();
	var srcElement = Ajax.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 = BrowserCompatible.getEvent();
	var srcElement = Ajax.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;
}

/**
*获得表单中所有控件的名称
*
*/
Ajax.getFormNames = function(theForm)
{
	  var names	= new Array(theForm.length);
	  
	  for(i=0; i<theForm.length; i++)
	  {
		names[i] = theForm.elements[i].name;
	  }
	  return names;
}

Ajax.setFormValues = function(data,theForm)
{
	if(typeof(data) != "object")
	{
		data = eval('(' + data + ')');
	}
	var len = theForm.length;
	for(i = 0; i < len; i++)
	{
		var elementName = theForm.elements[i].name;
		
		if(data[elementName])
		{
			theForm.elements[i].value = data[elementName];
		}
	}
}

Ajax.setTableValues = function(data,Table)
{
	if(typeof(data) != "object")
	{
		data = eval('(' + data + ')');
	}
	var tds = Table.getElementsByTagName("td");
	var len = tds.length;
	for(i = 0; i < len; i++)
	{
		if(tds[i].id == "")continue;
		var elementName = tds[i].id;
		
		var str = ""+data[elementName];

		if(str.indexOf(".") != -1)
		{			
			if(parseFloat(data[elementName]) > parseFloat(data.ZRSP))
			{
				tds[i].className="fRedd";
			}
			else if(parseFloat(data[elementName]) < parseFloat(data.ZRSP))
			{
				tds[i].className="fGreen";
			}
			else
			{
				tds[i].className="";
			}				
		}	
		tds[i].innerHTML =data[elementName];			
	}
}