// ============== AJAX CLASS (for advance use) =============================== // 
function AjaxContainer()
{
	this.destination;
	this.responsHolderID;
	this.xmlHttp;
	this.loader = 'loading';
	this.loading = true;
	this.executeONreadyState_1 = [];
	this.executeONreadyState_4 = [];
	this.executeONerror = [];
	this.noRespons = false;
	this.params = '';
	this.createNewHttpObject();
	this.activate_detect_error = false; 
	this.regEx;
}
	// ful de globale arry met het http object
	AjaxContainer.prototype.createNewHttpObject = function() {
	    if(window.ActiveXObject){
	        this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	    else if(window.XMLHttpRequest){
	         this.xmlHttp = new XMLHttpRequest();
	    }
	}
	// hadle the requests 
	AjaxContainer.prototype.send = function(){

	   this.xmlHttp.open("POST", this.destination+'?' + this.url, true);

	    var id = this.responsHolderID;
	    var loading = this.loader;
	    var http_obj = this.xmlHttp;
	    var load = this.loading;
	    var funcs_1 = this.executeONreadyState_1;
	    var funcs_4 = this.executeONreadyState_4;
	    var error_func =  this.executeONerror;
	    var norespons = this.noRespons;
	    var server_error = this.activate_detect_error;
	    var errer_reference = this.errer_reference;
	    var regexp = this.regEx;
	    
	    this.xmlHttp.onreadystatechange = function(){
				// function trim
				var trim = function(input){
					var find = input;
					return find.replace(/^(\s*)(\t*)|(\s*)(\t*)$/,'');
				}
				// find the error 			
				var searchValidValue = function(string){
					var reg = regexp; 
					if(reg.test(string)){
						return true;
					}
				}
				if(http_obj.readyState == 1) {
					if(!norespons){
						if(load){
							document.getElementById(id).innerHTML = loading;
						}
					}
			        for(var y in funcs_1){
			        	funcs_1[y]();	
			        }
				}
				// 	
			    if(http_obj.readyState == 4) {
			        if(http_obj.status == 200) {
			        	if(!norespons){
			            	document.getElementById(id).innerHTML = trim(http_obj.responseText);
			        	}
			        	
			        	// if there appeare a error on the server
			        	if(server_error == true){
				        		if(!searchValidValue(http_obj.responseText)){
				        			// execute when there appeare a error
							        for(var r in error_func){
							        	error_func[r]();	
							        }
							        // wel goed
				        		}else{
						        	for(var x in funcs_4){
						        		funcs_4[x]();	
						        	}			        			
				        		}
				        // geen error detection
			        	}else{
				        	for(var x in funcs_4){
				        		funcs_4[x]();	
				        	}
						}
			        }
	    	   }	    	
	    }
	    this.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
	    this.xmlHttp.send(this.params);		
	}
	// add parameters to the http object
	AjaxContainer.prototype.addParam = function(key, value){
		this.params += key +'='+ value +'&';
	}


function makeObject(){
	var x;
	if (window.ActiveXObject){
		x = new ActiveXObject("Microsoft.XMLHTTP");
	}else if (window.XMLHttpRequest){
		x = new XMLHttpRequest();
	}
	return x;
}



var LoadingImg = '<div class="Loading"><img src="/aletta/img/ajax-loader.gif" /></div>';
// check Content
// http://www.ajaxload.info/
function Send(input,id1, sync){
	var request = makeObject();

	request.open('GET', input, sync);	//extra param false voor asynchroon = false werkt niet voor keywords en getallen selectie en historie
	request.onreadystatechange = function(){
		
			  if(request.readyState == 1){
			  	//
					document.getElementById(id1).innerHTML = LoadingImg;
				}
				if(request.readyState == 4){
				    document.getElementById(id1).innerHTML = request.responseText;
				}		
	}
	request.send('');
}


function SendO(input,did){
	var d = '';
	var i = '';
	var t = '';
	var request = makeObject();
	
	request.open('GET', input);
	request.onreadystatechange = function(){
				if(request.readyState == 4){
						
			//		var img = "<img src=\""+ request.responseText + "\"/>";
				  if (did == 'sel'){
				    d = request.responseText;
				    i = did + '1';
				    document.getElementById(i).innerHTML = MY_SELECTION[LANGUAGE] +' ('+d+')';
				    i = did + '2';
				    document.getElementById(i).innerHTML = '<a href="#" onclick="show_selectie(); return false;">('+d+')</a>';
				  }
				  else if (did == 'hist1'){
				    d = request.responseText;
				    document.getElementById(did).innerHTML = SEARCH_HISTORY[LANGUAGE] +' ('+d+')';
				  }
				}		
	}
	request.send('');
}


function SendS(url, query, sid, frm) {

    var request = makeObject();
   
    request.open("POST", url, true);
    request.onreadystatechange = function(){

			    if(request.readyState == 4) {
			    	
			        if(request.status == 200) {
								if (frm != ''){
								  frm.submit();
								}
								else {
									document.getElementById(sid).innerHTML = request.responseText;
								}	
			        }
			    }   	
    }
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
    request.send(query);
}
    

function parseResults() {
     //alert(xmlHttp.responseText);
     document.getElementById(SID).innerHTML = request.responseText;
     
}


function SendPopup(input,id3){
	
	var request = makeObject();
	
	request.open('GET', input);
	request.onreadystatechange = function(){
				var layer =  document.getElementById('Popup');
				var content =  document.getElementById('textPopup');
				
				if(request.readyState == 1){
					document.getElementById(id3).innerHTML = LoadingImg;
			//		layer.style.width = 200 + 'px';
			//		layer.style.height = 200 + 'px';
				}
				if(request.readyState == 4){
			//		var img = "<img src=\""+ request.responseText + "\"/>";
				    document.getElementById(id3).innerHTML = request.responseText;
				    
				    layer.style.height = '';
				 // controleer het een img is en aan de class name voldoet
					if(layer.getElementsByTagName('img')[0] && layer.getElementsByTagName('img')[0].className == 'imgPOPUP'){
			//			layer.style.width = layer.getElementsByTagName('img')[0].offsetWidth + 20 + 'px';
						layer.style.width = 420 + 'px';
					}else if(layer.getElementsByTagName('span')[0] && layer.getElementsByTagName('span')[0].id == 'boxMenuHolder'){
						layer.style.width = 685 + 'px';
					}else{
						layer.style.width = 685 + 'px';
						content.className = 'scroll';	
						content.style.width = 670 + 'px';
					}
					
				}		
	}	
	request.send('');
	popUpP('shadow','popupHolder','block'); // execute
	
}

function highlight_ead(){	
	if(document.getElementById('contentMenuPopup') == null){
		// object bestaat niet
		return;
	}else{
				// execute Highlighting
				jQuery(function(){
						for(var b = 0; b < arraySearchResult.length; b++){
							$(document.getElementById('contentMenuPopup')).highlight(arraySearchResult[b], true, 'found');
						}				
				});	
	}
}


// toont de popup en geeft de scroll mee 
function popUpP(shadowId,holderId, property){
	var X = 0; 
	var Y = 0;
	
	var content =  document.getElementById('textPopup');
	var layer =  document.getElementById('Popup');
	
	if( typeof(window.pageYOffset ) == 'number' ) {
		Y = window.pageYOffset; 
		X = window.pageXOffset;
	} 
	else if(document.body && ( document.body.scrollLeft || document.body.scrollTop )) {
		Y = document.body.scrollTop; 
		X = document.body.scrollLeft;
	} 
	else if(document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop )) {
		Y = document.documentElement.scrollTop; 
		X = document.documentElement.scrollLeft;
	}
	layer.style.marginTop = parseInt(40) + parseInt(Y) + 'px';

	// height of de shadow renderen
	document.getElementById(shadowId).style.height = screen.height + parseInt(Y) + 'px';
	document.getElementById(holderId).style.height = screen.height + parseInt(Y) + 'px';
	
	document.getElementById(shadowId).style.display = property;
	document.getElementById(holderId).style.display = property;
	document.getElementById('textPopup').className = '';
}