var itemsPerPage = 20;

function createSearch(){
	this.currentPage = 1;
	this.webEnv = null;
	this.queryKey = null;
	this.count = -1;
	this.q = "";
	this.q = "";
	return this
}
var search = null;
function processSearch(obj){	
	
	var q = obj.q.value
		
	if(q == ""){
		alert("Please, input search term.")
		return false;
	}
	
	document.location.href="pmsearch.php?q=" + q +"&p=1&newsearch=true"

	return false;
}
function processKeyPress(e, obj, url){
	if(!url){
		url = "pmsearch.php"
	}
	var e = e || window.event
	
	if(e.keyCode){
		keyId = e.keyCode;
	}
	else{
		keyId = e.charCode;
	}
	
	if(keyId == 13){
		if(url == 'pmsearch.php'){
			if(type=="all"){
				document.location.href="pmsearch.php?q=" + q +"&p=" + obj.value
			}
			else{
				document.location.href="pmsearch.php?q=" + q +"&p=" + obj.value + "&type=review"
			}
		}else{
			document.location.href = url + "?p=" + obj.value
		}
		return false;
	}
	return true;
}
function formSubmit(obj, event){
	if(!document.all){
		return true;
	}
	event = event || window.event
	if(event.keyCode){
		keyId = event.keyCode;
	}
	else{
		keyId = event.charCode;
	}
	if(keyId == 13){
		while(obj.nodeName != "FORM"){
			obj = obj.parentNode;
		}
		obj.submit();
		return false;
	}
	return true;
}

function initAbstract(){
	if(!pmid)return;
	var sUrl = "pubmed/get.php?action=icons&pmid=" + pmid + "&doi=" + abstract_doi + "&jour_title=" + abstract_jour_name + "&volume=" + abstract_volume + "&issue=" + abstract_issue + "&pages=" + abstract_pages + "&issn=" + abstract_issn + "&pii=" + abstract_pii + "&rand=" + Math.random();	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			
			var iconUrls = doc.getElementsByTagName("ObjUrl");
			if(iconUrls.length>0){
				var iconPanel = document.getElementById("iconspanel");
				for(var i = 0; i< iconUrls.length; i++){
					var a = document.createElement("a")
					a.setAttribute("href", iconUrls[i].getElementsByTagName("Url").item(0).childNodes.item(0).nodeValue)
					a.setAttribute("target", "_blank");
					var img = document.createElement("img")
					img.setAttribute("src", iconUrls[i].getElementsByTagName("IconUrl").item(0).childNodes.item(0).nodeValue)
					a.appendChild(img)
					iconPanel.appendChild(a)
					if(iconUrls.item(i).getAttribute("pdf") == "true"){
						var obj = document.getElementById("linkstbl_" + pmid)
						var tr = obj.getElementsByTagName("tr").item(0)				
						var td = document.createElement("td")
						var a = document.createElement("a")
						a.setAttribute("href", iconUrls[i].getElementsByTagName("Url").item(0).childNodes.item(0).nodeValue)
						a.setAttribute("target", "_blank")
						a.className = "pdf"
						a.appendChild(document.createTextNode("View PDF Direct"))
						td.appendChild(a)
						tr.appendChild(td)
					}else{
						//add to Library And Full Text Links
						var providerlinks = document.getElementById("providerlink");
						if(providerlinks){
							var div = document.createElement("div");
							div.className = 'providerbox';
							var a = document.createElement("a")
							a.setAttribute("href", iconUrls[i].getElementsByTagName("Url").item(0).childNodes.item(0).nodeValue)
							a.setAttribute("target", "_blank");
							var img = document.createElement("img")
							img.setAttribute("src", iconUrls[i].getElementsByTagName("IconUrl").item(0).childNodes.item(0).nodeValue)
							a.appendChild(img)
							div.appendChild(a)
							var brElem = document.getElementById("providerbox-br");
							providerlinks.insertBefore(div, brElem)
							providerlinks.style.display = "block"
						}
					}
				}
			}
		},
		onError: function(e){
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
//				alert("error=1; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
	var sUrl = "pubmed/get.php?action=relatedlinks&pmid=" + pmid + "&rand=" + Math.random();	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		
		onLoad: function (doc)	{
			var loading = document.getElementById("relatedLinks-loading");
			loading.style.display = "none";
			var relatedLinksDiv = document.getElementById("relatedLinks");
			
			var relatedLinks = doc.getElementsByTagName("DocSum");
			if(relatedLinks.length == 0){
				relatedLinksDiv.innerHTML = '<div class="norelated">(No Related Articles yet for this citation.)</div>'
				return;
			}
			
			for(var i = 0; i < relatedLinks.length; i++){
				var cur_pmid = relatedLinks.item(i).getElementsByTagName("pmid").item(0).childNodes.item(0).nodeValue
				var full_title = relatedLinks.item(i).getElementsByTagName("title").item(0).childNodes.item(0).nodeValue
				var title = full_title
				if(title.length > 70){
					title = title.substring(0, 70) + "..."
				}
				var source = relatedLinks.item(i).getElementsByTagName("source").item(0).childNodes.item(0).nodeValue
				
				var yearNode = relatedLinks.item(i).getElementsByTagName("year").item(0).childNodes;
				var year = "";
				if(yearNode.length > 0){
					year = yearNode.item(0).nodeValue
				}
				var so = source + ". " +relatedLinks.item(i).getElementsByTagName("so").item(0).childNodes.item(0).nodeValue
				
				var div = document.createElement("div");
				div.className = "relatedLink"
				
				var divpopup = document.createElement("div");
				divpopup.className = "popup"
				if(document.all){
					divpopup.onmousemove = function(){hideRelatedHint()}
				}else{
					divpopup.setAttribute("onmousemove", "hideRelatedHint()")
				}
				var divpopupinner = document.createElement("div");
				divpopupinner.className = "popupinner"
				var divpopuptext = document.createElement("div");
				divpopuptext.className = "text"
				divpopuptext.appendChild(document.createTextNode(full_title))
				divpopupinner.appendChild(divpopuptext)
				
				var divpopupinfo = document.createElement("div");
				divpopupinfo.className = "moreinfo"
				divpopupinfo.appendChild(document.createTextNode(so))
				divpopupinner.appendChild(divpopupinfo)
				
				
				divpopup.appendChild(divpopupinner)
				div.appendChild(divpopup)
				
				var a = document.createElement("a")
				a.setAttribute("href", "pmabstract.php?pmid=" + cur_pmid)				
				a.appendChild(document.createTextNode(title))
				if(document.all){
					div.onmouseover = function() {showRelatedHint(this)} 
					div.onmouseout = function(){hideRelatedHint()}
				}else{
					div.setAttribute("onmouseover", "showRelatedHint(this)")
					div.setAttribute("onmouseout", "hideRelatedHint()")
				}
				div.appendChild(a);
				
				var adddiv = document.createElement("div")
				adddiv.className = "additionalinfo"
				var info = "["+source+"."+year+"]"
				adddiv.appendChild(document.createTextNode(info))
				div.appendChild(adddiv);
				relatedLinksDiv.appendChild(div)
			}
			var a = document.createElement("a")
			a.setAttribute("href", "pmsearch.php?q="+pmid+"&p=1&type=relatedlinks");
			a.className = "seeallrelated"
			a.appendChild(document.createTextNode("See all Related Articles..."))
			relatedLinksDiv.appendChild(a)			
		},
		onError: function(e){
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
//				alert("error=2; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})

	var providerObj = document.getElementById("providerlink")
	if(providerObj){
		var sUrl = "pubmed/get.php?action=provider&lib=" + lib + "&ip=" + ip + "&pmid=" + pmid + "&rand=" + Math.random();	
		Zapatec.Transport.fetchXmlDoc({
			url: sUrl,
		
			onLoad: function (doc){
				var providers = doc.getElementsByTagName("provider")
				for(var i = 0; i< providers.length; i++){
					providerObj.style.display = "block"
					var div = document.createElement("div");
					div.className = "providerbox"
					var img = document.createElement("img");
					img.setAttribute("src", providers[i].getAttribute("iconurl"));
					img.setAttribute("alt", providers[i].getAttribute("pmname"))				
					var a = document.createElement("a")
					var active = providers[i].getAttribute("active")
					if(active=="false"){
						a.className = "providernotactive"
					}
					a.setAttribute("href", providers[i].getAttribute("url"));
					a.setAttribute("target", "_blank")
					a.appendChild(img);
					div.appendChild(a)
					providerObj.appendChild(div);
				}
			},
			onError: function(e){
				switch(e.errorCode){
				case 0:
					//it is OK
					break;
					default:
//					alert("error=2; " + e.errorCode + " -- " + e.errorDesctiption)
				}
			}
		})
	}

}
var relatedHint = null;
function showRelatedHint(obj){
	
	relatedHint = obj.firstChild
	if(relatedHint){
		relatedHint.style.display = "block";
	}
}
function hideRelatedHint(){
	if(relatedHint){
		relatedHint.style.display = "none"
	}
}


// Email functionality starts
var emailWindow = null;
var firstTime = true;


function initEmailFunc(){	
	var windowTitle = "Send Article"
	if(window.pageType && window.pageType=="cabs"){
		windowTitle = "Send Abstracts"
	}
	emailWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
//		modal: true,
		eventListeners: {
			onClose: function(){},
			onShow: function (){
				document.getElementById("emaildiv").style.display = "block"
				//initEmailWindow();
				var state = emailWindow.getState();
				var left = (document.body.clientWidth - state.width)/2				
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2				
				top = 100;
				emailWindow.setScreenPosition(left, top)
				if(firstTime){
					firstTime = false;					
				}
			}
		},
		
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 500,
		height: 455,
		title: windowTitle,
		divContent: "emaildiv",
		raiseOnlyOnTitle:false, 
		initialState: "hidden",
		left: -3000
    });
}
var initEmailError = "";
function initEmailWindowCab(title, authors, link_id, conferenceName, conferenceDates, md5){
	document.getElementById("emailinner").style.display = "block";
	var forms = document.getElementById("emailinner").getElementsByTagName("form")
	forms[0].reset();
	
	document.getElementById("emailsuccess").style.display = "none";	
	if(window.subscription_access && window.subscription_access.length > 0){
		document.getElementById("emailerror").style.display = "none";
	}else{		
		initEmailError = "To send the full text of this abstracts, <a href=\"subscription.php\">subscribe</a>."
		document.getElementById("emailerror").innerHTML = initEmailError
		document.getElementById("emailerror").style.display = "block";
	}
	
	document.getElementById("txtemailpmid").value = -1;
	document.getElementById("txtemailcabid").value = link_id
	var fromEmailObj = document.getElementById("txtfromemail")
	fromEmailObj.className = "txt"
	
	var toEmailObj = document.getElementById("txttoemail")
	toEmailObj.className = "txt"
	
	var emailSubjectObj = document.getElementById("txtemailsubject")
	var emailTitle = title
	if(emailTitle.length > 50){
		emailTitle = emailTitle.substring(0, 50) + " ... "
	}
	emailTitle += "- Biowizard"
	emailSubjectObj.value = emailTitle;
	var emailBodyObj = document.getElementById("txtemailbody")
	
	var emailBodyText = "Dear Colleague,\n\nHere is an article you may find interesting.\n\n";
	if(window.pageType && window.pageType == "cabs"){
		emailBodyText = "Dear Colleague,\n\nHere is a conference abstract you may find interesting.\n\n";
	}
	if(md5){
		emailBodyText += "http://www.biowizard.com/cabsabstract.php?id=" + link_id + "&e=" + md5 + "\n\n"
	}else{
		emailBodyText += "http://www.biowizard.com/cabsabstract.php?id=" + link_id + "&e=1\n\n"
	}
	
	emailBodyText += conferenceName + "\n"
	emailBodyText += conferenceDates + "\n\n"
	
	emailBodyText += authors + "\n"

	emailBodyText += title + "\n\n"
	
	emailBodyObj.value = emailBodyText	
}

