

//
// $Source: /ecomm/ColorWeb/WebContent/ctools/media/js/ctoolsFunctions.jsp,v $
// Color Tools global javascript
// 
function noop() {
}

function invXferDisableToAccountOnLoad() {
 for (var i=0; i < document.forms.length; i++) {
  if (document.forms[i].toCustomer) {
    document.forms[i].toCustomer.disabled=true;
    break;
  }
 }
}

function shippingInfoDisableFieldsOnLoad() {
 return;
 for (var i=0; i < document.forms.length; i++) {
  var f = document.forms[i];
  if (f.addressSelection) {
    var cbox = document.getElementById("addressSelection3");
    if (!cbox.checked) {
    	shippingInfoNewAddressSetDisabled(f, true);
    }
    shippingInfoChgbkSetDisabled(f, true);
    break;
  }
 }
}

function shippingInfoNewAddressSetDisabled(aForm, disabledP) {
    return;
    aForm.newLine1.disabled=disabledP;
    aForm.newLine2.disabled=disabledP;
    aForm.newCity.disabled=disabledP;
    aForm.newState.disabled=disabledP;
    aForm.newZip.disabled=disabledP;
    aForm.newCountry.disabled=disabledP;    
}

function shippingInfoChgbkSetDisabled(aForm, disabledP) {
 aForm.chargebackNumber.disabled=disabledP;
}

function getFormByActionName(aAction) {
 // Since there may be multiple forms in the document, we have
 // to loop & find the form with the given action in this document
 var f = null;
 for (i=0; i < document.forms.length; i++) {
   f = document.forms[i];
   if (f.action.indexOf(aAction) >= 0) {
	return f;
   }
 }
 return null;
}

function setFormElementsDisabled(aForm, aDisabledP, aElements) {
  // if the user did not specify any elements, assume all
  var elms = aElements;
  if (elms == null || elms.length <= 0) {
   elms = aForm.elements;
  }
  for (i=0; elms != null && i < elms.length; i++) {
       if (elms[i].type == "text" 
	|| elms[i].type == "radio"
	|| elms[i].type == "checkbox"
	|| elms[i].type == "textarea"
	|| elms[i].type == "textarea"
	|| elms[i].type == "select-one"
	|| elms[i].type == "select-multiple"
	) {
	elms[i].disabled=aDisabledP;
	}
   }
}

function viewOrderDisableFieldsOnLoad() {
 var action="/auth/ViewOrderSaveAction";
 var frm = getFormByActionName(action);
 // let the action pre-set a field, then apply it to all other fields in the form
 var editableP = frm.editable.value;
 var disabledP = true; 
 if (editableP) {
  disabledP = false;
 }
 // Set everything
 setFormElementsDisabled(frm, disabledP, null);
 var e = document.getElementById("newStatus");
 // special case: newStatus changed by admin only
 if (e != null) {
  if (frm.statusEditable.value == "true") {
   e.disabled = false;
  } else {
   e.disabled = true;
  }
 }
 //should not change some things after order has been sent
 var cs = document.getElementById("currentStatus");
 if (cs.value == "sw_sent"
    || cs.value == "fv_ship"
    || cs.value == "fv_wip")
 {
  var disabledFieldIds = ["billingName", "billingLine1", 
   "billingLine2", "billingCity", "billingState", "billingZip", 
   "billingCountry", "shippingName", "shippingAttn", "shippingPhone", "shippingEmail", 
   "shippingLine1", "shippingLine2", 
   "shippingCity", "shippingState", "shippingZip", 
   "shippingCountry", "shippingCarrier", "shippingServiceLevel", 
   "shippingChargebackNbr", "jobCode", "s0", "s1", "s2", "s3", "s4", "c0", "c1"];
  for (var i=0; i < disabledFieldIds.length; i++) {
   var e = document.getElementById(disabledFieldIds[i]);
   if (e != null) {
    e.disabled = true;
   }
  }
 }
}

function overridePopup(id) {
  var loc = "/resource/ctools/auth/AdminLoginAction.do;jsessionid=C0HKsGdmLarg6CzqUn-ICQ**.ecommServer1?adminTo=";
  loc = loc + id;
  window.opener.location = loc;  
  window.close();	
}

function fillInputPopup(id, customerName, inputField) {
  var fieldVal = id + " - " + customerName;
  window.opener.document.getElementById(inputField).value = fieldVal;
  window.close();
}

