/*
 * jScroller 0.2 - Scroller Script
 *
 * Copyright (c) 2007 Markus Bordihn (markusbordihn.de)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2007-08-05 18:00:00 +0100 (Sun, 05 Aug 2007) $
 * $Rev: 0.2 $
 *
 * Modified by: Owan Hunte (ohunte@geoorbis.com)
 */
 
$(document).ready(function(){
   this.defaults = {
     scroller: {
       interval:      0,
       refresh:       40,  // Refresh Time in ms
       direction:     "up", // down,right,left,up
       speed:         10,
       id:            ".scroller",
       cont_id:       ".scrollerCont",
			 item_selector: ".scroller li",
       height:        120,
       width:         240,
       min_height:    60,
       min_width:     120,
       diff_height:   60,
       diff_width:    120,
			 item_height:   100
     }
   }
   
   var config = $.extend(this.defaults);
   var scroller = $(config.scroller.id);
   var scroller_cont = $(config.scroller.cont_id);
	 var item_el = $(config.scroller.item_selector).get()[0];
	 item_el = $(item_el);
   
   detectSizes();
   init();

   function startScroll() {
     if(!config.scroller.interval){
       //config.scroller.interval=setInterval(doScroll,config.scroller.refresh);
       config.scroller.interval=setTimeout(doScroll,0);
     }
   }
   
   function stopScroll() {
     //window.clearInterval(config.scroller.interval);
     config.scroller.interval=0;
   }
 
   function detectSizes() {
     config.scroller.width=((scroller.width())||config.scroller.width);
     config.scroller.height=((scroller.height())||config.scroller.height);
     config.scroller.min_height=((scroller_cont.height())||config.scroller.min_height);
     config.scroller.min_width=((scroller_cont.width())||config.scroller.min_width);
     config.scroller.diff_width=(config.scroller.width-config.scroller.min_width);
     config.scroller.diff_height=(config.scroller.height-config.scroller.min_height);
		 config.scroller.item_height = (item_el.height()*2)+30;
   }
   
   function init() {scroller_cont.css('overflow','hidden');}
   
   function doScroll() {
     var 
      p_top= Number((/[0-9-,.]+/.exec(scroller.css('top'))||0)),
      p_left=Number((/[0-9-,.]+/.exec(scroller.css('left'))||0));

     if (config.scroller.height <= config.scroller.min_height) {stopScroll(); return;}

     switch(config.scroller.direction) {
       case 'up':
         if (p_top <= -1*config.scroller.diff_height) {stopScroll();}
         else {
					 scroller.animate({top: p_top-config.scroller.item_height+'px'}, 1200);
					 //scroller.css('top',p_top-config.scroller.item_height+'px');
				 }
       break;
       case 'right':
         if (p_left >= 0) {stopScroll();}
         else {
					 scroller.animate({left: p_left+config.scroller.item_height+'px'}, 1200);
					 //scroller.css('left',p_left+config.scroller.item_height+'px');
				 }
       break;
       case 'left':
         if (p_left <= -1*config.scroller.diff_width) {stopScroll();}
         else {
					 scroller.animate({left: p_left-config.scroller.item_height+'px'}, 1200);
					 //scroller.css('left',p_left-config.scroller.item_height+'px');
				}
       break;
       case 'down':
         if (p_top >= 0) {stopScroll();}
         else {
					 scroller.animate({top: p_top+config.scroller.item_height+'px'}, 1200);
					 //scroller.css('top',p_top+config.scroller.item_height+'px');
				}
       break;
     }
		 stopScroll();
   }
	 
   $('.scrollDown').mousedown(function() {
      if(!config.scroller.interval) {
         config.scroller.direction = "up";
         startScroll();
      }
   }).mouseup(function() {
      //if(config.scroller.interval) {
      //   stopScroll();
      //}
   });

   $('.scrollUp').mousedown(function() {
      if(!config.scroller.interval) {
         config.scroller.direction = "down";
         startScroll();
      }
   }).mouseup(function() {
      //if(config.scroller.interval) {
      //   stopScroll();
      //}
   });
});