// JavaScript Document

Cufon.replace('.main-nav a, .stores-locator-list span.title', { fontFamily: 'HelveticaNeueHvCn', hover:true });
Cufon.replace('.sub-nav a, .press-login-form .register-message', { fontFamily: 'HelveticaNeueCn', hover:true });
Cufon.replace('.pull-holder span', { fontFamily: 'HelveticaNeueMdCn', hover:true });
Cufon.replace('.articles-list .links a', { fontFamily: 'HelveticaNeueMdCn', hover:true });

Cufon.replace('h2', { fontFamily: 'HelveticaNeueHvCn' });
Cufon.replace('h1, h3, .home-carousel-holder span.title', { fontFamily: 'HelveticaNeueHvCn' });
Cufon.replace('.home-carousel-holder span.subtitle', { fontFamily: 'HelveticaNeueCn' });
Cufon.replace('.articles-list .item .press-releases-list .title', { fontFamily: 'HelveticaNeueMdCn' });

var resizeTimer;

var galleryClickTime = 200;

//$.fx.interval = 25;

var isIE = ($.browser.msie) ? true : false;

$(window).load(function(){
  fixSubMenuPos();
  initCustomInputs();
  initCustomSelects();
  initBanners();
  fixFooter();
  
}).resize(function() {
  
  fixFooter();
  
})

function refreshCustomSelects() {
    $('select.refresh').each(function () {
        var $originalSelect = $(this);
        var $selectHolder = $originalSelect.parent();
        $selectHolder.before($originalSelect);
        $selectHolder.remove();
        $originalSelect.removeClass('refresh switched');
        initCustomSelects();
    });
}

function fixSubMenuPos() {
  if ($('ul.sub-nav').length < 1) { return; }
  var posMain = parseInt($('ul.main-nav a.active').parent().offset().left);
  var posSub = parseInt($('ul.sub-nav li:first-child').offset().left);
  if (posSub - posMain > 0)  {
    $('ul.sub-nav').css('padding-right', posSub - posMain - 3);
  }
}

function onFocus(inputObj, defaultText) {
  if ($.trim($(inputObj).val()) == defaultText) {
    $(inputObj).val('').removeClass('inactive');
  }
  $(inputObj).parent().addClass('focus').removeClass('invalid');
  $('.contact-form .required-text, .contact-form .sent-text').fadeOut(200);
}

function onBlur(inputObj, defaultText) {
  if (($.trim($(inputObj).val()) == "") || ($(inputObj).val().toLowerCase() == defaultText.toLowerCase())) {
    $(inputObj).val(defaultText).addClass('inactive');
  }
  $(inputObj).parent().removeClass('focus');
}

function fixFooter() {
  $('#pageContentHolder').css('height', '');
  $('#map_canvas').css('height', '');
  if ($(window).height() - $('#pageHeaderHolder').height() - 35 > $('#pageContentHolder').height()) {
    $('#pageContentHolder').height($(window).height() - $('#pageHeaderHolder').height() - 35);
  }
  $('#map_canvas').height($('#map_canvas').parent().height() + 4);
}

function initFooterPull() {
  var $pullFooter = $('#pullFooter');
  var $pullLink = $('a.pull-link', $pullFooter);
  var $minimalState = $('.minimal', $pullFooter);
  var $maximalState = $('.maximal', $pullFooter);
  var $joinBtn = $('.join-newsletter', $pullFooter);
  
  $pullLink.click(function() { triggerPull(); });
  $joinBtn.click(function() { triggerPull(); });
  
  function triggerPull() {
    if ($pullLink.hasClass('opened')) {
      $maximalState.slideUp(200);
      $pullFooter.animate({'height': 38}, 200);
      $minimalState.delay(200).fadeIn(100);
      $pullLink.removeClass('opened');
    } else {
      $minimalState.fadeOut(100);
      $pullFooter.animate({'height': 169}, 200);
      $maximalState.slideDown(200);
      $pullLink.addClass('opened');
    }
  }
}

function initCustomInputs() {
  $('.custom-input').each(function() {
    var defaultText = $(this).data('watermark');
    if ($(this).hasClass('required')) { defaultText += ' *'; }
    if ($(this).attr('type') == 'password') {
      $(this)
      .focus(function() {
        if ($.trim($(this).val()) == '') {
          $(this).removeClass('inactive').parent().addClass('focus').find('span.password-label').hide();
        }
      })
      .blur(function() {
        if ($.trim($(this).val()) == '') {
          $(this).addClass('inactive').parent().removeClass('focus').find('span.password-label').show();
        }
      })
      .next('span.password-label')
      .html(defaultText)
      .click(function() { $(this).prev().focus(); });
    } else {
      $(this)
      .val(defaultText)
      .addClass('inactive')
      .focus(function() {
        onFocus(this, defaultText);
      })
      .blur(function() {
        onBlur(this, defaultText);
      });
    }
  });  
  
  $('.custom-textarea').each(function() {
    var defaultText = $(this).data('watermark');
    if ($(this).hasClass('required')) { defaultText += ' *'; } 
    $(this)
    .val(defaultText)
    .addClass('inactive')
    .focus(function() {
      onFocus(this, defaultText);
    })
    .blur(function() {
      onBlur(this, defaultText);
    });
  });
}

function initBanners() {
  $('.banner-item').each(function() {
    var $popup = $('span', this);
    var h = $popup.innerHeight();
    $popup.css('bottom', - h);
    $(this).hover(
      function() {
        $popup.stop(true).animate({bottom: 0}, 200);
      },
      function() {
        $popup.animate({bottom: - h}, 200);
      }
    );
  });
}

function initCustomSelects() {
  $('select.custom-select:not(.switched)').each(function() {
    var $originalSelect = $(this);
    var currentText = $originalSelect.data('watermark');
    if ($('option[selected]', $originalSelect).length > 0) {
      currentText = $('option[selected]', $originalSelect).text();
    }
    var $selectHolder = $originalSelect.wrap('<span class="select-holder"></span>').parent();
    
    if ($originalSelect.hasClass('wide')) { $selectHolder.addClass('wide'); }
    
    $selectHolder.append('<span class="input"><input class="first-state" type="text" readonly="readonly" name="" value="' + currentText + '" /><span class="arrow"><!--  --></span></span>');
    $selectHolder.append('<span class="select-list">' + optionsList($originalSelect) + '<span class="bottom"><!--  --></span></span>');
    
    var $customInput = $('span.input input', $selectHolder);
    var $customInputArrow = $('span.input span.arrow', $selectHolder);
    var $listHolder = $('span.select-list', $selectHolder);
    var scrollMove = false;
    
    $('span.input', $selectHolder).width($originalSelect.outerWidth());
    $listHolder.width($originalSelect.outerWidth() - 10);
    $customInput.width($originalSelect.outerWidth() - 36);
    
    if ($('option[selected]', $originalSelect).length > 0) {
      $customInput.removeClass('first-state');
    }
    
    $listHolder
      .mousedown(function() {
        scrollMove = true;
      })
      .mouseup(function() {
        if (scrollMove) { 
          scrollMove = false;
          $customInput.focus(); 
        };
      });
    
    $selectHolder.mouseup(function() {
      if (scrollMove) { 
        scrollMove = false;
        $customInput.focus(); 
      };
    });

    $customInput
      .bind('focus', function() {
        $selectHolder.css('position', 'relative');
        $listHolder.stop(true, true);
        $listHolder.slideDown(100);
      })
      .bind('blur', function() {
        if (!scrollMove) {
          $listHolder.slideUp(50, function() { $selectHolder.css('position', 'static'); });
        }
      });

    $customInputArrow
      .bind('mousedown', function() {
        $(this).addClass('pressed');
      })
      .bind('mouseup', function() {
        $(this).removeClass('pressed');
        $customInput.focus();
      });

    $('a', $listHolder).each(function() {
      $(this).mousedown(function(e) {
        $originalSelect.val($(this).attr('data-value'));
        $originalSelect.change();
        $customInput.val($(this).text()).removeClass('first-state');
        if (!scrollMove) {
          e.stopPropagation();
        } else {
          $listHolder.slideUp(50, function() { $selectHolder.css('position', 'static'); });
        }
      });
    });
    
    $originalSelect.addClass('switched');
  });

  function optionsList(sel) {
    var list = '';
    $('option', sel).each(function() {
      list += '<a href="javascript:void(0)" data-value="' + $(this).val() + '">' + $(this).text() + '</a>';
    });
    return list;
  }
}

