<!-- hide script for old browsers

function jsSubmit() {

	// get array of parcel from fields
	var numElements;
	var validateOK;
	var elNum;
	var elValue;
	var pclFromArray = new Array();
	var pclToArray   = new Array();
	var pclTypeFrom;
	var pclTypeTo;
	var pclNumFrom;
	var pclNumTo;
	var DDArray   = new Array();
	var MMArray   = new Array();
	var YYArray   = new Array();
	var DDVal;
	var MMVal;
	var YYVal;
	var currDate;
	var userDate;

	numElements = getElementNumbers("PCL_NO_FROM",pclFromArray);
	getElementNumbers("PCL_NO_TO",pclToArray);

	//missing from parcel for pclTo
	if ((!isElementNull(pclToArray[0])) && isElementNull(pclFromArray[0]))
	{
		focusOnElement(pclFromArray[0]);
		showMessage("E1079");
		return false;
	}

	// check at least one parcel number entered 
	validateOK = false
	for ( var i = 0; i < numElements; i++)	
	{
		if (!isElementNull(pclFromArray[i])) validateOK = true;
	}

	if (!validateOK)
	{
		focusOnElement(pclFromArray[0]) 
		showMessage("E1076");
		return false;
	}

	//check for gaps in sequence of parcel numbers
	var noParcel = false;
	
	for ( var i = 0; i < numElements; i++)	
	{
		if (!isElementNull(pclFromArray[i]) && noParcel) 
		{
			showMessage("E1096");
			return false;
		}

		if (isElementNull(pclFromArray[i]))
		{ 
			noParcel = true;
		}
	}


	//parcel number range + specific parcel entered
	validateOK = true;
	if (!isElementNull(pclToArray[0]))
	{
		for ( var i = 1; i < numElements; i++)	
		{
			if (!isElementNull(pclFromArray[i])) validateOK = false;
		}
	}
	if (!validateOK)
	{
		focusOnElement(pclToArray[0]);
		selectElement(pclToArray[0]);
		showMessage("E1081");
		return false;
	}

	//missing from parcel for date
	getElementNumbers("DATEDD",DDArray);
	getElementNumbers("DATEMM",MMArray);
	getElementNumbers("DATEYY",YYArray);
	for ( var i = 0; i < numElements; i++)	
	{
		if (isElementNull(pclFromArray[i]))
		{
			if ((!isElementNull(DDArray[i])) | (!isElementNull(MMArray[i])) |  (!isElementNull(YYArray[i])))
			{
				focusOnElement(pclFromArray[i]);
				showMessage("E1050");
				return false;
			}
		}
	}
	
	
	// Check FROM Ident Codes.
	for ( var i = 0; i < numElements; i++)
	{
		elValue = getElementValue(pclFromArray[i])

		// check parcel prefix is not 00
		if ((elValue.length == 12) | (elValue.length == 11) && (elValue.substring(0,2) == "00")) 
		{
			focusOnElement(pclFromArray[i]) 
			selectElement(pclFromArray[i])
			showMessage("E1078");
			return false;
		}


		//old style SOE 'check digit' check and generation
		elNum = pclFromArray[i]
		if ((elValue.length == 12) | (elValue.length == 11) && (!SoeCheckDigitOK(elNum)) && (isValueNumeric(elValue)))
		{
			focusOnElement(elNum);
			selectElement(elNum);
			showMessage("E1078");
			return false;
		}
 
		// EAN 'check digit' check and generation
		if ((elValue.length == 17) | (elValue.length == 18) | (elValue.length == 19) | (elValue.length == 20) && (!EanCheckDigitOK(elNum)) && (isValueNumeric(elValue)))
		{
			focusOnElement(elNum);
			selectElement(elNum);
			showMessage("E1078");
			return false;
		}
				
	}
	
	// Check TO Ident Codes.
	elValue = getElementValue(pclToArray[0])
	
	// Check SOE Ranges	
	if ((elValue.length == 11) | (elValue.length == 12))
	{
		// check parcel prefix is not 00
		if (elValue.substring(0,2) == "00")
		{
			focusOnElement(pclToArray[0]);
			selectElement(pclToArray[0]);
			showMessage("E1078");
			return false;
		}

		//check digit check and generation for (TO) parcel no
		elNum = pclToArray[0]
		if ((!SoeCheckDigitOK(elNum)) && (isValueNumeric(elValue)))
		{
			focusOnElement(elNum);
			selectElement(elNum);
			showMessage("E1078");
			return false;
		}

		// check ranges :- enquiries on multiple types & exceed 30 or is a negative number
		pclTypeFrom = getElementValue(pclFromArray[0]);
		pclTypeTo   = getElementValue(pclToArray[0]);
	
		// old style SOE parcel number either 11 or 12 numeric digits
		if ((pclTypeFrom.length == 11 | pclTypeFrom.length == 12))
		{
			pclNumFrom = getElementValue(pclFromArray[0]).substring(0,11);
			pclNumTo   = getElementValue(pclToArray[0]).substring(0,11);
			//prefixes do not match
			if (pclNumTo.substring(0,2) != pclNumFrom.substring(0,2))
			{
				focusOnElement(pclToArray[0]);
				selectElement(pclToArray[0]);
				showMessage("E1079");
				return false;
			}
			//range of more than 30			
			if ((pclNumTo - pclNumFrom) > 29)
			{
				focusOnElement(pclToArray[0]);
				selectElement(pclToArray[0]);
				showMessage("E1080");
				return false;
			}	
			//negative range
			if ((pclNumTo - pclNumFrom) < 0)
			{
		 		focusOnElement(pclToArray[0]);
				selectElement(pclToArray[0]);
				showMessage("E1079");
				return false;
			}			
 		}
 	}
	
	//CEN2 Checks 18 alpha/numeric 
	if ((elValue.length == 18) && (!isValueNumeric(elValue)))
	{
		pclNumFrom = getElementValue(pclFromArray[0]).substring(15,18);
		pclNumTo   = getElementValue(pclToArray[0]).substring(15,18);
		
		//range of more than 30			
		if ((pclNumTo - pclNumFrom) > 29)
		{
			focusOnElement(pclToArray[0]);
			selectElement(pclToArray[0]);
			showMessage("E1080");
			return false;
		}
		
		if ((pclNumTo - pclNumFrom) < 0)
		{
			focusOnElement(pclToArray[0]);
			selectElement(pclToArray[0]);
			showMessage("E1079");
			return false;
		}			
	}
	
	//Check EAN Ranges	
	if ((elValue.length == 17) | (elValue.length == 18) | (elValue.length == 19) | (elValue.length == 20) && (isValueNumeric(elValue)))
	{
		//check digit generation for (TO) parcel no
		elNum = pclToArray[0]
		if (!EanCheckDigitOK(elNum))
		{
			focusOnElement(elNum);
			selectElement(elNum);
			showMessage("E1078");
			return false;
		}
	
		// check ranges :- enquiries on multiple types & exceed 30 or is a negative number
		pclTypeFrom = getElementValue(pclFromArray[0]);
		pclTypeTo   = getElementValue(pclToArray[0]);

		if (pclTypeFrom.length <= 18 )
		{
			pclNumFrom = getElementValue(pclFromArray[0]).substring(0,17);
			pclNumTo   = getElementValue(pclToArray[0]).substring(0,17);
		}
		else
		{
			pclNumFrom = getElementValue(pclFromArray[0]).substring(0,19);
			pclNumTo   = getElementValue(pclToArray[0]).substring(0,19);
		}
			
		//range of more than 30			
		if ((pclNumTo - pclNumFrom) > 29)
		{
			focusOnElement(pclToArray[0]);
			selectElement(pclToArray[0]);
			showMessage("E1080");
			return false;
		}	
		//negative range
		if ((pclNumTo - pclNumFrom) < 0)
		{
	 		focusOnElement(pclToArray[0]);
			selectElement(pclToArray[0]);
			showMessage("E1079");
			return false;
		}			
	}
		
	//CEN Range Checks
	if (!isValueNumeric(elValue.substring(0,1))) 
	{
		pclNumFrom = getElementValue(pclFromArray[0])
		pclNumTo   = getElementValue(pclToArray[0])

		//Check that License Plates are the same length for a range enquiry
		if (pclNumFrom.length != pclNumTo.length)
		{
			focusOnElement(pclFromArray[0]);
			showMessage("E1175");
			return false;
		}

		if (pclNumFrom > pclNumTo)
		{
			focusOnElement(pclToArray[0]);
			selectElement(pclToArray[0]);
			showMessage("E1079");
			return false;
		}
		
		cenFrom = pclNumFrom.substring(pclNumFrom.length -3,pclNumFrom.length)
		cenTo = pclNumTo.substring(pclNumTo.length -3,pclNumTo.length)
		
		if ((isValueNumeric(cenFrom)) && (isValueNumeric(cenTo)))
		{
			if (cenTo - cenFrom > 29)
			{
	 			focusOnElement(pclToArray[0]);
				selectElement(pclToArray[0]);
				showMessage("E1080");
				return false;
			}			
		}
		
		
	}
		
		
	//-validate consigment dates
	if (!validateDates("DATEDD","DATEMM","DATEYY")) return false;

	// validate collection date (note: above check confirms whole date entered)
	for ( var i = 0; i < numElements; i++)	
	{
		if (!isElementNull(DDArray[i]))
		{
			DDVal = getElementValue(DDArray[i])
			MMVal = getElementValue(MMArray[i])
			YYVal = getElementValue(YYArray[i])
			userDate = Date.UTC(YYVal,MMVal,DDVal)

			DDVal =getValue("CUR_DTDD.WEBTECH");
			MMVal =getValue("CUR_DTMM.WEBTECH");
			YYVal =getValue("CUR_DTYY.WEBTECH");
			curDate = Date.UTC(YYVal,MMVal,DDVal)

			if (userDate > curDate)
			{
				focusOn("DATEDD") 
				selectField("DATEDD")
				showMessage("E1085");
				return false;
			}
		}
	}
	
	return true;

}

