
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - dropdown.js - */
// http://www.bioinformatics-portugal.org/portal_javascripts/dropdown.js?original=1
function hideAllMenus(){jq('dl.actionMenu').removeClass('activated').addClass('deactivated')};
function toggleMenuHandler(event){jq(this).parents('.actionMenu:first').toggleClass('deactivated').toggleClass('activated');return false};
function actionMenuDocumentMouseDown(event){if(jq(event.target).parents('.actionMenu:first').length)
return true;hideAllMenus()};
function actionMenuMouseOver(event){var menu_id=jq(this).parents('.actionMenu:first').attr('id');if(!menu_id) return true;var switch_menu=jq('dl.actionMenu.activated').length>0;jq('dl.actionMenu').removeClass('activated').addClass('deactivated');if(switch_menu)
jq('#'+menu_id).removeClass('deactivated').addClass('activated')};
function initializeMenus(){jq(document).mousedown(actionMenuDocumentMouseDown);hideAllMenus();jq('dl.actionMenu dt.actionMenuHeader a').click(toggleMenuHandler).mouseover(actionMenuMouseOver);jq('dl.actionMenu > dd.actionMenuContent').click(hideAllMenus)};jq(initializeMenus);

/* - table_sorter.js - */
// http://www.bioinformatics-portugal.org/portal_javascripts/table_sorter.js?original=1
function sortable(a){if(a.charAt(4)!='-'&&a.charAt(7)!='-'&&!isNaN(parseFloat(a)))
return parseFloat(a);return a.toLowerCase()}
function sort(){var name=jq(this).text();var table=jq(this).parents('table:first');var tbody=table.find('tbody:first');var reverse=table.attr('sorted')==name;jq(this).parent().find('th:not(.nosort) img.sortdirection').attr('src',portal_url+'/arrowBlank.gif');jq(this).children('img.sortdirection').attr('src',portal_url+(reverse?'/arrowDown.gif':'/arrowUp.gif'));var index=jq(this).parent().children('th').index(this);var data=[];tbody.find('tr').each(function(){var cells=jq(this).children('td');data.push([sortable(cells.slice(index,index+1).text()),sortable(cells.slice(1,2).text()),sortable(cells.slice(0,1).text()),this])});if(data.length){data.sort();if(reverse) data.reverse();table.attr('sorted',reverse?'':name);tbody.append(jq.map(data, function(a){return a[3]}));tbody.find('tr').removeClass('odd').removeClass('even').filter(':odd').addClass('even').end().filter(':even').addClass('odd')}}
jq(function(){var blankarrow=jq('<img>').attr('src',portal_url+'/arrowBlank.gif').attr('width',6).attr('height',9).addClass('sortdirection');jq('table.listing:not(.nosort) thead th:not(.nosort)').append(blankarrow.clone()).css('cursor','pointer').click(sort).slice(0,1).find('img.sortdirection').attr('src',portal_url+'/arrowUp.gif')});

/* - calendar_formfield.js - */
// http://www.bioinformatics-portugal.org/portal_javascripts/calendar_formfield.js?original=1
function onJsCalendarDateUpdate(cal){var year=cal.params.input_id_year;var month=cal.params.input_id_month;var day=cal.params.input_id_day;var daystr=''+cal.date.getDate();if(daystr.length==1)
daystr='0'+daystr;var monthstr=''+(cal.date.getMonth()+1);if(monthstr.length==1)
monthstr='0'+monthstr;cal.params.inputField.value=''+cal.date.getFullYear()+'/'+monthstr+'/'+daystr
var yearValue=cal.params.inputField.value.substring(0,4);var yearExists=false;for(var i=0;i<year.options.length;i++){if(year.options[i].value==yearValue){yearExists=true}}
if(!yearExists){year.options[year.length]=new Option(''+yearValue,yearValue,false,true);for(var i=year.options.length-1;i>1;i--){if(year.options[i].value<year.options[i-1].value){var option1=year.options[i];var option2=year.options[i-1];year.options[i]=new Option(option2.text,option2.value,option2.defaultSelected,option2.selected);year.options[i-1]=new Option(option1.text,option1.value,option1.defaultSelected,option1.selected)}}}
year.value=yearValue;month.value=cal.params.inputField.value.substring(5,7);day.value=cal.params.inputField.value.substring(8,10)}
function showJsCalendar(input_id_anchor,input_id,input_id_year,input_id_month,input_id_day,input_id_hour,input_id_minute,yearStart,yearEnd){var input_id_anchor=document.getElementById(input_id_anchor);var input_id=document.getElementById(input_id);var input_id_year=document.getElementById(input_id_year);var input_id_month=document.getElementById(input_id_month);var input_id_day=document.getElementById(input_id_day);var format='%Y/%m/%d';var dateEl=input_id;var mustCreate=false;var cal=window.calendar;var params={'range':[yearStart,yearEnd],inputField:input_id,input_id_year:input_id_year,input_id_month:input_id_month,input_id_day:input_id_day};
function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",1);param_default("align","Bl");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,null,onJsCalendarDateUpdate,
function(cal){cal.hide()});cal.time24=true;cal.weekNumbers=true;mustCreate=true} else{cal.hide()}
cal.showsOtherMonths=false;cal.yearStep=2;cal.setRange(yearStart,yearEnd);cal.params=params;cal.setDateStatusHandler(null);cal.getDateText=null;cal.setDateFormat(format);if(mustCreate)
cal.create();cal.refresh();if(!params.position)
cal.showAtElement(input_id_anchor,null);else
cal.showAt(params.position[0],params.position[1]);return false}
function update_date_field(field,year,month,day,hour,minute,ampm){var field=document.getElementById(field)
var date=document.getElementById(date)
var year=document.getElementById(year)
var month=document.getElementById(month)
var day=document.getElementById(day)
var hour=document.getElementById(hour)
var minute=document.getElementById(minute)
var ampm=document.getElementById(ampm)
if(0<year.value){field.value=year.value+"-"+month.value+"-"+day.value+" "+hour.value+":"+minute.value
if(ampm&&ampm.value)
field.value=field.value+" "+ampm.value}
else{field.value=''
month.options[0].selected=1
day.options[0].selected=1
hour.options[0].selected=1
minute.options[0].selected=1
if(ampm&&ampm.options)
ampm.options[0].selected=1}}


