		function createRequestObject() {
			/*var msxmlhttp = new Array( 
			'Msxml2.XMLHTTP.5.0', 
			'Msxml2.XMLHTTP.4.0', 
			'Msxml2.XMLHTTP.3.0', 
			'Msxml2.XMLHTTP', 
			'microsoft.xmlhttp'); 
			for (i=0;i<msxmlhttp.length;i++) { 
			try { 
				thisConn = new ActiveXObject(msxmlhttp[i]); 
			} catch (e) { 
				thisConn = null; 
			} 
			} 
			if(!thisConn && typeof XMLHttpRequest!= "undefined") { 
				thisConn = new XMLHttpRequest(); 
			} 
			if (!thisConn) { 
				thisConn = false; 
			} */
			var ro;
			var browser = navigator.appName;
			if(browser == "Microsoft Internet Explorer"){
					//alert('ie');
				ro = new ActiveXObject("Microsoft.XMLHTTP");
			}else{
				ro = new XMLHttpRequest();
			}
			return ro;
		}
		
		var http = createRequestObject();
				
		function sndReq(action, val) {
			//sets a null string default value
			
			var val = (val == null) ? "" : val;
			
			document.getElementById('loading').style.display = 'block';
			oMoveTo('loading', 'rightarrow', -115, -100);
			document.getElementById('rightarrow').style.display = 'none';
			document.getElementById('leftarrow').style.display = 'none';
			//document.getElementById('bigimg').innerHTML = 'Loading...';
			if (val.indexOf('&' == -1)){
				http.open('post', 'response.php?action='+action+'&val='+val, true);
			}else{
				//if val contains '&' then allow for a val of mixed length args e.g. &val1=1&val2=2&val3=3' 
				http.open('post', 'response.php?action='+action+val, true);
			}
			http.onreadystatechange = handleResponse;
			http.send(null);
		}
		
		function oMoveTo(oToMove, oRelative, xOff, yOff){
			var xOff = (xOff == null) ? "" : xOff;
			var yOff = (yOff == null) ? "" : yOff;
			el = document.getElementById(oRelative);
			p = getAbsPos(el);
			document.getElementById(oToMove).style.left = p.x + xOff;
			document.getElementById(oToMove).style.top = p.y + yOff;
		}
		
		function printElt(element) {
			var display = new Array();
			display = element.split('|');
			//remove random space character addition
			
			var el = display[0];
			document.getElementById(el).innerHTML = display[1];
			document.getElementById(el).style.display = 'block';
			//document.getElementById('notloading').style.display = 'block';
			document.getElementById('loading').style.display = 'none';
			document.getElementById('rightarrow').style.display = 'block';
			document.getElementById('leftarrow').style.display = 'block';
		}
		
		function handleResponse() {
			if(http.readyState == 4){
				var response = http.responseText;
				var divs = new Array();
				
				if(response.indexOf('|' != -1)) {
					//alert(response);
					divs = response.split('<divs>');
					//alert(divs);
					for (var n = 0; n < divs.length; n++){
						printElt(divs[n]);
					}
				}
			}
		}
		function oMoveTo(oToMove, oRelative, xOff, yOff){
			var xOff = (xOff == null) ? "" : xOff;
			var yOff = (yOff == null) ? "" : yOff;
			el = document.getElementById(oRelative);
			p = getAbsPos(el);
			document.getElementById(oToMove).style.left = p.x + xOff;
			document.getElementById(oToMove).style.top = p.y + yOff;
		}
		function getAbsPos(el) {
			var SL = 0, ST = 0;
			var is_div = /^div$/i.test(el.tagName);
			if (is_div && el.scrollLeft)
				SL = el.scrollLeft;
			if (is_div && el.scrollTop)
				ST = el.scrollTop;
			var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
			if (el.offsetParent) {
				var tmp = this.getAbsPos(el.offsetParent);
				r.x += tmp.x;
				r.y += tmp.y;
			}
			return r;
		};
		
