function writeFlash(DivID,richMediaUrl,richMediaWidth,richMediaHeight,richMediaID) {
  var d = document.getElementById(DivID);
  d.innerHTML =
  '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="'+richMediaWidth+'" height="'+richMediaHeight+'" id="'+richMediaID+'">'+
  '<param name="movie" value="'+richMediaUrl+'">'+
  '<param name="quality" value="high">'+
  '<param name="menu" value="false">'+
  '<param name="wmode" value="transparent">'+
  '<param name="allowScriptAccess" value="sameDomain">'+
  '<embed src="'+richMediaUrl+'" quality="high" width="'+richMediaWidth+'" height="'+richMediaHeight+'" name="'+richMediaID+'" type="application/x-shockwave-flash" menu="false" wmode="transparent" allowScriptAccess="sameDomain">'+
  '<\/embed>'+
  '<\/object>';
}

function writeWMP(DivID,mediaUrl) {
  var d = document.getElementById(DivID);
  d.innerHTML =
  '<object classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab# Version=5,1,52,701" standby="Loading Microsoft Windows&reg; Media Player components..." type="application/x-oleobject" width="515" height="45">'+
  ((mediaUrl == null) ? '' : ('<param name="fileName" value="'+mediaUrl+'">'))+
  '<param name="animationatStart" value="1">'+
  '<param name="transparentatStart" value="1">'+
  '<param name="autoStart" value="1">'+
  '<param name="showControls" value="1">'+
  '<param name="Volume" value="-300">'+
  '<embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" '+
  ((mediaUrl == null) ? '' : (' src="'+mediaUrl+'" '))+
  'width="515" height="45" autostart="1" showcontrols="1" volume="-300">'+
  '<\/embed>'+
  '<\/object>';
}

function mainImageChange(baseItemId,newHeroImage) {
  document.getElementById('mainImage_'+baseItemId).src = newHeroImage;
}

function enableColorsOverlay(baseItemId) {

  var itemCount = eval('itemIdArray_'+baseItemId+'.length');
  for (var i = 0; i < itemCount; i++) {
    var colorPosition = eval('colorPosition_'+baseItemId+'[colorsArray_'+baseItemId+'[i]]');
    var colorValue = eval('colorsArray_'+baseItemId+'[i]');
    var sizeValue = eval('sizesArray_'+baseItemId+'[i]');
    var inStockValue = eval('inStockArray_'+baseItemId+'[i]');
    var borderActiveId = 'borderActive_'+baseItemId+'_'+colorPosition;
    var colorImageId = 'colorImage_'+baseItemId+'_'+colorPosition;
    if (sizeValue == document.getElementById('sizeOptions_'+baseItemId).value) {
      if (inStockValue == 'Y') {
        document.getElementById(borderActiveId).style.borderStyle = 'solid';
        document.getElementById(colorImageId).style.cursor = 'pointer';
      }
      else {
        if (document.getElementById(borderActiveId).style.borderStyle.match('solid')) {
          if (document.getElementById('colorName_'+baseItemId).innerHTML == colorValue) {
            document.getElementById('colorName_'+baseItemId).innerHTML = '(none selected)';
          }
        }
        document.getElementById(borderActiveId).style.borderStyle = 'dotted';
        document.getElementById(colorImageId).style.cursor = 'not-allowed';
        document.getElementById('borderSelect_'+baseItemId+'_'+colorPosition).style.borderColor='#fff';
      }
    }
  }

}

