function engAdvGetAds() {
		var xhr;
		if (window.XMLHttpRequest)
		{
			xhr = new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			xhr = new XMLHttpRequest();
			//xhr = new ActiveXObject('Microsoft.XMLHTTP');
		}
		else
		{
			throw new Error("Could not create XMLHttpRequest object.");
		}
		xhr.open("POST", engAdvWS, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4)
			{
				var responseXML = xhr.responseXML;
				engAdvAdsParse(responseXML);
			}
		};
		xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
		var postData = "pPageRef=" + engAdvPageRef.toString() + "&pTypes=" + engAdvTypes;
		xhr.send(postData);
}

function engAdvAdsParse(xml) {
	if (xml.documentElement.childNodes.length==0) return false;
	var node = xml.documentElement.childNodes[0];
	var sAds = node.nodeValue;
	var aAds = sAds.split(",");
	var aAd;
	for (var x=0; x < aAds.length; x++) {
		aAd = aAds[x].split("|");
		engAdvGetAd(aAd[2], aAd[0], aAd[1]);		
	}
}

function engAdvGetAd(impRef, typeRef, index) {
		var xhr;
		if (window.XMLHttpRequest)
		{
			xhr = new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			xhr = new XMLHttpRequest();
			//xhr = new ActiveXObject('Microsoft.XMLHTTP');
		}
		else
		{
			throw new Error("Could not create XMLHttpRequest object.");
		}
		xhr.open("POST", engAdvFeed, true);
		xhr.onreadystatechange = function()
		{
			if (xhr.readyState == 4)
			{
				var responseText = xhr.responseText;
				engAdvAdParse(impRef, typeRef, index, responseText);
			}
		};
		xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
		var postData = "impref=" + impRef.toString();
		xhr.send(postData);
	
}

function engAdvAdParse(impRef, typeRef, index, text) {
	var sContainer;
	for (var x = 0; x < engAdvObjs.length; x++) {
		if (engAdvObjs[x][0]==typeRef && engAdvObjs[x][1]==index) {
			sContainer = engAdvObjs[x][2];
		}
	}
	var oContainer = document.getElementById(sContainer);

	var xmlDoc;

	var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
	var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0;
	var is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0;
	var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;

	if (is_ie){
		var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP';
		try {
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.loadXML(text);
		} catch(e) {
			alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled');
			return;
		}
	} else {
		try {
			xmlDoc = new DOMParser().parseFromString(text, "text/xml");
		} catch(e) {}
	}
	if (is_ie || is_ie5) {
		var tag = engAdvRecurseNodeIE(null, xmlDoc.childNodes[0]);
		if (tag!=null) oContainer.appendChild(tag);
	} else {
		var tag = engAdvRecurseNodeFF(oContainer, xmlDoc.childNodes[0]);
	}
}

function engAdvRecurseNodeFF(parentNode, node) {
	var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
	var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0;
	var is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0;
	var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;

	if (node==null) {
		return null;
	}
	if (node.nodeValue!=null) {
		parentNode.innerHTML += node.nodeValue;
		return null;
	}
	if (node.nodeName.toUpperCase()=="BR") {
		parentNode.innerHTML += "<BR>";
		return null;
	}
	var tag = document.createElement(node.nodeName);
	var attr;
	var styleKey;
	var styleValue;
	for (var x=0;x<node.attributes.length;x++) {
		if (node.attributes[x].nodeName.toUpperCase()=="STYLE") {
			if (is_ie||is_ie5) {
				var styles = node.attributes[x].nodeValue.split(";");
				var indstyle;
				for (var y=0; y<styles.length;y++) {
					if (styles[y].length>0) {
						indstyle = styles[y].split(":");
						styleKey = indstyle[0];
						styleValue = indstyle[1];
						if (indstyle.length>2) {
							for (var z=2;z<indstyle.length;z++) {
								styleValue += ":" + indstyle[z];
							}
						}
						tag.style[engAdvDecodeIEstyle(styleKey)] = styleValue;
					}
				}
			} else {
				tag.setAttribute(node.attributes[x].nodeName, node.attributes[x].nodeValue);				
			}
		} else {				
			tag.setAttribute(engAdvDecodeIEstyle(node.attributes[x].nodeName), node.attributes[x].nodeValue);
		}
	}
	parentNode.appendChild(tag);
	
	var newtag;
	for (var x=0;x<node.childNodes.length;x++) {
		newtag = engAdvRecurseNodeFF(tag, node.childNodes[x]);			
	}
	
	return tag;
}