function initEmailWindow(title, authors, sline, tline, pmid){
		
	document.getElementById("emailinner").style.display = "block";
	var forms = document.getElementById("emailinner").getElementsByTagName("form")
	forms[0].reset();
	
	document.getElementById("emailsuccess").style.display = "none";	
	document.getElementById("emailerror").style.display = "none";	
	
	document.getElementById("txtemailpmid").value = pmid;
	var fromEmailObj = document.getElementById("txtfromemail")
	fromEmailObj.className = "txt"
	
	var toEmailObj = document.getElementById("txttoemail")
	toEmailObj.className = "txt"
	
	var emailSubjectObj = document.getElementById("txtemailsubject")
	var emailTitle = title
	if(emailTitle.length > 50){
		emailTitle = emailTitle.substring(0, 50) + " ... "
	}
	emailTitle += "- Biowizard"
	emailSubjectObj.value = emailTitle;
	var emailBodyObj = document.getElementById("txtemailbody")
	var emailBodyText = "Dear Colleague,\n\nHere is an article you may find interesting.\n\n";

	emailBodyText += "http://www.biowizard.com/pmabstract.php?pmid=" + pmid + "&e=1\n\n"
	emailBodyText += authors + "\n"

	emailBodyText += title + "\n\n"
	
	emailBodyText += sline + "\n"
	emailBodyText += tline + "\n";
	
	//emailBodyText += "BioWizard Team\n"
	//emailBodyText += "If you get this email by mistake, please, contact us."
	
	emailBodyObj.value = emailBodyText
}
function processClickSpan(obj){
	while(obj.nodeName != "INPUT"){
		obj = obj.previousSibling
	}
	if(obj.disabled == false){
		obj.checked = !obj.checked
	}
}
var isCab = false
function emailProcessCab(title, authors, link_id, conferenceName, conferenceDates, md5){
	isCab = true;
	if(emailWindow == null){
		initEmailFunc()
	}
	initEmailWindowCab(title, authors, link_id, conferenceName, conferenceDates, md5)
	
	emailWindow.show();
	return false;
}


function emailProcess(title, authors, sline, tline, pmid){
	if(emailWindow == null){
		initEmailFunc()
	}
	initEmailWindow(title, authors, sline, tline, pmid)
	
	emailWindow.show();
	return false;
}

function checkEmail(email){
//	var rx = /^[a-z0-9\._]*[a-z0-9_]@[a-z0-9][a-z0-9\-\.]*[a-z0-9]\.[a-z]{2,6}$/i;

	var rx = /^([A-Za-z0-9\._]*[A-Za-z0-9_]@[A-Za-z0-9][A-Za-z0-9\-\.]*[A-Za-z0-9]\.[A-Za-z]{2,6})(\s*\,\s*[A-Za-z0-9\._]*[A-Za-z0-9_]@[A-Za-z0-9][A-Za-z0-9\-\.]*[A-Za-z0-9]\.[A-Za-z]{2,6})*$/;

	return rx.test(email)
}

function processSubmitEmail(){
	
	var errorMsg = initEmailError;

	var fromEmailObj = document.getElementById("txtfromemail")
	if(fromEmailObj.value.length == 0){
		fromEmailObj.className = "txt error"
		if(errorMsg.length == 0){
			errorMsg += "The message has NOT been sent."
		}
		errorMsg += ' "From" field must not be empty.'
	}else if(checkEmail(fromEmailObj.value)){
		fromEmailObj.className = "txt"
	}else{
		fromEmailObj.className = "txt error"
		if(errorMsg.length == 0){
			errorMsg += "The message has NOT been sent."
		}
		errorMsg += ' "From" field is not a proper email address.'
	}

	var toEmailObj = document.getElementById("txttoemail")
	if(toEmailObj.value.length == 0){
		toEmailObj.className = "txt error"
		if(errorMsg.length == 0){
			errorMsg += "The message has NOT been sent."
		}
		errorMsg += ' "To" field must not be empty.'		
	}else if(checkEmail(toEmailObj.value)){
		toEmailObj.className = "txt"
	}else{
		toEmailObj.className = "txt error"
		if(errorMsg.length == 0){
			errorMsg += "The message has NOT been sent."
		}
		errorMsg += ' "To" field is not a proper email address.'
	}


	var errorObj = document.getElementById("emailerror")
	errorObj.innerHTML = errorMsg

	if(errorMsg.length == 0 || errorMsg==initEmailError){
		document.getElementById("emailsending").style.display = "block"
		
		var sUrl = "pubmed/sendemail.php?rand=" + Math.random();
			Zapatec.Transport.fetchXmlDoc({
			url: sUrl,
			onLoad: function (doc){
				document.getElementById("emailsending").style.display = "none"
				var errorObj = document.getElementById("emailerror")
				errorObj.style.display = "none"
				document.getElementById("emailinner").style.display = "none";
				document.getElementById("emailsuccess").style.display = "block";			
		},
		onError: function(e){
			document.getElementById("emailsending").style.display = "none"
			var errorObj = document.getElementById("emailerror")
			errorObj.innerHTML = "An error occurred while sending the email. Please, try again."
			errorObj.style.display = "block;"
		},
		method: 'POST',
		content: "userName=" + document.getElementById("txtemailname").value + "&pmid=" + document.getElementById("txtemailpmid").value + "&cabid="+ document.getElementById("txtemailcabid").value+ "&fromEmail=" + document.getElementById("txtfromemail").value + "&toEmail=" + document.getElementById("txttoemail").value + "&subject=" + document.getElementById("txtemailsubject").value + "&body=" + escape(document.getElementById("txtemailbody").value)
	})		
	}else{
		errorObj.style.display = "block"
		return false;
	}
	return false;
}

function closeEmailWindow(){
	emailWindow.hide();
	return false
}
var savedpopup = null;
function initSavedPopupFunc(){
	var windowTitle = "Saving search term"
	if(window.pageType && window.pageType=="cabs"){
		windowTitle = "Saving search keyword"
	}
	savedpopup = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners: {
			onClose: function(){
				hideProcess();
			},
			onShow: function (){
				document.getElementById("msgpopupdivealerts").checked = true;
				document.getElementById("msgpopupdiv").style.display = "block"
				var state = savedpopup.getState();
				var left = (document.body.clientWidth - state.width)/2				
				var top = 100;
				savedpopup.setScreenPosition(left, top)
			}
		},
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 500,
		height: 170,
		title: windowTitle,
		divContent: "msgpopupdiv",
		raiseOnlyOnTitle:false, 
		initialState: "hidden"
    });	
}
function savedProcessOk(){
	var obj = document.getElementById("msgpopupdivealerts")
	if(document.getElementById("msgpopupdiverror").style.display == "block"){
		savedpopup.hide();
		showMessage("Your search has been saved successfully. <a class=\"bluelink\" href=\"pmsavedsearches.php\">View</a>", "warning", 60)
		hideProcess();
	}else if(obj.checked == false){
		savedpopup.hide();
		showMessage("Your search has been saved successfully. <a class=\"bluelink\" href=\"pmsavedsearches.php\">View</a>", "warning", 60)
		hideProcess();
	}else{
		showMessage("Your search has been saved successfully. <a class=\"bluelink\" href=\"pmsavedsearches.php\">View</a>", "warning", 60)
		var sUrl = "pubmed/ealert.php?id=" + insertedId + "&value=true&action=setealertbyq" + "&rand=" + Math.random();
		Zapatec.Transport.fetchXmlDoc({
			url: sUrl,
			onLoad: function (doc){
				showMessage("Now, you will get email alerts for this search term. <a class=\"bluelink\" href=\"pmsavedsearches.php\">View</a>", "warning", 120)
			},
			onError: function(e){
			}
		})
		savedpopup.hide();
		hideProcess();
	}
	var savesearchbutton = document.getElementById("savesearchbutton")
	if(savesearchbutton){
		savesearchbutton.src = "images/saved.gif";
		savesearchbutton.onclick = "";
	}
}
function initSavedPopup(q){
	if(!savedpopup){
		initSavedPopupFunc()
	}
	document.getElementById("msgpopupdivsaving").style.display = "block"
	document.getElementById("msgpopupdiverror").style.display = "none"
	document.getElementById("msgpopupdivinnertext").style.display = "none"
	document.getElementById("msgpopupdivinnerbuttons").style.display = "none"
	document.getElementById("msgpopupdivealerts").checked = false
	document.getElementById("msgpopupdivq").innerHTML = q;
	savedpopup.show();
}
var insertedId = "";
function saveSearch(name, index){
	if(name.length==0){
		return false;
	}else{
		//checking if termin have changed		
		var input = document.getElementById("q" + index)
		var q_tmp = q;
		while(q_tmp.indexOf("quot") >=0){
			q_tmp = q_tmp.replace("&quot;", '"');
		}
		if(q_tmp != input.value){
			alert("You should perform search before saving.");
			return false;
		}
		initSavedPopup(q_tmp)
		
		//TODO: change button to "Saving"
		//TOTO: what happans if query have been changed?
		showProcess("Saving...")
		
		
		var sUrl = "pubmed/savesearch.php?q=" + q_tmp + "&count=" + totalItems + "&rand=" + Math.random();
			Zapatec.Transport.fetchXmlDoc({
			url: sUrl,
			onLoad: function (doc){
				
				var errors = doc.getElementsByTagName("error")
				if(errors.length == 0){
					document.getElementById("msgpopupdivsaving").style.display = "none"
					document.getElementById("msgpopupdiverror").style.display = "none"
					document.getElementById("msgpopupdivinnertext").style.display = "block"
					document.getElementById("msgpopupdivinnerbuttons").style.display = "block"
					insertedId = doc.getElementsByTagName("resultSet").item(0).childNodes.item(0).nodeValue
				}else{
					var errorMsg = errors.item(0).childNodes.item(0).nodeValue
					showMessage(errorMsg, "error", 120)
					document.getElementById("msgpopupdivsaving").style.display = "none"
					document.getElementById("msgpopupdiverror").innerHTML = errorMsg
					document.getElementById("msgpopupdiverror").style.display = "block"
					document.getElementById("msgpopupdivinnertext").style.display = "none"
					document.getElementById("msgpopupdivinnerbuttons").style.display = "block"
				}
				
				/*
				hideProcess()
				var errors = doc.getElementsByTagName("error")
				if(errors.length == 0){
					var elem = doc.getElementsByTagName("resultSet")					
					var value = elem.item(0).childNodes.item(0).nodeValue
					
					showMessage("Your search has been saved successfully. <a class=\"bluelink\" href=\"pmsavedsearches.php\">View</a>", "warning", 60)
				}else{
					var errorMsg = errors.item(0).childNodes.item(0).nodeValue
					showMessage(errorMsg, "error", 120)
				}
				*/
			},
			onError: function(e){
				hideProcess()
				//TODO return button to previous state
				showMessage("An error occurred while processing your request. Please try again.", "error", 120)

				document.getElementById("msgpopupdivsaving").style.display = "none"
				document.getElementById("msgpopupdiverror").innerHTML = "An error occurred while processing your request. Please try again."
				document.getElementById("msgpopupdiverror").style.display = "block"
				document.getElementById("msgpopupdivinnertext").style.display = "none"
				document.getElementById("msgpopupdivinnerbuttons").style.display = "block"
			}
		})
	}
}

