<!--

nmrValidPC     = 124
  validpc     = new makeArray(nmrValidPC)

validpc[1] = "AB"
validpc[2] = "AL"
validpc[3] = "B"
validpc[4] = "BA"
validpc[5] = "BB"
validpc[6] = "BD"
validpc[7] = "BH"
validpc[8] = "BL"
validpc[9] = "BN"
validpc[10] = "BR"
validpc[11] = "BS"
validpc[12] = "BT"
validpc[13] = "CA"
validpc[14] = "CB"
validpc[15] = "CF"
validpc[16] = "CH"
validpc[17] = "CM"
validpc[18] = "CO"
validpc[19] = "CR"
validpc[20] = "CT"
validpc[21] = "CV"
validpc[22] = "CW"
validpc[23] = "A"
validpc[24] = "DD"
validpc[25] = "DE"
validpc[26] = "DG"
validpc[27] = "DH"
validpc[28] = "DL"
validpc[29] = "DN"
validpc[30] = "DT"
validpc[31] = "DY"
validpc[32] = "E"
validpc[33] = "EC"
validpc[34] = "EH"
validpc[35] = "EN"
validpc[36] = "EX"
validpc[37] = "FK"
validpc[38] = "FY"
validpc[39] = "G"
validpc[40] = "GL"
validpc[41] = "GU"
validpc[42] = "GY"
validpc[43] = "HA"
validpc[44] = "HD"
validpc[45] = "HG"
validpc[46] = "HP"
validpc[47] = "HR"
validpc[48] = "HS"
validpc[49] = "HU"
validpc[50] = "HX"
validpc[51] = "IG"
validpc[52] = "IM"
validpc[53] = "IP"
validpc[54] = "IV"
validpc[55] = "JE"
validpc[56] = "KA"
validpc[57] = "KT"
validpc[58] = "KW"
validpc[59] = "KY"
validpc[60] = "L"
validpc[61] = "LA"
validpc[62] = "LD"
validpc[63] = "LE"
validpc[64] = "LL"
validpc[65] = "LN"
validpc[66] = "LS"
validpc[67] = "LU"
validpc[68] = "M"
validpc[69] = "ME"
validpc[70] = "MK"
validpc[71] = "ML"
validpc[72] = "N"
validpc[73] = "NE"
validpc[74] = "NG"
validpc[75] = "NN"
validpc[76] = "NP"
validpc[77] = "NR"
validpc[78] = "NW"
validpc[79] = "OL"
validpc[80] = "OX"
validpc[81] = "PA"
validpc[82] = "PE"
validpc[83] = "PH"
validpc[84] = "PL"
validpc[85] = "PO"
validpc[86] = "PR"
validpc[87] = "RG"
validpc[88] = "RH"
validpc[89] = "RM"
validpc[90] = "S"
validpc[91] = "SA"
validpc[92] = "SE"
validpc[93] = "SG"
validpc[94] = "SK"
validpc[95] = "SL"
validpc[96] = "SM"
validpc[97] = "SN"
validpc[98] = "SO"
validpc[99] = "SP"
validpc[100] = "SR"
validpc[101] = "SS"
validpc[102] = "ST"
validpc[103] = "SW"
validpc[104] = "SY"
validpc[105] = "TA"
validpc[106] = "TD"
validpc[107] = "TF"
validpc[108] = "TN"
validpc[109] = "TQ"
validpc[110] = "TR"
validpc[111] = "TS"
validpc[112] = "TW"
validpc[113] = "UB"
validpc[114] = "W"
validpc[115] = "WA"
validpc[116] = "WC"
validpc[117] = "WD"
validpc[118] = "WF"
validpc[119] = "WN"
validpc[120] = "WR"
validpc[121] = "WS"
validpc[122] = "WV"
validpc[123] = "YO"
validpc[124] = "ZE"

postCodeFlag = 0   // set to one if user has already chosen pc or not
  foaFlag = 0 // For FOA Name field input

