
<!-- // hide from older browsers
/*
* NAME: checkKennitala
* WHAT: Function to valdidate Icelandic kennitala (social security number)
* WHO: Gunnlaugur Sigurdsson (gunnlaugursig@hotmail.com)
* WHEN: 21/10/2003
* KENNITALA FORMAT: DDMMYYXXXX where the last X equals the century, i.e. 1948 X=9 else if 2001 then X=0
* You can try this kennitala 1701487469 as input, it's the icelandic priministers
*/
var vartalaFlag = false;

function checkSSN(pSSN,pOkNoLength) {
 // get value from user input form
 var kennit = pSSN.value,args=checkSSN.arguments;

 // pattern to ensure we only have ten digits as input...
 var kennitalaPattern = /^([0-9]{10})$/;
 
 // first sanity check..
 // alert(pOkNoLength);
 if (pSSN.value.length == 0) {
  if (pOkNoLength != undefined) {
	return true;
  }
  alert("Vinsamlega sláğu inn kennitölu.");
  return false;
 }
 // second sanity check...
 // if (arguments[1] == null) {
   if (pSSN.value.charAt(6) == '-') {
    kennit = pSSN.value.substr(0,6) + pSSN.value.substr(7,4);
    // alert("Please do not use \'-\' in your kennitala.");
    pSSN.value = kennit;
   }
 // }
 // third sanity check...
 if (pSSN.value.match(kennitalaPattern) == null) {
  alert("Kennitala samanstendur 10 tölustöfum. Vinsamlegast settu ağeins rétta kennitölu şína í şennan reit.");
  return false;
 }

 // we should be okay by now, so let's start working on the input...
 var sum = kennit.charAt(0) * 3;
 sum = sum + kennit.charAt(1) * 2;
 sum = sum + kennit.charAt(2) * 7;
 sum = sum + kennit.charAt(3) * 6;
 sum = sum + kennit.charAt(4) * 5;
 sum = sum + kennit.charAt(5) * 4;
 sum = sum + kennit.charAt(6) * 3;
 sum = sum + kennit.charAt(7) * 2;
 

// let's find out what vartala we got...
 
 var vartala = 11 - (sum % 11); 
 // alert(concat(sum,vartala));
// vartala should equal kennit.charAt(8)
 if(vartala == 11 || vartala == 10) {
	vartala = 0; 
 }

 if(kennit.charAt(9) == '9' || kennit.charAt(9) == '0') {
 // Is the end with a 9 or 0?
  vartalaFlag = true;
  return true;
 } else {
 // handle error here...
  alert("Kennitalan stenst ekki vartölupróf!\nVinsamlegast leiğréttu hana.");
  vartalaFlag = false;
  return false; // kennitala is not correct
 }
 
 if(vartala == kennit.charAt(8)) {
 // since vartala is correct, you take what action you think is right...
  // alert("Kennitala is correct! ");
  vartalaFlag = true;
  return true;
 } else {
 // handle error here...
  alert("Kennitalan stenst ekki vartölupróf!\nVinsamlegast leiğréttu hana.");
  vartalaFlag = false;
  return false; // kennitala is not correct
 }
} // checkKennitala end's here

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  /* if (checkSSN(document.getElementById('idSSN'))) {
    document.MM_returnValue = false;
	return false;
  } */
  if (vartalaFlag == false) {
	alert('Vartala kennitölu stenst ekki.')
	document.MM_returnValue = false; 
	return false;
  }
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  
  for (i=0; i<(args.length-2); i+=3) { 
    test=args[i+2]; 
	val=MM_findObj(args[i]);
    if (val) { 
	  nm=val.name; 
	  // alert(nm);
	  if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { 
	      p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' verğur ağ innihalda netfang.\n';
		/* } else if (nm == 'LastName') {  // Kennitala
		    // alert(nm);
		    if (checkSSN(val,false)) {
			  errors += '- '+'Ath. kennitölu\n';
		    } */
        } else if (test!='R') { 
	      num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { 
		    p=test.indexOf(':');
            min=test.substring(8,p); 
		    max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
          } 
		}
	  } else if (test.charAt(0) == 'R') errors += '- '+nm+' verğur ağ innihalda nafn.\n'; 
    }
  } 
  if (errors) alert('Vinsamlegast ath. eftirfarandi villur í innslætti:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->


