var LAYER_FADE_DURATION = 200; // ms

var layer_working = false;

function showLayer($layer, center, with_shade)
{
  center = typeof(center) != 'undefined' ? center : true;
  with_shade = typeof(with_shade) != 'undefined' ? with_shade : true;
  if ($('.layer:visible').length) $('.layer:visible').hide();
  if ($('.layer_mini:visible').length) $('.layer_mini:visible').hide();
  var layerTop = $(window).scrollTop() + ($(window).height() / 2 - $layer.height() / 2);
  if (layerTop < 0) layerTop = 0;
  var layerLeft = $(window).scrollLeft() + ($(window).width() / 2 - $layer.width() / 2);
  if (layerLeft < 0) layerLeft = 0;
  $('#shade').css('height', $(document).height() + 'px');
  if (with_shade) $('#shade').fadeIn(LAYER_FADE_DURATION);
  $('.hide_when_layer_shown').fadeOut(LAYER_FADE_DURATION);
  layer_working = true;
  $layer.fadeIn(LAYER_FADE_DURATION, function() {
    layer_working = false;
    $layer.css('filter', '');
  });
  if (center)
  {
    $layer.css('top', layerTop + 'px');
    $layer.css('left', layerLeft + 'px');
  }
}

function showCallLayer($layer, center, with_shade)
{
  center = typeof(center) != 'undefined' ? center : true;
  with_shade = typeof(with_shade) != 'undefined' ? with_shade : true;
  if ($('.layer:visible').length) $('.layer:visible').hide();
  if ($('.layer_mini:visible').length) $('.layer_mini:visible').hide();
  var layerTop = $(window).scrollTop() + ($(window).height() / 2 - $layer.height() / 2);
  if (layerTop < 0) layerTop = 0;
  var offs = $('body').width() - $('#content').width();
  var layerLeft = $(window).scrollLeft() + ($(window).width() / 2 - $layer.width() / 2);
  if (offs > 0) layerLeft -= offs;
  if (layerLeft < 0) layerLeft = 0;
  $('#shade').css('height', $(document).height() + 'px');
  if (with_shade) $('#shade').fadeIn(LAYER_FADE_DURATION);
  $('.hide_when_layer_shown').fadeOut(LAYER_FADE_DURATION);
  layer_working = true;
  $layer.fadeIn(LAYER_FADE_DURATION, function() {
    layer_working = false;
    $layer.css('filter', '');
  });
  if (center)
  {
    $layer.css('top', layerTop + 'px');
    $layer.css('left', layerLeft + 'px');
  }
}


function hideLayer($layer)
{
  layer_working = true;
  $('#shade').fadeOut(LAYER_FADE_DURATION);
  $('.hide_when_layer_shown').fadeIn(LAYER_FADE_DURATION);
  if ($layer)
    $layer.fadeOut(LAYER_FADE_DURATION, function() { layer_working = false; });
  else
    $('.layer, .layer_mini').fadeOut(LAYER_FADE_DURATION, function() { layer_working = false; });
}

$(document).keydown(function(e) {
  var key = e.keyCode || e.which;
  if (key == 27) hideLayer();
});

