/**

 * jQuery.ScrollTo

 * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com

 * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php).

 * Date: 1/2/2008

 *

 * @projectDescription Easy element scrolling using jQuery.

 * Tested with jQuery 1.2.1. On FF 2.0.0.11, IE 6, Opera 9.22 and Safari 3 beta. on Windows.

 *

 * @author Ariel Flesler

 * @version 1.3

 */

;(function($){$.scrollTo=function(target,duration,settings){$($.browser.safari?'body':'html').scrollTo(target,duration,settings)};$.scrollTo.defaults={axis:'y',duration:1};$.fn.scrollTo=function(target,duration,settings){if(typeof duration=='object'){settings=duration;duration=0}settings=$.extend({},$.scrollTo.defaults,settings);if(!duration)duration=settings.speed||settings.duration;settings.queue=settings.queue&&settings.axis.length==2;if(settings.queue)duration=Math.ceil(duration/2);if(typeof settings.offset=='number')settings.offset={left:settings.offset,top:settings.offset};return this.each(function(){var elem=this,$elem=$(elem),t=target,toff,attr={},win=$elem.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t={top:t,left:t};break}t=$(t,this);case'object':if(t.is||t.style)toff=(t=$(t)).offset()}$.each(settings.axis.split(''),parse);animate(settings.onAfter);function parse(i,axis){var Pos=axis=='x'?'Left':'Top',pos=Pos.toLowerCase(),key='scroll'+Pos,act=elem[key];if(toff){attr[key]=toff[pos]+(win?0:act-$elem.offset()[pos]);if(settings.margin){attr[key]-=parseInt(t.css('margin'+Pos))||0;attr[key]-=parseInt(t.css('border'+Pos+'Width'))||0}if(settings.offset&&settings.offset[pos])attr[key]+=settings.offset[pos]}else{attr[key]=t[pos]}if(/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max(axis));if(!i&&settings.queue){if(act!=attr[key])animate(settings.onAfterFirst);delete attr[key]}};function animate(callback){$elem.animate(attr,duration,settings.easing,function(){if(callback)callback.call(this,$elem,attr,t)})};function max(axis){var el=win?$.browser.opera?document.body:document.documentElement:elem,Dim=axis=='x'?'Width':'Height';return el['scroll'+Dim]-el['client'+Dim]}})}})(jQuery);