/*
    carl purcell art: javascript utilities
    author: Randon Purcell
    Copyright © 2010 Carl Purcell Art. All Rights Reserved
*/

// placeholder
function initExtrasPage() {

}

function initGalleryPage() {
  getGalleryEntries();
  
  //$(".scrollable").scrollable();
}

function initContactPage() {
  document.getElementById("name").onkeyup = validateNameEntry;
  document.getElementById("email").onkeyup = validateEmailEntry;
  document.getElementById("sendmail").disabled = true;
  document.getElementById("sendmail").onclick = submitEmailForm;
  
  document.getElementById("name").status = 0;
  document.getElementById("email").status = 0;
  document.getElementById("comments").status = 0;
}

function initWorkshopsPage() {
  // Setup the workshop links
  var workshopButtons = document.getElementById('workshopTitlesList').getElementsByTagName('a');
  var firstWorkshopOb = workshopButtons[0];
  
  // Load the first workshop when the page loads
  loadFirstWorkshop(firstWorkshopOb);
  
  for (var i = 0; i < workshopButtons.length; i++) {
    var currentButton = workshopButtons[i];
    addEventHandler(currentButton, "click", updateWorkshopDetails);
    addEventHandler(currentButton, "click", updateWorkshopButtonClass);
  }
}

function initPurchasePage() {
  policyWin = null;
  
  // Setup the category links
  var categoryButtons = document.getElementById('categoriesWrapper').getElementsByTagName('a');
  var firstCategoryObj = categoryButtons[0];
  
  // Load the first category when the page loads
  loadFirstCategory(firstCategoryObj);
  for (var i = 0; i < categoryButtons.length; i++) {
    var currentButton = categoryButtons[i];
    addEventHandler(currentButton, "click", updateCategoryDetails);
    addEventHandler(currentButton, "click", updateCategoryButtonClass);
  }   
  
  // And setup the view cart button action
  var viewCartButtons = document.getElementById('cartContentLink').getElementsByTagName('a');
  var viewCartObj = viewCartButtons[0];
  addEventHandler(viewCartObj, "click", viewCartContents);
  addEventHandler(viewCartObj, "click", updateViewCartButtonClass);
  
  // Make sure our cart item count gets the latest
  //updateCartCount();
}

function toggleWorkshopDetails(divName, parentDivName, closedImage, openImage, imageName)
{
    var divElem = document.getElementById(divName);
    var parentDivElem = document.getElementById(parentDivName);

    if (divElem.style.display == 'none') {
        divElem.style.display = 'block';
        parentDivElem.getElementsByTagName('img')[imageName].src = "assets/" + openImage;
    }
    else {
        divElem.style.display = 'none';
        parentDivElem.getElementsByTagName('img')[imageName].src = "assets/" + closedImage; 
    }
}

function isMaxLength(obj)
{
    var maxLength = obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "";
    if (obj.getAttribute && obj.value.length > maxLength) {
        obj.value = obj.value.substring(0, maxLength);
    }
    
    validateCommentsEntry();
}

function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (tryMS) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (otherMS) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }	
  return request;
}