function initHomeCarousel(t) {
  var $carousel = $('#homeCarouselHolder');
  $carousel.append('<div class="slides"><ul></ul></div>');
  $carousel.append('<div class="pagination"><ul></ul></div>');
  $carousel.append('<div class="titles"><ul></ul></div>');
  
  var showTime = (t && t >= 3) ? t * 1000 : 5000;
  
  var $slides = $('div.slides ul', $carousel);
  var $pagination = $('div.pagination ul', $carousel);
  var $titles = $('div.titles ul', $carousel);
  var slidesNumber = $('ul.home-carousel li', $carousel).length;
  
  var currentSlide = 0;
  var prevSlide = 0;
  var isAnimated = false;
  var links = new Array();
  
  $('ul.home-carousel li', $carousel).each(function(i) {
    $slides.append('<li><img src="' + $(this).data('image') + '" alt=""></li>');
    $pagination.append('<li style="left:-' + (103 * (slidesNumber - i - 1)) + 'px"><a href="javascript:void(0)"><ins><!--  --></ins></a></li>');
    $titles.append('<li><a href="' + $(this).data('url') + '"><span class="title">' + $(this).data('title') + '</span><span class="subtitle">' + $(this).data('subtitle') + '</span><span class="link">' + $(this).data('link-text') +  '</span></a></li>');
    links.push($(this).data('url'));
  });
  
  $('li:eq(' + currentSlide + ') a', $pagination).animate({ 'background-position': '0px 0px' }, { duration: showTime, easing: 'linear' });
  $('div.titles', $carousel).append('<a href="' + links[currentSlide] + '" class="noise"><!--  --></a>');
  
  var timer = setTimeout(function() { nextSlide(); }, showTime);
  
  $('a', $pagination).each(function (i) {
    $(this).click(function() {
      if (isAnimated) { return; }
      if (i == currentSlide) { return; }
      $('a', $pagination).stop(true, true).css({ 'background-position': '-96px 0px' });
      $('a:lt(' + i + ')', $pagination).css({ 'background-position': '-0px 0px' });
      nextSlide(i);
    });
  });
  
  function nextSlide(i) {
    if (isAnimated) { return; }
    isAnimated = true;
    clearTimeout(timer);
    
    var slidesTime = 1300;
    var titlesTime = 1000;
    
    var $prevSlide = $('li:eq(' + currentSlide +  ')', $slides);
    var $prevTitle = $('li:eq(' + currentSlide +  ')', $titles);
    
    $prevSlide.removeClass('current').animate({ 'top': 466 }, { duration: slidesTime, easing: 'easeInOutBack' });
    $prevTitle.animate({ 'top': 466 }, { duration: titlesTime, easing: 'easeInOutBack' });
    
    prevSlide = currentSlide;
    currentSlide = (i) ? i : currentSlide + 1;
    if (currentSlide == slidesNumber) { currentSlide = 0;}
    //$link.attr('href', links[currentSlide]);
    $('div.titles a.noise', $carousel).remove();
    $titles.after('<a href="' + links[currentSlide] + '" class="noise"><!--  --></a>');
    
    $('li:eq(' + currentSlide +  ')', $titles).css({ 'display': 'block', 'top': -466, 'opacity':0 }).animate({ 'top': 0, 'opacity': 1 }, { duration: titlesTime, easing: 'easeInOutBack' });
    
    $('li:eq(' + currentSlide +  ')', $slides)
      .addClass('current')
      .css({ 'top': -466, 'display': 'block' })
      .animate({ 'top': 0 }, { duration: slidesTime, easing: 'easeInOutBack',  complete: function() {
          isAnimated = false;
          //$('li:eq(' + prevSlide +  ')', $slides).hide();
          if (currentSlide == 0) { $('li a', $pagination).stop(true, true).css('background-position', '-96px 0px'); }
          $('li:eq(' + currentSlide + ') a', $pagination).animate({ 'background-position': '0px 0px' }, { duration: showTime, easing: 'linear' });
          timer = setTimeout(function() { nextSlide(); }, showTime);
        }
      });
  }
}

(function($) {
  if(!document.defaultView || !document.defaultView.getComputedStyle){ // IE6-IE8
    var oldCurCSS = $.curCSS;
    $.curCSS = function(elem, name, force){
      if(name === 'background-position'){
        name = 'backgroundPosition';
      }
      if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
        return oldCurCSS.apply(this, arguments);
      }
      var style = elem.style;
      if ( !force && style && style[ name ] ){
        return style[ name ];
      }
      return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
    };
  }
  
  var oldAnim = $.fn.animate;
  $.fn.animate = function(prop){
    if('background-position' in prop){
      prop.backgroundPosition = prop['background-position'];
      delete prop['background-position'];
    }
    if('backgroundPosition' in prop){
      prop.backgroundPosition = '('+ prop.backgroundPosition;
    }
    return oldAnim.apply(this, arguments);
  };
  
  function toArray(strg){
    strg = strg.replace(/left|top/g,'0px');
    strg = strg.replace(/right|bottom/g,'100%');
    strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
    var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
    return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
  }
  
  $.fx.step. backgroundPosition = function(fx) {
    if (!fx.bgPosReady) {
      var start = $.curCSS(fx.elem,'backgroundPosition');
      if(!start){//FF2 no inline-style fallback
        start = '0px 0px';
      }
      
      start = toArray(start);
      fx.start = [start[0],start[2]];
      var end = toArray(fx.end);
      fx.end = [end[0],end[2]];
      
      fx.unit = [end[1],end[3]];
      fx.bgPosReady = true;
    }
    //return;
    var nowPosX = [];
    nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
    nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];           
    fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

  };
})(jQuery);

function initOnlineShopLogos() {
  var $logos = $('#onlineShopLogosHolder');
  $('a', $logos).each(function() {
    $(this).hover(
      function() {
        $('img', this).css('top', -100);
      },
      function() {
        $('img', this).css('top', 0);
      }
    );
  });
}

var markers = {};
var infowindowLevel = 0;
var infoWindow;
var map;
var mgr;

function loadCountries(country, city, countriesDropdown, citiesDropdown, isId) {
    //alert("loadCountries: " + countriesDropdown);
    $.getJSON("/StoreLocatorService.ashx", {
        method: "countries"
    },
    function (data) {
        //var countriesDropdown = $("#userCountry");
        $.each(data, function () {
            if (!isId && country != "" && this.Name.toString().toLowerCase() == country.toLowerCase()) {
                countriesDropdown.append($("<option />").val(this.Id).text(this.Name).attr('selected', true));
                loadCities(this.Id, city, citiesDropdown);
            }
            else {
                countriesDropdown.append($("<option />").val(this.Id).text(this.Name));
            }
        });
    
        if (isId) {
      $('option[value=' + country + ']', countriesDropdown).attr('selected', 'selected');
            loadCities(country, city, citiesDropdown);
        }
    
        countriesDropdown.addClass("refresh");
        refreshCustomSelects();

    });
}

function loadCities(countryId, city, citiesDropdown) {
    //alert("loadCities; countryId, city, citiesDropdown: " + countryId + ", " + city + " : " + citiesDropdown);
    $.getJSON("/StoreLocatorService.ashx", {
        method: "cities",
        countryId: countryId
    },
    function (data) {
        //var citiesDropdown = $("#userCity");
        citiesDropdown.html("");
        $.each(data, function () {
            if (isNaN(city) && city != null && this.Name.toString().toLowerCase() == city.toLowerCase()) {
                citiesDropdown.append($("<option />").val(this.Id).text(this.Name).attr('selected', true));
                loadLocations(this.Id);
            }
            else {
                citiesDropdown.append($("<option />").val(this.Id).text(this.Name));
                //alert(this.Name);
            }
        });
        
        if (!isNaN(city) && city != '') {
      $('option[value=' + city + ']', citiesDropdown).attr('selected', 'selected');
            loadLocations(city);
        }
    
        citiesDropdown.addClass("refresh");
        refreshCustomSelects();
    });
}

