function Ctl(opts){var lvl=0;var hist=[];var rq=0;var t=this;this.enter=function(e,l){$("#next").click();}
this.del=function(e,l){$("#prev").click();}
this.next=function(v,lc,l){return l;}
this.get=function(l){return;}
this.set=function(json,l){return;}
this.loaded=function(l,u){return;}
this.url=function(l){return;}
this.show=function(d,l){return;}
this.lvl=function(){return lvl;}
this.hist=function(){return hist;}
this.par=function(p,l,v){if(!l&&!v)return"";var s=(v?v:this.hst(l));return(s?("&"+p+"="+s):"");}
this.hst=function(l){for(i=0;i<hist.length;i++){if(hist[i].lvl==l)return hist[i].val;}
return false;}
this.val=function(l,s){if(!s){var v=this.get(l);if(v)return v;}
var o=$("#a"+l);if(s){s=$.trim(s);if(o.hasClass("is-dropdown"))
o.is_dropdown("setValue",s);else
o.val(s);}
else if(o.hasClass("is-dropdown")){var val=o.is_dropdown("getValue");var txt=o.is_dropdown("getText");if(!val)txt="";return{lvl:l,val:val,txt:txt};}
else if(o[0].tagName=="INPUT"){return{lvl:l,val:o.val(),txt:o.val()};}
else{return{lvl:l,val:o.val(),txt:$(":selected",o).text()};}}
this.back=function(){rq++;var v=hist[hist.length-1];hist.pop();$("#lvl"+lvl).hide();$("#content small").hide();lvl=v.lvl;this.show(false,lvl);}
this.fwd=function(l){rq++;var v=this.val(lvl);l=this.next(v,lvl,(l?l:(lvl+1)));if(l==lvl)return false;hist.push(v);if(l>lvl){$("#a"+lvl).hide();$("#ad"+lvl).html(v.txt?v.txt:"-").show();}
else{$("#lvl"+lvl).hide();if(l<0)return this.back();}
lvl=l;load();return true;}
function load(){$("#next").attr("disabled","disabled");$("#content small").hide();$("#lvl"+lvl).show();var o=$("#a"+lvl).hide();$("#ad"+lvl).html("Загрузка...").show();var u=t.url(lvl);if(t.loaded(lvl,u)||o.data("url")==u)
return t.show(true,lvl);else
t.val(lvl," ");var rq2=rq;$.getJSON(u,function(json){if(rq!=rq2)return;if(json._exception)return jerr(json._exception,lvl);var o=$("#a"+lvl);o.data("url",u);t.set(json,lvl);t.show(true,lvl);});}
function jerr(e){$("#ad"+lvl).html("<span class='err'><b>Ошибка:</b> "+e+"</span>");alert("При загрузке справочника произошла ошибка: '"+e+"'.\nНажмите кнопку 'Назад', затем попробуйте еще раз.");}
$(document).data("ctl",this);$.extend(this,opts);$(".is-dropdown").is_dropdown();$.ajaxSetup({error:function(r,t,e){jerr(e,lvl);}});$("body").keydown(function(e){if((e.keyCode==13||e.keyCode==10)&&(e.target.tagName=="INPUT"||e.target.tagName=="SELECT")){t.enter(e,lvl);return false;}});$("input,select").keydown(function(e){if(e.keyCode==8&&(!this.value||this.tagName=="SELECT")){t.del(e,lvl);return false;}});$(window).load(function(){$("#lvl0 input[type=text]").focus();});$("#reset").click(function(){window.location.reload(false);});$("#next").click(function(){if($(this).attr("disabled"))return;if(t.fwd()){$("#prev").attr("disabled","");}});$("#prev").click(function(){if($(this).attr("disabled"))return;t.back();if(lvl==0)$(this).attr("disabled","disabled");});return this;}
function emp(a){if(!a)return true;if(!a.length)return true;return false;}
function h(house,json){if(emp(json))return false;function contains(interval,value){value=parseInt(value);var pos=interval.indexOf('-');var beg=parseInt(interval.substr(0,pos));var end=parseInt(interval.substr(pos+1));return(value>=beg&&value<=end);}
function srch(house,json,exactly){var odd=(parseInt(house)%2==1);var even=(parseInt(house)%2==0);for(var i=0;i<json.length;i++){var interval=json[i].interval.split(/,/g);for(var j=0;j<interval.length;j++){var sub=interval[j];if(house==sub)return json[i];if(!exactly){if(sub.indexOf('-')!=-1){if(sub.charAt(0)=='Н'){if(odd){sub=sub.substr(2,sub.length-3);if(contains(sub,house))return json[i];}}else if(sub.charAt(0)=='Ч'){if(even){sub=sub.substr(2,sub.length-3);if(contains(sub,house))return json[i];}}else{if(contains(sub,house))return json[i];}}}}}
return false;}
house=(house+'').toUpperCase();var result;if(parseInt(house)!=house){result=srch(house,json,true);if(result)return result;house=house.replace(/K/gi,"/");result=srch(house,json,true);if(result)return result;house=house.replace(/\//gi,"K");result=srch(house,json,true);if(result)return result;}
house=parseInt(house);result=srch(house,json,false);if(result)return result;return false;}
function innf(inn){if(inn==null||inn.length==0)return"";if(inn=="000000000000")return"Недопустимый ИНН";if(inn.length!=12)return"ИНН должен содержать 12 цифр";var w=[3,5,7,13,17,19,23,29,31,37,41];var sum1=0,sum2=0;for(i=0;i<10;i++){var a=inn.charAt(i)-'0';if(isNaN(a))return"ИНН должен содержать только цифры";sum1+=a*w[9-i];sum2+=a*w[10-i];}
sum1=11-(sum1%11);if(sum1>9)sum1=0;sum2=11-(sum2+3*sum1)%11;if(sum2>9)sum2=0;if((inn.charAt(10)-'0'==sum1)&&(inn.charAt(11)-'0'==sum2))return null;return"Некорректный ИНН";}
function innu(inn){if(inn==null||inn.length==0)return"";if(inn=="0000000000")return"Недопустимый ИНН";if(inn.length!=10)return"ИНН должен содержать 10 цифр";var w=[31,29,23,19,17,13,7,5,3];var a11=0;for(i=0;i<9;i++){var a=inn.charAt(i)-'0';if(isNaN(a))return"ИНН должен содержать только цифры";a11+=a*w[i];}
a11=11-(a11%11);if(a11>9)a11=0;if(inn.charAt(9)-'0'!=a11)return"Некорректный ИНН";return null;}