	var xmlHttp = getXmlHttp();
	var action;
	var filterpars;

	function getXmlHttp(){
		try{ // Firefox, Opera 8.0+, Safari
			xmlHttp=new XMLHttpRequest();
		}catch (e){
			try{ // Internet Explorer
	    	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	    }catch (e){
	    	try{ // other
	        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	      }catch (e){
	      	alert("Your browser does not support AJAX!");
	        return false;
	      }
	    }
		}
		return xmlHttp;
	}

	function doRequest(a, dspwaitmsg, parstring){
		action = a;
		if (dspwaitmsg == 1) showWaitMessage();
		xmlHttp.open("POST", "imis.php?page=isearchresults", true);
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		xmlHttp.onreadystatechange = handleResult;
		xmlHttp.send("action=" + a + parstring);
	}

	function handleResult(){
		if(xmlHttp.readyState==4){
			switch(action){
				case "select":
					document.getElementById("nrrestop").innerHTML = xmlHttp.responseText;
					document.getElementById("nrresbottom").innerHTML = xmlHttp.responseText;
					break;
				case "showfilter": /* case "inBasket": case "clearBasket": case "loadBasket": */
					if (filterdiv.hasChildNodes()) {
						var childdiv = filterdiv.childNodes[0];
						var i=1;
						while(i < filterdiv.childNodes.length && childdiv.id!='showFilterResponseDiv'){
							childdiv=filterdiv.childNodes[i];
							i++;
						}
						filterdiv.removeChild(childdiv)
					}
					var newdiv = document.createElement("div");
					newdiv.id='showFilterResponseDiv';
					newdiv.innerHTML = unescape(xmlHttp.responseText);
					filterdiv.appendChild(newdiv);
					whilepopupdiv.style.visibility = 'visible';
					filterdiv.style.visibility = 'visible';
					break;
				case "showshowfilters":
					showfiltersdiv.innerHTML = unescape(xmlHttp.responseText);
					whilepopupdiv.style.visibility = 'visible';
					showfiltersdiv.style.visibility = 'visible';
					break;
				case "showsnapshot":
					snapshotdiv.innerHTML = unescape(xmlHttp.responseText);
					whilepopupdiv.style.visibility = 'visible';
					snapshotdiv.style.visibility = 'visible';
					break;
				case "showpdfdisclaimer":
					pdfdisclaimerdiv.innerHTML = unescape(xmlHttp.responseText);
					whilepopupdiv.style.visibility = 'visible';
					pdfdisclaimerdiv.style.visibility = 'visible';
					break;
				case "previewfilter":
					var previewfilter = document.getElementById("previewfilter");
					previewfilter.innerHTML = unescape(xmlHttp.responseText);
					break;
				case "showhelp": case "helpBasket":
					helpdiv.innerHTML = unescape(xmlHttp.responseText);
					whilepopupdiv.style.visibility = 'visible';
					helpdiv.style.visibility = 'visible';
					break;
				case "navhelp":
					helpdiv.innerHTML = unescape(xmlHttp.responseText);
					break;
				default:
					maindiv.innerHTML = unescape(xmlHttp.responseText);
					startList();
			}
			hideWaitMessage();
		}
	}

	function doFilter(){
		hideFilter(); makeFilterPars();
		doRequest("addfilter", 1, filterpars);
	}

	function makeFilterPars(){
		var filterform = document.getElementById("filterform");

		filterpars = "";
		for (var i=0;i<filterform.length;i++){
  			if (filterform.elements[i].type == 'checkbox') {
				if (filterform.elements[i].checked) {
					filterpars += "&"
					filterpars += escape(filterform.elements[i].name);
					filterpars += "="
					filterpars += escape(filterform.elements[i].checked);
				}
			}
			else {
				filterpars += "&"
				filterpars += escape(filterform.elements[i].name);
				filterpars += "="	
				filterpars += escape(filterform.elements[i].value);
			}
  	}
	}

	function previewFilter(){
		var previewfilter = document.getElementById("previewfilter");

		previewfilter.innerHTML = "<img src='working.gif' border='0' />";
		makeFilterPars();
		doRequest("previewfilter", 0, filterpars);
	}

	function doUndoFilter(){ doRequest("removelastfilter", 1, ""); }
	function doUndoAllFilters(){ doRequest("removeallfilters", 1, ""); }

	function noResponse(){ }

	function doSearch(){ doRequest("search", 1, ""); }
	function doNav(startrec, stoprec){ doRequest("nav", 1, "&par1=" + startrec + "&par2=" + stoprec); }

	function doSelect(key){ doRequest("select", 1, "&par1=" + key); }
	function doSelectAll(startrec, stoprec){ doRequest("selectall", 1, "&par1=" + startrec + "&par2=" + stoprec); }
	function doSelectAllOnPage(startrec, stoprec){ doRequest("selectallonpage", 1, "&par1=" + startrec + "&par2=" + stoprec); }

	function doRemoveAll(startrec, stoprec){ doRequest("removeall", 1, "&par1=" + startrec + "&par2=" + stoprec); }
	function doRemoveAllOnPage(startrec, stoprec){ doRequest("removeallonpage", 1, "&par1=" + startrec + "&par2=" + stoprec); }

	function doInvertSelection(startrec, stoprec){ doRequest("invertselection", 1, "&par1=" + startrec + "&par2=" + stoprec); }
	function doInvertSelectionOnPage(startrec, stoprec){doRequest("invertselectiononpage", 1, "&par1=" + startrec + "&par2=" + stoprec);}

	function doChangeRecPP(recpp){doRequest("recpp", 1, "&par1=" + recpp);}
	function doChangeSort(sort){doRequest("sort", 1, "&par1=" + sort);}
	function doChangeExportDest(startrec, stoprec, dest){doRequest("exportdest", 1, "&par1=" + startrec + "&par2=" + stoprec + "&par3=" + dest);}
	function doChangeExportFormat(startrec, stoprec, format){doRequest("exportformat", 1, "&par1=" + startrec + "&par2=" + stoprec + "&par3=" + format);}
	function doChangeCurrentSearch(nr){	hideShowFilters();doRequest("changecurrentsearch", 1, "&par1=" + nr);}

	function doContinue(startrec, stoprec){doRequest("continue", 1, "&par1=" + startrec + "&par2=" + stoprec);}
	function doBack(startrec, stoprec){doRequest("back", 1, "&par1=" + startrec + "&par2=" + stoprec);}

	function doRemoveRecord(startrec, stoprec, key){doRequest("removerecord", 1, "&par1=" + startrec + "&par2=" + stoprec + "&par3=" + key);}

	function inBasket(startrec, stoprec){ doRequest("inBasket", 1, "&par1=" + startrec + "&par2=" + stoprec); }
	function clearBasket(startrec, stoprec){ doRequest("clearBasket", 1, "&par1=" + startrec + "&par2=" + stoprec); }
	function loadBasket(startrec, stoprec){ doRequest("loadBasket", 1, "&par1=" + startrec + "&par2=" + stoprec); }
	function helpBasket(){ doRequest("helpBasket", 1, ""); }

	function showFilter(){ doRequest("showfilter", 1, ""); }
	function hideFilter(){ whilepopupdiv.style.visibility='hidden'; filterdiv.style.visibility='hidden'; }
	function showShowFilters(){ doRequest("showshowfilters", 1, ""); }
	function hideShowFilters(){ whilepopupdiv.style.visibility='hidden'; showfiltersdiv.style.visibility='hidden'; }

	function showSnapshot(key){ doRequest("showsnapshot", 1, "&par1=" + key); }
	function hideSnapshot(){ whilepopupdiv.style.visibility='hidden'; snapshotdiv.style.visibility='hidden'; }

	//function showPdfDisclaimer(file){ doRequest("showpdfdisclaimer", 1, "&par1=" + file); }
	function showPdfDisclaimer(file, opnArchSpColID){ doRequest("showpdfdisclaimer", 1, "&par1=" + file + "&par2=" + opnArchSpColID); }
	function hidePdfDisclaimer(){ whilepopupdiv.style.visibility='hidden'; pdfdisclaimerdiv.style.visibility='hidden'; }
	function acceptPdfDisclaimer(file){ window.open('http://www.vliz.be/imisdocs/publications/' + file + '.pdf', 'pdf'); hidePdfDisclaimer(); }

	function showHelp(){ doRequest("showhelp", 1, ""); }
	function hideHelp(){ whilepopupdiv.style.visibility='hidden'; helpdiv.style.visibility='hidden'; }

	function doNavHelp(page){ doRequest("navhelp", 1, "&par1=" + page); }

	function showWaitMessage(){ waitdiv.style.visibility='visible'; waitmesdiv.style.visibility='visible';}
	function hideWaitMessage(){ waitdiv.style.visibility='hidden'; waitmesdiv.style.visibility='hidden';}

	function positionWaitMessage(){
		waitmesdiv.style.left = getPositionLeft(maindiv) + ((getWidth(maindiv) - getWidth(waitmesdiv))/2);
		waitmesdiv.style.top = getPositionTop(maindiv) + 150 + getScrollTop();
		window.setTimeout("positionWaitMessage()", 50);
	}

	function positionTransparentLayers(){
		var left = getPositionLeft(maindiv);
		var top = getPositionTop(maindiv);
		var width = getWidth(maindiv);
		var height = getHeight(maindiv);

		waitdiv.style.top = top;
		waitdiv.style.left = left;
		waitdiv.style.width = width;
		waitdiv.style.height = height;
		whilepopupdiv.style.top = top;
		whilepopupdiv.style.left = left;
		whilepopupdiv.style.width = width;
		whilepopupdiv.style.height = height;
		window.setTimeout("positionTransparentLayers()", 500);
	}

	function positionPopups(){
		var ww = getWindowWidth();
		var wh = getWindowHeight();
		var sl = getScrollLeft();
		var st = getScrollTop();

		filterdiv.style.left = (ww - getWidth(filterdiv))/2 + sl;
		filterdiv.style.top = (wh - getHeight(filterdiv))/2 + st;
		showfiltersdiv.style.left = (ww - getWidth(showfiltersdiv))/2 + sl;
		showfiltersdiv.style.top = (wh - getHeight(showfiltersdiv))/2 + st;
		snapshotdiv.style.left = (ww - getWidth(snapshotdiv))/2 + sl;
		snapshotdiv.style.top = (wh - getHeight(snapshotdiv))/2 + st;
		pdfdisclaimerdiv.style.left = (ww - getWidth(pdfdisclaimerdiv))/2 + sl;
		pdfdisclaimerdiv.style.top = (wh - getHeight(pdfdisclaimerdiv))/2 + st;
		helpdiv.style.left = (ww - getWidth(helpdiv))/2 + sl;
		helpdiv.style.top = (wh - getHeight(helpdiv))/2 + st;
		window.setTimeout("positionPopups()", 100);
	}

	function hideStatus(){ window.status='IMIS: Integrated Marine Information System'; return true; }

	function getWidth(obj){ return obj.offsetWidth; }
	function getHeight(obj){ return obj.offsetHeight; }

	function getPositionLeft(obj){
    var curleft = 0;
    if(obj.offsetParent)
        while(1){
          curleft += obj.offsetLeft;
          if(!obj.offsetParent) break;
          obj = obj.offsetParent;
        }
    else if(obj.x) curleft += obj.x;
    return curleft;
  }

	function getPositionTop(obj){
    var curtop = 0;
    if(obj.offsetParent)
        while(1){
          curtop += obj.offsetTop;
          if(!obj.offsetParent) break;
          obj = obj.offsetParent;
        }
    else if(obj.y) curtop += obj.y;
    return curtop;
  }

	function getWindowWidth(){
  	var myWidth = 0;
  	if( typeof( window.innerWidth ) == 'number' ){ //Non-IE
    	myWidth = window.innerWidth;
  	}else if( document.documentElement && document.documentElement.clientWidth ){ //IE 6+ in 'standards compliant mode'
    	myWidth = document.documentElement.clientWidth;
  	}else if( document.body && document.body.clientWidth ){ //IE 4 compatible
    	myWidth = document.body.clientWidth;
  	}
  	return myWidth;
	}

	function getWindowHeight(){
  	var myHeight = 0;
  	if( typeof( window.innerHeight ) == 'number' ){ //Non-IE
    	myHeight = window.innerHeight;
  	}else if( document.documentElement && document.documentElement.clientHeight ){ //IE 6+ in 'standards compliant mode'
    	myHeight = document.documentElement.clientHeight;
  	}else if( document.body && document.body.clientHeight ){ //IE 4 compatible
    	myHeight = document.body.clientHeight;
  	}
  	return myHeight;
	}

	function getScrollLeft(){
	  var scrOfX = 0;
	  if( typeof( window.pageXOffset ) == 'number' ){ //Netscape compliant
	    scrOfX = window.pageXOffset;
	  }else if( document.body && document.body.scrollLeft ){ //DOM compliant
	    scrOfX = document.body.scrollLeft;
	  }else if( document.documentElement && document.documentElement.scrollLeft ){ //IE6 standards compliant mode
	    scrOfX = document.documentElement.scrollLeft;
	  }
	  return scrOfX;
	}

	function getScrollTop(){
	  var scrOfX = 0, scrOfY = 0;
	  if( typeof( window.pageYOffset ) == 'number' ){ //Netscape compliant
	    scrOfY = window.pageYOffset;
	  }else if( document.body && document.body.scrollTop ){ //DOM compliant
	    scrOfY = document.body.scrollTop;
	  }else if( document.documentElement && document.documentElement.scrollTop ){ //IE6 standards compliant mode
	    scrOfY = document.documentElement.scrollTop;
	  }
	  return scrOfY;
	}

	if (document.layers){ document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT); }

	document.onmouseover=hideStatus;
	document.onmouseout=hideStatus;

	maindiv = document.getElementById("main");
	mesdiv = document.getElementById("mes");
	waitdiv = document.createElement("div");
	waitdiv.setAttribute("id", "waitdiv");
	waitmesdiv = document.createElement("div");
	waitmesdiv.setAttribute("id", "waitmesdiv");
	mesdiv.appendChild(waitdiv);
	mesdiv.appendChild(waitmesdiv);

	filterdiv = document.createElement("div");
	filterdiv.setAttribute("id", "filterdiv");
	showfiltersdiv = document.createElement("div");
	showfiltersdiv.setAttribute("id", "showfiltersdiv");
	snapshotdiv = document.createElement("div");
	snapshotdiv.setAttribute("id", "snapshotdiv");
	pdfdisclaimerdiv = document.createElement("div");
	pdfdisclaimerdiv.setAttribute("id", "pdfdisclaimerdiv");
	helpdiv = document.createElement("div");
	helpdiv.setAttribute("id", "helpdiv");
	whilepopupdiv = document.createElement("div");
	whilepopupdiv.setAttribute("id", "whilepopupdiv");
	mesdiv.appendChild(filterdiv);
	mesdiv.appendChild(showfiltersdiv);
	mesdiv.appendChild(whilepopupdiv);
	mesdiv.appendChild(snapshotdiv);
	mesdiv.appendChild(pdfdisclaimerdiv);
	mesdiv.appendChild(helpdiv);

	setCss();
	positionTransparentLayers();
	positionWaitMessage();
	positionPopups();
	doSearch();

	// MENU

startList = function(){
	if (document.all&&document.getElementById){
		navRoot1 = document.getElementById("nav1");
		if(navRoot1){
			for (i=0; i<navRoot1.childNodes.length; i++){
				node = navRoot1.childNodes[i];
				if (node.nodeName=="LI"){
					node.onmouseover=function(){ this.className+=" over"; }
					node.onmouseout=function(){ this.className=this.className.replace(" over", ""); }
				}
			}
		}
		navRoot2 = document.getElementById("nav2");
		if(navRoot2){
			for (i=0; i<navRoot2.childNodes.length; i++){
				node = navRoot2.childNodes[i];
				if (node.nodeName=="LI"){
					node.onmouseover=function(){ this.className+=" over";}
					node.onmouseout=function(){ this.className=this.className.replace(" over", "");}
				}
			}
		}
	}
}
