﻿/* Copyright (c) 2009 Lucht Studios, no portion of this code may be reproduced, copied, or in any way reused without express written permission of Lucht Studios (www.LuchtStudios.com) */
var _clickedDetail=0;
var ls__nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
var _maxImages = 5;
var _imageZoomPrefix = 'imgZoom';
var _imageZoomPanel = 'pnlImageZoom';
var _imageFrameBackdrop;

/*******************************************************/
function ls_ShowElement(id) {
  ls_getElementById(id).style.display = 'block'; 
}

/*******************************************************/
function showImageDetail(rowId) {
  var asTables;
  asTables = _TablesDetail.split('|');
  try {
    for (var i=0; i<10; i++) {
      if (i==rowId) {
        try {
          ls_ShowElement(asTables[i]);
        } catch(e) {}
      } else {
        try {
          document.getElementById(asTables[i]).style.display = 'none';
        } catch(e) {}
      }
    }
  } catch(e) {}

  if (_clickedDetail==0) {
    window.location = '#ImagesTop';
  }
  _clickedDetail = 1;
  
  imageZoomHide();
}

/*******************************************************/
function addToCart(itemNumber, itemName, itemPrice) {
  document.getElementById('item_number').value = itemNumber;
  document.getElementById('item_name').value = itemName;
  document.getElementById('item_amount').value = itemPrice;

      if (itemNumber=='' && itemName=='' && itemPrice=='') {
        try {
          document.getElementById('item_add').value = '';
        } catch(e) {}
        try {
          document.getElementById('item_display').value = '1';
        } catch(e) {}
      }
  
  document.forms[0].action = 'https://www.paypal.com/cgi-bin/webscr';
  document.forms[0].target = '_blank';
  
  document.forms[0].submit();
} 

/*******************************************************/
function addToCartRow(itemNumber, itemTitleOnly, itemRowNumber, itemDescription, itemPrice) { 
/* 20081025: Initial creation */
  var sItemName;
  sItemName = 
    itemTitleOnly + ' -- ' + itemDescription;
    
  addToCart(itemNumber + ' (' + itemRowNumber + ')', sItemName, itemPrice);
} 

/*******************************************************/
function addToCartRowOption(itemNumber, itemTitleOnly, itemRowNumber, itemDescription, itemPrice, optionListValue, optionListIndex) { 
/* 20081025: Initial creation */
  var sItemName;
  sItemName = 
    itemTitleOnly + ' -- ' + itemDescription + ' (' + optionListValue + ')';
    
  addToCart(itemNumber + ' (' + itemRowNumber + '-' + (optionListIndex + 1) + ')', sItemName, itemPrice);
} 
    
/*******************************************************/
function imageZoomPosition(rowId) {
  var iLeft;
  var iZoomOffsetTop;
  var dImageWidth;

  try {
    dImageWidth = ls_getElementPosition(ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix + rowId)).width;
      
    if ((dImageWidth * 0.9) > ls_getElementPosition(ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix + rowId)).height) {
      iZoomOffsetTop = 40;
    } else {
      iZoomOffsetTop = 4;
    }
      
    iLeft = ls_getElementPosition(document.body).width;
    iLeft = iLeft / 2;
    iLeft = iLeft - (ls_getElementPosition(ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix + rowId)).width / 2);
    
    ls_SetElementY(ls_getElementById(_imageZoomHostPrefix + _imageZoomPanel), ls_GetScrollY() + iZoomOffsetTop); 
    ls_SetElementX(ls_getElementById(_imageZoomHostPrefix + _imageZoomPanel), iLeft);
  } catch (e) {}
}

/*******************************************************/
function imageZoomShow(rowId) {
/* 20081025: Added code to lay an iframe under the image for ie6- (for overlaying dropdown lists) */
  try {
    /* Hide them all */
    for (var i=1; i<=_maxImages; i++) {
      try {
        ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix + i).style.display = 'none';
      } catch(e) {}
    }
    
    ls_ShowElement(_imageZoomHostPrefix + _imageZoomPrefix + rowId);
    imageZoomPosition(rowId);

    ls_ShowElement(_imageZoomHostPrefix + _imageZoomPanel);    
  } catch (e) {}
  
  fixIEoverlay();
}

