function com_stewartspeak_replacement() {
  /*
    Dynamic Heading Generator
    By Stewart Rosenberger
    http://www.stewartspeak.com/headings/

    This script searches through a web page for specific or general elements
    and replaces them with dynamically generated images, in conjunction with
    a server-side script.
  */

  // replaceSelector(selector, phpfile, wordwrap, fontfile, size, background, foreground, store)
  // replaceSelector("h4","/services/heading.php",false,"font.ttf","12","FFFFFF","999999","build200501");

  var testURL = "/images/test.png" ;
  var doNotPrintImages = false;
  var printerCSS = "/replacement-print.css";
  var hideFlicker = false;
  var hideFlickerCSS = "/replacement-screen.css";
  var hideFlickerTimeout = 1000;

  /* ---------------------------------------------------------------------------
      For basic usage, you should not need to edit anything below this comment.
      If you need to further customize this script's abilities, make sure
      you're familiar with Javascript. And grab a soda or something.
  */

  var items;
  var imageLoaded = false;
  var documentLoaded = false;

  function replaceSelector(selector,url,wordwrap,font,size,foreground,background,store) {
    if(typeof items == "undefined") {
      items = new Array();
    }
    items[items.length] = {selector: selector, url: url, wordwrap: wordwrap, font: font, size: size, foreground: foreground, background: background, store: store};
  }

  if(hideFlicker) {    
    document.write('<link id="hide-flicker" rel="stylesheet" media="screen" href="' + hideFlickerCSS + '" />');    
    window.flickerCheck = function() {
      if(!imageLoaded) {
        setStyleSheetState('hide-flicker',false);
      }
    };
    setTimeout('window.flickerCheck();',hideFlickerTimeout)
  }

  if(doNotPrintImages) {
    document.write('<link id="print-text" rel="stylesheet" media="print" href="' + printerCSS + '" />');
  }

  var test = new Image();
  test.onload = function() { imageLoaded = true; if(documentLoaded) replacement(); };
  test.src = testURL + "?date=" + (new Date()).getTime();

  addLoadHandler(function(){ documentLoaded = true; if(imageLoaded) replacement(); });


  function documentLoad() {
    documentLoaded = true;
    if(imageLoaded) {
      replacement();
    }
  }

  function replacement() {
    if(items) {
      for(var i=0;i<items.length;i++) {
        var elements = getElementsBySelector(items[i].selector);
        if(elements.length > 0) for(var j=0;j<elements.length;j++) {
          if(!elements[j]) {
            continue;
          }

          var text = extractText(elements[j]);
          while(elements[j].hasChildNodes()) {
            elements[j].removeChild(elements[j].firstChild);
          }

          var tokens = items[i].wordwrap ? text.split(' ') : [text] ;
          for(var k=0;k<tokens.length;k++) {
            var url = items[i].url + "?text="+ escape(tokens[k]+' ')+ "&selector="+ escape(items[i].selector)+ "&font="+ escape(items[i].font)+ "&size="+ escape(items[i].size)+ "&foreground="+ escape(items[i].foreground)+"&background="+ escape(items[i].background)+ "&store="+escape(items[i].store);
            var image = document.createElement("img");
            image.className = "replacement";
            image.alt = tokens[k] ;
            image.src = url;
            elements[j].appendChild(image);
          }

          if(doNotPrintImages) {
            var span = document.createElement("span");
            span.style.display = 'none';
            span.className = "print-text";
            span.appendChild(document.createTextNode(text));
            elements[j].appendChild(span);
          }
        }
      }

      if(hideFlicker) {
        setStyleSheetState('hide-flicker',false);
      }
    }
  }

  function addLoadHandler(handler) {
    if(window.addEventListener) {
      window.addEventListener("load",handler,false);
    } else if(window.attachEvent) {
      window.attachEvent("onload",handler);
    } else if(window.onload) {
      var oldHandler = window.onload;
      window.onload = function piggyback() {
        oldHandler();
        handler();
      };
    } else {
      window.onload = handler;
    }
  }

  function setStyleSheetState(id,enabled) {
    var sheet = document.getElementById(id);
    if(sheet) {
      sheet.disabled = (!enabled);
    }
  }

  function extractText(element) {
    if(typeof element == "string") {
      return element;
    } else if(typeof element == "undefined") {
      return element;
    } else if(element.innerText) {
      return element.innerText;
    }

    var text = "";
    var kids = element.childNodes;
    for(var i=0;i<kids.length;i++) {
      if(kids[i].nodeType == 1) {
        text += extractText(kids[i]);
      } else if(kids[i].nodeType == 3) {
        text += kids[i].nodeValue;
      }
    }

    return text;
  }

  /*
    Finds elements on page that match a given CSS selector rule. Some
    complicated rules are not compatible.
    Based on Simon Willison's excellent "getElementsBySelector" function.
    Original code (with comments and description):
    http://simon.incutio.com/archive/2003/03/25/getElementsBySelector
  */
  function getElementsBySelector(selector) {
    var tokens = selector.split(' ');
    var currentContext = new Array(document);
    for(var i=0;i<tokens.length;i++) {
      token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');
      if(token.indexOf('#') > -1) {
        var bits = token.split('#');
        var tagName = bits[0];
        var id = bits[1];
        var element = document.getElementById(id);
        if(tagName && element.nodeName.toLowerCase() != tagName)
          return new Array();
        currentContext = new Array(element);
        continue;
      }
      if(token.indexOf('.') > -1) {
        var bits = token.split('.');
        var tagName = bits[0];
        var className = bits[1];
        if(!tagName) {
          tagName = '*';
        }

        var found = new Array;
        var foundCount = 0;
        for(var h=0;h<currentContext.length;h++) {
          var elements;
          if(tagName == '*') {
            elements = currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
          } else {
            elements = currentContext[h].getElementsByTagName(tagName);
          }
          for(var j=0;j<elements.length;j++) {
            found[foundCount++] = elements[j];
          }
        }

        currentContext = new Array;
        var currentContextIndex = 0;
        for(var k=0;k<found.length;k++) {
          if(found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {
            currentContext[currentContextIndex++] = found[k];
          }
        }
        continue;
      }

      if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
        var tagName = RegExp.$1;
        var attrName = RegExp.$2;
        var attrOperator = RegExp.$3;
        var attrValue = RegExp.$4;
        if(!tagName) {
          tagName = '*';
        }

        var found = new Array;
        var foundCount = 0;
        for(var h=0;h<currentContext.length;h++) {
          var elements;
          if(tagName == '*') {
            elements = currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
          } else {
            elements = currentContext[h].getElementsByTagName(tagName);
          }

          for(var j=0;j<elements.length;j++) {
            found[foundCount++] = elements[j];
          }
        }

        currentContext = new Array;
        var currentContextIndex = 0;
        var checkFunction;
        switch(attrOperator) {
          case '=':
            checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
          break;
          case '~':
            checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
          break;
          case '|':
            checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
          break;
          case '^':
            checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
          break;
          case '$':
            checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
          break;
          case '*':
            checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
          break;
          default :
            checkFunction = function(e) { return e.getAttribute(attrName); };
          break;
        }

        currentContext = new Array;
        var currentContextIndex = 0;
        for(var k=0;k<found.length;k++) {
          if(checkFunction(found[k])) {
            currentContext[currentContextIndex++] = found[k];
          }
        }
        continue;
      }

      tagName = token;
      var found = new Array;
      var foundCount = 0;
      for(var h=0;h<currentContext.length;h++) {
        var elements = currentContext[h].getElementsByTagName(tagName);
        for(var j=0;j<elements.length; j++) {
          found[foundCount++] = elements[j];
        }
      }

      currentContext = found;
    }

    return currentContext;
  }
}

