//  DIA-client javascript functions

function showhideLayers(divId) 
{ //v1.0
	var v,divObj;	
	
	if ((divObj=MM_findObj(divId))!=null) {
      v=divObj.style.display;

      if (v == 'none' )	{
        disp = 'block';
      }else {
        disp = 'none';
     }
     divObj.style.display = disp;
 }

}

function showHideBox(divId) 
{
	var box = document.getElementById(divId);
	if (box.className.indexOf("closed") == -1){
		box.className = box.className + " closed";
	}else{
		box.className = box.className.replace("closed","");
	}
	return false;

}

function showHideAbstract(nodeId) {
  var divShort, divFull;

  divShort = 'short-' + nodeId;
  divFull  = 'full-' + nodeId;
  showhideLayers(divShort);
  showhideLayers(divFull);

}

function MM_showhideLayers()
{ 
  var i,p,v,obj,args=MM_showhideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
      if ((obj=MM_findObj(args[i]))!=null)
      {
          v=args[i+2];
          if (obj.style)
          {
             obj=obj.style;
			 v=(v=='show')?'block':(v=='hide')?'none':v;
          }
          obj.display=v;
      }
}

function MM_findObj(n, d)
{ //v4.01
        var p,i,x; if(!d) d=document;
        if((p=n.indexOf("?"))>0&&parent.frames.length)
        {
                d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
        }
        if(!(x=d[n])&&d.all)
                x=d.all[n];
        for (i=0;!x&&i<d.forms.length;i++)
                x=d.forms[i][n];
                for(i=0;!x&&d.layers&&i<d.layers.length;i++)
                        x=MM_findObj(n,d.layers[i].document);
                if(!x && d.getElementById)
                        x=d.getElementById(n);
        return x;
}

function openWindow ( url ){
	var d = new Date();
	var winId = d.getDate() + d.getHours() + d.getMinutes() + d.getSeconds();
	
	//newWindow = window.open(url, winId , 'scrollbars=yes, top=20, left=230, width=565, height=520');
	newWindow = window.open(url, winId , '');
	newWindow.focus();
	return;
}

function postHref ( href, target){
		
	var hrefAction = href.substring(0,href.indexOf('?'));
	var hrefParameters = href.substring(href.indexOf('?')+1);
	var splitedHref = hrefParameters.split("&");
	var qtt = splitedHref.length;
	var splitedHidden = new Array();
	var hiddenName = "";
	var hiddenValue = "";
	var submitForm = document.formHref;

	if ( target == '' || !target ){
		target = 'postHref';
	}	
	
	submitForm.action = hrefAction;
	submitForm.target = target;
	
	for ( var i = 0; i < qtt; i++ )
	{
		splitedHidden = splitedHref[i].split("=");
		hiddenName = splitedHidden[0];
		splitedHidden[0] = "";
		hiddenValue = splitedHidden.join("=");
		hiddenValue = hiddenValue.replace(/%20/g,' ');
		hiddenValue = hiddenValue.replace(/%2F/g,'/');
		hiddenValue = hiddenValue.replace(/\+/g,' ');

		submitForm.elements[i].name = hiddenName;
		submitForm.elements[i].value = hiddenValue.substring(1);
	}
	
	//resultWindow = window.open('about:blank',target);
	//resultWindow.focus();

	submitForm.submit();
	// realizar testes de compatibilidade do codigo abaixo	
	resultWindow = window.open('',target);		
	resultWindow.focus();	
}


function openDeCS(){

	lang = document.metasearch.lang.value;
	if (lang == "pt"){ decsLang = "p"; }
	if (lang == "es"){ decsLang = "e"; }
	if (lang == "en"){ decsLang = "i"; }
	
	decsUrl = "http://decs.bvs.br/cgi-bin/wxis1660.exe/decsserver/?IsisScript=../cgi-bin/decsserver/decsserver.xis&interface_language=" + decsLang + "&previous_page=homepage&previous_task=NULL&task=start";
	decsWindow = window.open(decsUrl, "decs", "height=550,width=750,menubar=yes,toolbar=yes,location=no,resizable=yes,scrollbars=yes,status=no");
	decsWindow.focus();
	
	return;
	
}

function showDeCSTerm( id ){
	
	lang = document.formSearch.lang.value;
	if (lang == "pt"){ decsLang = "p"; }
	if (lang == "es"){ decsLang = "e"; }
	if (lang == "en"){ decsLang = "i"; }
	
	decsUrl = "http://decs.bvs.br/cgi-bin/wxis1660.exe/decsserver/?IsisScript=../cgi-bin/decsserver/decsserver.xis&interface_language=" + decsLang + "&search_language=" + decsLang + "&previous_page=homepage&task=exact_term&search_exp=mfn=" + id + "#RegisterTop";
	decsWindow = window.open(decsUrl, "decsTerm", "height=450,width=630,menubar=yes,toolbar=yes,location=no,resizable=yes,scrollbars=yes,status=no");
	decsWindow.focus();
	
	return;
}

