function validate_shipping_form()
{
	if (!document.shipping_form.bFirstName.value)
	{
		alert("Please enter your billing first name!");
		document.shipping_form.bFirstName.focus();
		return false;
	}
	if (!document.shipping_form.bLastName.value)
	{
		alert("Please enter your billing last name!");
		document.shipping_form.bLastName.focus();
		return false;
	}
	if (!document.shipping_form.bAddress.value)
	{
		alert("Please enter your billing address!");
		document.shipping_form.bAddress.focus();
		return false;
	}
	if (!document.shipping_form.bCity.value)
	{
		alert("Please enter your billing city!");
		document.shipping_form.bCity.focus();
		return false;
	}
	if (!document.shipping_form.bStateID.value)
	{
		alert("Please select your billing province/state!");
		document.shipping_form.bStateID.focus();
		return false;
	}
	if (!document.shipping_form.bCountryID.value)
	{
		alert("Please select your billing country!");
		document.shipping_form.bCountryID.focus();
		return false;
	}
	if (!document.shipping_form.bZipCode.value)
	{
		alert("Please enter your billing zip/postal code!");
		document.shipping_form.bZipCode.focus();
		return false;
	}

	if (!document.shipping_form.FirstName.value)
	{
		alert("Please enter your first name!");
		document.shipping_form.FirstName.focus();
		return false;
	}
	if (!document.shipping_form.LastName.value)
	{
		alert("Please enter your last name!");
		document.shipping_form.LastName.focus();
		return false;
	}
	if (!document.shipping_form.Address.value)
	{
		alert("Please enter your address!");
		document.shipping_form.Address.focus();
		return false;
	}
	if (!document.shipping_form.City.value)
	{
		alert("Please enter your city!");
		document.shipping_form.City.focus();
		return false;
	}
	if (!document.shipping_form.StateID.value)
	{
		alert("Please select your province/state!");
		document.shipping_form.StateID.focus();
		return false;
	}
	if (!document.shipping_form.CountryID.value)
	{
		alert("Please select your country!");
		document.shipping_form.CountryID.focus();
		return false;
	}
	if (!document.shipping_form.ZipCode.value)
	{
		alert("Please enter your zip/postal code!");
		document.shipping_form.ZipCode.focus();
		return false;
	}
	if (!document.shipping_form.Phone.value)
	{
		alert("Please enter your phone number!");
		document.shipping_form.Phone.focus();
		return false;
	}
	if (!document.shipping_form.Email.value)
	{
		alert("Please enter your Email address!");
		document.shipping_form.Email.focus();
		return false;
	}
	if(!document.shipping_form.CardNumber.value)
	{
		alert("Please enter your credit card number!");
		document.shipping_form.CardNumber.focus();
		return false;
	}
	else if(!EW_checkcreditcard(document.shipping_form.CardNumber.value))
	{
		alert("Please enter correct card number!");
		document.shipping_form.CardNumber.focus();
		return false;
	}
	if(!document.shipping_form.CardCode.value)
	{
		alert("Please enter security code!");
		document.shipping_form.CardCode.focus();
		return false;
	}
	return true;
} // validate_shipping_form()

function calculate_tax(amount, add_charges)
{
	my_taxes = document.getElementById("taxes");
	my_grandtotal = document.getElementById("grandtotal");
	my_rate = 0.00;
	if (document.shipping_form.CountryID.value=="CA")
	{
		my_rate = 0.06;
	}
	if (document.shipping_form.CountryID.value=="CA" && document.shipping_form.StateID.value=="ON")
	{
		my_rate = 0.14;
	}
	taxvalue = amount*my_rate;
	taxvalue = formatValue(taxvalue, "$###,###,###.##"); 
	grandvalue = (amount*my_rate)+amount+add_charges;
	grandvalue = formatValue(grandvalue, "$###,###,###.##");
	my_taxes.innerHTML = "<b>"+taxvalue+"</b>";
	my_grandtotal.innerHTML = "<b>"+grandvalue+"</b>";
	document.shipping_form.Tax.value=formatDecimal(amount*my_rate, true, 2);
} // calculate_tax()

// usage formatValue(124343423.3, "$###,###,###.##")
function formatValue(argvalue, format)
{
  var numOfDecimal = 0;
  if (format.indexOf(".") != -1) {
    numOfDecimal = format.substring(format.indexOf(".") + 1, format.length).length;
  }
  argvalue = formatDecimal(argvalue, true, numOfDecimal);

  argvalueBeforeDot = argvalue.substring(0, argvalue.indexOf("."));
  retValue = argvalue.substring(argvalue.indexOf("."), argvalue.length);

  strBeforeDot = format.substring(0, format.indexOf("."));

  for (var n = strBeforeDot.length - 1; n >= 0; n--) {
    oneformatchar = strBeforeDot.substring(n, n + 1);
    if (oneformatchar == "#") {
      if (argvalueBeforeDot.length > 0) {
        argvalueonechar = argvalueBeforeDot.substring(argvalueBeforeDot.length - 1, argvalueBeforeDot.length);
        retValue = argvalueonechar + retValue;
        argvalueBeforeDot = argvalueBeforeDot.substring(0, argvalueBeforeDot.length - 1);
      }
    }
    else {
      if (argvalueBeforeDot.length > 0 || n == 0)
        retValue = oneformatchar + retValue;
    }
  }

  return retValue;
}

function formatDecimal(argvalue, addzero, decimaln)
{
  var numOfDecimal = (decimaln == null) ? 2 : decimaln;
  var number = 1;

  number = Math.pow(10, numOfDecimal);

  argvalue = Math.round(parseFloat(argvalue) * number) / number;
  // If you're using IE3.x, you will get error with the following line.
  // argvalue = argvalue.toString();
  // It works fine in IE4.
  argvalue = "" + argvalue;

  if (argvalue.indexOf(".") == 0)
    argvalue = "0" + argvalue;

  if (addzero == true) {
    if (argvalue.indexOf(".") == -1)
      argvalue = argvalue + ".";

    while ((argvalue.indexOf(".") + 1) > (argvalue.length - numOfDecimal))
      argvalue = argvalue + "0";
  }

  return argvalue;
}

function copy_bill_to_ship()
{
	if (document.shipping_form.useBillToShip.checked)
	{
		document.shipping_form.FirstName.value = document.shipping_form.bFirstName.value;
		document.shipping_form.LastName.value = document.shipping_form.bLastName.value;
		document.shipping_form.Address.value = document.shipping_form.bAddress.value;
		document.shipping_form.City.value = document.shipping_form.bCity.value;
		document.shipping_form.StateID.value = document.shipping_form.bStateID.value;
		document.shipping_form.CountryID.value = document.shipping_form.bCountryID.value;
		document.shipping_form.ZipCode.value = document.shipping_form.bZipCode.value;
	}
}