	function createXHR() 
	{
		var request = false;
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (err2) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (err3) {
				try {
					request = new XMLHttpRequest();
				}
				catch (err1) 
				{
					request = false;
				}
			}
		}
		return request;
	}
	
	function getBody(content) 
	{
	   test = content.toLowerCase();    // to eliminate case sensitivity
	   var x = test.indexOf("<body");
	   if(x == -1) return "";

	   x = test.indexOf(">", x);
	   if(x == -1) return "";

	   var y = test.lastIndexOf("</body>");
	   if(y == -1) y = test.lastIndexOf("</html>");
	   if(y == -1) y = content.length;    // If no HTML then just grab everything till end

	   return content.slice(x + 1, y);   
	} 
	
	function loadHTML(url, fun, param)
	{
		var storage = "";
		var xhr = createXHR();
		xhr.onreadystatechange=function()
		{ 
			if(xhr.readyState == 4)
			{
				//if(xhr.status == 200)
				{
					storage = getBody(xhr.responseText);
					fun(storage, param);
				}
			} 
		}; 

		xhr.open("GET", url , true);
		xhr.send(null); 

	} 
	
	function copyContent(content, target){
		target.innerHTML = content;
		setclass(target);
	}
	
	function setclass(el) {
		//var parts = document.URL.split("/");
		//var docname = parts[parts.length-1];
		var x = el.getElementsByTagName("a");
		//alert(x.length + " " + docname);
		for (i=0;i<x.length;i++) {
			if (x[i].href == document.URL) {
				x[i].getElementsByTagName("span")[0].className = "select";
				break;
			}
		}
	}
	
	function loadPageContent(placeholder, url)
	{
		var obj = document.getElementById(placeholder);
		loadHTML(url, copyContent, obj);
	}	
	
	function AjaxPage(url, filetype){ 
		var oXmlHttp = createXHR() ;
		oXmlHttp.OnReadyStateChange = function() { 
			if ( oXmlHttp.readyState == 4 ) { 
				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ) { 
					loadjscssfile( oXmlHttp.responseText, filetype );
				} 
				else 
				{ 
					alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
				} 
			} 
		} 
		oXmlHttp.open('GET', url, true);
		oXmlHttp.send(null);
	} 
 
  
 	function loadjscssfile(source, filetype){
		 if (filetype=="js"){ //if filename is a external JavaScript file
			var fileref=document.createElement('script')
			fileref.setAttribute('async', 'true');
			fileref.setAttribute("language", "javascript");
			fileref.setAttribute("type","text/javascript");
			fileref.setAttribute("defer", true);
			fileref.setAttribute("text", source);
		 }
		 else if (filetype=="css"){ //if filename is an external CSS file
			var fileref=document.createElement("link")
			fileref.setAttribute('async', 'true');
			fileref.setAttribute("rel", "stylesheet");
			fileref.setAttribute("type", "text/css");
			fileref.setAttribute("text", source);
		 }
		 if (typeof fileref!="undefined"){ 
			document.getElementsByTagName("head")[0].appendChild(fileref);
		}
	}
	
	function loadmenu(placeholder){
		AjaxPage("../menu/menu/menu1.css", "css");
		loadPageContent(placeholder, "../menu/menu/menu.html");
	}
	