// end of scope, execute code
if(document.createElement && document.getElementsByTagName && !navigator.userAgent.match(/opera\/?6/i)) {
  com_stewartspeak_replacement();
}

// Used for search by rating and search by price menus.
function go(form) {
   window.location = form.range.options[form.range.selectedIndex].value;
}

// Standard preload function
function preload_images () {
  var d = document;
  if (!d.imgs) { d.imgs = new Array(); }
  var j = d.imgs.length, args = preload_images.arguments, i;
  for (i = 0; i < args.length; i++) {
    d.imgs[j] = new Image;
    d.imgs[j].src = args[i];
    j++;
  }
}

// Standard bookmark function
function bookmark(title) {
  var urlAddress = location.href;
  var pageName = title;
  var browser = navigator.appName;
  if (browser == 'Microsoft Internet Explorer') {
    window.external.AddFavorite(urlAddress,pageName)
  } else if (browser == 'Netscape') { 
    alert("Your browser does not support this feature.  Use CTRL-D to bookmark this page");
  } else { 
   alert("Your browser does not support this feature.");
  }
}

/* The functions below are cookie functions which can be used for anything site-wide but
   are intended (at the moment) to be used for the dynamic cart quantities */

function getCookie(Name) {
  var search = Name + "=";
  var returnvalue = "";
  if(document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    // if cookie exists
    if(offset != -1) { 
      offset += search.length
    }
    // set index of beginning of value
    end = document.cookie.indexOf(";", offset);
    // set index of end of cookie value
    if(end == -1) {
      end = document.cookie.length;
    }
    returnvalue=unescape(document.cookie.substring(offset, end))
  }
  return returnvalue;
}

