function getReference()
{
var mod23 = 23
document.refConv.elements[1].value = document.refConv.elements[1].value.toUpperCase()
/* remove spaces from elements[2] */
var element2 = ""
for (var i = 0; i < document.refConv.elements[2].value.length; i++) {
	if (document.refConv.elements[2].value.substring(i,i + 1) != " ") {
		element2 = element2 + document.refConv.elements[2].value.substring(i,i + 1)
	}
}
var refno = document.refConv.elements[0].value + "P" + document.refConv.elements[1].value + right("00000000" + element2,8)
var refno = refno.toUpperCase()
  weighting  = new Array(13)
  weighting[0]   = 9;  weighting[1]   = 10;  weighting[2]   = 11;  weighting[3]   = 12
  weighting[4]   = 0   /* ignore check char */
  weighting[5]   = 8;  weighting[6]   = 7;  weighting[7]   = 6;  weighting[8]   = 5
  weighting[9]   = 4;  weighting[10]  = 3;  weighting[11]  = 2;  weighting[12]  = 1

  checkDigits = new Array(23)
  checkDigits[0] = "A";  checkDigits[1] = "B";  checkDigits[2] = "C";  checkDigits[3] = "D"
  checkDigits[4] = "E";  checkDigits[5] = "F";  checkDigits[6] = "G";  checkDigits[7] = "H"
  checkDigits[8] = "X";  checkDigits[9] = "J";  checkDigits[10] = "K";  checkDigits[11] = "L"
  checkDigits[12] = "M";  checkDigits[13] = "N";  checkDigits[14] = "Y";  checkDigits[15] = "P"
  checkDigits[16] = "Q";  checkDigits[17] = "R";  checkDigits[18] = "S";  checkDigits[19] = "T"
  checkDigits[20] = "Z";  checkDigits[21] = "V";  checkDigits[22] = "W"

var msgTxt = ""
var chkchr = -999
reg  = /\d{3}P[A-Z]\d{8}/
reg2 = /\961P[A-Z]\d{7}X/   //to allow codes starting with 961 AND ending in X  - CRL added 22.10.09
var error_count = 0
if (reg.test(refno) == false & reg2.test(refno) == false) {
	error_count = error_count + 1
}
else {
	var prod = 0 ; var total = 0
	for (var i = 0; i < 12; i++) {
		hold = "" + refno.substring(i, i + 1)
		if (i != 4) {   // dont do check char 
      			if (i != 3) {   // need to do p separately
 				prod = hold * weighting[i]
				total = total + prod
			}
			else {
       				prod = 48 * weighting[i]
        			total = total + prod 
			}
		}	
		else {  
// store check char
      			var chkchr = refno.substring(i,i+1)
		}  
	}
  	i = 12
  	bit = refno.substring(i,i+1)
  	if (bit.toUpperCase() == "X") {
   		prod = 41 * 1
  	}
 	else {
    		prod = bit * 1
 	}
  	total = total + prod 
}
var remainder = total%mod23
if(checkDigits[remainder] == chkchr) {
	// alert("PAYE Reference is correct")
	error_count = 0
}
else {
	error_count = error_count + 1
}
if (error_count == 0) {
	if (element2.length < 8) {
		var xx = right("00000000" + element2,8)
		alert("The correct reference number is " + document.refConv.elements[0].value + "P" + document.refConv.elements[1].value.toUpperCase() + xx.toUpperCase())
	}
	else {alert("Your Reference number is correct.")} }
else {
	var response = confirm("The reference number is incorrect. Press 'OK' for help or 'Cancel' to try again.")
	if (response) {window.location="/tools/payinghmrc/help/paye-help.htm"}
}
}


/******************/
function clearForm()
/*******************

   File        clearForm.jsm
   Copyright   Crown Copyright 2001

   Date        Author        Changes
   04-Jan-01   Chris Lowe    Created

   Purpose:
        To clear values from form fields. 

   Strategy:
        1. On clicking a button:
        2. Reset field values to null

   Input:
        none

   Output:
        none
--------------------------------------------------------------------- */
{

  document.refConv.elements[0].value = ""               // clear values
  document.refConv.elements[1].value = ""
  document.refConv.elements[2].value = ""
  

  return
}

function right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}