function engAdvRecurseNodeIE(parentNode, node) {
	var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
	var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0;
	var is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0;
	var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;

	if (node==null) {
		return null;
	}
	if (node.nodeValue!=null) {
		parentNode.innerHTML += node.nodeValue;		
		return null;
	}
	if (node.nodeName.toUpperCase()=="BR") {
		parentNode.innerHTML += "<BR>";
		return null;
	}
	if (node.nodeName.toUpperCase()=="OBJECT") {
		parentNode.innerHTML += node.xml;
		return null;
	}
	var tag = document.createElement(node.nodeName);
	var attr;
	var styleKey;
	var styleValue;
	for (var x=0;x<node.attributes.length;x++) {
		if (node.attributes[x].nodeName.toUpperCase()=="STYLE") {
			if (is_ie||is_ie5) {
				var styles = node.attributes[x].nodeValue.split(";");
				var indstyle;
				for (var y=0; y<styles.length;y++) {
					if (styles[y].length>0) {
						indstyle = styles[y].split(":");
						styleKey = indstyle[0];
						styleValue = indstyle[1];
						if (indstyle.length>2) {
							for (var z=2;z<indstyle.length;z++) {
								styleValue += ":" + indstyle[z];
							}
						}
						tag.style[engAdvDecodeIEstyle(styleKey)] = styleValue;
					}
				}
			} else {
				tag.setAttribute(node.attributes[x].nodeName, node.attributes[x].nodeValue);				
			}
		} else {				
			tag.setAttribute(engAdvDecodeIEstyle(node.attributes[x].nodeName), node.attributes[x].nodeValue);
		}
	}
	if (node.nodeName.toUpperCase()=="TABLE" && (is_ie || is_ie5)) {
		var bodytag = document.createElement("TBODY");
	}
	var newtag;
	for (var x=0;x<node.childNodes.length;x++) {
		if (node.nodeName.toUpperCase()=="TABLE" && (is_ie || is_ie5)) {
			newtag = engAdvRecurseNodeIE(bodytag, node.childNodes[x]);
		} else {
			newtag = engAdvRecurseNodeIE(tag, node.childNodes[x]);			
		}				
		if (newtag!=null) {
			if (node.nodeName.toUpperCase()=="TABLE" && (is_ie || is_ie5)) {
				bodytag.appendChild(newtag);
			} else {
				tag.appendChild(newtag);
			}
		}
	}
	if (node.nodeName.toUpperCase()=="TABLE" && (is_ie || is_ie5)) {
		tag.appendChild(bodytag);
	}
	
	return tag;
}

function engAdvDecodeIEstyle(style) {
	switch (style.toUpperCase()) {
		case "BACKGROUND-IMAGE" :
			return "backgroundImage";
			break;
		case "BACKGROUND-COLOR" :
			return "backgroundColor";
			break;
		case "FONT-FAMILY" :
			return "fontFamily";
			break;
		case "FONT-SIZE" :
			return "fontSize";
			break;
		case "FONT-WEIGHT" :
			return "fontWeight";
			break;
		case "TEXT-DECORATION" :
			return "textDecoration";
			break;
		case "COLSPAN" :
			return "colSpan";
			break;
		case "ROWSPAN" :
			return "rowSpan";
			break;
		case "VALIGN" :
			return "vAlign";
			break;
		default :
			return style;
			break;
	}
}

window.setTimeout('engAdvGetAds()', 2000);