function setCookie(name,num) {
 //set document cookie
 document.cookie=name+"="+num;
}

function isCookied(name,num) {
 if (getCookie(name)!=num) {
  return true;
 } else {
  return false;
 }
}

/* End Cookie Functions */

/* Dynamic Quantities JavaScript Below */

function priceChange(id,oper,num) {
 // Price Change v1.2:
 // id = the id of the product (so we know what qty box and price to update).
 // oper = what operation to use: dynamic:add:sub:dropdown
 // num = the original price of the product
 //
 // --[ Revisions ]--
 // 20050603 - v1 - Original Script Creation ~Michael@ColorMaria
 // 20050620 - v1.1 - Modified Script to Support Drop-Down Quantity Boxes ~Michael@ColorMaria
 // 20051215 - v1.2 - Added a fix for commas.
 /////////////////////////////////////////////////////////////////////////////////////////////

  if(oper == 'dynamic') {
    // Get the qty value:
    var num2 = 0;
    var qty = document.getElementById('qty_' + id).value;
    // Make sure they didn't go below 1:
    if(qty < 1 || qty == '') {
      document.getElementById('price_' + id).value = '$' + num;
    } else {
      // If they're above one or at 1, do the math for the price:
      num2 = num.replace(',','') * document.getElementById('qty_' + id).value;
      document.getElementById('price_' + id).value = '$' + num2.toFixed(2);
    }
  }
  if(oper == 'add') {
    // Increment the qty box:
    ++document.getElementById('qty_' + id).value;
    // Set qty equal to the new value:
    var qty = document.getElementById('qty_' + id).value;
    if(qty < 1) {
      // Probably not gonna happen, but just in case:
      document.getElementById('qty_' + id).value = '1';
      document.getElementById('price_' + id).value = '$' + num;
    } else {
      // Do the math for the new price:
      num2 = num.replace(',','') * document.getElementById('qty_' + id).value;
      document.getElementById('price_' + id).value = '$' + num2.toFixed(2);
    }
  }
  if(oper == 'sub') {
    // Decrement the value of the qty box:
    --document.getElementById('qty_' + id).value;
    // Set qty = to the new value:
    var qty = document.getElementById('qty_' + id).value;
    if(qty < 1) {
      // Set qty back to 1 if they try to go below 1:
      document.getElementById('qty_' + id).value = '1';
      document.getElementById('price_' + id).value = '$' + num;
    } else {
      // If they're above one or at 1 then do the math for the price:
      num2 = num.replace(',','') * document.getElementById('qty_' + id).value;
    }
  }
  if(oper == 'dropdown') {
    // Set qty = to the new value:
    var qty = document.getElementById('qty_' + id).value;
    if(qty < 1) {
      // Not sure how this will happen, but you never know:
      document.getElementById('qty_' + id).value = '1';
      document.getElementById('price_' + id).value = '$' + num;
    } else {
      // If they're above one or at 1 then do the math for the price:
      num2 = num.replace(',','') * document.getElementById('qty_' + id).value;
    }
  }
  // Some people like to do weird things, like enter letters for a quantity amount, let's not let them:
  if(num2 != '') {
    if(!isNaN(num2)) {
      // if num wasn't NaN then a letter wasn't entered
      document.getElementById('price_' + id).value = '$' + num2.toFixed(2);
    } else {
      // if num was NaN, fix it.
      document.getElementById('price_' + id).value = '$' + num;
      document.getElementById('qty_' + id).value = '';
    }
  }
}

