var httpRequest = null;

var photoSelected = 0;

function selectPhoto (photoNum) {
  // alert("Selecting photo: " + photoNum + " deselecting photo " + photoSelected);
  var currentlySelectedPhoto = getElement("photo_" + photoSelected);
  var newlySelectedPhoto = getElement("photo_" + photoNum);
  if (currentlySelectedPhoto)
    currentlySelectedPhoto.border = 0;
  newlySelectedPhoto.border = 2;
  photoSelected = photoNum;
}

function uploadPhoto () {
  var form = getElement("jewelry_photo");
  form.submit();
}

function shiftPhotoLeft (jewelryID) {
  shiftPhoto(jewelryID, -1);
}

function shiftPhotoRight (jewelryID) {
  shiftPhoto(jewelryID, 1);
}

function shiftPhoto (jewelryID, direction) {
  if (photoSelected == 0 || photoSelected > 3)
    return;
  var destination = Number(photoSelected) + Number(direction);
  if (destination <= 0 || destination > 3)
    return;
  httpRequest = new HttpRequest("shift_photo.php5", shiftPhotoCallback);
  var params = "jewelry_ID=" + jewelryID + "&direction=" + direction + "&photo_num=" + photoSelected;
  // alert(params);
  httpRequest.setParameter("jewelry_ID", jewelryID);
  httpRequest.post(params);
}

function shiftPhotoCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
  refreshPhotos();
}

function refreshPhotos () {
  // alert("refreshing photos");
  var jewelryID = httpRequest.getParameter("jewelry_ID");
  uploadPhoto();
/*
  var photoFrame = getElement("jewelry_photos");
  photoFrame.src = "jewelry_photos.php5?jewelry_ID=" + jewelryID;
  photoFrame.location = "jewelry_photos.php5?jewelry_ID=" + jewelryID;
*/
}

function deletePhoto (jewelryID) {
  if (photoSelected == 0)
    return;

  httpRequest = new HttpRequest("delete_photo.php5", refreshPhotos);
  var params = "jewelry_ID=" + jewelryID + "&photo_num=" + photoSelected;
  httpRequest.setParameter("jewelry_ID", jewelryID);
  httpRequest.post(params);
}

function openJewelryDetail (jewelryID) {
  httpRequest = new HttpRequest("jewelry_detail.php5", openJewelryDetailCallback);
  var params = "jewelry_ID=" + jewelryID;
  httpRequest.post(params);
}

function getWindowWidth () {
  if (parseInt(navigator.appVersion)>3) {
    if (navigator.appName=="Netscape")
      return window.innerWidth;
    if (navigator.appName.indexOf("Microsoft")!=-1)
      return document.body.offsetWidth;
  }
}

function getWindowHeight () {
  if (parseInt(navigator.appVersion)>3) {
    if (navigator.appName=="Netscape")
      return window.innerHeight;
    if (navigator.appName.indexOf("Microsoft")!=-1)
      return document.body.offsetHeight;
  }
}

function openJewelryDetailCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
  var jewelryDetail = getElement("jewelry_detail");
  if (!jewelryDetail || jewelryDetail == "undefined") {
    jewelryDetail = document.createElement("DIV");
    var body = document.body;
    jewelryDetail.setAttribute("id", "jewelry_detail");
    body.appendChild(jewelryDetail);
    var style = getStyleObject("jewelry_detail");
    style.position = "absolute";
    style.left = getWindowWidth()/2 - 200;
    style.top = getWindowHeight()/2 - 200;
    style.border = "solid #000000 1px";
  }
  jewelryDetail.innerHTML = response;
}

function purchaseItem (itemID, itemType) {
  httpRequest = new HttpRequest("purchase_item.php5", purchaseItemCallback);
  var params = "item_ID=" + itemID + "&item_type=" + itemType;
  httpRequest.post(params);
}

function purchaseItemCallback () {
  var response = httpRequest.getResponse();
  var jewelryDetail = getElement("jewelry_detail");
  jewelryDetail.innerHTML = response;
}

function addToWishList (itemID, itemType) {
  httpRequest = new HttpRequest("add_to_wish_list.php5", addToWishListCallback);
  var params = "item_ID=" + itemID + "&item_type=" + itemType;
  httpRequest.post(params);
}

function deleteFromWishList (itemID, itemType) {
  httpRequest = new HttpRequest("delete_from_wish_list.php5", deleteFromWishListCallback);
  var params = "item_ID=" + itemID + "&item_type=" + itemType;
  httpRequest.setParameter("item_ID", itemID);
  httpRequest.setParameter("item_type", itemType);
  httpRequest.post(params);
}

function deleteFromWishListCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
  var body = document.body;
  var itemID = httpRequest.getParameter("item_ID");
  var itemType = httpRequest.getParameter("item_type");
  var itemDivID = itemType + "_preview_" + itemID;
  loadWishList();
