LITHIUM.DropDownMenu=Class.create({initialize:function(element,activationEventType,options){this.element=$(element);this.menuLoaded=false;this.menuElement=this.element.down(".lia-menu-dropdown-items");this.options={useAnimation:false,effectsOpenOptions:{duration:.1,from:0,to:1.0},effectsCloseOptions:{duration:.1,from:1.0,to:0}};this.observers=[];this.bound={documentObserver:null};Object.extend(this.options,options||{});this.addEventListeners(activationEventType);this.element.reference=this;},addHoverStyle:function(){this.element.addClassName("dropdownHover");},removeHoverStyle:function(){$$('.dropdownHover').invoke("removeClassName","dropdownHover");},openMenu:function(){if(this.iframeElement==null){this.iframeElement=new Element("iframe",{"id":"dropDownShim","src":"javascript:void(0);","style":"display:none;"});this.element.up().appendChild(this.iframeElement);this.iframeElement.setStyle({"zIndex":"500","position":"absolute","frameborder":"0","border":"0"});}else{this.iframeElement.show();}
this.addHoverStyle();this.iframeElement.clonePosition(this.menuElement);},closeMenu:function(){Event.stopObserving(document,'click',this.bound.documentObserver);this.removeHoverStyle();this.iframeElement.hide();},clickEvent:function(event){var clickElement=Event.findElement(event,'a');if(typeof clickElement!='undefined'&&clickElement.name=="title"){$(clickElement).up().select("a.dialog-link").each(function(item){Event.observe(item,'click',this.closeMenu.bindAsEventListener(this));}.bind(this));$(clickElement).up().select("a.ajax-link").each(function(item){Event.observe(item,'click',this.closeMenu.bindAsEventListener(this));}.bind(this));this.bound.documentObserver=this.closeMenu.bindAsEventListener(this);Event.observe(document,'click',this.bound.documentObserver);this.openMenu();Event.stop(event);}},addEventListeners:function(activationEventType){if(activationEventType=="mouseover"){Event.observe(this.element,'mouseover',this.openMenu.bindAsEventListener(this));Event.observe(this.element,'mouseout',this.closeMenu.bindAsEventListener(this));}
else if(activationEventType=="click"){Event.observe(this.element,'click',this.clickEvent.bindAsEventListener(this));}
this.menuLoaded=true;},removeEventListeners:function(activationEventType){if(activationEventType=="mouseover"){Event.stopObserving(this.element,'mouseover',this.openMenu.bindAsEventListener(this));Event.stopObserving(this.element,'mouseout',this.closeMenu.bindAsEventListener(this));}
else if(activationEventType=="click"){Event.stopObserving(this.element,'click',this.clickEvent.bindAsEventListener(this));}}});LITHIUM.DropDownMenu.forceCloseMenu=function(element){element.up(".dropdownHover").reference.closeMenu();};

LITHIUM.ResizeImages=Class.create({initialize:function(element,maxWidth,elementCssSelector,maxWidthCssClass){this.element=element;var selected=$(this.element).select(elementCssSelector);selected.each(function(item){this.resizeImagesInElement(item,maxWidth,maxWidthCssClass)}.bind(this));},resizeImagesInElement:function(item,maxWidth,maxWidthClass){item.select('img').each(function(subItem){var siWidth=subItem.getWidth();if(siWidth>maxWidth){var siHeight=subItem.getHeight();var multiplier=maxWidth/siWidth;subItem.width=maxWidth;subItem.height=siHeight*multiplier;subItem.addClassName(maxWidthClass);}});}});

LITHIUM.TabGroup=Class.create({initialize:function(elementId,tabChangeEvent){var element=$(elementId);var tabLiElements=element.down("ul").childElements();Event.observe(element,tabChangeEvent,function(event){tabLiElements.invoke("removeClassName",LITHIUM.Css.BASE_TABS_ACTIVE).invoke("addClassName",LITHIUM.Css.BASE_TABS_INACTIVE);Event.findElement(event).up("li").removeClassName(LITHIUM.Css.BASE_TABS_INACTIVE).addClassName(LITHIUM.Css.BASE_TABS_ACTIVE);});}});

LITHIUM.CustomEvent={register:function(element,triggerEvent,fireEvent,eventContext){var element=$(element);Event.observe(element,triggerEvent,function(event){var customEvent=element.fire(fireEvent,eventContext);if(customEvent.stopped){event.stop();}});}}