function cartChange(id,num,qty,total) {
 // Cart Change v1.4:
 // id = an id to represent the price and qty (so we know what qty box and price to update).
 // num = the original cost of the item(s) (if there were 3x a 10-dollar item, num would = 30.00).
 // qty = the original quantity that existed in the cart before modification
 // total = the original total of the cart items before modification.
 // 
 // --[ Revisions ]--
 // 20050620 - Original Script Creation ~Michael@ColorMaria
 // 20050629 - Added a line to change the color of the update cart message ~Michael@ColorMaria
 // 20050705 - Added code (accompanied by cookies) to check the quantities of items in the cart
 //          - to see whether they match what the user entered for better checking to see if 
 //          - the update cart button needs to be pressed.
 //          - 
 //          - Please note: This update requires the cookie functions above the priceChange
 //          - function. ~Michael@ColorMaria
 // 20050722 - Added error handling for NaN errors.
 // 20051215 - Fixed a bug with commas
 ///////////////////////////////////////////////////////////////////////////////////////////////
 // Setup our Variables:
  var num2 = 0;
  var qty2 = document.getElementById('qty_' + id).value;
  if(isNaN(qty2)) { // If qty2 isNaN that means someone's made a typo and hit a letter or other non-number key
    document.getElementById('qty_' + id).value = '';
    qty2 = '';
  }
  var num3 = document.getElementById('price_' + id).value.split("$");
  var num3 = num3[1].replace(',','');
  // Check to see if we're dividing by 0:
  if(qty != '0' || !qty) {
    // If not, get the real price (rPrice):
    var rPrice = num.replace(',','') / qty;
  } else {
    // If we are, set the total price for that item to 0:
    document.getElementById('price_' + id).value = '$0.00';
  }
  // Setup our new prices:
  num2 = (rPrice * qty2);
  document.getElementById('price_' + id).value = '$' + num2.toFixed(2);
  // We gotta do this differently depending on if the total we're modifying 
  // is the REAL total or if it's one that was previously modified.
  if(total == document.getElementById('total').value) {
    // If we are modifying the current REAL total, do it this way:
    // Figure out what total would be if the item we're modifying didn't exist.
    total = total - num3;
    // Add the new value to the total:
    total = total + num2;
    document.getElementById('total').value = '$' + total.toFixed(2);
  } else {
    // Setup our fake_total variable so we can essentially do the same 
    // thing we did with the real total
    var fake_total = document.getElementById('total').value.split("$");
    fake_total = fake_total[1].replace(',','');
    // Figure out what the total would be without this product.
    total = fake_total - num3;
    // Readd the new value to the total.
    total = total + num2;
    document.getElementById('total').value = '$' + total.toFixed(2);
  }
  // Just in case they think this will automagically update the real prices for them,
  // setup a fail safe the function below will read and evaluate:
  var nQty = getCookie('quantities');
  arQty = nQty.split('|');
  // Note: the last element of the array will be empty, so ignore it.
  cntQty = arQty.length - 1;
  for(i=0;i<cntQty;i++) {
    arID = arQty[i].split(','); // Hoo Hoo (owl)
    if(document.getElementById('qty_'+arID[0]).value == arID[1]) {
      // It equals the default quantity, yay! No need to update cart.
      document.getElementById('hasUpdated').value = '1';
      // Change the color of the update cart message.
      document.getElementById('update_msg').style.color = '#000';
      continue;
    } else {
      // It doesn't, they need to update.  No need to check further since if one hasn't been updated
      // the whole cart needs to be updated.
      document.getElementById('hasUpdated').value = '0';
      // Change the color of the update cart message so it stands out after a change to the qty is made.
      document.getElementById('update_msg').style.color = '#F00';
      // Break the loop.
      break;
    }
  }
}

function hasUpdated() {
 // Small function to verify that the cart has been updated
 // before checking out or using the continue shopping button.
 //
 // 20060403 - Added fix for when 'hasUpdated' doesn't exist. ~Michael
 ///////////////////////////////////////////////////////////////
  if(typeof document.getElementById('hasUpdated') != 'undefined') {
    var hUpdated = document.getElementById('hasUpdated').value;
    if(hUpdated != '1') {
      alert('You have not updated your cart since last changing your quantities.\nPlease press the \'Update Cart\' button before continuing.');
      return false;
    }
  }
}

