function resetError() {
  $("shelf-alert").update().setStyle({
    padding: 0,
    backgroundColor: "#FFF"
  });
}

function handleError(msg) {
  $("shelf-alert").setStyle({
    padding: "10px",
    backgroundColor: "#900",
    color: "#FFF",
    fontWeight: "bold",
    textAlign: "center"
  }).update(msg);
}

var pricing = {
  getSmartShelfPricing: function(shelfFinish, shelfStyle, shelfLength) {
    var itemCost = 0.00;
    switch (parseInt(shelfLength)) {
      case 12:
        if (shelfStyle == "single") {
          itemCost = 179.99;
        } else if (shelfStyle == "double") {
          itemCost = 269.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 389.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 18:
        if (shelfStyle == "single") {
          itemCost = 189.99;
        } else if (shelfStyle == "double") {
          itemCost = 279.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 399.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 24:
        if (shelfStyle == "single") {
          itemCost = 199.99;
        } else if (shelfStyle == "double") {
          itemCost = 299.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 429.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 36:
        if (shelfStyle == "single") {
          itemCost = 209.99;
        } else if (shelfStyle == "double") {
          itemCost = 319.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 459.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      case 42:
        if (shelfStyle == "single") {
          itemCost = 239.99;
        } else if (shelfStyle == "double") {
          itemCost = 339.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 489.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      case 48:
        if (shelfStyle == "single") {
          itemCost = 249.99;
        } else if (shelfStyle == "double") {
          itemCost = 359.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 529.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      case 60:
        if (shelfStyle == "single") {
          itemCost = 259.99;
        } else if (shelfStyle == "double") {
          itemCost = 399.99;
        } else if (shelfStyle == "tubular") {
          itemCost = 579.99;
        }
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      default:
        break;
    }
    return itemCost;
  },
  getFloatShelfPricing: function(shelfFinish, shelfLength) {
    var itemCost = 0.00;
    switch (parseInt(shelfLength)) {
      case 18:
        itemCost = 219.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 24:
        itemCost = 249.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 36:
        itemCost = 319.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      default:
        break;
    }
    return itemCost;
  },
  getWallbracketShelfPricing: function(shelfFinish, shelfLength) {
    var itemCost = 0.00;
    switch (parseInt(shelfLength)) {
      case 18:
        itemCost = 279.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 24:
        itemCost = 299.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 15.00;
        }
        break;
      case 36:
        itemCost = 349.99;
        break;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
      case 42:
        itemCost = 369.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      case 48:
        itemCost = 389.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
      case 60:
        itemCost = 429.99;
        if (shelfFinish == "Stainless Fingerprintless") {
          itemCost += 25.00;
        }
        break;
    }
    return itemCost;
  },
  getSmartshelfSupportsPricing: function(shelfFinish) {
    var itemCost = 29.99;
    if (shelfFinish == "Stainless Fingerprintless") {
      itemCost += 15.00;
    }
    return itemCost;
  }
};

function calculate() {
  resetError();
  
  if (!$("smart_shelf").checked && !$("float_shelf").checked &&
      !$("wallbracket_shelf").checked && !$("smartshelf_supports").checked) {
    handleError("Please check at least one shelf design.");
    return;
  }
  
  if ($("smart_shelf").checked) {
    var shelfFinish   = $F("smart_shelf_finish");
    var shelfStyle    = $F("smart_shelf_style");
    var shelfLength   = $F("smart_shelf_length");
    var shelfQuantity = $F("smart_shelf_quantity");
    var total = pricing.getSmartShelfPricing(shelfFinish, shelfStyle, shelfLength);
    if (total == 0) {
      handleError("Please select the smart shelf's style, length, and quantity.");
      return;
    }
    $("smart-shelf-total").update("$" + (total * shelfQuantity).toFixed(2));
  }
  
  if ($("float_shelf").checked) {
    var shelfFinish   = $F("float_shelf_finish");
    var shelfLength   = $F("float_shelf_length");
    var shelfQuantity = $F("float_shelf_quantity");
    var total = pricing.getFloatShelfPricing(shelfFinish, shelfLength);
    if (total == 0) {
      handleError("Please select the floating shelf's finish, length, and quantity.");
      return;
    }
    $("float-shelf-total").update("$" + (total * shelfQuantity).toFixed(2));
  }
  
  if ($("wallbracket_shelf").checked) {
    var shelfFinish   = $F("wallbracket_shelf_finish");
    var shelfLength   = $F("wallbracket_shelf_length");
    var shelfQuantity = $F("wallbracket_shelf_quantity");
    var total = pricing.getWallbracketShelfPricing(shelfFinish, shelfLength);
    if (total == 0) {
      handleError("Please select the wall bracket shelf's finish, length, and quantity.");
      return;
    }
    $("wallbracket-shelf-total").update("$" + (total * shelfQuantity).toFixed(2));
  }
  
  if ($("smartshelf_supports").checked) {
    var shelfFinish   = $F("smartshelf_supports_finish");
    var shelfQuantity = $F("smartshelf_supports_quantity");
    var total = pricing.getSmartshelfSupportsPricing(shelfFinish);
    $("smartshelf-supports-total").update("$" + (total * shelfQuantity).toFixed(2));
  }
}

function checkSmartShelf() {
  if (!$("smart_shelf").checked) {
    $("smart_shelf").checked = true;
  }
}

function checkFloatingShelf() {
  if (!$("float_shelf").checked) {
    $("float_shelf").checked = true;
  }
}

function checkWallbracketShelf() {
  if (!$("wallbracket_shelf").checked) {
    $("wallbracket_shelf").checked = true;
  }
}

function checkSmartShelfSupports() {
  if (!$("smartshelf_supports").checked) {
    $("smartshelf_supports").checked = true;
  }
}

Event.observe(window, "load", function() {
  $("calc").observe("click", calculate);
  $("clear-btn").observe("click", function() {
    $("smart-shelf-total").update("&nbsp;");
    $("float-shelf-total").update("&nbsp;");
    $("wallbracket-shelf-total").update("&nbsp;");
    $("smartshelf-supports-total").update("&nbsp;");
  });
  $("shipping").observe("click", function() {
    if (this.checked) {
      $("ship_info").show();
    } else {
      $("ship_info").hide();
    }
  }.bind($("shipping")));
  $("smart_shelf_finish", "smart_shelf_style",
    "smart_shelf_length", "smart_shelf_quantity").each(function(sel) {
    sel.observe("change", checkSmartShelf);
  });
  $("float_shelf_finish",
    "float_shelf_length", "float_shelf_quantity").each(function(sel) {
    sel.observe("change", checkFloatingShelf);
  });
  $("wallbracket_shelf_finish",
    "wallbracket_shelf_length", "wallbracket_shelf_quantity").each(function(sel) {
    sel.observe("change", checkWallbracketShelf);
  });
  $("smartshelf_supports_finish", "smartshelf_supports_quantity").each(function(sel) {
    sel.observe("change", checkSmartShelfSupports);
  });
});