LITHIUM.Jspell=Class.create({initialize:function(element,options){this.options={jspellDisableLearn:false,jspellIgnoreDouble:true,jspellIgnoreNumbers:false,jspellIgnoreUpper:false}
Object.extend(this.options,options||{});LITHIUM.Jspell.elements.set(element);jspellShowOptionsMenu=false;jspellRealtime=false;jspellAutoAttach=false;jspellDialogShowNoErrors=true;jspellAttachToHiddenElements=true;jspellDisableLearn=this.options.jspellDisableLearn;jspellIgnoreDouble=this.options.jspellIgnoreDouble;jspellIgnoreNumbers=this.options.jspellIgnoreNumbers;jspellIgnoreUpper=this.options.jspellIgnoreUpper;jspellPersonalDictionaryType="SERVER";jspellPersonalDictionary='0';jspellCustomRegExp=/^\<.*?\>$/;jspellDialogHalign="center";jspellDialogValign="center";jspellTextLanguage=this.options.jspellTextLanguage;jspellGUILanguage=this.options.jspellTextLanguage;jspellDialogShowNoErrorsMessage=this.options.jspellDialogShowNoErrorsMessage;window.getSpellCheckArray=function(){return LITHIUM.Jspell.elements.values();}}});LITHIUM.Jspell.elements=function(){var elements=new Hash();return{get:function(element){elements.get(element);},set:function(element){elements.set(element,[document,element]);},update:function(element,value){elements.unset(element);elements.set(element,[document,value]);},values:function(){return elements.values();}}}();LITHIUM.Jspell.activate=function(event){LITHIUM.Jspell.initJspell.init();}
LITHIUM.Jspell.initJspell=function(){var initStarted=false;var initialized=false;return{init:function(){if(initStarted==false){initStarted=true;jspellInit();initialized=true;}
jspellCheck();}}}();

