var allPageElements = new Array('any', 'freetext-advanced', 'advancedfields', 'coordinates', 'extras', 
								'geonovum-metadata','geonovum-result-list', 'help', 
								'hits-per-page', 'informatie', 
								'geonovum-left','geonovum-left-publicatie', 'geonovum-left-informatie', 
								'geonovum-left-organisaties', 'geonovum-left-legend', 'geonovum-left-help',								
								'organisaties', 'publiceren', 'searchdiv', 'searchresults-header',
								'showAdvancedSearchButton', 'showSimpleSearchButton',  
								'single-metadata', 'single-search-result', 'sort-results-by', 
								'spatial-search-type', 'when');

function hideAllPageElements() {
	for(var i  = 0; i < allPageElements.length; i++) {
		var e = $(allPageElements[i]);
		if(e) {
			e.style.display = "none" ;
		}
	}
	hideMap();
}

/**
 * This function does not work at all in Firefox. In IE8, the user has to confirm
 * a security alert. Other browsers not tested.
 */
function copyToClipboard(id) {
	if(getInternetExplorerVersion() == -1) {
		return;
	}
	var element = document.getElementById(id);
	element.style.display = 'block';
	selectNode(element);
	CopiedTxt = document.selection.createRange();
	CopiedTxt.execCommand("Copy");
	clearSelection();
	element.style.display = 'none';
}
// TODO move to utilities file.
function getInternetExplorerVersion()
	// Returns the version of Internet Explorer or a -1
	// (indicating the use of another browser).
{
	var rv = -1; // Return value assumes failure.
	if (navigator.appName == 'Microsoft Internet Explorer')
	{
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null)
			rv = parseFloat( RegExp.$1 );
	}
	return rv;
}

/**
 * Selects text of node.
 */
function selectNode (node) {
	var selection, range, doc, win;
	if ((doc = node.ownerDocument) 
			&& (win = doc.defaultView) 
			&& typeof win.getSelection != 'undefined' 
			&& typeof doc.createRange != 'undefined' 
			&& (selection = window.getSelection()) 
			&& typeof selection.removeAllRanges != 'undefined') {
		range = doc.createRange();
		range.selectNode(node);
		selection.removeAllRanges();
		selection.addRange(range);
	}
	else if (document.body 
			&& typeof document.body.createTextRange != 'undefined' 
			&& (range = document.body.createTextRange())) {
		range.moveToElementText(node);
		range.select();
	}
}

/**
 * Clears current selection from page.
 */
function clearSelection () {
	if (document.selection) {
		document.selection.empty();
	}
	else if (window.getSelection) {
		window.getSelection().removeAllRanges();
	}
}

function onload_initializations() {
	resetSimpleSearch();
	showSimplesearch();
}

function addSOSLayer(url, metadata_id) {
   showMap();
   GeoNetwork.app.addSOSLayer(url, metadata_id);
}

function handleHistoryChange(newLocation, historyData) {
	// use the history data to update our UI
	updateUI(newLocation, historyData);                           
}

function updateUI(newLocation, historyData) {
	if(newLocation == 'simplesearch') {
		showSimplesearch();
	}
	if(newLocation == 'searchresults') {
		showSearchresults();
	}
	if(newLocation == 'singleresult') {
		showSingleResult();
	}
	if(newLocation == 'singleresultfull') {
		showSingleResultFull();
	}		
}


			function doPasswordUpdate()
			{
				var invalid = " "; // Invalid character is a space
				var minLength = 6; // Minimum length
	
				var pw1 = document.userupdateform.newPassword.value;
				var pw2 = document.userupdateform.newPassword2.value;
	
				// check for a value in both fields.
				if (pw1 == '' || pw2 == '')
				{
					alert('Please enter your new password twice.');
					return;
				}
				// check for bad password confirmation
				if (pw1 != pw2)
				{
					alert ("You did not enter the same new password twice. Please re-enter your password.");
					return;
				}
				// check for minimum length of new password
				if (pw1.length < minLength)
				{
					alert('Your password must be at least ' + minLength + ' characters long. Try again.');
					return;
				}
				// check for spaces
				if (pw1.indexOf(invalid) > -1)
				{
					alert("Sorry, spaces are not allowed.");
					return;
				}
				// all ok, proceed
				document.userupdateform.submit();
			}

function getKeywords(){
	alert('getKeywords');
	new Ajax.Updater("keywordSelector","portal.search.keywords?mode=selector&amp;keyword="+$("themekey").value);
  }


