/********************************************************
*	XMLHttp HTML page loader.
* 	Filters head tag and adds elements to parent document
* 	2006 Jeroen Versteege © FIQAS Software B.V.
*********************************************************/

var loadedobjects="";
var rootdomain="http://"+window.location.hostname;
var adres = "";
var response = "";
var targetDiv = "";
var loader = ""; // location relative to root document.
var tmpElement = "";
var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
var bMoz = (navigator.appName == 'Netscape');

function request(){

var parent = this;
this.vars = new Array();
this.response = null;
this.adres = "";
this.type = "TEXT";

if(window.XMLHttpRequest){
	var req = new XMLHttpRequest();
	}
 else if (window.ActiveXObject){
	var req = new ActiveXObject('Microsoft.XMLHTTP');
	}
else{
	return false;
	}

req.onreadystatechange = function(){
	if(req.readyState == 4){
		if(req.status == 200){
			if(parent.type == 'XML'){
				parent.response(req.responseXML);
				}
			else{
				parent.response(req.responseText);
				}
			}
     else{
            // Handig bij ASP-fouten ;)
            var respText = "";
            if ( req.status == 500 )
            {
                respText = req.responseText;
                var i = respText.indexOf("<p>Technical Information (for support personnel)</p>");
                var j = respText.indexOf("<li>More information:<br>");
                respText = respText.substring(i,j);
            }
           	parent.response("Error code " + req.status + respText);
			}
 		}
	}
	
this.get = function(){
	req.open('GET',parent.adres,true);
	req.send(null);
	}
	
this.post = function(){
	req.open('POST',parent.adres,true);
	req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	var varString = "";
	for(var keys in parent.vars){
		if(keys == "find") continue;
		varString += (keys + "=" + parent.vars[keys] + "&");
		}
  req.send(encodeURI(varString));
	}
}

function fillDiv(source,target,loaderOff){

slideStop(); 

var Connect = new request();
Connect.adres = source;

Connect.response = function(content) { 
                            parseData(content,target) }
	if(!loaderOff){	
		document.getElementById(target).innerHTML = loader;
		}
Connect.get();
	}

function parseData(content,target){
		var docXp = /<!+.+>/;
		var content = content.replace(docXp,'');		
		var headXp = /<head>+(.|\n)+<\/head>/gi;
		var theHead = content.match(headXp);
		content = content.replace(headXp,'');
		while(content.match(/(<(.|)body(.|)>|<html.*>|<\/html>)/i)){
			content = content.replace(/(<(.|)body>|<html.*>|<\/html>)/i,'');
			}
		if(theHead){
			parseHead(theHead.toString(),target);
			}
		var tmpTarget = document.getElementById(target);
		tmpTarget.innerHTML = content;
		execJS(tmpTarget);
		//25-08  Dit lijkt vertragend te werken, maar was ooit wel ergens goed voor (?)
		//var tmpParent = tmpTarget.parentNode;
		//var newNode = tmpTarget.cloneNode(true); 
		//tmpParent.appendChild(newNode);
	    ////execJS(content);
		//tmpParent.removeChild(tmpTarget);
		}