/* - formUnload.js - */
// http://www.bioinformatics-portugal.org/portal_javascripts/formUnload.js?original=1
if(!window.beforeunload)(function(){var BeforeUnloadHandler=function(){var self=this;this.message=window.form_modified_message||"Discard changes? If you click OK, any changes you have made will be lost.";this.forms=[];this.chkId=[];this.chkType=new this.CheckType();this.handlers=[this.isAnyFormChanged];this.submitting=false;this.execute=function(event){var domforms=jq('form');self.forms=jq.grep(self.forms, function(form){return domforms.index(form)>-1});if(self.submitting) return;var message;jq.each(self.handlers, function(i,fn){message=message||fn.apply(self)});if(message===true) message=self.message;if(message===false) message=undefined;if(event&&message) event.returnValue=message;return message}
this.execute.tool=this}
var Class=BeforeUnloadHandler.prototype;Class.isAnyFormChanged=function(){for(var i=0;form=this.forms[i++];){if(this.isElementChanged(form))
return true}
return false}
Class.addHandler=function(fn){this.handlers.push(fn)}
Class.onsubmit=function(){var tool=window.onbeforeunload&&window.onbeforeunload.tool;tool.submitting=true;plone.UnlockHandler.submitting=true}
Class.addForm=function(form){if(jq.inArray(form,this.forms)>-1) return;this.forms.push(form);jq(form).submit(this.onsubmit);var elements=form.getElementsByTagName('input');jq(form).find('input:hidden').each(function(){jq(this).attr('originalValue',this.defaultValue)})}
Class.addForms=function(){var self=this;jq.each(arguments, function(){if(this.tagName.toLowerCase()=='form')
self.addForm(this);else
self.addForms.apply(self,jq(this).find('form').get())})}
Class.removeForms=function(){var self=this;jq.each(arguments, function(){if(this.tagName.toLowerCase()=='form'){var el=this;self.forms=jq.grep(self.forms, function(form){return form!=el});jq(element).unbind('submit',self.onsubmit)} else
self.removeForms.apply(self,jq(this).find('form').get())})}
Class.CheckType=function(){};var c=Class.CheckType.prototype;c.checkbox=c.radio=function(ele){return ele.checked!=ele.defaultChecked}
c.password=c.textarea=c.text=function(ele){return ele.value!=ele.defaultValue}
c.hidden=function(ele){var orig=jq(ele).attr('originalValue');return orig&&(jq(ele).val()!=orig)}
c['select-one']=function(ele){for(var i=0;opt=ele[i++];){if(opt.selected!=opt.defaultSelected){if(i===1&&opt.selected) continue;return true}}
return false}
c['select-multiple']=function(ele){for(var i=0;opt=ele[i++];){if(opt.selected!=opt.defaultSelected)
return true}
return false}
Class.chk_form=function(form){var elems=jq(form).find('> :input:not(.noUnloadProtection),'+':not(.noUnloadProtection) :input:not(.noUnloadProtection)');for(var i=0;element=elems.get(i++);){if(this.isElementChanged(element))
return true}
return false}
Class.isElementChanged=function(ele){var method=ele.id&&this.chkId[ele.id];if(!method&&ele.type&&ele.name)
method=this.chkType[ele.type];if(!method&&ele.tagName)
method=this['chk_'+ele.tagName.toLowerCase()];return method?method.call(this,ele):false};window.onbeforeunload=new BeforeUnloadHandler().execute;jq(function(){var tool=window.onbeforeunload&&window.onbeforeunload.tool;var content=getContentArea();if(tool&&content)
tool.addForms.apply(tool,jq('form.enableUnloadProtection').get())})})();

/* - formsubmithelpers.js - */
// http://www.bioinformatics-portugal.org/portal_javascripts/formsubmithelpers.js?original=1
function inputSubmitOnClick(event){if(jq(this).hasClass('submitting')&&!jq(this).hasClass('allowMultiSubmit'))
return confirm(window.form_resubmit_message);else
jq(this).addClass('submitting')}
jq(function(){jq(':submit').each(function(){if(!this.onclick)
jq(this).click(inputSubmitOnClick)})});

/* - unlockOnFormUnload.js - */
// http://www.bioinformatics-portugal.org/portal_javascripts/unlockOnFormUnload.js?original=1
if(typeof(plone)=='undefined')
var plone={};plone.UnlockHandler={init: function(){if(jq('form.enableUnlockProtection').length)
jq(window).unload(plone.UnlockHandler.execute)},execute: function(){if(this.submitting) return;var baseUrl=jq('base').attr('href');if(!baseUrl){var pieces=window.location.href.split('/');pieces.pop();baseUrl=pieces.join('/')}
jq.get(baseUrl+'/@@plone_lock_operations/safe_unlock')}};jq(plone.UnlockHandler.init);