/*
  var itemPreviewDiv = getElement(itemDivID);
  alert(itemDivID);
  if (itemPreviewDiv)
    body.removeChild(itemPreviewDiv);
*/
}

function registerJewelryDetail () {
  closeJewelryDetail();
  loadContent("registration.php5");
}

function addToWishListCallback () {
  var messageDiv = getElement("jewelry_detail_message");
  var response = httpRequest.getResponse();
  response = trim(response);
  if (response == "1") {
    messageDiv.innerHTML = "Item Added.";
    setTimeout(removeJewelryDetailMessage, 1500);
  }
  else if (response == "2") {
    messageDiv.innerHTML = "Item already in wish list.";
    setTimeout(removeJewelryDetailMessage, 1500);
  }
  else {
    messageDiv.innerHTML = "Please <A href=\"javascript: loadLoginForm()\">log in</A> or <A href=\"javascript: registerJewelryDetail()\">register</A> to create a wish list.";
  }
}

function removeJewelryDetailMessage () {
  var messageDiv = getElement("jewelry_detail_message");
  messageDiv.innerHTML = "";
}

function sendHint (jewelryID) {
  httpRequest = new HttpRequest("send_hint_form.php5", sendHintCallback);
  var params = "jewelry_ID=" + jewelryID;
  httpRequest.post(params);
}

function sendHintCallback () {
  var response = httpRequest.getResponse();
  var jewelryDetail = getElement("jewelry_detail");
  jewelryDetail.innerHTML = response;
}

function submitHint (jewelryID) {
  httpRequest = new HttpRequest("send_hint.php5", submitHintCallback);
  var theirTitle = getElement("their_title");
  var theirFirstName = getElement("their_first_name");
  var theirLastName = getElement("their_last_name");
  var theirEmail = getElement("their_email");
  var yourTitle = getElement("your_email");
  var yourFirstName = getElement("your_first_name");
  var yourLastName = getElement("your_last_name");
  var yourEmail = getElement("your_email");
  var params = "jewelry_ID=" + jewelryID + "&their_title=" + theirTitle.value + "&their_first_name=" + theirFirstName.value + "&their_last_name=" + theirLastName.value + "&their_email=" + theirEmail.value + "&your_title=" + yourTitle.value + "&your_first_name=" + yourFirstName.value + "&your_last_name=" + yourLastName.value + "&your_email=" + yourEmail.value;
  // alert(params);
  httpRequest.post(params);
  var jewelryDetail = getElement("jewelry_detail");
  jewelryDetail.innerHTML = "Sending...";
}

function submitHintCallback () {
  var response = httpRequest.getResponse();
  var jewelryDetail = getElement("jewelry_detail");
  jewelry_detail.innerHTML = response;
}

function cancelHint () {
  closeJewelryDetail();
}

function closeHint () {
  closeJewelryDetail();
}

function closeJewelryDetail () {
  var jewelryDetailDiv = getElement("jewelry_detail");
  var body = document.body;
  if (jewelryDetailDiv)
    body.removeChild(jewelryDetailDiv);
}

/* Login */
function adminLogin () {
  var username = getElement("username");
  var password = getElement("password");
  httpRequest = new HttpRequest("login_script.php5", adminLoginCallback);
  var params = "username=" + username.value + "&password=" + password.value;
  httpRequest.post(params);
}

function adminLoginCallback () {
  var response = httpRequest.getResponse();
  response = trim(response);
  if (response == "0") {
    var errorDiv = getElement("error");
    var password = getElement("password");
    errorDiv.innerHTML = "<FONT size=-1 color=\"#CC0000\">Sorry, the username and password you entered were not recognized.</FONT>";
  }
  else window.location = "admin_main.php5";
}

function logIn () {
  var email = getElement("login_email");
  var password = getElement("password");
  httpRequest = new HttpRequest("customer_login.php5", logInCallback);
  var params = "email=" + email.value + "&password=" + password.value;
  httpRequest.post(params);
}

function logInCallback () {
  var response = httpRequest.getResponse();
  response = trim(response);
  if (response == "0") {
    var errorDiv = getElement("login_error");
    errorDiv.innerHTML = "We're sorry, a match could not be found for the login information you entered.";
  }
  else {
    var loginDiv = getElement("login");
    loginDiv.innerHTML = response;
    loadMemberHome();
  }
}

function loadMemberHome () {
  // loadContent("member_home.php5");
}

function loadLoginForm () {
  httpRequest = new HttpRequest("get_login_form.php5", loadLoginFormCallback);
  var params = "";
  httpRequest.post(params);
}

function loadLoginFormCallback () {
  var response = httpRequest.getResponse();
  var loginDiv = getElement("login");
  loginDiv.innerHTML = response;
}