function borderChangeOverlay(baseItemId,nameDisplay,colorSequence,maximumColors) {

  var itemCount = eval('itemIdArray_'+baseItemId+'.length');
  if (document.getElementById('borderActive_'+baseItemId+'_'+colorSequence).style.borderStyle.match('solid')) {
    document.getElementById('borderSelect_'+baseItemId+'_'+colorSequence).style.borderColor = '#000';
    //document.getElementById('colorName_'+baseItemId).innerHTML = nameDisplay;
    for (var i = 0; i < itemCount; i++) {
      var itemIdValue = eval('itemIdArray_'+baseItemId+'[i]');
      var colorValue = eval('colorsArray_'+baseItemId+'[i]');
      var sizeValue = eval('sizesArray_'+baseItemId+'[i]');
      if (document.getElementById('sizeOptions_'+baseItemId)) {
        if ((sizeValue == document.getElementById('sizeOptions_'+baseItemId).value) && (colorValue == nameDisplay)) {
          eval('selectedItemId_'+baseItemId+'=itemIdValue');
          eval('newHeroImage = heroImageArray_'+baseItemId+'[itemIdValue]');
          if (document.images && (newHeroImage != '')) {
            document.getElementById('mainImage_'+baseItemId).src = newHeroImage;
          }
        }
      }
      else {
        if (colorValue == nameDisplay) {
          eval('selectedItemId_'+baseItemId+'=itemIdValue');
        }
      }
    }
    for (i = 0; i <= maximumColors; i++) {
      if (i != colorSequence) {
        document.getElementById('borderSelect_'+baseItemId+'_'+i).style.borderColor='#fff';
      }
    }
  }

}

function popWindow(url, name, width, height) {
  var x = (screen.width - width)/2;
  var y = (screen.height - height)/2;
    var opts = 'height=' + height + ',width=' + width + ",screenX=" + x + ",left=" + x + ",screenY=" + y + ",top=" + y + ',location=no,scrollbars=yes,menubar=no,resizable=no,status=no,toolbar=no';

    var newWindow = window.open(url, name, opts);
    newWindow.focus();
}