/*******************************************************/
function fixIEoverlay() {
/* 20081025: Initial creation */
  try { /* check if it's ie6- and underlay iframe */
    var oIETest = /MSIE (\d+\.\d+);/g.exec(navigator.userAgent);  /* Look for 'MSIE x.x;' */
    var iVersion;
    if (oIETest) {
      iVersion = parseInt(/\d+/g.exec(oIETest[0])); 
      if (iVersion < 7) {
        if (!_imageFrameBackdrop) {
          _imageFrameBackdrop = document.createElement('iframe');
          _imageFrameBackdrop.frameBorder = 0;
          document.body.appendChild(_imageFrameBackdrop);
        }
        var oImageHost = ls_getElementById(_imageZoomHostPrefix + _imageZoomPanel);
        oImageHost.style.zIndex = '2';
        ls_SetElementY(_imageFrameBackdrop, ls_getElementPosition(oImageHost).y); 
        ls_SetElementX(_imageFrameBackdrop, ls_getElementPosition(oImageHost).x);
        ls_SetElementWidth(_imageFrameBackdrop, ls_getElementPosition(oImageHost).width);
        ls_SetElementHeight(_imageFrameBackdrop, ls_getElementPosition(oImageHost).height-2);
        _imageFrameBackdrop.style.position = 'absolute';
        _imageFrameBackdrop.style.zIndex = '1';
        _imageFrameBackdrop.style.display = 'block';
      }
    }
  } catch (e) {}
}

/*******************************************************/
function imageZoomHide() {
  /* 20081025: Added _imageFrameBackdrop */
  try {
    ls_getElementById(_imageZoomHostPrefix + _imageZoomPanel).style.display = 'none';

    /* reset everything on the zoom image */
    ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix).style.height = '';
    ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix).style.width = '';
    ls_getElementById(_imageZoomHostPrefix + _imageZoomPrefix).src = '';    
  } catch (e) {}
  
  try {
    if (_imageFrameBackdrop) {
      _imageFrameBackdrop.style.display='none';
    }
  } catch(e){}
}

/*******************************************************/
function ls_GetScrollY() {
  if (ls__nonMSDOMBrowser) {
      return window.pageYOffset;
  } else {
    if (document.documentElement && document.documentElement.scrollTop) {
        return document.documentElement.scrollTop;
    } else if (document.body) {
        return document.body.scrollTop;
    }
  }
  return 0;
}

/*******************************************************/
function ls_getElementById(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    } else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}

/*******************************************************/
function ls_SetElementX(element, x) {
    if (element && element.style) {
        element.style.left = x + "px";
    }
}

/*******************************************************/
function ls_SetElementY(element, y) {
    if (element && element.style) {
        element.style.top = y + "px";
    }
}

/*******************************************************/
function ls_SetElementHeight(element, height) {
    if (element && element.style) {
        element.style.height = height + "px";
    }
}

/*******************************************************/
function ls_SetElementWidth(element, width) {
    if (element && element.style) {
        element.style.width = width + "px";
    }
}

/*******************************************************/
function ls_getElementPosition(element) {
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft
            ) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    } else if (element.clientWidth && element.clientHeight) {
        result.width = element.clientWidth;
        result.height = element.clientHeight;
    } if (element.style && element.style.width && element.style.height) {
        result.width = parseInt(element.style.width);
        result.height = parseInt(element.style.height);    
    }

    return result;
}