LITHIUM.TinyMceEditor=Class.create({initialize:function(element,options,buttons,customPluginSourceTemplate){this.element=element;this.options={useGraphicalEditor:true,useSpellChecker:false,styleSheetUrl:"",useImageUploader:true,useVideo:true,bodyCssClass:""}
Object.extend(this.options,options||{});var customPlugins=["emoticons","customlinkplus","insertcode","customsafari"];var plugins=["inlinepopups","media","paste"];if(this.options.useImageUploader){customPlugins.push("imageuploader");}
if(this.options.useVideo){customPlugins.push("video")}
var urlTemplate=new Template(customPluginSourceTemplate);var customContributedPlugins=!Object.isUndefined(buttons.customPlugins)?buttons.customPlugins.split(","):[];$A(customPlugins.concat(customContributedPlugins)).each(function(customPlugin){tinymce.PluginManager.load(customPlugin,urlTemplate.evaluate({customPlugin:customPlugin}));plugins.push("-"+customPlugin);});var tinyMceOptions={mode:"exact",theme:"advanced",auto_focus:LITHIUM.TinyMceEditor.focusBody==true?this.element:false,content_css:this.options.styleSheetUrl,button_tile_map:true,plugins:plugins.join(","),strict_loading_mode:true,theme_advanced_buttons1:"",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_resizing:true,theme_advanced_path:false,theme_advanced_resize_horizontal:false,convert_fonts_to_spans:false,inline_styles:false,width:"100%",height:"250px",accessibility_focus:false,convert_urls:false,extended_valid_elements:"span[class],"+"font[face|size|style|id|class|dir|color],"+"object[classid|width|height|codebase|*],"+"embed[wmode|type|width|height|src|*],"+"embed[src|type|wmode|width|height],"+"param[name|value|_value],"+"img[style|class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|obj|param|embed|livideoattrs],"+"li-video[vid|align|size|width|height|originalwidth|originalheight|thumbnail|uploading|external]",execcommand_callback:(function(){if(Prototype.Browser.IE&&parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5))==6){var addedOnunload=false;var selectIframeShims=[];var isInlinePopup=function(command){switch(command){case"mcePasteWord":case"mceEmoticons":case"mceCustomLinkPlus":case"mceImageUploader":return true;default:return false;}}
return function(editor_id,elm,command,user_interface,value){var isInline=isInlinePopup(command);if(isInline){$$('select').each(function(select){var iframeElement=new Element("iframe",{"id":"dropDownShim","src":"javascript:void(0);","style":"display:none;"});document.body.appendChild(iframeElement);iframeElement.setStyle({"zIndex":"500","position":"absolute","frameborder":"0","border":"0"});iframeElement.clonePosition(select);iframeElement.show();selectIframeShims.push(iframeElement);});if(!addedOnunload){addedOnunload=true;tinymce.EditorManager.activeEditor.windowManager.onClose.add(function(){if(isInline){for(var i=0;i<selectIframeShims.length;i++){var iframe=selectIframeShims[i];iframe.hide();}
selectIframeShims=[];}});}}}}else{return function(){};}})(),oninit:this.loaded.bindAsEventListener(this),init_instance_callback:this.loaded.bindAsEventListener(this)};Object.extend(tinyMceOptions,buttons||{});tinyMCE.init(tinyMceOptions);if(this.options.useGraphicalEditor==true){tinyMCE.execCommand("mceAddControl",false,this.element);}
LITHIUM.observeWindowBeforeUnload(function(){if(tinyMCE&&tinyMCE.triggerSave){tinyMCE.triggerSave();}});Event.observe($(this.element).up("form"),"submit",function(){tinyMCE.execCommand("mceCleanup")});},loaded:function(inst){if(this.options.useSpellChecker){LITHIUM.Jspell.elements.update(inst.editorId,inst.editorId+"_ifr");}}});LITHIUM.TinyMceEditor.isActive=function(element){return!Object.isUndefined(tinyMCE.get(element));}
LITHIUM.TinyMceEditor.focusBody=false;LITHIUM.TinyMceEditor.insertTextAtCursor=function(fieldElement,text,tinyMceOverrideText){if(typeof text!="undefined"&&text!=""){if(LITHIUM.TinyMceEditor.isActive(fieldElement.id)){if(typeof tinyMceOverrideText!="undefined"){text=tinyMceOverrideText;}
tinyMCE.execInstanceCommand(fieldElement.id,'mceInsertContent',false,text);}else{if(document.selection){fieldElement.focus();sel=document.selection.createRange();sel.text=text;}
else if(fieldElement.selectionStart||fieldElement.selectionStart=='0'){var startPos=fieldElement.selectionStart;var endPos=fieldElement.selectionEnd;var restoreTop=fieldElement.scrollTop;fieldElement.value=fieldElement.value.substring(0,startPos)
+text
+fieldElement.value.substring(endPos,fieldElement.value.length);if(restoreTop>0){fieldElement.scrollTop=restoreTop;}}else{fieldElement.value+=text;}}}}

LITHIUM.BlockEvents=Class.create({initialize:function(elementId){Event.observe(elementId,"click",function(event){event.stop();});}});

LITHIUM.KeepSessionAlive=Class.create({initialize:function(blankPageUrl,timeOut){if(timeOut>0){window.setInterval(function(){new Ajax.Request(blankPageUrl)},timeOut);}}});