function logOut () {
  httpRequest = new HttpRequest("log_out.php5", logOutCallback);
  var params = "";
  httpRequest.post(params);
}

function logOutCallback () {
  loadLoginForm();
}

/* Registration */
function register (newCustomer) {
  var email = getElement("email");
  var confirmEmail = getElement("confirm_email");
  var password = getElement("password");
  var confirmPassword = getElement("confirm_password");
  var title = getElement("title");
  var firstName = getElement("first_name");
  var lastName = getElement("last_name");
  var address = getElement("address_1");
  var address2 = getElement("address_2");
  var city = getElement("city");
  var state = getElement("state");
  var zipcode = getElement("zipcode");
  var primaryPhone = getElement("primary_phone");
  var secondaryPhone = getElement("secondary_phone");
  var birthday = getElement("birthday");
  var recievePost = getElement("recieve_post");
  var recieveEmail = getElement("recieve_email");
  if (confirmEmail.value == "" || email.value == "" || email.value != confirmEmail.value) {
    alert("E-Mail and Confirm E-Mail must match.");
    return;
  }
  else if ((newCustomer == "0" && password.value != "" && password.value != confirmPassword.value) || (newCustomer != "0" && (password.value == "" || confirmPassword.value == "" || password.value != confirmPassword.value))) {
    alert("Password and Confirm Password must match.");
    password.value = "";
    confirmPassword.value = "";
    return;
  }
  else if (firstName.value == "" || lastName.value == "" || address.value == "" || city.value == "" || state.value == "" || zipcode.value == "" || primaryPhone.value == "") {
    alert("Please complete the form.");
    return;
  }
  httpRequest = new HttpRequest("register.php5", registrationCallback);
  var params = "new_customer=" + newCustomer + "&email=" + email.value + "&password=" + password.value + "&title=" + title.value + "&first_name=" + firstName.value + "&last_name=" + lastName.value + "&address_1=" + address.value + "&address_2=" + address2.value + "&city=" + city.value + "&state=" + state.value + "&zipcode=" + zipcode.value + "&primary_phone=" + primaryPhone.value + "&secondary_phone=" + secondaryPhone.value + "&birthday=" + birthday.value + "&recieve_post=" + recievePost.value + "&recieve_email=" + recieveEmail.value;
  httpRequest.post(params);
}

function registrationCallback () {
  var response = httpRequest.getResponse();
  var email = getElement("email");
  var contentDiv = getElement("content");
  response = trim(response);
  // alert(response);
  if (response == "0") {
    content = "The email '" + email.value + "' is already associated with a registered user. Please <A href=\"javascript: loadLoginForm()\">login</A>, or <A href=\"javascript: remindPassword('" + email.value + "')\">click Here</A> to have a password reminder sent to " + email.value + ".";
    contentDiv.innerHTML = content;
  }
  else if (response == "1") {
    contentDiv.innerHTML = "Welcome! Please <A href=\"javascript: loadLoginForm()\">log in</A> to complete registration.";
  }
  else if (response == "2") {
    contentDiv.innerHTML = "<DIV class='info updated'>Your information has been updated.</DIV>";
  }
  //  alert(response);
}

function editCustomerInfo (email) {
  loadContent("registration.php5", "email=" + email);
}

/* Certifications */
function uploadCertification (itemType, itemNum, certNum) {
  if (!certNum)
    certNum = "";
  var uploadName = "certification_file" + certNum;
  var upload = getElement(uploadName);
  // alert(uploadName);
  var filename_extension = upload.value.split(".");
  var extensionIndex = filename_extension.length -1;
  // alert(upload.value + "," + filename_extension[extensionIndex]);
  if (filename_extension[extensionIndex] != "pdf" && filename_extension[extensionIndex] != "PDF") {
    alert("Please upload an Adobe PDF document.");
    upload.value = "";
    return;
  }
  var formName = "certification" + certNum;
  // alert("Submitting " + formName);
  var form = getElement(formName);
  form.submit();
  // refreshCertification(itemType, itemID);
}

function deleteCertification (itemType, itemNum, certNum) {
  if (!certNum)
    certNum = "";
  httpRequest = new HttpRequest("delete_certification.php5", deleteCertificationCallback);
  httpRequest.setParameter("item_ID", itemNum);
  httpRequest.setParameter("type", itemType);
  var params = "type=" + itemType + "&item_ID=" + itemNum + "&cert_num=" + certNum;
  httpRequest.post(params);
}

function deleteCertificationCallback () {
  var form = getElement("certification1");
  form.submit();
  /*
  var itemID = httpRequest.getParameter("item_ID");
  var type = httpRequest.getParameter("type");
  refreshCertification(itemID, type);
  */
}

