var minbookID, maxbookID;

function updateTotals() {
    var runquant = 0, runprice = 0;
    for (var i = minbookID; i <= maxbookID; i++) {
        if (document.getElementById('quantity-'+i) != null) {
            var quant = parseInt(document.getElementById('quantity-'+i).value);
            var price = parseFloat(document.getElementById('price-'+i).firstChild.nodeValue);
            runquant += quant;
            runprice += quant * price;
        }
    }
    runprice = Math.round(100*runprice)/100;
    document.getElementById('totalquantity').firstChild.nodeValue = runquant;
    document.getElementById('totalprice').firstChild.nodeValue = '$' + runprice;

    return false;
}

function validatePage1() {
    var haveitem = false;
    var invalid = false;

    for (var i = minbookID; i <= maxbookID; i++) {
        if (document.getElementById('quantity-'+i) != null) {
            var quantinput = document.getElementById('quantity-'+i);
            if (quantinput) {
              if (quantinput.value > 0)
                haveitem = true;
              if (quantinput.value > 99)
                invalid = true;
            }
        }
    }

    if (!haveitem) {
        alert('You haven\'t selected anything to order!\nSelect books to order by entering quantities,\nor visiting an individual book\'s page.');
        return false;
    } else if (invalid) {
  	alert('You have entered an invalid quantity for one or more books.\nValid quantities are 1 to 99.');
        return false;
    } else {
  	return true;
    }
}

function validatePage2() {
    var elements = new Array();
    var i;

    // Required fields
    i = 0;
    elements[i++] = 'Name';
    elements[i++] = 'Address';
    elements[i++] = 'CitySuburbTown';

    // Check billing details fields
    for (i = 0; i < elements.length; i++) {
        var your = document.getElementById('Your'+elements[i]).value;
        if (your.length < 1) {
            alert('You forgot to enter a value for the required field \'' + elements[i] + '\' in the Billing Details section.');
            return false;
        }
    }
    // Check delivery details fields
    for (i = 0; i < elements.length; i++) {
        var del = document.getElementById('Del'+elements[i]).value;
        if (del.length < 1) {
            alert('You forgot to enter a value for the required field \'' + elements[i] + '\' in the Delivery Details section.');
            return false;
        }
    }

    return true;
}

function validatePage3() {
	var elements = new Array();
  var i;

  // Required fields
  i = 0;
  elements[i++] = "CreditCardType";
  elements[i++] = "CreditCardName";
  elements[i++] = "CreditCardNumber";
  elements[i++] = "CCExp_DD";
  elements[i++] = "CCExp_MM";
  elements[i++] = "CCExp_YYYY";

  if (document.getElementById("PaymentMethod3").checked) {
  	for (i = 0; i < elements.length; i++) {
    	var el = document.getElementById(elements[i]).value;
      if (el.length < 1) {
      	alert('Please fill out the form completely.\nYou must provide full credit card details.');
        return false;
      }
    }
    if (document.getElementById("CCExp_MM").value == "mm" || document.getElementById("CCExp_YYYY").value == "yyyy") {
    	alert('Please provide your credit card expiration date (month and year).');
        return false;
    }
  } else if (!document.getElementById("PaymentMethod1").checked && !document.getElementById("PaymentMethod2").checked) {
    	alert('Please select a payment method.');
      return false;
  } else if (document.getElementById("PaymentMethod2").checked) {
		var country = document.getElementById('CheckCountry').value;
		if (country != 'Australia' && country != 'australia') {
			alert('You cannot pay with direct deposit from overseas due to high premiums; please select another payment method.');
			return false;
		}
  }
  return true;
}

function setSelectVal(SelectName, Value) {
  var SelectObject = document.getElementById(SelectName);
  for(var index = 0;
    index < SelectObject.length;
    index++) {
   if(SelectObject[index].value == Value)
     SelectObject.selectedIndex = index;
   }
}

function clearDelDetails() {
	var elements = new Array();
	var i;

    i = 0;
    elements[i++] = 'Name';
    elements[i++] = 'Address';
    elements[i++] = 'CitySuburbTown';
    elements[i++] = 'State';
    elements[i++] = 'PostCode';
    elements[i++] = 'Country';
    elements[i++] = 'Phone';

    for (i = 0; i < elements.length; i++) {
		var to = 'Del' + elements[i];
  		document.getElementById(to).value = '';
    }
	document.getElementById('del-option-Australia').selected = true;
}

function copyBillDetails() {
  var elements = new Array();
  var i;

  // Fields to copy
  i = 0;
  elements[i++] = 'Name';
  elements[i++] = 'Address';
  elements[i++] = 'CitySuburbTown';
  elements[i++] = 'State';
  elements[i++] = 'PostCode';
  elements[i++] = 'Country';
  elements[i++] = 'Phone';

    for (i = 0; i < elements.length; i++) {
    	var from = 'Your' + elements[i];
		var to = 'Del' + elements[i];
  		document.getElementById(to).value = document.getElementById(from).value;
    }

	var yourlist = document.getElementById('YourCountry');
	var dellist = document.getElementById('DelCountry');
	dellist.selectedIndex = yourlist.selectedIndex;
}

function copyAction() {
	var checkbox = document.getElementById('DeliverySameAsContact');
	if (checkbox.checked)
		copyBillDetails();
	else
		clearDelDetails();
	return true;
}

