function isCPR(CPR) {
	//
	// VERSION: 1.0
	//
	// NAME: Is CPR?
	//
	// DESCRIPTION: Validates a CPR-number
	//
	// INPUT:
	// - CPR: CPR-number in a 10 digit or 11 char format, eg. 1111111118 or 111111-1118, any other formats will
	// result in failure.
	//
	// OUTPUT:
	// Return value : True if CPR-number is valid, false on failure or if invalid.
	// Valid CPR: 111111-1118
	// Invalid CPR: 0123456789
	// 
	// NOTE: Source for knowlede of the CPR-number: http://tom.paamand.dk/cpr.htm
	//
	
	// The special CPR-control number
	arrControlNumber = new Array(4, 3, 2, 7, 6, 5, 4, 3, 2);
	
	// If CPR in 11-char format then convert it to 10 char format:
	if (CPR.length==11) {
		CPR = CPR.substring(0,6)+CPR.substring(7,11);
	}
	// Convert input to integer
	CPR = parseInt(CPR, 10);
	if (isNaN(CPR)) { return false; }
	
	// Check length of input
	if (CPR>3112999999 || CPR<101009999) { return false; }
	
	// Calculate control-digit
	start = 10-Math.floor(Math.log(CPR)/Math.log(10)+1);
	sum = 0;
	for (i=start; i<9; i++) {
		sum += (""+CPR).substring(i-start,i-start+1)*arrControlNumber[i];
	}
	if (sum%11==0) {
		controlDigit = 0;
	} else {
		controlDigit = 11-(sum%11);
	}
	
	// Check if control-number is correct
	return controlDigit==(""+CPR).substring(9-start,10-start);
}