function changeLang(lang ){
	form = document.formMain;
	form.lang.value = lang;	
	if (home == "true"){
		form.task.value = 'init';
	}	
	form.submit();
	return;
}

function changeUrlParameter( parName, parValue ){
	var url = document.URL;
	var parPos = url.indexOf( parName + "=" )
	
	if( parPos == -1 ) return;
	
	var section = url.substring( parPos );
	var eop = section.indexOf("&");
	
	if( eop == -1 ){
		url = url.replace( section, parName+"="+parValue );
	} else {
		section = section.substring( 0, eop);
		url = url.replace( section, parName+"="+parValue );
	}
	alert(url);
	return url;
}

function changeFormParameter( parName, parValue ){

	var form = document.forms[0];
	form.elements[parName].value = parValue;

    form.submit();
}

function applyFilter( query, index ){
	var form = document.forms[0];
	var filter = form.addfilter;
	
	filter.value = index + ":\"" + query + "\"";
	form.submit();
}

function newSearch( ){
	var form = document.forms[0];
	var backfilter = form.backfilter;
	//clear filter
	backfilter.value = "-1";
	
	// don't add blank queries
	if( !form.q.value.match(/^\s*$/) )
		addSearchToHistory( form.q.value );
		
	form.submit();
}

function changeCollection( _col, _site  ){
	var form = document.forms[0];
		
	form.col.value = _col;
	form.site.value = _site;	
	form.backfilter.value = "-1";

	form.submit();
}


function refineByIndex( query, index){
	var form = document.forms[0];
	
	var formQuery = form.q;
	var formIndex = form.index;
	var backfilter = form.backfilter;

	// set the new query expression
	formQuery.value = "\"" + query + "\"";	
	
	// set the new index
    for ( i = 0; i < formIndex.length; i++ ) {
		currentIndex = formIndex[i];
		if (currentIndex.value == index){
			currentIndex.selected = true;
		}	
		
	}
	// clear history filter
	backfilter.value = "-1";

	form.submit();
}

function backHistoryFilter( pos ){
	var form = document.forms[0];
	var backfilter = form.backfilter;
	
	backfilter.value = pos;
	
	form.submit();
}

/* Fun��es para marca��o de ocorr�ncias favoritas (estrelas) */
var xmlhttp = createAjax();

/**
 * Cria inst�ncia do XMLHttpRequest
 * @return XMLHttpRequest;
 */
