var taxState = "al";

function alertAndFocus( field, name ) {
	if( field.value.length == 0 ) {
		alert( "Please enter your " + name + "." );
		field.focus();
		return true;
	}
	else
		return false;3
}

function validQty ( field ) {
	var valid = true;
	var qty = field.value;
	if( qty != "" ) {
		qty = parseInt( qty );
		if( isNaN( qty ) == true ) {
			valid = false;
		}
		else {
			if( qty < 0 )
				qty = -qty;
			field.value = qty;
		}
	}
	return valid;
}

function validateQty ( field ) {
	var valid = true;
	if( validQty( field ) == false ) {
		alert( "Please enter a valid quantity." );
		field.focus();
		valid = false;
	}
	return valid;
}


function getTotalQuantity ( form ) {
	quantities = new Array(
				form.qtyArtist,
				form.qtySignature,
				form.qtyRegular );
	var qty = 0;
	var total = 0;
	var index;
	for( index = 0; index < quantities.length; index++ ) {
		qty = quantities[index].value;
		if( qty != "" ) {
			if( validQty( quantities[index] ) ) 
				total = parseInt( total ) + parseInt( qty );
			else {
				total = "NaN";
				break;
			}
		}
	}
	return total;
}

function validate( form ) {
	var qty = getTotalQuantity( form ); 
	if( alertAndFocus( form.name, "name" ) ||
		alertAndFocus( form.address, "address" ) ||
		alertAndFocus( form.city, "city" ) ||
		alertAndFocus( form.state, "state" ) ||
		alertAndFocus( form.zip, "zip code" ) ||
		alertAndFocus( form.email, "email address" ) )
		return false;
	else if( form.email.value.indexOf( "@" ) == -1 ) {
		alert( "A complete email address is of the form user@domain_name (example: bama1@aol.com). The address you gave does not have a @. Please correct it." );
		return false;
	}
	else if( isNaN( qty ) || qty < 1 ) {
		alert( "Please enter a valid quantity." );
		return false;
	}
	else
		return true;
}

function toMoney( value ) {
	if( value == "00.00" || value == 0 )
		return padAmt( "00.00" );
	else {
		var temp = Math.round( 100 * value ).toString();
		var len = temp.length;
		return ( temp.substring( 0, len-2 ) + "." + temp.substring( len-2, len ) );
	}
}

function padAmt( amt ) {
	while( amt.length < 7 )
		amt = " " + amt;
	return amt;
}

function calculateAmount( qty, price ) {
	if( qty > 0 ) 
		return padAmt( toMoney( qty * price ) );
	else
		return padAmt( "00.00" );
}



    function calculateTotal( form )
    {
	if( form.state.value.length < 2 ) {
		alert( "Please enter a 2-letter state code and retry." );
		form.state.focus();
		form.state.select();
		return;
	}

	form.amtArtist.value = calculateAmount( form.qtyArtist.value, form.prixArtist.value );
	form.amtSignature.value = calculateAmount( form.qtySignature.value, form.prixSignature.value );
	form.amtRegular.value = calculateAmount( form.qtyRegular.value, form.prixRegular.value );

	form.subtotal.value = 
		parseFloat( form.amtArtist.value )+
		parseFloat( form.amtSignature.value  ) +
		parseFloat( form.amtRegular.value );


	if( form.state.value.toLowerCase() == taxState.toLowerCase() )
		form.tax.value = padAmt( toMoney( form.tax_rate.value * form.subtotal.value ) );
	else
		form.tax.value = padAmt( "00.00" );
	
	form.subtotal.value = padAmt( toMoney( form.subtotal.value ) );
	form.shipping.value = padAmt( toMoney( shipping( form ) ) );
	form.total.value = padAmt( toMoney( parseFloat( form.subtotal.value ) + parseFloat( form.tax.value ) + parseFloat( form.shipping.value )) );
    }

function parseIntZeroForBlank( value ){
	if( value.length == 0 )
		return 0;
	else {
		return parseInt( value );
	}
}

function shipping( form ) {
	var qty = 	parseIntZeroForBlank(form.qtyArtist.value) +
				parseIntZeroForBlank(form.qtySignature.value) +
				parseIntZeroForBlank(form.qtyRegular.value);
	if( qty <= 0 )
		return 0;
	else if( qty < 6 )
		return 8.50;
	else
		return 10.00
}

