function Hashtable(){this.clear=hashtable_clear;this.containsKey=hashtable_containsKey;this.containsValue=hashtable_containsValue;this.get=hashtable_get;this.isEmpty=hashtable_isEmpty;this.keys=hashtable_keys;this.put=hashtable_put;this.remove=hashtable_remove;this.size=hashtable_size;this.toString=hashtable_toString;this.values=hashtable_values;this.hashtable={}}function hashtable_clear(){this.hashtable=[]}function hashtable_containsKey(n){var t=!1;for(var i in this.hashtable)if(i==n&&this.hashtable[i]!=null){t=!0;break}return t}function hashtable_containsValue(n){var t=!1,i;if(n!=null)for(i in this.hashtable)if(this.hashtable[i]==n){t=!0;break}return t}function hashtable_get(n){return this.hashtable[n]}function hashtable_isEmpty(){return parseInt(this.size())==0?!0:!1}function hashtable_keys(){var n=[];for(var t in this.hashtable)this.hashtable[t]!=null&&n.push(t);return n}function hashtable_put(n,t){if(n==null||t==null)throw"NullPointerException {"+n+"},{"+t+"}";else this.hashtable[n]=t}function hashtable_remove(n){var t=this.hashtable[n];return this.hashtable[n]=null,t}function hashtable_size(){var n=0;for(var t in this.hashtable)this.hashtable[t]!=null&&n++;return n}function hashtable_toString(){var t="";for(var n in this.hashtable)this.hashtable[n]!=null&&(t+="{"+n+"},{"+this.hashtable[n]+"}\n");return t}function hashtable_values(){var n=[];for(var t in this.hashtable)this.hashtable[t]!=null&&n.push(this.hashtable[t]);return n}function VariableParts(n){var t=n.split("|");this._dataType=t[0];this._varName=t[1];this._varValue=t[2];this._controlType=GetControlType(this._dataType)}function GetControlType(n){var t="";switch(n){case"Boolean":t="checkbox";break;case"String":case"Numeric":t="text"}return t}function VariableStore(n,t){var r,i;for(this._permissionName=n,this._variables=[],r=t.split("$$"),i=0;i<r.length;i++)this._variables[i]=new VariableParts(r[i])}function FormField(n,t,i){n&&(this._root=this.CreateElement("div","formfield"),this._label=this.CreateElement("div","padding_b2_label bold"),this._controlWrapper=this.CreateElement("div","padding_b2"),this._control=null,this.CreateControl(n),this._root.appendChild(this._label),this._root.appendChild(this._controlWrapper),this._controlWrapper.appendChild(this._control),i?t.insertBefore(this._root,i):t.appendChild(this._root))}function CreateFormFieldFrom(n){var t=new FormField;return t._root=n,t._label=n.childNodes[0],t._controlWrapper=n.childNodes[1],t._control=n.childNodes[1].childNodes[0],t}function showPermissionSettings(n,t,i,r,u){clearOldFormFields();$get("selStatus").value=t;$get("selCharge").value=i;g_variableStore=new VariableStore(n,r);g_variableStore._variables.length>1&&createVariableFormFields();$get("hfIsDeltaValue").value=u;$find("editvariables").show()}function updateVariableStore(n){g_variableStore.UpdateAllVariables();var i=$get("selStatus"),r=$get("selCharge"),t="|";$get(n).value=g_variableStore._permissionName+t+i.options[i.selectedIndex].value+t+r.options[r.selectedIndex].value+t+$get("hfIsDeltaValue").value+t+g_variableStore.VariablesToString()}function createVariableFormFields(){for(var n,t,r=$get("divFormFields"),u=$get("divFormFieldEnd"),i=1;i<g_variableStore._variables.length;i++)n=g_variableStore._variables[i],t=new FormField(n._controlType,r,u),t.SetLabel(n._varName),t.InitControl(n._varName,n._varValue),$(t._control).css({display:"inline-block",float:"none"})}function clearOldFormFields(){for(var t=$get("divFormFields"),i=0,n=0;n<t.childNodes.length;n++)t.childNodes[n].className==="formfield"&&(i++,i>2&&(t.removeChild(t.childNodes[n]),n--))}function PasswordValidation(n,t,i){this.minChars=n;this.minNonAlphaChars=t;this.restrictedStrings=i}VariableParts.prototype.ToString=function(){return this._dataType.length<2?"":this._dataType+":"+this._varName+":"+this._varValue};VariableStore.prototype.UpdateAllVariables=function(){for(var i,t=$get("divFormFields"),r=0,n=0;n<t.childNodes.length;n++)t.childNodes[n].className==="formfield"&&(r++,r>1&&(i=CreateFormFieldFrom(t.childNodes[n]),this.UpdateVariable(i._control.id,i._control.value)))};VariableStore.prototype.UpdateVariable=function(n,t){for(var i=0;i<this._variables.length;i++)this._variables[i]._varName===n&&(this._variables[i]._varValue=t)};VariableStore.prototype.VariablesToString=function(){for(var i,n="",t=0;t<this._variables.length;t++)i=this._variables[t].ToString(),i.length>1&&(n=n+i,n=n+"$$");return n.length>0&&(n=n.substring(0,n.length-2)),n};FormField.prototype.SetLabel=function(n){this._label.innerHTML=n};FormField.prototype.SetValueStore=function(n){this._store=n};FormField.prototype.InitControl=function(n,t){this._control.id=n;this._control.value=t};FormField.prototype.CreateElement=function(n,t){var i=document.createElement(n);return t&&(i.className=t),i};FormField.prototype.CreateControl=function(n){this._control=this.CreateElement("input");this._control.type=n};var g_variableStore;PasswordValidation.prototype.IsSecure=function(n){return this.Validate(n).IsValid()};PasswordValidation.prototype.Validate=function(n){var t=n.match(/[a-zA-Z]/g),i=t!=null?t.length:0,r=n.length-i;return{isValidLength:n.length>=this.minChars,isValidNonAlphaLength:r>=this.minNonAlphaChars,hasRestrictedStrings:this.ContainsRestrictedString(n),IsValid:function(){return this.isValidLength&&this.isValidNonAlphaLength&&!this.hasRestrictedStrings}}};PasswordValidation.prototype.ContainsRestrictedString=function(n){for(var i=n.toLowerCase(),t=0;t<this.restrictedStrings.length;t++)if(i.indexOf(this.restrictedStrings[t].toLowerCase())>-1)return!0;return!1}