function refreshCertification(itemType, itemID) {
  var certificationFrame = getElement("certification_frame");
  certificationFrame.src = "certification.php5?item_ID=" + itemID + "&type=" + itemType;
}

/* Diamonds */

function addDiamond () {
  httpRequest = new HttpRequest("add_diamond.php5", addDiamondCallback);
  var params = "";
  httpRequest.post(params);
}

function addDiamondCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
  var responseParts = response.split("|");
  var diamonds = getElement("diamonds");
  var diamond = document.createElement("DIV");
  diamond.style.clear = "left";
  if (responseParts[0] == "0") {
    alert("Error adding diamond. Please try again.");
    return;
  }
  diamond.setAttribute("id", "diamond_" + responseParts[0]);
  diamond.innerHTML = responseParts[1];
  diamonds.appendChild(diamond);
}

function deleteDiamond (diamondID) {
  httpRequest = new HttpRequest("delete_diamond.php5", deleteDiamondCallback);
  var params = "diamond_ID=" + diamondID;
  httpRequest.post(params);
}

function deleteDiamondCallback () {
  var response = httpRequest.getResponse();
  var diamonds = getElement("diamonds");
  var diamond = getElement("diamond_" + response);
  diamonds.removeChild(diamond);
}

function uploadDiamondCertification (diamondID) {
  window.open("certification.php5?type=diamond&item_ID=" + diamondID, "", "left=400,top=400,width=350,height=50,toolbar=0,location=1,scrollbars=1,resizable=1");
}

function editDiamondDescription (diamondID) {
  var width = 450;
  var height = 260;
  var startX = (window.width/2) - (width/2)
  var startY = (window.height/2) - (height/2)
  startX = 300;
  startY = 250;
  window.open("diamond_description.php5?diamond_ID=" + diamondID, "", "left=" + startX + ",top=" + startY + ",width=" + width + ",height=" + height + ",toolbar=0,location=1,scrollbars=1,resizable=1");
}

function editDiamond (diamondID) {
  httpRequest = new HttpRequest("edit_diamond.php5", editDiamondCallback);
  var params = "diamond_ID=" + diamondID;
  var diamondRow = getElement("diamond_" + diamondID);
  diamondRow.innerHTML = "<IMG src='images/loader.gif'>Loading...";
  httpRequest.post(params);
}

function editDiamondCallback () {
  var response = httpRequest.getResponse();
  var responseParts = response.split("|");
  var diamondRow = getElement("diamond_" + responseParts[0]);
  diamondRow.innerHTML = responseParts[1];
}

function saveDiamond (diamondID) {
  httpRequest = new HttpRequest("save_diamond.php5", saveDiamondCallback);
  var form = getElement("diamond_" + diamondID + "_form");
  var params = getFormContents(form);
  var diamondRow = getElement("diamond_" + diamondID);
  diamondRow.innerHTML = "<IMG src='images/loader.gif'>Saving...";
  params += "diamond_ID=" + diamondID;
  httpRequest.post(params);
}

function saveDiamondCallback () {
  var response = httpRequest.getResponse();
  var responseParts = response.split("|");
  var diamond = getElement("diamond_" + responseParts[0]);
  diamond.innerHTML = responseParts[1];
}

function saveDiamondDescription (diamondID) {
  httpRequest = new HttpRequest("diamond_description_script.php5", saveDiamondDescriptionCallback);
  var description = getElement("description");
  var params = "diamond_ID=" + diamondID + "&description=" + description.value;
  httpRequest.post(params);
}

function saveDiamondDescriptionCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
  window.close();
}

/* Categories */
function expandCollapseCategory (categoryID, categoryName) {
  var expandCollapse = getElement("expand_" + categoryID);
  if (expandCollapse.value == "expand") {
    httpRequest = new HttpRequest("admin/get_category_children.php5", expandMenuCategoryCallback);
    expandCollapse.value = "collapse";  
    httpRequest.setParameter("categoryID", categoryID);
    httpRequest.setParameter("categoryName", categoryName);
    var params = "name_only=1&level=1&parent_ID=" + categoryID;
    httpRequest.post(params);
  }
  else {
    httpRequest = new HttpRequest("admin/get_category_children.php5", collapseMenuCategoryCallback);
    expandCollapse.value = "expand";
    httpRequest.setParameter("categoryID", categoryID);
    httpRequest.setParameter("categoryName", categoryName);
    var params = "name_only=1&level=1&parent_ID=" + categoryID;
    httpRequest.post(params);
  }
}

function collapseMenuCategoryCallback () {
  var response = httpRequest.getResponse();
  if (response == "0") {
    return;
  }
  var categoryID = httpRequest.getParameter("categoryID");
  var categoryDiv = getElement("category_" + categoryID);
  var responseParts = response.split("|");
  for (i=0; i<responseParts.length; i+=3) {
    var childCategoryName = "category_" + trim(responseParts[i]);
    var childCategoryDiv = getElement(childCategoryName);
    categoryDiv.removeChild(childCategoryDiv);
  }
}