function showElement(element, displaystyle) {
	var showme = $(element);
    if(showme != null && displaystyle != null) {
        showme.style.display = displaystyle;					
	}
	else {
		return;
	}
}

function hideElement(element) {
	var hideme = $(element);
	if(hideme != null) {
		hideme.style.display = "none";
	}
	else {
		return;
	}
}	

function taggleVisibility(elementId) {
	var element = $(elementId);
	if(element != null) {
		if(element.style.display == "none") {
			element.style.display = "block";
		}
		else {
			element.style.display = "none";
		}
	}
	else {
		return;
	}
}

/* utility function copied from http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/*/
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

function selectTabMenu(tabId) {
	// first remove selected color from any tabs that might have it
	var tabs = getElementsByClassName(document.getElementById("tabs"), "span", "tab-tekst");
	for(var i = 0; i < tabs.length; i++) {
		var tab = tabs[i];
		tab.style.color = "#fff";
	}
	var selectedTab = $(tabId);
	if(selectedTab != null) {
		selectedTab.style.color = "#54c013";
	}
	else {
		return;
	}
}

function showSingleResult() {
	hideAllPageElements();
	selectTabMenu("zoeken-tab-tekst");
	showElement('single-search-result', 'block');
}

function showSingleResultFull() {
	hideAllPageElements();
	selectTabMenu("zoeken-tab-tekst");
	showElement('geonovum-metadata', 'block');
}				

function showSimplesearch() {
	hideAllPageElements();
	// Thijs Brentjens (Geonovum): make sure that any previous params of the organisatie-pagina are cleared
    resetOrgSearchParams();
	setParam('phrase', '');
	setParam('all', '');
	setParam('or', '');
	setParam('without', '');		
	setParam('themekey','');
	setParam('siteId','');		
	setParam('protocol',    '');
	var keywords = document.getElementsByName('keywordinput');
	for(var i = 0; i < keywords.length; i++) {
		keywords[i].checked = false;
	}
	setParam('dateFrom','');
	setParam('dateTo','');
	$('radfrom0').checked=true;
	selectTabMenu("zoeken-tab-tekst");
	showElement('showAdvancedSearchButton', 'inline');
	showElement('any', 'block');
	showElement('searchdiv', 'block');
	showElement('hits-per-page', 'block');	
	showElement('geonovum-left', 'block');
    showExtras();
	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'mainpage';
	}
	var searchview = $('searchview');
	if(searchview) {
		searchview.innerHTML = 'simple';
	}
    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}

function hideSearch() {
	hideElement('searchdiv');
	hideElement('geonovum-left');
}

function showPubliceren() {
	hideAllPageElements();
	selectTabMenu("publiceren-tab-tekst");
	showElement('publiceren', 'block');
	showElement('geonovum-left-publicatie', 'block');
	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'loginpagina';
	}
    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}
function hidePubliceren() {
	hideElement('publiceren');
	hideElement('geonovum-left-publicatie');
}

function showInformatie(itemUrl) {
	hideAllPageElements();
	selectTabMenu("informatie-tab-tekst");
	showElement('informatie', 'block');
	showElement('geonovum-left-informatie', 'block');
	// Thijs:  hack om altijd terug te gaan naar de index van de informatiepagina in het iframe
		// Apache on TEST (delphinus):
        // $('informatieframe').src="http://ngr.site4u.nl/NGR-STATIC/informatie/index.html";
		// Apache on PROD (aludra):
        $('informatieframe').src="/geonetwork/ngr-static/informatie/index.html";	
		
	if (itemUrl) {
		$('informatieframe').src = itemUrl;
	}
	// Apache on TEST (delphinus):
	// else $('informatieframe').src = "http://ngr.site4u.nl/NGR-STATIC/informatie/index.html";
	// Apache on PROD (aludra):
	else $('informatieframe').src = "/geonetwork/ngr-static/informatie/index.html";

	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'informatiepagina';
	}
    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}


function showExternalLinkInMainSection(url) {
	hideAllPageElements();
	selectTabMenu("informatie-tab-tekst");
	showElement('informatie', 'block');
	showElement('geonovum-left-informatie', 'block');
      $('informatieframe').src=url;

}

function hideInformatie() {
	hideElement('informatie');
	hideElement('geonovum-left-informatie');
}

