(function(){var Form=function(id,options){this.forms=[];this.editors=[];this.calendars={};if($(id)){this.setOptions(options);if($(id).tagName.toUpperCase()=="FORM"){this.forms.push($(id))}else{this.forms=$(id).getElementsByTagName("form")}this.init()}};Form.prototype={init:function(){for(var i=0;i<this.forms.length;i++){var form=this.forms[i];if(YAHOO.util.Dom.hasClass(form,"webuform")){this.attachIndicators(form);this.attachAutocompleters(form);this.attachCalendars(form);this.attachSimpleEditors(form);if(typeof window.webucator!="undefined"){window.webucator.tooltips(form)}this.attachSubmitButtonDisabler(form)}}},setOptions:function(options){this.options={autoCompleteClass:"autocompleter",autoCompleteController:"/thurber/autoComplete/",calendarClass:"datecalendar",simpleEditorClass:"simpleeditor",simpleEditorHeight:125,simpleEditorWidht:455,requiredClass:"req"};YAHOO.lang.augmentObject(this.options,options||{},true)},getFormById:function(id){for(var i=0;i<this.forms.length;i++){if(this.forms[i].id==id){return this.forms[i]}}},attachAutocompleters:function(form){var nodes=this.getInputNodes(form,this.options.autoCompleteClass);for(var i=0;i<nodes.length;i++){if(nodes[i].type.toUpperCase()=="TEXT"){this.buildAutoCompleter(YAHOO.util.Dom.generateId(nodes[i]))}}},buildAutoCompleter:function(id){var beanName=$(id+"_autoCompleteBeanName").value;var requestUri=this.options.autoCompleteController+"json-recordset.cfm?beanName="+beanName+"&";var dataSource=new YAHOO.util.XHRDataSource(requestUri);dataSource.responseType=YAHOO.util.DataSource.TYPE_JSON;dataSource.connXhrMode="queueRequests";dataSource.responseSchema={resultsList:"ResultSet",fields:["value","id"]};var autoComplete=new YAHOO.widget.AutoComplete(id,id+"_autoCompleteContainer",dataSource);autoComplete.queryDelay=0.5;autoComplete.useShadow=true;autoComplete.minQueryLength=3;autoComplete.generateRequest=function(q){var querystring="q="+q;if($(id+"_autoCompleteParams")){querystring+="&"+$(id+"_autoCompleteParams").value}return querystring};var hiddenField=$(id+"_autoCompleteValue");autoComplete.itemSelectEvent.subscribe(function(type,args){var acControl=args[0];var data=args[2];hiddenField.value=data[data.length-1];var showValue=data[0];showValue+=" ("+data[data.length-1]+")";$(id).value=YAHOO.lang.trim(showValue);var callbackField=$(id+"_autoCompleteOnSelectCallbackString");if(callbackField){if(callbackField.value.length>0){if(callbackField.value.substr(0,7)=="thurber"){window.thurber[callbackField.value.substr(8)](id)}else{eval(callbackField.value)}}}});autoComplete.textboxChangeEvent.subscribe(function(){if(YAHOO.lang.trim($(id).value).length==0){hiddenField.value=""}});autoComplete.formatResult=function(resultData,q,sResultMatch){var query=q.toLowerCase();var result="";var matchIndex=resultData[0].toLowerCase().indexOf(query);if(matchIndex>-1){result+=" "+highlightMatch(resultData[0],query,matchIndex)}else{result+=" "+resultData[0]}result+=" ("+resultData[resultData.length-1]+")";return YAHOO.lang.trim(result)};var highlightMatch=function(full,snippet,matchindex){return full.substring(0,matchindex)+"<span class='match'>"+full.substr(matchindex,snippet.length)+"</span>"+full.substring(matchindex+snippet.length)}},attachCalendars:function(form){var nodes=this.getInputNodes(form,this.options.calendarClass);for(var i=0;i<nodes.length;i++){if(nodes[i].type.toUpperCase()!="HIDDEN"){this.buildDateCalendar(YAHOO.util.Dom.generateId(nodes[i]))}}},buildDateCalendar:function(id){var calendarContainer=document.createElement("div");YAHOO.Tools.insertAfter(calendarContainer,$(id));var dialog=new YAHOO.widget.Dialog(id+"-yuiCalendarContainer",{visible:false,context:[id,"tl","bl",["beforeShow"]],buttons:[{text:"Reset",handler:{fn:function(e,obj){var calendar=this.calendars[obj.id];calendar.clear()},scope:this,obj:{id:id}},isDefault:true},{text:"OK",handler:function(){this.hide()}}],draggable:true,close:true});dialog.setHeader("Pick A Date");dialog.setBody('<div id="'+id+'-yuicalendar"></div>');dialog.render(calendarContainer);YAHOO.util.Dom.addClass(id+"-yuiCalendarContainer","yuiCalendarContainer");dialog.showEvent.subscribe(function(){if(YAHOO.env.ua.ie){dialog.fireEvent("changeContent")}});this.calendars[id]=new YAHOO.widget.Calendar(id+"-yuicalendar",{iframe:false,hide_blank_weeks:true});var calendar=this.calendars[id];calendar.render();$(id+"-yuicalendar").style.border="none";$(id+"-yuicalendar").style.padding="1em";calendar.selectEvent.subscribe(function(type,args,obj){var dates=args[0];var date=dates[0];var year=date[0],month=date[1],day=date[2];$(id).value=month+"-"+day+"-"+year;dialog.hide});calendar.renderEvent.subscribe(function(){dialog.fireEvent("changeContent")});YAHOO.util.Event.addListener(id,"click",function(){var el=$(id+"_pagedate");if(el){if(el.value.length>0){calendar.cfg.setProperty("pagedate",el.value)}}if($(id).value.length>0){calendar.select($(id).value.replace(/-/g,"/"))}calendar.render();dialog.render();dialog.show()});YAHOO.util.Event.on(document,"click",function(e){var el=YAHOO.util.Event.getTarget(e);var dialogEl=dialog.element;if(el!=dialogEl&&!YAHOO.util.Dom.isAncestor(dialogEl,el)&&el!=$(id)&&!YAHOO.util.Dom.isAncestor(id,el)){dialog.hide()}})},attachSimpleEditors:function(form){var nodes=this.getTextareaNodes(form,this.options.simpleEditorClass);for(var i=0;i<nodes.length;i++){this.buildSimpleEditor(YAHOO.util.Dom.generateId(nodes[i]))}YAHOO.util.Event.addListener(this.forms,"submit",this.saveEditorHTML,this,true)},buildSimpleEditor:function(id){var editor=new YAHOO.widget.SimpleEditor(id,{height:this.options.simpleEditorHeight+"px",width:"455px",dompath:false,animate:false,resize:true,toolbar:{titlebar:window.webucator.unCamelize(id),buttons:[{group:"textstyle",label:"Font Style",buttons:[{type:"push",label:"Bold",value:"bold"},{type:"push",label:"Italic",value:"italic"},{type:"push",label:"Underline",value:"underline"},{type:"separator"},{type:"select",label:"Arial",value:"fontname",disabled:true,menu:[{text:"Arial",checked:true},{text:"Arial Black"},{text:"Courier New"},{text:"Lucida Console"},{text:"Tahoma"},{text:"Times New Roman"},{text:"Trebuchet MS"},{text:"Verdana"}]},{type:"separator"},{type:"spin",label:"13",value:"fontsize",range:[9,75],disabled:true},{type:"separator"},{type:"color",label:"Font Color",value:"forecolor",disabled:true},{type:"color",label:"Background Color",value:"backcolor",disabled:true}]},{group:"alignment",label:"Alignment",buttons:[{type:"push",label:"Align Left CTRL + SHIFT + [",value:"justifyleft"},{type:"push",label:"Align Center CTRL + SHIFT + |",value:"justifycenter"},{type:"push",label:"Align Right CTRL + SHIFT + ]",value:"justifyright"},{type:"push",label:"Justify",value:"justifyfull"}]},{type:"separator"},{group:"parastyle",label:"Paragraph Style",buttons:[{type:"select",label:"Normal",value:"heading",disabled:true,menu:[{text:"Normal",value:"none",checked:true},{text:"Header 1",value:"h1"},{text:"Header 2",value:"h2"},{text:"Header 3",value:"h3"},{text:"Header 4",value:"h4"},{text:"Header 5",value:"h5"},{text:"Header 6",value:"h6"}]}]},{type:"separator"},{group:"indentlist",label:"Lists",buttons:[{type:"push",label:"Indent",value:"indent"},{type:"push",label:"Outdent",value:"outdent"},{type:"push",label:"Create an Unordered List",value:"insertunorderedlist"},{type:"push",label:"Create an Ordered List",value:"insertorderedlist"}]},]}});editor.render();YAHOO.util.Event.onAvailable(id+"_container",function(obj){if(YAHOO.env.ua.ie>0){$(obj.id+"_container").style.styleFloat="left"}else{$(obj.id+"_container").style.cssFloat="left"}},{id:id});editor.on("editorKeyUp",function(){editor.saveHTML()});this.editors.push(editor)},saveEditorHTML:function(){for(var i=0;i<this.editors.length;i++){this.editors[i].saveHTML()}},destroyEditors:function(){for(var i=0;i<this.editors.length;i++){this.editors[i].destroy()}},attachIndicators:function(form){var nodes=this.getInputNodes(form,this.options.requiredClass);nodes.concat(this.getTextareaNodes(form,this.options.requiredClass));
for(var i=0;i<nodes.length;i++){if(nodes[i].type.toUpperCase()!="HIDDEN"){YAHOO.util.Dom.generateId(nodes[i]);var id=nodes[i].id+"-indicator";if(!$(id)){var divEl=nodes[i].parentNode;if(YAHOO.util.Dom.hasClass(divEl,"autocompleter")){var divEl=divEl.parentNode}if(YAHOO.util.Dom.hasClass(divEl,"req")){YAHOO.util.Dom.removeClass(divEl,"req");YAHOO.util.Dom.addClass(divEl,"required");if(YAHOO.env.ua.ie>0){divEl.style.background="none";divEl.style.filter=""}}if(nodes[i].type.toUpperCase()!="CHECKBOX"&&nodes[i].type.toUpperCase()!="RADIO"){this.createFormIndicator(nodes[i])}}}}YAHOO.util.Event.on(nodes,"keyup",function(e){var event=e||window.event;var element=event.target||event.srcElement;this.toggleIndicators(element)},this,true);YAHOO.util.Event.on(nodes,"blur",function(e){var event=e||window.event;var element=event.target||event.srcElement;this.toggleIndicators(element)},this,true);YAHOO.util.Event.on(nodes,"change",function(e){var event=e||window.event;var element=event.target||event.srcElement;this.toggleIndicators(element)},this,true)},toggleIndicators:function(input){var input=$(input);var div=$(input.id+"-indicator");var divEl=new YAHOO.util.Element(div);var inputEl=new YAHOO.util.Element(input);if(input.type.toUpperCase()=="TEXT"){var val=YAHOO.lang.trim(input.value)}else{if(input.type.toUpperCase()=="TEXTAREA"){var val=YAHOO.lang.trim(input.value)}else{if(input.type.toUpperCase()=="SELECT"){var val=YAHOO.lang.trim(input.options[input.selectedIndex].value)}else{if(input.type.toUpperCase()=="PASSWORD"){var val=YAHOO.lang.trim(input.value)}}}}if(val==""){this.setIndicatorState(input,false)}else{this.setIndicatorState(input,true)}},setIndicatorState:function(input,valid){var dom=YAHOO.util.Dom;var el=$(input);var indicator=$(el.id+"-indicator");if(indicator!=null){if(valid){if(dom.hasClass(indicator,"req-notchecked")){dom.removeClass(indicator,"req-notchecked")}if(!dom.hasClass(indicator,"req-checked")){dom.addClass(indicator,"req-checked")}}else{if(dom.hasClass(indicator,"req-checked")){dom.removeClass(indicator,"req-checked")}if(!dom.hasClass(indicator,"req-notchecked")){dom.addClass(indicator,"req-notchecked")}}}},createFormIndicator:function(input){var dom=YAHOO.util.Dom;var el=dom.get(input);var indicator=dom.get(el.id+"-indicator");if(indicator==null){indicator=document.createElement("div");indicator.setAttribute("id",el.id+"-indicator");indicator.setAttribute("class","req-notchecked");YAHOO.Tools.insertAfter(indicator,el);indicator.style.height="20px";this.toggleIndicators(input)}},removeFormIndicator:function(input){var dom=YAHOO.util.Dom;var el=dom.get(input);var indicator=dom.get(el.id+"-indicator");if(indicator!=null){if(dom.hasClass(indicator,"req-notchecked")){dom.removeClass(indicator,"req-notchecked")}if(dom.hasClass(indicator,"req-checked")){dom.removeClass(indicator,"req-checked")}}},attachSubmitButtonDisabler:function(form){var nodes=YAHOO.util.Dom.getElementsByClassName("disableonclick","input",form);for(var i=0;i<nodes.length;i++){this.buildDisabler(nodes[i])}},buildDisabler:function(node){var dummy=document.createElement("input");var id=YAHOO.util.Dom.generateId(dummy);dummy.value="Please Wait";dummy.disabled=true;dummy.type="button";dummy.style.display="none";dummy.style.marginLeft="130px";YAHOO.util.Dom.addClass(dummy,"submitbutton");node.parentNode.appendChild(dummy);node.onclick=function(e){dummy.style.display="block";node.style.display="none";return true}},enableSubmittedForm:function(form){var submitButtons=YAHOO.util.Dom.getElementsByClassName("submitbutton","input",form);for(var i=0;i<submitButtons.length;i++){if(YAHOO.util.Dom.hasClass(submitButtons[i],"disableonclick")){submitButtons[i].style.display="inline";submitButtons[i].disabled=false}else{submitButtons[i].style.display="none";submitButtons[i].disabled=true}}},validate:function(){var valid=true;for(var i=0;i<this.forms.length;i++){var form=this.forms[i];result=this.validateForm(form);if(!result){valid=false}}return valid},validateForm:function(form){var nodes=this.getInputNodes(form,"required");nodes.concat(this.getTextareaNodes(form,"required"));var invalidNodes=[];for(var i=0;i<nodes.length;i++){if(nodes[i].type.toUpperCase().match(/^(TEXT|TEXTAREA)$/gi)){if(YAHOO.lang.trim(nodes[i].value)==""){invalidNodes.push(nodes[i])}}}if(invalidNodes.length){for(var i=0;i<invalidNodes.length;i++){YAHOO.util.Dom.addClass(nodes[i],"invalid")}window.alert("Fields marked with a red check mark are required.");return false}return true},validateEmail:function(email){if(email.search(/@/)>0&&email.search(/\./)>0){return true}else{return false}},getInputNodes:function(form,className){var inputNodes=form.getElementsByTagName("input");var nodes=[];for(var i=0;i<inputNodes.length;i++){if(YAHOO.util.Dom.hasClass(inputNodes[i].parentNode,className)){nodes.push(inputNodes[i])}if(YAHOO.util.Dom.hasClass(inputNodes[i].parentNode,this.options.autoCompleteClass)){if(YAHOO.util.Dom.hasClass(inputNodes[i].parentNode.parentNode,className)){nodes.push(inputNodes[i])}}}return nodes},getSelectNodes:function(form,className){var inputNodes=form.getElementsByTagName("select");var nodes=[];for(var i=0;i<inputNodes.length;i++){if(YAHOO.util.Dom.hasClass(inputNodes[i].parentNode,className)){nodes.push(inputNodes[i])}}return nodes},getTextareaNodes:function(form,className){var inputNodes=form.getElementsByTagName("textarea");var nodes=[];for(var i=0;i<inputNodes.length;i++){if(YAHOO.util.Dom.hasClass(inputNodes[i].parentNode,className)){nodes.push(inputNodes[i])}}return nodes}};YAHOO.com.webucator.Form=Form})();