function expandMenuCategoryCallback () {
  var response = httpRequest.getResponse();
  response = trim(response);
  var categoryID = httpRequest.getParameter("categoryID");
  var categoryName = httpRequest.getParameter("categoryName");
  if (response != "0") {
    var categoryDiv = getElement("category_" + categoryID);
    var responseParts = response.split("|");
    for (i=0; i<responseParts.length; i++) {
      var childCategoryID = trim(responseParts[i++]);
      var childDiv = document.createElement("DIV");
      childDiv.setAttribute("id", "category_" + childCategoryID);
      var spacer = "";
      for (j=0; j<responseParts[i]; j++)
        spacer += "&nbsp;&nbsp;&nbsp;&nbsp;";
      i++;
      var hidden = "<INPUT type='hidden' id='expand_" + childCategoryID + "' value='expand'>";
      var link = "<A href='javascript: expandCollapseCategory(" + childCategoryID + ", \"\")'>" + responseParts[i] + "</A>";
      childDiv.innerHTML = hidden + spacer + link;
      // alert(childDiv.innerHTML);
      categoryDiv.appendChild(childDiv);
    }
  }
  loadCategoryContent(categoryID, categoryName);
}

function loadContent (page, params) {
  if (!params || params == null)
    params = " ";
  load("content", page, params);
}

function load (targetDiv, page, params) {
  httpRequest = new HttpRequest(page, loadCallback);
  httpRequest.setParameter("div", targetDiv);
  httpRequest.post(params);
}

function loadCallback () {
  var response = httpRequest.getResponse();
  var targetDivName = httpRequest.getParameter("div");
  var targetDiv = getElement(targetDivName);
  if (!targetDiv)
    return;
  targetDiv.innerHTML = response;
}

function loadCategoryMenu () {
  load("category_menu", "category_menu.php5");
}

function loadJewelrySearch () {
  var jewelrySearch = getElement("jewelry_search");
  var jewelryShape = getElement("stone_shape");
  if (jewelryShape) {
    jewelrySearch.innerHTML = "";
    return;
  }
  httpRequest = new HttpRequest("jewelry_search.php5", loadJewelrySearchCallback);
  var params = "";
  httpRequest.post(params);
}

function loadDiamondSearch () {
  var diamondSearch = getElement("diamond_search");
  var diamondShape = getElement("diamond_shape");
  if (diamondShape) {
    diamondSearch.innerHTML = "";
    return;
  }
  httpRequest = new HttpRequest("diamond_search.php5", loadDiamondSearchCallback);
  var params = "";
  httpRequest.post(params);
}

function loadJewelrySearchCallback () {
  var jewelrySearch = getElement("jewelry_search");
  var response = httpRequest.getResponse();
  jewelrySearch.innerHTML = response;
}

function loadDiamondSearchCallback () {
  var diamondSearch = getElement("diamond_search");
  var response = httpRequest.getResponse();
  diamondSearch.innerHTML = response;
}

function quickSearch () {
  var criteriaInput = getElement("search_criteria");
  var criteria = criteriaInput.value;
  var where = " WHERE title LIKE '%" + criteria + "%' OR description LIKE '%" + criteria + "%' OR item_num LIKE '%" + criteria + "%'";
  where = escape(where);
  loadResults("jewelry", where, "Search: " + criteria, 1);
}

function searchDiamonds () {
  var where = "";
  var shape = getElement("diamond_shape");
  var color = getElement("color");
  var clarity = getElement("clarity");
  var fromCarats = getElement("from_carats");
  var toCarats = getElement("to_carats");
  var fromCost = getElement("diamond_from_cost");
  var toCost = getElement("diamond_to_cost");
  if (shape.value != "")
    where = " WHERE shape = '" + shape.value + "'";
  if (color.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " color = '" + color.value + "'";
  }
  if (fromCarats.value != "" && toCarats.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " carats >= '" + fromCarats.value + "' AND carats <= '" + toCarats.value + "'";
  }
  if (fromCost.value != "" && toCost.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " price >= '" + fromCost.value + "' AND price <= '" + toCost.value + "'";
  }
  // alert(where);
  loadResults("diamond", where, "Diamond Search");
}