function showOrganisaties() {
	hideAllPageElements();
    // Thijs Brentjens (Geonovum): make sure that the loading element for organisaties is hidden
    if($('loadingMDOrg')) {
		$('loadingMDOrg').hide();
	}
    // Thijs Brentjens (Geonovum): make sure that any previous params of the organisatie-pagina are cleared
    // why not resetOrgSearch() ??
    // resetOrgSearch();
    resetOrgSearchParams();
	selectTabMenu("organisaties-tab-tekst");
	showElement('organisaties', 'block');
	showElement('geonovum-left-organisaties', 'block');
	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'organisatiepagina';
	}
    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}
function hideOrganisaties() {
	hideElement('organisaties');
	hideElement('geonovum-left-organisaties');
}

function showHelp() {
	hideAllPageElements();
	selectTabMenu("help-tab-tekst");
	showElement('help', 'block');
	showElement('geonovum-left-help', 'block');
	// old Joomla location at TNO:
	//$('helpframe').src = "http://geonovum.nitg.tno.nl/ngr/index.php?option=com_content&task=blogcategory&id=7&Itemid=10";
	// Apache on TEST (delphinus):
	// $('helpframe').src = "http://ngr.site4u.nl/NGR-STATIC/help/index.html";
	// Apache on PROD (aludra):
	$('helpframe').src = "/geonetwork/ngr-static/help/index.html";
	
	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'helppagina';
	}
    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}
function hideHelp() {
	hideElement('help');
	hideElement('geonovum-left-help');
}
function showSearchresults() {
	hideAllPageElements();
	selectTabMenu("zoeken-tab-tekst");
	showElement('geonovum-left-legend', 'block');
	showElement('searchresults-header', 'block');
	showElement('geonovum-result-list', 'block');
}

function hideSearchResults() {
	hideElement('searchresults-header');
	hideElement('geonovum-result-list');
	hideElement('geonovum-left-legend');
}

function showSearch() {
	var searchview = $('searchview');
	if(searchview && searchview.innerHTML == 'advanced') {
		showAdvancedsearch();
	} else if(searchview && searchview.innerHTML == 'inspire') {
		showInspireSearch();
	}
	else {
		showSimplesearch();
	}
}

function showAdvancedsearch() {
	hideAllPageElements();
	setParam('any', '');
	showElement('freetext-advanced', 'block');
	showElement('showSimpleSearchButton', 'inline');
	selectTabMenu("zoeken-tab-tekst");
	showElement('advancedfields', 'block');	
    showElement('spatial-search-type', 'block');
    showElement('sort-results-by', 'block');
	showElement('when', 'block');
	showElement('coordinates', 'block');
	showElement('searchdiv', 'block');
	showElement('hits-per-page', 'block');		
	showElement('geonovum-left', 'block');
    showExtras();
	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'mainpage';
	}
	var searchview = $('searchview');
	if(searchview) {
		searchview.innerHTML = 'advanced';
	}
    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}

function showInspireSearch() {
// heikki: removed all this stuff, it's much easier to just show/hide INSPIRE only ?
// Waiting for answer from Thijs Brentjens.


	//hideAllPageElements();
    //resetOrgSearch();
	//selectTabMenu("zoeken-tab-tekst");
	//showElement('any', 'block'); // Any is in INSPIRE, but how to deal with any and others?
    //showElement('keywords-closed-div', 'block');
	
	//var searchview = $('searchview');
	// advanced view
	//if(searchview && searchview.innerHTML == 'advanced') {
	//	showSearch();
		//showElement('showSimpleSearchButton', 'block'); 
		//showElement('advancedfields', 'block');
	//}
	// simple view
	//else {
	//	showSearch();
		//showElement('showAdvancedSearchButton', 'block');
		//showElement('hits-per-page', 'block');
	//}
    //showElement('searchdiv', 'block');
	//showElement('geonovum-left', 'block');
		
// heikki : WTF are these ?	
    //hideElement('combined-search'); // TODO: remake visible if hideInspireSearch is called!! ?
    //hideElement('catalogue-search'); // TODO: remake visible if hideInspireSearch is called!! ?

    //showElement('spatial-search-type', 'block');
    //showElement('hits-per-page', 'block');
    //showElement('when', 'block');
	//showElement('coordinates', 'block');

    //showExtras(); // no extras?

    // TODO: bij sleutelwoorden alleen INSPIRE tellen?
    var inspire = $('inspire');
	if(inspire.checked) {
		inspire.value = 'true';
	} else {
        inspire.value = '';
    }

	var origin = $('origin');
	if(origin) {
		origin.innerHTML = 'mainpage';
	}
	//var searchview = $('searchview');
	//if(searchview) {
    //    // TODO: return to inspire after click on zoeken again?
	//	searchview.innerHTML = 'inspire';
	//}

    var originmetadata = $('originmetadata');
    if (originmetadata) {
        originmetadata.innerHTML = "none";
    }
}