function openPopupWindow(url, width, height) {
  	wleft = (screen.width - width) / 2;
	wtop = (screen.height - height) / 2;
	var props = "resizable=yes,toolbar=no,menubar=no,status=yes,directories=no,location=no,scrollbars=yes,width=" + width + ",height=" + height + ",left=" + wleft + ",top=" + wtop;
	var popupWin = window.open(url, "popup", props);
}


function localResetForm(aForm) {
 var elms = aForm.elements;
 for (var i=0; elms && i < elms.length; i++) {
   if (elms[i]) {
    switch(elms[i].type) {
     case "text":
      elms[i].value = '';
      break;
     case "select-one":
      elms[i].selectedIndex = -1;
      break;
     case "select-multiple":
      for (var j=0; elms[i].options && j < elms[i].options.length; j++) {
        elms[i].options[j].selected = false;
      }
      elms[i].selectedIndex = -1;
      break;
     case "radio":
      elms[i].checked  = false;
      break;
     case "checkbox":
      elms[i].checked  = false;
      break;
    }
   }
 }
 return false;
}

/**
 * Determines if a form is dirty by comparing the current value of each element
 * with its default value.
 *
 * @param {Form} form the form to be checked.
 * @return {Boolean} true if the form is dirty, false otherwise.
 */
function formIsDirty(form)
{
    for (var i = 0; i < form.elements.length; i++)
    {
        var element = form.elements[i];
        var type = element.type;
        if (type == "checkbox" || type == "radio")
        {
            if (element.checked != element.defaultChecked)
            {
                return true;
            }
        }
        else if (type == "hidden" || type == "password" || type == "text" ||
                 type == "textarea")
        {
            if (element.value != element.defaultValue)
            {
                return true;
            }
        }
        else if (type == "select-one" || type == "select-multiple")
        {
            for (var j = 0; j < element.options.length; j++)
            {
                if (element.options[j].selected !=
                    element.options[j].defaultSelected)
                {
                    return true;
                }
            }
        }
    }
    return false;
}



function walkTheDOM(node, func) {
        func(node); 
        node = node.firstChild; 
        while (node) { 
            walkTheDOM(node, func); 
            node = node.nextSibling; 
        } 
}


function checkWarnCountryZip(c, z) {
 if (c && z) {
	 if (c.toLowerCase() == 'us' || c.toLowerCase() == 'united states') {
	 	if (z.toLowerCase().match(/[^0-9\-]/)) {
	 	  return "The zip code entered is not a valid US postal code. Check your postal/ZIP code and make sure you have selected the correct country.";
	 	}
	 }
 }
 return "";
}

function checkWarnColorNumbers(f) {
  var oChangedToK = false;
  for (var i=0; i < f.elements.length; i++) {
    if (f.elements[i].type == "text") {
      var curr = f.elements[i].value;
      var filt = colorNbrO2K(curr);
      if (curr != filt) {
        f.elements[i].value = filt;
        oChangedToK = true;
      }
    }
  }
  if (oChangedToK) {
    alert("All Oak color numbers now end with 'K' instead of 'O'.\nWe have changed the nubers for you automatically.");
  }
	return true;
}


function colorNbrO2K(cnbr) {
 if (!cnbr) return cnbr;

 var s = new String(cnbr);

 var ret = s;
 if (s.toLowerCase().match(/\d\d\d\do$/)) {
   ret = s.substring(0, s.length-1);
   ret += 'K';
 }
// alert(cnbr + " -> " + ret);
 return ret;
}


var ddmItemHighlight = false;

function hideDDM(mID) {
 ddmItemHighlight = false;
 var div = document.getElementById(mID);
 if (div) {
   div.style.display="none";
 }
 return true;
}

function showDDM(mID, x, y) {
 ddmItemHighlight = true;
 var div = document.getElementById(mID);
 if (div.style) {
   div.style.left=x;
   div.style.top=y;
   div.style.display="block";
 } 
 return true;
}

function highlightDDMItem(aID) {
 if (ddmItemHighlight) {
	 var item = document.getElementById(aID);
	 if (item) {
	 	item.style.backgroundColor="#eaa";
	 }
 }
}

function unhighlightDDMItem(aID) {
 if (ddmItemHighlight) {
	 var item = document.getElementById(aID);
	 if (item) {
	 	item.style.backgroundColor="#e9f4f7";
	 }
 }
}