function searchJewelry () {
  var where = "";
  var stone = getElement("stone");
  var shape = getElement("stone_shape");
  var metal = getElement("metal");
  var designer = getElement("designer");
  var gender = getElement("gender");
  var fromCost = getElement("jewelry_from_cost");
  var toCost = getElement("jewelry_to_cost");
  var keywords = getElement("keywords");

  if (stone.value != "")
    where = " WHERE stones LIKE '%[" + stone.value + "]%'";
  if (shape.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " stone_shapes LIKE '%[" + shape.value + "]%'";
  }
  if (metal.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " metals LIKE '%[" + metal.value + "]%'";
  }
  if (designer.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " manufacturer = '" + designer.value + "'";
  }
  if (gender.value != "") {
    if (where != "")
      where += " AND ";
    else where = " WHERE";
    where += " sex = '" + gender.value + "'";
  }
  if (fromCost.value != "" && toCost.value != "") {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " sell_price >= '" + fromCost.value + "' AND sell_price <= '" + toCost.value + "'";
  }
  if (keywords.value != "" && keywords.value) {
    if (where != "")
      where += " AND";
    else where = " WHERE";
    where += " (title LIKE '%" + keywords.value + "%' OR description LIKE '%" + keywords.value + "%')";
  }
  loadResults("jewelry", where, "Jewelry Search");
}

function loadWinterHolidays () {
  loadHolidayResults(1);
}

function loadWishList (email) {
  loadResults("wishlist", " WHERE email = '" + email + "'", "Wish List");
}

function loadHolidayResults (holidayNum) {
  var where = "WHERE holidays LIKE '%[" + holidayNum + "]%'";
  loadResults("jewelry", where, "Great Gift Ideas");
}

function loadResults (type, where, title, page) {
  var params = "type=" + type + "&where=" + where + "&title=" + title + "&page=" + page;
  // alert(params);
  loadContent("results.php5", params);
}

function loadCategoryContent (categoryID, categoryName) {
  var where = "WHERE categories LIKE '%[" + categoryID + "]%'";
  loadResults("jewelry", where, categoryName);
}

function loadDesigner (designer) {
  loadContent("manufacturer_results.php5", "manufacturer=" + designer);
}

function loadResultsPage(type, where, title, page) {
  loadResults(type, where, title, page);
}

function addCategory (parentID) {
  httpRequest = new HttpRequest("add_category.php5", addCategoryCallback);
  var params = "";
  httpRequest.post(params);
}

function addCategoryCallback () {
  var categories = getElement("categories");
  var response = httpRequest.getResponse();
  // alert(response);
  var responseParts = response.split("|");
  var newCategoryID = trim(responseParts[0]);
  var categoryNameInputID = "category_" + newCategoryID + "_name";
  var category = document.createElement("DIV");
  category.setAttribute("id", "category_" + newCategoryID + "_container");
  category.innerHTML = responseParts[1];
  categories.appendChild(category);
  var categoryName = getElement(categoryNameInputID);
  categoryName.select();
}

function addChildCategory (parentID) {
  httpRequest = new HttpRequest("add_category.php5", addChildCategoryCallback);
  httpRequest.setParameter("parent_ID", parentID);
  var params = "parent_ID=" + parentID;
  httpRequest.post(params);
}

function addChildCategoryCallback () {
  var response = httpRequest.getResponse();
  var responseParts = response.split("|");
  var newCategoryID = trim(responseParts[0]);
  var parentID = httpRequest.getParameter("parent_ID");
  var categories = getElement("categories");
  var parentContainer = getElement("category_" + parentID + "_container");
  var categoryContainerName = "category_" + newCategoryID + "_container";
  // alert(categoryContainerName);
  var categoryContainer = document.createElement("DIV");
  categoryContainer.setAttribute("id", categoryContainerName);
  categoryContainer.innerHTML = responseParts[1];
  parentContainer.appendChild(categoryContainer);

  var categoryNameInput = getElement("category_" + newCategoryID + "_name");
  categoryNameInput.select();
  // expandCategory(parentID);
}

function collapseCategory (parentID) {
  // alert("collapsing category: " + parentID);
  var expandPic = getElement("expand_" + parentID);
  document.images["expand_" + parentID].src = "images/expand.gif";
  expandPic.src = "images/expand.gif";
  expandPic.removeAttribute("onClick");
  expandPic.setAttribute("onClick", "expandCategory('" + parentID + "')");
  var parentCategoryContainer = getElement("category_" + parentID + "_container");
  while(parentCategoryContainer.hasChildNodes())
    parentCategoryContainer.removeChild(parentCategoryContainer.childNodes[0]);
}

function expandCategory (parentID) {
  // alert("Expanding Category " + parentID);
  httpRequest = new HttpRequest("get_category_children.php5", expandCategoryCallback);
  httpRequest.setParameter("parent_ID", parentID);
  var params = "parent_ID=" + parentID;
  httpRequest.post(params);
}