LITHIUM.MessageEditor=Class.create({initialize:function(elementId,tinyMceElementId,previewSubmitElementId,messageEditorTabHiddenCssSelector,convertCrToBrCheckboxElementCssClass,useGraphicalEditor,defaultTabName,tabChangeEvent,macroChangeEvent){this.element=$(elementId);this.tinyMceElement=$(tinyMceElementId);this.previewSubmitElement=$(previewSubmitElementId);this.messageEditorTabHiddenElement=this.element.up("form").down("."+messageEditorTabHiddenCssSelector);this.convertCrToBrCheckbox=this.element.up("form").down("."+convertCrToBrCheckboxElementCssClass);this.useGraphicalEditor=useGraphicalEditor;this.messageEditor=this.element.down(".message-body-editor");this.messagePreview=this.element.down(".message-preview");this.messageEditorControls=this.element.down(".message-editor-controls");this.convertCrToBrCheckbox.setValue(false);tinyMCE.settings.convert_newlines_to_brs=false;this.messageEditorTabHiddenElement.setValue(defaultTabName);if(defaultTabName=="preview"){LITHIUM.FormWatch.FORCE_UNSAVED_DATA_WARNING=true;}
Event.observe(this.element,tabChangeEvent,this.toggleEditorMode.bindAsEventListener(this));Event.observe(this.element,macroChangeEvent,function(event){var selectElement=Event.findElement(event);LITHIUM.TinyMceEditor.insertTextAtCursor(this.tinyMceElement,$H(event.memo.macros).get($F(selectElement)));selectElement.selectedIndex=0;}.bindAsEventListener(this));},toggleEditorMode:function(event){Event.stop(event);var currentTab=$F(this.messageEditorTabHiddenElement);var tabName=event.memo.tab;this.messageEditorTabHiddenElement.setValue(tabName);if(currentTab!=tabName){if(tabName!="preview"){this.messagePreview.hide();this.messageEditor.show();this.messageEditorControls.show()}
if(tabName=="html"){LITHIUM.Jspell.elements.update(this.tinyMceElement.id,this.tinyMceElement.id);tinyMCE.execCommand("mceRemoveControl",false,this.tinyMceElement.id);}else if(tabName=="rich"&&!LITHIUM.TinyMceEditor.isActive(this.tinyMceElement.id)){tinyMCE.execCommand("mceAddControl",false,this.tinyMceElement.id);}else if(tabName=="preview"){LITHIUM.FormWatch.IGNORE_UNSAVED_DATA_WARNING=true;this.previewSubmitElement.click();}}}});LITHIUM.MessageEditor.MessageQuote=function(quoteButtonElementId,tinyMceElementId,text){var tinyMceElementId=tinyMceElementId;var text=text;Event.observe(quoteButtonElementId,'click',function(event){Event.stop(event);LITHIUM.TinyMceEditor.insertTextAtCursor($(tinyMceElementId),text,text+"<p> </p>");});}
LITHIUM.MessageEditor.SpellCheck=function(spellCheckButtonId){Event.observe(spellCheckButtonId,'click',function(event){Event.stop(event);LITHIUM.Jspell.activate();});}

LITHIUM.InputEditForm=Class.create({initialize:function(form,options){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:[]},options||{});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);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){new LITHIUM.FormWatch(form,this.options.unloadMessage,formActionButtons,this.options.warnUnsavedDataActionCssClasses);}}});LITHIUM.FormWatch=Class.create({initialize:function(form,message,formActionButtons,warnUnsavedDataActionCssClasses){this.form=$(form);this.submitted=false;this.message=message;this.formActionButtons=formActionButtons;this.warnUnsavedDataActionCssClasses=warnUnsavedDataActionCssClasses;this.clickElement;formActionButtons.invoke("observe","click",function(event){this.clickElement=Event.element(event);}.bindAsEventListener(this));this.originalFormContents=this.form.serialize(true);Event.observe(this.form,"submit",function(event){this.submitted=true;$A(warnUnsavedDataActionCssClasses).each(function(item){if(this.clickElement.hasClassName(item)){this.submitted=false;}}.bind(this));}.bind(this));LITHIUM.observeWindowBeforeUnload(this.confirmExit.bindAsEventListener(this));},confirmExit:function(event){var newFormContents=this.form.serialize(true);if(!this.submitted&&!LITHIUM.FormWatch.IGNORE_UNSAVED_DATA_WARNING){var showUnsavedDataWarning=false;$H(newFormContents).each(function(pair){originalValue=$H(this.originalFormContents).get(pair.key);if(typeof originalValue!="undefined"){var formElement=this.form[pair.key];if(pair.value!=""&&pair.value!=originalValue&&formElement.type!="hidden"){showUnsavedDataWarning=true;}}else if(pair.value!=""&&pair.value!=0&&pair.value!=false){showUnsavedDataWarning=true;}}.bind(this))
if(showUnsavedDataWarning==true||LITHIUM.FormWatch.FORCE_UNSAVED_DATA_WARNING==true){this.form.removeClassName(LITHIUM.Css.BASE_FORM_SUBMITTING);this.formActionButtons.invoke("removeClassName",LITHIUM.Css.BASE_DISABLED);Element.select(this.form,"."+LITHIUM.Css.BASE_BUTTON_OVERLAY).invoke("remove");return this.message;}}}});LITHIUM.FormWatch.IGNORE_UNSAVED_DATA_WARNING=false;LITHIUM.FormWatch.FORCE_UNSAVED_DATA_WARNING=false;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");}}});}