numForms = 65
       formName = new makeArray(numForms)
       
       formName[1] = "CA1542"
       formName[2] = "CA1543"
       formName[3] = "CA1544"
       formName[4] = "CA1545"
       formName[5] = "CA1548"
       formName[6] = "CA1550"
       formName[7] = "CA1552"
       formName[8] = "CA1554"
       formName[9] = "CA1555"
       formName[10] = "CA1557"
       formName[11] = "CA1557A"
       formName[12] = "CA1559"
       formName[13] = "CA1560"
       formName[14] = "CA1560A"
       formName[15] = "CA1563"
       formName[16] = "CA1563A"
       formName[17] = "CA1565A"
       formName[18] = "CA1567"
       formName[19] = "CA1569"
       formName[20] = "CA1569A"
       formName[21] = "CA1572"
       formName[22] = "CA1572A"
       formName[23] = "CA1574"
       formName[24] = "CA1574A"
       formName[25] = "CA1575"
       formName[26] = "CA1576"
       formName[27] = "CA1576A"
       formName[28] = "CA1580"
       formName[29] = "CA1583"
       formName[30] = "CA1584"
       formName[31] = "CA1586"
       formName[32] = "CA1589"
       formName[33] = "CA1590"
       formName[34] = "CA1591"
       formName[35] = "CA1592"
       formName[36] = "CA1594"
       formName[37] = "CA1597"
       formName[38] = "CA1599"
       formName[39] = "CA1600"
       formName[40] = "CA1601"
       formName[41] = "CA1602"
       formName[42] = "CA1604"
       formName[43] = "CA1609"
       formName[44] = "CA1610"
       formName[45] = "CA1611"
       formName[46] = "CA1612"
       formName[47] = "CA1615"
       formName[48] = "CA1616"
       formName[49] = "CA1617"
	   formName[50] = "CA1642"
       formName[51] = "CA1717"
       formName[52] = "CA1872"
       formName[53] = "CA1881"
       formName[54] = "CA1886"
       formName[55] = "CA1887"
       formName[56] = "CA1888"
       formName[57] = "CA1889"
       formName[58] = "CA1890"
       formName[59] = "CA1892"
       formName[60] = "CA1895"
	   formName[61] = "CA1896"
       formName[62] = "CA2202"
       formName[63] = "CA8476"
	   formName[64] = "CA39"
       formName[65] = "CA43"
       
       
       
  maxVal   = new makeArray(numForms)
  
             maxVal[1] = 10000
             maxVal[2] = 10000
             maxVal[3] = 10000
             maxVal[4] = 10000
             maxVal[5] = 10000
             maxVal[6] = 10000
             maxVal[7] = 10000
             maxVal[8] = 10000
             maxVal[9] = 10000
             maxVal[10] = 10000
             maxVal[11] = 10000
             maxVal[12] = 10000
             maxVal[13] = 10000
             maxVal[14] = 10000
             maxVal[15] = 10000
             maxVal[16] = 10000
             maxVal[17] = 10000
             maxVal[18] = 10000
             maxVal[19] = 10000
             maxVal[20] = 10000
             maxVal[21] = 10000
             maxVal[22] = 10000
             maxVal[23] = 10000
             maxVal[24] = 10000
             maxVal[25] = 10000
             maxVal[26] = 10000
             maxVal[27] = 10000
             maxVal[28] = 10000
             maxVal[29] = 10000
             maxVal[30] = 10000
             maxVal[31] = 10000
             maxVal[32] = 10000
             maxVal[33] = 10000
             maxVal[34] = 10000
             maxVal[35] = 10000
             maxVal[36] = 10000
             maxVal[37] = 10000
             maxVal[38] = 10000
             maxVal[39] = 10000
             maxVal[40] = 10000
             maxVal[41] = 10000
             maxVal[42] = 10000
             maxVal[43] = 10000
             maxVal[44] = 10000
             maxVal[45] = 10000
             maxVal[46] = 10000
             maxVal[47] = 10000
             maxVal[48] = 10000
             maxVal[49] = 10000
             maxVal[50] = 10000
             maxVal[51] = 10000
             maxVal[52] = 10000
             maxVal[53] = 10000
             maxVal[54] = 10000
             maxVal[55] = 10000
             maxVal[56] = 10000
             maxVal[57] = 10000
             maxVal[58] = 10000
             maxVal[59] = 10000
             maxVal[60] = 10000
             maxVal[61] = 10000
             maxVal[62] = 10000
             maxVal[63] = 25
			 maxVal[64] = 10000
             maxVal[65] = 10000
             
             
 start = 14
 
 
 
 
 function checkIfNumb(value)
 {
   var retValue       = 0
   var badValuesIndex = 0
   var valids         = 0
 
   var numbers        = "0123456789"               // valid characters
 
   var bad            = "no"
   var hold           = ""
   var badValues      = ""
   var spacesMsg      = ""
   var badValuesMsg   = ""
   var alertMsg       = ""
 
   value = stripBlanks(value)            // remove preceding and trailing blanks
 
   for (var i=0; i < value.length; i++) {       // LOOP1 -take a char at a time from input string
     hold = "" + value.substring(i, i+1)
 
     if (numbers.indexOf(hold) < 0) {                 // save char if it is bad
       retValue = 1
     }
 
     else if (numbers.indexOf(hold) <= numbers.length) { // valid number found
       valids ++
     }
   }                                                  // END LOOP1
 
   return retValue
 
}
             