// Email functionality ends

function showProcess(msg){
	var topmsg = document.getElementById("topmsg")
	topmsg.innerHTML = msg
	topmsg.style.display = "block"
}
function hideProcess(){
	var topmsg = document.getElementById("topmsg")
	topmsg.style.display = "none"	
}

function showMessage(msg, level, time){
	var msgObj = document.getElementById("msg")
	var divs = msgObj.getElementsByTagName("div")
	var div = divs.item(0)
	switch(level){
		case "error":
			div.className = "msgerror"
			break;
		case "warning":
			div.className = "msgwarning"
			break;
	}
	div.innerHTML = msg
	msgObj.style.display = "block"

	msgObj = document.getElementById("msg1")
	if(msgObj){
		divs = msgObj.getElementsByTagName("div")
		div = divs.item(0)
		switch(level){
			case "error":
				div.className = "msgerror"
				break;
			case "warning":
				div.className = "msgwarning"
				break;
		}
		div.innerHTML = msg
		msgObj.style.display = "block"
	}

	if(window.msg_time != -1){
		window.setTimeout("hideMessage()", time*1000)
	}
}

function hideMessage(){	
	document.getElementById("msg").style.display = "none"
	var obj = document.getElementById("msg1")
	if(obj){
		obj.style.display = "none"
	}
}
function checkSaveSearch(event, obj, index){
	if(userLogin.length == 0){
		if(index == 1){
			var loginBox = document.getElementById("msg-login1");
			//var loginBoxInner = document.getElementById("msg-login-inner1")
		}else{
			var loginBox = document.getElementById("msg-login2");
			//var loginBoxInner = document.getElementById("msg-login-inner2")
		}
		loginBox.style.display = "block"
		//loginBoxInner.style.display = "block"
	}
}
function hideMsgLogin(event, obj){
	//todo!!!
	var needToHide = true
	var pos = getPosition(event)
	if(inElem(document.getElementById("savesearchbtn1"), pos)){
		return;
	}
	if(inElem(document.getElementById("savesearchbtn2"), pos)){
		return;
	}
	if(inElem(document.getElementById("msg-login1"), pos)){
		return;
	}
	if(inElem(document.getElementById("msg-login2"), pos)){
		return;
	}
//	if(inElem(document.getElementById("msg-login-inner1"), pos)){
	//	return;
//	}
	//if(inElem(document.getElementById("msg-login-inner2"), pos)){
//		return;
//	}
	if(needToHide){
		var loginBox = document.getElementById("msg-login1");
		loginBox.style.display = "none"

//		var loginBoxInner = document.getElementById("msg-login-inner1");
//		loginBoxInner.style.display = "none"
		
		loginBox = document.getElementById("msg-login2");
		if(loginBox)
			loginBox.style.display = "none"

//		loginBoxInner = document.getElementById("msg-login-inner2");
	//	if(loginBoxInner)
		//	loginBoxInner.style.display = "none"
	}
}

function inElem(obj, pos, addElem){
	if(!obj)
		return false;
	var coor = getAbsolutePosition(obj)
	
	if(pos.x+1 <= coor.x || pos.x>= coor.x + obj.clientWidth){
		return false
	}
	if(!addElem){
		if(pos.y+1 <= coor.y || pos.y+1 >= coor.y + obj.clientHeight){
			return false
		}
	}
	else{
		if(pos.y+1 <= coor.y || pos.y+1 >= coor.y + obj.clientHeight){
			return false
		}
	}
	return true;
}


function getAbsolutePosition(element) {
	var r = { x: 0, y: 0 };
	
	while( element != null ) {
		r.x += element.offsetLeft;
		r.y += element.offsetTop;
		element = element.offsetParent;
	}
	return r;
}
function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

function deleteSelectedItems(obj){
	var submit = false
	var inputs = obj.getElementsByTagName("input")
	for(var i = 0; i < inputs.length; i++){
		if(inputs.item(i).getAttribute("type")=="checkbox"){
			if(inputs.item(i).checked == true){
				submit = true
				break
			}
		}
	}
	if(submit == false){
		showMessage("No items selected.", "warning", 60)
	}else{
		showProcess("Deleting...")
		obj.action.value = "delete_selected_items"
	}	
	return submit;
}


//savingarticle functionality
var saveArticleWindow = null;
var moveArticleWindow = null;
var savearticleTree = null;
var movearticleTree = null;
function renameInlineKeyPress(e, obj){
	var e = e || window.event
	
	if(e.keyCode){
		keyId = e.keyCode;
	}
	else{
		keyId = e.charCode;
	}
	
	if(keyId == 13){
		renameInline(obj)
	}
	return true;
	
}
function renameInline(obj){
	var label = document.getElementById("zpTreetreeNode" + obj.getAttribute("nodeid") + "LabelElement")
	var inputs = label.getElementsByTagName("input")
	var input = inputs[0]
	var oldValue = input.getAttribute("oldvalue")
	var newValue = input.value
	while(label.childNodes.length > 0){
		label.removeChild(label.childNodes[0])
	}
	label.appendChild(document.createTextNode(newValue))
	if(newValue == oldValue){
		return;
	}
	//todo: renaming process

	
	var selectedNode = savearticleTree.findAll(function(node){return node.data.isSelected})
	
	var newFolderName = newValue;
	var folderIndex = 0
	
	//TODO: check for unique name
	
	var baseName = newValue
	var lastIndex = baseName.lastIndexOf("(")
	if(lastIndex > 0){
		baseName = baseName.substring(0, lastIndex)
	}
	while(true){
		var tmpNodes = savearticleTree.findAll(function(node){return node.data.label == newFolderName})
		if(tmpNodes.length == 0){
			break;
		}
		folderIndex++
		newFolderName = baseName + "(" + folderIndex + ")"
	}
	
	if(!window.pageType){
		pageType = "pubmed"
	}
	var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=renamefolder&id=" + selectedNode[0].id + "&folderId=" + selectedNode[0].data.attributes.folderId + "&name=" + newFolderName + "&rand=" + Math.random()
	document.getElementById("savearticlesaving").innerHTML = "Renaming...";
	document.getElementById("savearticlesaving").style.display = "block"
	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){			
			var tmp = doc.getElementsByTagName("folderName")
			var folderName = tmp[0].childNodes[0].nodeValue

			tmp = doc.getElementsByTagName("id")
			var folderId = tmp[0].childNodes[0].nodeValue

			var selectedNode = savearticleTree.getNode(folderId)
			
			
			selectedNode.rename(folderName)
            document.getElementById("savearticlesaving").style.display = "none"    
		},
		onError: function(e){
			document.getElementById("savearticlesaving").style.display = "none"
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=5; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
	return false		
}


function initSaveArticleFunc(){	
	var windowTitle = "Save Article (You are Logged on as '" + userLogin + "')"
	if(window.pageType && window.pageType == "cabs"){
		windowTitle = "Save Abstracts (You are Logged on as '" + userLogin + "')"
	}
	saveArticleWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners: {
			onClose: function(){},
			onShow: function (){
				var citedbyObj = document.getElementById("citedbycheckbox");
				if(citedbyObj){
					citedbyObj.checked = true;
				}
				document.getElementById("savearticlediv").style.display = "block"
				var state = saveArticleWindow.getState();
				var left = (document.body.clientWidth - state.width)/2				
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2				
				top = 100;
				saveArticleWindow.setScreenPosition(left, top)
			}
		},		
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 500,
		height: 530,
		title: windowTitle,
		
		divContent: "savearticlediv",
		raiseOnlyOnTitle:false, 
		initialState: "hidden",
		left: -3000
    });
        
	savearticleTree = new Zapatec.Tree({
    	tree: "tree",
        highlightSelectedNode: true,
        initLevel: 2,        
        defaultIcons: "myicon", 
        selectable: true,
        keyboardNavigation: false, //!!!
        eventListeners:{
        	labelDblclick: function (){
        		var selectedNode = savearticleTree.findAll(function(node){return node.data.isSelected})
        		selectedNode = selectedNode[0]
        		var label = document.getElementById("zpTreetreeNode"+selectedNode.id+"LabelElement")
        		if(label.getElementsByTagName("input").length == 0){        		
        			
        			savearticleTree.keyboardNavigation = false
        			var oldValue = label.innerHTML
        			
        			while(label.childNodes.length > 0){
        				label.removeChild(label.childNodes[0])
        			}
        			var input = document.createElement("input")
        			input.className = "rename2"
        			input.setAttribute("value", oldValue)
        			input.setAttribute("oldvalue", oldValue)
        			input.setAttribute("nodeid", selectedNode.id)
        			if(document.all){
        				input.onkeypress = function(){renameInlineKeyPress(event, this)}
        				input.onblur = function(){renameInline(this)}
        			}else{
        				input.setAttribute("onkeypress", "renameInlineKeyPress(event, this)");
        				input.setAttribute("onblur", "renameInline(this)")
        			}
        			label.appendChild(input)
        			input.focus();
        			input.select();
        		}        		
        	}
        }
    });
