Малко сложно но все пак помощ!?

emcuemnecu

Registered
значи трябва ми нещо като търсачка само че се въвежда дадено ЕГН и ако има резултат отваря страницата - досието на което принадлежи ЕГН-то.
някой разбира ли ме какво искам?
 
Код:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>EGN</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<style type="text/css">
body {
background-color: white;
}
* {
font: 13px verdana, sans-serif;
}
form {
width: 400px;
margin: 0 auto;
}
#egn_info {
padding-top: 10px;
}
.title {
margin-bottom: 10px;
font: bold 15px verdana;
text-align: center;
}
</style>
<script type="text/javascript">
function EGN(egnNum)
{
this.egnNum = egnNum;
this.monthBorn = this.getNums(this.egnNum, 2, 2);
this.dayBorn = this.getNums(this.egnNum, 4, 2);
this.regionNum = this.getNums(this.egnNum, 6, 3);
this.dateBorn = this.getDateBorn();
}

EGN.prototype.getDateBorn = function ()
{
var year_flag = 1900;

if (this.monthBorn > 40) year_flag += 100;
else if (this.monthBorn > 20) year_flag -= 100;

this.monthBorn = (this.monthBorn % 20) - 1;
return new Date(year_flag + this.getNums(this.egnNum, 0, 2), this.monthBorn, this.dayBorn);
}

EGN.prototype.getNums = function (str, start, simbolNum)
{
return (str.substr(start, simbolNum) * 1);
}

EGN.prototype.isValid = function ()
{
if (!(/^\d{10}$/.test(this.egnNum)) || new Date().getTime() < this.dateBorn.getTime() || this.dateBorn.getMonth() != this.monthBorn || this.dateBorn.getDate() != this.dayBorn)
{
return false;
}

var flagNum = new Array(2, 4, 8, 5, 10, 9, 7, 3, 6, 0);
var lastNum = 0;
for (i = 0; i < flagNum.length; ++i)
{
var curNum = this.getNums(this.egnNum, i, 1);
lastNum += flagNum[i] * curNum;
}
if ((lastNum % 11) % 10 != curNum)
return false;

return true;
}

EGN.prototype.getSex = function ()
{
return (this.getNums(this.egnNum, 8, 1) % 2 == 0) ? 'мъж' : 'жена';
}

EGN.prototype.getYearOld = function ()
{
var curently = new Date();
var diff = Math.floor((curently.getTime() - this.dateBorn.getTime()) / (1000 * 60 * 60 * 24));
diff -= Math.floor((curently.getFullYear() - this.dateBorn.getFullYear()) / 4);
return Math.floor(diff / 365);
}

EGN.prototype.getConstellation = function ()
{
var zodiacal = new Array();
zodiacal['21.00'] = 'Козирог';
zodiacal['20.01'] = 'Водолей';
zodiacal['21.02'] = 'Риби';
zodiacal['21.03'] = 'Овен';
zodiacal['21.04'] = 'Телец';
zodiacal['22.05'] = 'Близнаци';
zodiacal['23.06'] = 'Рак';
zodiacal['24.07'] = 'Лъв';
zodiacal['24.08'] = 'Дева';
zodiacal['24.09'] = 'Везни';
zodiacal['23.10'] = 'Скорпион';
zodiacal['22.11'] = 'Стрелец';
var curYear = this.dateBorn.getFullYear();
for (i in zodiacal)
{
if (new Date(curYear, this.getNums(i, 3, 2), this.getNums(i, 0, 2)) > this.dateBorn)
{
return zodiacal[i];
}
}

return 'Козирог';
}

EGN.prototype.regionName = [
['Благоевград', 43],
['Бургас', 93],
['Варна', 139],
['Велико Търново', 169],
['Видин', 183],
['Враца', 217],
['Габрово', 233],
['Кърджали', 281],
['Кюстендил', 301],
['Ловеч', 319],
['Монтана', 341],
['Пазарджик', 377],
['Перник', 395],
['Плевен', 435],
['Пловдив', 501],
['Разград', 527],
['Русе', 555],
['Силистра', 575],
['Сливен', 601],
['Смолян', 623],
['София - град', 721],
['София - окръг', 751],
['Стара Загора', 789],
['Добрич (Толбухин)', 821],
['Търговище', 843],
['Хасково', 871],
['Шумен', 903],
['Ямбол', 925],
['Друг/Неизвестен', 999]
]

EGN.prototype.getRegionIndex = function ()
{
for (i = 0; i < this.regionName.length; ++i)
{
if (this.regionName[i][1] >= this.regionNum)
{
return i;
}
}
}

EGN.prototype.getRegionName = function ()
{
return this.regionName[this.getRegionIndex()][0];
}

EGN.prototype.getChildNum = function ()
{
var i = this.getRegionIndex();
return ((i == 0 ? this.regionNum + 1 : this.regionNum - this.regionName[i - 1][1]));
}

EGN.prototype.getChildNumSex = function ()
{
return Math.ceil(this.getChildNum() / 2);
}

EGN.prototype.getSumNumber = function(sender)
{
var sum = 0;
for (i = 0; i < sender.length; ++i)
{
sum += this.getNums(sender, i, 1);
}
return sum;
}

EGN.prototype.calculateLuckyNumber = function (year)
{
var nums = this.getSumNumber('' +year + (this.dateBorn.getMonth() + 1) + this.dateBorn.getDate());
while (nums > 11 || nums == 10)
{
nums = this.getSumNumber('' +nums);
}
return nums;
}

EGN.prototype.getLuckyNumber = function(flag)
{
flag = (flag == 'year') ? new Date() : this.dateBorn;
return this.calculateLuckyNumber(flag.getFullYear());
}


function checkEgn()
{
var obj = document.getElementById('egn_info');
var egn = new EGN(document.forms['root'].elements['egn_num'].value);
if (!egn.isValid())
{
obj.innerHTML = 'Невалидно ЕГН !!!!';
return false;
}
obj.innerHTML =
'Пол: ' +egn.getSex()
+'<br>Регион на раждане: ' +egn.getRegionName()
+'<br>Пореден номер на раждане за региона: ' +egn.getChildNum()
+'<br>Пореден номер на раждане за региона от същия пол: ' +egn.getChildNumSex()
+'<br>Възраст: ' +egn.getYearOld()+ 'г.'
+'<br>Зодия: ' +egn.getConstellation()
+'<br>Щастливо число през живота: '+egn.getLuckyNumber()
+'<br>Щастливо число през тази година: '+egn.getLuckyNumber('year')
}
</script>
</head>

<body>
<form name="root" onsubmit="checkEgn(); return false;" action="">
<div class="title">Проверка на ЕГН</div>
<label>Въведете ЕГН:</label>
<input maxlength="10" type="text" name="egn_num">
<input type="submit" value="Провери">
<div id="egn_info">
</div>

</form>
</body>
</html>


Демо
 
Благодаря за кода, но ще може ли малко обяснение към него защото то идеята като се въведе ЕГН-то да излиза страница със данните!?
 

Back
Горе