function CartWidthCalc( lengthID, oldLength, maxLength, product ) {

	var maxLength = parseFloat( maxLength );
	if ( isNaN( maxLength ) ) {
		alert ( 'System error: ' + product + ' invalid max roll length ' + maxLength );
		return false;
	}

	var l = document.getElementById( lengthID );
	if (!l) {
		alert ( 'System error: ' + product + ' lengthId ' + lengthID );
		return false;
	}
	var lenRequest = parseFloat( l.value );

	if ( lenRequest > maxLength ) {
		l.value = oldLength;
		alert ( product + ' has a maximum length of ' + maxLength + ' metres' );
		return false;
	}

	if ( lenRequest <= 0 ) {
		l.value = oldLength;
		alert( product + '- Minimum order is 0.5 metres' );
		return false;
	}
	return true;
}	

function RollWidthCalc( lengthID, priceID, areaID, rollWidth, meterPrice, maxLength ) {

	var rollWidth = parseFloat( rollWidth );
	if ( isNaN( rollWidth ) ) {
		alert ( 'System error: invalid roll width ' + rollWidth );
		return false;
	}

	var maxLength = parseFloat( maxLength );
	if ( isNaN( maxLength ) ) {
		alert ( 'System error: invalid max roll length ' + maxLength );
		return false;
	}

	var unitPrice = parseFloat( meterPrice );
	if ( isNaN( meterPrice ) ) {
		alert ( 'System error: invalid price per meter ' + meterPrice );
		return false;
	}

	l = document.getElementById( lengthID );
	if (!l) {
		alert ( 'System error: lengthId ' + lengthID );
		return false;
	}
	var lenRequest = parseFloat( l.value );

	if ( lenRequest > maxLength ) {
		alert ( 'This product has a maximum length of ' + maxLength + ' metres' );
		return false;
	}

	p = document.getElementById( priceID );
	if (!p) {
		alert ( 'System error: priceID' + priceID );
		return false;
	}
	p.innerHTML = '&nbsp;';

	a = document.getElementById( areaID );
	if (!a) {
		alert ( 'System error: areaID' + areaID );
		return false;
	}
	a.innerHTML = '&nbsp;<sup>&nbsp;</sup>';


	if ( isNaN( lenRequest ) ) {
		l.value = ' ';
		alert( 'Please enter your required length in metres' );
		return false;
	}

	if ( lenRequest <= 0 ) {
		l.value = ' ';
		alert( 'Minimum order is 0.5 metres' );
		return false;
	}

	/* convert required length to half meter units */
	lenRequest = lenRequest * 2;
	lenRequest = ( Math.ceil( lenRequest ) ) / 2.0;

	/* calculate multiplier */
	var multiplier = rollWidth * lenRequest;

	/* calculate price */
	var finalPrice = unitPrice * multiplier;
	
	/* Update webpage */
	l.value = lenRequest;

	p.innerHTML = '&pound;' + finalPrice.toFixed(2);
	a.innerHTML = multiplier +' m<sup>2</sup>';
	return true;
}

