//ajax functies
function GetXmlHttp() {  
	var xmlhttp = false;  
	if (window.XMLHttpRequest){  
		xmlhttp = new XMLHttpRequest();  
	}  
	else if (window.ActiveXObject)// code for IE  
	{  
		try  
		{  
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP")  
		} catch (e) {  
			try  
			{  
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")  
			} catch (E) {  
				xmlhttp=false;  
			}  
		}  
	}  
	//alert(xmlhttp.responseText);
	return xmlhttp;  
} 


//andere ajax functies
function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}

function GETRequest(query) {
    createXMLHttpRequest();
    var queryString = query;
    
    //xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open("GET", queryString, true);
    xmlHttp.send(null);
}

function sifar(objid, query){
	childObj=document.getElementById(objid);
	ajaxNode=findAjaxNode(childObj);
//	dumpProperties(ajaxNode,'sorter');
	SetInnerHTMLFromAjaxResponse(ajaxNode.id,query);
}

function findAjaxNode(childObj) {
    var testObj = childObj.parentNode;
    while(testObj.id.substring(0,5) != 'ajax_') {
        testObj = testObj.parentNode;
    }
	return testObj;
}

function SetInnerHTMLFromAjaxResponse(obj_id,query) {
	//query kan &amp; bevatten. Eruit slopen!
	query=query.replace(/\&amp;/g,'&');

	ajaxPopup=obj_id;
    createXMLHttpRequest();
          
    var queryString = query;
    
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open("GET", queryString, true);
    xmlHttp.send(null);
}

function sifap(objForm){
	//childObj=document.getElementById(objForm.id);
	//dumpProperties(obj,'sorter');
	ajaxNode=findAjaxNode(objForm);
	POSTRequest(ajaxNode.id,objForm);
	return false;
}

function POSTRequest(obj_id,objForm){
	ajaxPopup=obj_id;
	//alert(objForm.innerHTML);
	url=objForm.action;
	//alert(url);
	//build varstring
	query=createParameterString(objForm);
	//alert(query);
	createXMLHttpRequest();
    xmlHttp.open("POST", url, true);
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
	xmlHttp.send(query);
	//alert('hoi');
	//alert(xmlHttp.responseText);
}

function handleStateChange() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            parseResults();
        }
    }
}

function parseResults(){
	//alert(xmlHttp.responseText);
	//alert(typeof ajaxPopup);
	if(typeof ajaxPopup == 'object'){  
		obj=ajaxPopup;
		obj.innerHTML = xmlHttp.responseText; 
	} 
	else { 
		obj=document.getElementById(ajaxPopup);
		obj.innerHTML = xmlHttp.responseText;
	}
	
	//voer eventuele javascript uit.
	var scriptlist = obj.getElementsByTagName("PRE");
	//alert( typeof document.getElementById(ajaxPopup));
	//alert('aantal:'+scriptlist.length);
	for (n=0;n<scriptlist.length;n++){
		//alert(scriptlist[n].innerHTML);
		eval(scriptlist[n].innerHTML);
	}
}

function createParameterString(form){
	//alert('createParameterString');
    var elements = form.elements;
    var pairs = new Array();
 
    for (var i = 0; i < elements.length; i++) {
		//als het element van het type submitbutton is dan mag het alleen mee als het aangeclicked is
		if ((elements[i].type=='submit' && elements[i].clicked==true) || elements[i].type!='submit'){
        	if ((name = elements[i].name) && (value = getElementValue(elements[i])))
	            pairs.push(name + "=" + encodeURIComponent(value));
				//pairs.push(name + "=" + encodeURI(value));
		}
    }
	//alert(pairs.join("&"));
	return pairs.join("&");
}


function getElementValue(formElement){
	if(formElement.length != null) var type = formElement[0].type;
	if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;
	//alert(formElement.name+'='+formElement.checked+' type:'+type);
	switch(type)
	{
		case 'undefined': return;break;

		case 'radio':
				if(formElement.checked == true){
				//alert(formElement.name+'='+formElement.checked);
				return formElement.value;
				}
		break;
		case 'select-multiple':
			var myArray = new Array();
			for(var x=0; x < formElement.length; x++) 
				if(formElement[x].selected == true)
					myArray[myArray.length] = formElement[x].value;
			return myArray;
		break;

		case 'checkbox': return formElement.checked;break;

		default: return formElement.value;
	}
}

function startCallback() {
    // make something useful before submit (onStart)
    return true;
}

function completeCallback(response) {
	// make something useful after (onComplete)
    //document.getElementById('nr').innerHTML = parseInt(document.getElementById('nr').innerHTML) + 1;
	obj=document.getElementById('PopupContent');
    obj.innerHTML = response;

	//voer eventuele javascript uit.
	var scriptlist = obj.getElementsByTagName("PRE");	
	//alert( typeof document.getElementById(ajaxPopup));
	//alert(obj.outerHTML);
	for (n=0;n<scriptlist.length;n++){
		//alert(scriptlist[n].innerHTML);
		eval(scriptlist[n].innerHTML);
	}
    objPopup=document.getElementById("theLayer");
	resizePopup(objPopup);
	//return false;
}

function submitAIMForm(objForm){
	objForm.target='iframe';
	return AIM.submit(objForm, {'onStart' : startCallback, 'onComplete' : completeCallback});
}

AIM = {

    frame : function(c) {

        var n = 'f' + Math.floor(Math.random() * 99999);
        var d = document.createElement('DIV');
        d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
        document.body.appendChild(d);

        var i = document.getElementById(n);
        if (c && typeof(c.onComplete) == 'function') {
            i.onComplete = c.onComplete;
        }

        return n;
    },

    form : function(f, name) {
        f.setAttribute('target', name);
    },

    submit : function(f, c) {
        AIM.form(f, AIM.frame(c));
        if (c && typeof(c.onStart) == 'function') {
            return c.onStart();
        } else {
            return true;
        }
    },

    loaded : function(id) {
        var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }
        if (d.location.href == "about:blank") {
            return;
        }

        if (typeof(i.onComplete) == 'function') {
            i.onComplete(d.body.innerHTML);
        }
    }

}