function SoeCheckDigitOK(elNum) {

	var elValue;
	var chkDigit;

	elValue = getElementValue(elNum);

	if (!isValueNumeric(elValue)) return false;

	if (elValue.length == 0) return true;

	chkDigit = calculateSoeModulus(elValue);
	if (elValue.length == 12)   // check check digit
	{
		if (elValue.charAt(11) != chkDigit) return false;
	}
	else			// add check digit
	{
		elValue = elValue + chkDigit;
		setElementValue(elNum, elValue);
	}
	return true;
}


function EanCheckDigitOK(elNum) 
{

	var elValue;
	var chkDigit;

	elValue = getElementValue(elNum);

	if (!isValueNumeric(elValue)) return false;

	if (elValue.length == 0) return true;

	chkDigit = calculateEanModulus(elValue);
	if (elValue.length == 20)   // check check digit
	{
		if (elValue.charAt(19) != chkDigit) return false;
	}
	else if (elValue.length == 18)   // check check digit
	{
		if (elValue.charAt(17) != chkDigit) return false;
	}
	else				// add check digit
	{
		elValue = elValue + chkDigit;
		setElementValue(elNum, elValue);
	}
	return true;
}

//-------------------------------------------------------------------------------------------------------------------------
// ********************************modulus 10 calculation routine**************************************
//-------------------------------------------------------------------------------------------------------------------------