/*    
    sUrl = "pubmed/foldertree.php"+"?rand=" + Math.random();
	Zapatec.Transport.fetch({
		url: sUrl,
		onLoad: function (oRequest){
		    savearticleTree.rootNode.config.source = oRequest.responseText;
			savearticleTree.rootNode.config.sourceType="json"; 
			savearticleTree.rootNode.loadData()
			if(movearticleTree)	{
			    movearticleTree.rootNode.config.source = oRequest.responseText;
				movearticleTree.rootNode.config.sourceType="json"; 
				movearticleTree.rootNode.loadData()
			}
			if(exportTree){
			    exportTree.rootNode.config.source = oRequest.responseText;
				exportTree.rootNode.config.sourceType="json"; 
				exportTree.rootNode.loadData()				
			}
		},
		onError: function(e){
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=3; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
*/
	initTree(savearticleTree)
}
var loadedFolders = null;
function initTree(treeObj){
	if(loadedFolders){
		treeObj.rootNode.config.source = loadedFolders;
		treeObj.rootNode.config.sourceType="json"; 
		treeObj.rootNode.loadData()
		return;
	}
	if(!window.pageType){
		pageType = 'pubmed'
	}
	
	sUrl = "pubmed/foldertree.php?type=" + pageType + "&rand=" + Math.random();
	Zapatec.Transport.fetch({
		url: sUrl,
		onLoad: function (oRequest){
		    loadedFolders = oRequest.responseText
			treeObj.rootNode.config.source = loadedFolders;
			treeObj.rootNode.config.sourceType="json"; 
			treeObj.rootNode.loadData()
		},
		onError: function(e){
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=33; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
}

function initMoveArticleFunc(){
	moveArticleWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners: {
			onClose: function(){},
			onShow: function (){
				document.getElementById("movearticlediv").style.display = "block"
				var state = moveArticleWindow.getState();
				var left = (document.body.clientWidth - state.width)/2				
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2				
				top = 100;
				moveArticleWindow.setScreenPosition(left, top)
			}
		},		
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 500,
		height: 435,
		title: "Move selected article(s) to",
		
		divContent: "movearticlediv",
		raiseOnlyOnTitle:false, 
		initialState: "hidden",
		left: -3000
    });
    
    
	movearticleTree = new Zapatec.Tree({
    	tree: "movetree",
        highlightSelectedNode: true,
        initLevel: 2,        
        defaultIcons: "myicon", //!!!
        editable: false, //- bug with zapatec
        selectable: false,
        keyboardNavigation: true
    });
    initTree(movearticleTree)

}


function savearticleSave(){
	var selectedNode = savearticleTree.findAll(function(node){return node.data.isSelected})
	var str = ""
	
	var folderId = selectedNode[0].data.attributes.folderId
	if(!window.pageType){
		pageType="pubmed"
	}
	var citedbyObj = document.getElementById("citedbycheckbox")
	var citedbyValue = "false";
	if(citedbyObj && citedbyObj.checked){
		citedbyValue = "true";
	}
	
	var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=save&pmid=" + savearticlePMID + "&folderId=" + folderId + "&citedby=" + citedbyValue + "&rand=" + Math.random()
	document.getElementById("savearticlesaving").innerHTML = "Saving..."
	document.getElementById("savearticlesaving").style.display = "block"
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			var error = doc.getElementsByTagName("error")
			if(error.length >0){
				document.getElementById("savearticleerror").innerHTML = error[0].childNodes[0].nodeValue
				document.getElementById("savearticleerror").style.display = "block"
				document.getElementById("savearticlesaving").style.display = "none"
			}else{			
				document.getElementById("savearticleerror").style.display = "none"
				document.getElementById("savearticlesaving").style.display = "none"
				document.getElementById("savearticlesaving").style.display = "none"
				document.getElementById("savearticleinnertext").style.display = "none"
				document.getElementById("savearticlesuccess").style.display = "block"
			}
		},
		onError: function (doc){
			document.getElementById("savearticlesaving").style.display = "none"
			document.getElementById("savearticleerror").innerHTML = "An error occurred while Saving. Please try again."
			document.getElementById("savearticleerror").style.display = "block"
		}
	})
	
	return false
}

function movearticleSave(){
	var selectedNode = movearticleTree.findAll(function(node){return node.data.isSelected})
	var str = ""
	
	var folderId = selectedNode[0].data.attributes.folderId
	document.getElementById("folderid_input").value = folderId
	showProcess("Moving...")
//	"move_selected_items"
	document.getElementById("move_delete_form").submit();
	return false;	
}


function deleteArticle(id){
	if(window.confirm("Are you sure want to delete this article?")){	
		var form = document.getElementById("move_delete_form")
		form.action.value = "delete_selected_items"
		var inputs = form.getElementsByTagName("input")
		for(var i = 0; i< inputs.length; i++){
			if(inputs[i].getAttribute("type").toLowerCase() == "checkbox"){
				if(inputs[i].getAttribute("name") == "chk_"+id){
					inputs[i].checked = true
				}else{
					inputs[i].checked = false
				}
			}
		}		
		form.submit()
	}
	return false;
}

function savearticleCancel(){
	saveArticleWindow.hide()
	return false
}
function movearticleCancel(){
	moveArticleWindow.hide()
	return false
}

function savearticleNewFolder(){
	
	var selectedNode = savearticleTree.findAll(function(node){return node.data.isSelected})
	
	var newFolderName = "New folder"
	var folderIndex = 0
	
	while(true){
		var tmpNodes = savearticleTree.findAll(function(node){return node.data.label == newFolderName})
		if(tmpNodes.length == 0){
			break;
		}
		folderIndex++
		newFolderName = "New folder(" + folderIndex + ")"
	}
	if(!window.pageType){
		pageType = "pubmed"
	}
	var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=createfolder&previd=" + selectedNode[0].id + "&name=" + newFolderName + "&rand=" + Math.random()
	document.getElementById("savearticlesaving").innerHTML = "Creating...";
	document.getElementById("savearticlesaving").style.display = "block"
	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){			
			var tmp = doc.getElementsByTagName("folderName")
			var folderName = tmp[0].childNodes[0].nodeValue

			tmp = doc.getElementsByTagName("folderId")
			var folderId = tmp[0].childNodes[0].nodeValue

			tmp = doc.getElementsByTagName("prevId")
			var prevId = tmp[0].childNodes[0].nodeValue
			
			var selectedNode = savearticleTree.getNode(prevId)
			
			selectedNode.insertAfter({ 
         		label: newFolderName,
                attributes: { folderId: folderId },
                isSelected: true
                })
                
            savearticleRename()
            document.getElementById("savearticlesaving").style.display = "none"    
		},
		onError: function(e){
			document.getElementById("savearticlesaving").style.display = "none"
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=4; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
	return false	
}
function savearticleRename(){

	var selectedNode = savearticleTree.findAll(function(node){return node.data.isSelected})
	selectedNode = selectedNode[0]
	var label = document.getElementById("zpTreetreeNode"+selectedNode.id+"LabelElement")
	if(label.getElementsByTagName("input").length == 0){        		
        			
        			savearticleTree.keyboardNavigation = false
        			var oldValue = label.innerHTML
        			
        			while(label.childNodes.length > 0){
        				label.removeChild(label.childNodes[0])
        			}
        			var input = document.createElement("input")
        			input.className = "rename2"
        			input.setAttribute("value", oldValue)
        			input.setAttribute("oldvalue", oldValue)
        			input.setAttribute("nodeid", selectedNode.id)
        			if(document.all){
        				input.onkeypress = function(){renameInlineKeyPress(event, this)}
        				input.onblur = function(){renameInline(this)}
        			}else{
        				input.setAttribute("onkeypress", "renameInlineKeyPress(event, this)");
        				input.setAttribute("onblur", "renameInline(this)")
        			}
        			label.appendChild(input)
        			input.focus();
        			input.select();
        		}        		
	
	return;	
}
function savearticleDelete(){
	var allNode = savearticleTree.findAll(function(node){return true})
	if(allNode.length == 1){
		alert("You can't delete the last folder.")
		return;
	}
	
	
	var selectedNode = savearticleTree.findAll(function(node){return node.data.isSelected})	
	if(!confirm('Are you sure you want to delete the folder "' + document.getElementById("zpTreetreeNode" + selectedNode[0].id + "LabelElement").innerHTML + '"? \nAll the articles it contains will be permanently deleted.')){
		return;
	}
	if(!window.pageType){
		pageType = "pubmed"
	}
	var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=deletefolder&folderId=" + selectedNode[0].data.attributes.folderId + "&id=" + selectedNode[0].id + "&rand=" + Math.random()
	document.getElementById("savearticlesaving").innerHTML = "Deleting...";
	document.getElementById("savearticlesaving").style.display = "block"
	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){			
			tmp = doc.getElementsByTagName("id")
			var folderId = tmp[0].childNodes[0].nodeValue
			savearticleTree.removeChild(folderId)
			var allNode = savearticleTree.findAll(function(node){return true})		
			allNode[0].select()
			//savearticleTree.select(allNode[0].id)
			//selectedNode.rename(folderName)
            document.getElementById("savearticlesaving").style.display = "none" 
		},
		onError: function(e){
			document.getElementById("savearticlesaving").style.display = "none"
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=6; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
	return false		
}


function closeSaveArticleWindow(){
	saveArticleWindow.hide()
}
function closeMoveeArticleWindow(){
	moveArticleWindow.hide()
}

function savearticleInitWindow(){
	//TODO:
	//document.getElementById("savearticlediv").style.display = "block"
	document.getElementById("savearticleerror").style.display = "none"
	document.getElementById("savearticlesaving").style.display = "none"
	document.getElementById("savearticlesaving").style.display = "none"
	document.getElementById("savearticleinnertext").style.display = "block"
	document.getElementById("savearticlesuccess").style.display = "none"	
}
function movearticleInitWindow(){
	//TODO:
	//document.getElementById("movearticlediv").style.display = "block"
	document.getElementById("movearticleerror").style.display = "none"
	document.getElementById("movearticlesaving").style.display = "none"
	document.getElementById("movearticlesaving").style.display = "none"
	document.getElementById("movearticleinnertext").style.display = "block"
	document.getElementById("movearticlesuccess").style.display = "none"
	
}


var savearticlePMID = -1
function saveArticle(pmid, title){
	document.getElementById("savearticlename").innerHTML = title
	savearticlePMID = pmid
	if(saveArticleWindow == null){
		initSaveArticleFunc()
	}
	savearticleInitWindow()
	saveArticleWindow.show();	
	return false
}

function moveToArticles(obj){
	while(obj.nodeName != "FORM"){
		obj = obj.parentNode
	}
	var inputs = obj.getElementsByTagName("input")
	var submit = false;
	for(var i = 0; i< inputs.length; i++){
		if(inputs.item(i).getAttribute("type")=="checkbox"){
			if(inputs.item(i).checked == true){
				submit = true
				break
			}
		}		
	}
	if(submit == false){
		showMessage("No items selected", "warning", 60)
	}else{
		showProcess("Moving...")
		obj.action.value = "move_selected_items"
		//document.getElementById("savearticlename").innerHTML = "title"		
		if(moveArticleWindow==null){
			initMoveArticleFunc()
		}
		movearticleInitWindow()
		moveArticleWindow.show();	
		
	}
	return false
}


