;(function($LITH){LITHIUM.AjaxFeedback=function(feedbackSelector,hideFeedbackEvent){$LITH(document).protoObserve(hideFeedbackEvent,function(){$LITH(feedbackSelector).hide();});}})(LITHIUM.jQuery);
;(function($LITH){LITHIUM.SearchForm=function(selectSelector,buttonSelector,nodesModel,eventToRaiseOnChange){var selectElements=$LITH(selectSelector);var buttonElements=$LITH(buttonSelector);selectElements.change(function(){var currentOptionValue=selectElements.val();if(nodesModel.hasOwnProperty(currentOptionValue)){buttonElements.attr("title",nodesModel[currentOptionValue]);};selectElements.protoFire(eventToRaiseOnChange,{context:selectElements.val()});});}
LITHIUM.AdvancedSearchSemaphore=function(advancedLinkSelector,showAdvancedFormEvent,toggleAdvancedFormEvent,reopenAdvancedFormEvent){var advancedSearchLinks=$LITH(advancedLinkSelector);var visible=false;advancedSearchLinks.protoObserve("click",function(event){LITHIUM.jQuery.protoStop(event);advancedSearchLinks.toggle();visible=!visible;advancedSearchLinks.protoFire(showAdvancedFormEvent);});$LITH(document).protoObserve(toggleAdvancedFormEvent,function(event){if(!event.memo.toggleFromPriorEvent){advancedSearchLinks.toggle();visible=!visible;}});$LITH(document).protoObserve(reopenAdvancedFormEvent,function(event){if(visible){advancedSearchLinks.protoFire(showAdvancedFormEvent);}});}})(LITHIUM.jQuery);