/* ** END Dynamic Quantities JS ** */


/* ***************************************
   * verifyRecipients() function.        *
   * Checks the checkout_shippingdetail  *
   * page to ensure that a shipping      *
   * recipient was chosen for each       *
   * product and that there weren't any  *
   * missed recipients.  If gives the    *
   * customer the option of ignoring     *
   * missed ship-tos since that doesn't  *
   * break the checkout it just causes   *
   * blank spaces in some spots.         *
   *                                     *
   * ~Michael - 20060111                 *
   *************************************** */

function verifyRecipients(theForm) {
  var intLength = theForm.length;            // Grab the total length of the form.
  var firstStep = 1, shipTos = new Array();  // Initialize a couple vars to be used later.
  for(var i=0;i<intLength;i++) {             // Loop through the form elements.
    if(firstStep && theForm.elements[i].name.substr(0,4) == 'recp') {
      // If it's the first dropdown setup the number of ship-tos it contains to compare later
      var numShipTos = +theForm.elements[i].options.length - 1;
      // Turn this off so it doesn't repeat this step (it won't hurt anything but would waste processing power).
      firstStep = 0;
    }
    if(theForm.elements[i].name.substr(0,4) == 'recp' && theForm.elements[i].value == '') {
      // If we encounter a dropdown that hasn't had a ship-to selected..
      alert('You must choose a recipient for each of the products you are purchasing.');
      return false;
    } else if (theForm.elements[i].name.substr(0,4) == 'recp') {
      // Otherwise add the item to an array to compare later.
      var shipTo = theForm.elements[i].selectedIndex;
      if(!in_array(shipTo, shipTos)) {
        // If the ship-to isn't in the array already, add it.
        var stLen = shipTos.length;
        shipTos.push(shipTo);
      }
    }
  }
  if(shipTos.length != numShipTos) {
    // If the # of ship-tos in the array don't match the number of ship-tos that exist, prompt the user
    var verifyShipTos = confirm("Some of your shipping address do not have products assigned to them.\n\nDo you wish to continue anyway?");
    if(verifyShipTos) {
      // User says it's OK
      return true;
    } else {
      // User says it's not OK
      return false;
    }
  }
  // If we've gotten this far, everything on the form has checked out OK.
  return true;
}

/* ***************************************
   * in_array() function for JS.         *
   * Works the same as the PHP function. *
   *                                     *
   * ~Michael - 20060111                 *
   * ~Michael - Fixed undefined vars     *
   *            20060111                 *
   *************************************** */

function in_array(needle, haystack) {
  if(typeof needle == undefined) {
    // If needle is undefined:
    alert("Needle is undefined.\nError: in_array");
    return false;
  } else if(typeof haystack == undefined) {
    alert("Needle is undefined.\nError: in_array");
    return false;
  }
  for(i=0,n=haystack.length;i<n;i++) {
    // Loop through the array.
    if(haystack[i] == needle) {
      // If the needle was found:
      return true;
    }
  }
  // If the code reaches this point, needle wasn't found:
  return false;
}

/* ************************
   * noHammer() function  *
   * Prevents form submit *
   * button hammering.    *
   *                      *
   * ~Michael - 20060403  *
   ************************ */

function noHammer(theForm) {
  if(typeof theForm.submit != 'undefined') {
    theForm.submit.disabled = true;
    theForm.submit.value = 'Wait...';
    return true;
  }
}

/* ************************
   * validateForgotForm() *
   * Checks for a valid   *
   * email before submit  *
   *                      *
   * ~Michael - 20060905  *
   ************************ */
function validateForgotForm(theForm) {
  var theEmail=theForm.email;
  var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
  if((theEmail.value==null)||(theEmail.value=="")) {
    document.getElementById('errorMsg').innerHTML="<br />Please enter a valid e-mail address before continuing.";
    theEmail.focus();
    return false;
  } else {
    if(!filter.test(theEmail.value)) {
      document.getElementById('errorMsg').innerHTML="<br />Please enter a valid e-mail address before continuing.";
      theEmail.value="";
      theEmail.focus();
      return false;
    }
  }
  return true;
}