function showPleaseLoginPopup(event, obj){
	
	while(obj && obj.nodeName != "DIV"){
		obj = obj.previousSibling
	}
	obj.style.display = 'block';
	return false
}
function hidePleaseLoginPopup(event, obj){
	var divObj = null
	var aObj = null
	if(obj.nodeName == "DIV"){
		divObj = obj
		while(obj && obj.nodeName != "A"){
			obj = obj.nextSibling
		}
		aObj = obj
	}else{
		aObj = obj
		while(obj && obj.nodeName != "DIV"){
			obj = obj.previousSibling
		}
		divObj = obj
	}
	if(divObj.style.display == "none"){
		return
	}
	
	
	var needToHide = true
	var pos = getPosition(event)
	
	if(inElem(aObj, pos)){		
		return true;
	}
	if(inElem(divObj, pos)){
		return;
	}
	if(needToHide){
		divObj.style.display = "none"
	}
}

function processHideBottomBox(event, obj){
	var pos = getPosition(event)
	if(inElem(obj, pos)){
		return;
	}

	var folderDiv = null
	var popupDiv = null
	if(obj.className == 'bottombox'){
		folderDiv = obj.previousSibling
		popupDiv = obj
		obj = obj.previousSibling
	}else{
		folderDiv = obj
		obj = obj.nextSibling
		while(obj.nodeName != 'DIV'){
			obj = obj.nextSibling	
		}
		popupDiv = obj		
	}
	
	if(inElem(obj, pos)){		
		return;
	}
	
	var pos = folderDiv.className.lastIndexOf(" ")
	folderDiv.className = folderDiv.className.substring(0, pos);//'foldertbl foldertbl-default'	
	popupDiv.style.display = 'none'
	
}

function processHideBottomBox1(event, obj){
	
	var pos = getPosition(event)
	if(inElem(obj, pos)){		
		return;
	}

	var folderDiv = null
	var popupDiv = null
	if(obj.className == 'bottombox'){		
		popupDiv = obj
		obj = obj.previousSibling
		while(obj.nodeName != 'DIV'){
			obj = obj.previousSibling	
		}		
		folderDiv = obj
	}else{
		
		folderDiv = obj
		obj = obj.nextSibling
		while(obj.nodeName != 'DIV'){
			obj = obj.nextSibling	
		}
		popupDiv = obj		
	}
	
	if(inElem(obj, pos)){	
		return;
	}
	
	var pos = folderDiv.className.lastIndexOf(" foldertbl-active")
	if(pos > 0){		
		folderDiv.className = folderDiv.className.substring(0, pos);//'foldertbl foldertbl-default'	
		popupDiv.style.display = 'none'
	}
	
}


var prevSelectedFolder = null;
function processShowBottomBox(event, obj){	
	if(prevSelectedFolder && prevSelectedFolder != obj){
			//var pos = folderDiv.className.lastIndexOf(" ")
			//folderDiv.className = folderDiv.className.substring(0, pos);//'foldertbl foldertbl-default'	
			//popupDiv.style.display = 'none'
		var pos = prevSelectedFolder.className.lastIndexOf(" foldertbl-active")
		if(pos > 0){		
			prevSelectedFolder.className = prevSelectedFolder.className.substring(0, pos);//'foldertbl foldertbl-default'	
			var popupdiv = prevSelectedFolder.nextSibling
			while(popupdiv.nodeName != "DIV"){
				popupdiv = popupdiv.nextSibling
			}
			popupdiv.style.display = 'none'
		}		
	}
	if(obj.className.indexOf('foldertbl-active') == -1){
		obj.className = obj.className + " foldertbl-active"
		prevSelectedFolder = obj;
	}
}
function showLinkBox(event, obj){
	obj = obj.nextSibling;
	while(obj.nodeName != "DIV"){
		obj = obj.nextSibling;
	}
	obj.style.display = "block"
	return false;
}

function processClickFolder(event, obj, id){
	
	var pos = getPosition(event)
	var aLinks = obj.getElementsByTagName("a")
	var aObj = aLinks[0]
	if(inElem(aObj, pos)){
		showLinkBox(event, obj)
		return;
	}
	var inputs = obj.getElementsByTagName("input")
	if(inputs.length>0){
		input = inputs[0]
		if(inElem(input, pos)){			
			return;
		}
	}
	var baseUrl = 'pmsavedarticles.php'
	if(window.pageType){
		baseUrl = 'cabssavedarticles.php'
	}
	
	if(id){	
		document.location.href = baseUrl + "?folderid="+id+"&p=1"
	}else{
		var divs = obj.getElementsByTagName("div")
		for(var i = 0; i< divs.length; i++){
			if(divs[i].className == "name"){
				var id = divs[i].id.substring(11)
				document.location.href = baseUrl + "?folderid="+id+"&p=1"
				return false
			}
		}
	}
	return false
}




function pmsavedarticlesRename(obj, folderId){
	while(obj.className != 'bottombox'){
		obj = obj.parentNode
	}
	obj = obj.previousSibling
	while(obj.nodeName != "DIV"){
		obj = obj.previousSibling
	}
	var divs = obj.getElementsByTagName("div")
	for(var i = 0; i< divs.length; i++){
		if(divs[i].className == 'name'){
			var currentName = divs[i].innerHTML
			while(divs[i].childNodes.length>0){
				divs[i].removeChild(divs[i].childNodes[0])
			}
			var input = document.createElement("input")
			input.setAttribute("value", currentName)
			input.className = "rename"
			input.setAttribute("folderId", folderId)
			input.setAttribute("oldname", currentName)
			divs[i].appendChild(input);
			if(document.all){
				input.onkeypress = function (){ return processRenameKeyPress(event, this)}	
				input.onblur = function(){return processRename(this)}
			}else{
				input.setAttribute("onkeypress", "return processRenameKeyPress(event, this)")
				input.setAttribute("onblur", "return processRename(this)")
			}
			input.focus();
			input.select();
			break;
		}
	}
	return false;
}
function processRenameKeyPress(e, obj){
	var e = e || window.event
	
	if(e.keyCode){
		keyId = e.keyCode;
	}
	else{
		keyId = e.charCode;
	}
	
	if(keyId == 13){
		processRename(obj)
	}
	return true;
}

function processRename(obj){
	
	var input = obj
	
	var div = obj.parentNode;
	var id = div.id.substring(11)
	
	var value = input.value
	div.removeChild(input)
	div.appendChild(document.createTextNode(value));
	
	if(obj.value == obj.getAttribute("oldname")){
		return true
	}
	if(!window.pageType){
		pageType = "pubmed"
	}
	var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=renamefolder&id=" + id + "&name=" + value+"&folderId="+obj.getAttribute("folderId") + "&oldname="+obj.getAttribute("oldname") + "&rand" + Math.random();
	showProcess("Renaming...");
	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			
			var ids = doc.getElementsByTagName("id")
			var id = ids[0]
			id = id.childNodes[0].nodeValue
			var values = doc.getElementsByTagName("folderName")
			var value = values[0]
			value = value.childNodes[0].nodeValue
			
			if(id == currentfolderid){
				document.getElementById("folderName").innerHTML = value
			}
			
			var errors = doc.getElementsByTagName("error")
			
			if(errors.length > 0){				
				var d = document.getElementById("foldername_" + id)
				while(d.childNodes.length > 0){
					d.removeChild(d.childNodes[0])
				}
				d.appendChild(document.createTextNode(value))
				//document.getElementById("foldername_" + id).innerHTML = value
				showMessage(errors[0].childNodes[0].nodeValue, "error", 120)
			}else{
				showMessage("Folder has been renamed successfully.", "warning", 60)
			}
			//TODO: rename title if necessary
			hideProcess()
		},
		onError: function(e){
			hideProcess()
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=7; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})
	return true;
}

function pmsavedarticlesDelete(obj, folderId){
	if(confirm("Are you sure want to delete this folder? \n (All articles contained in that folder will be deleted too.)")){
		if(!window.pageType){
			pageType = "pubmed"
		}
		var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=deletefolder&id=" + folderId + "&folderId=" + folderId + "&rand=" + Math.random();
		showProcess("Deleting...");
		Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			
			var ids = doc.getElementsByTagName("id")
			var id = ids[0]
			id = id.childNodes[0].nodeValue
			var obj = document.getElementById("folderitem_" + id)
			obj.parentNode.removeChild(obj)
			
			showMessage("Folder has been removed.", "error", 120)
			
			hideProcess()
			if(folderId == currentfolderid){
				document.location.href='pmsavedarticles.php?p=1'
			}
			
			//to do: go to another folder, if necessary
		},
		onError: function(e){
			hideProcess()
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				alert("error=8; " + e.errorCode + " -- " + e.errorDesctiption)
			}
		}
	})		
	}
	return false
}
function processCollapse(obj){
	var foldercontainer = document.getElementById("foldercontainer")
	if(foldercontainer.style.display == "none"){
		foldercontainer.style.display = "block"
		obj.innerHTML = "Collapse"
		obj.className = "collapse"
	}else{
		foldercontainer.style.display = "none"
		obj.innerHTML = "Expand"
		obj.className = "expand"
	}
	return false
}
function processCreateFolder(){
	if(!window.pageType){
		pageType = "pubmed"
	}
	var sUrl = "pubmed/foldertree.php?type=" + pageType + "&action=createfolder&rand=" + Math.random();
	showProcess("Creating...");
	Zapatec.Transport.fetchXmlDoc({
	url: sUrl,
	onLoad: function (doc){
		showMessage("Folder created successfully.", "warning", 60)

		var ids = doc.getElementsByTagName("folderId")		
		var id = ids[0].childNodes[0].nodeValue
		var names = doc.getElementsByTagName("folderName")
		var name = names[0].childNodes[0].nodeValue
		
		

		
		
		
	var folteritem = document.createElement("div")
	folteritem.className = 'folteritem'
	folteritem.setAttribute("id", "folderitem_" + id)
	
	var foldertbl = document.createElement("div")
	foldertbl.className = "foldertbl"
	
	if(document.all){
		foldertbl.onmouseover = function(){return processShowBottomBox(event, this)}
		foldertbl.onmouseout = function(){return processHideBottomBox(event, this);}
		foldertbl.onclick = function(id){processClickFolder(event, this)}
	}else{
		foldertbl.setAttribute("onmouseover", "return processShowBottomBox(event, this);")
		foldertbl.setAttribute("onmouseout", "return processHideBottomBox(event, this);")
		foldertbl.setAttribute("onclick", "processClickFolder(event, this, " + id + ")")
	}
	var a = document.createElement("a")
	a.setAttribute("href", "#")
	a.className = "expandlink"
	a.appendChild(document.createTextNode(" "))
	if(document.all){
		
		a.onclick = function() {return false}
	}else{
		a.setAttribute("onclick", "return false")
	}
	foldertbl.appendChild(a)
	
	var foldername = document.createElement("div")
	foldername.className = "name"
	foldername.setAttribute("id", "foldername_" + id)
	foldername.appendChild(document.createTextNode(name))
	foldertbl.appendChild(foldername)
	
	var count = document.createElement("div")
	count.className = "count"
	
	count.appendChild(document.createTextNode("(0)"))
	foldertbl.appendChild(count)
	
	
	folteritem.appendChild(foldertbl)
	
	var bottombox = document.createElement("div")
	bottombox.className = "bottombox"
	if(document.all){		
		bottombox.onmouseout = function (){processHideBottomBox1(event, this)}
	}else{
		bottombox.setAttribute("onmouseout", "processHideBottomBox1(event, this)")
	}
	
	
	var net = document.createElement("div")
	net.className = "net"
	bottombox.appendChild(net)
	
	var linkbox = document.createElement("div")
	linkbox.className = "linkbox"
	
	
	
	var a = document.createElement("a")
	a.setAttribute("href", "#")
	a.className = "rename"
	if(document.all){
		//a.onclick = function() {eval("pmsavedarticlesRename(this, " + id+ ")"); return false;}
		a.onclick = function(){pmsavedarticlesRename(this, id); return false}
	}else{
		a.setAttribute("onclick", "return pmsavedarticlesRename(this, " + id+ ")")
	}
	a.appendChild(document.createTextNode("Rename"))
	linkbox.appendChild(a)
	var aRename = a
	
	a = document.createElement("a")
	a.setAttribute("href", "#")
	a.className = "delete"
	if(document.all){
		
		a.onclick = function(){return pmsavedarticlesDelete(this, id)}
	}else{
		a.setAttribute("onclick", "return pmsavedarticlesDelete(this, " + id + ")")
	}
	a.appendChild(document.createTextNode("Delete"))
	linkbox.appendChild(a)
	

	a = document.createElement("a")
	a.setAttribute("href", "#")
	a.className = "export"
	if(document.all){		
		a.onclick = function(){return exportdialogsmallWindowShow(id)}
	}else{
		a.setAttribute("onclick", "return exportdialogsmallWindowShow(" + id + ")")
	}
	a.appendChild(document.createTextNode("Export"))
	linkbox.appendChild(a)
	
	
	//<a href="#" class="rename" onclick="return pmsavedarticlesRename(this, {$res.id})">Rename</a>
	//<a href="#" class="delete" onclick="return pmsavedarticlesDelete(this, {$res.id})">Delete</a>

	bottombox.appendChild(linkbox)
	
	folteritem.appendChild(bottombox)
	var foldercontainer = document.getElementById("foldercontainer")
	var brs = foldercontainer.getElementsByTagName("br")
	var br = brs[0]
	foldercontainer.insertBefore(folteritem, br)
	
	pmsavedarticlesRename(aRename, id)		
		hideProcess()
		
		//to do: go to another folder, if necessary
	},
	onError: function(e){
		hideProcess()
		switch(e.errorCode){
		case 0:
			//it is OK
			break;
			default:
			alert("error=8; " + e.errorCode + " -- " + e.errorDesctiption)
		}
	}
	})		
	return false
}