LITHIUM.InputEditForm=Class.create({initialize:function(form,options){var formid=form;var form=$(form);if(options.swallowEnterEvent){$(form).getInputs().each(function(item){if(!(item.type=='hidden'||item.type=='submit'||item.type=='textarea')){Event.observe(item,'keypress',function(event){if(Event.KEY_RETURN==event.keyCode){Event.stop(event);}});}});}
Object.extend(this.options={useUnsavedDataWarning:false,unloadMessage:"",warnUnsavedDataActionCssClasses:[],ignoreDisableFormDuringSubmitCssClasses:[],ignoreOnChangeCssClasses:[],submitOnChange:false},options||{});if(this.options.submitOnChange==true){var hiddenSubmit=new Element("input",{"type":"submit"}).hide();form.appendChild(hiddenSubmit);options=this.options;$A(form.getElements()).each(function(formElement){var ignoreOnChange=false;options.ignoreOnChangeCssClasses.each(function(ignoreOnChangeCssClass){if(formElement.hasClassName(ignoreOnChangeCssClass)||LITHIUM.jQuery(formElement).closest("."+ignoreOnChangeCssClass).size()>0){ignoreOnChange=true;$break;}});if(formElement.type=="checkbox"){LITHIUM.jQuery(formElement).click(function(){LITHIUM.jQuery(form).data("lastUpdated",this);if(!ignoreOnChange){hiddenSubmit.click();}});}else if(formElement.type=="radio"){LITHIUM.jQuery(formElement).data("alreadyChecked",false);LITHIUM.jQuery(formElement).mousedown(function(){LITHIUM.jQuery(formElement).data("alreadyChecked",LITHIUM.jQuery(this).get(0).checked);});LITHIUM.jQuery(formElement).click(function(){if(LITHIUM.jQuery(formElement).data("alreadyChecked")===false){LITHIUM.jQuery(form).data("lastUpdated",this);if(!ignoreOnChange){hiddenSubmit.click();}}});}else if(formElement.type=="text"){LITHIUM.jQuery(formElement).bind("change",function(){LITHIUM.jQuery(form).data("lastUpdated",this);if(!ignoreOnChange){hiddenSubmit.click();}});}else{LITHIUM.jQuery(formElement).bind("change",function(){if(!ignoreOnChange){hiddenSubmit.click();}});}});}
this.disableFormDuringSubmit=true;var baseButtonCssSelector="."+LITHIUM.Css.BASE_BUTTON;var baseTabLiCssSelector="."+LITHIUM.Css.BASE_TABS_STANDARD+" li";var formActionButtons=Element.select(form,baseButtonCssSelector,baseTabLiCssSelector);Event.observe(form,"submit",function(event){if(this.disableFormDuringSubmit==true){$(form).addClassName(LITHIUM.Css.BASE_FORM_SUBMITTING);var formActionButtons=Element.select(form,baseButtonCssSelector,baseTabLiCssSelector);formActionButtons.each(function(item){var element=new Element("div").addClassName(LITHIUM.Css.BASE_BUTTON_OVERLAY);item.up().appendChild(element);element.clonePosition(item);item.addClassName(LITHIUM.Css.BASE_DISABLED);});}}.bindAsEventListener(this));Event.observe(form,"LITHIUM:enableForm",function(event){var formAcionButtons=Element.select(form,baseButtonCssSelector,baseTabLiCssSelector);this.reenableFormActionButtons(formActionButtons,form);this.clearFormErrors(form);this.applyFormErrors(form,event.memo);}.bindAsEventListener(this));Event.observe(form,options.disableFormEvent,function(event){if(event.memo.form===formid&&this.disableFormDuringSubmit){$(form).addClassName(LITHIUM.Css.BASE_FORM_SUBMITTING);var formActionButtons=Element.select(form,baseButtonCssSelector,baseTabLiCssSelector);formActionButtons.each(function(item){var element=new Element("div").addClassName(LITHIUM.Css.BASE_BUTTON_OVERLAY);item.up().appendChild(element);element.clonePosition(item);item.addClassName(LITHIUM.Css.BASE_DISABLED);});}}.bindAsEventListener(this));formActionButtons.invoke("observe","click",function(event){var clickElement=Event.element(event);$A(this.options.ignoreDisableFormDuringSubmitCssClasses).each(function(item){if(clickElement.hasClassName(item)){this.disableFormDuringSubmit=false;}}.bind(this));}.bindAsEventListener(this));if(this.options.useUnsavedDataWarning===true){LITHIUM.FormWatch(form,this.options.unloadMessage,formActionButtons,this.options.warnUnsavedDataActionCssClasses);}},reenableFormActionButtons:function(formActionButtons,form){if(this.disableFormDuringSubmit==true){formActionButtons.each(function(item){var element=item.up().down("div."+LITHIUM.Css.BASE_BUTTON_OVERLAY);if(element&&!element.disabled){element.remove();item.removeClassName(LITHIUM.Css.BASE_DISABLED);}});$(form).removeClassName(LITHIUM.Css.BASE_FORM_SUBMITTING);}},clearFormErrors:function(form){var fieldErrorSelector="."+LITHIUM.Css.BASE_FORM_FIELD_ERROR;$(form).select(fieldErrorSelector).each(function(item){item.removeClassName(LITHIUM.Css.BASE_FORM_FIELD_ERROR);});var fieldErrorTextSelector="p."+LITHIUM.Css.BASE_FORM_ERROR_TEXT;$(form).select(fieldErrorSelector,fieldErrorTextSelector).each(function(item){item.remove();});},applyFormErrors:function(form,response){if(response.parameters){var hasFormErrors=false;var fieldErrors=new Array();for(var index=0;index<response.parameters.length;++index){var item=response.parameters[index];if(item.formError==true){hasFormErrors=true;}else if(item.fieldErrors){fieldErrors=fieldErrors.concat(item.fieldErrors);}}
if(hasFormErrors==true){$A(fieldErrors).each(function(item){var field=$(form).down("[name='"+item.field+"']");if(item.fieldValue!==undefined){field.value=item.fieldValue;}
field.addClassName(LITHIUM.Css.BASE_FORM_FIELD_ERROR);var fieldError=new Element("p",{"class":LITHIUM.Css.BASE_FORM_ERROR_TEXT}).insert(item.messageHtml);field.insert({"after":fieldError});});}}}});LITHIUM.FormWatch=function(form,message,formActionButtons,warnUnsavedDataActionCssClasses){LITHIUM.jQuery(form).data("IGNORE_UNSAVED_DATA_WARNING",false);LITHIUM.jQuery(form).data("FORCE_UNSAVED_DATA_WARNING",false);var formActionIgnoresWarnUnsaved=false;var showUnsavedDataWarning=false;var saveFieldUnloadCallbacks=[];var clickElement;formActionButtons.invoke("observe","click",function(event){clickElement=Event.element(event);});Event.observe(form,"submit",function(event){formActionIgnoresWarnUnsaved=true;$A(warnUnsavedDataActionCssClasses).each(function(item){if(clickElement.hasClassName(item)){formActionIgnoresWarnUnsaved=false;}});});LITHIUM.jQuery(form).find(":input").bind("change",function(event){showUnsavedDataWarning=true;});window.onbeforeunload=function(event){LITHIUM.jQuery(form).dequeue("fieldWatcher");if(formActionIgnoresWarnUnsaved==false){if(LITHIUM.jQuery(form).data("IGNORE_UNSAVED_DATA_WARNING")!==true){if(showUnsavedDataWarning==true||LITHIUM.jQuery(form).data("FORCE_UNSAVED_DATA_WARNING")){form.removeClassName(LITHIUM.Css.BASE_FORM_SUBMITTING);formActionButtons.each(function(formActionButton){if(!formActionButton.disabled){formActionButton.removeClassName(LITHIUM.Css.BASE_DISABLED);}});Element.select(form,"."+LITHIUM.Css.BASE_BUTTON_OVERLAY).invoke("remove");return message;}}}};};LITHIUM.InputEditForm.fieldsetToggle=function(formElementId,triggerElementCssClass,fieldGroupElementCssClass,triggerValue,triggerEvent){var form=$(formElementId);var triggerElements=Element.select(form,"."+triggerElementCssClass);var fieldGroupElementCssClass=fieldGroupElementCssClass;var triggerValue=triggerValue;var fieldsetElement=form.down("."+fieldGroupElementCssClass);$A(triggerElements).each(function(item){Event.observe(item,triggerEvent,function(event){if($F(item)==triggerValue){Form.getElements(fieldsetElement).invoke("enable");fieldsetElement.show();}else{fieldsetElement.hide();Form.getElements(fieldsetElement).invoke("disable");}});});$A(triggerElements).each(function(item){if(item.type!="radio"||(item.type=="radio"&&$F(item)!=null)){if($F(item)==triggerValue){Form.getElements(fieldsetElement).invoke("enable");fieldsetElement.safeShow();}else{Form.getElements(fieldsetElement).invoke("disable");}}});};
