(function($) {

  $.fn.slider = function(method) {

    var FN = function() {},
        SETTINGS = 'slider-settings',

    BASIC_SETTINGS = {
      time: [1000, 1000],
      navigation: null,
      auto: false,
      clickable: true,
      start: 0,
      callback: FN
    },

    pointer = -1,

    methods = {

      _setOptions: function(options) {

        var settings = $(this).data(SETTINGS);

        if (!settings) {
          settings = {};
        }

        $.extend(true, settings, options);

        $(this).data(SETTINGS, settings);

      },

      _getOptions: function() {
        return $(this).data(SETTINGS);
      },

      options: function(options) {
        return (typeof options === OBJECT) ? methods._setOptions.apply(this, [options]) : methods._getOptions.apply(this);
      },

      init: function(options) {

        options = $.extend(true, BASIC_SETTINGS, options);
        methods._setOptions.apply(this, [options]);

        var obj = this,
            $this = $(obj),
            $slides = $this.find('.slide'),
            buttons = $this.find('.btn'),
            settings = $this.data(SETTINGS);

        buttons.bind('click', function() {

          var $btn = $(this);

          if ($btn.hasClass('btnStop')) {

            $btn.removeClass('btnStop').addClass('btnPlay');

            settings.auto = false;

          } else if ($btn.hasClass('btnPlay')) {

            $btn.removeClass('btnPlay').addClass('btnStop');

            settings.auto = true;

            methods.slideTo.apply(obj, ['next', false, FN]);

            setTimeout(function() {
              methods._auto.apply(obj, [settings.time[0]]);
            }, settings.time[1]);

          } else {

            if (settings.clickable) {

              if ($btn.hasClass('btnPrevious')) {
                methods.slideTo.apply(obj, ['previous', false, FN]);
              } else if ($btn.hasClass('btnNext')) {
                methods.slideTo.apply(obj, ['next', false, FN]);
              }

              $(buttons[1]).removeClass('btnStop').addClass('btnPlay');

              settings.auto = false;

            }

          }

        });

        if (settings.start != null) {
          methods.slideTo.apply(obj, [settings.start, true, FN]);
        }

        (settings.auto) ? methods._auto.apply(this) : null;
        
      },

      slideTo: function(pos, strict, callback) {

        var obj = this,
            $this = $(obj),
            settings = methods._getOptions.apply(obj),
            $slides = $this.find('.slide'),
            slides = $slides.length,
            next;

        settings.clickable = false;

        switch (pos) {

          case 'next':
            next = (pointer >= slides-1) ? 0 : pointer+1;
          break;

          case 'previous':
            next = (pointer <= 0) ? slides-1 : pointer-1;
          break;

          default:
            next = pos;
          break;

        }

        var $next = $this.find('.slide:eq('+(next)+')');

        if (pointer == -1) {

          $next.addClass('top').show();

          settings.clickable = true;

          pointer = next;

        } else if (next != pointer && next <= slides && next >= 0) {

          var $pointer = $this.find('.slide:eq('+(pointer)+')');

          $pointer.removeClass('top');

          if (strict) {

            $next.addClass('top').show();

            $pointer.hide();

            settings.clickable = true;

            pointer = next;

          } else {

            if (next > pointer) {

              $next.addClass('top').fadeIn(settings.time[1], function() {

                $pointer.hide();

                settings.clickable = true;

                pointer = next;

              });

            } else {

              $next.show();

              $pointer.fadeOut(settings.time[1], function() {

                $next.addClass('top');

                settings.clickable = true;

                pointer = next;

              });

            }

          }

          settings.callback.apply(obj, [$next]);

        } else {

          settings.clickable = true;

          pointer = next;

        }

        callback();

      },

      _auto: function() {

        var obj = this,
            settings = methods._getOptions.apply(obj);

        setTimeout(function() {

          if (settings.auto) {

            methods.slideTo.apply(obj, ['next', false, function() {
              methods._auto.apply(obj);
            }]);

          }

        }, settings.time[0]);

      }

    };

    var args = arguments;

    return this.each(function() {

      if (methods[method]) {
        methods[method].apply(this, Array.prototype.slice.call(args, 1));
      } else if (typeof method === 'object' || !method) {
        methods.init.apply(this, args);
      }

    });

  };

})(jQuery);

$(function() {

  $.backstretch(template_directory+'/images/background.jpg');

  var scalePage = function() {

    var width = $(window).width();

    if (width >= 1200) {

      $('#dcCont').width(1200);
      $('#ctCont .col-left').width(600);
      $('#ctCont .thumbs').width(400);

    } else if (width > 1000) {

      $('#dcCont').width(width);
      $('#ctCont .col-left').width(width-600);
      $('#ctCont .thumbs').width(width-600-200);

    } else {

      $('#dcCont').width(960);
      $('#ctCont .col-left').width(360);
      $('#ctCont .thumbs').width(160);

    }
    
    var height = $('#ctCont .thumbs').height(),
        headlineHeight = $('.headline').height(),
        top =  (height-headlineHeight)/2;
        
    top = (top > 0) ? top : 0;

    $('.headline').css({
      'margin-top': top+'px'
    });

  };

  $(window).resize(function() {
    scalePage();
  });

  scalePage();

  $('#slider').slider({
    time: [5000, 2000],
    auto: true,
    callback: function($slide) {

      var alt = $slide.children('img').attr('alt');

      if (alt == '' || alt == undefined) {
        $('.imageDesc').hide().html('');
      } else {
        $('.imageDesc').show().html(alt);
      }

    }
  });

});