function loadLocations(cityId) {
    //alert("loadLocations: " + cityId);
    var str = "";
    var bounds = new google.maps.LatLngBounds();
    $.getJSON("/StoreLocatorService.ashx", {
        method: "stores",
        cityId: cityId
    },
    function (data) {
        $.each(data, function () {
            if (this.Latitude != "" && this.Longitude != "" && !isNaN(this.Latitude) && !isNaN(this.Longitude)) {
                str += "<li><a href='javascript:void(0)' onclick='centerMap(" + this.Id + ")'><span class='title'>" + this.Name + "</span><span class='info'>" + this.Address + ", " + this.Zipcode + "</span></a></li>";

                var point = new google.maps.LatLng(parseFloat(this.Latitude), parseFloat(this.Longitude));

                if (bounds.isEmpty()) {
                    bounds = new google.maps.LatLngBounds(point, point);
                }
                else {
                    bounds.extend(point);
                }

                var image = new google.maps.MarkerImage('/images/marker.png');
                var shadow = new google.maps.MarkerImage('/images/marker_shadow.png');

                var marker = new google.maps.Marker({
                    icon: image,
                    shadow: shadow,
                    position: point,
                    title: this.Name,
                    info: '<div style=\'height:80px;\'><p style=\'font-family:\"Arial\",Sans; overflow:hidden; font-size:12px; color:#024731;\'><strong>' + this.Name + '</strong><br />' + this.Address + ", " + this.Zipcode + '</p></div>'
                });

                mgr.addMarker(marker, 7);

                google.maps.event.addListener(marker, 'click', function () {
                    if (infoWindow) {
                        infoWindow.close();
                    }
                    infoWindow.setZIndex(++infowindowLevel);
                    infoWindow.setContent(marker.info);
                    infoWindow.open(map, marker);
                });
                marker.infoWindow = infoWindow;
                markers[this.Id] = marker;
            }
            else {
                str += "<li><a href='javascript:void(0)' onclick='searchAddress(\"" + this.Address + ", " + this.Zipcode + ", " + $('#userCity option:selected').text() + ", " + $('#userCountry option:selected').text() + "\")'><span class='title'>" + this.Name + "</span><span class='info'>" + this.Address + ", " + this.Zipcode + "</span></a></li>";
            }

        });
        if (!bounds.isEmpty()) map.fitBounds(bounds);
        if (data.length <= 1) map.setZoom(16);
        $("#storesListHolder").html(str);
        $("#storesLocatorList").show();
    initStoresListScroll();
    });
}

function searchAddress(address) {
    //alert("searchAddress: " + address);
    var geocoder = new google.maps.Geocoder();
    var request = {};

    request.address = address;

    geocoder.geocode(request, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
            map.fitBounds(results[0].geometry.viewport);
        }
    });
}

function centerMap(markerId) {
    var marker = markers[markerId];
    var point = marker.getPosition();
    map.setCenter(point);
    map.setZoom(16);
    if (infoWindow) {
        infoWindow.close();
    }
    infoWindow.setZIndex(++infowindowLevel);
    infoWindow.setContent(marker.info);
    infoWindow.open(map, marker);
}

function initStoresListScroll() {
  var $listHolder = $('#storesListHolder').css('top', 0);
  var $scrollHolder = $('#storesListScroller');
  var $scrollBar = $('ins', $scrollHolder).css('top', 0);
  
  var listH = parseInt($listHolder.innerHeight());
  
  if (listH < 204) { 
    $scrollHolder.fadeOut(300);
    return; 
  } else {
    $scrollHolder.fadeIn(300);
  }
  
  var scrollH = Math.floor(204 * 204 / listH);
  if (scrollH < 60) { scrollH = 60; }
  
  var delta = (204 - listH) / (200 - scrollH);
  
  $scrollBar
  .height(scrollH - 4)
  .draggable({ containment: 'parent' })
  .bind('drag', function(event, ui) {
    var holderX = (parseInt($(this).position().top) - 1) * delta;
    $listHolder.css('top', holderX);
    });
  
}

function initHistory() {
  var $blocksHolder = $('#historyYearsHolder');
  var $pathDark = $('#historyPathDark');
  var $pathLight = $('#historyPathLight');
  var $pointsHolder = $('#pointsHolder');
    
  var currentPathPos = 0;
  var maxScroll = $(document).height() - document.body.clientHeight;
  var pathHeight = 1590;
  var delta = pathHeight / maxScroll;
  
  //297, 530, 762, 995, 1229, 1462
  var pointsPos = new Array(1, 227, 460, 692, 925, 1159, 1392);
  
  $('div.item', $blocksHolder).each(function(i) {
    $('h2', this).after('<h2 class="hover">' + $('h2', this).text() + '</h2>');
    var $year = $('h2.hover', this);
    var $image0 = $('.image-holder img:eq(0)', this);
    var $image1 = $('.image-holder img:eq(1)', this);
    $image0.css('opacity', 1);
    
    $(this).hover(
      function() {
        if (!$year.hasClass('light')) { $year.fadeIn(300); }
        $image0.stop(true, false).delay(100).animate({opacity: 0}, 200);
        $image1.stop(true, false).animate({opacity: 1}, 200);
      },
      function() {
        if (!$year.hasClass('light')) { $year.stop(true, true).fadeOut(300); }
        $image0.stop(true, false).animate({opacity: 1}, 100);
        $image1.stop(true, false).animate({opacity: 0}, 200);
      }
    );
  });
  Cufon.refresh('h2');
  
  setPath();
  
  $(window)
  .scroll(function() {
    setPath();
  })
  .resize(function() {
    maxScroll = $(document).height() - document.body.scrollHeight;
    delta = pathHeight / maxScroll;
  });
  
  function setPath() {
    currentPathPos = Math.floor(delta * $(window).scrollTop());
    $pathLight.stop(true, false).animate({ height: currentPathPos }, 800);
    $pathDark.stop(true, false).animate({ height: pathHeight - currentPathPos }, 800);
    for (var i = 0; i < 7; i++) {
      var $point = $('div:eq(' + i + ')', $pointsHolder);
      var $year = $('div.item:eq(' + i + ') h2.hover', $blocksHolder);
      if (currentPathPos > pointsPos[i]) {
        if (!$point.hasClass('light')) {
          $point.fadeIn(500).addClass('light');
          $year.fadeIn(300).addClass('light');
        }
      } else {
        if ($point.hasClass('light')) {
          $point.fadeOut(500).removeClass('light');
          $year.fadeOut(300).removeClass('light');
        }
      }
    }
  }
}