function makeArray(n) {
  this.length = n
  for(var i = 1;i<=n;i++)
    this[i] = 0
  return this
}

function check() {
  var  totForms = 0
  var order     = 0
  var message   = "Please check and re-enter the following details:"
  var fld       = -1   // no errors
  for (var i = 1; i <= numForms; i ++) { // start at first form to be ordered
    j = i + start - 1
    retValue = checkIfNumb(document.f1.elements[j].value)
    if (retValue != 0) {
      document.f1.elements[j].focus()
      document.f1.elements[j].select()
      alert("You have entered an invalid quantity: '" + document.f1.elements[j].value + "' while trying to order '" + formName[i] + "-" + "'  - Please check this value and only enter whole digit numbers.")
      return false
    }
    if (document.f1.elements[j].value != ""){
      order = document.f1.elements[j].value * 1
      totForms = totForms + order
    }
  }
  if (totForms == 0) {
    alert("You are trying to process this form but you have not ordered any stationery.\nPlease try again or cancel the form")
    return false
  }

  for (var i = 1; i <= numForms; i ++) { // start at first form to be ordered
      j = i + start - 1
      maxValue = checkIfNumb(document.f1.elements[j].value)
  
  	if (document.f1.elements[j].value > maxVal[i]){
        document.f1.elements[j].focus()
        document.f1.elements[j].select()
        alert("There is a maximum order quantity of " + maxVal[i] + " for the " + formName[i] + ". ")
        return false

      }
      else if (document.f1.elements[j].value > 2000) {
        
       var answer = window.confirm("You have ordered more than 2000 copies of "  + formName[i] + ". There may be a delay in processing your order." + "\n" +
      	                     "Click OK to procede with this order" + "\n" +
                                         "or Cancel to go back:")
        if (answer == true) {
        continue  }
        else {
        document.f1.elements[j].focus()
        document.f1.elements[j].select()
        return false
              }
           			
  		} 	 	
                       }
  	
  
      var a1=document.f1.address.value;
      var a2=document.f1.address1.value;
      var a3=document.f1.address2.value;
      var a4=document.f1.address3.value;
      var pc=document.f1.postcode.value;
      var foa = document.f1.title.value
      
    
      var address =a1+a2+a3+a4;
    
      if (a1 == "" || a2 == "") {
        if (fld == -1)  {fld = 7}
        message += "\n  - at least the first two lines in the Delivery Address";
      }
    
      else {
        var a1first = a1.substring(0,1)
        if (a1first == "0"){
          if (fld == -1) {fld = 5}
          message += "\n     - the first character in the address must not be 0";
        }
  }
    if (pc == "") {
      if (postCodeFlag == 0) {
        var pcneeded = window.confirm("You have not entered your postcode." + "\n" +
                                     "Click OK to procede with a blank postcode" + "\n" +
                                     "or Cancel to go back:")
        if(!pcneeded) {
          if (fld == -1) { fld = 11}
          message += "\n     - the Post Code for the delivery address"
        }
        else {
          postCodeFlag = 1    // just do this once - set = 1 if pc not needed
        }
      }
    }
  
    if (pc != "") {        // post code entered
      var validpostcode = isPostCode(pc)
      if (postCodeFlag == 0){
        if (validpostcode <= 1) {         // pos 1 not allowed
          fld = 11
          document.f1.elements[fld].focus()
          document.f1.elements[fld].select()
          if (postCodeFlag == 0) {
            var pcneeded = window.confirm("Your postcode may be invalid." + "\n" +
                                      "Click OK to procede with this postcode" + "\n" +
                                      "or Cancel to go back:")
            if(!pcneeded) {
              if (fld == -1) {fld = 11}
              message += "\n     -  a valid post code "
            }
            else {
              fld = -1   // reset to cancel alert box
              postCodeFlag = 1    // just do this once - set = 1 if pc not needed
            }
          }
        }
      }
  }
    
    
  
   
    if (document.f1.elements[12].value != ""){
      var validemail = isEmail(document.f1.elements[12].value)
      if (validemail != 0) {
        if(fld == -1) {fld = 12}
        message += "\n     - a valid E-mail address"
      }
  }
  
  if (document.f1.elements[13].value == ""){
    	alert("You must provide a contact telephone number, including your National Dialling Code")
  	  	document.f1.elements[13].focus()
  	  	document.f1.elements[13].select()
  	  	return false
  	}
  else if (document.f1.elements[13].value != ""){
  	var validtel = checkIfNumb(document.f1.elements[13].value)
  	if (validtel != 0) {
  	alert("You must provide a valid telephone number, including your National Dialling Code - without spaces")
	  	  	document.f1.elements[13].focus()
	  	  	document.f1.elements[13].select()
  	  	return false
  	  	}
  	  }
  
  if (document.f1.elements[3].value == "") {		  // Completion of Business Name field	
    	alert("You must complete the Business Name field")
    	document.f1.elements[3].focus()
    	document.f1.elements[3].select()
    	return false
    	}
    
    
    if (foa == "") {
    
      if (foaFlag == 0) {
        var foaneeded = window.confirm("You have not completed the FAO Name field." + "\n" +
                                            "Click OK to procede if you don't wish to give one" + "\n" +
                                         "or Cancel to go back:")
        if(!foaneeded) {
          if (fld == -1) { fld = 2}
          
          message += "\n     - For The Attention Of Name"
               
        }
        else {
          
          foaFlag = 1    // just do this once - set = 1 if bus not needed
          
        }
      }
    }    
                                    
         
    if (fld >= 0) {			// leave this at this point in the script
        document.f1.elements[fld].focus()   // as the last if before the final else statement
        document.f1.elements[fld].select()  // below
        alert(message)
        return false;
  }

else {
return true;
  }
}

