/*
 * jQuery FullScreen Image Scroller
 * Examples and documentation are nowhere
 * Copyright (c) 2011 Adam Libonatti-Roche
 * Version: 0.1
 * Dual licensed under the MIT and GPL licenses.
 * Requires: jQuery v1.3.2 or later
 */
(function ($) {

    /* Delay Function */
    /* Delays any action */
    var delay = (function(){
      var timer = 0;
      return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
      };
    })();



    var ScrollImage = function(element,options) {

        /* Base Settings*/
        var settings = {
            "speed"    : "500",
            "images": ""
        };

        var $this = $(element);

        $this.each(function() {
              if(options) {
                     $.extend(settings,options);
                 }
             });

            var vars = {
                currentSlide: 0,
                nextSlide:'',
                currentImage: '',
                currentLink: '',
                totalSlides: 0,
                randAnim: '',
                running: false,
                paused: false,
                stop: false,
                ops: settings
            };

            $this.data('si:vars',vars)

             $this.append('<ul id="banner_images"></ul>');
             $this.append('<ul id="banner_links"></ul>');

             $.each(settings.images,function(i,o) {

				 //$('#banner_images').append('<li><a href="' + settings.linkyTo[i] + '"><img class="item" src="' + o + '" alt="" /></a><div class="caption"><h1><img src="' + settings.title[i] + '" alt="' + settings.titleAlt[i] + '" /></h1> <p><img src="' + settings.text[i] + '" alt="' + settings.textAlt[i] + '" /></p> <a href="' + settings.linkyTo[i] + '"><img src="' + settings.linky[i] + '" alt="' + settings.linkyAlt[i] + '" /> </a>  </div></li>');

				      $('#banner_images').append('<li><a href="' + settings.linkyTo[i] + '"><img class="item" src="' + o + '" alt="" /></a></li>');


                 $('#banner_links').append('<li><a href="#" class="block" rel="' + i + '"></a></li>');
             });

            $('#banner_links li a').each(function() {
                $(this).bind('click',{ele:$(this)},function(e) {
                    switchImage(e.data.ele,$this);
                });
            })

            var imageChildren = $this.find('#banner_images').children();
            var title = $this.find('.caption').find('h1');
            var text = $this.find('.caption').find('p');
            var linky = $this.find('.caption').find('a');
            var links    = $this.find('#banner_links').children();

            imageChildren.each(function() {
                var chi = $(this);
                chi.css('display','none');
            });

            vars.totalSlides = $('#banner_images li').length;
            vars.currentSlide = 0;
            vars.currentImage = $(imageChildren[vars.currentSlide]);
            vars.currentLink    =    $(links[vars.currentSlide]);
            vars.currentTitle    =    $(title[vars.currentSlide]);
            vars.currentText    =    $(text[vars.currentSlide]);
            vars.currentLinky    =    $(linky[vars.currentSlide]);


            // show starting image


                 if ( ($.browser.msie) && ($.browser.version == '7.0') ){
   $(imageChildren[vars.currentSlide]).delay('200').fadeIn(1000);
                                $(links[vars.currentSlide]).addClass('active');

                                 setTimeout(function() {
                                $(title[vars.currentSlide]).css('display','block');
                                 }, 400);
                                 setTimeout(function() {
                                $(text[vars.currentSlide]).css('display','block');
                                 }, 800);
                                  setTimeout(function() {
                                $(linky[vars.currentSlide]).css('display','block');
                                 }, 1000);
  } else {

        $(imageChildren[vars.currentSlide]).delay('200').fadeIn(1000);
                $(links[vars.currentSlide]).addClass('active');
                $(title[vars.currentSlide]).delay('400').fadeIn(1000);
                $(text[vars.currentSlide]).delay('800').fadeIn(1000);
                $(linky[vars.currentSlide]).delay('1000').fadeIn(1000);

  };



            $(links[vars.currentSlide]).addClass('active');

            vars.running = true;
            timer = setInterval(function(){ runShow($this, imageChildren, title, settings, false); }, 8000);
            vars.timer = timer;

            $this.data('si:vars',vars);

    }


    var runShow = function(scroller,images,links,title,settings) {

        var vars = scroller.data('si:vars');

             var $this = $(this);

                 var images = images
                var title = title
                 var current = vars.currentSlide;
                 var i = 0;
                 images.each(function() {
                     if ($(this).is(':visible')) {
                         current = i;
                        vars.currentSlide = i;
                         return false;
                     }
                     i++;
                 });

                 var next = (current * 1) + 1;

                 if (next >= images.length) {
                     next = 0;
                 }

                vars.nextSlide = next;

                var links    = scroller.find('#banner_links').children();
                var title    = scroller.find('.caption').children('h1');
                var text   = scroller.find('.caption').children('p');
                var linky   = scroller.find('.caption').children('a');

         if ( ($.browser.msie) && ($.browser.version == '7.0') ){
   $(images[current]).fadeOut(100);
                                $(title[current]).css('display','none');
                                $(text[current]).css('display','none');
                                $(linky[current]).css('display','none');
                                $(links[current]).removeClass('active');

                                $(images[next]).delay('200').fadeIn(1000);
                                $(links[next]).addClass('active');
                                 setTimeout(function() {
                                $(title[next]).css('display','block');
                                 }, 400);
                                 setTimeout(function() {
                                $(text[next]).css('display','block');
                                 }, 800);
                                  setTimeout(function() {
                                $(linky[next]).css('display','block');
                                 }, 1000);
  } else {

    $(images[current]).fadeOut(100);
                $(title[current]).fadeOut(100);
                $(text[current]).fadeOut(100);
                $(linky[current]).fadeOut(100);
                $(links[current]).removeClass('active');

                 $(images[next]).delay('200').fadeIn(1000);
                $(links[next]).addClass('active');
                $(title[next]).delay('400').fadeIn(1000);
                $(text[next]).delay('800').fadeIn(1000);
                $(linky[next]).delay('1000').fadeIn(1000);
  };





                vars.currentSlide = next;
                vars.nextSlide = (vars.currentSlide * 1) + 1;
                if (vars.nextSlide >= images.length) {
                     vars.nextSlide = 0;
                 }

                scroller.data('si:vars',vars);
    }

    var switchImage = function(data,element) {
        $element = $(element);
        vars = $element.data('si:vars');
        timer = vars.timer;
        clearInterval(timer);
        var temp = parseFloat(data.attr('rel'));
        vars.nextSlide = temp;

        clearTimeout(vars.t1);
        clearTimeout(vars.t2);

        var imageChildren = $element.find('#banner_images').children();
        var links = $element.find('#banner_links').children();
        var title    = $element.find('.caption').children('h1');
        var text   = $element.find('.caption').children('p');
        var linky   = $element.find('.caption').children('a');

        clearInterval();

        if ( ($.browser.msie) && ($.browser.version == '7.0') ){


            $(imageChildren[vars.currentSlide]).fadeOut(500);
            $(imageChildren[vars.nextSlide]).fadeIn(1000);
            $(links[vars.currentSlide]).removeClass('active');
            $(links[vars.nextSlide]).addClass('active');

            $(title[vars.currentSlide]).css('display','none');
            $(title[vars.nextSlide]).css('display','block');

            $(text[vars.currentSlide]).css('display','none');
            $(text[vars.nextSlide]).css('display','block');

            $(linky[vars.currentSlide]).css('display','none');
            $(linky[vars.nextSlide]).css('display','block');


} else {$(imageChildren[vars.currentSlide]).fadeOut(500);
        $(imageChildren[vars.nextSlide]).fadeIn(1000);
        $(links[vars.currentSlide]).removeClass('active');
        $(links[vars.nextSlide]).addClass('active');
        $(title[vars.currentSlide]).fadeOut(100);
        $(title[vars.nextSlide]).delay('400').fadeIn(1000);
        $(text[vars.currentSlide]).fadeOut(100);
        $(text[vars.nextSlide]).delay('800').fadeIn(1000);
        $(linky[vars.currentSlide]).fadeOut(100);
        $(linky[vars.nextSlide]).delay('1000').fadeIn(1000);
};



        vars.currentSlide = vars.nextSlide;
        vars.nextSlide = (vars.currentSlide * 1) + 1;
        if (vars.nextSlide >= imageChildren.length) {
             vars.nextSlide = 0;
         }

        $element.data('si:vars',vars);
    }





    $.fn.scrollimage = function(options) {
        return this.each(function(key, value){
            var element = $(this);
            if (element.data('ScrollImage')) return element.data('ScrollImage');
            var scroll = new ScrollImage(this, options);
            element.data('ScrollImage', scroll);
        });







};


})(jQuery);