function parseHead(Head,forTarg){
	var linkXP = /<link.*>/;
	while(Head.match(linkXP)){
		var file = "";
		file = Head.match(linkXP).toString();
		file = file.replace(/<link.*href\="/,"");
		file = file.replace(/".*>/,"");
		var fileref = "";		
		if (file.indexOf(".css")!=-1){ 
			//If object is a css file
			for(hc=0;hc<document.getElementsByTagName("head").item(0).childNodes.length;hc++){
			var cur = document.getElementsByTagName("head").item(0).childNodes[hc];
			if(cur && cur.forTarg == forTarg){
				document.getElementsByTagName("head").item(0).removeChild(cur);
				}
			}
			fileref=document.createElement("link")
			fileref.setAttribute("rel", "stylesheet");
			fileref.setAttribute("type", "text/css");
			fileref.setAttribute("href", file);
			fileref.forTarg = forTarg;
			}
		if (fileref!=""){
			document.getElementsByTagName("head").item(0).appendChild(fileref)
			}
		Head = Head.replace(linkXP,"");
		}
		
	var scriptXP = /<script.*>/;
	while(Head.match(scriptXP)){
		var file = "";
		file = Head.match(scriptXP).toString();
		file = file.replace(/<link.*src\="/,"");
		file = file.replace(/".*>/,"");
		var fileref = "";		
		if (file.indexOf(".js")!=-1){ 
			//If object is a js file
			for(hc=0;hc<document.getElementsByTagName("head").item(0).childNodes.length;hc++){
			var cur = document.getElementsByTagName("head").item(0).childNodes[hc];
			if(cur && cur.forTarg == forTarg){
				document.getElementsByTagName("head").item(0).removeChild(cur);
				}
			}
			fileref=document.createElement('script')
			fileref.setAttribute("type","text/javascript");
			fileref.setAttribute("src", file);
			fileref.forTarg = forTarg;
			}
		if (fileref!=""){
			document.getElementsByTagName("head").item(0).appendChild(fileref)
			}
		Head = Head.replace(scriptXP,"");
		}
	}
	
function execJS(node) {
    var st = node.getElementsByTagName('SCRIPT');
    var strExec;
    for(var i=0;i<st.length; i++) {     
        if (bSaf) {
            strExec = st[i].innerHTML;
            }
        else if (bOpera) {
            strExec = st[i].text;
            }
        else if (bMoz) {
             strExec = st[i].textContent;
             }
        else {
             strExec = st[i].text;
             }
        try {
                eval(strExec);
            } catch(e) {
            alert(e+strExec);
            }
    }
}

function initDropdown(source,target)
{
var Connect = new request();
Connect.adres = source;
Connect.type = 'XML';
Connect.response = function(XML){
                    fillDropdown(XML,target);
               }
Connect.get();
}	

function fillDropdown(XML,target)
{
    var i = 0;
    var s = 0;
    var tmpTarget = document.getElementById(target);
    // dropdown legen
    for ( var x = tmpTarget.options.length - 1 ; x >= 0 ; x -- )
        tmpTarget.options[x] = null;
    //standaard waarde zetten d.m.v. dropdown-title. Value wordt dan -1       
    if ( tmpTarget.title != "" ) {
        tmpTarget.options[0] = new Option(tmpTarget.title);
        tmpTarget.options[0].value = -1;
        i = 1;
    }       
                    
    for ( var x = 0 ; x < XML.getElementsByTagName('option').length ; x++ ) {
        opt = XML.getElementsByTagName('option').item(x);
        if ( opt.getAttribute('selected') == '1' ) s = x+i;
        tmpTarget.options[x+i] = new Option(opt.getAttribute('text'));
        tmpTarget.options[x+i].value = opt.getAttribute('value');        
    }
    if ( s > 0 ) tmpTarget.options[s].selected = true;
}

function simpleRequest(source)
{
    var Connect = new request();
    Connect.adres = source;
    Connect.response = function(content) { var x = content; }
    Connect.get();
}



function sendForm(formId,adres,target){
	var theVars = new Array();
	var Connect = new request();
	Connect.type = "TEXT";
	Connect.adres = adres;
	Connect.response = function(content) { 
                            parseData(content,target ) }

	if(document.getElementById(formId)){
		var theForm = document.getElementById(formId);
		for(f=0;f<theForm.elements.length;f++){
			Connect.vars[theForm.elements[f].name] = theForm.elements[f].value;
			}
		Connect.post()
	}
	else{
		alert("Form " + formId + " not found!"); ///<<<<<<<<<<<<<<<<<<<
		}
	}

function setCallback(callBack,target){
  document.getElementById(target).onload = function(){try{eval(callBack + ";this.onLoad = ''")}catch(e){alert(e+strExec)};}
  }
