$(function() {

  /**
   * валидация форм фидбэка и сео
   */
  (function() {
    var form = document.forms.feedback;

    var isValid = function(field) {
        var valid = true;

        if (field) {
            field = $(field);
            if ('email' == field.attr('name')) {
                valid = field.val().match(/[\w\.-]{4,}@[\w\.-]+\.[a-z]{2,4}/i);
            } else {
                valid = field.val().length > 3;
            }

            valid ? field.removeClass('warn') : field.addClass('warn');

            return valid;
        }

        var fields = form.elements;

        for (var i = 0; i < fields.length; i++) {
            if (fields.name) {
                valid = valid && isValid(fields[i]);
            }
        }

        return valid;
    }

    var getData = function() {
        var fields = form.elements;
        var data = {};
        for (var i = 0; i < fields.length; i++) {
            if (fields[i].name) {
                data[fields[i].name] = fields[i].value;
            }
        }

        return data;
    }

    var enableSubmit = function(enable) {
        if (enable) {
            $('input[type=submit]', form).removeAttr('disabled');
        } else {
            $('input[type=submit]', form).attr('disabled', 'disabled');
        }

        return Boolean(enable);
    }

    enableSubmit(false);

    var sendData = function() {
        $.post('/contacts/feedback', getData(), function(data) {
            $('div.feedback-contener').hide();
            form.reset();
            //console.dir(data);
        }, 'json');
        enableSubmit(false);
    }

    $(form).submit(function() {
        if (enableSubmit(isValid())) {
            sendData();
        }

        return false;
    }).find('input[type=text], textarea').bind('keyup', function() {
        enableSubmit(isValid());
    });
  })();

  (function() {
      var form = document.forms.seoform;

      var isValid = function(field) {
          var valid = true;

          if (field) {
              field = $(field);
              if ('email' == field.attr('name')) {
                  valid = field.val().match(/[\w\.-]{4,}@[\w\.-]+\.[a-z]{2,4}/i);
              } else {
                  valid = field.val().length > 3;
              }

              valid ? field.removeClass('warn') : field.addClass('warn');

              return valid;
          }

          var fields = form.elements;

          for (var i = 0; i < fields.length; i++) {
              if (fields.name) {
                  valid = valid && isValid(fields[i]);
              }
          }

          return valid;
      }

      var getData = function() {
          var fields = form.elements;
          var data = {};
          for (var i = 0; i < fields.length; i++) {
              if (fields[i].name) {
                  data[fields[i].name] = fields[i].value;
              }
          }

          return data;
      }

      var enableSubmit = function(enable) {
          if (enable) {
              $('input[type=submit]', form).removeAttr('disabled');
          } else {
              $('input[type=submit]', form).attr('disabled', 'disabled');
          }

          return Boolean(enable);
      }

      enableSubmit(false);

      var sendData = function() {
          $.post('/contacts/seoform', getData(), function(data) {
              $('div.seoform-contener').hide();
              form.reset();
          }, 'json');
          enableSubmit(false);
      }

      $(form).submit(function() {
          if (enableSubmit(isValid())) {
              sendData();
          }

          return false;
      }).find('input[type=text], textarea').bind('keyup', function() {
          enableSubmit(isValid());
      });
  })();


  (function(delay) {
    var timer = 0;
    var animate = function() {
        $('.feedback-contener').animate({
            top: $(window).scrollTop()+'px'
        }, delay*2);
        $('.seoform-contener').animate({
            top: $(window).scrollTop()+'px'
        }, delay*2);
    }
    window.onscroll = function() {
        timer && window.clearTimeout(timer);
        timer = window.setTimeout(animate, delay);
    }
})(200);


  $('#footer').find('a.no-reload').click(function(){
    $('div.feedback-contener').show();
    return false;
  });

  $('div.feedback-contener').find('a.feedback-close').bind('click', function(){
    $(this).closest('div.feedback-contener').hide();
    return false;
  });

  $('#search').focus(function(){if (this.value == 'поиск') this.value = '';})
              .blur(function(){if (this.value == '') this.value = 'поиск';});

  //листака всего в шапке на главной
  $(window).resize(setCarouselNav);
  $('#header').find('div.banner-gallery ul').jcarousel({
        wrap: 'circular',
        scroll: 1,
        initCallback: setCarouselNav,
        itemVisibleInCallback: function(obj, that, index){
          $('#service-nav').find('a').removeClass('selected').eq(index > 0 ? (Math.abs(index) - 1) % 5 : (4 - (Math.abs(index) % 5))).addClass('selected');
        }
      });

  $('div.seotext').find('a').click(function(){
    $(this).siblings('p').toggle();
    return false;
  });

  $('td.avia-table-head-brd a').click(function() {
    $(this).parent().addClass('avia-table-sorter');
    var c = $(this).text();
    var p = $(this).parent();

    if ($(this).is(':first-child')) {
      p.prepend('<span><span>' + c + '</span></span>');
    } else {
      p.append('<span><span>' + c + '</span></span>');
    }
    $(this).remove();
    return false;
  });
  $('.gmap-switch a').click(function() {
    $('div.contact-box').removeClass('cute');
    $('#wrapper').removeClass('cute-map');
    $(this).parent().parent().children('.switch').children('span').hide();
    $(this).parent().parent().children('.switch').children('a').show();
    $(this).parent().parent().parent().parent().find('.contact-map').hide();
    $(this).parent().parent().parent().parent().find('.contact-gmap').show();
    $(this).parent().children('span').show();
    $(this).hide();
    return false;
  });
  $('.switch a').click(function() {
    $('div.contact-box').addClass('cute');
    $('#wrapper').addClass('cute-map');
    $(this).parent().parent().children('.gmap-switch').children('span').hide();
    $(this).parent().parent().children('.gmap-switch').children('a').show();
    $(this).parent().parent().parent().parent().find('.contact-gmap').hide();
    $(this).parent().parent().parent().parent().find('.contact-map').show();
    $(this).parent().children('span').show();
    $(this).hide();
    return false;
  });

  if (!!document.getElementById('g-map') && GBrowserIsCompatible() ) {
    var gmap = new GMap2(document.getElementById('g-map'), {size: new GSize(720, 500)});
    var garinPoint = new GLatLng(55.807799, 37.51179);
    var garinMarker = new GMarker(garinPoint, {title: 'Garin Studio'})
    gmap.setUIToDefault();
    gmap.setCenter(garinPoint, 15);
    gmap.addOverlay(garinMarker);

    GEvent.addListener(garinMarker, 'click', function() {
      this.openInfoWindowHtml('<h1>Garin Studio</h1><p>Балтийская ул., д. 5, 4-й этаж</p><p>(495) 223-32-57</p>');
    });

    document.onunload = GUnload;
  }
}
);

/**
 * выствляет позиции стрелочек листалки всего на главной
 */
function setCarouselNav() {
  var side_width = ($('#header').find('div.banner-gallery').width() - 826) / 2;
  $('#header').find('div.jcarousel-next').css({right: Math.round(side_width / 2 - 37)});
  $('#header').find('div.jcarousel-prev').css({left: Math.round(side_width / 2 - 37)});
}