function initLookBook(prodID) {
  var $data = $('ul.lookbook-slides');
  var $gallery = $('ul.lookbook-gallery');
  var $alert = $('div.lookbook-alert');
  var $preview = $('#lookbookPreview');
  var $lookbookImg = $('#LookbookImg');
  var $linksHolder = $('div.links', $preview);
  var $btnClose = $('a.btn-close' ,$preview);
  var $btnPrev = $('a.btn-prev' ,$preview);
  var $btnNext = $('a.btn-next' ,$preview);
  var $btnShare = $('a.btn-share' ,$preview);
  var $btnShareTw = $('a.btn-share-tw' ,$preview);
  
  var slides = new Array();
  
  var screenWidth = $('#pageContentHolder').width();
  var screenHeight = $('#pageContentHolder').height();
  $gallery.height(screenHeight);
  
  var slidesNumber = $('li', $data).length;
  var currentSlideLoad = 0;
  var currentPreview = -1;
  var galleryWidth = 0;
  var isPreviewOpened = false;
  var controlsEnable = false;
  var imageClosing = false;
  var scrollMult = 0;
  var galleryDragStartPos;
  var galleryDragStartTime;
  var lookDragStartPos;
  var lookDragStartTime;
  
  $gallery
  .draggable({ containment: [0, 99, 0, 99] });
  
  $lookbookImg
  .load(function() {
    //$gallery.hide();
    $gallery.css({ 'visibility': 'hidden' });
    $(this)
    .css({ 'top': 0, 'left': 0, 'height': '', 'width': screenWidth })
    .draggable({ containment: [0, 99 + screenHeight - $(this).height(), 0, 99] })
    .fadeIn(300, function() {
      $(this).prev('img').remove();
      if (!isPreviewOpened) { initPreviewControls(); }
      isPreviewOpened = true;
      controlsEnable = true;
    });
  })
  .mousedown(function() {
    if (imageClosing) { return; }
    $(this).stop(true, true);
    var d = new Date();
    lookDragStartTime = d.getTime();
    lookDragStartPos = parseInt($(this).css('top'));
  })
  .mouseup(function() {
    if (imageClosing) { return; }
    var d = new Date();
    var period = d.getTime() - lookDragStartTime;
    var newPos = parseInt($(this).css('top')) + (parseInt($(this).css('top')) - lookDragStartPos) * 50 / period;
    if (newPos > 0) { newPos = 0; }
    if (newPos < screenHeight - $(this).height()) { newPos = screenHeight - $(this).height(); }
    $(this).stop(true, false).animate({ 'top': newPos }, 600);
  })
  
  $btnClose.click(function() {
    closePreview();
  });
  
  $btnPrev.click(function() {
    if (controlsEnable) { prevSlide(); }
  });
  
  $btnNext.click(function() {
    if (controlsEnable) { nextSlide(); }
  });
  
  $btnShare.click(function() {
    fbShare();
  });
  
  $btnShareTw.click(function() {
    twShare();
  });
  
  if (prodID) {
    if ($('li[data-product-id=' + prodID + ']', $data).length > 0) {
      $gallery.css({ 'visibility': 'hidden' });
      loadSlide(prodID);
    } else {
      loadSlide();
    }
  } else {
    loadSlide();
  }
  
  function loadSlide(openID) {
    var $slideData = $('li:eq(' + currentSlideLoad + ')', $data);
    slides[currentSlideLoad] = new Object();
    slides[currentSlideLoad].productId = $slideData.data('product-id');
    slides[currentSlideLoad].previewImage = $slideData.data('image');
    slides[currentSlideLoad].looksNumber = $('span', $slideData).length;
    slides[currentSlideLoad].looks = new Array();
    for (var l = 0; l < slides[currentSlideLoad].looksNumber; l++) {
      var $lookHolder = $('span:eq(' + l + ')', $slideData);
      slides[currentSlideLoad].looks[l] = new Object();
      slides[currentSlideLoad].looks[l].productsNumber = $('a', $lookHolder).length;
      slides[currentSlideLoad].looks[l].products = new Array();
      for (var p = 0; p < slides[currentSlideLoad].looks[l].productsNumber; p++) {
        slides[currentSlideLoad].looks[l].products[p] = new Object({ 'title': $('a:eq(' + p + ')', $lookHolder).text(), 'link': $('a:eq(' + p + ')', $lookHolder).attr('href') });
      }
    }
    slides[currentSlideLoad].thumbSrc = $slideData.data('small-image');
    slides[currentSlideLoad].fbShare = slides[currentSlideLoad].twShare = $slideData.data('share-url');
    
    $gallery.append('<li><a href="javascript:void(0)"><img src="' + slides[currentSlideLoad].thumbSrc + '" alt=""><ins><!--  --></ins><span><!--  --></span></a></li>');
    
    var $slide = $('li:last', $gallery);
    $slide.height(screenHeight);
    $('img', $slide).bind('load', function() {
      var thumbFadeTime = ((galleryWidth - $gallery.offset().left < screenWidth) && !isPreviewOpened && !openID) ? 200 : 0;
      $(this).css({ 'width': '', 'height': screenHeight });
      
      slides[currentSlideLoad].thumbWidth = $(this).width();
      slides[currentSlideLoad].thumbHeight = $(this).height();
      slides[currentSlideLoad].thumbLeft = galleryWidth;
      
      galleryWidth += $(this).width();
      $gallery.width(galleryWidth);
      scrollMult = (screenWidth - galleryWidth) / 266;
      $gallery.draggable({ containment: [screenWidth - galleryWidth, 99, 0, 99] })
      if (scrollMult > 0) {
        $gallery.draggable('disabled');
      } else {
        $gallery.draggable('enabled');
      }
      
      
      $(this).fadeIn(thumbFadeTime, function() {
        $('ins', $slide).css({ 'width': $(this).width(), 'height': $(this).height() });
        $slide
        .hover(
          function() {
            if (!isIE) { $('ins', this).fadeIn(100); }
            $('span', this).fadeIn(200);
          }, 
          function() {
            if (!isIE) { $('ins', this).stop(true, true).fadeOut(50); }
            $('span', this).stop(true, true).fadeOut(100);
          }
        )
        .mousedown(function() {
          $gallery.stop(true, false);
          var d = new Date();
          galleryDragStartPos = parseInt($gallery.css('left'));
          galleryDragStartTime = d.getTime();
        })
        .mouseup(function() {
          var d = new Date();
          var period = d.getTime() - galleryDragStartTime;
          if (period > galleryClickTime) {
            var newPos = parseInt($gallery.css('left')) + (parseInt($gallery.css('left')) - galleryDragStartPos) * 50 / period;
            if (newPos > 0) { newPos = 0; }
            if (newPos < screenWidth - galleryWidth) { newPos = screenWidth - galleryWidth; }
            $gallery.stop(true, false).animate({ 'left': newPos }, 600);
          } else {
            openPreview(this);
          }
        });
        
        if (currentSlideLoad == 0) {
          $alert.delay(2400).fadeOut(300);
          initKeys();
      initMouseWheel();
        }
        
        if (openID == slides[currentSlideLoad].productId) {
          openPreview($slide, true);
        }
        
        currentSlideLoad++;
        if (currentSlideLoad < slidesNumber) {
          loadSlide(openID);
        }
      });
    });
  }
  
  function initKeys() {
    $(document).keydown(function(e) {
      switch (e.which) {
        case 37 : // Left
      if (isPreviewOpened) { break; }
          var newLeft = parseInt($gallery.css('left')) + Math.floor(screenWidth / 3);
          if (newLeft > 0) { newLeft = 0; }
          $gallery.stop(true, false).animate({ 'left': newLeft }, 700);
          break;
    case 38 : // Up
      if (isPreviewOpened && !imageClosing) {
      var newTop = parseInt($lookbookImg.css('top')) + Math.floor(screenHeight / 3);
      if (newTop > 0) { newTop = 0; }
      $lookbookImg.stop(true, false).animate({ 'top': newTop }, 700);
      }
      break;
        case 39 : // Right
      if (isPreviewOpened) { break; }
          var newLeft = parseInt($gallery.css('left')) - Math.floor(screenWidth / 3);
          if (newLeft < screenWidth - galleryWidth) { newLeft = screenWidth - galleryWidth; }
          $gallery.stop(true, false).animate({ 'left': newLeft }, 700);
          break;
    case 40 : // Down
      if (isPreviewOpened && !imageClosing) {
      var newTop = parseInt($lookbookImg.css('top')) - Math.floor(screenHeight / 3);
      if (newTop < screenHeight - $lookbookImg.height()) { newTop = screenHeight - $lookbookImg.height(); }
      $lookbookImg.stop(true, false).animate({ 'top': newTop }, 700);
      }
      break;
        default :
          break;
      }
    })
  }
  
  function wheel(event){
    var delta = 0;
    if (!event) { event = window.event; }
    if (event.wheelDelta) {
      delta = event.wheelDelta/120;
    } else if (event.detail) {
      delta = -event.detail/3;
    }
    if (delta) {
    if (delta > 0) {
      if (isPreviewOpened && !imageClosing) {
        var newTop = parseInt($lookbookImg.css('top')) + Math.floor(screenHeight / 3);
          if (newTop > 0) { newTop = 0; }
          $lookbookImg.stop(true, false).animate({ 'top': newTop }, 700);
      } else {
        var newLeft = parseInt($gallery.css('left')) + Math.floor(screenWidth / 3);
              if (newLeft > 0) { newLeft = 0; }
              $gallery.stop(true, false).animate({ 'left': newLeft }, 700);
      }
    } else {
      if (isPreviewOpened && !imageClosing) {
        // eq key right on gallery
        var newTop = parseInt($lookbookImg.css('top')) - Math.floor(screenHeight / 3);
        if (newTop < screenHeight - $lookbookImg.height()) { newTop = screenHeight - $lookbookImg.height(); }
        $lookbookImg.stop(true, false).animate({ 'top': newTop }, 700);
      } else {
        // eq key down on preview
        var newLeft = parseInt($gallery.css('left')) - Math.floor(screenWidth / 3);
              if (newLeft < screenWidth - galleryWidth) { newLeft = screenWidth - galleryWidth; }
              $gallery.stop(true, false).animate({ 'left': newLeft }, 700);
      }
    }
      
      if (event.preventDefault) { event.preventDefault(); }
      event.returnValue = false;
    }
  }
  
  function initMouseWheel() {
    if (window.addEventListener) {
    // mozilla, safari, chrome
      window.addEventListener('DOMMouseScroll', wheel, false);
  }
    // IE, Opera.
    window.onmousewheel = document.onmousewheel = wheel;
  }
  
  function openPreview(slide, noAnimation) {
    var $slide = $(slide);
    currentPreview = $('li', $gallery).index($slide);
    $preview.show();
    $('img', $slide).clone().prependTo($preview);
    var $preloadImage = $('img:first', $preview);
    $preloadImage.addClass('preload-image');
    if (noAnimation) {
      $preloadImage.css({ 'left': 0, 'height': '', 'width': screenWidth });
      $lookbookImg.attr('src', '#').attr('src', slides[currentPreview].previewImage);
    } else {
      $preloadImage
      .css({ 'left': $slide.offset().left, 'height': '', 'width': slides[currentPreview].thumbWidth })
      .animate({ 'left': 0, 'width': screenWidth }, { duration: 700, easing: 'easeOutQuart', complete:function() { 
          $lookbookImg.attr('src', '#').attr('src', slides[currentPreview].previewImage);
        } 
      });
    }
  }
  
  function initPreviewControls() {
    $linksHolder.empty();
    var currentLook = 0;
    
    for (var i = 0; i < slides[currentPreview].looks[currentLook].productsNumber; i++) {
      //var thingTitle = $.trim(things[i].title).replace(RegExp(' ', 'g'), '<br />');
      var thingTitle = $.trim(slides[currentPreview].looks[currentLook].products[i].title).replace(' ', '<br />');
      $linksHolder.append('<a href="' + slides[currentPreview].looks[currentLook].products[i].link + '" target="_blank"><span>' + thingTitle + ' /</span><ins>Buy now!</ins></a>')
    }
    
    Cufon.replace('.lookbook-preview-holder .links a span', { fontFamily: 'HelveticaNeueHvCn', textShadow: '-0.5px -1px rgba(68, 45, 17, 0.5)' });
    
    if (slides[currentPreview].looksNumber > 1) {
      $linksHolder.append('<div class="looks"></div>');
      for (i = 0; i < slides[currentPreview].looksNumber; i++) {
        $('.looks', $linksHolder).append('<em>look ' + (i + 1) + '</em>');
      }
      
      $('.looks em:eq(0)', $linksHolder).addClass('active');
      
      Cufon.replace('.lookbook-preview-holder .looks em', { fontFamily: 'HelveticaNeueMdCn' });
      
      $('.looks em', $linksHolder).each(function(i) {
        $(this)
        .hover(
          function() {
            $(this).addClass('hover');
            Cufon.refresh('.lookbook-preview-holder .looks em');
          },
          function() {
            $(this).removeClass('hover');
            Cufon.refresh('.lookbook-preview-holder .looks em');
          }
        )
        .click(function() {
          if ($(this).hasClass('active')) { return; }
          if (!controlsEnable) { return; }
          $('.looks em', $linksHolder).removeClass('active');
          $(this).addClass('active');
          Cufon.refresh('.lookbook-preview-holder .looks em');
          controlsEnable = false;
          loadNewLook(i);
        });
      });
    }
    
    renewLinks();
    
    $btnClose.fadeIn(300);
    $linksHolder.fadeIn(300);
    $btnPrev.fadeIn(300);
    $btnNext.fadeIn(300);
    $btnShare.fadeIn(300);
    $btnShareTw.fadeIn(300, function() { controlsEnable = true; });
    
    function loadNewLook(look) {
      currentLook = look;
      $linksHolder.fadeOut(200, function() {
        $('a', this).remove();
        for (var i = 0; i < slides[currentPreview].looks[currentLook].productsNumber; i++) {
          //var thingTitle = $.trim(things[i].title).replace(RegExp(' ', 'g'), '<br />');
          var thingTitle = $.trim(slides[currentPreview].looks[currentLook].products[i].title).replace(' ', '<br />');
          $('.looks', $linksHolder).before('<a href="' + slides[currentPreview].looks[currentLook].products[i].link + '" target="_blank"><span>' + thingTitle + ' /</span><ins>Buy now!</ins></a>');
          Cufon.replace('.lookbook-preview-holder .links a span', { fontFamily: 'HelveticaNeueHvCn', textShadow: '-0.5px -1px rgba(68, 45, 17, 0.5)' });
          renewLinks();
          $linksHolder.fadeIn(100, function() { controlsEnable = true; });
        }
      });
    }
    
    function renewLinks() {
      $('a', $linksHolder).hover(
        function() {
          $(this).addClass('hover');
          Cufon.refresh('.lookbook-preview-holder .links a span');
        },
        function() {
          $(this).removeClass('hover');
          Cufon.refresh('.lookbook-preview-holder .links a span');        
        }
      );
    }
  }
  
  function closePreview() {
    $gallery.css({ 'visibility': 'visible' });
    
    $btnClose.fadeOut(100);
    $linksHolder.fadeOut(100);
    $btnPrev.fadeOut(100);
    $btnNext.fadeOut(100);
    $btnShare.fadeOut(100);
    $btnShareTw.fadeOut(100);
    
    imageClosing = true;
    
    $lookbookImg
    .stop(true, true)
    .animate({ 'top': 0, 'left': parseInt($gallery.css('left')) + slides[currentPreview].thumbLeft, 'width': slides[currentPreview].thumbWidth }, { duration: 400, easing: 'easeInCubic', complete: function() { 
        $(this).hide();
        $preview.hide();
        isPreviewOpened = false;
        imageClosing = false;
      } 
    });
  }
  
  function prevSlide() {
    controlsEnable = false;
    
    $btnClose.fadeOut(100);
    $linksHolder.fadeOut(100);
    $btnPrev.fadeOut(100);
    $btnNext.fadeOut(100);
    $btnShare.fadeOut(100);
    
    $lookbookImg.before('<img src="' + $lookbookImg.attr('src') + '" class="preload-image" width="' + $lookbookImg.width() + '" height="' + $lookbookImg.height() + '" alt="">');
    $('.preload-image', $preview).load(function() {
      $(this).css('top', $lookbookImg.css('top'));
      currentPreview--;
      if (currentPreview < 0) { currentPreview = slidesNumber - 1;  }
      isPreviewOpened = false;
      $lookbookImg.hide().attr('src', '#').attr('src', slides[currentPreview].previewImage);
    });
  }
  
  function nextSlide() {
    controlsEnable = false;
    
    $btnClose.fadeOut(100);
    $linksHolder.fadeOut(100);
    $btnPrev.fadeOut(100);
    $btnNext.fadeOut(100);
    $btnShare.fadeOut(100);
    
    $lookbookImg.before('<img src="' + $lookbookImg.attr('src') + '" class="preload-image" width="' + $lookbookImg.width() + '" height="' + $lookbookImg.height() + '" alt="">');
    $('.preload-image', $preview).load(function() {
      $(this).css('top', $lookbookImg.css('top'));
      currentPreview++;
      if (currentPreview >= slidesNumber) { currentPreview = 0; }
      isPreviewOpened = false;
      $lookbookImg.hide().attr('src', '#').attr('src', slides[currentPreview].previewImage);
    });
  }
  
  function fbShare() {
    window.open('https://www.facebook.com/sharer/sharer.php?u=' + slides[currentPreview].fbShare);
  }
  
  function twShare() {
    window.open('http://twitter.com/home?status=' + slides[currentPreview].twShare);
  }
  
  $(window).resize(function() {
    clearTimeout(resizeTimer);
    resizeTimer = setTimeout(function() {
      var scaleMult = $('#pageContentHolder').height() / screenHeight;
      screenWidth = $('#pageContentHolder').width();
      screenHeight = $('#pageContentHolder').height();
      
      if (isPreviewOpened) {
        $lookbookImg.fadeOut(100, function() {
          $(this).css({ 'top': 0, 'left': 0, 'height': '', 'width': screenWidth }).draggable({ containment: [0, 99 + screenHeight - $(this).height(), 0, 99] });
          rescaleGallery();
          $(this).fadeIn(100);
        });
      } else {
        $gallery.fadeOut(100, function() {
          rescaleGallery();
          $gallery.fadeIn(100);
        });
      }
      
      function rescaleGallery() {
        $gallery.height(screenHeight);
        galleryWidth = 0
        for (var i = 0; i < slidesNumber; i++) {
          var $slide = $('li:eq(' + i + ')', $gallery);
          $slide.height(screenHeight);
          
          slides[i].thumbWidth = slides[i].thumbWidth * scaleMult;
          slides[i].thumbHeight = screenHeight;
          slides[i].thumbLeft = galleryWidth;
          
          $('img', $slide).css({ 'width': slides[i].thumbWidth, 'height': screenHeight });
          $('ins', $slide).css({ 'width': slides[i].thumbWidth, 'height': screenHeight });
          
          galleryWidth += slides[i].thumbWidth;
        }
        scrollMult = (screenWidth - galleryWidth) / 266;
        $gallery.css({ 'left': 0, 'width': galleryWidth }).draggable({ containment: [screenWidth - galleryWidth, 99, 0, 99] })
      }
      
    }, 300);
  });
}


