function Cpr(str) {
	this.str = str;
	this.array = new Array(10);

	var j=0;
	for(i=0;i<str.length;i++) {
		var n = parseInt(str.charAt(i));
		if (!isNaN(n))
			this.array[j++] = n;
	}

	this.mod11     = Cpr_mod11;
	this.birth     = Cpr_birth;
	this.age       = Cpr_age;
	this.toString  = Cpr_toString;
	this.toString2 = Cpr_toString2;

	this.valid = this.mod11();
}

function Cpr_mod11() {
	if (this.valid) return true;

    var test= 0;
    var a2 = [4, 3, 2, 7, 6, 5, 4, 3, 2, 1];
    for(i = 0; i < 10; i++) {
        test += this.array[i] * a2[i];
    }
    return ((test % 11) == 0)
}

function Cpr_birth() {
	if (!this.valid) return
	var d = this.array[0]*10 + this.array[1];
	var m = this.array[2]*10 + this.array[3];
	var y = this.array[4]*10 + this.array[5];
	return new Date(y,m-1,d);  // month is zero-based
}

function Cpr_age() {
	if (!this.valid) return
	var now = new Date();
	var milli = now.getTime() - this.birth().getTime();
	milli /= 1000 * 60 * 60 * 24 * 365.25;

	return milli;
}
function Cpr_toString() {
	if (!this.valid) return
	var str = '';
	for(i = 0; i < 6; i++) {
		str += this.array[i];
	}
	str += '-';
	for(i = 6; i < 10; i++) {
		str += this.array[i];
	}

	return str;
}
function Cpr_toString2() {
	if (!this.valid) return
	var str = '';
	for(i = 0; i < 10; i++) {
		str += this.array[i];
	}

	return str;
}