//////////////////////////////////////////////////////////////////////////////////////////
// DreamWeaver's functions.

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// End DreamWeaver's functions.
//////////////////////////////////////////////////////////////////////////////////////////

var arCodes = new Array();
arCodes[1] = '010-029::Apr 19';
arCodes[2] = '030-059::Apr 26';
arCodes[3] = '060-069::Apr 19';
arCodes[4] = '070-104::Apr 12';
arCodes[5] = '105-127::Apr 12';
arCodes[6] = '128-149::Apr 19';
arCodes[7] = '150-188::Apr 12';
arCodes[8] = '189-196::Apr 5';
arCodes[9] = '197-232::Apr 12';
arCodes[10] = '233-241::Mar 15';
arCodes[11] = '242-252::Mar 29';
arCodes[12] = '253-269::Apr 12';
arCodes[13] = '270-285::Feb 22';
arCodes[14] = '286-289::Mar 1';
arCodes[15] = '290-292::Feb 8';
arCodes[16] = '293::Feb 22';
arCodes[17] = '294-298::Feb 8';
arCodes[18] = '299::Feb 1';
arCodes[19] = '300-304::Feb 15';
arCodes[20] = '305::Feb 22';
arCodes[21] = '306-319::Feb 1';
arCodes[22] = '320-329::Jan 11';
arCodes[23] = '330-349::Dec 14';
arCodes[24] = '350-369::Feb 8';
arCodes[25] = '370-389::Feb 22';
arCodes[26] = '390-399::Feb 8';
arCodes[27] = '400-429::Mar 15';
arCodes[28] = '430-433::Apr 12';
arCodes[29] = '434-443::Mar 29';
arCodes[30] = '444-495::Apr 5';
arCodes[31] = '496-499::Apr 26';
arCodes[32] = '500-534::Apr 5';
arCodes[33] = '535-543::Apr 19';
arCodes[34] = '544-548::Apr 26';
arCodes[35] = '549-579::Apr 19';
arCodes[36] = '580-599::Apr 26';
arCodes[37] = '600-617::Apr 5';
arCodes[38] = '618-632::Mar 22';
arCodes[39] = '633-635::Mar 22';
arCodes[40] = '636-643::Mar 15';
arCodes[41] = '644-646::Mar 22';
arCodes[42] = '647-659::Mar 8';
arCodes[43] = '660-669::Mar 22';
arCodes[44] = '670-679::Mar 22';
arCodes[45] = '680-699::Mar 29';
arCodes[46] = '700-715::Jan 19';
arCodes[47] = '716-719::Feb 8';
arCodes[48] = '720-725::Feb 15';
arCodes[49] = '726-729::Feb 22';
arCodes[50] = '730-736::Feb 15';
arCodes[51] = '737-746::Feb 22';
arCodes[52] = '747-749::Feb 1';
arCodes[53] = '750-769::Jan 18';
arCodes[54] = '770-789::Dec 14';
arCodes[55] = '790-794::Feb 15';
arCodes[56] = '795-799::Feb 1';
arCodes[57] = '800-808::Apr 19';
arCodes[58] = '809-810::Apr 5';
arCodes[59] = '811-812::May 10';
arCodes[60] = '813-815::Apr 19';
arCodes[61] = '816-839::Apr 19';
arCodes[62] = '840-849::Mar 29';
arCodes[63] = '850-858::Jan 11';
arCodes[64] = '859-864::Feb 15';
arCodes[65] = '865-869::Feb 22';
arCodes[66] = '870-874::Mar 22';
arCodes[67] = '875-877::Apr 12';
arCodes[68] = '878-883::Feb 8';
arCodes[69] = '884-889::Mar 29';
arCodes[70] = '890-892::Jan 25';
arCodes[71] = '893-899::Mar 15';
arCodes[72] = '900-935::Dec 14';
arCodes[73] = '936-955::Jan 26';
arCodes[74] = '956-969::Feb 8';
arCodes[75] = '970-975::Feb 22';
arCodes[76] = '976-979::Apr 12';
arCodes[77] = '980-986::Mar 15';
arCodes[78] = '987-994::Mar 22';
arCodes[79] = '995-999::May 10'; // May 10

