Updated version:
function generatePersonalInfo(){
var MorF = Math.floor((Math.random() * 2) + 3);
var year = Math.floor((Math.random() * 99) + 1);
if(year<10){year="0"+year}
var month = Math.floor((Math.random() * 12) + 1);
if(month<10){month="0"+month}
var day = Math.floor((Math.random() * 28) + 1);
if(day<10){day="0"+day}
var rand3nums = Math.floor((Math.random() * 999) + 1);
if(rand3nums<10){rand3nums="00"+rand3nums}
else if(rand3nums<100){rand3nums="0"+rand3nums}
var DoB = 19+""+year+"."+month+"."+day;
var personalCode = MorF+""+year+""+month+""+day+""+rand3nums;
last = (parseInt(personalCode.substring(0,1))*1 + parseInt(personalCode.substring(1,2))*2 + parseInt(personalCode.substring(2,3))*3 + parseInt(personalCode.substring(3,4))*4 + parseInt(personalCode.substring(4,5))*5 + parseInt(personalCode.substring(5,6))*6 + parseInt(personalCode.substring(6,7))*7 + parseInt(personalCode.substring(7,8))*8 + parseInt(personalCode.substring(8,9))*9 + parseInt(personalCode.substring(9,10))*1) % 11;
if(last == 10){
last = (parseInt(personalCode.substring(0,1))*3 + parseInt(personalCode.substring(1,2))*4 + parseInt(personalCode.substring(2,3))*5 + parseInt(personalCode.substring(3,4))*6 + parseInt(personalCode.substring(4,5))*7 + parseInt(personalCode.substring(5,6))*8 + parseInt(personalCode.substring(6,7))*9 + parseInt(personalCode.substring(7,8))*1 + parseInt(personalCode.substring(8,9))*2 + parseInt(personalCode.substring(9,10))*3) % 11;
if(last == 10){
last = 0;
}
}
personalCode = personalCode+""+last;
var regNo = "0"+personalCode.substring(1, 11);
var MorFstr = "";
if(MorF==3){
MorFstr = "M";
}else if(MorF==4){
MorFstr = "F";
}
var array = [personalCode, DoB, regNo, rand3nums, MorFstr];
return array;
}
personalCode - 11 digit lithuanian citizen personal code
DoB - date of birth
regNo - just a mock number (no value)
rand3nums - *******XXX* in the personalCode
MorFstr - string that represents Male or Female (returns 'M' or 'F'). 3 - male born in XXth century, 4 - female born in XXth century.