function createAjax(){
	var xmlhttp = null;
	if (window.XMLHttpRequest){
		xmlhttp=new XMLHttpRequest();
	}else if (window.ActiveXObject){
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlhttp;
}

/**
 * Faz POST atrav�s do AJAX e retorna
 * a reposta do processo caso a resposta
 * exista
 * @param String page
 * @param String vars
 * @return String responseText
 */
function postVars(page,vars){
	if(!xmlhttp){
		xmlhttp = createAjax();
	}
	xmlhttp.open('POST',page,false);
	xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xmlhttp.send(vars);
	return xmlhttp.responseText;
}

function enableDisableForm(form,option){
	if(option == "enable"){
		form.className = "";
		for(var i = 0; i < form.length; i++){
			form[i].disabled = false;
		}
	}else if(option == "disable"){
		form.className = "disabled";
		for(var i = 0; i < form.length; i++){
			form[i].disabled = true;
		}
	}
}

/**
 * Adiciona ou remove ocorr�ncia dos favoritos
 * @param Node element
 * @param String id
 */
function markUnmark(element,id){
  var state = element.getAttribute('state');
  var link = document.getElementsByTagName('a')[1];
  
  if(state == "u"){  
    element.src = "./image/common/star_selected.gif";
    element.setAttribute('state','s');
	postVars("bookmark.php","action=a&id="+id);
  }else if(state == "s"){
    element.src = "./image/common/star_unselected.gif";
    element.setAttribute('state','u');
	postVars("bookmark.php","action=r&id="+id);
  }
	refreshElements();
}

/**
 * Altera elementos conforme o usu�rio
 * seleciona documento.
 */
function refreshElements(){
	var listSize = postVars("bookmark.php","action=s");
	var selectionListOptions = document.getElementById('yourSelection').getElementsByTagName('ul')[0];

	if( listSize == 0 ){
		selectionListOptions.style.display = "none";
		enableDisableForm(document.forms.mailSend,"disable");
	}else{
		selectionListOptions.style.display = "block";
		enableDisableForm(document.forms.mailSend,"enable");
	}
	countBookmarksTo("sizeOfBookmarks_0",listSize);
	countBookmarksTo("sizeOfBookmarks_1",listSize);
	countBookmarksTo("sizeOfBookmarks_2",listSize);
}

/**
 * L� os favoritos de uma sess�o PHP e
 * "acende" as respectivas estrelas
 */
function recoverBookmarks(){
	var bookmarks = postVars("bookmark.php","action=l");
	bookmarks = bookmarks.split(';');
	
	for(var i = 0; i < bookmarks.length; i++){
		var register = document.getElementById(bookmarks[i]);
		if(register){
			var divs = register.getElementsByTagName('div');
			for(var j = 0; j < divs.length; j++){
				if( divs[j].className == "yourSelectionCheck" ){
					var image = divs[j].getElementsByTagName('img')[0];
					image.src = "./image/common/star_selected.gif";
					image.setAttribute('state','s');
				}
			}
		}
	}
	refreshElements();
}

/**
 * Faz uma pesquisa usando os ids dos
 * favoritos da sess�o PHP e mostra o
 * resultado para o usu�rio.
 */
function showBookmarks(){
	var form = document.forms[0];
	var input = form.getElementsByTagName('input');
	var query = form.q;
	var bookmarks = postVars("bookmark.php","action=l");
	var searchStrategy = "";
	bookmarks = bookmarks.split(';');
	
	// remove filtros de outras pesquisas
	for( var i = 0; i < input.length; i++){
		if( input[i].name.search('filter') != -1 ){
			form.removeChild(input[i]);
		}
	}
	
	if(bookmarks){
		searchStrategy = "\""+bookmarks[0]+"\"";
		for(var i = 1; i < bookmarks.length; i++){
			searchStrategy += " OR \""+ bookmarks[i]+"\"";
		}

		query.value = "+id:(" + searchStrategy + ")";
		form.submit();
	}
}

function clearBookmarks(){
	postVars("bookmark.php","action=c");
}

/**
 * Exibe no elemento especificado
 * o numero de registros selecionados
 * pelo usuario
 * @param String id
 */
function countBookmarksTo(id,listSize){
	var element = document.getElementById(id);
	element.innerHTML = listSize;
}

/**
 * Verifica se o navegador t�m a op��o
 * de cookies habilitados
 * @return boolean
 */
function cookiesEnabled(){
	document.cookie = "CookieTest=Enabled";
	var allcookies = document.cookie;
	var pos = allcookies.indexOf("CookieTest=");
	if (pos != -1) {
		var start = pos + 11;
		var end = allcookies.indexOf(";", start);
		if (end == -1) end = allcookies.length;
		var value = allcookies.substring(start,end);
		value = unescape(value);
		
		return value == "Enabled";
	}
	return false;
}

/**
 * Esconde elementos de uma determinada classe
 * @param String tagName
 * @param String className
 */
function hideClass(tagName,className){
	var elements = document.getElementsByTagName(tagName);
	
	for(var i = 0; i < elements.length; i++){
		if( elements[i].className == className ){
			elements[i].style.display = "none";
		}
	}
}

/**
 * Notifica o usu�rio sobre a impossibilidade
 * de se trabalhar com "Bookmarks"
 */
function alertBookmarkUnavailable(){
	var bb = document.getElementById('bookmark_button');
	var text = document.createTextNode("Cookies desabilitados!");
	bb.appendChild(text);
	bb.style.border = "1px solid #FF0000";
	bb.style.backgroundColor = "#FFEEEE";
	bb.style.textAlign = "center";
}

/* Fun��es para o searchHistory */

/**
 * Adiciona termo pesquisado �
 * lista de termos presente na
 * sess�o
 * @param {String} term
 */
function addSearchToHistory(term){
	term = escape(term);
	postVars("searchHistory.php","action=a&term="+term);
}

function removeSearchTerm(term,node){
	var shl = document.getElementById('searchHistoryList');
	var counter = document.getElementById('sizeOfHistorySearch');
	postVars("searchHistory.php","action=r&term="+term);
	shl.removeChild(node);
	counter.innerHTML = parseInt(counter.innerHTML) - 1;
	if(counter.innerHTML == "0"){
		shl.innerHTML = postVars("searchHistory.php","action=l");
	}
}

function eventPosition(e){
	var coord = [];
	
	if (!e) var e = window.event;

	if (e.pageX || e.pageY) 	{
		coord[0] = e.pageX;
		coord[1] = e.pageY;
	}else if (e.clientX || e.clientY) 	{
		coord[0] = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		coord[1] = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	return coord;
}

function chooseOperatorToSearch(sTerm,e){
	sTerm = unescape(sTerm);
	var coord;
	var form = document.forms[0];
	var operatorBox = document.getElementById("searchHistoryOperators");
	
	coord = eventPosition(e);
	if( form.q.value == "" ){
		form.q.value = sTerm;
	}else{
		operatorBox.style.left = coord[0]+"px";
		operatorBox.style.top = coord[1]+"px";
		operatorBox.style.display = "block";
		operatorBox.term = sTerm;
	}
}

/**
 * Adiciona um termo do hist�rico
 * de pesquisa no formul�rio de
 * pesquisa.
 * @param {String} term
 */
function addTermToSearch(operator){
	var term = document.getElementById('searchHistoryOperators').term;
	var form = document.forms[0];

	// enclose term from history with parenthesis
	if(term.search(" ") > -1 )
		if(!term.match(/\)$/))
			term = "(" + term + ")";

	// enclose term from input with parenthesis
	if(form.q.value.search(" ") > -1)
		if(!form.q.value.match(/\)$/))
			if(!form.q.value.match(/\s+(AND|OR)\s+/))
				form.q.value = "(" + form.q.value + ")";
	
	// add to input field			
	form.q.value = form.q.value + " " + operator + " " + term;
	
	document.getElementById('searchHistoryOperators').style.display = "none";
}

