var Spry;
if(!Spry){
Spry={};
}
if(!Spry.Widget){
Spry.Widget={};
}
Spry.Widget.BrowserSniff=function(){
var b=navigator.appName.toString();
var up=navigator.platform.toString();
var ua=navigator.userAgent.toString();
this.mozilla=this.ie=this.opera=r=false;
var _1=/Opera.([0-9\.]*)/i;
var _2=/MSIE.([0-9\.]*)/i;
var _3=/gecko/i;
var _4=/safari\/([\d\.]*)/i;
if(ua.match(_1)){
r=ua.match(_1);
this.opera=true;
this.version=parseFloat(r[1]);
}else{
if(ua.match(_2)){
r=ua.match(_2);
this.ie=true;
this.version=parseFloat(r[1]);
}else{
if(ua.match(_4)){
this.safari=true;
this.version=1.4;
}else{
if(ua.match(_3)){
var _5=/rv:\s*([0-9\.]+)/i;
r=ua.match(_5);
this.mozilla=true;
this.version=parseFloat(r[1]);
}
}
}
}
this.windows=this.mac=this.linux=false;
this.Platform=ua.match(/windows/i)?"windows":(ua.match(/linux/i)?"linux":(ua.match(/mac/i)?"mac":ua.match(/unix/i)?"unix":"unknown"));
this[this.Platform]=true;
this.v=this.version;
if(this.safari&&this.mac&&this.mozilla){
this.mozilla=false;
}
};
Spry.is=new Spry.Widget.BrowserSniff();
Spry.Widget.ValidationTextarea=function(_6,_7){
_7=_7||{};
this.flags={locked:false};
this.options={};
this.element=_6;
this.init(_6);
if(!this.isBrowserSupported()){
return;
}
_7.useCharacterMasking=Spry.Widget.Utils.firstValid(_7.useCharacterMasking,true);
_7.hint=Spry.Widget.Utils.firstValid(_7.hint,"");
_7.isRequired=Spry.Widget.Utils.firstValid(_7.isRequired,true);
Spry.Widget.Utils.setOptions(this,_7);
Spry.Widget.Utils.setOptions(this.options,_7);
var _8=["submit"].concat(Spry.Widget.Utils.firstValid(this.options.validateOn,[]));
_8=_8.join(",");
this.validateOn=0;
this.validateOn=this.validateOn|(_8.indexOf("submit")!=-1?Spry.Widget.ValidationTextarea.ONSUBMIT:0);
this.validateOn=this.validateOn|(_8.indexOf("blur")!=-1?Spry.Widget.ValidationTextarea.ONBLUR:0);
this.validateOn=this.validateOn|(_8.indexOf("change")!=-1?Spry.Widget.ValidationTextarea.ONCHANGE:0);
if(Spry.Widget.ValidationTextarea.onloadDidFire){
this.attachBehaviors();
}else{
Spry.Widget.ValidationTextarea.loadQueue.push(this);
}
};
Spry.Widget.ValidationTextarea.ONCHANGE=1;
Spry.Widget.ValidationTextarea.ONBLUR=2;
Spry.Widget.ValidationTextarea.ONSUBMIT=4;
Spry.Widget.ValidationTextarea.INITIAL="Initial";
Spry.Widget.ValidationTextarea.REQUIRED="Required";
Spry.Widget.ValidationTextarea.INVALID="Invalid Format";
Spry.Widget.ValidationTextarea.MINIMUM="Minimum Number of Chars Not Met";
Spry.Widget.ValidationTextarea.MAXIMUM="Maximum Number of Chars Exceeded";
Spry.Widget.ValidationTextarea.VALID="Valid";
Spry.Widget.ValidationTextarea.prototype.init=function(_9){
this.element=this.getElement(_9);
this.event_handlers=[];
this.requiredClass="textareaRequiredState";
this.invalidCharsMaxClass="textareaMaxCharsState";
this.invalidCharsMinClass="textareaMinCharsState";
this.validClass="textareaValidState";
this.focusClass="textareaFocusState";
this.textareaFlashClass="textareaFlashState";
this.isMaxInvalid=false;
this.isMinInvalid=false;
this.isRequireInvalid=false;
this.safariClicked=false;
this.state=Spry.Widget.ValidationTextarea.INITIAL;
};
Spry.Widget.ValidationTextarea.prototype.destroy=function(){
for(var i=0;i<this.event_handlers.length;i++){
Spry.Widget.Utils.removeEventListener(this.event_handlers[i][0],this.event_handlers[i][1],this.event_handlers[i][2],false);
}
try{
delete this.element;
}
catch(err){
}
try{
delete this.input;
}
catch(err){
}
try{
delete this.counterEl;
}
catch(err){
}
try{
delete this.form;
}
catch(err){
}
try{
delete this.event_handlers;
}
catch(err){
}
try{
this.cursorPosition.destroy();
}
catch(err){
}
try{
delete this.cursorPosition;
}
catch(err){
}
try{
this.initialCursor.destroy();
}
catch(err){
}
try{
delete this.initialCursor;
}
catch(err){
}
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var _a=q.length;
for(var i=0;i<_a;i++){
if(q[i]==this){
q.splice(i,1);
break;
}
}
};
Spry.Widget.ValidationTextarea.prototype.isDisabled=function(){
return this.input&&(this.input.disabled||this.input.readOnly)||!this.input;
};
Spry.Widget.ValidationTextarea.prototype.getElement=function(_b){
if(_b&&typeof _b=="string"){
return document.getElementById(_b);
}
return _b;
};
Spry.Widget.ValidationTextarea.addLoadListener=function(_c){
if(typeof window.addEventListener!="undefined"){
window.addEventListener("load",_c,false);
}else{
if(typeof document.addEventListener!="undefined"){
document.addEventListener("load",_c,false);
}else{
if(typeof window.attachEvent!="undefined"){
window.attachEvent("onload",_c);
}
}
}
};
Spry.Widget.ValidationTextarea.processLoadQueue=function(_d){
Spry.Widget.ValidationTextarea.onloadDidFire=true;
var q=Spry.Widget.ValidationTextarea.loadQueue;
var _e=q.length;
for(var i=0;i<_e;i++){
q[i].attachBehaviors();
}
};
Spry.Widget.ValidationTextarea.onloadDidFire=false;
Spry.Widget.ValidationTextarea.loadQueue=[];
Spry.Widget.ValidationTextarea.addLoadListener(Spry.Widget.ValidationTextarea.processLoadQueue);
Spry.Widget.ValidationTextarea.addLoadListener(function(){
Spry.Widget.Utils.addEventListener(window,"unload",Spry.Widget.Form.destroyAll,false);
});
Spry.Widget.ValidationTextarea.prototype.isBrowserSupported=function(){
return Spry.is.ie&&Spry.is.v>=5&&Spry.is.windows||Spry.is.mozilla&&Spry.is.v>=1.4||Spry.is.safari||Spry.is.opera&&Spry.is.v>=9;
};
Spry.Widget.ValidationTextarea.prototype.attachBehaviors=function(){
if(this.element){
if(this.element.nodeName=="TEXTAREA"){
this.input=this.element;
}else{
this.input=Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.element,"TEXTAREA");
}
}
if(this.options&&this.options.counterType&&(this.options.counterType=="chars_count"||this.options.counterType=="chars_remaining")){
this.counterEl=document.getElementById(this.options.counterId);
this.counterChar();
}
if(this.input){
this.input.setAttribute("AutoComplete","off");
this.putHint();
this.cursorPosition=new Spry.Widget.SelectionDescriptor(this.input);
var _f=this;
this.event_handlers=[];
if(this.useCharacterMasking){
if(Spry.is.ie){
this.event_handlers.push([this.input,"propertychange",function(e){
return _f.onKeyEvent(e||event);
}]);
this.event_handlers.push([this.input,"drop",function(e){
return _f.onDrop(e||event);
}]);
this.event_handlers.push([this.input,"keypress",function(e){
return _f.onKeyPress(e||event);
}]);
}else{
this.event_handlers.push([this.input,"keydown",function(e){
return _f.onKeyDown(e);
}]);
this.event_handlers.push([this.input,"keypress",function(e){
return _f.safariKeyPress(e);
}]);
this.event_handlers.push([this.input,"keyup",function(e){
return _f.safariValidate(e);
}]);
if(Spry.is.safari){
this.event_handlers.push([this.input,"mouseup",function(e){
return _f.safariMouseUp(e);
}]);
this.event_handlers.push([this.input,"mousedown",function(e){
return _f.safariMouseDown(e);
}]);
}else{
this.event_handlers.push([this.input,"dragdrop",function(e){
return _f.onKeyEvent(e);
}]);
this.event_handlers.push([this.input,"dragenter",function(e){
_f.removeHint();
return _f.onKeyDown(e);
}]);
this.event_handlers.push([this.input,"dragexit",function(e){
return _f.putHint();
}]);
}
}
this.event_handlers.push([this.input,"keydown",function(e){
return _f.onKeyDown(e||event);
}]);
}
this.event_handlers.push([this.input,"focus",function(e){
return _f.onFocus(e||event);
}]);
this.event_handlers.push([this.input,"mousedown",function(e){
return _f.onMouseDown(e||event);
}]);
this.event_handlers.push([this.input,"blur",function(e){
return _f.onBlur(e||event);
}]);
if(this.validateOn&Spry.Widget.ValidationTextarea.ONCHANGE){
if(Spry.is.ie){
this.event_handlers.push([this.input,"propertychange",function(e){
return _f.onChange(e||event);
}]);
this.event_handlers.push([this.input,"drop",function(e){
return _f.onChange(e||event);
}]);
}else{
this.event_handlers.push([this.input,"keydown",function(e){
return _f.onKeyDown(e);
}]);
this.event_handlers.push([this.input,"keypress",function(e){
return _f.safariChangeKeyPress(e);
}]);
this.event_handlers.push([this.input,"keyup",function(e){
return _f.safariChangeValidate(e);
}]);
if(Spry.is.safari){
this.event_handlers.push([this.input,"mouseup",function(e){
return _f.safariChangeMouseUp(e);
}]);
this.event_handlers.push([this.input,"mousedown",function(e){
return _f.safariMouseDown(e);
}]);
}else{
this.event_handlers.push([this.input,"dragdrop",function(e){
return _f.onChange(e);
}]);
this.event_handlers.push([this.input,"dragenter",function(e){
_f.removeHint();
return _f.onKeyDown(e);
}]);
this.event_handlers.push([this.input,"dragexit",function(e){
return _f.putHint();
}]);
}
}
}
if(!(this.validateOn&Spry.Widget.ValidationTextarea.ONCHANGE)&&!this.useCharacterMasking){
if(Spry.is.ie){
this.event_handlers.push([this.input,"propertychange",function(e){
return _f.counterChar();
}]);
this.event_handlers.push([this.input,"drop",function(e){
return _f.counterChar();
}]);
}else{
this.event_handlers.push([this.input,"keypress",function(e){
return _f.counterChar();
}]);
this.event_handlers.push([this.input,"keyup",function(e){
return _f.counterChar();
}]);
if(Spry.is.safari){
this.event_handlers.push([this.input,"mouseup",function(e){
return _f.counterChar();
}]);
}else{
this.event_handlers.push([this.input,"dragdrop",function(e){
return _f.counterChar();
}]);
}
}
}
for(var i=0;i<this.event_handlers.length;i++){
Spry.Widget.Utils.addEventListener(this.event_handlers[i][0],this.event_handlers[i][1],this.event_handlers[i][2],false);
}
this.form=Spry.Widget.Utils.getFirstParentWithNodeName(this.input,"FORM");
if(this.form){
if(!this.form.attachedSubmitHandler&&!this.form.onsubmit){
this.form.onsubmit=function(e){
e=e||event;
return Spry.Widget.Form.onSubmit(e,e.srcElement||e.currentTarget);
};
this.form.attachedSubmitHandler=true;
}
if(!this.form.attachedResetHandler){
Spry.Widget.Utils.addEventListener(this.form,"reset",function(e){
e=e||event;
return Spry.Widget.Form.onReset(e,e.srcElement||e.currentTarget);
},false);
this.form.attachedResetHandler=true;
}
Spry.Widget.Form.onSubmitWidgetQueue.push(this);
}
}
this.saveState();
};
Spry.Widget.ValidationTextarea.prototype.onTyping=function(e){
if(this.input.disabled==true||this.input.readOnly==true){
return;
}
if(!this.initialCursor){
this.initialCursor=this.cursorPosition;
}
if(this.flags.locked){
return true;
}
var val=this.input.value;
var ret=true;
if(this.flags.hintOn){
return true;
}
if(e&&this.input&&this.options&&this.options.maxChars>0&&ret){
if(val.length>this.options.maxChars&&((!Spry.Widget.Utils.isSpecialKey(e)&&this.cursorPosition.start==this.cursorPosition.end)||(Spry.Widget.Utils.isSpecialKey(e)&&val!=this.initialValue)||this.cursorPosition.start!=this.cursorPosition.end)){
this.flags.locked=true;
var _10=this.initialValue;
var _11=this.initialCursor.start;
var end=this.initialCursor.end;
if(_10.length&&this.initialCursor.end<_10.length){
var tmp=end-_11+this.options.maxChars-_10.length;
var _12=_10.substring(0,_11)+val.substring(_11,_11+tmp)+_10.substring(end,_10.length<this.options.maxChars?_10.length:this.options.maxChars);
end=_11+tmp;
}else{
var _12=val.substring(0,this.options.maxChars);
end=_11=this.options.maxChars;
}
if(Spry.is.ie){
this.input.innerText=_12;
}else{
this.input.value=_12;
}
this.redTextFlash();
this.cursorPosition.moveTo(end,end);
this.flags.locked=false;
ret=false;
}else{
this.setState(Spry.Widget.ValidationTextarea.VALID);
this.isMaxInvalid=false;
}
}
this.counterChar();
return ret;
};
Spry.Widget.ValidationTextarea.prototype.validateMinRequired=function(val){
var _13=false;
if(typeof this.notFireMinYet=="undefined"){
this.notFireMinYet=false;
}else{
_13=true;
this.notFireMinYet=true;
}
if(this.onBlurOn){
this.notFireMinYet=true;
}else{
if(!this.onKeyEventOn){
this.notFireMinYet=true;
}
}
if(this.input&&this.options&&this.options.isRequired){
if(val.length>0&&this.isRequireInvalid&&(!this.hint||(this.hint&&!this.flags.hintOn)||(this.hint&&val!=this.hint))){
this.switchClassName(this.validClass);
this.setState(Spry.Widget.ValidationTextarea.VALID);
this.isRequireInvalid=false;
}else{
if((val.length==0||!(!this.hint||(this.hint&&!this.flags.hintOn)||(this.hint&&val!=this.hint)))&&(!this.isRequireInvalid||_13)){
if(this.notFireMinYet||Spry.is.ie){
this.switchClassName(this.requiredClass);
this.setState(Spry.Widget.ValidationTextarea.REQUIRED);
}
this.isRequireInvalid=true;
this.isMinInvalid=false;
}
}
}
if(this.input&&this.options&&this.options.minChars>0&&!this.isRequireInvalid){
if(val.length>=this.options.minChars&&(!this.hint||(this.hint&&!this.flags.hintOn)||(this.hint&&val!=this.hint))&&this.isMinInvalid){
this.switchClassName(this.validClass);
this.setState(Spry.Widget.ValidationTextarea.VALID);
this.isMinInvalid=false;
}else{
if((val.length<this.options.minChars||(this.hint&&val==this.hint&&this.flags.hintOn))&&!this.isMinInvalid){
this.switchClassName(this.invalidCharsMinClass);
this.setState(Spry.Widget.ValidationTextarea.MINIMUM);
this.isMinInvalid=true;
}
}
}
};
Spry.Widget.ValidationTextarea.prototype.counterChar=function(){
if(!this.counterEl||!this.options||!this.options.counterType||(this.options.counterType!="chars_remaining"&&this.options.counterType!="chars_count")){
return;
}
if(this.options.counterType=="chars_remaining"){
if(this.options.maxChars>0){
if(this.flags.hintOn){
this.setCounterElementValue(this.options.maxChars);
}else{
if(this.options.maxChars>this.input.value.length){
this.setCounterElementValue(this.options.maxChars-this.input.value.length);
}else{
this.setCounterElementValue(0);
}
}
}
}else{
if(this.flags.hintOn){
this.setCounterElementValue(0);
}else{
if(this.useCharacterMasking&&typeof this.options.maxChars!="undefined"&&this.options.maxChars<this.input.value.length){
this.setCounterElementValue(this.options.maxChars);
}else{
this.setCounterElementValue(this.input.value.length);
}
}
}
};
Spry.Widget.ValidationTextarea.prototype.setCounterElementValue=function(val){
if(this.counterEl.nodeName.toLowerCase()!="input"&&this.counterEl.nodeName.toLowerCase()!="textarea"&&this.counterEl.nodeName.toLowerCase()!="select"&&this.counterEl.nodeName.toLowerCase()!="img"){
this.counterEl.innerHTML=val;
}
};
Spry.Widget.ValidationTextarea.prototype.reset=function(){
this.removeHint();
this.removeClassName(this.requiredClass);
this.removeClassName(this.invalidCharsMinClass);
this.removeClassName(this.invalidCharsMaxClass);
this.removeClassName(this.validClass);
this.setState(Spry.Widget.ValidationTextarea.INITIAL);
var _14=this;
setTimeout(function(){
_14.putHint();
_14.counterChar();
},10);
};
Spry.Widget.ValidationTextarea.prototype.validate=function(){
if(this.input.disabled==true||this.input.readOnly==true){
return true;
}
var val=this.input.value;
this.validateMinRequired(val);
var ret=!this.isMinInvalid&&!this.isRequireInvalid;
if(ret&&this.options.maxChars>0&&!this.useCharacterMasking){
if(val.length<=this.options.maxChars||(this.hint&&this.hint==val&&this.flags.hintOn)){
this.switchClassName(this.validClass);
this.setState(Spry.Widget.ValidationTextarea.VALID);
this.isMaxInvalid=false;
}else{
this.switchClassName(this.invalidCharsMaxClass);
this.setState(Spry.Widget.ValidationTextarea.MAXIMUM);
this.isMaxInvalid=true;
}
}
ret=ret&&!this.isMaxInvalid;
if(ret){
this.switchClassName(this.validClass);
}
this.counterChar();
return ret;
};
Spry.Widget.ValidationTextarea.prototype.setState=function(_15){
this.state=_15;
};
Spry.Widget.ValidationTextarea.prototype.getState=function(){
return this.state;
};
Spry.Widget.ValidationTextarea.prototype.removeHint=function(){
if(this.flags.hintOn){
this.flags.locked=true;
this.input.value="";
this.flags.locked=false;
this.flags.hintOn=false;
}
};
Spry.Widget.ValidationTextarea.prototype.putHint=function(){
if(this.hint&&this.input.value==""){
this.flags.hintOn=true;
this.input.value=this.hint;
}
};
Spry.Widget.ValidationTextarea.prototype.redTextFlash=function(){
var _16=this;
this.addClassName(this.textareaFlashClass);
setTimeout(function(){
_16.removeClassName(_16.textareaFlashClass);
},200);
};
Spry.Widget.ValidationTextarea.prototype.onKeyPress=function(e){
if(Spry.is.ie&&Spry.is.windows&&e.keyCode==13){
if((this.initialCursor.length+this.options.maxChars-this.input.value.length)<2){
Spry.Widget.Utils.stopEvent(e);
return false;
}
}
};
Spry.Widget.ValidationTextarea.prototype.onKeyDown=function(e){
this.saveState();
this.keyCode=e.keyCode;
return true;
};
Spry.Widget.ValidationTextarea.prototype.onKeyEvent=function(e){
if(e.type=="propertychange"&&e.propertyName!="value"){
return true;
}
var _17=this.onTyping(e);
if(!_17){
Spry.Widget.Utils.stopEvent(e);
}
};
Spry.Widget.ValidationTextarea.prototype.onChange=function(e){
if(Spry.is.ie&&e&&e.type=="propertychange"&&e.propertyName!="value"){
return true;
}
if(this.flags.drop){
var _18=this;
setTimeout(function(){
_18.flags.drop=false;
_18.onChange(null);
},0);
return true;
}
if(this.flags.hintOn){
return true;
}
this.onKeyEventOn=true;
var _19=this.validate();
this.onKeyEventOn=false;
return _19;
};
Spry.Widget.ValidationTextarea.prototype.onMouseDown=function(e){
if(this.flags.active){
this.saveState();
}
};
Spry.Widget.ValidationTextarea.prototype.onDrop=function(e){
this.flags.drop=true;
this.removeHint();
if(Spry.is.ie){
var rng=document.body.createTextRange();
rng.moveToPoint(e.x,e.y);
rng.select();
}
this.saveState();
this.flags.active=true;
this.addClassName(this.focusClass);
};
Spry.Widget.ValidationTextarea.prototype.onFocus=function(e){
if(this.flags.drop){
return;
}
this.removeHint();
this.saveState();
this.flags.active=true;
this.addClassName(this.focusClass);
};
Spry.Widget.ValidationTextarea.prototype.onBlur=function(e){
this.removeClassName(this.focusClass);
if(this.validateOn&Spry.Widget.ValidationTextarea.ONBLUR){
this.onBlurOn=true;
this.validate();
this.onBlurOn=false;
}
this.flags.active=false;
var _1a=this;
setTimeout(function(){
_1a.putHint();
},10);
};
Spry.Widget.ValidationTextarea.prototype.safariMouseDown=function(e){
this.safariClicked=true;
};
Spry.Widget.ValidationTextarea.prototype.safariChangeMouseUp=function(e){
if(!this.safariClicked){
this.onKeyDown(e);
return this.safariChangeValidate(e,false);
}else{
this.safariClicked=false;
return true;
}
};
Spry.Widget.ValidationTextarea.prototype.safariMouseUp=function(e){
if(!this.safariClicked){
this.onKeyDown(e);
return this.safariValidate(e,false);
}else{
this.safariClicked=false;
return true;
}
};
Spry.Widget.ValidationTextarea.prototype.safariKeyPress=function(e){
this.safariFlag=new Date();
return this.safariValidate(e,true);
};
Spry.Widget.ValidationTextarea.prototype.safariValidate=function(e,_1b){
if(e.keyCode&&Spry.Widget.Utils.isSpecialKey(e)&&e.keyCode!=8&&e.keyCode!=46){
return true;
}
var _1c=this.onTyping(e);
if(new Date()-this.safariFlag<1000&&_1b){
var _1d=this;
setTimeout(function(){
_1d.safariValidate(e,false);
},1000);
}
return _1c;
};
Spry.Widget.ValidationTextarea.prototype.safariChangeKeyPress=function(e){
this.safariChangeFlag=new Date();
return this.safariChangeValidate(e,true);
};
Spry.Widget.ValidationTextarea.prototype.safariChangeValidate=function(e,_1e){
if(e.keyCode&&Spry.Widget.Utils.isSpecialKey(e)&&e.keyCode!=8&&e.keyCode!=46){
return true;
}
var _1f=this.onChange(e);
if(new Date()-this.safariChangeFlag<1000&&_1e){
var _20=this;
setTimeout(function(){
_20.safariChangeValidate(e,false);
},1000-new Date()+this.safariChangeFlag);
}
return _1f;
};
Spry.Widget.ValidationTextarea.prototype.saveState=function(e){
if(this.options.maxChars>0&&this.input.value.length>this.options.maxChars){
return;
}
this.cursorPosition.update();
if(!this.flags.hintOn){
this.initialValue=this.input.value;
}else{
this.initialValue="";
}
this.initialCursor=this.cursorPosition;
return true;
};
Spry.Widget.ValidationTextarea.prototype.checkClassName=function(ele,_21){
if(!ele||!_21){
return false;
}
if(typeof ele=="string"){
ele=document.getElementById(ele);
if(!ele){
return false;
}
}
if(!ele.className){
ele.className=" ";
}
return ele;
};
Spry.Widget.ValidationTextarea.prototype.switchClassName=function(_22){
var _23=[this.invalidCharsMaxClass,this.validClass,this.requiredClass,this.invalidCharsMinClass];
var _24=this;
for(var k in _23){
if(_23[k]!=_22){
this.removeClassName(_23[k]);
}
}
this.addClassName(_22);
};
Spry.Widget.ValidationTextarea.prototype.addClassName=function(_25){
var ele=this.checkClassName(this.element,_25);
if(!ele||ele.className.search(new RegExp("\\b"+_25+"\\b"))!=-1){
return;
}
this.element.className+=" "+_25;
};
Spry.Widget.ValidationTextarea.prototype.removeClassName=function(_26){
var ele=this.checkClassName(this.element,_26);
if(!ele){
return;
}
ele.className=ele.className.replace(new RegExp("\\s*\\b"+_26+"\\b","g"),"");
};
Spry.Widget.SelectionDescriptor=function(_27){
this.element=_27;
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.update=function(){
if(Spry.is.ie&&Spry.is.windows){
if(this.element.nodeName=="TEXTAREA"){
var _28=this.element.ownerDocument.selection.createRange();
if(_28.parentElement()==this.element){
var _29=this.element.ownerDocument.body.createTextRange();
_29.moveToElementText(this.element);
for(var _2a=0;_29.compareEndPoints("StartToStart",_28)<0;_2a++){
_29.moveStart("character",1);
}
this.start=_2a;
_29=this.element.ownerDocument.body.createTextRange();
_29.moveToElementText(this.element);
for(var _2b=0;_29.compareEndPoints("StartToEnd",_28)<0;_2b++){
_29.moveStart("character",1);
}
this.end=_2b;
this.length=this.end-this.start;
this.text=_28.text;
}
}else{
if(this.element.nodeName=="INPUT"){
this.range=this.element.ownerDocument.selection.createRange();
this.length=this.range.text.length;
var _2c=this.range.duplicate();
this.start=-_2c.moveStart("character",-10000);
_2c=this.range.duplicate();
_2c.collapse(false);
this.end=-_2c.moveStart("character",-10000);
this.text=this.range.text;
}
}
}else{
var tmp=this.element;
var _2d=0;
var _2e=0;
try{
_2d=tmp.selectionStart;
}
catch(err){
}
try{
_2e=tmp.selectionEnd;
}
catch(err){
}
if(Spry.is.safari){
if(_2d==2147483647){
_2d=0;
}
if(_2e==2147483647){
_2e=0;
}
}
this.start=_2d;
this.end=_2e;
this.length=_2e-_2d;
this.text=this.element.value.substring(_2d,_2e);
}
};
Spry.Widget.SelectionDescriptor.prototype.destroy=function(){
try{
delete this.range;
}
catch(err){
}
try{
delete this.element;
}
catch(err){
}
};
Spry.Widget.SelectionDescriptor.prototype.moveTo=function(_2f,end){
if(Spry.is.ie&&Spry.is.windows){
if(this.element.nodeName=="TEXTAREA"){
var _30=this.element.createTextRange();
this.range=this.element.createTextRange();
this.range.move("character",_2f);
this.range.moveEnd("character",end-_2f);
var c1=this.range.compareEndPoints("StartToStart",_30);
if(c1<0){
this.range.setEndPoint("StartToStart",_30);
}
var c2=this.range.compareEndPoints("EndToEnd",_30);
if(c2>0){
this.range.setEndPoint("EndToEnd",_30);
}
}else{
if(this.element.nodeName=="INPUT"){
this.range=this.element.ownerDocument.selection.createRange();
this.range.move("character",-10000);
this.start=this.range.moveStart("character",_2f);
this.end=this.start+this.range.moveEnd("character",end-_2f);
}
}
this.range.select();
}else{
this.start=_2f;
try{
this.element.selectionStart=_2f;
}
catch(err){
}
this.end=end;
try{
this.element.selectionEnd=end;
}
catch(err){
}
}
this.ignore=true;
this.update();
};
if(!Spry.Widget.Form){
Spry.Widget.Form={};
}
if(!Spry.Widget.Form.onSubmitWidgetQueue){
Spry.Widget.Form.onSubmitWidgetQueue=[];
}
if(!Spry.Widget.Form.validate){
Spry.Widget.Form.validate=function(_31){
var _32=true;
var _33=true;
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var _34=q.length;
for(var i=0;i<_34;i++){
if(!q[i].isDisabled()&&q[i].form==_31){
_33=q[i].validate();
_32=_33&&_32;
}
}
return _32;
};
}
if(!Spry.Widget.Form.onSubmit){
Spry.Widget.Form.onSubmit=function(e,_35){
if(Spry.Widget.Form.validate(_35)==false){
return false;
}
return true;
};
}
if(!Spry.Widget.Form.onReset){
Spry.Widget.Form.onReset=function(e,_36){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var _37=q.length;
for(var i=0;i<_37;i++){
if(!q[i].isDisabled()&&q[i].form==_36&&typeof (q[i].reset)=="function"){
q[i].reset();
}
}
return true;
};
}
if(!Spry.Widget.Form.destroy){
Spry.Widget.Form.destroy=function(_38){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(q[i].form==_38&&typeof (q[i].destroy)=="function"){
q[i].destroy();
i--;
}
}
};
}
if(!Spry.Widget.Form.destroyAll){
Spry.Widget.Form.destroyAll=function(){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(typeof (q[i].destroy)=="function"){
q[i].destroy();
i--;
}
}
};
}
if(!Spry.Widget.Utils){
Spry.Widget.Utils={};
}
Spry.Widget.Utils.setOptions=function(obj,_39,_3a){
if(!_39){
return;
}
for(var _3b in _39){
if(_3a&&_39[_3b]==undefined){
continue;
}
obj[_3b]=_39[_3b];
}
};
Spry.Widget.Utils.firstValid=function(){
var ret=null;
for(var i=0;i<Spry.Widget.Utils.firstValid.arguments.length;i++){
if(typeof (Spry.Widget.Utils.firstValid.arguments[i])!="undefined"){
ret=Spry.Widget.Utils.firstValid.arguments[i];
break;
}
}
return ret;
};
Spry.Widget.Utils.specialSafariNavKeys=",63232,63233,63234,63235,63272,63273,63275,63276,63277,63289,";
Spry.Widget.Utils.specialCharacters=",8,9,16,17,18,20,27,33,34,35,36,37,38,39,40,45,46,91,92,93,144,192,63232,";
Spry.Widget.Utils.specialCharacters+=Spry.Widget.Utils.specialSafariNavKeys;
Spry.Widget.Utils.isSpecialKey=function(ev){
return Spry.Widget.Utils.specialCharacters.indexOf(","+ev.keyCode+",")!=-1;
};
Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel=function(_3c,_3d){
var _3e=_3c.getElementsByTagName(_3d);
if(_3e){
return _3e[0];
}
return null;
};
Spry.Widget.Utils.getFirstParentWithNodeName=function(_3f,_40){
while(_3f.parentNode&&_3f.parentNode.nodeName.toLowerCase()!=_40.toLowerCase()&&_3f.parentNode.nodeName!="BODY"){
_3f=_3f.parentNode;
}
if(_3f.parentNode&&_3f.parentNode.nodeName.toLowerCase()==_40.toLowerCase()){
return _3f.parentNode;
}else{
return null;
}
};
Spry.Widget.Utils.destroyWidgets=function(_41){
if(typeof _41=="string"){
_41=document.getElementById(_41);
}
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(typeof (q[i].destroy)=="function"&&Spry.Widget.Utils.contains(_41,q[i].element)){
q[i].destroy();
i--;
}
}
};
Spry.Widget.Utils.contains=function(who,_42){
if(typeof who.contains=="object"){
return _42&&who&&(who==_42||who.contains(_42));
}else{
var el=_42;
while(el){
if(el==who){
return true;
}
el=el.parentNode;
}
return false;
}
};
Spry.Widget.Utils.addEventListener=function(_43,_44,_45,_46){
try{
if(_43.addEventListener){
_43.addEventListener(_44,_45,_46);
}else{
if(_43.attachEvent){
_43.attachEvent("on"+_44,_45,_46);
}
}
}
catch(e){
}
};
Spry.Widget.Utils.removeEventListener=function(_47,_48,_49,_4a){
try{
if(_47.removeEventListener){
_47.removeEventListener(_48,_49,_4a);
}else{
if(_47.detachEvent){
_47.detachEvent("on"+_48,_49,_4a);
}
}
}
catch(e){
}
};
Spry.Widget.Utils.stopEvent=function(ev){
try{
this.stopPropagation(ev);
this.preventDefault(ev);
}
catch(e){
}
};
Spry.Widget.Utils.stopPropagation=function(ev){
if(ev.stopPropagation){
ev.stopPropagation();
}else{
ev.cancelBubble=true;
}
};
Spry.Widget.Utils.preventDefault=function(ev){
if(ev.preventDefault){
ev.preventDefault();
}else{
ev.returnValue=false;
}
};