var pageInfo = {
    bodyWrapPanel : null,
    thumbDirectToZoom: false,
    thumbShowSelected: true,
    thumbsPerPanel: 8,
    zoomImageWaitUrl: 'assets/wait.gif',
    nowShowingIndex: 0,
    nowShowingPanel: 0,
    panelCount: 0,
    pageElements: [] /* {imageThumb, imageThumbLarge, detailPanel, detailZoomLink, detailTextPanel} */, 
    thumbPanels: [],
    zoomPanels: [] /* {html, element, image, detailTextPanel} */ ,
    initializePortfolioPage: function() {
        var thumbs = $('.thumbAllImageWrap img');
        var details = $('.portfolioDetailWrap');
        var sTemp;

        for (var i = 0; i < thumbs.length; i++) {
            var oTemp;
            var oDetailTextPanel;
            var oImageThumbLarge;

            oImageThumbLarge = details.eq(i).find('.imgDetail:first');
            oDetailTextPanel = details.eq(i).children('.portfolioInfoWrap:first');
            if (oDetailTextPanel.children(':first').length == 1) {
                oDetailTextPanel = oDetailTextPanel.get(0);

                /* check for a "blank" table */
                try {                
                    if (($(oDetailTextPanel).children(':first').attr('tagName')).toString().toLowerCase() == 'table') {
                        if ($(oDetailTextPanel).text().trim() == '') {
                            oDetailTextPanel = null;
                        }
                    }
                } catch (e) { }
            } else {
                oDetailTextPanel = null
            }
            var oDocObjs = {
                imageThumb: thumbs.get(i),
                imageThumbLarge: (oImageThumbLarge.length == 1) ? oImageThumbLarge.get(0) : null,
                detailPanel: details.get(i),
                detailTextPanel: oDetailTextPanel
            };
            thumbs.eq(i)
                .data('elementIndex', i)
                .attr('style', '')
                .hover(function() {$(this).addClass('hover')}, function() {$(this).removeClass('hover')});
            if (oImageThumbLarge.length == 1) oImageThumbLarge.data('elementIndex', i)

            /* get zoom icon */
            oTemp = $(details[i]).find('.imgDetailLink:first');
            if (oTemp.length == 1) {
                oDocObjs.detailZoomLink = oTemp.get(0);
                oTemp.data('elementIndex', i);
            } else {
                oDocObjs.detailZoomLink = null;
            }

            pageInfo.pageElements.push(oDocObjs);

            /* build zoom panel */
            sTemp = $(oDocObjs.imageThumb).attr('src');
            sTemp = sTemp.substring(0, sTemp.length - 8) + '0600.jpg';            
            pageInfo.zoomPanels.push({
                html:
                    '<div style="display: none;" class="jq3ZoomItemWrap ' + ((!oDocObjs.detailTextPanel) ? 'jq3ZoomItemNoData' : '') + '" id="jqZoomItemWrap' + i + '">' +
                        '<div class="jq3ZoomImageWrap" id="jqZoomImageWrap' + i + '">' +
                            '<img src="' + sTemp + '" alt="" oncontextmenu="return false;" onselectstart="return false;" ondragstart="return false;" />' +
                        '</div>' +
                        '<div class="jq3ZoomData" id="jq3ZoomData' + i + '">' +
                        '</div>' +
                    '</div>'
                ,
                element: null
            });

            /* setup the thumbs to click to the large thumb or to zoom; setup large thumb to zoom */
            var oDirectToZoom = null;
            if (pageInfo.thumbDirectToZoom) {
                $(oDocObjs.imageThumb).click(pageInfo.pageToZoomFromClick);
            } else {
                if (oDocObjs.detailZoomLink) {
                    $(oDocObjs.detailZoomLink).click(pageInfo.pageToZoomFromClick);
                    if (oDocObjs.imageThumbLarge) {
                        $(oDocObjs.imageThumbLarge).click(pageInfo.pageToZoomFromClick);
                    }
                }

                $(oDocObjs.imageThumb).click(pageInfo.pageShowItemFromClick);
            }
        } /* for each thumb */

        /* make thumb panels */
        var oThumbWraps = $('.thumbAllImageWrap');
        var sHtml;
        var iPanel = 0;
        for (var i = 0; i < oThumbWraps.length; i = i + pageInfo.thumbsPerPanel) {
            sHtml =
                '<div id="jq3ThumbsWrapPanel' + iPanel + '" class="jq3ThumbsWrapPanel"></div>'
            oThumbWraps.slice(i, i + pageInfo.thumbsPerPanel).wrapAll(sHtml);
            $('#jq3ThumbsWrapPanel' + iPanel).data('panelIndex', iPanel);
            pageInfo.panelCount = iPanel + 1;
            iPanel++;
        };
        
        if (oThumbWraps.length <= pageInfo.thumbsPerPanel) $('#thumbAllNav').addClass('noPrevNext');
        if (oThumbWraps.length == 1) $('#thumbAllNav').addClass('noSlideshow');
        
        $('#thumbNavPrev').click(function(event) {
            try { event.preventDefault(); } catch (e) { }
            pageInfo.panelMoveBy(-1);
        });
        $('#thumbNavNext').click(function(event) {
            try { event.preventDefault(); } catch (e) { }
            pageInfo.panelMoveBy(1);
        });
        $('#thumbNavSlideshow').click(function(event) {
            try { event.preventDefault(); } catch (e) { }
            pageInfo.pageToZoom(pageInfo.nowShowingIndex, true);
        });
        $('.jq3ThumbsWrapPanel').not('#jq3ThumbsWrapPanel0').hide();
        if (pageInfo.bodyWrapPanel.hasClass('activeClipText')) pageInfo.initializePortfolioPageTextTitle();
    }, /* initializePortfolioPage */
    panelMoveBy: function(moveBy) {
        var iImage;
        var iNewPanel;
        iNewPanel = pageInfo.nowShowingPanel + moveBy;
        if (iNewPanel >= pageInfo.panelCount) iNewPanel = 0;
        if (iNewPanel < 0) iNewPanel = pageInfo.panelCount - 1;
        pageInfo.panelMoveTo(iNewPanel, moveBy, function() {
            pageInfo.nowShowingIndex = $('#jq3ThumbsWrapPanel' + pageInfo.nowShowingPanel).find('.thumbAllImageWrap:first img').data('elementIndex');
            pageInfo.pageShowItem(pageInfo.nowShowingIndex);            
        });
    },
    panelMoveTo: function(index, direction, callback) {
        var iLastPanel = pageInfo.nowShowingPanel;
        var iMoveOldTo;
        var iMoveNewFrom;
        var iTime = 600;

        if (direction == 0) iTime = 0;

        $('.portfolioDetailWrap').hide();

        if (direction >= 0) {
            iMoveNewFrom = $('#thumbAllInnerWrap').width();
            iMoveOldTo = -1 * iMoveNewFrom;
        } else {
            iMoveOldTo = $('#thumbAllInnerWrap').width();
            iMoveNewFrom = -1 * iMoveOldTo;
        }
        pageInfo.nowShowingPanel = index;
        pageInfo.portfolioPageShowSelectedImage();

        $('#jq3ThumbsWrapPanel' + iLastPanel).animate({ left: iMoveOldTo }, parseInt(iTime * 0.7), function() {
            $('#jq3ThumbsWrapPanel' + pageInfo.nowShowingPanel).css({ left: iMoveNewFrom }).show().animate({ left: 0 }, iTime, callback);
        });
    },
    pageToZoomFromClick: function(event) {
        try { event.preventDefault(); } catch (e) { }
        var oTarget = $(event.target);

        var index = oTarget.data('elementIndex');
        if (index === undefined) index = oTarget.parent().data('elementIndex');
        pageInfo.pageToZoom(index);
    },
    pageShowItemFromClick: function(event) {
        try { event.preventDefault(); } catch (e) { }
        var oTarget = $(event.target);
        var index = oTarget.data('elementIndex');
        if (index === undefined) index = oTarget.find('img:first').data('elementIndex');
        pageInfo.pageShowItem(index);
    },
    pageShowItem: function(index) {
        pageInfo.nowShowingIndex = index;
        $('.portfolioDetailWrap').hide();
        pageInfo.portfolioPageShowSelectedImage();
        
        if (pageInfo.pageElements[index].imageThumbLarge) {
            if (pageInfo.pageElements[index].detailTextPanel) $(pageInfo.pageElements[index].detailTextPanel).hide();
            $(pageInfo.pageElements[index].imageThumbLarge).stop().show().css({ opacity: 0 });
            $(pageInfo.pageElements[index].detailPanel).show();
            $(pageInfo.pageElements[index].imageThumbLarge).show().animate({ opacity: 1 }, 800, function() {
                if (pageInfo.pageElements[index].detailTextPanel) $(pageInfo.pageElements[index].detailTextPanel).show();
            });
        }
    },
    portfolioPageShowSelectedImage: function() {
        $('.thumbAllImageWrap').removeClass('selected');
        if (pageInfo.thumbShowSelected) $('.thumbAllImageWrap').eq(pageInfo.nowShowingIndex).addClass('selected');

        $('#thumbNavShowingPage').text((pageInfo.nowShowingPanel + 1) + ' of ' + pageInfo.panelCount);
    },
    pageToZoom: function(index, startSlideshow) {
        pageInfo.slideshow.showOverlay(function() {
            pageInfo.slideshow.showZoomPanel(index, function() {
                if (startSlideshow) {
                    pageInfo.slideshow.playToggle(false, true);
                }
            });
        });
    },
    showTitleDescriptionMore: function(event) {
        try { event.preventDefault(); } catch (e) { }
        var sHtml =
            '<div id="jq3TitleTextOverlay">' +
                '<div id="jq3TitleTextWrap">' +
                    '<div id="jq3TitleTextMenuWrap">' +
                        '<a id="jq3TitleTextMenuClose" href="#close"></a>' +
                    '</div>' +
                    '<div id="jq3TitleTextDataWrap"></div>' +
                '</div>' +
            '</div>';

        var oPanel = $('#jq3TitleTextOverlay');
        if (oPanel.length == 0) {
            oPanel = $(sHtml).appendTo('body').hide();
            $(window).resize(function() { $('#jq3TitleTextOverlay').height($(document).height() + 100) });

            $('.titleTextWrap:first').children(':first').clone().appendTo('#jq3TitleTextDataWrap');
            $('.titleTextBodyWrap:first').clone().appendTo('#jq3TitleTextDataWrap').css({ maxHeight: 'none', height: 'auto' });

            $('#jq3TitleTextMenuClose').click(function(event) {
                try { event.preventDefault(); } catch (e) { }
                $('#jq3TitleTextOverlay').hide();
            });
        }

        oPanel.css({ paddingTop: $(window).scrollTop() + 50, height: $(document).height() + 100 });
        oPanel.show();
    } /* showTitleDescriptionMore */,
    initializePortfolioPageTextTitle: function() {
        var iHeight = $('.titleTextBodyWrap:first').css({maxHeight: '3.15em', overflow: 'hidden'}).height();
        var oTitleTextBodyWrap = $('.titleTextBodyWrap:first');
        oTitleTextBodyWrap.css({ maxHeight: (iHeight + 5) + 'px' });
        if (oTitleTextBodyWrap.height() > iHeight) {
            oTitleTextBodyWrap.height(iHeight);
            oTitleTextBodyWrap.after('<div id="jq3TextTitleDescriptionMore" class="jq3TextTitleDescriptionMore"><a class="jq3TextTitleDescriptionMoreLink" title="Full Description..." href="#"> </a></div>');
            var oDescriptionMore = $('#jq3TextTitleDescriptionMore');
            oDescriptionMore.click(pageInfo.showTitleDescriptionMore);
        }
    } /* initializePortfolioPageTextTitle */,
    slideshow: {
        playing: false,
        showOverlay: function(callback) {
            var oPanel = $('#jq3ZoomOverlay');
            var sHtml =
                '<div id="jq3ZoomOverlay">' +
                    '<div id="jq3ZoomWrap">' +
                        '<div id="jq3ZoomMenuWrap">' +
                            '<a id="jq3ZoomMenuPrev" href="#previous"></a>' +
                            '<a id="jq3ZoomMenuNext" href="#next"></a>' +
                            '<div id="jq3ZoomMenuInfoWrap"><div id="jq3ZoomMenuInfo"></div></div>' +
                            '<a id="jq3ZoomMenuSlideshow1" href="#slideshow"></a>' +
                            '<a id="jq3ZoomMenuSlideshow2" href="#slideshow"></a>' +
                            '<div id="jq3ZoomMenuSlideshowClockWrap"><div id="jq3ZoomMenuSlideshowClock"></div></div>' +
                            '<div id="jq3ZoomMenuPadding"></div>' +
                            '<a id="jq3ZoomMenuClose" href="#close"></a>' +
                            '' +
                        '</div>' +
                        '<div id="jq3ZoomDataWrap">' +
                            '<div class="jq3ZoomImageWrap jq3ZoomImageWrapWait" id="jq3ZoomImageWrapWait">' +
                                '<img src="' + pageInfo.zoomImageWaitUrl + '" alt="" oncontextmenu="return false;" onselectstart="return false;" ondragstart="return false;" />' +
                            '</div>' +
                        '</div>' +
                    '</div>' +
                '</div>';

            if (oPanel.length == 0) {
                oPanel = $(sHtml).appendTo('body').hide();
                $(window).resize(function() { $('#jq3ZoomOverlay').height($(document).height() + 100) });
                pageInfo.slideshow.dataWrapPanel = $('#jq3ZoomDataWrap').get(0);

                $('#jq3ZoomMenuPrev').click(function(event) {
                    try { event.preventDefault(); } catch (e) { }
                    pageInfo.slideshow.playToggle(true);
                    pageInfo.slideshow.showPrevious();
                });
                $('#jq3ZoomMenuNext').click(function(event) {
                    try { event.preventDefault(); } catch (e) { }
                    pageInfo.slideshow.playToggle(true);
                    pageInfo.slideshow.showNext();
                });
                $('#jq3ZoomMenuSlideshow1,#jq3ZoomMenuSlideshow2').click(function(event) {
                    try { event.preventDefault(); } catch (e) { }
                    pageInfo.slideshow.playToggle();
                });
                $('#jq3ZoomMenuClose').click(function(event) {
                    try { event.preventDefault(); } catch (e) { }
                    pageInfo.slideshow.closeZoomPanel();
                })
            }
            oPanel.css({ paddingTop: $(window).scrollTop() + 5, height: $(document).height() + 100 });
            oPanel.show();

            if (callback) callback.call();

            return oPanel;
        },
        playToggle: function(forceStop, waitOnCurrent) {
            if (forceStop) {
                pageInfo.slideshow.playing = false;
            } else {
                pageInfo.slideshow.playing = !(pageInfo.slideshow.playing);
            }

            pageInfo.slideshow.showStatus();

            if (pageInfo.slideshow.playing) {
                if (waitOnCurrent) {
                    pageInfo.slideshow.slideshowWaitNext();
                } else {
                    pageInfo.slideshow.showNext();
                }
            } else {
                $('#jq3ZoomMenuSlideshowClock').stop(true, false).css({ backgroundPosition: '0px 9px' });
            }
        },
        closeZoomPanel: function() {
            pageInfo.slideshow.playToggle(true);
            $('#jq3ZoomOverlay').hide();

            var iPanel = $(pageInfo.pageElements[pageInfo.nowShowingIndex].imageThumb).closest('.jq3ThumbsWrapPanel').data('panelIndex');
            pageInfo.panelMoveTo(iPanel, 0);
            pageInfo.pageShowItem(pageInfo.nowShowingIndex);
        },
        slideshowWaitNext: function() {
            var iTime = 250;
            var iTop = 9;
            $('#jq3ZoomMenuSlideshowClock').stop(true)
                .animate({ backgroundPosition: '0px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '0px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-20px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-20px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-40px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-40px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-60px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-60px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-80px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-80px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-100px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-100px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-120px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-120px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-140px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-140px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-160px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-160px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-180px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-180px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-200px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-200px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-220px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-220px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-240px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-240px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-260px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-260px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-280px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-280px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-300px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-300px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-320px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-320px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-340px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-340px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-360px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-360px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-380px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-380px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-400px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-400px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-420px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-420px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-440px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-440px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '-460px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '-460px ' + iTop + 'px' }, iTime)
                .animate({ backgroundPosition: '0px ' + iTop + 'px' }, 0)
                .animate({ backgroundPosition: '0px ' + iTop + 'px' }, iTime, pageInfo.slideshow.showNext)
        },
        showNext: function() {
            if (pageInfo.nowShowingIndex < pageInfo.zoomPanels.length - 1) {
                pageInfo.slideshow.showZoomPanel(pageInfo.nowShowingIndex + 1);
            } else {
                pageInfo.slideshow.showZoomPanel(0);
            }
        },
        showPrevious: function() {
            if (pageInfo.nowShowingIndex > 0) {
                pageInfo.slideshow.showZoomPanel(pageInfo.nowShowingIndex - 1);
            } else {
                pageInfo.slideshow.showZoomPanel(pageInfo.zoomPanels.length - 1);
            }
        },
        dataWrapPanel: null,
        loadZoomPanel: function(index, callback) {
            if (!pageInfo.zoomPanels[index].element) {
                pageInfo.zoomPanels[index].element = $(pageInfo.zoomPanels[index].html).appendTo(pageInfo.slideshow.dataWrapPanel).get(0);
                pageInfo.zoomPanels[index].image = $(pageInfo.zoomPanels[index].element).find('.jq3ZoomImageWrap img').get(0);
                $(pageInfo.zoomPanels[index].image).click(pageInfo.slideshow.closeZoomPanel);

                if (pageInfo.pageElements[index].detailTextPanel) {
                    pageInfo.zoomPanels[index].detailTextPanel =
                        $(pageInfo.pageElements[index].detailTextPanel).clone().appendTo($(pageInfo.zoomPanels[index].element).find('.jq3ZoomData').get(0));
                }
            }
            if (callback) {
                $(pageInfo.zoomPanels[index].image).ready(callback);
            }
        } /* loadZoomPanel */,
        showStatus: function() {
            $('#jq3ZoomMenuInfo').text((pageInfo.nowShowingIndex + 1) + ' of ' + pageInfo.zoomPanels.length);
            if (pageInfo.slideshow.playing) {
                $('#jq3ZoomMenuWrap').addClass('jq3SlideshowPlaying');
            } else {
                $('#jq3ZoomMenuWrap').removeClass('jq3SlideshowPlaying');
            }
        },
        showZoomPanel: function(index, callback) {
            $('.jq3ZoomItemWrap').hide();
            $('.jq3ZoomItemWrap *').stop(true);
            $('#jq3ZoomImageWrapWait').show();
            pageInfo.nowShowingIndex = index;
            pageInfo.slideshow.showStatus();

            pageInfo.slideshow.loadZoomPanel(index, function() {
                var oImage = $(pageInfo.zoomPanels[index].image).eq(0);
                var oDetail = (pageInfo.zoomPanels[index].detailTextPanel) ? $(pageInfo.zoomPanels[index].detailTextPanel) : null;
                var oPanel = $(pageInfo.zoomPanels[index].element);

                $('#jq3ZoomImageWrapWait').hide();
                if (oDetail) oDetail.hide();
                oImage.hide().css({ opacity: 0 }).show();
                oPanel.show();
                oImage.animate({ opacity: 1 }, 1000, function() {
                    if (oDetail) oDetail.show();
                    if (pageInfo.slideshow.playing) pageInfo.slideshow.slideshowWaitNext();

                    if (callback) callback.call();
                });
            });

        } /* showZoomPanel */
    } /* slideshow */
};
try { /* Jquery may not be available */
$(document).ready(function() {        
    if (pageInfo.bodyWrapPanel.hasClass('.dotcomFull.portfolio')) {
        if (pageInfo.bodyWrapPanel.hasClass('.activeSideThumbs15')) {
            pageInfo.thumbsPerPanel = 15;
            pageInfo.thumbDirectToZoom = true;
            pageInfo.thumbShowSelected = false;
        }
            
        pageInfo.initializePortfolioPage();
        pageInfo.portfolioPageShowSelectedImage();
    } /* if */
    if (pageInfo.bodyWrapPanel.hasClass('.v3.dropMenu')) {
        $('.v3.dropMenu .menu li.GrandParent li.Parent')
            .hover(
                function() {$(this).addClass('jqDropMenuHover')}, 
                function() {$(this).removeClass('jqDropMenuHover')});
        $('.v3.dropMenu .menu li.GrandParent li.Parent a').not('li.Child a')
            .click(
                function(event) {
                    try { event.preventDefault(); } catch (e) { }
                }
            );
    } /* if */
}); /* ready */
} catch(exReady) {};
function preReadyInit() {
    pageInfo.bodyWrapPanel = $('.bodyWrap:first');
    pageInfo.bodyWrapPanel.addClass('jsOn');
    
    $('.logoSection')
        .css({cursor:'pointer'})
        .click(function() {
            window.location = 'default.aspx';
        });
} /* preReadyInit */
    
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}    