function setShipDate(theForm) {
  for (var i=1,n=arCodes.length;i<n;i++) {
    var zip = theForm.s_zip1.value;
    var pZip = zip.substr(0,3);
    var tmpItems = arCodes[i].split('::');
    var dte = tmpItems[1];
    var tmpItems = tmpItems[0].split('-');
    var low = tmpItems[0];
    var high = tmpItems[1];
    if(pZip >= low && pZip <= high) {
       if(dte.length == 5) {
         var zero = '0';
       } else {
         var zero = '';
       }
       dte = dte.replace('Oct ','10-'+zero);
       dte = dte.replace('Dec ','12-'+zero);
       dte = dte.replace('Jan ','01-'+zero);
       dte = dte.replace('Feb ','02-'+zero);
       dte = dte.replace('Mar ','03-'+zero);
       dte = dte.replace('Apr ','04-'+zero);
       dte = dte.replace('May ','05-'+zero);
       if(dte.substr(0,2) == '12' || dte.substr(0,2) == '10') {
         var sDate = '2009-';
       } else {
         var sDate = '2010-';
       }
       var theDate = sDate + dte;
       break;
    }
  }
  var tDate = new Date();
  var d = String(tDate.getDate());
  var d = tDate.getDate();
  d = (d.length == 1) ? "0"+d : d;
  var m = tDate.getMonth() + 1;
  m = (String(m).length == 1) ? "0"+m : m;
  var y = tDate.getFullYear();
  var tmpItems = theDate.split('-');
  var ty = tmpItems[0];
  var tm = tmpItems[1];
  var td = tmpItems[2];
  var sDate = ty+tm+td;
  
  var tDate = y+m+d;
  if (parseInt(sDate) < parseInt(tDate)) {
    theForm.s_shipon1.value = 'As soon as possible';
    document.getElementById('shipDateValue').innerHTML = 'As soon as possible';
  } else {
    theForm.s_shipon1.value = theDate;
    document.getElementById('shipDateValue').innerHTML = theDate;
  }
  return true;
}

function remove_it(qtysku) {
   document.quantities.elements[qtysku].value = 0;
   document.quantities.submit();
}

function disable() {
   if (document.checkout.type.value == 'member') {
       document.checkout.username.disabled = false;
       document.checkout.password.disabled = false;
   } else {
       document.checkout.username.disabled = true;
       document.checkout.password.disabled = true;
   }
}

function wholesaleCopy() {
      document.ws_register.shipping_address1.value = document.ws_register.billing_address1.value;
      document.ws_register.shipping_address2.value = document.ws_register.billing_address2.value;
      document.ws_register.shipping_attention.value = document.ws_register.company_name.value;
      document.ws_register.shipping_city.value = document.ws_register.billing_city.value;
      document.ws_register.shipping_state.value = document.ws_register.billing_state.value;
      document.ws_register.shipping_zip.value = document.ws_register.billing_zip.value;
}

function changeDate(id,id2) {
   document.ship_form.elements[id].value = document.ship_form.elements[id2].value;
   document.getElementById('shipDateValue').innerHTML = document.ship_form.elements[id2].value;
}

function use_alias(id,alias) {
      var first_name = 's_firstname'+id;
      var last_name = 's_lastname'+id;
      var title = 's_title'+id;
      var company = 's_company'+id;
      var addy1 = 's_address1'+id;
      var addy2 = 's_address2'+id;
      var city = 's_city'+id;
      var state = 's_state'+id;
      var country = 's_country'+id;
      var zip = 's_zip'+id;
      var phone = 's_phone'+id;
      var alias_id = document.ship_form.elements[alias].value;
      var nullvar;
      document.ship_form.elements[first_name].value = info['s_firstname'][alias_id];
      document.ship_form.elements[last_name].value = info['s_lastname'][alias_id];
      if (info['s_title'][alias_id] != nullvar) {
        document.ship_form.elements[title].value = info['s_title'][alias_id];
      } else {
        document.ship_form.elements[title].value = "";
      }
      if (info['s_company'][alias_id] != nullvar) {
        document.ship_form.elements[company].value = info['s_company'][alias_id];
      } else {
        document.ship_form.elements[company].value = "";
      }
      document.ship_form.elements[addy1].value = info['s_address1'][alias_id];
      if (info['s_address2'][alias_id] != nullvar) {
        document.ship_form.elements[addy2].value = info['s_address2'][alias_id];
      } else {
        document.ship_form.elements[addy2].value = "";
      }
      document.ship_form.elements[city].value = info['s_city'][alias_id];
      document.ship_form.elements[state].value = info['s_state'][alias_id];
      document.ship_form.elements[country].value = info['s_country'][alias_id];
      document.ship_form.elements[zip].value = info['s_zip'][alias_id];
      if (info['s_phone'][alias_id] != nullvar) {
        document.ship_form.elements[phone].value = info['s_phone'][alias_id];
      } else {
        document.ship_form.elements[phone].value = "";
      }
}

