/* <documentation about="ABOUT ~/Javascript/jquery.scrollTo.js" type="GENERAL">
	<summary>jQuery.ScrollTo
        Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
        Dual licensed under MIT and GPL.
        Date: 9/11/2008

        @projectDescription Easy element scrolling using jQuery.
        http://flesler.blogspot.com/2007/10/jqueryscrollto.html
        Tested with jQuery 1.2.6. On FF 2/3, IE 6/7, Opera 9.2/5 and Safari 3. on Windows.
        
        @author Ariel Flesler
        version 1.4</summary>
	<namespace>jQuery.ScrollTo</namespace>
</documentation> */
;(function($){var g=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};g.defaults={axis:'y',duration:1};g.window=function(a){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var a=this.parentWindow||this.defaultView,elem=this.nodeName=='#document'?a.frameElement||a:this,doc=elem.contentDocument||(elem.contentWindow||elem).document,isWin=elem.setInterval;return elem.nodeName=='IFRAME'||isWin&&$.browser.safari?doc.body:isWin?doc.documentElement:this})};$.fn.scrollTo=function(d,e,f){if(typeof e=='object'){f=e;e=0}if(typeof f=='function')f={onAfter:f};f=$.extend({},g.defaults,f);e=e||f.speed||f.duration;f.queue=f.queue&&f.axis.length>1;if(f.queue)e/=2;f.offset=both(f.offset);f.over=both(f.over);return this.scrollable().each(function(){var c=this,$elem=$(c),targ=d,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(f.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=c[key],Dim=a=='x'?'Width':'Height',dim=Dim.toLowerCase();if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(f.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=f.offset[pos]||0;if(f.over[pos])attr[key]+=targ[dim]()*f.over[pos]}else attr[key]=targ[pos];if(/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max(Dim));if(!i&&f.queue){if(old!=attr[key])animate(f.onAfterFirst);delete attr[key]}});animate(f.onAfter);function animate(a){$elem.animate(attr,e,f.easing,a&&function(){a.call(this,d,f)})};function max(a){var b='scroll'+a,doc=c.ownerDocument;return win?Math.max(doc.documentElement[b],doc.body[b]):c[b]}}).end()};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