function submitEmailForm() {
  setSendStatus(0);
  request = createRequest();

  if (request == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var name = escape(document.getElementById("name").value);
    var email = escape(document.getElementById("email").value);
    var comments = escape(document.getElementById("comments").value);
    //var subscribe = (document.getElementById('signup').checked) ? 1 : 0;
    var url= "emailFormHandler.php";
    //var params = "name=" + name + "&email=" + email + "&comments=" + comments + "&subscribe=" + subscribe;
    var params = "name=" + name + "&email=" + email + "&comments=" + comments + "&subscribe=0";
    
    request.open("POST", url, true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", params.length);
    request.setRequestHeader("Connection", "close");
    
    request.onreadystatechange = showSendStatus;
    request.send(params); 
  }
}

function validateNameEntry() {
  setFieldStatus('name', 0);
  nameRequest = createRequest();
  if (nameRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var name = document.getElementById("name").value;
    name = escape(name);
    var url= "fieldValidator.php?functionName=validateString&inputVal=" + name;
    nameRequest.open("POST", url, true);
    nameRequest.onreadystatechange = function() { showFieldValidationStatus('name', nameRequest); };
    nameRequest.send(null); 
  }
}

function validateEmailEntry() {
  setFieldStatus('email', 0);
  emailRequest = createRequest();
  if (emailRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var email = document.getElementById("email").value;
    email = escape(email);
    var url= "fieldValidator.php?functionName=validateEmail&inputVal=" + email;
    emailRequest.open("POST", url, true);
    emailRequest.onreadystatechange = function() { showFieldValidationStatus('email', emailRequest); };
    emailRequest.send(null); 
  }
}

function validateCommentsEntry() {
  setFieldStatus('comments', 0);
  commentsRequest = createRequest();
  if (commentsRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var comments = document.getElementById("comments").value;
    comments = escape(comments);
    var url= "fieldValidator.php?functionName=validateString&inputVal=" + comments;
    commentsRequest.open("POST", url, true);
    commentsRequest.onreadystatechange = function() { showFieldValidationStatus('comments', commentsRequest); };
    commentsRequest.send(null); 
  }
}

function showFieldValidationStatus(fname, reqObject)
{
    if (reqObject.readyState == 4) {
        if (reqObject.status == 200) {
            if (reqObject.responseText == "valid") {
                setFieldStatus(fname, 1);
            }
            else {
                setFieldStatus(fname, 2);
            }
        }
    }
}

function showSendStatus()
{
    var fname = 'sendmail';
    if (request.readyState == 4) {
        if (request.status == 200) {
            if (request.responseText == "valid") {
                setSendStatus(1);
            }
            else {
                setSendStatus(2);
                alert(request.responseText);
            }
        }
    }
}

function setFieldStatus(fname, status)
{
    var field = document.getElementById(fname);
    var fieldStatus = document.getElementById(fname + "Status");
    
    if (status == 1) {
        // everything is good. Show the success image
        fieldStatus.style.background = "url('assets/status3.gif') 0 -34px no-repeat";
        field.status = 1;
        setSubmitButtonState();
    }
    else if (status == 2) {
        // Error. Show the error image
        fieldStatus.style.background = "url('assets/status3.gif') 0 -52px no-repeat";
        field.status = 0;
        setSubmitButtonState();
    }
    else if (status == 0) {
        // Show the progress image
        fieldStatus.style.background = "url('assets/status3.gif') 0 -17px no-repeat";
        field.status = 0;
        setSubmitButtonState();
    }
}

function setSendStatus(status)
{
    var field = document.getElementById('sendmail');
    var fieldStatus = document.getElementById("sendmailStatus");
    
    if (status == 1) {
        // everything is good. Show the success image
        fieldStatus.style.background = "url('assets/status3.gif') 0 -34px no-repeat";
        
        // Now, if everything worked, let's call a function to disable the form fields
        // Otherwise, someone could send over and over again easily
        
        disableContactForm();
    }
    else if (status == 2) {
        // Error. Show the error image
        fieldStatus.style.background = "url('assets/status3.gif') 0 -52px no-repeat";
    }
    else if (status == 0) {
        // Show the progress image
        fieldStatus.style.background = "url('assets/status3.gif') 0 -17px no-repeat";
    }
}

function setSubmitButtonState() {
    if (document.getElementById("name").status == 1 &&
        document.getElementById("email").status == 1 && document.getElementById("comments").status == 1 ) {
          document.getElementById("sendmail").disabled = false;
          document.getElementById("sendmail").className = "formButton";
    }
    else {
        document.getElementById("sendmail").disabled = true;
        document.getElementById("sendmail").className = "formButtonDisabled";
    }
}

function disableContactForm() {
  document.getElementById("name").disabled = true;
  document.getElementById("email").disabled = true;
  document.getElementById("comments").disabled = true;
  //document.getElementById("signup").disabled = true;
  document.getElementById("sendmail").disabled = true;
  document.getElementById("sendmail").classname = "formButtonDisabled";
}

function SetMainCaption(title, desc, avail_sale, avail_prints) {
  var purchElem = document.getElementById('forSaleWrapper');
  var printsElem = document.getElementById('printsAvailWrapper');
  
  updateHTML("imageCaption", title);
  var purchaseString = "";
  
  if (desc != "") {
    desc = (desc.length > 64) ? desc.substr(0, 63) + "..." : desc;
    updateHTML("imageDesc", desc);
  }
  else {
    updateHTML("imageDesc", "");
  }
  
  if (avail_sale == 1) {
    purchElem.style.display = "inline";
  }
  else {
    purchElem.style.display = "none";
  }
  
  if (avail_prints == 1) {
    printsElem.style.display = "inline";
  }
  else {
    printsElem.style.display = "none";
  }
}

function updateHTML(elemID, data) {
  document.getElementById(elemID).innerHTML = data;
}

function loadFirstWorkshop(obj)
{
  obj.className = "selected";
  workshopID = obj.name;

  setWorkshopContentState(2);
  workshopUpdateRequest = createRequest();
  if (workshopUpdateRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url= "cpart_get_workshop_details.php?workshopID=" + workshopID;
    workshopUpdateRequest.open("POST", url, true);
    workshopUpdateRequest.onreadystatechange = function() { showWorkshopDetails('workshopDetailsContainer', workshopUpdateRequest); };
    workshopUpdateRequest.send(null);
  }
}

function updateWorkshopButtonClass(e) {
  // make all workshop buttons 'not' selected
  var workshopButtons = document.getElementById('workshopTitlesList').getElementsByTagName('a');
  for (var i = 0; i < workshopButtons.length; i++) {
    var currentButton = workshopButtons[i];
    currentButton.className = "normal";
  }  
  
  var workshopObj = getActivatedObject(e);
  workshopObj.className = "selected";
}

function updateWorkshopDetails(e) {
  var workshopObj = getActivatedObject(e);
  var workshopID = workshopObj.name;
 
  setWorkshopContentState(2);
  workshopUpdateRequest = createRequest();
  if (workshopUpdateRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url= "cpart_get_workshop_details.php?workshopID=" + workshopID;
    workshopUpdateRequest.open("POST", url, true);
    workshopUpdateRequest.onreadystatechange = function() { showWorkshopDetails('workshopDetailsContainer', workshopUpdateRequest); };
    workshopUpdateRequest.send(null);
  }
}

function setWorkshopContentState(displayState)
{
  if (displayState == 2) {
    document.getElementById('workshopDetailsContainer').style.display = 'none';
    document.getElementById('workshopLoadDetails').style.display = 'block';
    document.getElementById('workshopLoadError').style.display = 'none';
  }
  else if (displayState == 1) {
    document.getElementById('workshopDetailsContainer').style.display = 'block';
    document.getElementById('workshopLoadDetails').style.display = 'none';
    document.getElementById('workshopLoadError').style.display = 'none';
  }
  else {
    document.getElementById('workshopDetailsContainer').style.display = 'none';
    document.getElementById('workshopLoadDetails').style.display = 'none';
    document.getElementById('workshopLoadError').style.display = 'block';
  }
}

function showWorkshopDetails(divID, requestObject) {
  if (requestObject.readyState == 4) {
    if (requestObject.status == 200) {
      if (requestObject.responseText != "Error loading workshop data") {
        updateHTML('workshopDetailsContainer', requestObject.responseText);
        setWorkshopContentState(1);
      }
      else {
        updateHTML('workshopLoadError', requestObject.responseText);
        setWorkshopContentState(0);
      }
    }
  }
}

function loadFirstCategory(obj)
{
  obj.className = "selected";
  categoryID = obj.name;

  setPurchaseContentState(2);
  categoryUpdateRequest = createRequest();
  if (categoryUpdateRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url= "cpart_get_category_details.php?categoryID=" + categoryID;
    categoryUpdateRequest.open("POST", url, true);
    categoryUpdateRequest.onreadystatechange = function() { showCategoryDetails('categoryContentsWrapper', categoryUpdateRequest); };
    categoryUpdateRequest.send(null);
  }
}

function updateCategoryButtonClass(e) {
  // make all category buttons 'not' selected
  var categoryButtons = document.getElementById('categoriesWrapper').getElementsByTagName('a');
  for (var i = 0; i < categoryButtons.length; i++) {
    var currentButton = categoryButtons[i];
    currentButton.className = "normal";
  }  
  
  var categoryObj = getActivatedObject(e);
  categoryObj.className = "selected";
}

function updateCategoryDetails(e) {
  var categoryObj = getActivatedObject(e);
  var categoryID = categoryObj.name;
 
  setPurchaseContentState(2);
  categoryUpdateRequest = createRequest();
  if (categoryUpdateRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url= "cpart_get_category_details.php?categoryID=" + categoryID;
    categoryUpdateRequest.open("POST", url, true);
    categoryUpdateRequest.onreadystatechange = function() { showCategoryDetails('purchaseDetailsContainer', categoryUpdateRequest); };
    categoryUpdateRequest.send(null);
  }
}

function setPurchaseContentState(displayState)
{
  if (displayState == 2) {
    document.getElementById('purchaseDetailsContainer').style.display = 'none';
    document.getElementById('purchaseLoadDetails').style.display = 'block';
    document.getElementById('purchaseLoadError').style.display = 'none';
  }
  else if (displayState == 1) {
    document.getElementById('purchaseDetailsContainer').style.display = 'block';
    document.getElementById('purchaseLoadDetails').style.display = 'none';
    document.getElementById('purchaseLoadError').style.display = 'none';
  }
  else {
    document.getElementById('purchaseDetailsContainer').style.display = 'none';
    document.getElementById('purchaseLoadDetails').style.display = 'none';
    document.getElementById('purchaseLoadError').style.display = 'block';
  }
}

function showCategoryDetails(divID, requestObject) {
  if (requestObject.readyState == 4) {
    if (requestObject.status == 200) {
      if (requestObject.responseText != "Error loading category data") {
        updateHTML('purchaseDetailsContainer', requestObject.responseText);
        setPurchaseContentState(1);
      }
      else {
        updateHTML('purchaseLoadError', requestObject.responseText);
        setPurchaseContentState(0);
      }
    }
    else {
      updateHTML('purchaseLoadError', "Error loading products page");
      setPurchaseContentState(0);
    }
  }
}

// cross-browser function for creating event handlers
function addEventHandler (obj, eventName, handler)
{
  if (document.attachEvent) {
    obj.attachEvent("on" + eventName, handler);
  }
  else if (document.addEventListener) {
    obj.addEventListener(eventName, handler, false);
  }
}

// cross-browser function for getting an active object from an event
function getActivatedObject(e)
{
  var ojb;
  if (!e) {
    // early IE versions
    obj = window.event.srcElement;
  }
  else if (e.srcElement) {
    // IE 7
    obj = e.srcElement;
  }
  else {
    // Real browsers
    obj = e.target
  }
  
  return obj;
}

function findParentIDByClass(parentClassName, childObj) {
    var testObj = childObj.parentNode;
    while(testObj.className != parentClassName) {
        testObj = testObj.parentNode;
    }
    
    return testObj.getAttribute('id');
}

function findChildByClass(childClassName, parentObj) {
    var childNodes = parentObj.childNodes;
    for (var i = 0; i < childNodes.length; i++) {
      if (childNodes[i].className == childClassName) {
        return childNodes[i];
      }
    }
    
    return false;
}


// STORE FUNCTIONS
function addItemToCart(itemID) {
	document.getElementById("addItemOverlay").style.display = "block";
  	addToCart(itemID);
  	addToSessionCart(itemID);
}

function addToSessionCart(itemID) {
  addCartRequest = createRequest();
  if (addCartRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    //var itemID = getActivatedObject(e).id;
    // now we need our item Name
    var itemName = getItemName(itemID);
    //itemName = escape(itemName);
    
    var itemPrice = getItemPrice(itemID);
    
    var url= "cpart_add_to_cart.php?itemID=" + itemID + "&itemName=" + itemName + "&itemPrice=" + itemPrice;
    addCartRequest.open("POST", url, true);
    addCartRequest.onreadystatechange = function() { showAddToCartStatus(addCartRequest); };
    addCartRequest.send(null); 
  }  
}

function showAddToCartStatus(requestObject) {
  if (requestObject.readyState == 4) {
    if (requestObject.status == 200) {
    	document.getElementById("addItemOverlay").style.display = "none";
      	//alert(requestObject.responseText);
    }
  }  
}

function addToCart(itemID) {
  //var itemID = getActivatedObject(e).id;

  // now we need our item Name and Price
  var itemName = getItemName(itemID);
  var itemPrice = getItemPrice(itemID);
  
  var item = new itemEntry(itemID, itemName, itemPrice, 1);
  var isNew = true;

  // Add new item to cart or update quanity of existing items
  for (var entry in cartObj.items) {
    if (cartObj.items[entry].itemID == itemID) {
      cartObj.items[entry].quantity = parseInt(cartObj.items[entry].quantity) + 1;
      isNew = false;
    }
  }
  if (isNew) {
    cartObj.items.push(item);
  }
  //updateCartCount();
}

function addToCartFromSession(itemEntry) {
  cartObj.items.push(itemEntry);
}

// cart item constructor
function itemEntry(id, name, price, quantity) {
  this.itemID = id;
  this.itemName = name;
  this.itemPrice = price;
  this.quantity = quantity;
}

function updateCartCount() {
  var itemCount = 0;
  for (var item in cartObj.items) {
    itemCount += cartObj.items[item].quantity;
  }
  updateHTML("cartContentCount", parseInt(itemCount));
}

function getItemName(itemID) {
  var itemElem = document.getElementById("prod_" + itemID);
  var itemDetailsElem = findChildByClass("productDetails", itemElem);
  var itemNameElem = findChildByClass("productTitle", itemDetailsElem);
  return itemNameElem.firstChild.nodeValue;
}

function getItemPrice(itemID) {
  var itemElem = document.getElementById("prod_" + itemID);
  var itemDetailsElem = findChildByClass("productDetails", itemElem);
  var itemPriceElem = findChildByClass("productPrice", itemDetailsElem);
  var itemPrice = itemPriceElem.firstChild.nodeValue;

  // let's clean off that currency symbol and make this a real number
  itemPrice = itemPrice.substr(8);
  return parseFloat(itemPrice);
}

function viewCartContents() {
  setPurchaseContentState(2);
  
  viewCartRequest = createRequest();
  if (viewCartRequest == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url= "cpart_view_cart.php";
    viewCartRequest.open("POST", url, true);
    viewCartRequest.onreadystatechange = function() { showCartDetails('purchaseDetailsContainer', viewCartRequest); };
    viewCartRequest.send(null);
  }  
}

function showCartDetails(divID, requestObject) {
  if (requestObject.readyState == 4) {
    if (requestObject.status == 200) {
      if (requestObject.responseText != "Error loading cart data") {
        updateHTML('purchaseDetailsContainer', requestObject.responseText);
        setPurchaseContentState(1);
      }
      else {
        updateHTML('purchaseLoadError', requestObject.responseText);
        setPurchaseContentState(0);
      }
    }
    else {
      updateHTML('purchaseLoadError', "Error loading cart data");
      setPurchaseContentState(0);
    }
  } 
}

function updateViewCartButtonClass() {
  
}

function increaseItemQuantity(itemID) {
  // Not saving anything, just bumping the current value of the input field
  var inputElem = document.getElementById("prod_" + itemID);
  var curVal = parseInt(inputElem.value);
  // Do nothing if we have 99 in the cart already
  if (curVal < 99) {
    var newVal = curVal + 1;
    inputElem.value = newVal;    
  }
  return true;
}

function decreaseItemQuantity(itemID) {
  // Not saving anything, just bumping the current value of the input field
  var inputElem = document.getElementById("prod_" + itemID);
  var curVal = parseInt(inputElem.value);
  // Do nothing if we have 0 in the cart already
  if (curVal > 0) {
    var newVal = curVal - 1;
    inputElem.value = newVal;    
  }
  return true;
}

function updateCartContents() {
  // OK, we need to get all the items from the cart form and use their quantities to update
  // the cart object and session information
  var deleteArray = new Array();
  
  for (var i = 0; i < cartObj.items.length; i++) {
    var curItem;
    curItem = document.getElementById("prod_" + cartObj.items[i].itemID);
    
    // make a call to update the session cart
    updateSessionCart(cartObj.items[i].itemID, parseInt(curItem.value));

    // if the quantity is now 0, get rid of the element entirely
    // but not yet...or it will screw up the loop. Just save off the element number
    // so we can delete it later
    if (curItem.value == 0) {
      deleteArray.push(cartObj.items[i].itemID);
    }
    else {
      cartObj.items[i].quantity = parseInt(curItem.value); 
    }
  }
  // OK, now delete the elements that must be removed
  for (var i = 0; i < deleteArray.length; i++) {
      deleteItem(deleteArray[i]);
      //alert("deleted: " + deleteArray[i]);
  }
  
  // reload cart so we can see the updates
  setTimeout('viewCartContents()', 300);

  // update our cart count
  //updateCartCount();
}

function emptyCartContents() {
  // OK, we need to get all the items from the cart and set their quantities to 0
  var deleteArray = new Array();
  
  for (var i = 0; i < cartObj.items.length; i++) {
    var curItem;
    curItem = document.getElementById("prod_" + cartObj.items[i].itemID);
    
    // make a call to update the session cart
    updateSessionCart(cartObj.items[i].itemID, 0);

    // The quantity is now 0, get rid of the element entirely
    // but not yet...or it will screw up the loop. Just save off the element number
    // so we can delete it later
    deleteArray.push(cartObj.items[i].itemID);
  }
  // OK, now delete the elements that must be removed
  for (var i = 0; i < deleteArray.length; i++) {
      deleteItem(deleteArray[i]);
  }
  
  // reload cart so we can see the updates
  setTimeout('viewCartContents()', 300);

  // update our cart count
  //updateCartCount();
}

function deleteItem(itemID) {
  for (var i = 0; i < cartObj.items.length; i++) {
    if (cartObj.items[i].itemID == itemID) {
      cartObj.items.splice(i, 1);
    }
  }  
}

function updateSessionCart(itemID, itemQty) {
  window[itemID + "updateCartRequest"] = createRequest();
  if (window[itemID + "updateCartRequest"] == null) {
    alert("Unable to create request");
    return;
  }
  else {  
    var url= "cpart_update_cart.php?itemID=" + itemID + "&itemQty=" + parseInt(itemQty);
    window[itemID + "updateCartRequest"].open("POST", url, true);
    window[itemID + "updateCartRequest"].onreadystatechange = function() { showUpdateCartStatus(window[itemID + "updateCartRequest"]); };
    window[itemID + "updateCartRequest"].send(null); 
  }   
}

function showUpdateCartStatus(requestObject) {
  if (requestObject.readyState == 4) {
    if (requestObject.status == 200) {
      //alert(requestObject.responseText);
    }
  }  
}

function showLongDesc(parentID) {
  //var descImgElem = getActivatedObject(e);
  //var parentID = findParentIDByClass("productDetails", descImgElem);
  var parentDivElem = document.getElementById(parentID);
  var prodLinkElem = findChildByClass('productDescShow', parentDivElem);
  var productHideElem = findChildByClass('productDescHide', parentDivElem);
  var prodDescElem = findChildByClass('productLongDesc', parentDivElem);

  // change the display states
  prodLinkElem.style.display = "none";
  productHideElem.style.display = "block";
  prodDescElem.style.display = "inline";
}

function hideLongDesc(parentID) {
  //var descImgElem = getActivatedObject(e);
  //var parentID = findParentIDByClass("productDetails", descImgElem);
  var parentDivElem = document.getElementById(parentID);
  var prodLinkElem = findChildByClass('productDescShow', parentDivElem);
  var productHideElem = findChildByClass('productDescHide', parentDivElem);
  var prodDescElem = findChildByClass('productLongDesc', parentDivElem);

  // change the display states
  prodLinkElem.style.display = "block";
  productHideElem.style.display = "none";
  prodDescElem.style.display = "none";  
}

function viewPolicies() {
  target = "cpart_privacy.html";
  width = "600";
  height = "500";
  
  if (policyWin != null) {
    policyWin.close();
  }

  policyWin = window.open(target, "policies", "toolbar=0,directories=0,status=0,menubar=0,scrollbars=1,resiable=1,width=" + width + ",height=" + height);
  policyWin.resizeTo(width, height);
  policyWin.focus();
}

// Simple function to check whether a value exists in an array
function inArray(searchVal, searchArr) {
    var length = searchArr.length;
    for(var i = 0; i < length; i++) {
        if (searchArr[i].paramName == searchVal) return true;
    }
    return false;
}

function getGalleryEntries() {
  getGalleryReq = createRequest();
  if (getGalleryReq == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url= "gallery/galleries/galleries.xml";
    getGalleryReq.open("GET", url, true);
    getGalleryReq.onreadystatechange = function() { showGalleryDetails(getGalleryReq); };
    getGalleryReq.send(null);
  } 
}

function showGalleryDetails(reqObj) {
  if (reqObj.readyState == 4) {
    if (reqObj.status == 200) {
        var rd = reqObj.responseXML;
        var root = rd.getElementsByTagName("galleries")[0];
        var galleries = root.getElementsByTagName("gallery");
        for (var i = 0; i < galleries.length; i++) {
          var nameElem = galleries[i].getElementsByTagName("sitename")[0];
          var name = nameElem.firstChild.nodeValue;
          var base = galleries[i].getAttribute("base");
          var xmlFile = galleries[i].getAttribute("file");
          
          galObj[base] = {name:name, base: base, xmlFile:xmlFile};
          var galEnt = document.createElement("li");
          var galLink = document.createElement("a");
          galLink.className = "normal";
          galLink.src = "#";
          galLink.name = i;
          galLink.id = base;
          var galVal = document.createTextNode(name);
          galLink.appendChild(galVal);
          galEnt.appendChild(galLink);
          document.getElementById("catList").appendChild(galEnt);
          addEventHandler(document.getElementById(base), "click", loadGalleryData);
          addEventHandler(document.getElementById(base), "click", updateGalleryButtonClass);
        }
        loadGalleryData();
    }
    else {
      updateHTML('targetGallery', "Error loading galleries");
    }
  } 
}

function loadGalleryData(e) {
  var galID;
  if (e) {
    var obj = getActivatedObject(e);
    galID = obj.id;
  }
  else {
    // try to grab the 'first' gallery
    for (var x in galObj) {
      galID = galObj[x].base;
      
      // and set the link to an active class
      document.getElementById(galObj[x].base).className = "selected";
      break;
    }
  }
  
  getPhotosReq = createRequest();
  if (getPhotosReq == null) {
    alert("Unable to create request");
    return;
  }
  else {
    var url = "gallery/galleries/" + galObj[galID].base + "/" + galObj[galID].xmlFile;
    getPhotosReq.open("POST", url, true);
    getPhotosReq.onreadystatechange = function() { updateGalleryPhotos(getPhotosReq, galID); };
    getPhotosReq.send(null);
  } 
}

function updateGalleryPhotos(reqObj, base) {
  if (reqObj.readyState == 4) {
    if (reqObj.status == 200) {
        var rd = reqObj.responseXML;
        var root = rd.getElementsByTagName("gallery")[0];
        var photosRoot = root.getElementsByTagName("photos")[0];
        var path = "gallery/galleries/" + base + root.getElementsByTagName("large")[0].getAttribute("base");
        var photoElems = photosRoot.getElementsByTagName("photo");
        var containerElem = document.getElementById("items");
        containerElem.innerHTML = "";
        
        var cnt = 0;
        for (var i = 0; i <= (photoElems.length / 11); i++) {
          var divElem = document.createElement("div");
          divElem.id = "itemDiv_" + i;
          for (var j = 0; j < 11; j++) {
            if (photoElems[cnt]) {
              photo = photoElems[cnt];
              var imgElem = document.createElement("img");
              imgElem.style.width = "35px";
              imgElem.style.height = "26px";
              imgElem.src = path + photo.getAttribute("path");
              divElem.appendChild(imgElem);
            }
            cnt++;
          }
          
          containerElem.appendChild(divElem);
        }
        $(function() {     
        $(".scrollable").scrollable();
        var api = $(".scrollable").data("scrollable");
        api.begin(300);
        $(".items img").click(function() {
            // see if same thumb is being clicked
            if ($(this).hasClass("active")) { return; }
    
            var url = $(this).attr("src");
            var maxWidth = 450;
            var maxHeight = 320;
            //var width = $(this).width();    // Current image width
            //var height = $(this).height();  // Current image height
            var newWidth;
            var newHeight;
            var img = new Image();
            img.src = url;
            var width = img.width;    // Current image width
            var height = img.height;  // Current image height
            
            if (width > height) {
                newWidth = maxWidth;
                newHeight = ((height / width) * maxWidth);
                
                // Now, we need to see if the height is still greater than max height at this point
                if (newHeight > maxHeight) {
                    newWidth = ((newWidth / newHeight) * maxHeight);
                    newHeight = maxHeight;
                }
            }
            else {
                newHeight = maxHeight;
                newWidth = ((width / height) * maxHeight);
            }
            
            var imgElem = document.getElementById('image_wrap');
            imgElem.innerHTML = "";
            
            var htmlString = "<img src=\"" + url + "\" width=\"" + newWidth + "\" height=\"" + newHeight + "\"/>";
            imgElem.innerHTML = htmlString;
    
            $(".items img").removeClass("active");
            $(this).addClass("active");
    
        // when gallery loads simulate a "click" on the first image
        });
        var imgElem = document.getElementById('image_wrap');
        imgElem.innerHTML = "<img src=\"assets/galleryloader.gif\" style=\"border:0;outline:0;\">";
        setTimeout(function(){
            $(".items img").filter(":first").click();
          }, 1000);
    });
    }
    else {
      updateHTML('image_wrap', "Error loading photos");
    }
  } 
}

function updateGalleryButtonClass(e) {
  // make all gallery buttons 'not' selected
  var galleryButtons = document.getElementById('catList').getElementsByTagName('a');
  for (var i = 0; i < galleryButtons.length; i++) {
    var currentButton = galleryButtons[i];
    currentButton.className = "normal";
  }  
  
  var galleryObj = getActivatedObject(e);
  galleryObj.className = "selected";
}