function initCampaign(prodID) {
  var slideMidWidth = 340;
  
  var $data = $('ul.campaign-slides');
  var $gallery = $('ul.campaign-gallery');
  var $alert = $('div.campaign-alert');
  var $preview = $('#campaignPreview');
  var $campaignImg = $('#CampaignImg');
  var $btnClose = $('a.btn-close' ,$preview);
  var $btnPrev = $('a.btn-prev' ,$preview);
  var $btnNext = $('a.btn-next' ,$preview);
  var $btnShop = $('a.btn-shop', $preview);
  var $btnShareFB = $('a.btn-share-fb' ,$preview);
  var $btnShareTW = $('a.btn-share-tw' ,$preview);
  
  var slides = new Array();
  
  var screenWidth = $('#pageContentHolder').width();
  var screenHeight = $('#pageContentHolder').height();
  $('#campaignHolder').height(screenHeight);
  
  var slidesNumber = $('li', $data).length;
  var currentSlideLoad = 0;
  var currentPreview = -1;
  var galleryHeight = 0;
  var isPreviewOpened = false;
  var controlsEnable = false;
  var imageClosing = false;
  var galleryDragStartPos;
  var galleryDragStartTime;
  var previewDragStartPos;
  var previewDragStartTime;
  
  var columnsNumber = Math.floor(screenWidth / slideMidWidth);
  var columnsTop = new Array();
  for (var i = 0; i < columnsNumber; i++) { columnsTop[i] = 0; }
  
  var ratio = 8 / 6;
  var slideWidth = Math.floor(screenWidth / columnsNumber);
  var slideHeightL = Math.floor(slideWidth / ratio);
  var slideHeightP = slideHeightL * 2;
  
  var galleryLoaded = false;
  
  $gallery.draggable({ containment: [0, 99, 0, 99] });
  
  $campaignImg
  .load(function() {
    //$gallery.hide();
    $gallery.css({ 'visibility': 'hidden' });
    $(this)
    .css({ 'top': 0, 'left': 0, 'height': '', 'width': screenWidth })
    .draggable({ containment: [0, 99 + screenHeight - $(this).height(), 0, 99] })
    .fadeIn(300, function() {
      $(this).prev('img').remove();
      if (!isPreviewOpened) { initPreviewControls(); }
      isPreviewOpened = true;
      controlsEnable = true;
    });
  })
  .mousedown(function() {
    if (imageClosing) { return; }
    $(this).stop(true, true);
    var d = new Date();
    previewDragStartTime = d.getTime();
    previewDragStartPos = parseInt($(this).css('top'));
  })
  .mouseup(function() {
    if (imageClosing) { return; }
    var d = new Date();
    var period = d.getTime() - previewDragStartTime;
    var newPos = parseInt($(this).css('top')) + (parseInt($(this).css('top')) - previewDragStartPos) * 50 / period;
    if (newPos > 0) { newPos = 0; }
    if (newPos < screenHeight - $(this).height()) { newPos = screenHeight - $(this).height(); }
    $(this).stop(true, false).animate({ 'top': newPos }, 600);
  })
  
  $btnClose.click(function() {
    closePreview();
  });
  
  $btnPrev.click(function() {
    if (controlsEnable) { prevSlide(); }
  });
  
  $btnNext.click(function() {
    if (controlsEnable) { nextSlide(); }
  });
  
  $btnShareFB.click(function() {
    fbShare();
  });
  
  $btnShareTW.click(function() {
    twShare();
  });
  
  $btnShop.click(function() {
    openShop();
  });
  
  if (prodID) {
    if ($('li[data-product-id=' + prodID + ']', $data).length > 0) {
      $gallery.css({ 'visibility': 'hidden' });
      loadSlide(prodID);
    } else {
      loadSlide();
    }
  } else {
    loadSlide();
  }
  
  function loadSlide(openID) {
    var $slideData = $('li:eq(' + currentSlideLoad + ')', $data);
    slides[currentSlideLoad] = new Object();
    slides[currentSlideLoad].productId = $slideData.data('product-id');
    slides[currentSlideLoad].thumbSrc = $slideData.data('small-image');
    slides[currentSlideLoad].previewSrc = $slideData.data('image');
    slides[currentSlideLoad].fbShare = slides[currentSlideLoad].twShare = $slideData.data('share-url');
    slides[currentSlideLoad].shopLink = $slideData.data('shop-link');
    
    $gallery.append('<li><a href="javascript:void(0)"><img src="' + slides[currentSlideLoad].thumbSrc + '" alt=""><ins><!--  --></ins><span><!--  --></span></a></li>');
    var $slide = $('li:last', $gallery);
    $slide.width(slideWidth);
    $('img', $slide).load(function() {
      slides[currentSlideLoad].imageWidth = $(this).width();
      slides[currentSlideLoad].imageHeight = $(this).height();
      if (slides[currentSlideLoad].imageWidth > slides[currentSlideLoad].imageHeight) {
        $slide.height(slideHeightL).addClass('landscape');
        if (slides[currentSlideLoad].imageHeight / slides[currentSlideLoad].imageWidth < ratio) {
          $(this).height(slideHeightL + 2);
        } else {
          $(this).width(slideWidth + 2);
        }
      } else {
        $slide.height(slideHeightP);
        if (slides[currentSlideLoad].imageHeight / slides[currentSlideLoad].imageWidth < ratio) {
          $(this).width(slideWidth + 2);
        } else {
          $(this).height(slideHeightP + 2);
        }
      }
      
      slides[currentSlideLoad].thumbWidth = $(this).width();
      slides[currentSlideLoad].thumbHeight = $(this).height();
      
      $(this).css({ 'margin-top': - slides[currentSlideLoad].thumbHeight / 2, 'margin-left': - slides[currentSlideLoad].thumbWidth / 2 });
      
      slides[currentSlideLoad].slideWidth = $slide.width();
      slides[currentSlideLoad].slideHeight = $slide.height();
      
      slides[currentSlideLoad].preloadMarginTop = (slides[currentSlideLoad].slideHeight - slides[currentSlideLoad].thumbHeight) / 2;
      slides[currentSlideLoad].preloadMarginLeft = (slides[currentSlideLoad].slideWidth - slides[currentSlideLoad].thumbWidth) / 2;
      
      var curentCol = 0;
      for (var i = 1; i < columnsNumber; i++) {
        if (columnsTop[i] < columnsTop[curentCol]) { 
          curentCol = i;
        }
      }
      
      slides[currentSlideLoad].slideLeft = curentCol * slideWidth ;
      slides[currentSlideLoad].slideTop = columnsTop[curentCol];
      
      $slide.css({ 'left': slides[currentSlideLoad].slideLeft, 'top': slides[currentSlideLoad].slideTop });
      columnsTop[curentCol] += $slide.height();
      
      galleryHeight = getGalleryHeight();
      if (screenHeight < galleryHeight) {
        $gallery.height(galleryHeight).draggable({ containment: [0, 99 + screenHeight - galleryHeight, 0, 99] });
      }
      
      var thumbFadeTime = (parseInt($slide.offset().top) < screenHeight && !isPreviewOpened && !openID) ? 200 : 0;
      
      $(this).fadeIn(thumbFadeTime, function() {
        $slide
        .hover(
          function() {
            if (!isIE) { $('ins', this).fadeIn(100); }
            $('span', this).fadeIn(200);
          }, 
          function() {
            if (!isIE) { $('ins', this).stop(true, true).fadeOut(50); }
            $('span', this).stop(true, true).fadeOut(100);
          }
        )
        .mousedown(function() {
          $gallery.stop(true, false);
          var d = new Date();
          galleryDragStartPos = parseInt($gallery.css('top'));
          galleryDragStartTime = d.getTime();
        })
        .mouseup(function() {
          var d = new Date();
          var period = d.getTime() - galleryDragStartTime;
          if (period > galleryClickTime) {
            var newPos = parseInt($gallery.css('top')) + (parseInt($gallery.css('top')) - galleryDragStartPos) * 50 / period;
            if (newPos > 0) { newPos = 0; }
            if (newPos < screenHeight - galleryHeight) { newPos = screenHeight - galleryHeight; }
            $gallery.stop(true, false).animate({ 'top': newPos }, 600);
          } else {
            openPreview(this);
          }
        });
        
        if (currentSlideLoad == 0) {
          $alert.delay(2400).fadeOut(300);
        }
    
    if (galleryHeight > screenHeight) {
          initKeys();
      initMouseWheel();
    }
        
        if (openID == slides[currentSlideLoad].productId) {
          openPreview($slide, true);
        }
        
        currentSlideLoad++;
        if (currentSlideLoad < slidesNumber) {
          loadSlide(openID);
        } else {
          galleryLoaded = true;
        }
      });
    });
  }
  
  function initKeys() {
    $(document).keydown(function(e) {
      switch (e.which) {
        case 38 : 
      if (isPreviewOpened && !imageClosing) {
      var newTop = parseInt($campaignImg.css('top')) + Math.floor(screenHeight / 3);
            if (newTop > 0) { newTop = 0; }
            $campaignImg.stop(true, false).animate({ 'top': newTop }, 700);
      } else {
            var newTop = parseInt($gallery.css('top')) + Math.floor(screenHeight / 3);
            if (newTop > 0) { newTop = 0; }
            $gallery.stop(true, false).animate({ 'top': newTop }, 700);
      }
          break;
        case 40 : 
      if (isPreviewOpened && !imageClosing) {
            var newTop = parseInt($campaignImg.css('top')) - Math.floor(screenHeight / 3);
            if (newTop < screenHeight - $campaignImg.height()) { newTop = screenHeight - $campaignImg.height(); }
            $campaignImg.stop(true, false).animate({ 'top': newTop }, 700);
      } else {
            var newTop = parseInt($gallery.css('top')) - Math.floor(screenHeight / 3);
            if (newTop < screenHeight - galleryHeight) { newTop = screenHeight - galleryHeight; }
            $gallery.stop(true, false).animate({ 'top': newTop }, 700);
      }
          break;
        default :
          break;
      }
    })
  }
  
  function wheel(event){
    var delta = 0;
    if (!event) { event = window.event; }
    if (event.wheelDelta) {
      delta = event.wheelDelta/120;
    } else if (event.detail) {
      delta = -event.detail/3;
    }
    if (delta) {
    if (delta > 0) {
      if (isPreviewOpened && !imageClosing) {
      var newTop = parseInt($campaignImg.css('top')) + Math.floor(screenHeight / 3);
            if (newTop > 0) { newTop = 0; }
            $campaignImg.stop(true, false).animate({ 'top': newTop }, 700);
      } else {
            var newTop = parseInt($gallery.css('top')) + Math.floor(screenHeight / 3);
            if (newTop > 0) { newTop = 0; }
            $gallery.stop(true, false).animate({ 'top': newTop }, 700);
      }
    } else {
      if (isPreviewOpened && !imageClosing) {
            var newTop = parseInt($campaignImg.css('top')) - Math.floor(screenHeight / 3);
            if (newTop < screenHeight - $campaignImg.height()) { newTop = screenHeight - $campaignImg.height(); }
            $campaignImg.stop(true, false).animate({ 'top': newTop }, 700);
      } else {
            var newTop = parseInt($gallery.css('top')) - Math.floor(screenHeight / 3);
            if (newTop < screenHeight - galleryHeight) { newTop = screenHeight - galleryHeight; }
            $gallery.stop(true, false).animate({ 'top': newTop }, 700);
      }
    }
      
      if (event.preventDefault) { event.preventDefault(); }
      event.returnValue = false;
    }
  }
  
  function initMouseWheel() {
    if (window.addEventListener) {
    // mozilla, safari, chrome
      window.addEventListener('DOMMouseScroll', wheel, false);
  }
    // IE, Opera.
    window.onmousewheel = document.onmousewheel = wheel;
  }
  
  function getGalleryHeight() {
    var h = 0;
    for (var i = 0; i < columnsNumber; i++) {
      h = Math.max(h, columnsTop[i]);
    }
    return h;
  }
  
  function openPreview(slide, noAnimation) {
    var $slide = $(slide);
    currentPreview = $('li', $gallery).index($slide);
    $preview.show();
    $('img', $slide).clone().prependTo($preview);
    var $preloadImage = $('img:first', $preview);
    
    $preloadImage.addClass('preload-image');
    if (noAnimation) {
      $preloadImage.css({ 'left': 0, 'top': 0, 'height': '', 'width': screenWidth });
      $campaignImg.attr('src', '#').attr('src', slides[currentPreview].previewSrc);
    } else {
      $preloadImage
      .css({ 'left': $slide.offset().left + slides[currentPreview].preloadMarginLeft, 'top': $slide.offset().top + slides[currentPreview].preloadMarginTop - 99, 'height': '', 'width': slides[currentPreview].thumbWidth })
      .animate({ 'left': 0, 'top': 0,  'width': screenWidth }, { duration: 700, easing: 'easeInOutQuart', complete:function() { 
          $campaignImg.attr('src', '#').attr('src', slides[currentPreview].previewSrc);
        } 
      });
    }
  }
  
  function initPreviewControls() {
    if ($.trim(slides[currentPreview].shopLink) == '') {
      $preview.addClass('no-shop');
    } else {
      $preview.removeClass('no-shop');
      $btnShop.fadeIn(300);
    }
    
    $btnClose.fadeIn(300, function() { controlsEnable = true; });
    $btnPrev.fadeIn(300);
    $btnNext.fadeIn(300);
    $btnShareFB.fadeIn(300);
    $btnShareTW.fadeIn(300);
  }
  
  function closePreview() {
    //$gallery.show();
    $gallery.css({ 'visibility': 'visible' });
    
    $btnClose.fadeOut(100);
    $btnPrev.fadeOut(100);
    $btnNext.fadeOut(100);
    $btnShareFB.fadeOut(100);
    $btnShareTW.fadeOut(100);
    $btnShop.fadeOut(100);
    
    var $slide = $('li:eq(' + currentPreview + ')', $gallery);
    
    imageClosing = true;
    
    $campaignImg
    .stop(true, true)
    .animate({ 'left': $slide.offset().left + slides[currentPreview].preloadMarginLeft, 'top': $slide.offset().top + slides[currentPreview].preloadMarginTop - 99, 'width': slides[currentPreview].thumbWidth }, { duration: 400, easing: 'easeInCubic', complete: function() { 
        $(this).hide();
        $preview.hide();
        isPreviewOpened = false;
        imageClosing = false;
      } 
    });
  }
  
  function prevSlide() {
    controlsEnable = false;
    
    $btnClose.fadeOut(100);
    $btnPrev.fadeOut(100);
    $btnNext.fadeOut(100);
    $btnShareFB.fadeOut(100);
    $btnShareTW.fadeOut(100);
    $btnShop.fadeOut(100);
    
    $campaignImg.before('<img src="' + $campaignImg.attr('src') + '" class="preload-image" width="' + $campaignImg.width() + '" height="' + $campaignImg.height() + '" alt="">');
    $('.preload-image', $preview).load(function() {
      $(this).css('top', $campaignImg.css('top'));
      currentPreview--;
      if (currentPreview < 0) { currentPreview = slidesNumber - 1;  }
      isPreviewOpened = false;
      $campaignImg.hide().attr('src', '#').attr('src', slides[currentPreview].previewSrc);
    });
  }
  
  function nextSlide() {
    controlsEnable = false;
    
    $btnClose.fadeOut(100);
    $btnPrev.fadeOut(100);
    $btnNext.fadeOut(100);
    $btnShareFB.fadeOut(100);
    $btnShareTW.fadeOut(100);
    $btnShop.fadeOut(100);
    
    $campaignImg.before('<img src="' + $campaignImg.attr('src') + '" class="preload-image" width="' + $campaignImg.width() + '" height="' + $campaignImg.height() + '" alt="">');
    $('.preload-image', $preview).load(function() {
      $(this).css('top', $campaignImg.css('top'));
      currentPreview++;
      if (currentPreview >= slidesNumber) { currentPreview = 0; }
      isPreviewOpened = false;
      $campaignImg.hide().attr('src', '#').attr('src', slides[currentPreview].previewSrc);
    });
  }
  
  function fbShare() {
    window.open('https://www.facebook.com/sharer/sharer.php?u=' + slides[currentPreview].fbShare);
  }
  
  function twShare() {
    window.open('http://twitter.com/home?status=' + slides[currentPreview].twShare);
  }
  
  function openShop() {
    window.open(slides[currentPreview].shopLink);
  }
  
  $(window).resize(function() {
    if (!galleryLoaded) {
      return;
    }
    clearTimeout(resizeTimer);
    resizeTimer = setTimeout(function() {
      windowResize() }, 300);
  });
  
  function windowResize() {
    //$('#campaignHolder').css({ 'height': '' });
    var scaleMult = $('#pageContentHolder').width() / screenWidth;
    screenWidth = $('#pageContentHolder').width();
    screenHeight = $('#pageContentHolder').height();
    
    if (isPreviewOpened) {
      $campaignImg.fadeOut(100, function() {
        $(this).css({ 'top': 0, 'left': 0, 'height': '', 'width': screenWidth }).draggable({ containment: [0, 99 + screenHeight - $(this).height(), 0, 99] });
        rescaleGallery();
        $(this).fadeIn(100);
      });
    } else {
      $gallery.fadeOut(100, function() {
        $('#campaignHolder').height(screenHeight);
        rescaleGallery();
        $gallery.fadeIn(100);
      });
    }
    
    function rescaleGallery() {
      columnsNumber = Math.floor(screenWidth / slideMidWidth);
      columnsTop = new Array();
      for (var i = 0; i < columnsNumber; i++) { columnsTop[i] = 0; }
      
      slideWidth = Math.floor(screenWidth / columnsNumber);
      slideHeightL = Math.floor(slideWidth / ratio);
      slideHeightP = slideHeightL * 2;
      
      var curentCol = 0;
      
      for (i = 0; i < slidesNumber; i++) {
        var $slide = $('li:eq(' + i + ')', $gallery);
        var $slideImage = $('img', $slide);
        //slides[i].imageWidth = slides[i].imageWidth * scaleMult;
        //slides[i].imageHeight = slides[i].imageWidth * scaleMult;
        
        if ($slide.hasClass('landscape')) {
          if (slides[i].imageHeight / slides[i].imageWidth < ratio) {
            $slideImage.css({ 'width': slides[i].imageWidth * (slideHeightL + 2) / slides[i].imageHeight, 'height': slideHeightL + 2 });
          } else {
            $slideImage.css({ 'width': slideWidth + 2, 'height': slides[i].imageHeight * (slideWidth + 2) / slides[i].imageWidth });
          }
        } else {
          if (slides[i].imageHeight / slides[i].imageWidth < ratio) {
            $slideImage.css({ 'width': slideWidth + 2, 'height': slides[i].imageHeight *  (slideWidth + 2) / slides[i].imageWidth });
          } else {
            $slideImage.css({ 'width': slides[i].imageWidth * (slideHeightP + 2) / slides[i].imageHeight, 'height': slideHeightP + 2 });
          }
        }
        slides[i].thumbWidth = $slideImage.width();
        slides[i].thumbHeight = $slideImage.height();
        
        $slideImage.css({ 'width': slides[i].thumbWidth, 'height': slides[i].thumbHeight, 'margin-top': - slides[i].thumbHeight / 2, 'margin-left': - slides[i].thumbWidth / 2 });
        
        slides[i].slideWidth = slideWidth;
        if ($slide.hasClass('landscape')) {
          slides[i].slideHeight = slideHeightL;
        } else {
          slides[i].slideHeight = slideHeightP;
        }
        
        $slide.width(slideWidth);
        $slide.height(slides[i].slideHeight);
        
        slides[i].preloadMarginTop = (slides[i].slideHeight - slides[i].thumbHeight) / 2;
        slides[i].preloadMarginLeft = (slides[i].slideWidth - slides[i].thumbWidth) / 2;
        
        curentCol = 0;
        for (c = 1; c < columnsNumber; c++) {
          if (columnsTop[c] < columnsTop[curentCol]) { 
            curentCol = c;
          }
        }
        
        slides[i].slideLeft = curentCol * slideWidth ;
        slides[i].slideTop = columnsTop[curentCol];
        
        $slide.css({ 'left': slides[i].slideLeft, 'top': slides[i].slideTop });
        columnsTop[curentCol] += slides[i].slideHeight;
      }
      
      galleryHeight = getGalleryHeight();
      $gallery.css({ 'top': 0 }).height(galleryHeight);
      if (screenHeight < galleryHeight) {
        $gallery.draggable({ containment: [0, 99 + screenHeight - galleryHeight, 0, 99], disabled: false });
      } else {
        $gallery.draggable({ disabled: true });
      }
    }
  }
}

