﻿
function formElement_onFieldFocus(id){Ext.fly(id).addClass("selected");}
function formElement_onFieldBlur(id){Ext.fly(id).removeClass("selected");}
function formElement_disableButton(name){var o=this.getElementById(name);o.disabled=true;Ext.fly(o).addClass("disabled");}
function formElement_enableButton(name){var o=this.getElementById(name);o.disabled=false;Ext.fly(o).removeClass("disabled");}
function formElement_disableFields(theGroup){Ext.fly(theGroup).addClass("disabled");var elements=theGroup.getElementsByTagName("*");for(var i=0;i<elements.length;i++){var element=elements[i];element.blur();element.disabled="true";}}
function formElement_enableFields(theGroup){Ext.fly(theGroup).removeClass("disabled");var elements=theGroup.getElementsByTagName("*");for(var i=0;i<elements.length;i++){var element=elements[i];element.disabled="";}}
function formElement_persistFieldToXML(fieldName){var xpath=this.field(fieldName).xpath;if(this.doc){var n=this.selectSingleNode("ajax/payload/"+xpath,this.doc);if(n){n.nodeValue=this.field(fieldName).value;}else{alert("xpath '"+xpath+"' not found for field '"+fieldName+"'");}}}
function formElement_setFieldValue(fieldName,value){var f=this.field(fieldName);if(!f){return;}
if(typeof(f.checked)!=="undefined"){f.checked=value;}else{f.value=value;}
var linkedGroup=f.getAttribute("linkedToDiv");if(linkedGroup){var theGroup=this.getElementById(linkedGroup);if(theGroup){if(f.checked){this.enableFields(theGroup);}else{this.disableFields(theGroup);}}}}
function formElement_setFieldFromXML(fieldName){var xpath=this.field(fieldName).xpath;if(this.doc){var n=this.selectSingleNode("ajax/payload/"+xpath,this.doc);if(n){this.field(fieldName).value=n.nodeValue;}else{alert("xpath '"+xpath+"' not found for field '"+fieldName+"'");}}}
function formElement_linkedDivOnClick(id){var el=Ext.fly(id);var theGroup=this.getElementById(el.dom.getAttribute("linkedToDiv"));if(el.dom.checked){this.enableFields(theGroup);}else{this.disableFields(theGroup);}}
function formElement_setFieldFocus(name){var spl=name.split("_");var fieldScriptletId=spl.shift();var el=AS(fieldScriptletId).field(spl.join("_"));if(el&&((el.type=="text")||(el.nodeName=="textarea")||(el.type=="password"))&&(el.disabled=="")&&(el.focus)&&(el.name!="")){var elCheck=el;var allOk=true;while(elCheck&&elCheck.style){if(elCheck.style.display=="none"){allOk=false;break;}
elCheck=elCheck.parentNode;}
if(allOk){el.focus();}}}
function formElement_hideElement(elementId){var el=Ext.fly(elementId);if(!el)return;var opacity=el.getStyle('opacity');if(opacity>0){opacity-=.05;el.setStyle('opacity',opacity);setTimeout("AS("+this.id+").hideElement('"+el.id+"');",40);}else{el.dom.style.display="none";}}
function formElement_showElement(elementId){var el=Ext.fly(elementId);if(!el)return;var opacity=el.getStyle('opacity');if(el.dom.style.display=="none"){opacity=0;}
if(opacity<1){opacity+=.05;el.setStyle('opacity',opacity);setTimeout("AS("+this.id+").showElement('"+el.id+"');",40);}
if(el.dom.style.display=="none"){el.dom.style.display="block";}}
function formElement_hideMessages(){Ext.get(document).on("mousedown",function(){Ext.select(".message").enableDisplayMode().hide(true);},this,{single:true});}
function formElement_showMessage(msg){var message=this.getElementById("message");if(message){message.innerHTML="<div id='"+this.id+"_messageWrapper' class='message'>"+msg.htmlEncode()+"</div>";this.hideMessages();}}
function formElement_setErrorsFromXml(responseDoc){for(var fieldName in this.formElementErrors){this.clearError(fieldName);}
var nl=this.selectNodes("errors/field",responseDoc);for(var i=0;i<nl.length;i++){var s="";var fieldName=nl[i].getAttribute("name")
var errors=this.selectNodes("error/#text",nl[i]);for(var j=0;j<errors.length;j++){s+="<div>"+errors[j].nodeValue+"</div>";}
this.setError(fieldName,s);}
return(nl.length==0);}
function formElement_setOriginalValues(){var arr=[document.getElementsByTagName("input"),document.getElementsByTagName("textarea")];for(var j=0;j<arr.length;j++){var elements=arr[j];for(var i=0;i<elements.length;i++){var el=elements[i];el.originalValue=el.value;}}}
function formElement_setError(name,message){var wrapper=this.getElementById(name+"_wrapper");Ext.fly(wrapper).addClass("formElementError");var elements=document.getElementsByClassName("error",wrapper);var el;if(elements.length==0){el=document.createElement("div");el.className="error";wrapper.appendChild(el);}else{el=elements[0];}
el.innerHTML=message;this.formElementErrors[name]=message;}
function formElement_clearError(name){var wrapper=this.getElementById(name+"_wrapper");Ext.fly(wrapper).removeClass("formElementError");var elements=document.getElementsByClassName("error",wrapper);if(elements.length>0){elements[0].parentNode.removeChild(elements[0]);}
delete this.formElementErrors[name];}
function formElement_validateMandatory(fields){var ok=true;for(var i=0;i<fields.length;i++){var name=fields[i];var f=this.field(name);if(f){var hasValue=false;if(typeof(f)==="object"&&typeof(f.length)==="number"){for(var j=0;!hasValue&&j<f.length;j++){if(typeof(f[j].selected)!=="undefined"){hasValue=f[j].selected;}else if(typeof(f[j].checked)!=="undefined"){hasValue=f[j].checked;}else if(typeof(f[j].value)!=="undefined"){var value=f[j].value;value=new String(value).replace(/\s*/g,"");hasValue=value!="";}}}else{var value=this.field(name).value;value=new String(value).replace(/\s*/g,"");hasValue=value!="";}
if(!hasValue){this.setError(name,__tr('Please enter a value.'));ok=false;}else{this.clearError(name);}}}
return ok;}
function formElement_serializeFormToXml(parentNode,fields){for(var i=0;i<fields.length;i++){var el=parentNode.ownerDocument.createElement(fields[i]);parentNode.appendChild(el);var a=this.field(fields[i]);el.nodeTypedValue=this.field(fields[i]).value;}}
function formElement_deserializeFormFromXml(parentNode){var nl=parentNode.childNodes;for(var i=0;i<nl.length;i++){var o=this.field(nl[i].nodeName);var nodeValue="";var children=nl[i].childNodes;for(var j=0;j<children.length;j++){if(children[j].nodeType==3){nodeValue=children[j].nodeValue;break;}}
if(o){if(o.options){for(var j=0;j<o.options.length;j++){if(o.options[j].value==nodeValue){o[j].selected=true;}}}else{o.value=nodeValue;}}}}
function formElement_navigateTo(gotoUrl){var thisUrlObject=this.field("thisUrl");if(thisUrlObject){thisUrl=thisUrlObject.value;if(this.field("backTo")){thisUrl+=(thisUrl.indexOf("?")>=0?"&":"?")+"backTo="+escape(this.field("backTo").value);}
gotoUrl+=(gotoUrl.indexOf("?")>=0?"&":"?")+"backTo="+escape(thisUrl);}
if((window.opener!=null)&&(!window.opener.closed)){var xDomain=false;try{var l=window.opener.location.host;}
catch(e){xDomain=true;}
if(!xDomain){window.opener.location=gotoUrl;return;}}
xsrf_nav(gotoUrl);}
function formElement_navigateBack(){var thisUrlObject=this.field("backTo");if(!thisUrlObject){alert("Assertion failed: no backTo field object found");return;}
var backTo=thisUrlObject.value;if(backTo==""){backTo=this.field("defaultBackTo").value;if(backTo==""){alert("Assertion failed: backTo field empty");return;}}
xsrf_nav(backTo);}
function formElement_isElementVisible(el){var allOk=true;var elCheck=el;while(elCheck&&(elCheck.nodeType==1)){var displayStyle=Ext.fly(elCheck).getStyle("display");if(displayStyle=="none"){allOk=false;break;}
elCheck=elCheck.parentNode;}
return allOk}
function formElement_setFocusOnFirstField(rootObject){if(!rootObject){rootObject=document;}
var arr=[rootObject.getElementsByTagName("input"),rootObject.getElementsByTagName("textarea")];for(var j=0;j<arr.length;j++){var elements=arr[j];for(var i=0;i<elements.length;i++){var el=elements[i];if(((el.type=="text")||(el.nodeName=="TEXTAREA")||(el.type=="password"))&&(el.disabled=="")&&(el.focus)&&(el.name!="")&&(el.name.split("_").length>0)&&(!isNaN(parseInt(el.name.split("_")[0])))){if(this.isElementVisible(el)){if(ASPEN.Window.isOnScreen(el)){el.blur();setTimeout("AS("+this.id+").setFieldFocus('"+el.name+"');",50);break;}}}}}}
function formElement_applyFormElementInit(rootObject){var elements=document.getElementsByClassName("text",rootObject);for(var i=0;i<elements.length;i++){var el=Ext.get(elements[i]);el.on("focus",this.onFieldFocus.createDelegate(this,[el.id]));el.on("blur",this.onFieldBlur.createDelegate(this,[el.id]));}
var elements=document.getElementsByClassName("linkedToDiv");for(var i=0;i<elements.length;i++){var theGroup=this.getElementById(elements[i].getAttribute("linkedToDiv"));if(theGroup==null){return;}
var el=Ext.get(elements[i]);el.on("click",this.linkedDivOnClick.createDelegate(this,[el.id]));if(elements[i].checked){this.enableFields(theGroup);}else{this.disableFields(theGroup);}}
this.setOriginalValues();}
function formElement_renderText(name,args){var out=[];var formElementName=this.id+"_"+name;out.push("<div class='formElement formElementText' id='"+formElementName+"_wrapper'>");if(args.label){out.push("<label for='"+formElementName+"_field' id='"+formElementName+"_label'>"+args.label.htmlEncode()+"</label>");}
out.push("<input class='text' value=\""+(args.value?(new String(args.value)).htmlEncode():"")+"\" type='text' id='"
+formElementName+"_field' name='"+formElementName+"' size='"+(args.size?args.size:20)+"'"
+(args.style?" style='"+args.style+"'":"")
+(args.onchange?" onchange='"+args.onchange.replace(/'/g,"\"")+"'":"")
+"/>");out.push("</div>");return out.join("");}
function formElement_renderTextArea(name,args){var out=[];var formElementName=this.id+"_"+name;out.push("<div class='formElement' id='"+formElementName+"_wrapper'>");if(args.label){out.push("<label for='"+formElementName+"_field'>"+args.label.htmlEncode()+"</label>");}
if(args.readOnly){out.push("<div>"+(args.value?args.value.htmlEncode():"")+"</div>");}else{out.push("<textarea  id='"+formElementName+"_field' name='"+formElementName+"'"
+(args.cols?" cols='"+args.cols+"'":"")
+(args.rows?" rows='"+args.rows+"'":"")
+(args.style?" style='"+args.style+"'":"")
+(args.className?" class='"+args.className+"'":"")
+(args.onchange?" onchange='"+args.onchange.replace(/'/g,"\"")+"'":"")
+">"+(args.value?args.value.htmlEncode():"")+"</textarea>");}
out.push("</div>");return out.join("");}
function formElement_renderCheckboxOrRadio(name,value,args){var out=[];var htmlName=this.id+"_"+name;out.push("<label for='"+htmlName+"_value_"+value+"' class='checkboxOrRadio'>");out.push("<input type='"+(!args.type?"checkbox":args.type)+"' value='"+value+"' name='"+htmlName+"' id='"+htmlName+"_value_"+value+"'");if(args.linkedToDiv){out.push(" class='linkedToDiv' linkedToDiv='"+args.linkedToDiv+"'");}
if(args.checked==true){out.push(" checked='checked'");}
if(args.onclick){out.push(" onclick='"+args.onclick.replace(/'/g,"\"")+"'");}
out.push("/>");if(args.label){out.push("&#160;"+args.label);}
out.push("</label>");return out.join("");}
function formElement_renderCheckbox(name,value,args){return this.renderCheckboxOrRadio(name,value,args);}
function formElement_renderDropdown(name,items,args){var out=[];var htmlName=this.id+"_"+name;if(args.label){out.push("<label id='"+htmlName+"_label' for='"+htmlName+"_field'>"+args.label.htmlEncode()+"</label>");}
out.push("<div id='"+htmlName+"_wrapper' class='formElement'"+(!args.label?" style='display:inline'":"")+">");out.push("<select name='"+htmlName+"' id='"+htmlName+"_field'")
if(args.style){out.push(" style='"+args.style+"'");}
if(args.onchange){out.push(" onchange='"+args.onchange.replace(/'/g,"\"")+"'");}
if(args.tabIndex){out.push(" tabindex='"+args.tabIndex+"'");}
out.push("/>");if(args.blankAtTop){out.push("<option></option>");}
for(var i=0;i<items.length;i++){var val=items[i].value;var sel=(args.value==val)?" selected='selected'":"";out.push("<option value='"+val+"'"+sel+">"+items[i].label.htmlEncode()+"</option>");}
out.push("</select></div>");return out.join("");}
function formElement_renderCheckboxesOrRadioButtons(name,items,args,type){var out=[];var htmlName=this.id+"_"+name;if(args.label){out.push("<label for='"+htmlName+"_field'>"+args.label.htmlEncode()+"</label>");}
out.push("<div id='"+htmlName+"_wrapper' class='formElement'>");var values=args.value;if(values==null){values=[];}else if(!ASPEN.Utils.IsArray(values)){values=[values];}
for(var i=0;i<items.length;i++){var val=items[i].value;var arr=clone(items[i],true);arr.type=type;for(var j=0;j<values.length;j++){if(String(val)==String(values[j])){arr.checked=true;}}
out.push("<div class='"+type+"'>"+this.renderCheckboxOrRadio(name,val,arr)+"</div>");}
out.push("</div>");return out.join("");}
function formElement_renderCheckboxes(name,items,args){return this.renderCheckboxesOrRadioButtons(name,items,args,"checkbox");}
function formElement_renderRadioButtons(name,items,args){return this.renderCheckboxesOrRadioButtons(name,items,args,"radio");}
function formElement_get(name){return Ext.get(this.id+"_"+name);}
function formElement(id,quick){this.base=AspenScriptlet;this.base(id);this.get=formElement_get;this.onFieldFocus=formElement_onFieldFocus;this.onFieldBlur=formElement_onFieldBlur;this.disableFields=formElement_disableFields;this.enableFields=formElement_enableFields;this.persistFieldToXML=formElement_persistFieldToXML;this.setFieldFromXML=formElement_setFieldFromXML;this.linkedDivOnClick=formElement_linkedDivOnClick;this.setFieldFocus=formElement_setFieldFocus;this.hideElement=formElement_hideElement;this.showElement=formElement_showElement;this.hideMessages=formElement_hideMessages;this.showMessage=formElement_showMessage;this.setOriginalValues=formElement_setOriginalValues;this.validateMandatory=formElement_validateMandatory;this.setError=formElement_setError;this.clearError=formElement_clearError;this.serializeFormToXml=formElement_serializeFormToXml;this.deserializeFormFromXml=formElement_deserializeFormFromXml;this.setErrorsFromXml=formElement_setErrorsFromXml;this.navigateTo=formElement_navigateTo;this.navigateBack=formElement_navigateBack;this.isElementVisible=formElement_isElementVisible;this.setFocusOnFirstField=formElement_setFocusOnFirstField;this.disableButton=formElement_disableButton;this.enableButton=formElement_enableButton;this.setFieldValue=formElement_setFieldValue;this.renderText=formElement_renderText;this.renderTextArea=formElement_renderTextArea;this.renderCheckboxOrRadio=formElement_renderCheckboxOrRadio;this.renderCheckbox=formElement_renderCheckbox;this.renderCheckboxes=formElement_renderCheckboxes;this.renderCheckboxesOrRadioButtons=formElement_renderCheckboxesOrRadioButtons;this.renderDropdown=formElement_renderDropdown;this.renderRadioButtons=formElement_renderRadioButtons;this.formElementErrors={};this.applyFormElementInit=formElement_applyFormElementInit;this.hideMessages();if(!quick){this.applyFormElementInit();this.setFocusOnFirstField.defer(500,this,[]);}}