/*

 * jScroller 0.3 - Scroller Script

 *

 * Copyright (c) 2007 Markus Bordihn (http://markusbordihn.de)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * $Date: 2007-11-15 13:00:00 +0100 (Thu, 15 Nov 2007) $

 * $Rev: 0.3 $

 */



$(document).ready(function(){

   this.defaults = {

     scroller: {

       interval:  0,    // Dont touch !

       refresh:   30,  // Refresh Time in ms

       direction: "left", // down,right,left,up

       speed:     1,    // Set the Scroller Speed

       id:        "#scroller",

       cont_id:   "#scroller_container"

     }

   }



   var jscroller_config = $.extend(this.defaults), jscroller_scroller = $(jscroller_config.scroller.id), jscroller_scroller_cont = $(jscroller_config.scroller.cont_id);

   

   if (jscroller_scroller && jscroller_scroller_cont) {

      jscroller_scroller.css({position: 'absolute', left: 0, top: 0});

      jscroller_init();

   }



   function jscroller_startScroll() {

     if(!jscroller_config.scroller.interval) {

      jscroller_config.scroller.interval=window.setInterval(jscroller_doScroll,jscroller_config.scroller.refresh);

     }

   }



   function jscroller_stopScroll() {

     if (jscroller_config.scroller.interval) {

      window.clearInterval(jscroller_config.scroller.interval);

      jscroller_config.scroller.interval=0;

     }

   }



   function jscroller_init() {

    $("#scroller a").click(function(){

      window.open(this.href);

      return false;

    });

    jscroller_scroller_cont.css('overflow','hidden');

    if(!jscroller_config.scroller.interval) { 

      if (window.attachEvent) {

       window.attachEvent("onfocus", jscroller_startScroll);

       window.attachEvent("onblur",  jscroller_stopScroll);

       window.attachEvent("onresize", jscroller_startScroll);

       window.attachEvent("onscroll", jscroller_startScroll);

      }

      else if (window.addEventListener) {

       window.addEventListener("focus", jscroller_startScroll, false);

       window.addEventListener("blur",  jscroller_stopScroll, false);

       window.addEventListener("resize", jscroller_startScroll, false);

       window.addEventListener("scroll", jscroller_startScroll, false);

      }

      jscroller_startScroll();

      if ($.browser.msie) {window.focus()}

     }

   }



   function jscroller_getElem(Elem) {

    return (typeof Elem == "string" && document.getElementById)? document.getElementById(Elem) : Elem;

   }



   function jscroller_doScroll() {

    if (scroller_dom = jscroller_getElem(jscroller_scroller.attr("id"))) {

     var

      p_top= Number((/[0-9-,.]+/.exec(jscroller_scroller.css('top'))||0)),

      p_left=Number((/[0-9-,.]+/.exec(jscroller_scroller.css('left'))||0)),

      min_height=jscroller_scroller_cont.height(),

      min_width=jscroller_scroller_cont.width(),

      speed=jscroller_config.scroller.speed,

      p_height=scroller_dom.offsetHeight,

      p_width=scroller_dom.offsetWidth,

      direction=jscroller_config.scroller.direction,

      jscroller=jscroller_scroller;



     switch(direction) {

       case 'up':

        if (p_top <= -1*p_height) {p_top=min_height;}

        jscroller.css('top',p_top-speed+'px');

       break;

       case 'right':

        if (p_left >= min_width) {p_left=-1*p_width;}

        jscroller.css('left',p_left+speed+'px');

       break;

       case 'left':

        if (p_left <= -1*p_width) {p_left=min_width;}

        jscroller.css('left',p_left-speed+'px');

       break;

       case 'down':

        if (p_top >= min_height) {p_top=-1*p_height;}

        jscroller.css('top',p_top+speed+'px');

       break;

     }

    }

   }

});