function validateContactForm() {
  $('.contact-form .sent-text').hide();
  var isFormOK = true;
  $('.contact-form input.required, .contact-form textarea.required').each(function() {
    if ($.trim($(this).val()) == '' || $.trim($(this).val()) == $(this).data('watermark') + ' *') {
      isFormOK = false;
      $(this).parent().addClass('invalid');
    }
  });
  if (!isFormOK) {
    $('.contact-form .required-text').fadeIn(200);
  }
  return isFormOK;
}

function pastBlogPosts(jdata, isItSearch) {
  if (jdata.length > 0) {
    var cols = [$('#firstColumn'), $('#secondColumn')];
    if (isItSearch) {
      $('#firstColumn, #secondColumn').empty();
      $('#loadMore a.show-more').hide();
      $('#loadMore a.back-link').show();
    }
    post();
  } else if (isItSearch) {
    $('#firstColumn, #secondColumn').empty();
    $('#loadMore a.show-more').hide();
    $('#loadMore a.back-link').show();
    $('#firstColumn').height(400).append('<div class="item"><div class="title"><h2>There are no posts with these keywords.</h2></div></div>');
    Cufon.refresh('h2');
  }
  
  if (!isItSearch && jdata.length < 2) {
    $('#loadMore a').fadeOut(100);
  }
  
  function post() {
    for (var i = 0; i < jdata.length; i++) {
      var post = jdata[i]
      var $currentColumn = cols[i % 2];
      $currentColumn.append('<div class="item" style="display:none;"></div>');
      var $divItem = $('div.item:last', $currentColumn);
      if ($.trim(post.Title) != '') {
        $divItem.append('<div class="title"><h2>' + $.trim(post.Title) + '</h2></div>')
      }
      if ($.trim(post.ImageUrl.Value) != '') {
        $divItem.append('<div class="image"></div>');
        if ($.trim(post.ImageLink.Value) == '') {
          $('.image', $divItem).append('<img src="' + $.trim(post.ImageUrl.Value) + '" alt="' + $.trim(post.Title) + '" title="' + $.trim(post.Title) + '" />');
        } else {
          var linkXML = $.parseXML(post.ImageLink.Value);
          var target = ($.trim($('new-window', linkXML).text()) == 'True') ? '_blank' : '_self';
          var href = $.trim($('url', linkXML).text());
          var title = $.trim($('link-title', linkXML).text());
          $('.image', $divItem).append('<a href="' + href + '" target="' + target + '"><img src="' + $.trim(post.ImageUrl.Value) + '" alt="' + title + '" title="' + title + '" /></a>');
        }
      }
      if ($.trim(post.VideoId.Value) != '') {
        //$divItem.append('<div class="title"><h2>' + $.trim(post.Title) + '</h2></div>');
        $divItem.append('<div class="video"><iframe width="280" height="172" frameborder="0" src="http://www.youtube.com/embed/' + $.trim(post.VideoId.Value) + '"></iframe></div>');
        $divItem.append('<div class="date">' + $.trim(post.Date) + '</div>');
        $divItem.append('<div class="share"><span>Share this on</span><a class="facebook" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=' + $.trim(post.Url) + '"><!----></a><a class="twitter" target="_blank" href="http://twitter.com/home?status=Garcia Jeans : ' + $.trim(post.Title) + ' ' + $.trim(post.Url) + '"><!----></a></div>');
      }
      if ($.trim(post.BodyText.Value) != '') {
        $divItem.append('<div class="date">' + $.trim(post.Date) + '</div>');
        $divItem.append('<div class="content">' + $.trim(post.BodyText.Value) + '</div>');
        $divItem.append('<div class="share"><span>Share this on</span><a class="facebook" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=' + $.trim(post.Url) + '"><!----></a><a class="twitter" target="_blank" href="http://twitter.com/home?status=Garcia Jeans : ' + $.trim(post.Title) + ' ' + $.trim(post.Url) + '"><!----></a></div>');
      }
      
      lastId = post.Id;
      $divItem.delay(i * 300).fadeIn(200);
    }
    Cufon.refresh('h2');
  }
}

function checkMessageSent(jdata) {
  if (jdata.Success === 'True') {
    $('.contact-form input:not(.btn-submit), .contact-form textarea').each(function() {
      $(this).addClass('inactive').val($(this).data('watermark') + ' *').parent().removeClass('focus invalid');
    });
    $('.contact-form .sent-text').fadeIn(200);
  } else {
    var formOK = true;
    for (var i = 0; i < jdata.Success.length; i++) {
      switch(jdata.Success[i].Error) {
        case 'Invalid email' : 
          $('#userEmail').parent().addClass('invalid');
          formOK = false;
        break;
        
        
      }
    }
    if (!formOK) {
      $('.contact-form .required-text').fadeIn(200);
    }
  }
}

function initStyleItemsList() {
  $('.press-area-content .items-list .image-holder img').each(function() {
    $(this).load(function() {
      if ($(this).width() / $(this).height() > 180 / 118) {
        $(this).width(180);
      } else {
        $(this).height(118);
      }
    });
  });
}
