var bOpera = window.opera; var defPlaceHolder = "_"; var ElementErrMsg=null; var gdtypeSymbols={"RegNum":"[\\d]", "RegXMoney":"[\\d\\.]", "Date":"[\\d]", "Account":"[\\d]", "AccountSmbl":"[a-zA-Z\\d]", "RegLat":"[a-zA-Z\\.\\-' ]", "RegLatAndNum":"[a-zA-Z\\.\\-' 0-9]", "RegEmail":"[0-9a-zA-Z\\.\\_\\-@]", "RegSWIFT": "[a-zA-Z0-9/\\-\\?:\\(\\)\\.\\,'\\+\\{\\}\\ ]", "RegSWIFTUpper": "[a-zA-Z0-9/\\-\\?:\\(\\)\\.\\,'\\+\\{\\}\\ ]", "RegPayRu" : "[\x20-\x7E\r\n№~!@#\$%^&*()_+!\\\"№;%:?Ёёа-яА-Я ]", "RegPayEn" : "[\x20-\x7E\r\n№~!@#\$%^&*()_+!\\\"№;%:? ]", "RegFreeGRND" : "[^\\]\\[&' ]", "RegDrive" : "[a-zA-Z]", "RegFilePath" : "[^\/\?\"<>|]", "ShortTime":"[\\d]", "RegFreePercent" : "[^%]", "RegEtokenID":"[0-9A-Z]", "RegCard":"[A-Z\\ \\.\\-']"} var gdtypeFormat={"RegXMoney":"^([0-9]{0,}[.]?[0-9]*)$", "Date":"^([\\d\\_]{2}[.][\\d\\_]{2}[.][\\d\\_]{4})$", "ShortTime":"^([\\d\\_]{2}[:][\\d\\_]{2})$", "Account" : "^([\\d\\_]{0,5}[.]{0,1}[\\d\\_]{0,3}[.]{0,1}[\\d\\_]{0,1}[.]{0,1}[\\d\\_]{0,11})$", "AccountSmbl" : "^([a-zA-Z\\d]{0,20})$", "RegEmail":"^([0-9a-zA-Z]{1}[0-9a-zA-Z\\.\\_\\-]{0,}[@]{1}[0-9a-zA-Z\\.\\_\\-]{1,}[\\.]{1}[0-9a-zA-Z]{1,})$"} var gcheckFormatonblurOnly={"RegEmail":true} var gdtypeMask={"Date":"__.__.____", "Account":"_____.___._.___________", "ShortTime":"__:__"} function _attachElmHndlrs(w,Obj){ var oEArray,oF=(!Obj)?$(window,'MForm'):Obj,oAr = new Array("TEXTAREA","INPUT"); for(var i=0;i-1, bGecko = navigator.userAgent.indexOf('Gecko') > -1; if(e.type!='keyup')elementMsgErrHide(); setValidClass(); switch (e.type) { case "focus": setValtoMask(); if(mask!="" && (!el.getAttribute("err") || el.getAttribute("err")=="0"))setCursor(0); ElAct(w,el); break; case "blur": if(bOpera)setValtoMask(); if(dtype=="RegXMoney"){ var bl=!checkMaxLengthForMoney(el.value); var br=!checkMoneyRange(el.value, el.getAttribute('MAXS'), el.getAttribute('MINS')); var bf=checkForFormat(el.value) == null; if ((bl||bf||br)){ el.setAttribute("err", '1') if (br) errmsg(12, el.getAttribute('MINS')+','+el.getAttribute('MAXS')); else if (bl) errmsg(9); else errmsg(5); return; }else{ setValidClass(); el.setAttribute("err", '0'); return; } } if(dtype=="RegSWIFTUpper" || dtype=="RegEtokenID" || dtype=="RegCard"){ el.value=el.value.toUpperCase(); } var bf=checkForFormat(); if (gcheckFormatonblurOnly[dtype]){ if(!bf)errmsg(5); }else if(!bf)el.value=""; var _b= setValtoMask(); ElDisAct(w,el); if( !bf || ! _b )el.className+=" incorrectValue" else setValidClass(); //el.setAttribute("err", (!_b ? "1":"0")); el.setAttribute("err", ((!bf || ! _b) ? "1":"0")); break; case "cut": deleteSelectedTxt(); break; case "keydown": onKeyDownEl(); break; case "keypress": onKeyPressEl(); break; case "keyup": onOpKeyUp(); break; case "drop": preventEvent(e); break; case "paste": try{ var sNewVal = ''; if( window.clipboardData) sNewVal = window.clipboardData.getData("Text") else sNewVal = e.clipboardData.getData("Text"); if(!checkForFormat(sNewVal)){ preventEvent(e); errmsg(5); }else{ el.setAttribute("_VALUE",sNewVal); setValtoMask(); setCursor(0,el.value.length); } }catch(e){} break; case "input": setValtoMask(); break; } function checkMaxLengthForMoney(val){ if (el.getAttribute("MAXL") != null && val != ''){ var iML = el.getAttribute("MAXL"); if (parseInt(val,10).toString().length > iML) return false; } return true; } function checkMoneyRange(val, max, min){ ival = parseFloat(val, 10); if ( (ival < parseFloat(min)) || (ival > parseFloat(max))) return false; return true; } function setValidClass(){ el.className=el.className.replace(/[ ]?incorrectValue/,''); } function onKeyPressEl(){ if((bSafari || bOpera || bGecko) && kC==0)return; if(bGecko && (kC==46 || kC==45) && sChar!='-')return; if(bOpera && (kC==16 || kC==17 || kC==46))return; if(kC==13 && el.type!='textarea')preventEvent(e); switch(kC){ case 27:; //case 32:;case 13:;case 88:; case 33:; case 34:; preventEvent(e); return; case 33:;case 34:;case 37:;case 38:;case 39:; case 40:; //символы в Safari обрабатываются с ошибками ! @ % & ' ( " - if (bGecko || bOpera){ var chArray=new Array('!','@','%','&','\'','(','\"','-','_'), bl=true; for (a in chArray){ if(chArray[a]==sChar) {bl=false; break;} } if (bl) return; } if (bOpera || bGecko) return; break; case 9:; case 8:; return; case 35: if(bGecko && !bSafari || bOpera){ setCursor(el.value.length-1,0); return; } break; case 36: if(bGecko && !bSafari || bOpera){ setCursor(0,0); return; } break; case 67:;case 86:; if (bOpera || bGecko){ if ((dtype=='Account') || (dtype=='Date') || (dtype=='ShortTime')) el.value=''; return; } break; } checkForKey(); } function onKeyDownEl(){ if(kC==13 && el.type!='textarea')preventEvent(e); switch(kC){ case 38:; case 40:; //case 190:;case 32:;case 13:;case 88:;case 33:; case 34:; preventEvent(e); break; case 110: if(bSafari)checkForKey(); break; case 27: el.blur(); break; case 46: if(mask!=""){ preventEvent(e); var iPos=cPos.istart; if(cPos.istart==cPos.iend && cPos.istart>=el.value.length)return; el.value = el.value.substring(0,cPos.istart) + mask.substring(((cPos.istart==cPos.iend)? (cPos.istart+1) : cPos.istart),cPos.iend) + el.value.substring((cPos.istart==cPos.iend)? (cPos.iend+1) : cPos.iend,el.value.length); el.setAttribute("_VALUE",el.value); if((cPos.iend - cPos.istart)>1)setCursor(cPos.istart) else setCursor(cPos.istart+1); } break; case 8: if(!bOpera)deleteSelectedTxt(); break; case 67:;case 86:; if (bOpera || bGecko){ if ((dtype=='Account') || (dtype=='Date') || (dtype=='ShortTime')) {el.value='';el.setAttribute("_VALUE",el.value);} return; } break; } } function onOpKeyUp(){ if (kC==8){ setValtoMask(); deleteSelectedTxt(); } if (bOpera || bGecko){ if(!checkForFormat(el.value)){ preventEvent(e); errmsg(5); } } } function checkForKey(){ var iPos=cPos.istart; if(!checkForSmbl()){ switch(dtype){ case 'RegLat' : errmsg(6,sChar); break; default: errmsg(1,sChar); break; } preventEvent(e); return; } if(!checkForMaxTextarea(el,1)){ errmsg(8); preventEvent(e); return; } if(mask!=""){ if(iPos>=mask.length){ preventEvent(e); return; } iPos=getNextMaskPos(iPos); } var xval = el.value.substring(0,iPos) + sChar+el.value.substring( (mask!="") ? (iPos+1) : iPos,el.value.length); if(!checkForFormat(xval)){ errmsg(2); preventEvent(e); return; } if(mask!=""){ updateValue(iPos,el.getAttribute("_VALUE") || mask,sChar); setCursor(iPos); } } function deleteSelectedTxt(){ function updateCursor(){ setCursor(cPos.istart-1, 1); cPos=new getCursorPos(); } if(mask=="")return; preventEvent(e); var bEq = cPos.istart==cPos.iend; if(!bOpera && bEq){ updateCursor(); bEq = cPos.istart==cPos.iend; } var i=bEq ? (cPos.istart-1) : cPos.istart; if(bOpera)i=cPos.istart; var xv=el.value.substring(0,i) + mask.substring(i,cPos.iend) +el.value.substring(cPos.iend,el.value.length); if(!bOpera && xv==el.value){ updateCursor(); xv=el.value.substring(0,i) + mask.substring(i,cPos.iend) +el.value.substring(cPos.iend,el.value.length); i=cPos.istart; } var imove=(mask.substr(i-1,1)!=defPlaceHolder) ? (i-2) : (i-1); el.value = xv; el.setAttribute("_VALUE",xv); if(!bOpera) setCursor(cPos.istart, 1) else{ var iL = cPos.iend - cPos.istart; setCursor(i, (iL >0) ? iL : 1); cPos=new getCursorPos(); var xv=el.value.substring(0,cPos.istart) + mask.substring(cPos.istart,cPos.iend) +el.value.substring(cPos.iend,el.value.length); el.value = xv; setCursor(i,-1); el.setAttribute("_VALUE",xv); } } function getNextMaskPos(i){ for(var j=i;j=0); if(dTypeSymbols!=""){ var re = new RegExp(dTypeSymbols,"ig"); return (re.test(x)); } return true; } function checkForFormat(x){ if(dtype=="")return true; if(!gdtypeFormat[dtype])return true; if(gcheckFormatonblurOnly[dtype] && e.type!='blur')return true; if(!x)x=el.value; if(x=='')return true; var re = new RegExp(gdtypeFormat[dtype],"ig"); return re.exec(x); } function setCursor(pos,iL){ if(!iL)iL=1; if(iL==-1)iL=0; if(el.createTextRange){ var tr = el.createTextRange(); if(iL>0){ tr.move("character",pos); tr.moveEnd("character", iL ); }else{ tr.move("character", -el.value.length); tr.move("character", pos); } tr.select(); }else{ el.selectionStart=pos; if(iL>0)el.selectionEnd=pos+iL; } } function setValtoMask(){ var smbl="",xval=""; if(!checkFordTypeValue()){ if(e.type=="input")errmsg(5); return false; } if(mask!=""){ if(el.value.length>mask.length){ el.value=el.value.substr(0,mask.length); el.setAttribute("_VALUE",el.value); } var xv= ( (e.type=="input" && !bOpera) || e.type=="blur") ? el.value : (!el.getAttribute("_VALUE") ? el.value : el.getAttribute("_VALUE")); for(var j=0;j -1) && checkForFullMask!='0'){ errmsg(4); return false; } }else{ if((e.type=="blur" || e.type=="focus" || e.type=="input" || e.type=="paste") && !checkForMaxTextarea(el)){ preventEvent(e); errmsg(8); return false; } xval = el.value; if((dtype=="RegSWIFTUpper" || dtype=="RegEtokenID") && e.type!="input")xval=xval.toUpperCase(); for(var j=0;j0)iFlDigits=Math.pow(10,iDigits); } el.value = Math.round(parseFloat(x) * iFlDigits)/iFlDigits; var re = new RegExp("^([0-9]*)[.]?([0-9]*)$","ig"); re.exec(el.value); var rest=RegExp.$2,sdAfter=(iDigits>0) ? ('.' + (rest+"00000000000000000000000000").substr(0,iDigits) ):''; el.value=RegExp.$1+sdAfter; } } break; case "Date": if(x!="" && x!=mask){ re=new RegExp("(.{2})[.](.{2})[.](.{4})"); re.exec(x.replace(/_/g,"0")); var iD=parseInt(RegExp.$1,10), iM=parseInt(RegExp.$2,10), iY=parseInt(RegExp.$3,10); if(e.type=="focus" || e.type=="blur"){ var validD= (iD>0 && iD<32), validM= (iM<13 && iM>0),validY= (iY>0 && iY>1900); if(!validD || !validM || !validY){ if(e.type=="focus"){ (!validD) ? setCursor(0,2) : (!validM ? setCursor(3,2) : setCursor(6,4) ); } errmsg(3); return false; }else{ var n=(iM!=2?((iM%2)^(iM>7))+30:(!(iY%400)||!(iY%4)&&(iY%25)?29:28)); if(iD>n){ if(e.type=="focus"){ setCursor(0,2); } errmsg(3); return false; } } } } break; case "ShortTime": if(x!="" && x!=mask){ re=new RegExp("(.{2})[:](.{2})"); re.exec(x.replace(/_/g,"0")); var iH=parseInt(RegExp.$1,10), iM=parseInt(RegExp.$2,10); var validH= (iH<24), validM= (iM<60); if(e.type=="focus" || e.type=="blur"){ if(e.type=="focus"){ if(!validM)setCursor(3,2); if(!validH)setCursor(0,2); } if(!validM || !validH){ errmsg(7); return false; } } } break; case "RegExp": if(e.type=="blur" && x!=''){ var sg=el.getAttribute('RegExp').replace(/^\/{1}/,'').replace(/\/{1}$/,''); re=new RegExp(sg); if(!re.exec(x)){ var mask2 = el.getAttribute('Mask'); if (mask2 == '' || mask2 == null) errmsg(10, sg, true); else errmsg(11, mask2, true); return false; } } } return true; } function getCursorPos(){ if( el.createTextRange){ var tr = el.document.selection.createRange(); this.istart = -(tr.moveStart("character",-el.value.length)); this.iend = tr.text.length; }else{ this.istart = el.selectionStart; this.iend = el.selectionEnd; } } function updateValue(ic,tval,xstr){ var x = tval.substr(0,ic)+xstr+tval.substr(ic+1,el.value.length); el.value =x; el.setAttribute("_VALUE",x); } function errmsg(ic,params, notsplit){ try{ var txt= getElementError(ic,params, notsplit); //if(!ElementErrMsg)initMsgErr(); //if(!mw.document.getElementById("PromtElementBox"))initMsgErr(); if (el.getAttribute('err_options') == 'inline'){ var div = document.getElementById('PromtElementBoxInline'); if (div == null){ var div = document.createElement('div'); div.className = 'PromtElementBox'; div.id = 'PromtElementBoxInline'; div.innerHTML = txt; el.parentNode.appendChild(div); } div.style.display = 'block'; } else{ ElementErrMsg = new initMsgErr(el); ElementErrMsg.position(el); ElementErrMsg.setText(el,txt); } }catch(e){} } } function checkForMaxTextarea(el,_b){ if (el.tagName=='TEXTAREA' && el.getAttribute('MAXLENGTH')){ var iL=parseInt(el.getAttribute('MAXLENGTH'),10); if(_b==1){ if(el.value.length>=iL)return false; }else{ if(el.value.length>iL)return false; } } return true; } function getTopOffset(o){ i=0; while(o){i+=o.offsetTop;o=o.offsetParent;} if($(window,'_WorkPanel_'))i-=$(window,'_WorkPanel_').scrollTop; return i; } function getLeftOffset(o){ i=0; while(o){i+=o.offsetLeft;o=o.offsetParent;} return i; } var sId= 'PromtElementBox'; function elementMsgErrHide(){ try{ _op = document.getElementById('PromtElementBoxInline'); if (_op != null) _op.parentNode.removeChild(_op); var d; //try{d=(mw.newwin!=null)?mw.newwin.document:mw.document;}catch(e){d=mw.document;} var _op; try{_op=d.getElementById(sId);}catch(e){_op=window.document.getElementById(sId);} _op.style.display="none"; }catch(e){} } function initMsgErr(el){ var d=(isIE)?el.document:el.ownerDocument; if(!d.getElementById(sId)){ if(isIE){ this.pmsg=d.createElement('IFRAME'); this.pmsg.frameBorder = '0'; this.pmsg.marginWidth = '0'; this.pmsg.scrolling = 'no'; this.pmsg.src = '../inull.htm'; this.pmsg.style.height="40px"; this.pmsg.setAttribute('NAME',sId); }else this.pmsg=d.createElement('DIV'); this.pmsg.id=sId; isIE ? d.body.insertAdjacentHTML('beforeEnd',this.pmsg.outerHTML) : d.body.appendChild(this.pmsg); if(isIE ){ this.pmsg = d.getElementById(sId); } }else this.pmsg = d.getElementById(sId); this.pmsg.style.display = 'block'; this.position=function(el){ this.pmsg.style.top=getTopOffset(el) + el.offsetHeight +"px"; this.pmsg.style.left=getLeftOffset(el) +"px"; } this.pmsg.style.zIndex='999'; this.setText=function(el,txt){ this._t= txt+(el.getAttribute("z.ermg") ? ("
" +el.getAttribute("z.ermg")) : ""); // this.pmsg.innerHTML= _t; if(!isIE){ this.pmsg.innerHTML= this._t; this.pmsg.style.display = 'block'; }else{ var _po = el.document.frames(sId).document; if(_po.readyState!="complete")_po.onreadystatechange = _ie_setPromtTxt else _po.body.innerHTML = this.getIETxt(); } } this.getIETxt=function(){return ('
'+this._t+'
');} } function _ie_setPromtTxt(){ var d; // try{d=(mw.newwin!=null)?mw.newwin.document:window.document;}catch(e){d=window.document;} d=window.document; var _po=d.frames(sId).document; if(_po.readyState!="complete")return; _po.createStyleSheet('css/main.css'); if(colorstyle!='')_po.createStyleSheet('css/_'+colorstyle+'.css'); _po.body.innerHTML = ElementErrMsg.getIETxt(); //mw.document.getElementById(sId).style.height = _po.getElementsByTagName('DIV')[0].clientHeight; } function getElementError(ic,x, notsplit){ var m = LRSChecks15; switch(ic){ case 1: m = LRSChecks16; break; case 2: m = LRSChecks15; break; case 3: m = LRSChecks18; break; case 4: m = LRSChecks38; break; case 5: m = LRSChecks39; break; case 6: m = LRSChecks41; break; case 7: m = LRSChecks21; break; case 8: m = LRSChecks17; break; case 9: m = LRSChecks13; break; case 10: m = LRSChecks42; break; case 11: m = LRSChecks46; break; case 12: m = LRSChecks47; break; } if(x){ var xa=notsplit ? new Array(x.toString()) : x.split(","); for(var i=0;i