function sendMail(form){
	var transmissionResult = document.getElementById('transmissionResult');
	var sendingMail = document.getElementById('sendingMail');
	var mailSent = document.getElementById('mailSent');
	var mailError = document.getElementById('mailError');
	
	var senderMail = form.senderMail.value;
	var recipientMail = form.recipientMail.value;
	var subject = form.subject.value;
	var lang = form.lang.value;
	
	if( senderMail && recipientMail && subject ){
		var vars = 
			"&senderMail=" + senderMail + 
			"&recipientMail=" + recipientMail +
			"&subject=" + subject +
			"&lang=" + lang;
		
		mailSent.style.display = 'none';
		mailError.style.display = 'none';
		sendingMail.style.display = 'block';
		
		setTimeout( function(){
			var status = postVars('mail.php', vars);
			sendingMail.style.display = 'none';
			if( status.substring(0,5) == "Error" )
				mailError.style.display = 'block';
			else
				mailSent.style.display = 'block';
		}, 1000 );
		
	} else {
		//transmissionResult.innerHTML = "ERROR!";
	}
	
	return false;
}

/**
 * Recupera o hist�rico de pesquisa
 * contido da sess�o do usu�rio.
 */
function retrieveSearchTerms(){
	var searchHistoryList = document.getElementById("searchHistoryList");
	var sizeOfHistorySearch = document.getElementById("sizeOfHistorySearch");
	searchHistoryList.innerHTML = postVars("searchHistory.php","action=l");
	sizeOfHistorySearch.innerHTML = postVars("searchHistory.php","action=s");
}

function expandRetractResults(action){
	var refine_facet = document.getElementById('refine_facet');
	var box;
	if(action == "expand"){
		for( var i = 0; i < refine_facet.childNodes.length; i++){
			box = refine_facet.childNodes[i];
			if(box.tagName == "DIV"){
				if (box.className.indexOf("closed") > -1){
					box.className = box.className.replace("closed","");
				}
			}
		}
	}else if(action == "retract"){
		for( var i = 0; i < refine_facet.childNodes.length; i++){
			box = refine_facet.childNodes[i];
			if(box.tagName == "DIV"){
				if (box.className.indexOf("closed") == -1){
					box.className = box.className + " closed";
				}
			}
		}
	}
}

function showInfo(msg,node,e){
	msg = unescape(msg);
	var coord = eventPosition(e);
	var div = document.createElement("DIV");
	
	coord[0] -= 10;
	coord[1] -= 10;
	
	div.innerHTML = msg;
	div.className = "popup altpopup";
	div.style.left = coord[0]+"px";
	div.style.top = coord[1]+"px";
	div.onmouseout = function(){
		var parent = this.parentNode;
		parent.removeChild(this);
	};
	
	node.appendChild(div);
}

function showPrintDialog(){
	var version = Math.round(parseFloat(navigator.appVersion) * 1000);		
	if (version >= 4000){
		setTimeout("window.print()",1000);
	}
}


function printMode(){
	var form = document.searchForm;
	var printMode = form.printMode;
	var from = form.from;
	
	printMode.value = "true";
	from.value = form.pageFrom.value;
	form.submit();

	//reset form values
	printMode.value = "";
	from.value = "";
}

function exportMode(mode){
	var form = document.searchForm;
	var output = form.output;
	var from = form.from;
	
	output.value = mode;
	from.value = form.pageFrom.value;
	form.submit();

	//reset form values
	output.value = "";
	from.value = "";
}