function toggleInspire() {
    var inspire = $('inspire');
	if(inspire) {
		inspire.value = 'true';
	} else  {
        inspire.value='';
    }
}

function showExtras() {
    showElement('extras', 'block');
}


function goExtended(onoff, link)
{
	document.search.extended.value=onoff;
	document.search.action=link;
	document.search.submit();
}

function goRemote(onoff, link)
{
	document.search.remote.value=onoff;
	document.search.action=link;
	document.search.submit();
}

function deselect(select)
{
	for (var i=0; i < select.length; i++){
		select.options[i].selected = false;
	}
}

function profileSelected()
{
	var serverList = document.search.profile.options[document.search.profile.selectedIndex].value;
	var serverArray = serverList.split(' ');
	deselectAllServers();
	for (var i=0; i < serverArray.length; i++)
		selectServer(serverArray[i]);
}

function serverSelected()
{
	document.search.profile.options[0].selected = true;
}

function deselectAllServers()
{
	for (var i=0; i < document.search.servers.length; i++)
		document.search.servers.options[i].selected = false;
}

function selectServer(server)
{
	for (var i=0; i < document.search.servers.length; i++)
		if (document.search.servers.options[i].value == server)
			document.search.servers.options[i].selected = true;
}

function checkSubmit()
{
	if (document.search.remote.value == 'on')
	{
		if (isWhitespace(document.search.any.value) &&
			!(document.search.title    && !isWhitespace(document.search.title.value)) &&
			!(document.search['abstract'] && !isWhitespace(document.search['abstract'].value)) &&
			!(document.search.themekey && !isWhitespace(document.search.themekey.value)))
		{
			alert("Please type some search criteria");
			return false;
		}
		servers = 0;
		for (var i=0; i < document.search.servers.length; i++)
			if (document.search.servers.options[i].selected) servers++;
		if (servers == 0)
		{
			alert("Please select a server");
			return false;
		}
	}
	return true;
}

function doSubmit()
{
	if (checkSubmit())
		document.search.submit();
}


function highlightRating(element) {
    var i = element.id;
    i = i.substring(i.length - 1);
    var prefix= "star";
    for(var x = 1; x <= i; x++) {
        var e = document.getElementById(prefix+x);
        e.style.color="#54c013";

    }
}
function unHighlightRating(element) {
    var i = element.id;
    i = i.substring(i.length - 1);
    var prefix= "star";
    for(var x = 1; x <= i; x++) {
        var e = document.getElementById(prefix+x);
        e.style.color="#bbbbbb";

    }
}

//
// Thijs Brentjens (Geonovum): for searches on groups/organizations
//
var _selectedGroupId=0;
function groupChanged(groupId, selectId){
    resetOrgSelects(selectId);
    _selectedGroupId = groupId;
    setParam('group',groupId);
}
function resetOrgSearch() {
    $('orgsearch').value='';
    // reset the group as well
    resetOrgSearchParams()
    resetOrgSelects();
    _selectedGroupId=0
}
// reset based on class-names
function resetOrgSelects(exceptSelectId) {
    var selects = $$('.orgselect');
    for (i=0;i<selects.length;i++) {
      var sel = selects[i];
      if (sel.id!=exceptSelectId) sel.value='';
    }
}

function inspireAnnexChanged(inspireannex) {
    var inspire = $('inspire');
    if (inspireannex!="") {
        // we have an Annex, so only INSPIRE metadata can be queried
        //    let the user know this, by checking the checkbox
        if (inspire) inspire.checked = true;
    } else {
        if (inspire) inspire.checked = false;
    }
}

function inspireOrganisationChanged(groupId) {
	setParam('group',groupId);	
}

// TODO: document asspumtion: there is an input field 'type'
function inspireBrontypeChanged(brontype) {
    setParam('type',brontype);
}

// TODO: document asspumtion: there is an input field 'protocol'
function inspireServiceTypeChanged(servicetype) {
    setParam('protocol',servicetype);
}