function preloadImages(imgs){
	for(var i = 0; i< imgs.length; i++){
		var imgObj = new Image();
		imgObj.src = imgs[i]
	}
}

function loadMostPopular(){
	var mostPopularBox = document.getElementById("mostpopular")
	var mostPopularBoxCabs = document.getElementById("mostpopularcabs")
	var baseURL = "";
	var isLong = false;
	if(!mostPopularBox && !mostPopularBoxCabs){
		var mostPopularBox = document.getElementById("mostpopular-long");
		if(mostPopularBox){
			isLong = true;
		}else{
			return false
		}
	}	
	var action = mostPopularBox ? "get" : "getcabs";
	if(action == "get"){
		return;
	}
	if(mostPopularBoxCabs){
		baseURL = "cabsabstract.php?id="
		mostPopularBox = mostPopularBoxCabs;
	}else{
		baseURL = "pmabstract.php?pmid="
	}
	var sUrl = "pubmed/pm/PMMostPopular.php?action=" + action + "&rand=" + Math.random();	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			var categories = doc.getElementsByTagName("category")
			mostPopularBox.removeChild(document.getElementById("mostpopular-loading"));
			
			var categoriesCount = isLong?1:categories.length;
			for(var i = 0; i< categoriesCount; i++){
				var mostPopularChild = document.createElement("div");
				mostPopularChild.className = "mostPopularChild-box"
				
				var h2 = document.createElement("h2");
				h2.appendChild(document.createTextNode(categories[i].getAttribute("title")))
				if(isLong == false){
					mostPopularChild.appendChild(h2);
				}
				
				var links = categories[i].getElementsByTagName("article");
				for(var j = 0; j< links.length; j++){
					var a = document.createElement("a")
					a.setAttribute("href", baseURL + links[j].getAttribute("id"))
					var title = links[j].getAttribute("title")
					a.setAttribute("fullName", title);
					var info = links[j].getAttribute("info");
					if(document.all){
						a.setAttribute("fullTitle", title + "<div class=\"mostpopular-info\">" + info + "</div>")
						if(info){
							a.onmousemove = function (){return showHint(event, this.getAttribute("fullTitle"))}
						}else{
							a.onmousemove = function (){return showHint(event, this.getAttribute("fullTitle"))}
						}
						a.onmouseout = function (){return hideHint();}
					}else{
						var info = links[j].getAttribute("info");
						
						if(info){
							a.setAttribute("onmousemove", "return showHint(event, '" + title.replace("'", "\\'") + "<div class=\"mostpopular-info\">" + info + "</div>"+ "')")
						}else{
							a.setAttribute("onmousemove", "return showHint(event, '" + title.replace("'", "\\'") + "')")
						}
						a.setAttribute("onmouseout", "return hideHint();")
					}
					var maxLength = isLong?40:25;
					if(title.length > maxLength){
						title = title.substring(0, maxLength - 3) + "...";
					}
					a.appendChild(document.createTextNode(title))
					mostPopularChild.appendChild(a)
				}
				var a = document.createElement("a")
				a.appendChild(document.createTextNode("View all"));
				a.setAttribute("href", categories[i].getAttribute("url"))
				a.className = "seeallmostpopular"				
				mostPopularChild.appendChild(a)
				mostPopularBox.appendChild(mostPopularChild)
			}
		},
		onError: function(e){
			switch(e.errorCode){
                case 0:
                    //it is OK
                    break;
				default:
                    alert("error with pmmostpopular");
			}
		}
	})
}
function showHint(e, msg, width, right){
	e = e ? e : window.event;	
	var pos = getPosition(e)
	var hintObj = document.getElementById("hint")
	if(width){
		hintObj.style.width = "" + width + "px"
	}else{
		hintObj.style.width = "300px"
	}
	hintObj.innerHTML = msg
	if(right){		
		hintObj.style.left = pos.x + 3 - parseInt(hintObj.style.width)+ "px"
		hintObj.style.top = pos.y + 12 + "px"
		hintObj.style.display = "block"		
	}else{
		hintObj.style.left = pos.x + 3 + "px"
		hintObj.style.top = pos.y + 12 + "px"
		hintObj.style.display = "block"
	}
	
}
function hideHint(){
	document.getElementById("hint").style.display = "none"
}
function errorReport(msg){
	return true;
}
function loadCitedByLinks(){	
	if(!window.citedByRequests){
		return false;
	}	
	var sUrl = "pubmed/getscopuscount.php?" + Math.random();;	
	var params = "req=" + citedByRequests;	
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			var counts = doc.getElementsByTagName("count");
			if(counts.length > 0){
				for(var i = 0; i < counts.length; i++){
					var obj = document.getElementById("linkstbl_" + counts[i].getAttribute("pmid"))
					if(obj){
						var tr = obj.getElementsByTagName("tr").item(0)				
						var td = document.createElement("td")
						var a = document.createElement("a")
						a.setAttribute("href", "pmcitedby.php?eid=" + counts[i].getAttribute("eid") + "&pmid=" + counts[i].getAttribute("pmid"))
						a.setAttribute("target", "_blank")
						a.className = "citedby"
						a.appendChild(document.createTextNode("Cited by (" + counts[i].getAttribute("count") + ")"))
						td.appendChild(a)
					
						var pdfTD = null;
						for(var j = 0; j< tr.childNodes.length; j++){
							if(tr.childNodes.item(j).nodeName!="TD"){
								continue;
							}
							var aList = tr.childNodes.item(j).getElementsByTagName("a")
							if(aList.length>0){
								if(aList.item(0).className=="pdf"){
									pdfTD = tr.childNodes.item(j);
									break;
								}
							}
						}
						tr.insertBefore(td, pdfTD)
						continue;
					}
					
				}
			}
			else{
				var citedByCountListTags = doc.getElementsByTagName("citedByCountList");
				if(citedByCountListTags.length == 0){
					return;
				}
				var citedByCountList = citedByCountListTags.item(0)
				for(var i = 0; i< citedByCountList.childNodes.length; i++){
					var clientCRF = citedByCountList.childNodes.item(i).getElementsByTagName("clientCRF").item(0).childNodes.item(0).nodeValue;
					var linkData = citedByCountList.childNodes.item(i).getElementsByTagName("linkData").item(0)
					var count = linkData.getElementsByTagName("citedByCount").item(0).childNodes.item(0).nodeValue
					var eid = linkData.getElementsByTagName("eid").item(0).childNodes.item(0).nodeValue
				

					var obj = document.getElementById("linkstbl_" + clientCRF)
					if(obj){
						var tr = obj.getElementsByTagName("tr").item(0)				
						var td = document.createElement("td")
						var a = document.createElement("a")
						a.setAttribute("href", "pmcitedby.php?eid=" + eid + "&pmid=" + clientCRF)
						a.setAttribute("target", "_blank")
						a.className = "citedby"
						a.appendChild(document.createTextNode("Cited by (" + count + ")"))
						td.appendChild(a)
					
						var pdfTD = null;
						for(var j = 0; j< tr.childNodes.length; j++){
							if(tr.childNodes.item(j).nodeName!="TD"){
								continue;
							}
							var aList = tr.childNodes.item(j).getElementsByTagName("a")
							if(aList.length>0){
								if(aList.item(0).className=="pdf"){
									pdfTD = tr.childNodes.item(j);
									break;
								}
							}
						}
						tr.insertBefore(td, pdfTD)
						continue;
					}
				}
			}
			return;
		},
		method: 'POST',
		content: params,
		onError: function(e){
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				errorReport(e)
			}
		}
	})
}
function loadPDFLinks(){
	if(!window.pdfRequestUrls){
		return false;
	}	
	var sUrl = "pubmed/get.php?action=pdficons";
	var params = "req=" + pdfRequestUrls;
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			var items = doc.getElementsByTagName("item");			
			for(var i = 0; i < items.length; i++){
				var obj = document.getElementById("linkstbl_" + items.item(i).getAttribute("pmid"))
				var tr = obj.getElementsByTagName("tr").item(0)				
				var td = document.createElement("td")
				var a = document.createElement("a")
				a.setAttribute("href", items.item(i).getAttribute("url"))
				a.setAttribute("target", "_blank")
				a.className = "pdf"
				a.appendChild(document.createTextNode("View PDF Direct"))
				td.appendChild(a)
				tr.appendChild(td)
				
			}			
		},
		method: 'POST',
		content: params,
		onError: function(e){
			switch(e.errorCode){
			case 0:
				//it is OK
				break;
				default:
				errorReport(e)
			}
		}
	})
}

