/*
 * jQuery autoscroll plugin
 *
 * Copyright 2008 Wilker Lucio <wilkerlucio@gmail.com>
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License. 
 */
AUTOSCROLL_X=1;AUTOSCROLL_Y=2;AUTOSCROLL_BOTH=3;(function($){$.autoscroll={};$.autoscroll.Easemove=function(){this.current_point=0;this.end_point=0;this.running=false;this.speed=.07;this.onmove=function(){};};$.autoscroll.Easemove.prototype={set_end_point:function(point){this.end_point=point;if(this.running){return;};this.running=true;this.move();},move:function(){var distance=this.end_point-this.current_point;var move=distance*this.speed;this.current_point+=move;this.onmove(this.current_point);if(Math.round(this.current_point)!=this.end_point){var t=this;setTimeout(function(){t.move();},20);}else{this.running=false;}}};$.autoscroll.zip=function(){var items=$.makeArray(arguments);var callback=items.shift();var results=[];for(var i=0;i<items[0].length;i++){var line=[];for(var x=0;x<items.length;x++){line.push(items[x][i]);};results.push(callback.apply(this,line));};return results;};$.fn.autoscroll=function(mode,degree_window,speed){mode=mode||AUTOSCROLL_BOTH;degree_window=degree_window||[20,20];speed=speed||.07;var directions=['left','top'];return this.each(function(){var container=$(this);var inner_container=container.children(':first');var ava_size=[container.width(),container.height()];var position=inner_container.css('position');inner_container.css('position','absolute');var real_size=[inner_container.width(),inner_container.height()];inner_container.css('position',position);var offset=container.offset();offset=[offset.left,offset.top];var easemove=[];jQuery.each(directions,function(i,v){var obj=new jQuery.autoscroll.Easemove();obj.speed=speed;obj.onmove=function(position){inner_container.css('margin-'+v,-position);};easemove.push(obj);});container.mousemove(function(event){var mouse=[event.pageX,event.pageY];jQuery.autoscroll.zip(function(m,o,a,r,e,w,t){if(!(t&mode))return;var d=m-o;d=Math.min(Math.max(d-w,0),a-w*2);var f=d/(a-w*2);var real=f*(r-a);e.set_end_point(real);},mouse,offset,ava_size,real_size,easemove,degree_window,[AUTOSCROLL_X,AUTOSCROLL_Y]);});});};})(jQuery);