function ValidRegNo(regNo, prefix)  {

var PrefixArray = new Array();
PrefixArray = [{"K":"2","V":"PS,PSC,PMT,"},
{"K":"7","V":"BK,CH,MA,PT,SBK,SCH,SPT,"},
{"K":"8","V":"OT,OS,SOS,SOT,"},
{"K":"9","V":"AU,ST,STA,SAU,SSTA,"},
{"K":"10","V":"DT,"},
{"K":"12","V":"OD,OP,OR,SOD,SOP,"},
{"K":"19","V":"10-,40-,"}]

    var validPrefixes = '';
    var v = regNo.value;
    var errMsg = 'Please enter a valid Registration Number - it must start with the characters ';

    if (v=='')  {
      alert('Registration Number is required.');
      regNo.focus();
      return false;
    }

    if (v.charAt(2) == '-')  {
      lenToCheck = 3;}
    else  {
      for (j=0; j < v.length; j++) {
        var c = v.charAt(j);
        if (!isNaN(c)) {
          var lenToCheck = j;
          break;
        }
      }
    }
    if (lenToCheck == 0) {lenToCheck = 2};

    var toCheck = v.substr(0,lenToCheck).toUpperCase();

    if(prefix.substr(0,1) == '?') {
      prefix = prefix.substr(1, prefix.indexOf('|') - 1)
      if (isNaN(prefix)) {prefix = '';}
    }

    if (prefix == '') {
      for (i=0;i<PrefixArray.length;i++) {
	validPrefixes += PrefixArray[i]["V"];
      }
      if (validPrefixes.indexOf(toCheck + ',') == -1 && validPrefixes.indexOf(',' + toCheck) == -1)  {
        alert(errMsg + validPrefixes.substr(0, validPrefixes.length - 1) + '.');
        regNo.focus();
        return false;
      }
      prefix = v.substr(0,lenToCheck)
    }
    else if(!isNaN(prefix)) {
      for (i=0;i<PrefixArray.length;i++) {
        if (PrefixArray[i]["K"] == prefix)  {
          //alert('regno: ' + v + 'array: ' + PrefixArray[i]["V"] + ' val: ' + toCheck + ',')
          if (PrefixArray[i]["V"].indexOf(toCheck + ',') == -1 && PrefixArray[i]["V"].indexOf(',' + toCheck) == -1)  {
            alert(errMsg + PrefixArray[i]["V"].substr(0, PrefixArray[i]["V"].length -1) + '.');
            regNo.focus();
            return false;
          }
          prefix = v.substr(0,lenToCheck);
          break;
        }
      }
    }
    else if (toCheck != prefix)  {
      alert(errMsg + prefix + '.');
      regNo.focus();
      return false;
    }
    var v = v.substr(lenToCheck);
    for (j=0; j < v.length; j++) {
      var c = v.charAt(j);
      if (isNaN(c) || c == ' ') {
        alert('Please enter a valid Registration Number - it must be numeric after the characters '+ prefix + ' (no spaces).');
        regNo.focus();
        return false;
      }
    }
    //if (v.substr(lenToCheck).indexOf(' ') > -1 || isNaN(v.substr(lenToCheck,1)) || isNaN(v.substr(lenToCheck)) || v.substr(lenToCheck).length == 0)  {
    //}
    return true;
}