function init(){
	if(msg_error){
		showMessage(msg_error, "error", 120)
	}else if(msg_warning){
		showMessage(msg_warning, "warning", 60)
	}
	loadMostPopular();
	loadCitedByLinks();
	loadPDFLinks();
	var imgs = Array("images/msg-login.png"/*, "http://biowizard.personifi.com"*/);
	preloadImages(imgs)
}


function processPageClick(obj, url){
	while(obj.nodeName != "TABLE"){
		obj = obj.parentNode
	}
	var inputs = obj.getElementsByTagName("input")
	var input = inputs[1]
	

	if(!url){
		url = "pmsearch.php"
	}
	
	
	if(url == 'pmsearch.php'){
		if(type=="all"){
			document.location.href="pmsearch.php?q=" + q +"&p=" + input.value
		}
		else{
			document.location.href="pmsearch.php?q=" + q +"&p=" + input.value + "&type=" + type
		}
	}else{
		document.location.href = url + "?p=" + input.value
	}
	return true;
}

/**
* Promote functions
*/

var promoteWindow = null;
var promoteExistsWindow = null;
function initPromoteFunc(){
	promoteWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners:{
			onShow: function(){
				
				document.getElementById("promotediv").style.display = "block"
				var state = promoteWindow.getState();
				var left = (document.body.clientWidth - state.width)/2				
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2				
				top = 50;
				promoteWindow.setScreenPosition(left, top)
			}
		},
		align: "CR",
		hideOnClose: true,
		fixed: false,
		width: 500,
		height: 580,
		title: 'Promote article (You are logged on as "' + userLogin + '")',
		raiseOnlyOnTitle: false,
		initialState: "hidden",
		divContent: "promotediv",
		left: -3000
	})
	//document.getElementById("promotediv").style.display = "block"
}
function initPromoteExistsFunc(){
	promoteExistsWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners:{
			onShow: function(){
				document.getElementById("promotedivexist").style.display = "block"
				var state = promoteExistsWindow.getState();
				var left = (document.body.clientWidth - state.width)/2
				var top = 200;
				promoteExistsWindow.setScreenPosition(left, top)
			}
		},
		hideOnClose: true,
		fixed: true,
		width: 500,
		height: 130,
		title: 'Promote article (You are logged on as "' + userLogin + '")',
		raiseOnlyOnTitle: false,
		initialState: "hidden",
		divContent: "promotedivexist",
		left: -3000
	})
	
}
function promoteExistsCancel(){
	promoteExistsWindow.hide();
	return false
}
function promotExistsGo(obj){
	while(obj.nodeName != "FORM"){
		obj = obj.parentNode
	}
	var pmid = obj.pmid.value
	document.location.href="story.php?pmid="+pmid
	return false;
}

function promoteArticleActivate(authors, desc, secondLine, thirdLine, pmid){
	showProcess("loading...");
	
	//checking if this article allready pmomoted
	var sUrl = "pubmed/promote.php?action=check&pmid=" + pmid + "&rand=" + Math.random();	
	Zapatec.Transport.fetchXmlDoc({
	url: sUrl,
	onLoad: function (doc){		
		hideProcess();
		var value = doc.documentElement.childNodes.item(0).nodeValue
		if(value == "false"){
			//alert(2)
			document.getElementById("promote-success").style.display = "none"
			document.getElementById("promote-all").style.display = "block"
			
			document.getElementById("promote-authors").innerHTML = authors
			document.getElementById("promote-desc").innerHTML = desc
			document.getElementById("promote-secondline").innerHTML = secondLine
			document.getElementById("promote-thirdline").innerHTML = thirdLine
			//reset form
			var promoteForm = document.getElementById("promoteForm")
			promoteForm.reset();
			promoteForm.pmid.value = pmid	
			//document.getElementById("promoteExistsSuccess").action = "story.php?pmid="+pmid
			document.getElementById("promoteExistsSuccess").pmid.value = pmid
			document.getElementById("promote-promoting").style.display = "none"
			if(promoteWindow == null){		
				initPromoteFunc();
			}
			promoteWindow.show()
			
		}else{
			if(!promoteExistsWindow){
				initPromoteExistsFunc()
			}
			document.getElementById("promoteExistsForm").pmid.value = pmid
			promoteExistsWindow.show()
		}
	},
	onError: function(e){				
		hideProcess();
		switch(e.errorCode){
		case 0:
			//it is OK
			break;
			default:			
			alert("error=9; " + e.errorCode + " -- " + e.errorDesctiption)
		}
	}
	})		

	return false
}

function promoteArticleCancel(){
	promoteWindow.hide();
}

function promoteArticle(){
	var promoteForm = document.getElementById("promoteForm")
	var pmid = promoteForm.pmid.value
	var category = null;
	var inputs = promoteForm.getElementsByTagName("input")
	for(var i = 0; i< inputs.length; i++){
		if(inputs[i].getAttribute("type") == "radio"){
			if(inputs[i].checked){
				category = inputs[i].value
				break;
			}
		}
	}	
	if(category == null){
		alert("Please, select a category.")
		return false
	}
	
	//var sUrl = "pubmed/promote.php?action=promote&pmid=" + pmid + "&category=" + category + "&rand=" + Math.random();
	//TODO:
	var sUrl = "promote_action.php?pmid=" + pmid + "&category=" + category
	var sUrl = "pubmed/promote.php?action=promote&pmid=" + pmid + "&category=" + category + "&rand=" + Math.random();
	document.getElementById("promote-promoting").style.display = "block"
	
	Zapatec.Transport.fetchXmlDoc({
	url: sUrl,
	onLoad: function (doc){		
		//check for errors
		document.getElementById("promote-success").style.display = "block"
		document.getElementById("promote-all").style.display = "none"
		//
		//promoteWindow.hide();
		//document.getElementById("promoteExistsSuccess").submit();
		
	},
	onError: function(e){		
		switch(e.errorCode){
		case 0:
			//it is OK
			break;
			default:
			alert("error=10; " + e.errorCode + " -- " + e.errorDesctiption)
		}
	}
	})		
	
	return false
}


function exportToEndNotes(folderId){
	var span = document.getElementById("linktoEndNote")
	span.innerHTML = "Exporting...";
	span.style.display = "inline";
	
	//var folderId = -1;
	var sUrl = "pubmed/endnotes.php?folderid=" + folderId + "&rand=" + Math.random();
	
	
	Zapatec.Transport.fetchXmlDoc({
	url: sUrl,
	onLoad: function (doc){		
		var fileName = doc.documentElement.childNodes.item(0).nodeValue
		span.innerHTML = '<a href="' + fileName + '" target="_blank">Download</a>'
		
	},
	onError: function(e){		
		switch(e.errorCode){
		case 0:
			//it is OK
			break;
			default:
			alert("error=11; " + e.errorCode + " -- " + e.errorDesctiption)
		}
	}
	})	
	return false;	
}
var exportWindow = null;
function initExportFunc(){
	exportWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners: {
			onClose: function(){},
			onShow: function (){
				document.getElementById("export-div").style.display = "block";
				document.getElementById("export-exporting").style.display = "none"
				document.getElementById("export-error").style.display = "none"
				document.getElementById("export-success").style.display = "none"
				document.getElementById("export-innertext").style.display = "block"
				
				var state = exportWindow.getState();
				var left = (document.body.clientWidth - state.width)/2				
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2				
				top = 100;
				exportWindow.setScreenPosition(left, top)
			}
		},		
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 500,
		height: 435,
		title: "Export to EndNote",
		
		divContent: "export-div",
		raiseOnlyOnTitle:false, 
		initialState: "hidden",
		left: -3000
    });    
    
	exportTree = new Zapatec.Tree({
    	tree: "exporttree",
        highlightSelectedNode: true,
        initLevel: 2,        
        defaultIcons: "myicon", //!!!
        editable: false, //- bug with zapatec
        selectable: false,
        keyboardNavigation: true,
        selectMultiple: true,
        deselectSelected: true
    });	
    initTree(exportTree)
}
function closeExportWindow(){
	exportWindow.close()
}

function customExportToEndNotes(){
	if(exportWindow == null){		
		initExportFunc()
	}	
	exportWindow.show();
	return false
}
function exportExport(){
	var selectedNodes = exportTree.findAll(function(node){return node.data.isSelected})
	var folderIds = "";
	for(var i = 0; i< selectedNodes.length; i++){
		if(i > 0){
			folderIds += ",";
		}
		folderIds += selectedNodes[i].data.attributes.folderId
	}	

	var span = document.getElementById("linktoEndNote")
	span.innerHTML = "Exporting...";
	span.style.display = "inline";
	document.getElementById("export-exporting").style.display = "block"
	
	var sUrl = "pubmed/endnotes.php?folderid=" + folderIds + "&rand=" + Math.random();
	Zapatec.Transport.fetchXmlDoc({
	url: sUrl,
	onLoad: function (doc){		
		var fileName = doc.documentElement.childNodes.item(0).nodeValue
		span.innerHTML = '<a href="' + fileName + '" target="_blank">Download</a>'
		linktoEndNotePopup = document.getElementById("linktoEndNotePopup");
		linktoEndNotePopup.innerHTML = '<a href="' + fileName + '" target="_blank">Download</a>'
		document.getElementById("export-exporting").style.display = "none"
		document.getElementById("export-error").style.display = "none"
		document.getElementById("export-success").style.display = "block"
		document.getElementById("export-innertext").style.display = "none"

	},
	onError: function(e){		
		switch(e.errorCode){
		case 0:
			//it is OK
			break;
			default:
			alert("error=12; " + e.errorCode + " -- " + e.errorDesctiption)
		}
	}
	})	
	return false;	
}