function showMetadataSubset(classnames) {
    // hide all metadata elems first
    if (classnames[0]!='geonovum-single-search-result-section') {
        var allElems = $$('.geonovum-single-search-result-section');
        for (var i=0;i<allElems.length;i++) {
            hideElement(allElems[i]);
        }
    }

    for (cn=0;cn<classnames.length;cn++) {
        var mdElems = $$('.'+classnames[cn]);
        for (var i=0;i<mdElems.length;i++) {
            showElement(mdElems[i], 'block');
        }
    }
}

// Thijs Brentjens: TODO: document usage of WMS validator, images etc.
function validateWMS(capsURL, metadataId) {
    var resultsId = 'wmsvalidationresults_'+metadataId;
    var resultsIdLoading = resultsId+"_loading";
	var resultsIdReport = resultsId+"_report";
	
	if ($(resultsId).style.display!="block") {
		// do NOT use the REQUEST=GetCapabilities etc, because the validator seesm to trip over this
		capsURL=capsURL.replace(/REQUEST=GetCapabilities/i,"");
		capsURL=capsURL.replace(/SERVICE=WMS/i,"");
		capsURL=capsURL.replace(/VERSION=1.1.1/i,"");
		capsURL=capsURL.replace(/&&/gi,"&"); //replace any double &
		capsURL=capsURL.replace(/\?&/gi,"?"); //replace any combi of ?&

		// now use that url for validation and presentation of the results
		var params = 'profile=nlwms11.php&wmsurl='+escape(capsURL)+'';
		
		// $(resultsId).update("Validating the WMS. One moment please...");
		// $(resultsId).show();
		$(resultsIdLoading).show();
		$(resultsIdReport).update("");
		
		new Ajax.Request('validators.wms?'+params, {
		  method: 'get',
		  onSuccess: function(response) {
			var newHTML = response.responseText;
			// first fix the URL's of the images...
			newHTML = newHTML.replace(/src="/g,'src="http://services.geonovum.nl/CatalogueSAS/');
			// now add the image for closing
			newHTML = '<img class="ratingCloser wmsValidationCloser" src="/geonetwork/images/fileclose.png" onclick="taggleVisibility(\''+resultsId+'\')"' + newHTML;
			$(resultsIdLoading).hide()
			$(resultsIdReport).show()			
			$(resultsIdReport).update(newHTML);
		  }
		});
    }
    taggleVisibility(resultsId);
}

function showExtraInfo(metadataId) {
	// ExtraInfo can be anything: text or a reference to a website.
	// The contents of the element are not clear
	// Just show them, and if a link is found, make it clickable
	var elementId = "extraInfo_"+metadataId;
	/*
	// If it's a link, make it clickable
	if (extraInfo.indexOf("http") == 0) extraInfo = "<a href='"+ extraInfo + "' target='_blank'>"+extraInfo+"</a>";
	$(elementId).innerHTML = extraInfo;
	*/
	taggleVisibility(elementId);
}
/**
 * Use tabs when showing metadata
 */
// TODO: localization titles and move this to some JS config file?
// tab definitions per profile are stored in an Array, which is used in the function createMetadataTabs() below
var tabDefinitions = new Array();
tabDefinitions['default'] = [	{contentEl:'general-container', title: 'Inhoud'},
								{contentEl:'restrictions-container', title: 'Gebruik'},
								{contentEl:'extent-container', title: 'Dekking'},
								{contentEl:'quality-container', title: 'Kwaliteit'},
								{contentEl:'distribution-container', title: 'Distributie'},						
								{contentEl:'responsibleparty-container', title: 'Organisatie'},
								{contentEl:'metadatainfo-container', title: 'Metadata info'}
							]
tabDefinitions['srv11']  = [	{contentEl:'general-container', title: 'Inhoud'},
								{contentEl:'restrictions-container', title: 'Gebruik'},
								{contentEl:'extent-container', title: 'Dekking'},
								{contentEl:'quality-container', title: 'Kwaliteit'},
								{contentEl:'distribution-container', title: 'Service'},						
								{contentEl:'responsibleparty-container', title: 'Organisatie'},
								{contentEl:'metadatainfo-container', title: 'Metadata info'}
							]
tabDefinitions['inspire'] = [	{contentEl:'general-container', title: 'Inhoud'},
								{contentEl:'restrictions-container', title: 'Gebruik'},
								{contentEl:'extent-container', title: 'Dekking'},
								{contentEl:'quality-container', title: 'Kwaliteit'},
								// Thijs Brentjens: re-entered distribution-container after discussion, see bugtracker #1137
								{contentEl:'distribution-container', title: 'Distributie'},
								{contentEl:'responsibleparty-container', title: 'Organisatie'},
								{contentEl:'metadatainfo-container', title: 'Metadata info'}
							]

// for creating the tabs using Ext, one has to know which metadata profile is used.
// this is set in xsl/single-search-result.xsl, in the hidden input element with id 'metadata_profile'
// the definition of tabs is retrieved from the array tabDefinitions (see above), containing the Ext-arrays for the items of the tabs (html element id's and titles)
function createMetadataTabs(){
	var profile = $('metadata_profile').value;
	var tabDef = tabDefinitions['default'];
	// if there is a specific definition for tabs, let's use it, otherwise: we should use the deafult from above..
	if (tabDefinitions[profile]) {
		tabDef = tabDefinitions[profile];
	}
	var tabs = new Ext.TabPanel({
		renderTo: 'tabs-container',
		activeTab: 0,
		frame:true,
		enableTabScroll: true,
		defaults:{autoHeight: true},
		items: tabDef
	});					
}

/**
 * Map API to show map viewer and load layers from metadata
 */

function showMap() {
	hideAllPageElements();
    Element.hide('content');
    Element.show('map_container');
    selectTabMenu("map-tab-tekst");

    // Change background of layout to avoid a bad effect with the top menu and the map
    $$("div.colmid").each(function (d) {
        d.style.backgroundColor = "transparent";
    });

    if (!mapInit) {
        Ext.onReady(GeoNetwork.app.init, GeoNetwork.app);
        mapInit = true;
    } else {
        GeoNetwork.app.refreshViewport();
        GeoNetwork.WindowManager.restoreHiddenWindows();
    }


}

function hideMap() {
    //$("geonovum-body").style.overflow="auto";
    GeoNetwork.WindowManager.hideAllWindows();
    Element.hide('map_container');

    // Restore background of layout when move to a different page
    $$("div.colmid").each(function (d) {
        d.style.backgroundColor = "#FFFFFF";
    });

    Element.show('content');

}

function hideRightColumn() {
    $$("div.colmid").each(
        function(s) {
            s.style.right = "0%";
        });

    $$("div.colleft").each(
        function(s) {
            s.style.right = "80%";
        });

    $$("div.col1").each(
        function(s) {
           s.style.width = "80%";
        });

		$$("div.col2").each(
			function(s) {
			   s.style.left = "2%";
			});
}

function showRightColumn() {
    $$("div.colmid").each(
        function(s) {
            s.style.right = "20%";
        });

     $$("div.colleft").each(
        function(s) {
            s.style.right = "60%";
        });

    $$("div.col1").each(
        function(s) {
           s.style.width = "60%";
        });

		$$("div.col2").each(
			function(s) {
			   s.style.left = "22%";
			});
}

function addWMSLayer(name, url, layer, metadata_id) {
    showMap();
    GeoNetwork.app.addWMSLayer(name,url,layer,metadata_id);
}

function addSelectedWMSLayers(metadataIdForm) {
	var checkedBoxes = $$('#'+metadataIdForm+' input');
	var wmsLayers = new Array();
	for (var i=0;i<checkedBoxes.length;i++) {
		if (checkedBoxes[i].checked) {
			wmsLayers.push(checkedBoxes[i].value.split(','));
		}
	}
	addWMSLayer(wmsLayers);
}

function checkCodelists() {
	$('notincodelistwarning').hide()
	// clear all selects
	var selBoxes = $$('select');
	for (var s=0;s<selBoxes.length;s++) {
		selBoxes[s].removeClassName("notincodelist");
	}
	// now change style if the select element has a selected option that is not from a codelist.
	var optionsNotInCodelist = $$('select option.notincodelist');
	for (var i=0; i<optionsNotInCodelist.length;i++) {
		var sel = optionsNotInCodelist[i].ancestors()[0];
		if (sel.options[sel.selectedIndex]==optionsNotInCodelist[i]) {
			$(sel).addClassName("notincodelist");
			$('notincodelistwarning').show()
		}
	}

}

function showValidationReport(metadataId) {
	// Open in new window, as agreed with Ine
	// The user now has more possibilities: e.g. save the report, print it easily etc
	var url ="/geonetwork/srv/nl/validators.metadata.getreport?id=" + metadataId;
	window.open(url,'validationReport','width="600",height="450",toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
}

