﻿$(document).ready(function(){
	$("span.terms").click(function(){
		$("#TermsContainer").show();
	});
	$("a.close").click(function(){
		$("#TermsContainer").hide();
	});
});

function ValidatePersonnummerInternal(pnr) {

	if (!isNumeric(pnr)) {
		return false;
	}

	if (pnr.length != 10) {
		return false;
	}

	if (!checkBirthDate(pnr.substr(2, 4))) {
		return false;
	}

	if (GetChecksum(pnr.substr(0, 9)) != pnr.substr(9, 1)) {
		return false;
	}

	return true;
	
}

function GetChecksum(val) {
	var tmpNum;
	var res = new Number();

	for (a = 0; a < 9; a++) {
		tmpNum = val.charAt(a) * (((a + 1) % 2) + 1);
		if (tmpNum > 9) {
			res = res + parseInt(tmpNum.toString().charAt(0)) + parseInt(tmpNum.toString().charAt(1));
		}
		else {
			res = res + parseInt(tmpNum);
		}
	}

	if (res > 9) {
		res = parseInt(res.toString().charAt(1));
	}

	if (res == 10 || res == 0) {
		return 0;
	}
	else {
		return 10 - res;
	}
}

function isNumeric(val) {
	if (val == null || !(/\d/.test(val))) return false;
	return true;
}

function checkBirthDate(val) {
	var month = val.substr(0, 2);
	var date = val.substr(2, 2);

	if (month > 12) {
		return false;
	}

	switch (month) {
		case "01":
		case "03":
		case "05":
		case "07":
		case "08":
		case "10":
		case "12":
			if (date > 31) {
				return false;
			}
			break;
		case "04":
		case "06":
		case "09":
		case "11":
			if (date > 30) {
				return false;
			}
			break;
		case "02":
			if (date > 29) {
				return false;
			}
			break;
		default:
			return false;
			break;
	}

	return true;
}
