function addtnlItems(){
  var upgrades = document.getElementById("productUpgrades");
  if(upgrades){
    var theForm = document.getElementById("addform");
    addtnlItems = document.createElement('input');
    addtnlItems.name = "upsoldProductIds";
    upgradesChosen = upgrades.getElementsByTagName("input");
    for(var x = 0; x < upgradesChosen.length; x++){
      if(upgradesChosen[x].checked){
        if(addtnlItems.value != ""){
        addtnlItems.value  = addtnlItems.value + "," + upgradesChosen[x].value;
        }else{
          addtnlItems.value  = upgradesChosen[x].value;
        } 
      }
    }
    theForm.appendChild(addtnlItems);  
  }
}
 
function verifyUpsoldIds(){
  var upsoldProductIds  = document.getElementsByName("upsoldProductIds");
  var areAllUpsoldProductsOrderedCorrectly = true;
  if(upsoldProductIds.length > 0 && isAnyUpsoldProductSelected()) {

  for(var x = 0; x < upsoldProductIds.length; x++){
    if(upsoldProductIds[x].checked){
      if(upsoldProductIds[x].value == "" ){
        areAllUpsoldProductsOrderedCorrectly = false;
      }
    }    
  }
  if(areAllUpsoldProductsOrderedCorrectly) {
     /*if(!isProductSelected()){
       if ( !window.confirm( fixHTMLEntities(productSummaryCms['product.javascript.verifyAmount.1.3.error'])  ) ) {
        return false;
       }
     }*/ /* DON'T DELETE, Only removed temporarily */	
     
  } else {
    alert(fixHTMLEntities(productSummaryCms['product.javascript.addItem.error']));	
    return false;
  }
  }
  return true;
}

function isProductSelected(){
  var productChkBox  = document.getElementsByName("Product_ChkBox")[0];
  return productChkBox.checked;
}

function isAnyUpsoldProductSelected(){
  var uplsoldProductIds  = document.getElementsByName("upsoldProductIds");
  for(var x = 0; x < uplsoldProductIds.length; x++){
    if(uplsoldProductIds[x].checked){
	return true;
    }    
  }
  return false;	

}

function verifyAttributes() {
  var div = document.getElementById('productAttributesDiv');
  if ( !div ) return true;
  var elements = div.getElementsByTagName('TEXTAREA');
  for ( var i = 0; i < elements.length; i++ ) {
    if ( elements[i].value.trim() == '' ) {
      alert(fixHTMLEntities(productSummaryCms['product.javascript.addItem.error']));
      return false;
    }
  }
  return true;
}

function addTo( theForm, action, id ) {
  if ( verifyAmountById( id ) ) {
    if ( addToGlobals.purchaseStateIsCheckout ) { 
      disableAddToButtons(theForm);
      location.replace("javascript: " + submitname); // this is to keep people from going back to add more gifts.
    } else {
      theForm.action = action;
      if ( verifyAttributes() ) {
        if ( document.addform ) {
          if ( (document.addform.add_product_id.value == '' || document.addform.add_product_id.value == 'NULL' ) && parseInt( document.addform.quantity.value ) > 0 ) {
            alert(fixHTMLEntities(productSummaryCms['product.javascript.addItem.error']));
            return;
          }
        }
        if ( typeof validateOnSubmit != 'function' || validateOnSubmit(theForm) ) {
          addtnlItems();
          if(verifyUpsoldIds()) {
            disableAddToButtons(theForm);
            theForm.submit();
          }
        }
      }
    }
  }
}
  
function disableAddToButtons(theForm) {
  var formElements = theForm.elements;
  for (i = 0; i < formElements.length; i++) {
    if ( formElements[i].type == 'button' ) {
      formElements[i].disabled = true;
    }
  }
}

function verifyAmountById( id ) {
  amt = document.getElementById(id).value;
  if ( parseInt( amt ) == 0 ) {
    if(!isProductSelected() && !isAnyUpsoldProductSelected()){
      window.alert( fixHTMLEntities(productSummaryCms['product.javascript.addItem.nothing']) );
      return false;
    }
  }
  if ( parseInt( amt ) > 500 ) {
    if ( !window.confirm( fixHTMLEntities(productSummaryCms['product.javascript.verifyAmount.1.1.error'] + amt + ' ' + productSummaryCms['product.javascript.verifyAmount.1.2.error'] + '?' )) ) {
      return false;
    }
  }
  return true;    
}


/* This function is to fix the problem of html entities such as trademarks (&trade;) not rendering.  
For some reason, adding the text to a DOM Node and then retrieving it again causes it to display correctly
in an alert box. */
function fixHTMLEntities(text){
    var message = document.createElement("P");
    message.innerHTML = text;
    message.id = "temporaryNode";
    fixedText = message.innerHTML;
    
    return fixedText;
}