var exportdialogWindow = null;
var exportdialogsmallWindow = null;
function exportdialogWidnowInitFunc(){
	exportdialogWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners: {
			onClose: function(){},
			onShow: function (){
				document.getElementById("exportdialog").style.display = "block"
				//initEmailWindow();
				var state = exportdialogWindow.getState();
				var left = (document.body.clientWidth - state.width)/2
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2
				top = 100;
				exportdialogWindow.setScreenPosition(left, top)
			}
		},		
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 400,
		height: 465,
		title: "Export to EndNote",
		divContent: "exportdialog",
		raiseOnlyOnTitle:false, 
		initialState: "hidden",
		left: -3000
    });
}
function exportdialogsmallWidnowInitFunc(){
	exportdialogsmallWindow = Zapatec.Window.setup({
		showMinButton: false,
		showMaxButton: false,
		showStatus: false,
		canResize: false,
		eventListeners: {
			onClose: function(){},
			onShow: function (){
				document.getElementById("exportdialogsmall").style.display = "block"
				//initEmailWindow();
				var state = exportdialogsmallWindow.getState();
				var left = (document.body.clientWidth - state.width)/2
				//TODO: get client height
				var top = (document.body.clientHeight - state.width)/2
				top = 100;
				exportdialogsmallWindow.setScreenPosition(left, top)
			}
		},		
		align: "CR",
		hideOnClose: true,
		fixed: true,
		width: 300,
		height: 135,
		title: "Export EndNote",
		divContent: "exportdialogsmall",
		raiseOnlyOnTitle:false, 
		initialState: "hidden",
		left: -3000
    });
}
function exportdialogWindowInit(){
	//document.getElementById("exportdialogname").innerHTML = document.getElementById("folderName").innerHTML
	document.getElementById("exportopt-all").checked = true
	var form = document.getElementById("exportopt-all")
	while(form.nodeName != "FORM"){
		form = form.parentNode
	}
	var inputs = form.getElementsByTagName("input")
	if(document.getElementById("exportopt-all").checked == true){
		for(var i = 0; i< inputs.length; i++){
			if(inputs[i].getAttribute("type") == "checkbox"){
				inputs[i].disabled = true
				inputs[i].checked = false
			}
		}
	}
	
	
}
function exportdialogsmallWindowInit(folderid){
	document.getElementById("exportdialogsmall-f").folderid.value = folderid
}
function exportdialogWindowExport(){
	exportdialogWindow.hide();
	return true;
	
	
	var sUrl;	
	if(document.getElementById("exportopt-all").checked){
		var sUrl = "pubmed/endnotes.php?folderid=" + currentfolderid + "&rand=" + Math.random();
	}else{
		var sUrl = "pubmed/endnotes.php?folderid=-1&rand=" + Math.random();
	}
	
	Zapatec.Transport.fetchXmlDoc({
	url: sUrl,
	onLoad: function (doc){		
		var fileName = doc.documentElement.childNodes.item(0).nodeValue
		alert(fileName)
		
	},
	onError: function(e){		
		switch(e.errorCode){
		case 0:
			//it is OK
			break;
			default:
			alert("error=11; " + e.errorCode + " -- " + e.errorDesctiption)
		}
	}
	})	
	return false
}
function exportdialogsmallWindowExport(){
	exportdialogsmallWindow.hide();
	return true;
}
function processDownload(obj){
	if(document.getElementById("exportopt-all").checked){
		obj.folderid.value = -1
	}else{	
		var inputs = obj.getElementsByTagName("input")
		var ids = "";
		for(var i = 0; i< inputs.length; i++){
			if(inputs[i].getAttribute("type") == "checkbox"){
				if(inputs[i].checked == true){
					if(ids.length > 0){
						ids += ",";
					}
					ids += inputs[i].getAttribute("name").substring(4);
				}
			}
		}
		obj.folderid.value = ids		
	}	
	return true;
}

function exportdialogWindowShow(){
	if(exportdialogWindow == null){
		exportdialogWidnowInitFunc()
	}
	exportdialogWindowInit()
	exportdialogWindow.show();
	return false
}
function exportdialogsmallWindowShow(folderid){
	if(exportdialogsmallWindow == null){
		exportdialogsmallWidnowInitFunc()
	}
	exportdialogsmallWindowInit(folderid)
	exportdialogsmallWindow.show();
	return false
}


function exportdialogClickRadio(obj){
	var form = obj
	while(form.nodeName != "FORM"){
		form = form.parentNode
	}
	var inputs = form.getElementsByTagName("input")
	if(document.getElementById("exportopt-all").checked == true){
		for(var i = 0; i< inputs.length; i++){
			if(inputs[i].getAttribute("type") == "checkbox"){
				inputs[i].disabled = true
			}
		}
	}else{
		for(var i = 0; i< inputs.length; i++){
			if(inputs[i].getAttribute("type") == "checkbox"){
				inputs[i].disabled = false
			}
		}
	}
}


function saveSearchesCabs(keyword, author, conference, count, startDate, endDate){
	var q = "";
	if(keyword.length > 0){
		q = keyword
	}else if(author.length >0){
		q = "author: " + author
	}else{
		q = "conference: " + conference
	}
	initSavedPopup(q)
	
	showProcess("Saving...")
	var sUrl = "pubmed/savesearch.php?keyword=" + keyword + "&author=" + author + "&conference=" + conference + "&count=" + count + "&startDate=" + startDate + "&endDate=" + endDate +"&rand=" + Math.random();
	Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
				
			var errors = doc.getElementsByTagName("error")
			if(errors.length == 0){
				document.getElementById("msgpopupdivsaving").style.display = "none"
				document.getElementById("msgpopupdiverror").style.display = "none"
				document.getElementById("msgpopupdivinnertext").style.display = "block"
				document.getElementById("msgpopupdivinnerbuttons").style.display = "block"
				insertedId = doc.getElementsByTagName("resultSet").item(0).childNodes.item(0).nodeValue
			}else{
				var errorMsg = errors.item(0).childNodes.item(0).nodeValue
				showMessage(errorMsg, "error", 120)
				document.getElementById("msgpopupdivsaving").style.display = "none"
				document.getElementById("msgpopupdiverror").innerHTML = errorMsg
				document.getElementById("msgpopupdiverror").style.display = "block"
				document.getElementById("msgpopupdivinnertext").style.display = "none"
				document.getElementById("msgpopupdivinnerbuttons").style.display = "block"
			}
			
		},
		onError: function(e){
			hideProcess()
			//TODO return button to previous state
			showMessage("An error occurred while processing your request. Please try again.", "error", 120)
			document.getElementById("msgpopupdivsaving").style.display = "none"
			document.getElementById("msgpopupdiverror").innerHTML = "An error occurred while processing your request. Please try again."
			document.getElementById("msgpopupdiverror").style.display = "block"
			document.getElementById("msgpopupdivinnertext").style.display = "none"
			document.getElementById("msgpopupdivinnerbuttons").style.display = "block"
		}
	})
	return;
	
	
		
	var sUrl = "pubmed/savesearch.php?keyword=" + keyword + "&author=" + author + "&conference=" + conference + "&count=" + count + "&startDate=" + startDate + "&endDate=" + endDate +"&rand=" + Math.random();
		Zapatec.Transport.fetchXmlDoc({
		url: sUrl,
		onLoad: function (doc){
			//TODO: return button to previous state
			hideProcess()
			var errors = doc.getElementsByTagName("error")
			if(errors.length == 0){
				var elem = doc.getElementsByTagName("resultSet")					
				var value = elem.item(0).childNodes.item(0).nodeValue
				showMessage("Your search has been saved successfully. <a class=\"bluelink\" href=\"pmsavedsearches.php\">View</a>", "warning", 60)
			}else{
				var errorMsg = errors.item(0).childNodes.item(0).nodeValue
				showMessage(errorMsg, "error", 120)
			}
			var savesearchbutton = document.getElementById("savesearchbutton")
			if(savesearchbutton){
				savesearchbutton.src = "images/saved.gif";
				savesearchbutton.onclick = "";
			}
		},
		onError: function(e){
			hideProcess()
			//TODO return button to previous state
			showMessage("An error occurred while processing your request. Please try again.", "error", 120)
		}
	})
	return false;
}

function applyEAlert(obj, id){	
	var value = obj.checked==true ? "true" : "false";
	if(value == "true"){
		if(window.confirm("Are you sure want to receive e-mail notifications?")){
			showProcess("Applying...")
			var sUrl = "pubmed/ealert.php?id=" + id + "&value=" +  value + "&action=setealert" + "&rand=" + Math.random();
			Zapatec.Transport.fetchXmlDoc({
				url: sUrl,
				onLoad: function (doc){
					hideProcess();
					var errors = doc.getElementsByTagName("error")
					if(errors.length == 0){
						//alert(doc.documentElement.childNodes.item(0).nodeValue)
						showMessage(doc.documentElement.childNodes.item(0).nodeValue, "warning", 120)
					}else{
						var errorMsg = errors.item(0).childNodes.item(0).nodeValue
						showMessage(errorMsg, "error", 120)
					}			
				},
				onError: function (e){
					hideProcess();
					showMessage("An error occured while applying changes.")
				}
			})
		}else{
			obj.checked = false
		}
	}else{
		showProcess("Applying...")
		var sUrl = "pubmed/ealert.php?id=" + id + "&value=" +  value + "&action=setealert" + "&rand" + Math.random();
		Zapatec.Transport.fetchXmlDoc({
			url: sUrl,
			onLoad: function (doc){
				hideProcess();
				var errors = doc.getElementsByTagName("error")
				if(errors.length == 0){
					//alert(doc.documentElement.childNodes.item(0).nodeValue)
					showMessage(doc.documentElement.childNodes.item(0).nodeValue, "warning", 120)
				}else{
					var errorMsg = errors.item(0).childNodes.item(0).nodeValue
					showMessage(errorMsg, "error", 120)
				}			
			},
			onError: function (e){
				hideProcess();
				showMessage("An error occured while applying changes.")
			}
		})	
	}
	return true;
}
function applyCitedbyEAlert(obj, id){	
	var value = obj.checked==true ? "true" : "false";
	if(value == "true"){
		if(window.confirm("Are you sure want to receive e-mail notifications?")){
			showProcess("Applying...")
			var sUrl = "pubmed/ealert.php?id=" + id + "&value=" +  value + "&action=setcitedbyealert" + "&rand=" + Math.random();
//			showMessage("Now, you will get email alerts for this search term.", "error", 120);
//			hideProcess();
	//		return;
			Zapatec.Transport.fetchXmlDoc({
				url: sUrl,
				onLoad: function (doc){
					hideProcess();
					var errors = doc.getElementsByTagName("error")
					if(errors.length == 0){
						//alert(doc.documentElement.childNodes.item(0).nodeValue)
						showMessage(doc.documentElement.childNodes.item(0).nodeValue, "warning", 120)
					}else{
						var errorMsg = errors.item(0).childNodes.item(0).nodeValue
						showMessage(errorMsg, "error", 120)
					}			
				},
				onError: function (e){
					hideProcess();
					showMessage("An error occured while applying changes.")
				}
			})
		}else{
			obj.checked = false
		}
	}else{
		showProcess("Applying...")
		var sUrl = "pubmed/ealert.php?id=" + id + "&value=" +  value + "&action=setcitedbyealert" + "&rand" + Math.random();
//		showMessage("You will no longer receive e-alerts for this search term.", "error", 120);
		//hideProcess();
		//return;
		Zapatec.Transport.fetchXmlDoc({
			url: sUrl,
			onLoad: function (doc){
				hideProcess();
				var errors = doc.getElementsByTagName("error")
				if(errors.length == 0){
					//alert(doc.documentElement.childNodes.item(0).nodeValue)
					showMessage(doc.documentElement.childNodes.item(0).nodeValue, "warning", 120)
				}else{
					var errorMsg = errors.item(0).childNodes.item(0).nodeValue
					showMessage(errorMsg, "error", 120)
				}			
			},
			onError: function (e){
				hideProcess();
				showMessage("An error occured while applying changes.")
			}
		})	
	}
	return true;
}



