﻿if (!System.Browser.isIE&&!System.Browser.isOpera){
	//让FireFox兼容IE的XMLDocument
    var  ex;
    XMLDocument.prototype.__proto__.__defineGetter__("xml",function(){
		try {
			return new XMLSerializer().serializeToString(this);
		} 
		catch(ex){
			var d=document.createElement("div");
			d.appendChild(this.cloneNode(true));
			return d.innerHTML;
		}
    });
    Element.prototype.__proto__.__defineGetter__("xml",function(){
		try {
			return new XMLSerializer().serializeToString(this);
		} 
		catch(ex){
			var d=document.createElement("div");
			d.appendChild(this.cloneNode(true));
			return d.innerHTML;
		}
    });
    XMLDocument.prototype.__proto__.__defineGetter__("text",function(){
		return this.firstChild.textContent;
    });
    Element.prototype.__proto__.__defineGetter__( "text" ,  function (){
         return   this .textContent;
    });

    XMLDocument.prototype.selectSingleNode=Element.prototype.selectSingleNode=function(xpath){
		var x=this.selectNodes(xpath);
		if (!x||x.length<1) return null ;
		return x[0];
    }
    XMLDocument.prototype.selectNodes=Element.prototype.selectNodes=function(xpath){
		var xpe=new XPathEvaluator();
		var nsResolver=xpe.createNSResolver(this.ownerDocument==null?this.documentElement:this.ownerDocument.documentElement);
		var result=xpe.evaluate(xpath,this,nsResolver,0,null);
		var found=[];
		var res;
		while(res=result.iterateNext())
			found.push(res);
		return found;
    }

	//让FireFox兼容IE的Document
	window.addEventListener('load',function(){
		if (document.getElementsByTagName) {
			var e, i = 0;
			while (e = document.getElementsByTagName ('*')[i++]) {
				e.addEventListener("focus",function (e) {document.$focus=e.srcElement},false);
				e.addEventListener("click",function (e) {document.$focus=e.srcElement;},false);
			}
		}
	},false);
	Document.prototype.__defineGetter__("activeElement",function(){
		return document.$focus?document.$focus:null;
	});


	//让FireFox兼容IE的HTMLElement
	HTMLElement.prototype.__defineGetter__("all",function(){
		var a=this.getElementsByTagName("*");
		var node=this;
		a.tags=function(sTagName){
			return node.getElementsByTagName(sTagName);
		}
		return a;
    });

	HTMLElement.prototype.__defineGetter__("parentElement",function(){
		if(this.parentNode==this.ownerDocument) return null;
		return this.parentNode;
	});

	HTMLElement.prototype.__defineGetter__("children",function(){
		var tmp=[];
		var j=0;
		var n;
		for(var i=0;i<this.childNodes.length;i++){
			n=this.childNodes[i];
			if(n.nodeType==1){
				tmp[j++]=n;
				if(n.name){
					if(!tmp[n.name])
						tmp[n.name]=[];
					tmp[n.name][tmp[n.name].length]=n;
				}
				if(n.id)
					tmp[n.id]=n;
			}
		}	
		return tmp;
	});

	HTMLElement.prototype.__defineGetter__("currentStyle", function(){
		return this.ownerDocument.defaultView.getComputedStyle(this,null);
	});

	HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){
		var r=this.ownerDocument.createRange();
		r.setStartBefore(this);
		var df=r.createContextualFragment(sHTML);
		this.parentNode.replaceChild(df,this);
		return sHTML;
	});

	HTMLElement.prototype.__defineGetter__("outerHTML",function(){
		var attr;
		var attrs=this.attributes;
		var str="<"+this.tagName;
		for(var i=0;i<attrs.length;i++){
			attr=attrs[i];
			if(attr.specified)
				str+=" "+attr.name+'="'+attr.value+'"';
		}
		if(!this.canHaveChildren)
			return str+">";
		return str+">"+this.innerHTML+"</"+this.tagName+">";
	});

	HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
		switch(this.tagName.toLowerCase()){
			case "area":
			case "base":
			case "basefont":
			case "col":
			case "frame":
			case "hr":
			case "img":
			case "br":
			case "input":
			case "isindex":
			case "link":
			case "meta":
			case "param":
				return false;
		}
		return true;
	});

	HTMLElement.prototype.__defineSetter__("innerText",function(sText){
		var parsedText=document.createTextNode(sText);
		this.innerHTML=parsedText.text;
		return parsedText;

	});

	HTMLElement.prototype.__defineGetter__("innerText",function(){
		var r=this.ownerDocument.createRange();
		r.selectNodeContents(this);
		return r.toString();
	});
	HTMLElement.prototype.__defineSetter__("outerText",function(sText){
		var parsedText=document.createTextNode(sText);
		this.outerHTML=parsedText;
		return parsedText;
	});
	HTMLElement.prototype.__defineGetter__("outerText",function(){
		var r=this.ownerDocument.createRange();
		r.selectNodeContents(this);
		return r.toString();
	});

	HTMLElement.prototype.contains=function(Node){// 是否包含某节点
		do{
			if(Node==this) 
				return true;
		}
		while(Node=Node.parentNode);
		return false;
	}

	HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){
		switch(where){
			case "beforeBegin":
				this.parentNode.insertBefore(parsedNode,this);
				break;
			case "afterBegin":
				this.insertBefore(parsedNode,this.firstChild);
				break;
			case "beforeEnd":
				this.appendChild(parsedNode);
				break;
			case "afterEnd":
				if(this.nextSibling)
					this.parentNode.insertBefore(parsedNode,this.nextSibling);
				else
					this.parentNode.appendChild(parsedNode);
				break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr){
		var r=this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML=r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML);
	}
	HTMLElement.prototype.insertAdjacentText=function(where,txtStr){
		var parsedText=document.createTextNode(txtStr);
		this.insertAdjacentElement(where,parsedText);
	}

	HTMLElement.prototype.attachEvent=function(sType,fHandler){
		var shortTypeName=sType.replace(/on/,"");
		fHandler._ieEmuEventHandler=function(e){
			//window.event=e;
			return fHandler();
		}
		this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
	}
	
	window.attachEvent=function(sType,fHandler){
		var shortTypeName=sType.replace(/on/,"");
		fHandler._ieEmuEventHandler=function(e){
			//window.event=e;
			return fHandler();
		}
		this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
	}
	document.attachEvent=function(sType,fHandler){
		var shortTypeName=sType.replace(/on/,"");
		fHandler._ieEmuEventHandler=function(e){
			//window.event=e;
			return fHandler();
		}
		this.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
	}

	HTMLElement.prototype.detachEvent=function(sType,fHandler){
		var shortTypeName=sType.replace(/on/,"");
		if(typeof(fHandler._ieEmuEventHandler)=="function")
			this.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,false);
		else
			this.removeEventListener(shortTypeName,fHandler,true);
	}

	//让FireFox兼容IE的Event
	window.constructor.prototype.__defineGetter__("event", function(){ 
		var o = arguments.callee.caller; 
		var e; 
		while(o != null){ 
			e = o.arguments[0]; 
			if(e && (e.constructor == Event || e.constructor == MouseEvent)) return e; 
			o = o.caller; 
		} 
		return null; 
	}); 
	Event.prototype.__defineSetter__("returnValue",function(b){// 
		if(!b) this.preventDefault();
		return b;
    });
	Event.prototype.__defineSetter__("cancelBubble",function(b){// 设置或者检索当前事件句柄的层次冒泡
		if(b) this.stopPropagation();
		return b;
	});
	Event.prototype.__defineGetter__("srcElement",function(){
		var node=this.target;
		while(node.nodeType!=1)
			node=node.parentNode;
		return node;
	});
	Event.prototype.__defineGetter__("fromElement",function(){// 返回鼠标移出的源节点
		var node;
		if(this.type=="mouseover")
			node=this.relatedTarget;
		else if(this.type=="mouseout")
			node=this.target;
		if(!node) return;
		while(node.nodeType!=1)
			node=node.parentNode;
		return node;
	});
	Event.prototype.__defineGetter__("toElement",function(){// 返回鼠标移入的源节点
		var node;
		if(this.type=="mouseout")
			node=this.relatedTarget;
		else if(this.type=="mouseover")
			node=this.target;
		if(!node) return;
		while(node.nodeType!=1)
			node=node.parentNode;
		return node;
	});
	Event.prototype.__defineGetter__("offsetX",function(){
		return this.layerX;
	});
	Event.prototype.__defineGetter__("offsetY",function(){
		return this.layerY;
	});

	//让FireFox兼容IE的Node
	Node.prototype.replaceNode=function(Node){// 替换指定节点
		this.parentNode.replaceChild(Node,this);
    }
	Node.prototype.removeNode=function(removeChildren){// 删除指定节点
		if(removeChildren)
			return this.parentNode.removeChild(this);
		else{
			var range=document.createRange();
			range.selectNodeContents(this);
			return this.parentNode.replaceChild(range.extractContents(),this);
		}
	}
	Node.prototype.swapNode=function(Node){// 交换节点
		var nextSibling=this.nextSibling;
		var parentNode=this.parentNode;
		node.parentNode.replaceChild(this,Node);
		parentNode.insertBefore(node,nextSibling);
	}
	
}


//测试不成功!!!!!!真他妈的垃圾,连SRC都取不出来
function FixAjaxForSafari(){
    if (System.Browser.isSafari){        
        var scripts=document.getElementsByTagName("script");
        var re=/\/ajaxpro\/.+(\.ashx)/i;
        var re1=/src=\"(.+)\"/i;
        var re1=new RegExp("src=\"(.+)\"","i");
        var ajax=new Ajax_slow();
        for (var i=0;i<scripts.length;i++){
            var src=scripts[i].src;
            if (re.test(src)){
                ajax.send(src,FixAjaxForSafariCallBack);
            }
        }
    }
}

function FixAjaxForSafariCallBack(result){
    eval(result.responseXML);
}