function expandCategoryCallback () {
  var response = httpRequest.getResponse();
//  alert(response); return;
  var parentID = httpRequest.getParameter("parent_ID");
  if (response == "0")
    return;
  else {
    var responseParts = response.split("|");
    var parentCategoryContainer = getElement("category_" + parentID + "_container");
    var nextElement; // = parentCategoryContainer.getNextSibling();
    for (i=0; i<responseParts.length; i++) {
      var categoryID = responseParts[i++];
      var categoryDisplay = responseParts[i];
      var categoryContainer = document.createElement("DIV");
      categoryContainer.setAttribute("id", "category_" + categoryID + "_container");
      categoryContainer.innerHTML = categoryDisplay;
      if (!nextElement)
        parentCategoryContainer.appendChild(categoryContainer);
      else categories.insertBefore(categoryContainer, nextElement);
    }
    // Get [+] picture, change it to [-], set callback to collapseCategory
    var expandPic = getElement("expand_" + parentID);
    expandPic.src = "images/collapse.gif";
    document.images["expand_" + parentID].src = "images/collapse.gif";
    expandPic.removeAttribute("onClick");
    expandPic.setAttribute("onClick", "collapseCategory('" + parentID + "')");
  }
}

function saveCategory (categoryID) {
  httpRequest = new HttpRequest("save_category.php5", saveCategoryCallback);
  httpRequest.setParameter("category_ID", categoryID);
  var categoryName = getElement("category_" + categoryID + "_name");
  var params = "category_ID=" + categoryID + "&name=" + categoryName.value;
  httpRequest.post(params);
}

function saveCategoryCallback () {
  var response = httpRequest.getResponse();
  var categoryID = httpRequest.getParameter("category_ID");
  var categoryContainer = getElement("category_" + categoryID + "_container");
  categoryContainer.innerHTML = response;
}

function editCategory (categoryID) {
  httpRequest = new HttpRequest("edit_category.php5", editCategoryCallback);
  httpRequest.setParameter("category_ID", categoryID);
  var params = "category_ID=" + categoryID;
  httpRequest.post(params);
}

function editCategoryCallback () {
  var response = httpRequest.getResponse();
  var categoryID = httpRequest.getParameter("category_ID");
  var categoryContainer = getElement("category_" + categoryID + "_container");
  categoryContainer.innerHTML = response;
}

function deleteCategory (categoryID) {
  var confirmation = confirm("Are you sure you want to delete this category? All child categories will also be deleted.");
  if (!confirmation)
    return;
  httpRequest = new HttpRequest("delete_category.php5", deleteCategoryCallback);
  httpRequest.setParameter("category_ID", categoryID);
  var params = "category_ID=" + categoryID;
  httpRequest.post(params);
}

function deleteCategoryCallback () {
  var categoryID = httpRequest.getParameter("category_ID");
  var categories = getElement("categories");
  var categoryContainer = getElement("category_" + categoryID + "_container");
  categories.removeChild(categoryContainer);
}

function addJewelry () {
  window.open("add_inventory.php5", "", "left=100,top=400,width=650,height=900,toolbar=0,location=1,scrollbars=1,resizable=1");
}

function editJewelry (jewelryID) {
  window.open("edit_jewelry.php5?jewelry_ID=" + jewelryID, "", "left=100,top=400,width=650,height=900,toolbar=0,location=1,scrollbars=1,resizable=1");
/*
  var jewelryDiv = getElement("jewelry_" + jewelryID);
  // jewelryDiv.style.border = 
  httpRequest = new HttpRequest("edit_jewelry.php5", editJewelryCallback);
  var editInventory = getElement("edit_inventory");
  var params = "jewelry_ID=" + jewelryID;
  editInventory.innerHTML = "<IMG src='images/loader.gif'>Loading...";
  httpRequest.post(params);
*/
}

function editJewelryCallback () {
  var response = httpResponse = httpRequest.getResponse();
  var editInventory = getElement("edit_inventory");
  editInventory.innerHTML = response;
}

function addItem () {
  httpRequest = new HttpRequest("add_inventory.php5", addItemCallback);
  var params = "";
  httpRequest.post(params);  
}

function addItemCallback () {
  var response = httpRequest.getResponse();
  var editInventory = getElement("edit_inventory");
  editInventory.innerHTML = response;
}

function saveJewelryAndClose (jewelryID) {
  saveJewelry(jewelryID);
  window.close();
}

function saveJewelry (jewelryID) {
  httpRequest = new HttpRequest("save_jewelry.php5", saveJewelryCallback);
  var jewelryForm = getElement("jewelry");
  var params = getFormContents(jewelryForm);
  // document.write(params);
  params += "jewelry_ID=" + jewelryID;
  var save_message = getElement("save_message");
  save_message.innerHTML = "<B>Saving...</B>";
  httpRequest.post(params);
}

