var artTypes={any:{regex:/./,msg:'Заполните поле',mask:'',mask_color:'#808080',norm_color:'#000000'},email:{regex:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,msg:'Email введен неверно',mask:'',mask_color:'#808080',norm_color:'#000000'},phone:{regex:/^\+\d{1,3}\s*\(\d{1,5}\)\s*[0-9 ]*$/,msg:'Неверный формат телефона',mask:'+1 (111) 111 1111',mask_color:'#808080',norm_color:'#000000'},any_pwd:{regex:/^[1-9 a-z A-Z]*$/,msg:'Только латинские буквы и цифры',mask:'Только латинские буквы и цифры',mask_color:'#808080',norm_color:'#000000'}};function oValid(){this.alert_type='msg';this.blink_color='#FFE900';this.check_fields=[];this.valid=this.fields=this.invalid=[];this.frm=this.frm_id=this.blinkme=null;this.set_alert_type=function(s){this.alert_type=s};this.validate=function(field_id){this.check_fields=[];if(field_id!=undefined&&field_id.indexOf('*')>0)var fld=field_id.substr(0,field_id.indexOf('*'));for(i in this.fields){if(field_id!=undefined){if(field_id.indexOf('*')>0&&this.fields[i]['name'].substr(0,fld.length)!=fld)continue;else if(field_id.indexOf('*')<0&&this.fields[i]['name']!=field_id)continue}this.fields[i]['value']=this.frm.elements[this.fields[i]['i']].value;this.check_fields[this.check_fields.length]=i}if(field_id==undefined)this.draw_mask();this.check();this.draw_errors();if(this.invalid.length)return false;else return true};this.draw_mask=function(){for(i in this.fields){elm=this.frm.elements[this.fields[i]['i']];if(this.fields[i]['value']==''||this.fields[i]['value']==artTypes[this.fields[i]['dtype']]['mask']){elm.value=artTypes[this.fields[i]['dtype']]['mask'];elm.style.color=artTypes[this.fields[i]['dtype']]['mask_color']}else{if(this.fields[i]['dtype']=='any_pwd')elm.type='password';elm.style.color=artTypes[this.fields[i]['dtype']]['norm_color']}elm.onfocus=this.mask_onFocus;elm.onblur=this.mask_onBlur}};this.mask_onFocus=function(evt){evt=(evt)?evt:((window.event)?window.event:'');var elm=(evt.target)?evt.target:evt.srcElement;if(elm.getAttribute('dtype')=='any_pwd')elm.type='password';elm.style.color=artTypes[elm.getAttribute('dtype')]['norm_color'];if(elm.value==artTypes[elm.getAttribute('dtype')]['mask'])elm.value=''};this.mask_onBlur=function(evt){evt=(evt)?evt:((window.event)?window.event:'');var elm=(evt.target)?evt.target:evt.srcElement;if(elm.value==''||elm.value==artTypes[elm.getAttribute('dtype')]['mask']){if(elm.getAttribute('dtype')=='any_pwd')elm.type='text';elm.value=artTypes[elm.getAttribute('dtype')]['mask'];elm.style.color=artTypes[elm.getAttribute('dtype')]['mask_color']}};this.check=function(){this.valid=[];this.invalid=[];for(n=0;n<this.check_fields.length;n++){i=this.check_fields[n];if(this.frm.elements[this.fields[i]['i']].style.display=='none')continue;s=artTypes[this.fields[i]['dtype']]['regex'];if(s.test(this.fields[i]['value'])&&this.fields[i]['value']!=artTypes[this.fields[i]['dtype']]['mask'])this.valid[this.valid.length]=this.fields[i];else this.invalid[this.invalid.length]=this.fields[i]}};this.draw_errors=function(){var f=0;this.blinkme=null;for(i in this.invalid){if(!f){this.frm.elements[this.invalid[i]['i']].focus();f=1;if(this.alert_type=='alert')alert(artTypes[this.invalid[i]['dtype']]['msg']);this.blinkme=this.frm.elements[this.invalid[i]['i']];this.blink(0)}if(el=document.getElementById('err:'+this.invalid[i]['name'])){el.style.display='';el.innerHTML=artTypes[this.invalid[i]['dtype']]['msg']}}for(i in this.valid)if(el=document.getElementById('err:'+this.valid[i]['name'])){el.style.display='none'}};this.blink=function(i){if(this.blinkme==null)return;var _me=this;var _mei=(i+1);if(i<4)setTimeout(function(){if(_me.blinkme.style.backgroundColor=='')_me.blinkme.style.backgroundColor=_me.blink_color;else _me.blinkme.style.backgroundColor='';_me.blink(_mei)},200);else this.blinkme.style.backgroundColor=''};this.parse_frm=function(){this.frm=document.getElementById(this.frm_id);this.fields=[];elm=this.frm.elements;for(i=0;i<this.frm.length;i++)if(elm[i].getAttribute('dtype')!=undefined)this.fields[this.fields.length]={'i':i,'name':elm[i].name,'value':elm[i].value,'type':elm[i].type,'dtype':elm[i].getAttribute('dtype')};this.draw_mask()}};