Номера СНИЛС
Расчёт контрольной суммы СНИЛС, а так же поиск ошибок в номере
HTML
<link rel="stylesheet" href="http://getbootstrap.com/2.3.2/assets/css/bootstrap.css">
<div class="container">
<div class="row">
<div id="main" class="span6 offset3">
<form id="enterSnils" class="form-search well">
<legend>Поиск ошибок в номере СНИЛС (0.5.2)</legend>
<div id="formMain">
<div id="alertDiv">
<!-- -->
</div>
<div class="input-prepend input-append"> <span class="add-on"><i class="icon-search"></i></span>
<input class="input-xlarge" id="appendedPrependedInput" type="text" placeholder="123-456-789 00" autofocus>
<button class="btn btn-primary" type="submit">Поиск ошибок</button>
</div>
</div>
</form>
</div>
</div>
</div>
CSS
body {
padding-top: 5px;
}
JavaScript
$(document).ready(function() {
// Замена цифры на b в числе a в позиции i
function changeDigit(a, b, i) {
function st10(n) {
var b = 1;
for (var i = 1; i < n; i++) {
b *= 10;
}
return b;
}
return (((a / st10(i + 2) | 0) * 10) + b) * st10(i + 1) + (a % st10(i + 1));
}
// Подсчёт контрольного числа
// Возврат INT
function calcControlSummSnils(snils) {
// Проверка суммы
function checkSumm(s) {
if (s < 10) {
return "0" + s;
}
if (s < 100) {
return s;
}
if (s === 100 || s === 101) {
return "00";
}
if (s > 101) {
return checkSumm(s % 101);
}
}
// Расчёт суммы
var summ = 0;
for (var i = 0; i < 9; i++) {
summ += (9 - i) * parseInt(snils[i]);
}
console.log(summ);
return checkSumm(summ);
}
// Перевод массива в строку
function arr2str(arr) {
var str = "";
for (var i = 0; i < arr.length; i++) {
str += arr[i];
}
return str;
}
// Убирает из строки лишние символы - возврат массива цифр
function validateSnils(str) {
var digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var correctStr = [];
for (var i = 0; i < str.length; i++) {
if (str[i] in digits) {
correctStr.push(parseInt(str[i]));
}
}
//console.log(correctStr);
return arr2str(correctStr);
}
// Проверка на совпадание контрольной суммы
function checkSnils(snils) {
if (parseInt(calcControlSummSnils(snils.substring(0, 9))) === parseInt(snils.substring(9, 11))) {
return true;
} else {
return false;
}
}
//
function showAlert(str, type) {
$("#alertDiv").remove();
$("#formMain").prepend("<div id=\"alertDiv\"></div>");
$("#alertDiv").append("<div class=\"alert alert-" + type + "\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button><strong>Внимание! </strong>" + str + "</div>");
}
// поиск корректных...