function calculateSoeModulus(pclNo)
{
	// declare variables for use //
	var sizeOfInputNumber = 11;			// Size is equal to input number
	var weight = 3;					// Modulus 10 weight number
	var inputData = pclNo.substring(0,11);		// Location of input number field
	var dataDigits = new Array(sizeOfInputNumber);
	var sum = null;
	var checkDigit = null;

	if(pclNo.charAt(0) == 0 && pclNo.charAt(1) == 7)
	{
		// Deutche Post parcel
		// weight numbers into new string //
		// even numbers with weighting //
		var weight1 = 4;
		var weight2 = 9;
		for(i=0; i<dataDigits.length; ++i)
		{
			dataDigits[i] = eval(inputData.charAt(i) * weight1);
			++i;
		}
			// odd numbers without weighting //
		for(i=1; i<dataDigits.length; ++i)
		{
			dataDigits[i] = eval(inputData.charAt(i) * weight2);
			++i;
		}
		} else {
		// weight numbers into new string //
		// even numbers with weighting //
		for(i=0; i<dataDigits.length; ++i)
		{
			dataDigits[i] = eval(inputData.charAt(i) * weight);
			++i;
		}
			// odd numbers without weighting //
		for(i=1; i<dataDigits.length; ++i)
		{
			dataDigits[i] = eval(inputData.charAt(i));
			++i;
		}
	}
	// add the numbers together //
		for (i=0; i<dataDigits.length;++i)
		sum += (dataDigits[i]);
	// add "CD" to convert integer to string //
	sum = "CD"+sum;
		// subtract last digit from 10 to give checkdigit //
	checkDigit += eval(10 - sum.charAt((sum.length - 1)));
	if(checkDigit == 10)
		checkDigit = 0;

	return checkDigit;
}


function calculateEanModulus(pclNo)
{
	
	
	if ((pclNo.length == 20) && (pclNo.substring(0,2) == "00"))
	{
		pclNo = pclNo.substring(2,20)
	}
	else if ((pclNo.length == 19) && (pclNo.substring(0,2) == "00"))
	{
		pclNo = pclNo.substring(2,19)
	}
	
	
	// declare variables for use //
	var sizeOfInputNumber= 17				// Size is equal to input number
	var weight = 3;						// Modulus 10 weight number
	var inputData = pclNo.substring(0,17);			// Location of input number field
	var dataDigits = new Array(sizeOfInputNumber);
	var sum = null;
	var checkDigit = null;
		
	var weight1 = 3;
	var weight2 = 1;


	for(i=0; i<dataDigits.length; ++i)
		{
			dataDigits[i] = eval(inputData.charAt(i) * weight1);
			++i;
			
		}
	// odd numbers without weighting //
	for(i=1; i<dataDigits.length; ++i)
		{
			dataDigits[i] = eval(inputData.charAt(i) * weight2);
			++i;
		} 
	
	// add the numbers together //
	for (i=0; i<dataDigits.length;++i)
	sum += (dataDigits[i]);

	// add "CD" to convert integer to string //
	sum = "CD"+sum;

	// subtract last digit from 10 to give checkdigit //
	checkDigit += eval(10 - sum.charAt((sum.length - 1)));
	if(checkDigit == 10)
	{
		checkDigit = 0;
	}

	return checkDigit;
}

// end hiding -->
