		<!--
		function getObject(sFieldName, dDocument)
		{
			var nPos,nIndex,sObject;
			if (!dDocument)
			{
				dDocument = document;
			}
			if ((nPos = sFieldName.indexOf("?")) > 0 && parent.frames.length)
			{
				dDocument = parent.frames[sFieldName.substring(nPos+1)].document;
				sFieldName = sFieldName.substring(0,nPos);
			}
			if (!(sObject = dDocument[sFieldName]) && dDocument.all)
			{
				sObject = dDocument.all[sFieldName];
			}
			for (nIndex = 0; nIndex < dDocument.forms.length; nIndex++)
			{
				sObject = dDocument.forms[nIndex][sFieldName];
			}
			for (nIndex = 0; !sObject && dDocument.layers && nIndex < dDocument.layers.length; nIndex++)
			{
				sObject = getObject(sFieldName, dDocument.layers[nIndex].document);
			}
			return sObject;
		}
		
		function stringReplace(sString, sReplaceWhat, sWithWhat)
		{
			var nPos = 0;
			var nLen = sReplaceWhat.length;
			nPos = sString.indexOf(sReplaceWhat);
			while (nPos != -1)
			{
				preString = sString.substring(0, nPos);
				postString = sString.substring(nPos+nLen, sString.length);
				sString = preString + sWithWhat + postString;
				nPos = sString.indexOf(sReplaceWhat);
			}
			return sString;
		}
		
		errors='';
		
		function validateField()
		{
			var nIndex,nPos,fieldName,validationRule,nNumber,nMinimum,nMaximum,args, nAux, bError, sFieldObj;
			args = validateField.arguments;
			for (nIndex = 0; nIndex < (args.length-2); nIndex += 3)
			{
				name=args[nIndex+3]; // get supplied name
				validationRule = args[nIndex+2]; sFieldObj = getObject(args[nIndex]);
				validationRule = validationRule.toUpperCase();
				if (sFieldObj)
				{
					fieldName = sFieldObj.name;
					sField = "";
					 //check the field if the it isn't null
					if ((sField = sFieldObj.value) != "")
					{	
						// check to see if it is a valid e-mail address
						if (validationRule.indexOf('ISEMAIL') != -1)
						{
							bError = false;
							sField = stringReplace(sField, ' ', '');
							//contains @
							nPos = sField.indexOf('@');
							if (nPos < 1 || nPos == (sField.length-1))
							{
								bError = true;
							}
							//contains at least one dot after the @
							nAux = nPos;
							nPos = sField.indexOf('.', nAux);
							if (nPos == -1)
							{
								bError = true;
							}
							if (bError)
							{
								errors += '- '+ name +' must contain a valid e-mail address.\n';
							}
						}
						// check to see if it contains only spaces and digits
						if (validationRule.indexOf('ISDIGIT') != -1)
						{
							bError = false;
							//contains 0 on position 1
							nPos = sField.indexOf('0');
							if (nPos != 0)
							{
								bError = true;
							}
							//contains only digits and spaces
							for(var i = 0; i < sField.length; i++)
							var ch = sField.substring(i,i+1);
							if (ch<'0' || ch>'9')
							{
								if (ch !=' ')
								{
									bError = true;
								}
							}
							if (bError)
							{
								errors += '- '+ name +' may only contain digits and spaces. The first digit must be 0 (zero)\n';
							}
						}
						// check to see if it is a valid positive number
						if (validationRule.indexOf('ISPOSITIVENUMBER') != -1)
						{
							bError = false;
							sField = stringReplace(sField, ' ', '');
							nNumber = parseFloat(sField);
							if (sField != ''+nNumber)
							{
								bError = true;
							}
							else
							{
								if (nNumber < 0)
								{
									bError = true;
								}
							}
							if (bError)
							{
								errors += '- '+ name +' must contain a positive number.\n';
							}
						}
						// check to see if it is a valid negative number
						if (validationRule.indexOf('ISNEGATIVENUMBER') != -1)
						{
							bError = false;
							sField = stringReplace(sField, ' ', '');
							nNumber = parseFloat(sField);
							if (sField != ''+nNumber)
							{
								bError = true;
							}
							else
							{
								if (nNumber > 0)
								{
									bError = true;
								}
							}
							if (bError)
							{
								errors += '- '+ name +' must contain a negative number.\n';
							}
						}
						// check to see if it is a valid number
						if (validationRule.indexOf('ISNUMBER') != -1)
						{
							bError = false;
							sField = stringReplace(sField, ' ', '');
							nNumber = parseFloat(sField);
							if (sField != ''+nNumber)
							{
								bError = true;
							}
							if (bError)
							{
								errors += '- '+ name +' must contain a valid number.\n';
							}
						}
						// check to see if it is a valid number not equal to 0
						if (validationRule.indexOf('ISNOTNULLNUMBER') != -1)
						{
							bError = false;
							sField = stringReplace(sField, ' ', '');
							nNumber = parseFloat(sField);
							if (sField != ''+nNumber)
							{
								bError = true;
							}
							else
							{
								if (nNumber == 0)
								{
									bError = true;
								}
							}
							if (bError)
							{
								errors += '- '+ name +'\n';
							}
						}
						// check to see if it is a valid Date
						if (validationRule.indexOf('ISDATE') != -1)
						{
							var nDay, nMonth, nYear, sFindWhat;
							sFindWhat = '-';
							bError = false;
							
							sField = stringReplace(sField, ' ', '');
							var nPos = 0;
							nPos = sField.indexOf(sFindWhat);
							nDay = sField.substring(0, nPos);
							sField = sField.substring(nPos+1, sField.length);
							
							nPos = sField.indexOf(sFindWhat);
							nMonth = sField.substring(0, nPos);
							sField = sField.substring(nPos+1, sField.length);
							
							nYear = sField
							
							nDay = parseInt(nDay, 10);
							if (isNaN(nDay))
							{
								bError = true;
							}
							else
							{
								if (nDay<1 || nDay>31)
								{
									bError = true;
								}
							}
							
							nMonth = parseInt(nMonth, 10);
							if (isNaN(nMonth))
							{
								bError = true;
							}
							else
							{
								nMonth--;
								if (nMonth<0 || nMonth>11)
								{
									bError = true;
								}
							}
							
							nYear = parseInt(nYear, 10);
							if (isNaN(nYear))
							{
								bError = true;
							}
							else
							{
								if (nYear<1990 || nYear>2010)
								{
									bError = true;
								}
							}
							
							if (bError)
							{
								errors += '- '+ name +' is not a valid Date.\n';
							}
							else
							{
								var nDate = new Date(nYear,nMonth, nDay);
							}
						}
						// check to see if it is a valid PostCode
						if (validationRule.indexOf('ISPOSTCODE') != -1)
						{
							var strPost2,strPost1;
							bError = false;
							sField = stringReplace(sField, ' ', '');
							sField = sField.toUpperCase();
							
							if (sField.length < 5)
							{
								bError = true;
							}
							if (!bError)
							{
								strPost2 = sField.substring(sField.length-3, sField.length);
								strPost1 = sField.substring(0, sField.length-3);
								if (strPost2.length < 3)
								{
									bError = true;
								}
								if (strPost1.length > 4)
								{
									bError = true;
								}
							}
							if (!bError)
							{
								sCh = strPost1.substring(0,1);
								if (sCh<'A' || sCh>'Z')
								{
									bError = true;
								}
							}
							if (!bError)
							{
								sCh = strPost1.substring(1,2);
								if (strPost1.length == 2)
								{
									if (sCh<'1' || sCh>'Z')
									{
										bError = true;
									}
									if (sCh>'9' && sCh<'A')
									{
										bError = true;
									}
								}
								else
								{
									if (sCh<'A' || sCh>'Z')
									{
										bError = true;
									}
									if (!bError)
									{
										sCh = strPost1.substring(2,3);
										if (sCh<'1' || sCh>'Z')
										{
											bError = true;
										}
										if (sCh>'9' && sCh<'A')
										{
											bError = true;
										}
										if (strPost1.length == 4)
										{
											if (!bError)
											{
												sCh = strPost1.substring(3,4);
												if (sCh<'1' || sCh>'Z')
												{
													bError = true;
												}
												if (sCh>'9' && sCh<'A')
												{
													bError = true;
												}
											}
										}
									}
								}
							}
							if (!bError)
							{
								sCh = strPost2.substring(0,1);
								if (sCh<'1' || sCh>'9')
								{
									bError = true;
								}
							}
							if (!bError)
							{
								sCh = strPost2.substring(1,2);
								if (sCh<'A' || sCh>'Z')
								{
									bError = true;
								}
							}
							if (!bError)
							{
								sCh = strPost2.substring(2,3);
								if (sCh<'A' || sCh>'Z')
								{
									bError = true;
								}
							}

							if (bError)
							{
								errors += '- '+ name +' is not a valid Post Code.\n';
							}
							else
							{
								sFieldObj.value = strPost1 + " " + strPost2;
							}
						}
					}
					else
					{
						if (validationRule.charAt(0) == 'R')
						{
							errors += '- '+ name  + '\n';
						}
					}
				}
			}
		}
		    
		function displayErrors()
		{
			if (errors)
			{
				alert('The following fields are required or contain errors:\n\n' + errors);
				errors='';
				return false;
			}
			else
			{
				return true;
			}
		}
		
		
		function ComputeTotal()
		{
			var nqty, nprice, sfield, nSubTotal, nTotal, bIsValid
			nTotal = 0;
			bIsValid = true;
			for (var i=1; i<=15; i++)
			{
				sfiled = "";
				nSubTotal = 0;
				nqty = 0;
				nprice = 0;
				sfield = "qty" + i;
				nqty = document.Document1.item(sfield).value;
				sfield = "UnitPrice" + i;
				nprice = document.Document1.item(sfield).value;
				if (isNaN(parseInt(nqty, 10)) == false)
				{
					nqty = parseInt(nqty, 10);
					sfield = "qty" + i;
					document.Document1.item(sfield).value = nqty;
					if (parseInt(nqty, 10) < 0)
					{
						nqty *= (-1);
						document.Document1.item(sfield).value = nqty;
					}
					if (isNaN(parseInt(nprice, 10)) == false)
					{
						nprice = parseInt(nprice, 10);
						sfield = "UnitPrice" + i;
						document.Document1.item(sfield).value = nprice;
						
						nSubTotal = nqty * nprice;
						nTotal = nTotal + nSubTotal;
						sfield = "Total" + i;
						document.Document1.item(sfield).value = nSubTotal;
						document.Document1.item("Total").value = nTotal;
					}
					else
					{
						if (nprice != "")
						{
							bIsValid = false;
						}
					}
				}
				else
				{
					if (nqty != "")
					{
						bIsValid = false;
					}
				}
			}
			
			if (!bIsValid)
			{
				alert("There is at least one invalid QUANTITY or UNIT PRICE field!\nPlease correct the data and try again...")
			}
		}
		
		//-->
