(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener )
            for ( var i=types.length; i; )
                this.addEventListener( types[--i], handler, false );
        else
            this.onmousewheel = handler;
    },
    
    teardown: function() {
        if ( this.removeEventListener )
            for ( var i=types.length; i; )
                this.removeEventListener( types[--i], handler, false );
        else
            this.onmousewheel = null;
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});


function handler(event) {
    var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
    
    event = $.event.fix(event || window.event);
    event.type = "mousewheel";
    
    if ( event.wheelDelta ) delta = event.wheelDelta/120;
    if ( event.detail     ) delta = -event.detail/3;
    
    // Add events and delta to the front of the arguments
    args.unshift(event, delta);

    return $.event.handle.apply(this, args);
}

})(jQuery);

function scroll(delta) { 
    if ($('.scrollable').get(0).scrollHeight <= $('.scrollable').get(0).clientHeight) return false;  
    max_scroll = ($('.scrollable').get(0).scrollHeight - $('.scrollable').get(0).clientHeight);
    move = delta*20;
    scroll_to = $('.scrollable').get(0).scrollTop - move;
    if (scroll_to < 0) top_to = 0;
    if (scroll_to >= max_scroll) scroll_to = max_scroll;
    $('.scrollable').get(0).scrollTop = scroll_to;
    return false;
}

function show_form_message(msg) {
  $('form#rates').append('<div class="msg"><div class="text">'+msg+'</div></div>');
}


function show_form_message_new(msg) {
  $('form#rates-new .res, form#rates-new .frm').hide();
  $('form#rates-new').append('<div class="msg"><div class="text">'+msg+'</div></div>');
}

$(function(){

  $('#credit-calc').click(function() {
     num = parseInt($('#cost').val());
     if (!isNaN(num) && num > 0) {
       $('#cost').removeClass('error');
       credits_v = num*0.7;
       $('#credit span').text(Math.round(credits_v));
       switch($('#term').val()) {
          case '1': percent = '1,5'; break;
          case '2': percent = '3'; break;
          case '3': percent = '4'; break;
       }
       $('#cond .cond-perc').text(percent);
       $('#cond .cont-term').text($("#term option:selected").text());
       $('#rates-new .frm').fadeOut(200);
       $('#rates-new .res').fadeIn(200);
     } else {
       $('#cost').addClass('error');     
     }
     return false;
  });

  $('#credit-back').click(function() {
     $('#rates-new .frm').fadeIn(200);
     $('#rates-new .res').fadeOut(200);
     return false;  
  });

  $('form#rates').submit(function() {
    $(this).find('input.form-text, select.form-select').each(function(i, el) { 
      if ($(el).val() == '') {
        $(el).addClass('error');
      } else {
        $(el).removeClass('error');
      }
    });
    if ($('.error', this)[0]) {
    } else {
       $.post("/ajax/add.php", $("form#rates").serialize(), function() {show_form_message('Спасибо, ваше сообщение отравлено!');});
    }
    return false;
  });

  $('form#rates-new').submit(function() {
    $(this).find('input.form-text, select.form-select').each(function(i, el) { 
      if ($(el).val() == '') {
        $(el).addClass('error');
      } else {
        $(el).removeClass('error');
      }
    });
    if ($('.error', this)[0]) {
    } else {
       $.post("/ajax/add.php", $("form#rates-new").serialize(), function() {show_form_message_new('Спасибо, ваше сообщение отравлено!');});
    }
    return false;
  });
  
  var $scrollable = $('.scrollable');
  var velocity = 4;
  
  $scrollable.css('overflow', 'hidden').bind('mousewheel', function(e, delta)  {
    sign = $.browser.opera?-1:1; 
    scroll(delta > 0 ? sign : -sign);  
    return false;
  });
  
  if ($scrollable.get(0) && ($scrollable.get(0).scrollHeight > $scrollable.get(0).clientHeight)) {
    $scrollable.before('<div class="scroll-control"><a href="#" class="scroll-up">Вверх</a><a href="#" class="scroll-down">Вниз</a></div>');
  }
  
  $('a.scroll-down').hover(
    function() {
      var max = ($('.scrollable').get(0).scrollHeight - $('.scrollable').get(0).clientHeight);
      var cur = $scrollable.get(0).scrollTop;
      var time = Math.abs((max - cur)*velocity);
      $scrollable.animate({scrollTop: max}, { "duration": time, "easing": "linear" });
    },
    function() {
      $scrollable.stop();
    }
  ).click(function() {return false});
  
  $('a.scroll-up').hover(
    function() {
      var max = ($('.scrollable').get(0).scrollHeight - $('.scrollable').get(0).clientHeight);
      var cur = parseInt($scrollable.get(0).scrollTop);
      var time = Math.abs(cur*velocity);
        $scrollable.animate({scrollTop: 0}, { "duration": time, "easing": "linear" });
    },
    function() {
      $scrollable.stop();
    }
  ).click(function() {return false});
  
  
  });

/* change fonts */
Cufon.replace('h1, h2, #nav a, #search label, a.price span, #footer .made, #footer .copy, #content .banners .num, .sub-nav a', { hover: true });
