
  arrTopicID         = new Array();
  arrSubTopicID      = new Array();
  arrProdCode        = new Array();
  arrProdImg         = new Array();
  arrProdUrl         = new Array();
  arrProdName        = new Array();
  arrProdDesc        = new Array();
  arrProdType        = new Array();
  arrProdFrag        = new Array();
  arrProdPrice       = new Array();
  arrVarName         = new Array();
  arrVarSKU          = new Array();
  arrVarStock        = new Array();
  arrImageName       = new Array();
  arrImageLeft       = new Array();
  arrImageDim_W      = new Array();
  arrImageDim_H      = new Array();
  arrDivNodes        = new Array();
  arrImgNodes        = new Array();
  arrImageAlt        = new Array();
  arrSetCount        = new Array();
  arrSubTopicIDList  = new Array();
  arrProdQtyListName = new Array();
  
  // BackOrder Arrays
  arrIsBO      = new Array();
  arrBOMax     = new Array();
  arrBODate    = new Array();

  var intDefaultMovementNode     = 4;
  var intLeftBuffer              = 25;
  var intSubBuffer               = 120;
  var intYBotBuffer              = 40;
  var intZoomPercentage          = 80;
  var intShiftDelay              = 5;
  var intShiftSteps              = 40;
  var intSetShiftSteps           = 120;
  var intZoomDelay               = 5; 
  var intZoomSteps               = 20; 
  var intCenterOffset            = 0;
  var intImageSpacer             = 6;
  var intCurrentSet              = -1;
  var intTotalCollections        = 0;
  var intProductInfo_Width       = 306;  // Set the Width of the Popup Div for Products
  var intProductInfo_XBuffer     = 53;   //
  var intProductInfo_YBuffer     = 2;   //
  var floatImage_Opacity         = 99;   // Default Opacity
  var floatImage_Opacity_Max     = 99;   // Highlighted Opacity
  var floatImage_Opacity_Min     = 75;   // Background Opacity
  var floatNavShiftSpeed         = 2.0;    //

  // State-Based Variables
  var boolScrolling   = false;
  var boolIsZoomed    = false;
  var boolPopupActive = false;
  var boolLockZoom    = false;
  
  // Global Counters & Interval Variables.
  var intGlobalIterationCount = 0; 
  var intGlobalZoomCount = 0; 
  var intGlobalFadeIterationCount_Popup = 0;
  var intGlobalFadeIterationCount_Product = 0;
  var intGlobalInitLeftPos = 0;
  var intZoomImageNode = -1;
  var intZoomImageSet  = -1;
  var ShiftTimer = 0;
  var ZoomTimer = 0;
  var FadeTimer_Popup = 0;
  var FadeTimer_Product = 0;
  
  // Local Variables (Do Not Set)
  var intBeginLeft  = 0;
  var intEndLeft    = 0;
  var intDifference = 0;

  function Initialize() {

    intContainer_Width  = parseInt(document.getElementById("Slider_Container").style.width);  
    intContainer_Height = parseInt(document.getElementById("Slider_Container").style.height);
    intContainer_XLoc   = 0;
    intContainer_YLoc   = 0;
    intGlobalInitLeftPos = 0;
    
     if ( (BrowserDetect.browser == "Explorer") && (parseInt(BrowserDetect.version) <= 6) ) {
       document.getElementById("Slider_Container").style.backgroundImage = 'url()';
     }
           
    for (x=0; x<arrSubTopicID.length; x++) {
      boolSubTopicIDExists = false;
      for (y=0; y<arrSubTopicIDList.length; y++) {
        if (arrSubTopicID[x] == arrSubTopicIDList[y]) { boolSubTopicIDExists = true; }
      }
      if (!boolSubTopicIDExists) { arrSubTopicIDList.push(arrSubTopicID[x]); }
    }

    
    for (x=0; x<arrSubTopicIDList.length ; x++) {
      intCounter = 1;
      intLocalOffset = 0;
      for (y=0; y<arrSubTopicID.length; y++) {
        if (arrSubTopicIDList[x] == arrSubTopicID[y]) {
          // Create the Image Instance
          strImageSetNode = (x+1).toString();
          strImageNameNode = intCounter.toString();
          strImageSet = 'ImageSet' + strImageSetNode;
          strImageName = 'Image' + strImageSetNode + '_' + strImageNameNode;
          arrImageName.push(strImageName);
          SetImage(strImageName, arrProdImg[y], arrProdUrl[y], arrImageAlt[y]);
          SetElementOpacity(strImageName, floatImage_Opacity);
          PositionImage(strImageName, arrImageDim_W[y], arrImageDim_H[y], y);
          ShowImage(strImageName);
          // ActivateEvents(strImageName, x+1, intCounter);

          arrSetCount[x] = intCounter;
          intCounter++;
        }
      }
      intGlobalInitLeftPos += parseInt(intSubBuffer);
      intTotalCollections = x + 1;
    }
    
    // for(x = 0; x < arrProdCode.length; x++) {
      strObjectName = "Product_Info_Container"; // + arrProdCode[x];
      document.getElementById(strObjectName).style.left    = (intContainer_XLoc + intProductInfo_XBuffer + intContainer_Width / 2) + 'px';
      document.getElementById(strObjectName).style.top     = (intContainer_YLoc + intProductInfo_YBuffer) + 'px';
      document.getElementById(strObjectName).style.width   = (intProductInfo_Width) + 'px';
      document.getElementById(strObjectName).style.zIndex  = 51;
    // }

    ActivateNavigationEvents(intCurrentSet); 
    ActivateEvents();   
    UpdateImageLocations();
  }
    
  /////////////////////////////
  // SCROLL & ZOOM FUNCTIONS //
  /////////////////////////////

  // This function Navigates to an ImageSet without Zooming a particular Image
  function NavigateToSet(Set, Image) {
    if (!boolScrolling) {
      DisableEvents();   
      ResetAllQuantities();
      if (boolIsZoomed) { 
        UnZoomSetShift(intZoomImageNode, Set, Image); 
      } 
      else {
        boolScrolling = true;
        // intCurrentSet = parseInt(Set);  // No Longer In Use = Archived
        // UpdateSubTitle(intCurrentSet);  // No Longer In Use - Archived
        intImageSet = parseInt(Set) + 1;
        strFirstImageInSet = "Image" + intImageSet + "_1";
        strLastImageInSet  = "Image" + intImageSet + "_" + arrSetCount[Set];

        intSetLeftPos  = parseInt(document.getElementById(strFirstImageInSet).style.left);
        intSetRightPos = parseInt(document.getElementById(strLastImageInSet).style.left) + parseInt(document.getElementById(strLastImageInSet).width);
            
        intBeginLeft  = parseInt((intSetLeftPos + intSetRightPos) / 2);
        intEndLeft    = parseInt(parseInt(document.getElementById("Slider_Container").style.width) / 2) + intCenterOffset;
        intDifference = intEndLeft - intBeginLeft
        
        // alert(intDifference);
        intSetShiftSteps = parseInt(Math.abs(intDifference) / floatNavShiftSpeed);
        ResetGlobalCounters();
        clearInterval(ShiftTimer);
        clearInterval(ZoomTimer);
        ShiftTimer = setInterval("ShiftSet(" + intBeginLeft + ", " + intEndLeft + ", " + intDifference + ")", intShiftDelay);  
      }
    }
  }

  // This begins the call to Shift / Zoom to Element when clicked.  It only generates the necessary
  // Data to begin performing the ShiftElements() call.
  function ZoomToElement(Set, Image) {
    if (!boolScrolling) {
      DisableEvents();   
      ResetAllQuantities();
      // intCurrentSet = parseInt(Set);  // No Longer In Use - Archived
      // UpdateSubTitle(intCurrentSet);  // No Longer In Use - Archived 

      if (boolIsZoomed) { 
        UnZoom(intZoomImageNode, Set, Image); 
      } 
      else {  
        intBeginLeft  = parseInt(document.getElementById(Image).style.left);
        intEndLeft    = parseInt(parseInt(document.getElementById("Slider_Container").style.width) / 2) + intCenterOffset;
        intDifference = intEndLeft - intBeginLeft
      
        intZoomImageSet = parseInt(Set);
        for (x=0; x < arrImageName.length; x++) {
          if (arrImageName[x] == Image) { intZoomImageNode = x;}
        }
        intShiftSteps = parseInt(Math.abs(intDifference) / floatNavShiftSpeed);
        boolScrolling = true;
        ResetGlobalCounters();
        clearInterval(ShiftTimer);
        clearInterval(ZoomTimer);
        ShiftTimer = setInterval("ShiftElements('" + Set + "', '" + Image + "', " + intBeginLeft + ", " + intEndLeft + ", " + intDifference + ")", intShiftDelay);  
      }
    }
  }

  function UnZoom(Node, ZoomSet, ZoomImage, Type) {
    if (!Type) { Type = 0; }

    // Set the Focus Image and derive locations
    var Image = arrImageName[Node];
    var Img   = document.getElementById(Image);
    var X_Begin      = parseInt(Img.style.left);
    var Y_Begin      = parseInt(Img.style.top);
    var H_Begin      = parseInt(Img.height);
    var W_Begin      = parseInt(Img.width);

    var H_End        = parseInt(parseInt(arrImageDim_H[Node]) * intZoomPercentage/100);
    var W_End        = parseInt(parseInt(arrImageDim_W[Node]) * intZoomPercentage/100);
    var X_End        = parseInt(X_Begin - ((W_End - W_Begin) / 2));
    var Y_End        = parseInt(Y_Begin - (H_End - H_Begin - 1));

    // Get the Difference to Move
    var X_Delta       = (X_End - X_Begin) / intZoomSteps;
    var Y_Delta       = (Y_End - Y_Begin) / intZoomSteps;
    var H_Delta       = (H_End - H_Begin) / intZoomSteps;
    var W_Delta       = (W_End - W_Begin) / intZoomSteps;
    
    ZoomTimer = setInterval("ZoomElement(" + Type + ", '" + ZoomSet + "', '" + ZoomImage + "', '" + Image + "'," + Node + "," + X_Begin + "," + Y_Begin + "," + H_Begin + "," + W_Begin + "," + X_Delta + "," + Y_Delta + "," + H_Delta + "," + W_Delta + ")", intZoomDelay);
    FadeTimer_Product = setInterval("FadeElement('Product', '" + Image + "', " + floatImage_Opacity_Max + ", " + floatImage_Opacity + ", " + floatImage_Opacity_Min + ", " + floatImage_Opacity + ")", intZoomSteps);
    if (boolPopupActive) { HideDiv(intZoomImageNode); }
  }

  // This is a specialty proc that UnZooms for an ImageSet Shift.
  function UnZoomSetShift(Node, ZoomSet, ZoomImage) {
    // Set the Focus Image and derive locations
    var Image = arrImageName[Node];
    var Img   = document.getElementById(Image);
    var X_Begin      = parseInt(Img.style.left);
    var Y_Begin      = parseInt(Img.style.top);
    var H_Begin      = parseInt(Img.height);
    var W_Begin      = parseInt(Img.width);

    var H_End        = parseInt(parseInt(arrImageDim_H[Node]) * intZoomPercentage/100);
    var W_End        = parseInt(parseInt(arrImageDim_W[Node]) * intZoomPercentage/100);
    var X_End        = parseInt(X_Begin - ((W_End - W_Begin) / 2));
    var Y_End        = parseInt(Y_Begin - (H_End - H_Begin - 1));

    // Get the Difference to Move
    var X_Delta       = (X_End - X_Begin) / intZoomSteps;
    var Y_Delta       = (Y_End - Y_Begin) / intZoomSteps;
    var H_Delta       = (H_End - H_Begin) / intZoomSteps;
    var W_Delta       = (W_End - W_Begin) / intZoomSteps;
    
    ZoomTimer = setInterval("ZoomElement(2, '" + ZoomSet + "', '" + ZoomImage + "', '" + Image + "'," + Node + "," + X_Begin + "," + Y_Begin + "," + H_Begin + "," + W_Begin + "," + X_Delta + "," + Y_Delta + "," + H_Delta + "," + W_Delta + ")", intZoomDelay);
    FadeTimer_Product = setInterval("FadeElement('Product', '" + Image + "', " + floatImage_Opacity_Max + ", " + floatImage_Opacity + ", " + floatImage_Opacity_Min + ", " + floatImage_Opacity + ")", intZoomSteps);
    if (boolPopupActive) { HideDiv(intZoomImageNode); }
  }

  ////////////////////////
  // MOBILITY FUNCTIONS //
  ////////////////////////

  // This is the first Interval Driven Process which Shifts the Images.  
  function ShiftElements(Set, Image, intStart, intEnd, intDiff) {
    intGlobalIterationCount++;
    if (intGlobalIterationCount > intShiftSteps) {
      ActivateNavigationEvents(intCurrentSet);    
      clearInterval(ShiftTimer);
      UpdateImageLocations();
      ResetGlobalCounters();
      clearInterval(ZoomTimer);
      clearInterval(FadeTimer_Popup);
      clearInterval(FadeTimer_Product);
      boolScrolling = false;
      ActivateEvents();
    }
    else {
      for (x=0; x<arrImageName.length; x++) { 
        document.getElementById(arrImageName[x]).style.left = parseInt(arrImageLeft[x] + ((intDiff / intShiftSteps) * intGlobalIterationCount)) + 'px';
      }
    }
  }

  function ZoomCentralNode() {

    DisableEvents();
    var Image = arrImageName[intZoomImageNode]
    
    // Set the Focus Image and derive locations
    var Img = document.getElementById(Image);
    var X_Begin      = parseInt(Img.style.left);
    var Y_Begin      = parseInt(Img.style.top);
    var H_Begin      = parseInt(Img.height);
    var W_Begin      = parseInt(Img.width);

    var H_End        = parseInt(arrImageDim_H[intZoomImageNode]);
    var W_End        = parseInt(arrImageDim_W[intZoomImageNode]);
    var X_End        = parseInt(X_Begin - ((W_End - W_Begin) / 2));
    var Y_End        = parseInt(Y_Begin - (H_End - H_Begin - 1));

    // Get the Difference to Move
    var X_Delta       = (X_End - X_Begin) / intZoomSteps;
    var Y_Delta       = (Y_End - Y_Begin) / intZoomSteps;
    var H_Delta       = (H_End - H_Begin) / intZoomSteps;
    var W_Delta       = (W_End - W_Begin) / intZoomSteps;

    ZoomTimer = setInterval("ZoomElement(1, '', '', '" + Image + "'," + intZoomImageNode + "," + X_Begin + "," + Y_Begin + "," + H_Begin + "," + W_Begin + "," + X_Delta + "," + Y_Delta + "," + H_Delta + "," + W_Delta + ")", intZoomDelay);
    FadeTimer_Product = setInterval("FadeElement('Product', '" + Image + "', " + floatImage_Opacity + ", " + floatImage_Opacity_Max + ", " + floatImage_Opacity + ", " + floatImage_Opacity_Min + ")", intZoomSteps);
    ShowDiv(intZoomImageNode);
  }

  function Shift_Right() {
    if (intZoomImageNode == -1) { intZoomImageNode = intDefaultMovementNode; }
    if (parseInt(intZoomImageNode) > 0) { 
      ZoomToElement(GetSetFromNode(intZoomImageNode - 1), GetImageFromNode(intZoomImageNode - 1));      
    }

  }
  
  function Shift_Left() {
    if (intZoomImageNode == -1) { intZoomImageNode = intDefaultMovementNode; }
    if (parseInt(intZoomImageNode) < (parseInt(arrImageName.length) -1) ) { 
      ZoomToElement(GetSetFromNode(intZoomImageNode + 1), GetImageFromNode(intZoomImageNode + 1));      
    }  
  }

  // This is the Interval Process for an individual Element Zoom function.
  function ZoomElement(Type, ZoomSet, ZoomImage, Image, Node, X, Y, H, W, Xd, Yd, Hd, Wd) {
    intGlobalZoomCount++;

    if (intGlobalZoomCount > intZoomSteps) {
      clearInterval(ZoomTimer);
      UpdateImageLocations();
      ResetGlobalCounters();
      boolScrolling = false;
      if (Type == 0) { boolIsZoomed = false; ZoomToElement(ZoomSet, ZoomImage); }
      if (Type == 1) { boolIsZoomed = true;  } 
      if (Type == 2) { boolIsZoomed = false; NavigateToSet(ZoomSet, ZoomImage); }
      if (Type == 3) { boolIsZoomed = false; }
    }
    else {
      for (x=0; x<arrImageName.length; x++) { 
        if (x < Node) {
          // Shift Left
            document.getElementById(arrImageName[x]).style.left = parseInt(arrImageLeft[x] + (Xd * intGlobalZoomCount)) + 'px';
        }
        if (x > Node) {
          // Shift Right
            document.getElementById(arrImageName[x]).style.left = parseInt(arrImageLeft[x] - (Xd * intGlobalZoomCount)) + 'px';
        }
        if (x == Node) {
          // Zoom Element
            document.getElementById(Image).style.left   = parseInt(X + Xd * intGlobalZoomCount) + 'px';
            document.getElementById(Image).style.top    = parseInt(Y-1 + Yd * intGlobalZoomCount) + 'px';
            document.getElementById(Image).style.height = parseInt(H + Hd * intGlobalZoomCount) + 'px';
            document.getElementById(Image).style.width  = parseInt(W + Wd * intGlobalZoomCount) + 'px';
        }        
      }
    }
  }


  /////////////////////
  // POPUP FUNCTIONS //
  /////////////////////
  
  function ShowDiv(Node) {
    DisableEvents();   
    // strObjectName = "Product_Info_" + arrProdCode[Node];
    strObjectName = "Product_Info_Container";
    PopulateContainerInformation(Node);
    // DisableHighlightNodeEvents();
    // EnableClickToProductEvents();
    
    boolPopupActive = true;
    boolLockZoom    = true;

    document.getElementById(strObjectName).style.display    = 'inline';
    document.getElementById(strObjectName).style.visibility = 'visible';
    document.getElementById(strObjectName).style.zIndex     = 125;
    
    // Call Fade In
    ResetGlobalFadeCounter_Popup();
    clearInterval(FadeTimer_Popup);
    FadeTimer_Popup   = setInterval("FadeElement('Popup'  , '" + strObjectName + "', 0, 99, 0, 0, '')", intZoomSteps);
  }
  
  function HideDiv(Node) {
    if (boolPopupActive) {
      boolPopupActive = false;
      boolLockZoom    = false;

      DisableEvents();   
      
      if (Node == undefined) { 
        Node = intZoomImageNode; 
        UnZoom(Node, '', '', 3);
      }
      
      // strObjectName = "Product_Info_" + arrProdCode[Node];
      strObjectName = "Product_Info_Container";
      
      document.getElementById(strObjectName).style.zIndex  = 51;
      ResetGlobalFadeCounter_Popup();
      clearInterval(FadeTimer_Popup);
      FadeTimer_Popup   = setInterval("FadeElement('Popup'  , '" + strObjectName + "', 99, 0, 0, 0, 'UnDisplay()')", intZoomSteps);
    }
  }
  
  function PopulateContainerInformation(Node) {
    var objContainer = document.getElementById("Product_Info_Container");
    var objProdName = document.getElementById("PI_ProdName");
    var objProdDesc = document.getElementById("PI_ProdDesc");
    var objProdType = document.getElementById("PI_ProdType");
    var objProdFrag = document.getElementById("PI_ProdFrag");
    var objVarName  = document.getElementById("PI_VarName");
    var objProdQty  = document.getElementById("PI_ProdQty");
    var objVarPrice = document.getElementById("PI_VarPrice");
    var objProdLink = document.getElementById("PI_ProdLink");
    var objButton   = document.getElementById("PI_Button");
    var objMessage  = document.getElementById("PI_Text");
    
    var strProdName = '<h2>' + arrProdName[Node] + '</h2>';
    var strProdDesc = arrProdDesc[Node];
    var strProdType = '<span class="TXT_MedGrey TXT_A11 TXT_TT"><b>type of hair:</b></span> <b>' + arrProdType[Node] + '</b>';
    if (arrProdFrag[Node] != '') {
      var strProdFrag = '<span class="TXT_MedGrey TXT_A11 TXT_TT"><b>fragrance:</b></span> <b>' + arrProdFrag[Node] + '</b>';
    }
    var strVarName = arrVarName[Node];
    var strProdQty = '<span class="AMedGREY12_B">Qty</span><select id="' + arrProdQtyListName[Node] + '" class="margin03_L TXTBOX_LtGREY_DD"><option value="-">--</option><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>';
    var strVarPrice = arrProdPrice[Node];
    var strProdLink = '<a href="/styling/product.aspx?prdcode=' + arrProdCode[Node] + '&CategoryCode=AXE_Styling" class="AMedGREY12_BL margin03_L">View</a>';
        
    objProdName.innerHTML = strProdName;
    objProdDesc.innerHTML = strProdDesc;
    objProdType.innerHTML = strProdType;
    if (strProdFrag) { objProdFrag.innerHTML = strProdFrag; } else { objProdFrag.innerHTML = ''; }
    objVarName.innerHTML = strVarName;
    objProdQty.innerHTML = strProdQty;
    objVarPrice.innerHTML = strVarPrice;
    objProdLink.innerHTML = strProdLink;
    
    // Call to Manipulate the Qty Dropdown via AJAX if OOS
    // PSCManagePrdAddToCartDropdown(arrVarSKU[Node],arrVarStock[Node]);

    var boolIsBackOrdered = arrIsBO[Node];
    var intBackOrderMax   = arrBOMax[Node];
    var strBackOrderDate  = arrBODate[Node];
    var intProductStock   = arrVarStock[Node];
    var intThreshold      = AJAX_GetTresHoldNumber();
    var objQtyList        = document.getElementById(arrProdQtyListName[Node]);
    
    // Reset to Defaults:
    objButton.innerHTML = '<img src="/IMG/BTN_AddToBg.gif" style="cursor:pointer" onclick="javascript:if(PSCAddSelectedProductsToBag(\'\')){javascript:HideDiv();}" border="0" class="margin03_L" class="RO_Hand">';
    objMessage.innerHTML = '';
    objMessage.style.display = 'none';
    objQtyList.disabled = false;
    
    if(boolIsBackOrdered == '1' || boolIsBackOrdered == '2') {
      // This Item is on Back Order
      if(boolIsBackOrdered == '1' && parseInt(intProductStock) < parseInt(intThreshold)) {
        // BackOrder
        objButton.innerHTML = '<img src="/img/BTN_Backorder.gif" alt="Back Order" style="cursor:pointer" onclick="javascript:if(PSCAddSelectedProductsToBag(\'\')){javascript:HideDiv();}" border="0" class="margin03_L" class="RO_Hand">';
        objMessage.style.display = 'inline';
        objMessage.innerHTML = 'This product will not be available to ship until ' + strBackOrderDate + '.  Once the product is available, it will ship separately from any other items ordered.';
      }
      if(boolIsBackOrdered == '2' && parseInt(intProductStock) < parseInt(intThreshold)) {
        // PreOrder
        objButton.innerHTML = '<img src="/img/BTN_Preorder.gif" alt="Pre Order" style="cursor:pointer" onclick="javascript:javascript:if(PSCAddSelectedProductsToBag(\'\')){javascript:HideDiv();}" border="0" class="margin03_L" class="RO_Hand">';
        objMessage.style.display = 'inline';
        objMessage.innerHTML = 'This product will not be available to ship until ' + strBackOrderDate + '.  Once the product is available, it will ship separately from any other items ordered.';
      }
    }
    else {
      if(parseInt(intProductStock) < parseInt(intThreshold)) {
        objButton.innerHTML = '<img src="/img/BTN_OOS.gif" alt="Out Of Stock" border="0" class="margin10_L" />';
        objQtyList.disabled = true;
      }
    }

  } 
    
  function ResetContainerInformation() {
    document.getElementById("PI_ProdName").innerHTML = '';
    document.getElementById("PI_ProdDesc").innerHTML = '';
    document.getElementById("PI_ProdType").innerHTML = '';
    document.getElementById("PI_ProdFrag").innerHTML = '';
    document.getElementById("PI_VarName".innerHTML = '');
    document.getElementById("PI_ProdQty").innerHTML = '';
    document.getElementById("PI_VarPrice").innerHTML = '';
    document.getElementById("PI_ProdLink").innerHTML = '';
  }
    
  function FadeElement(Type, ObjectName, StartVal, EndVal, DStartVal, DEndVal, Finalize) {
    if (Type == 'Popup') {
      if(intGlobalFadeIterationCount_Popup >= intZoomSteps) { 
        clearInterval(FadeTimer_Popup);
        ResetGlobalFadeCounter_Popup();
        eval(Finalize);
        // if (!boolScrolling) { ActivateEvents(); } // Redundant - Commented Out
      }
      else {
        intGlobalFadeIterationCount_Popup++;
        intOpacity = Math.round( StartVal + ((EndVal - StartVal) / intZoomSteps * intGlobalFadeIterationCount_Popup) );
        // intNavOpacity = (99 - intOpacity);
        try {
          SetElementOpacity(ObjectName, intOpacity); 
          // SetElementOpacity(NavigationName,intNavOpacity); 
        }
        catch(e) {
          // Fail Safely
        }
      }
    }
    if (Type == 'Product') {
      if(intGlobalFadeIterationCount_Product >= intZoomSteps) { 
        clearInterval(FadeTimer_Product);
        ResetGlobalFadeCounter_Product();
        eval(Finalize);
        if (!boolScrolling) { ActivateEvents(); }  
      }
      else {
        intGlobalFadeIterationCount_Product++;
        intOpacity_In  = Math.round( StartVal + ((EndVal - StartVal) / intZoomSteps * intGlobalFadeIterationCount_Product) );
        intOpacity_Out = Math.round( DStartVal + ((DEndVal - DStartVal) / intZoomSteps * intGlobalFadeIterationCount_Product) );
        
        for (x=0; x < arrImageName.length; x++) {
          if (arrImageName[x] == ObjectName) {
            SetElementOpacity(ObjectName, intOpacity_In); 
          }
          else {
            SetElementOpacity(arrImageName[x], intOpacity_Out);           
          }
        }
      }  // End Else
    }
    
  }



  /////////////////////////////////
  // Begin Utility Functionality //
  function SetElementOpacity(Object, Value) {
    document.getElementById(Object).style.filter = "Alpha(Opacity=" + Value + ")"; // IE
    document.getElementById(Object).style.MozOpacity = Math.min(Value, 99)/100;    // FireFox
    document.getElementById(Object).style.opacity = Math.min(Value, 99)/100;       // Safari & Chrome
  }

  function GetSetFromNode(Node) {
    var strSetName = arrSubTopicID[Node];
    var intSetID = 0;
    for (x=0; x<arrSubTopicIDList.length; x++) {
      if (strSetName = arrSubTopicIDList[x]) {
        intSetID = x;
        break;
      }
    }
    return intSetID;
  }
  
  function GetImageFromNode(Node) {
    var strImageName = arrImageName[Node];
    return strImageName;
  }

  function UnDisplay() {
    // This sets Display:None on all Shoppable Popups.
    // for(x=0; x < arrProdCode.length; x++) {
      strObjectName = "Product_Info_Container"; // + arrProdCode[x];
      ResetContainerInformation();
      document.getElementById(strObjectName).style.display    = 'none';
      document.getElementById(strObjectName).style.visibility = 'hidden';
    // }
    // document.getElementById(arrImgPop[intImageNode -1]).style.display = 'none';
  }  

  function UpdateImageLocations() {
    for (x=0; x<arrImageName.length; x++) { 
      arrImageLeft[x] = parseInt(document.getElementById(arrImageName[x]).style.left);
    }
  }

  function SetImage(Image, Src, Url , Alt) {
    document.getElementById(Image).src = Src;
    
    // Strip out the HTML Spaces and replace with Text Spaces.
    rExp = /&nbsp;/gi;
    document.getElementById(Image).alt = Alt.toString().replace(rExp, ' ');
  }

  function PositionImage(Image, WBuffer, HBuffer, Element) {
    intContainer_Height = parseInt(document.getElementById("Slider_Container").style.height);
    document.getElementById(Image).style.left   = parseInt(intGlobalInitLeftPos + intLeftBuffer) + 'px';
    document.getElementById(Image).style.top    = parseInt((intContainer_Height - intYBotBuffer) - parseInt(parseInt(HBuffer) * intZoomPercentage/100)) + 'px';
    document.getElementById(Image).width        = parseInt(parseInt(WBuffer) * intZoomPercentage/100);
    document.getElementById(Image).height       = parseInt(parseInt(HBuffer) * intZoomPercentage/100);
    document.getElementById(Image).style.zIndex = 50;
    intGlobalInitLeftPos += parseInt(parseInt(WBuffer) * intZoomPercentage/100) + intImageSpacer;
  }

  function ShowImage(Image) {
    document.getElementById(Image).style.display = 'inline';
  }
  
  function HideImage(Image) {
    document.getElementById(Image).style.display = 'none';
  }

  function ActivateEvents() {
    for (x=0; x<arrSubTopicIDList.length ; x++) {
      intCounter = 1;
      for (y=0; y<arrSubTopicID.length; y++) {
        // alert(arrSubTopicIDList[x] + " // " + arrSubTopicID[y]);
        if (arrSubTopicIDList[x] == arrSubTopicID[y]) {
          strImageSetNode = (x+1).toString();
          strImageNameNode = intCounter.toString();
          strImageSet = 'ImageSet' + strImageSetNode;
          strImageName = 'Image' + strImageSetNode + '_' + strImageNameNode;
          if (y != intZoomImageNode) {
            //eval("document.getElementById('" + strImageName + "').onmouseover = ZoomElement_" + (x+1).toString() + "_" + strImageNameNode);
            eval("document.getElementById('" + strImageName + "').onclick = ZoomElement_" + (x+1).toString() + "_" + strImageNameNode);
          }
          else {
            // Setup the Click-To-Url Action
            //eval("document.getElementById('" + strImageName + "').onclick = NavigateToProduct");
            if (!boolIsZoomed && !boolPopupActive) {
              eval("document.getElementById('" + strImageName + "').onmouseover = ZoomCentralNode");
              eval("document.getElementById('" + strImageName + "').onclick = ZoomCentralNode");
            }
            else {
              document.getElementById(strImageName).onmouseover = "";
              document.getElementById(strImageName).onclick = "";
            }
          }
          
          intCounter++;
        }
      }
    }
  }

  function DisableEvents(Image, Set, Node) {
    for (x=0; x<arrImageName.length ; x++) {
      //document.getElementById(arrImageName[x]).onmouseover = "";
      document.getElementById(arrImageName[x]).onclick = "";
      document.getElementById(arrImageName[x]).onmouseover = "";
    }
  }

  function ActivateNavigationEvents(Set) {
    var strNavigationType = "Single";  // Types = "Set", "Single"
    
    if (strNavigationType = "Set") { // (parseInt(Set) == -1) {
      document.getElementById('Nav_Right').onclick = Initialize_0;
      document.getElementById('Nav_Left').onclick  = Initialize_1;
    }
    if (strNavigationType = "Single") {
      document.getElementById('Nav_Right').onclick = Shift_Right;
      document.getElementById('Nav_Left').onclick  = Shift_Left;
    }
  }

  function UpdateSubTitle(Set) {
    return;  // No Longer Being Used
    for (x=0; x<arrSubTopicIDList.length; x++) {
      strSubTitle = "SubTitle_" + x.toString();
      if (parseInt(x) == parseInt(Set)) {
        //document.getElementById(strSubTitle).style.display = 'inline';
        SetElementOpacity(strSubTitle, 99);
      }
      else {
        //document.getElementById(strSubTitle).style.display = 'none';
        SetElementOpacity(strSubTitle, 00);
      }
    }
  }

  function NavigateToProduct() {
    try {
      location.href = arrProdUrl[intZoomImageNode];
    }
    catch(e) { /* Fail Safely */ }
  }

  function ZoomElement_1_1()  { ZoomToElement("0", "Image1_1"); }
  function ZoomElement_1_2()  { ZoomToElement("0", "Image1_2"); }
  function ZoomElement_1_3()  { ZoomToElement("0", "Image1_3"); }
  function ZoomElement_1_4()  { ZoomToElement("0", "Image1_4"); }
  function ZoomElement_1_5()  { ZoomToElement("0", "Image1_5"); }
  function ZoomElement_1_6()  { ZoomToElement("0", "Image1_6"); }
  function ZoomElement_1_7()  { ZoomToElement("0", "Image1_7"); }
  function ZoomElement_1_8()  { ZoomToElement("0", "Image1_8"); }
  function ZoomElement_1_9()  { ZoomToElement("0", "Image1_9"); }
  function ZoomElement_1_10() { ZoomToElement("0", "Image1_10"); }
  function ZoomElement_1_11() { ZoomToElement("0", "Image1_11"); }
  function ZoomElement_1_12() { ZoomToElement("0", "Image1_12"); }
  function ZoomElement_1_13() { ZoomToElement("0", "Image1_13"); }
  function ZoomElement_1_14() { ZoomToElement("0", "Image1_14"); }
  function ZoomElement_1_15() { ZoomToElement("0", "Image1_15"); }
  function ZoomElement_1_16() { ZoomToElement("0", "Image1_16"); }
  function ZoomElement_1_17() { ZoomToElement("0", "Image1_17"); }
  function ZoomElement_1_18() { ZoomToElement("0", "Image1_18"); }
  function ZoomElement_1_19() { ZoomToElement("0", "Image1_19"); }
  function ZoomElement_1_20() { ZoomToElement("0", "Image1_20"); }

  function ZoomElement_2_1()  { ZoomToElement("1", "Image2_1"); }
  function ZoomElement_2_2()  { ZoomToElement("1", "Image2_2"); }
  function ZoomElement_2_3()  { ZoomToElement("1", "Image2_3"); }
  function ZoomElement_2_4()  { ZoomToElement("1", "Image2_4"); }
  function ZoomElement_2_5()  { ZoomToElement("1", "Image2_5"); }
  function ZoomElement_2_6()  { ZoomToElement("1", "Image2_6"); }
  function ZoomElement_2_7()  { ZoomToElement("1", "Image2_7"); }
  function ZoomElement_2_8()  { ZoomToElement("1", "Image2_8"); }
  function ZoomElement_2_9()  { ZoomToElement("1", "Image2_9"); }
  function ZoomElement_2_10() { ZoomToElement("1", "Image2_10"); }
  function ZoomElement_2_11() { ZoomToElement("1", "Image2_11"); }
  function ZoomElement_2_12() { ZoomToElement("1", "Image2_12"); }
  function ZoomElement_2_13() { ZoomToElement("1", "Image2_13"); }
  function ZoomElement_2_14() { ZoomToElement("1", "Image2_14"); }
  function ZoomElement_2_15() { ZoomToElement("1", "Image2_15"); }
  function ZoomElement_2_16() { ZoomToElement("1", "Image2_16"); }
  function ZoomElement_2_17() { ZoomToElement("1", "Image2_17"); }
  function ZoomElement_2_18() { ZoomToElement("1", "Image2_18"); }
  function ZoomElement_2_19() { ZoomToElement("1", "Image2_19"); }
  function ZoomElement_2_20() { ZoomToElement("1", "Image2_20"); }

  function ZoomElement_3_1()  { ZoomToElement("2", "Image3_1"); }
  function ZoomElement_3_2()  { ZoomToElement("2", "Image3_2"); }
  function ZoomElement_3_3()  { ZoomToElement("2", "Image3_3"); }
  function ZoomElement_3_4()  { ZoomToElement("2", "Image3_4"); }
  function ZoomElement_3_5()  { ZoomToElement("2", "Image3_5"); }
  function ZoomElement_3_6()  { ZoomToElement("2", "Image3_6"); }
  function ZoomElement_3_7()  { ZoomToElement("2", "Image3_7"); }
  function ZoomElement_3_8()  { ZoomToElement("2", "Image3_8"); }
  function ZoomElement_3_9()  { ZoomToElement("2", "Image3_9"); }
  function ZoomElement_3_10() { ZoomToElement("2", "Image3_10"); }
  function ZoomElement_3_11() { ZoomToElement("2", "Image3_11"); }
  function ZoomElement_3_12() { ZoomToElement("2", "Image3_12"); }
  function ZoomElement_3_13() { ZoomToElement("2", "Image3_13"); }
  function ZoomElement_3_14() { ZoomToElement("2", "Image3_14"); }
  function ZoomElement_3_15() { ZoomToElement("2", "Image3_15"); }
  function ZoomElement_3_16() { ZoomToElement("2", "Image3_16"); }
  function ZoomElement_3_17() { ZoomToElement("2", "Image3_17"); }
  function ZoomElement_3_18() { ZoomToElement("2", "Image3_18"); }
  function ZoomElement_3_19() { ZoomToElement("2", "Image3_19"); }
  function ZoomElement_3_20() { ZoomToElement("2", "Image3_20"); }

  function Initialize_0() { NavigateToSet(0, 0); }
  function Initialize_1() { NavigateToSet(1, 0); }
  function Initialize_2() { NavigateToSet(2, 0); }

  function ResetGlobalCounters() {
    intGlobalIterationCount = 0;  
    intGlobalZoomCount = 0;
  }

  function ResetGlobalFadeCounter_Popup() {
    intGlobalFadeIterationCount_Popup = 0;
  }

  function ResetGlobalFadeCounter_Product() {
    intGlobalFadeIterationCount_Product = 0;
  }

  function ResetAllQuantities() {
    //for (x = 0; x<arrProdQtyListName.length; x++) {
    //  document.getElementById(arrProdQtyListName[x]).selectedIndex = 0;
    //}
  }