function popupHelp(url, name, w, h){
  var winl = (screen.width - w) / 5;
  var wint = (screen.height - h) / 5;
  winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars=yes,resizable=yes';
  win = window.open(url, name, winprops)
  if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

function calculateSelectedItems(all_selected){
  var selected = "";
  var counter = 0;

  array_all_selected = all_selected.split("|");
  //  get all the checkboxes with item name = compare_item
  //  1. if it's checked but not in the list, then add it to the selected_item string.
  //  2. if it's not checked and in the list, then remove from the list

  var elements = document.getElementsByName('compare_item');
  for (i=0; i < elements.length; i++){

    if (elements.item(i).checked == true
        && itemFound(array_all_selected,
                     elements.item(i).value) == -1){
      if (counter > 0) {
        selected += "|";
      }
      selected += elements.item(i).value;
      counter++;
    }
    else if (elements.item(i).checked == false
             && (found_index =
                 itemFound(array_all_selected,
                 elements.item(i).value)) != -1){
      array_all_selected[found_index] = "";
    }
  }
  //   Now let's build the query string and append at the end of the
  // destination url
  for (k=0; k < array_all_selected.length; k++){
    if (array_all_selected[k] != null && array_all_selected[k] != ""
        && array_all_selected[k] != "null" && array_all_selected[k] != "na"){
      if (selected != ""){
        selected += "|";
      }
      selected += array_all_selected[k];
    }
  }
  return selected;
}

function setComparisonItem(desturl,all_selected,is_page_changed){
  var selected = calculateSelectedItems(all_selected);

    if(is_page_changed == true){
    if (selected != ""){
      desturl += "&selected_items=" + escape(selected);
    }
  }
  else{
    final_selected = selected.split('|');
    counter = final_selected.length;
    if ( counter < 2 ){
      setErrorMessage( 'Please select two or more items to compare');
      return false;
    }
    if (counter > 4 ){
      setErrorMessage( 'You may compare up to four items at a time');
      return false;
    }
    if (selected == ""){
      selected = "na";
    }
    desturl += "&selected_items=" + escape(selected);
  }
  document.location = desturl;
  return false;
}

function setErrorMessage(message){

  document.getElementById("ShelfErrorMessage").innerHTML = message;
  var shelfGeneralError = document.getElementById("ShelfErrorSwitch");

  if (shelfGeneralError.className == "NoShelfError"){
    shelfGeneralError.className = "ShelfError";
  }
  showOrHideError("show", 1, message);

  var globalGeneralError = document.getElementById("GlobalErrorSwitch");
  window.scroll(0, getPageOffsetTop(globalGeneralError));
}

function getPageOffsetTop(el){
  var ot = el.offsetTop;
  while ((el=el.offsetParent) != null) { ot += el.offsetTop; }
  return ot;
}

function itemFound(array_all_selected, selected_item_id){
  for (j=0; j < array_all_selected.length; j++){
    if (array_all_selected[j] == selected_item_id){
      return j;
    }
    else{
    }
  }
  return -1;
}

function ParentApparelInfo(getColor, getSize, getQuantity) {
    this.getColor = getColor;
    this.getSize = getSize;
    this.getQuantity = getQuantity;
}

var parentApparelInfo;
function saveApparelInfo(getColor, getSize, getQuantity) {
    parentApparelInfo = new ParentApparelInfo(getColor, getSize, getQuantity);
}

function saveApparelInfoValues(selectedColor, selectedSize, selectedQuantity) {
    saveApparelInfo(
            function () {
                return selectedColor;
            },
            function () {
                return selectedSize;
            },
            function () {
                return selectedQuantity;
            });
}

function removeApparelInfo() {
    parentApparelInfo = null; 
}

var TemporarySessionMap = new function () {
    var COOKIE_NAME = "navPath";
    var instance = null;

    var CookieValueEncoding = new function () {
        var HT_KEYVALUE_SEPARATOR = "A";
        var HT_ENTRY_SEPARATOR = "|";
        var COOKIE_MAX_ENTRIES = 30;
        var COOKIE_MAX_LENGTH = 3000;

        this.decode = function (value, h) {
            if (null != value && 0 < value.length) {
                var entryTokens = value.split(HT_ENTRY_SEPARATOR);
                for (var i = 0; i < entryTokens.length; i++) {
                    var token = entryTokens[i].split(HT_KEYVALUE_SEPARATOR);
                    if (token.length == 2) {
                        h[token[0]] = token[1];
                    }
                }
            }
            return h;
        }
    }

    var CookieValueCompression = new function () {
        var lookup_delimiter = 'D';
        var lookup_string_delimiter = 'S';
        var DELIMITERS = ['A', '|', '+', '.', '#', ':'];

        this.decompress = function (compString) {
            if (compString == null || compString.length == 0 ||
                compString.indexOf(lookup_string_delimiter) == -1) {
                return compString;
            }
            try {
                var l = compString.indexOf(lookup_string_delimiter);
                var lookup = compString.substring(0, l);
                var encodedString = compString.substring(l + 1);
                var lookupSymbols = lookup.split(lookup_delimiter);

                var startPos = 0;
                var sb = "";
                for (var i = 0; i < encodedString.length; i++) {
                    var c = encodedString.charAt(i);
                    if (isCharADelimiter(c)) {
                        var s = encodedString.substring(startPos, i);
                        startPos = i + 1;
                        sb += lookupSymbols[s] + c;
                    }

                    if (i == (encodedString.length - 1) && startPos <= encodedString.length) {
                        var s = encodedString.substring(startPos, encodedString.length);
                        sb += lookupSymbols[s];
                    }
                }
                return sb;
            }
            catch (e) {
                return "";
                //This is to ensure that a fresh map can be build by discarding the buggy one.
            }
        }

        function isCharADelimiter(c) {
            for (var i = 0; i < DELIMITERS.length; i++) {
                if (c == DELIMITERS[i]) {
                    return true;
                }
            }
            return false;
        }
    }

    function getCookieValue() {
        var cookies = document.cookie;
        var prefix = COOKIE_NAME + "=";
        var begin = cookies.indexOf("; " + prefix);
        if (begin == -1) {
            begin = cookies.indexOf(prefix);
            if (begin != 0) {
                return null;
            }
        }
        else {
            begin += 2;
        }
        var end = document.cookie.indexOf(";", begin);
        if (end == -1) {
            end = cookies.length;
        }
        return unescape(cookies.substring(begin + prefix.length, end));
    }

    this.getInstance = function () {
        if (null == instance) {
            instance = new Object();
            var compressedValue = getCookieValue();
            if (null != compressedValue) {
                var encodedValue = CookieValueCompression.decompress(compressedValue);
                CookieValueEncoding.decode(encodedValue, instance);
            }
        }
        return instance;
    }
}