$(document).ready(function() {
  // подсказка для поиска
  $('.search_features_init').click(function () {
    $('#search_field').val($('.search_features_init').attr('rel'));
    $('#search_field').focus();
    return false;
  });

  $('body').addClass('js');

  $(document).bind('rebind', function() {
    $('.arr_up, .arr_down').unbind('click');
    $('.arr_up, .arr_down').click(function() {
    if ($(this).hasClass('arr_up'))
      {
    if ($('#global-filter-state-ajax').length > 0) $.ajax({url: $('#global-filter-state-ajax').text(), data: {state: 'off'}, cache: false});
        $(this).removeClass('arr_up').addClass('arr_down').attr('title', 'Развернуть');
        if ($.browser.msie && $.browser.version <= 6)
          $('#' + $(this).attr('rel')).hide();
        else
          $('#' + $(this).attr('rel')).slideUp();
      }
      else
      {
    if ($('#global-filter-state-ajax').length > 0) $.ajax({url: $('#global-filter-state-ajax').text(), data: {state: 'on'}, cache: false});
        $(this).removeClass('arr_down').addClass('arr_up').attr('title', 'Свернуть');
        if ($.browser.msie && $.browser.version <= 6)
          $('#' + $(this).attr('rel')).show();
        else
          $('#' + $(this).attr('rel')).slideDown();
      }
    });

    $('.photo-link').mouseenter(function() {
      $('#photo-image').attr('alt', $(this).attr('rel'));
      $('#photo-image').attr('src', $(this).attr('href'));
      $('#photo-layer').css('left', $(this).offset().left + $(this).width())
                       .css('top',  $(this).offset().top + $(this).height());
      showLayer($('#photo-layer'), false);
      return false;
    });
    $('.photo-link').mouseleave(function() {
        hideLayer($('#photo-layer'));
        return false;
      });

    $('.photo-link-cart').mouseenter(function() {
        $('#photo-image').attr('src', $(this).attr('href'));
        $('#photo-layer').css('left', $(this).offset().left + $(this).width() - $('#content .container').offset().left)
                         .css('top',  $(this).offset().top + $(this).height());
        showLayer($('#photo-layer'), false);
        return false;
      });
    $('.photo-link-cart').mouseleave(function() {
        hideLayer($('#photo-layer'));
        return false;
      });
/*
    $('.swap-currency-link').click(function() {
      $(document).trigger('currency_change');
      $.get($(this).attr('href'), {}, function() {
        if ($('#auto-ajax-content').length)
          $content = $('#auto-ajax-content');
        else
          $content = $('#main-content');
        $content.load(window.location.href, function() {
        if ($.browser.msie && $.browser.version - 0 <= 8) window.location.reload(); else {
            bindAutoAjaxLinks();
            $(document).trigger('rebind');
      }
        });
      });
      return false;
    });
*/
  });

  bindLoginForm = function() {
    $('#login-form').submit(function() {
      $('#login-loader').show();
      $.post($(this).attr('action'), $(this).serialize(), function(data, textstatus, xhr) {
        if (xhr.status != 278)
        {
          $('#login-form-container').html(data);
          $('#login-loader').hide();
          bindLoginForm();
        }
        else
          location.reload(true);
      });
      return false;
    });
  };
  bindLoginForm();

  var cur_bc_layer = null;

  $('.breadcrumb-link').click(function() {
    if (layer_working) return;
    $layer = $('.breadcrumb-layer[rel=' + $(this).attr('rel') + ']');
    if (!$layer.is(':visible'))
    {
      $layer.css('left', $(this).offset().left - 5  + 'px');
      $layer.css('top', $(this).offset().top + $(this).height() + 2 + 'px');
      if (cur_bc_layer)
      {
        cur_bc_layer.fadeOut(LAYER_FADE_DURATION, function() {
          showLayer($layer, false);
        });
      }
      else
        showLayer($layer, false);
      cur_bc_layer = $layer;
      return false;
    }
  });

  $(document).click(function(e) {
    if (layer_working) return;
    if (cur_bc_layer &&
        !$(e.target).is('.breadcrumb-layer') &&
        !$(e.target).parents('.breadcrumb-layer').length)
    {
      hideLayer(cur_bc_layer);
      cur_bc_layer = null;
    }
  });

  bindAutoAjaxLinks = function() {
    $('a.auto-ajax').click(function() {
      var tp = 'normal';
      if ($('#auto-ajax-content').length)
        $content = $('#auto-ajax-content');
      else {
      if ($('#main-content .catalogue_img').length || $('#main-content .catalogue_table').length) {
          tp = 'catalog';
      }
        $content = $('#main-content');
        $('.shadow-layer').show();
      }
        $.ajax({
          url: $(this).attr('href'),
          cache: false,
          async: false,
          success: function (type) {return function (d, s, o) {
          if (type == 'normal') {
              $($content).empty();
              $($content).append(d);
          } else {
            if ($($content).find('.catalogue_img').length) {
              $($content).find('.catalogue_img').remove();
            $($content).append(d);
            } else {
              $($content).find('.catalogue_table').remove();
            $($content).append(d);
            }
          }
          bindAutoAjaxLinks();
            $(document).trigger('rebind');
            $('.shadow-layer').hide();
          }}(tp)
        });
/*
        $content.load($(this).attr('href'), function() {
          bindAutoAjaxLinks();
          $(document).trigger('rebind');
        });
*/
      return false;
    });
  };

  bindAutoAjaxLinks();

  $(document).trigger('rebind');
});

