//<![CDATA[
//requires global.js for:
	//standards compliant check (continue only if W3CDOM is true)
	//addOnloadEvent

//Comments:
	//When user closes a content area it should remain closed until they open it again -can set JSP preference variables when loading content
function createRequest() {
	var request = null;
	try {
		request = new XMLHttpRequest();
	}
	catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (failed) {
				request = null;
			}
		}
	}
	if (request == null) {
		alert("Error creating request object! Javascript may not work correctly.");
	} else {
		return request;
	}
}

function getContent(url, elId, request) {
	request.open("GET", url, true);
	request.onreadystatechange = function() {
		displayContent(url, elId, request);
	}
	request.send(null);
}
function displayContent(url, elId, request) {
	if (request.readyState == 1) {
			var response = '<p class="small-text">Content loading...</p>';
			var el = document.getElementById(elId);
			replaceElementsContents(el, response);
	}
	else if (request.readyState == 4) {
		if (request.status == 200) {
			var response = request.responseText;
			var el = document.getElementById(elId);
			replaceElementsContents(el, response);
			request = createRequest();
		}
		else {
			var response = '<p class="small-text">Data currently unavailable. If the problem persists, please contact the <a href="/research-curation/research/projects/solanaceaesource/help/feedback.jsp?emailTo=Web%20Administrator">Web Administrator</a></p>'
			var el = document.getElementById(elId);
			/*window.alert(request.status + ': ' + elId + ': ' + url);*/
			replaceElementsContents(el, response);
			request = createRequest();
		}
	}
}
function replaceElementsContents(el, response) {
	el.innerHTML = response;
}

var requestRelatedSpecimens = createRequest();
var requestRelatedImages = createRequest();
var requestSpecimenDistribution = createRequest();
var requestEntrez = createRequest();
var requestGbif = createRequest();
var requestSearchCategory = createRequest();
var requestExternalSite = createRequest();
var requestVideos = createRequest();
/*Synonyms requests are for multiple names with multiple output so can't use the same request object each time...*/
var arrRequestSynonyms = new Array();
function initSynonymsRequest(i) {
	arrRequestSynonyms[i] = createRequest();
}

function contentShowHide() {
	if(!W3CDOM) {
		window.alert("The Javascript in this browser does not appear to be W3C compliant. Site functionality may be restricted.");
		return;
	}
	var links = document.getElementsByTagName('a');
	for (var i=0; i < links.length; i++) {
		if (links[i].className.match('show') || links[i].className.match('hide')) {
			links[i].onclick = function() {
				/*window.alert("onclick event recognised");*/
				var url = this.getAttribute('href');
				if(url.match('showSpecimens')) {
					if(url.match('showSpecimens=false')) {
						var n = url.indexOf('?');
						url = url.substring(0,n);
					}
					/*window.alert("url = " + url);*/
					var contentUrl = url.replace('description-detail.jsp', 'asynch-specimens.jsp')
					getContent(contentUrl, 'sol-related-specimens', requestRelatedSpecimens);
					return false;
				}
				else if(url.match('showImages')) {
					if(url.match('showImages=false')) {
						var n = url.indexOf('?');
						url = url.substring(0,n);
					}
					if(url.match('description-detail.jsp')) {
						var contentUrl = url.replace('description-detail.jsp', 'asynch-images.jsp')
					}
					else if(url.match('specimen-detail.jsp')) {
						var contentUrl = url.replace('specimen-detail.jsp', 'asynch-images.jsp')
					}
					getContent(contentUrl, 'sol-related-images', requestRelatedImages);
					return false;
				}
				else if(url.match('exts=')) {
					if(url.match('specimen-detail.jsp')) {
						var contentUrl = url.replace('specimen-detail.jsp', 'asynch-ext-site.jsp')
					}
					getContent(contentUrl, 'external-site-viewer', requestExternalSite);
					return false;
				}
				else if(url.match('showDistribution')) {
					if(url.match('showDistribution=false')) {
						var n = url.indexOf('?');
						url = url.substring(0,n);
					}
					var contentUrl = url.replace('description-detail.jsp', 'g-map.jsp')
					getContent(contentUrl, 'specimen-distribution', requestSpecimenDistribution);
					return false;
				}
				else if(url.match('showEntrez')) {
					if(url.match('showEntrez=false')) {
						var n = url.indexOf('?');
						url = url.substring(0,n);
					}
					var contentUrl = url.replace('description-detail.jsp', 'asynch-entrez.jsp')
					getContent(contentUrl, 'related-molecular', requestEntrez);
					return false;
				}
				else if(url.match('showGbif')) {
					if(url.match('showGbif=false')) {
						var n = url.indexOf('?');
						url = url.substring(0,n);
					}
					var contentUrl = url.replace('description-detail.jsp', 'gbif.jsp')
					getContent(contentUrl, 'gbif-specimens', requestGbif);
					return false;
				}
				else if(url.match('showSynonyms')) {
					var paramsPart = url;
					var n = url.indexOf('?');
					var paramsPart = paramsPart.substring(n + 1);
					if(url.match('showSynonyms=false')) {
						url = url.substring(0,n);
					}
					n = paramsPart.indexOf('ti=');
					var nn = paramsPart.indexOf('&',n);
					var spnum = paramsPart.substring(n + 3,nn);
					var elId = 'synonyms-' + spnum;
					var contentUrl = url;
					initSynonymsRequest(spnum);
					getContent(contentUrl, elId, arrRequestSynonyms[spnum]);
					return false;
				}
			}
		} else if (links[i].className.match('hide')) { /*why is this here the one above says show or hide?*/
			links[i].onclick = function() {
				var url = this.getAttribute('href');
				if(url.match('showSpecimens=false')) {
					document.getElementById('sol-related-specimens').innerHTML = '';
					return false;
				}
				else if(url.match('showImages=false')) {
					document.getElementById('sol-related-images').innerHTML = '';
					return false;
				}
				else if(url.match('showDistribution=false')) {
					document.getElementById('specimen-distribution').innerHTML = '';
					return false;
				}
				else if(url.match('showEntrez=false')) {
					document.getElementById('related-molecular').innerHTML = '';
					return false;
				}
				else if(url.match('showGbif=false')) {
					document.getElementById('gbif-specimens').innerHTML = '';
					return false;
				}
			}
		}
		else if (links[i].className.match('search-category')) {
			links[i].onclick = function() {
				var url = this.getAttribute('href');
				if(url.match('prefSearchCategory=')) {
					if(url.substring('/solanaceaesource/?')) {
						var url = url.replace('/solanaceaesource/?','/solanaceaesource/index.jsp?')
					}
					var pos1 = url.indexOf('/solanaceaesource/') + 18;
					var pos2 = url.indexOf('?');
					var replacedUrl = url.substring(pos1,pos2);
					var contentUrl = url.replace(replacedUrl, 'global/quick-search.jsp')
					getContent(contentUrl, 'sol-search-container', requestSearchCategory);
					return false;
				}
			}
		}
	}	
}

var requestJsEnabled = createRequest();
function checkJsEnabled(url, request) {
	request.open("GET", url, true);
	request.onreadystatechange = function() {
	}
	request.send(null);
}

addOnloadEvent(contentShowHide);
//]]>