function saveJewelryCallback () {
  var response = httpRequest.getResponse();
  // alert(response); // document.write(response);
  var save_message = getElement("save_message");
  save_message.innerHTML = "<B>Saved.</B>";
  setTimeout(saveJewelryRemoveSaved, 1000);
}

function saveJewelryRemoveSaved () {
  var save_message = getElement("save_message");
/*
  for (var i=0; i<10; i++) {
    pause(100);
    if (i%2 == 0)
      save_message.innerHTML = "<B>Saved.</B>";
    else save_message.innerHTML = "";
  }
*/
  save_message.innerHTML = "";
}

function deleteJewelry (jewelryID) {
  var confirmation = confirm("Are you sure you want to delete this piece of jewelry?");
  if (!confirmation)
    return;
  httpRequest = new HttpRequest("delete_jewelry.php5", deleteJewelryCallback);
  var params = "jewelry_ID=" + jewelryID;
  httpRequest.post(params);
}

function deleteJewelryCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
  discardChanges();	// Refresh inventory
}

function discardChanges () {
  window.close();
  // window.location = "edit_inventory.php5";
}

function loadSubCategory(categoryNum, categorySuffix) {
  var category = getElement("category" + categorySuffix + "_" + categoryNum);
  httpRequest = new HttpRequest("get_category_children.php5", loadSubCategoryCallback);
  var params = "name_only=1&parent_ID=" + category.value;
  httpRequest.setParameter("category", categoryNum);
  httpRequest.setParameter("categorySuffix", categorySuffix);
  httpRequest.post(params);
}

function loadSubCategoryCallback () {
  var response = trim(httpRequest.getResponse());
  var categoryNum = httpRequest.getParameter("category");
  var categorySuffix = httpRequest.getParameter("categorySuffix");
  categoryNum++;
  var categoryName = "category" + categorySuffix + "_" + categoryNum;
  // alert(response);
  if (response == "0" || response == "") {
    var subCategory;
    while (subCategory = getElement(categoryName)) {
      // alert(subCategory.options.length);
      for (var i=subCategory.options.length; i>=0; i--) {
        subCategory.options.length = null;
      }
      categoryNum++;
      categoryName = "category" + categorySuffix + "_" + categoryNum;
    }
  }
  else {
    var subCategory = getElement(categoryName);
    if (!subCategory) {
      return;
    }
    else {
      var length = subCategory.options.length;
      for (var i=length; i>=0; i--)
        subCategory.options[i] = null;
    }
    var subCategoryValueName = response.split("|");
    var subCategories = new Array();
    var j = 0;
    for (var i=0; i<subCategoryValueName.length; i++) {
      var value = subCategoryValueName[i++];
      var name = subCategoryValueName[i];
      subCategory.options[j++] = new Option(name, value);
    }
  }
}

function selectManufacturer () {
  var manufacturer = getElement("manufacturer");
  document.location = "edit_inventory.php5?manufacturer=" + manufacturer.value;
}

function deleteManufacturer () {
  var manufacturer = getElement("manufacturer");
  var selectedIndex = manufacturer.selectedIndex;
  var confirmation = confirm("Are you sure you want to delete the manufacturer '" + manufacturer.options[selectedIndex].text + "'?");
  if (!confirmation)
    return;
  var manufacturerID = manufacturer.value;
  httpRequest = new HttpRequest("delete_manufacturer.php5", deleteManufacturerCallback);
  var params = "manufacturer_ID=" + manufacturerID;
  httpRequest.post(params);
  manufacturer.options[selectedIndex] = null;
}

function deleteManufacturerCallback () {
  var response = httpRequest.getResponse();
  // alert(response);
}

function addManufacturer () {
  httpRequest = new HttpRequest("manufacturer.php5", addManufacturerCallback);
  var params = "";
  httpRequest.post(params);
}

function addManufacturerCallback () {
  var manufacturerDiv = getElement("add_manufacturer");
  var response = httpRequest.getResponse();
  manufacturerDiv.border = 1;
  manufacturerDiv.innerHTML = response;
}

function saveManufacturer () {
  httpRequest = new HttpRequest("add_manufacturer.php5", saveManufacturerCallback);
  var name = getElement("manufacturer_name");
  var params = "name=" + name.value;
  httpRequest.post(params);
}

function saveManufacturerCallback () {
  var response = httpRequest.getResponse();
  var responseParts = response.split("|");
  var manufacturer = getElement("manufacturer");
  var manufacturerDiv = getElement("add_manufacturer");
  var optionNum = manufacturer.options.length;
  manufacturer.options[optionNum] = new Option(responseParts[1], responseParts[1]);
  manufacturerDiv.innerHTML = "";
}

function cancelAddManufacturer () {
  var manufacturerDiv = getElement("add_manufacturer");
  // alert(manufacturerDiv);
  manufacturerDiv.innerHTML = "";
}