/*********************/
function isPostCode(pc)
/*********************/
{
  var match = 0
  for (var i=0; i < pc.length; i++) {
    if (match == 0) {
      for (var j=0; j < 10; j++) {
        var jj = "" + j
        if (match == 0) {
          hold = pc.substring(i, i+1)
          if (hold == jj) {
            var ii = i + 1
            if(i > 0) {
              var townCode = pc.substring(0,i)
              for (var j=1; j < nmrValidPC; j++) {
                if(validpc[j] == townCode.toUpperCase()) {
                  match = 1
                  return ii
                }
              }
            }
          }
        }
      }
    }
  }
  return 0  // No numbers found
}


/******************/
function isEmail(s)
/******************/
{
    var i = 1;
    var sLength = s.length
    while ((i < sLength) && (s.charAt(i) != "@")) {i++}

    if ((i >= sLength) || (s.charAt(i) != "@")) {return 1}

    else {i += 2};

    while ((i < sLength) && (s.charAt(i) != "."))   {i++}

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) {return 2}
    else {return 0}

}


/******************************/
function isNames()
/******************************/
{
if ((document.f1.elements[1].value == "") || (document.f1.elements[2].value == "")){
  	alert ("You must enter your Initials/Forename and your Surname")
  	
    }
}

/*****************************/
function stripBlanks(fromThis)
/******************************

   File        stripBlanks.jsm
   Copyright   Crown Copyright 2001

   Date        Author        Changes
   04-Jan-01   Chris Lowe    Created

   Purpose:
        To remove preceding and trailing blanks from a string

   Strategy:
        1. On calling:
        2. work from front of string - find first nonblank
        3. work from end of string   - find last nonblanks
        4. return middle bit

   Input:
        fromThis = string to be stripped

   Output:
        fromThis = stripped string

   Examples:
        1. fromThis = "  January " returns fromThis = "January"

--------------------------------------------------------------------- */
{

  var isItABlank = true;              // work from front of string and find a non blank at position i
  i              = 0
  do {
    if (fromThis.substring(i,i+1) != " ") isItABlank = false;
    i ++
  } while (isItABlank)
  lstart          = i - 1             // save position

  isItABlank     = true;             // work from end of string and find a non blank at position i
  i              = fromThis.length;
  do {
    i --
    if (fromThis.substring(i,i+1) != " ") isItABlank = false;
  } while (isItABlank)
  end            = i + 1             // save position

  fromThis      = fromThis.substring(lstart,end)

  return fromThis
}

//-->
