<!-- if (window == top) top.location.href = "store.htm"; -->
function validateForm(){
	var frm = document.forms[0]
	if (validateVal(frm.NAMETOSHIP,"NAME") && 
		validateVal(frm.ADDRESSTOSHIP,"ADDRESS") &&
		validateVal(frm.CITYTOSHIP,"CITY") &&
		validateSel(frm.STATETOSHIP,"STATE",0) &&
		validateVal(frm.ZIPTOSHIP,"ZIP") &&
		isEmail (frm.EMAIL) &&
		isPhone (frm.PHONETOSHIP,"Phone") &&
		calculateTotal() && frm.AMOUNT.value > 0){
			return true;
	} else {
		return false;
	}		
}

function reviewOrder(){
	var frm = document.forms[0];
	if(calculateTotal())
		newAlert(frm.DESCRIPTION.value + "\nShipping Cost: $" + CMoney(frm.SHIPAMOUNT.value) + "\nTax: $" + CMoney(frm.TAX.value) + "\nTOTAL AMOUNT: $" + CMoney(frm.AMOUNT.value),"Order Summary",4,0,0,0)
}

function calculateTotal(){
	product = new Array(
	"RANT_DVD",
	"RAVE_DVD",
	"RIFF_DVD",
	"RANT_CD",
	"RAVE_CD",
	"RRR_DVDCD",
	"SERIES_DVD",
	"INFO_1PAY",
	"CRISIS_VHS",
	"STATE_VHS",
	"PORTRAIT_VHS",
	"PORTRAIT_QA",
	"PORTRAIT_EVE",
	"PORTRAIT_CD",
	"QUEST_VHS" )
	price = new Array(
	19.95,
	19.95,
	19.95,
	15.95,
	15.95,
	59.85,
	49.90,
	59.90,
	19.95,
	19.95,
	19.95,
	15.95,
	9.95,
	20.05,
	19.95 )
	weight = new Array(
	6,
	6,
	6,
	6,
	6,
	6,
	6,
	6,
	6,
	6,
	6,
	6,
	4,
	4,
	6 )
	description = new Array(
	"RANT - DVD",
	"RAVE - DVD",
	"RIFF - DVD",
	"RANT - Soundtrack",
	"RAVE - Soundtrack",
	"RANT * RAVE * RIFF - DVD & Soundtrack Special",
	"A Crisis of Faith / the SERIES - DVD",
	"A Crisis of Faith / the SERIES - VHS",	
	"VHS - A Crisis of Faith", 
	"VHS - State of the Union",
	"VHS - Portrait of a Radical", 
	"AUDIO - Q & A, Portrait of a Radical", 
	"AUDIO - Evening Lecture, Portrait of a Radical", 
	"CD - Soundtrack, Portrait of a Radical", 
	"VHS - Quest for the Grail" )   
	var frm = document.forms[0]
	if(!validateSel(frm.SHIPMETHOD, "SHIPPING METHOD", 0) || 
	!validateSel(frm.STATETOSHIP,"STATE",0))
		return false;
	var shipMethod = frm.SHIPMETHOD.options[frm.SHIPMETHOD.selectedIndex].value;
	var shipFirstItem = 0;
	var shipAddItem = 0;
	var totalWeight = 0;
	var heaviestItem = 0;
	var orderDescr = "";
	var sum = 0;
	var tax = 0;
	var validOrder = false;
	if(shipMethod ==  "USPS_PRIORITY"){
		shipFirstItem = 7.25;
		shipAddItem = 2;	
	}else if(shipMethod == "USPS_EXPRESS"){
		shipFirstItem = 19.85;
		shipAddItem = 3;
	}else if(shipMethod == "USPS_GLOBAL"){
		shipFirstItem = 20;
		shipAddItem = 3;
	}
	for(var i=0; i<product.length; i++){
		var oProduct = eval("document.forms[0]." + product[i])
		if(!oProduct) 
			continue;
		var qty = oProduct.value
		if(qty){
			if (validateQuantity(oProduct)){
				validOrder = true;
				sum += qty * price[i];
				orderDescr += qty + " " + description[i] + " ($" + price[i] + ");\n"
				totalWeight += qty * weight[i];
				heaviestItem = Math.max(heaviestItem, weight[i]);
			} else {
				return false;
			}
		}
	}
	if(validOrder && sum > 0) {
		var shipping = shipFirstItem + (Math.ceil((totalWeight - heaviestItem)/16) * shipAddItem);
		frm.SHIPAMOUNT.value =  shipping;	
		if(frm.STATETOSHIP.options[frm.STATETOSHIP.selectedIndex].value == "CT")
			tax = round((sum + shipping) * 0.06);
		frm.TAX.value = tax;
		frm.AMOUNT.value = sum + tax + shipping;
		frm.DESCRIPTION.value = orderDescr + "\n" + "Shipped via " + frm.SHIPMETHOD.options[frm.SHIPMETHOD.selectedIndex].text + "\n";
		return true;
	} else {
		alert("You need to enter a quantity for at least one product.")
		return false;
	}
}

function validateVal(objInput, fieldName){
	if (objInput.value != '')
		return true;
	alert ("'" + fieldName + "' is a required field. Please enter a valid value.");
	objInput.focus();
//	objInput.select();
	return false;
}

function validateSel(obj, fieldName, ind){
	if (obj.selectedIndex > ind)
		return true;
	alert("'" + fieldName + "' is a required field. Please select a valid value.");
	obj.focus();
	return false;
}

function round(number,X) {
// rounds number to X decimal places, defaults to 2
    X = (!X ? 2 : X);
    return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

function validateQuantity(objInput){
	var chkValue = objInput.value;
	if (chkValue/chkValue == 1 && chkValue > 0)
		return true;
	alert ("Please enter a postive numeric value for the quantity field.");
	objInput.focus();
//	objInput.select();
	return false;
}

function CMoney(number) {
    return CDollars(Math.floor(number-0) + '') + CCents(number - 0);
}

function CDollars(number) {
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length%3;
        var output = (mod == 0 ? '' : (number.substring(0,mod)));
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output);
    }
}

function CCents(amount) {
    amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}

function newAlert(mess,title,icon,buts,defbut,mods) {
   (document.all) ? vbMsgBox(mess,title,icon,buts,defbut,mods) : alert(mess);
}

function isEmail(obj) {
	if (obj.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		return true;
	alert("Invalid email address!");
	obj.focus();
	return false;
}

function isPhone(obj, fieldName) {
	if (obj.value == '' || obj.value.search(/^[0-9\-\(\)\s]+$/) != -1)
		return true;
	alert("The " + fieldName + " number cannot contain any letters or special characters.");
	obj.focus();
	return false;
}