function addressCopy() {
      document.ship_form.first_name.value = document.ship_form.s_firstname1.value;
      document.ship_form.last_name.value = document.ship_form.s_lastname1.value;
      document.ship_form.billing_address1.value = document.ship_form.s_address11.value;
      document.ship_form.billing_address2.value = document.ship_form.s_address21.value;
      document.ship_form.billing_state.value = document.ship_form.s_state1.value;
      document.ship_form.billing_city.value = document.ship_form.s_city1.value;
      document.ship_form.billing_zip.value = document.ship_form.s_zip1.value;
      document.ship_form.billing_country.value = document.ship_form.s_country1.value;
      document.ship_form.title.value = document.ship_form.s_title1.value;
      document.ship_form.company.value = document.ship_form.s_company1.value;
      document.ship_form.phone.value = document.ship_form.s_phone1.value;
}


function paymentMethod(method) {
  if (method == 'creditcard') {
    togglePO(true,'#EEE');
    toggleGC(true,'#EEE');
    toggleCC(false,'white');
  } else if (method == 'purchaseorder') {
    toggleGC(true,'#EEE');
    toggleCC(true,'#EEE');
    togglePO(false,'white');
  } else if (method == 'giftcertificate') {
    togglePO(true,'#EEE');
    toggleCC(true,'#EEE');
    toggleGC(false,'white');
  } else {
    togglePO(true,'#EEE');
    toggleCC(true,'#EEE');
    toggleGC(true,'#EEE');
  }
}

function toggleCC(val,col) {
  if (document.ship_form.print_cc.value == 'y') {
    document.ship_form.ccname.disabled=val;
    document.ship_form.cctype.disabled=val;
    document.ship_form.ccnum.disabled=val;
    document.ship_form.ccexpy.disabled=val;
    document.ship_form.ccname.style.background=col;
    document.ship_form.cctype.style.background=col;
    document.ship_form.ccnum.style.background=col;
    document.ship_form.ccexpy.style.background=col;
    if (typeof document.ship_form.cvv2 != 'undefined') {
      document.ship_form.cvv2.disabled=val;
      document.ship_form.cvv2.style.background=col;
    }
    document.ship_form.ccexpm.disabled=val;
    document.ship_form.ccexpm.style.background=col;
  }
}

function togglePO(val,col) {
  if (document.ship_form.print_po.value == 'y') {
    document.ship_form.purchase_order.disabled=val;
    document.ship_form.purchase_order.style.background=col;
  }
}

function toggleGC(val,col) {
  if (document.ship_form.print_gc.value == 'y') {
    document.ship_form.gift_certificate.disabled=val;
    document.ship_form.gift_certificate.style.background=col;
  }
}

function use_wishlist(id,wishlist) {
      var first_name = 's_firstname'+id;
      var last_name = 's_lastname'+id;
      var addy1 = 's_address1'+id;
      var addy2 = 's_address2'+id;
      var city = 's_city'+id;
      var state = 's_state'+id;
      var country = 's_country'+id;
      var zip = 's_zip'+id;
      var wl_id = document.ship_form.elements[wishlist].value;
      var nullvar;
      document.ship_form.elements[first_name].value = wl['first_name'][wl_id];
      document.ship_form.elements[last_name].value = wl['last_name'][wl_id];
      document.ship_form.elements[addy1].value = wl['address1'][wl_id];
      if (wl['address2'][wl_id] != nullvar) {
        document.ship_form.elements[addy2].value = wl['address2'][wl_id];
      } else {
        document.ship_form.elements[addy2].value = "";
      }
      document.ship_form.elements[city].value = wl['city'][wl_id];
      document.ship_form.elements[state].value = wl['state'][wl_id];
      document.ship_form.elements[country].value = wl['country'][wl_id];
      document.ship_form.elements[zip].value = wl['zip'][wl_id];
}

