/* create xmlhttp request object */
function getXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}


// ===========================================
function get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}



function copyAttributes(x,inX)
{
	// xmlDoc
	for (i=0;i< inX.attributes.length;i+=1) {
		//alert(i+":"+inX.attributes[i].name+"="+inX.attributes[i].value);
		x.setAttribute(inX.attributes[i].name,inX.attributes[i].value);
		if (inX.attributes[i].name=="href") {
			var hit=inX.attributes[i].value.match(/^http/);
			if (!hit) var hit=inX.attributes[i].value.match(/^\//);
			if (!hit) 
				x.setAttribute(inX.attributes[i].name,xmlRequests.prefix+inX.attributes[i].value);
		}
	}
}

function insertInto(myDoc,xmlDoc,putFirst)
{
	if (!myDoc || !xmlDoc) {
		//alert("Faild:"+myDoc+":"+xmlDoc);
		return false;		
	}
// xmlDoc
/*
	if (xmlDoc.childElementCount>0) {
		var inChild = xmlDoc.firstElementChild;
		do {
			var child = document.createElement(inChild.nodeName);
			copyAttributes(child,inChild);
			insertInto(child,inChild);
			if (putFirst)
				myDoc.insertBefore(child,myDoc.firstElementChild);
			else
				myDoc.appendChild(child);
		}
		while (inChild=inChild.nextElementSibling)
	}	
	else {
	*/
		var inChild = xmlDoc.firstChild;
		if (inChild) {
			var child;
			do {
			if (inChild.nodeType==1) { // Element
				child = document.createElement(inChild.nodeName);
				copyAttributes(child,inChild);
				insertInto(child,inChild);
			}
			else if (inChild.nodeType==3) { // Text ?
				//				myDoc.innerHTML=inChild.nodeValue;
				var str= inChild.nodeValue; //.replace(/\&amp;/g,'&');
				var t = inChild.nodeValue.match("&ndash;");
				if (t) {
					// alert (str);    fix for escaped characters
					myDoc.innerHTML=str;
					str="";
				}
				child = document.createTextNode(str);
			}
			if (putFirst)
				myDoc.insertBefore(child,myDoc.firstChild);
			else
				myDoc.appendChild(child);
			
			} while (inChild = inChild.nextSibling) ;
		}
	
	return true;
}

xmlRequests = new Object();
xmlRequests.printBar=null;
xmlRequests.myheader = null;
xmlRequests.navbar = null;
xmlRequests.leftfoot = null;

function setPrefix()
{
	var x=location.href;
	x=x.match(/^\S+\//);
	x=x[0].replace(/^\S*~dreas\//,"");
	x=x.replace(/\w+\//g,"../");
	xmlRequests.prefix=x;
}
setPrefix();

function createRequest(key,filename,writer,putfirst) 
{
	filename=xmlRequests.prefix+filename;
	var xmlReq =   xmlRequests[key];
//	alert(key+xmlReq);
   	if (!xmlReq) {
	   xmlReq = getXmlHttpObject();
       xmlRequests[key]=xmlReq;
	   if (!xmlReq) alert("Your browser does not support XMLHTTP");
       xmlReq.onreadystatechange=writer;
       xmlReq.open("GET",filename);
       xmlReq.send(null);
   	}
   	else {
     	if (xmlReq.readyState==4) {
   
     		var xmlDoc=xmlReq.responseXML;
     		//alert("received header");
     		
     		var myElement=document.getElementById(key);
     		insertInto(myElement,xmlDoc.documentElement,putfirst);
   		}
   	}
}
xmlRequests.write=createRequest;

function writeHeader() 
{
	xmlRequests.write("myheader","config/header",writeHeader,true);
}

function writeNavigation() 
{
	xmlRequests.write("navbar","config/navigation.xml",writeNavigation,true);   
}

function writePrintBar() 
{
	xmlRequests.write("printBar","config/printBar.xml",writePrintBar,false);   
}


function writeFooter() 
{
	xmlRequests.write("leftfoot","config/footer.xml",writeFooter,false);   
    if (xmlRequests.leftfoot) {
     	if (xmlRequests.leftfoot.readyState==4) {
     	// replace email address
     		writeEmails();
     		
     		// get last change date
			var lastmod = document.lastModified     // get string of last modified date
			var ldTest = Date.parse(lastmod)   // convert modified string to date
			if (ldTest!=0) {               // unknown date (or January 1, 1970 GMT)
				var ld = new Date(lastmod);
				var x;
				if (document.getElementsByClassName)
					 x=document.getElementsByClassName("moddate");
				else {
					x=[];
					var y =document.getElementById("moddate");
					if (y) x.push(y);
				}
				for (var i=0;i<x.length;i++) {
					var month=ld.getMonth()+1;
					var year=ld.getYear(); if (year<1900) year+=1900;
					var day=ld.getDate(); if (day<10) day="0"+day;
					x[i].innerHTML=year+"/"+month+"/"+day;
				}
			}
		}
   }
}

function writeLocationBar() 
{
	var locationBar=document.getElementById("locationBar");
	if (locationBar) {
		var nSpan = document.createElement("span");
		var nText =	document.createTextNode(location.href);
		nSpan.appendChild(nText);
		locationBar.appendChild(nSpan);
	}
}

function preLoad(name) 
{
	heavyImage = new Image(); 
	heavyImage.src = xmlRequests.prefix+name;
}

function sendRequests() 
{
	writePrintBar(); 
	writeLocationBar();
	writeHeader();
	writeNavigation();
	writeFooter();
	preLoad("images/icon_print_black.gif");
	preLoad("images/icon_fastnavigator_black.gif");
	preLoad("images/icon_fonbook_black.gif");
	
	if (document.getElementsByClassName) {
		a=document.getElementsByClassName("mytable");
		if (a && a.length>0)
			a[0].style.display="inline-block";
		
	}
}


