/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
//;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);


;
(function (d) {
  var k = d.scrollTo = function (a, i, e) {
      d(window).scrollTo(a, i, e)
      };
  k.defaults = {
    axis: 'xy',
    duration: parseFloat(d.fn.jquery) >= 1.3 ? 0 : 1
  };
  k.window = function (a) {
    return d(window)._scrollable()
  };
  d.fn._scrollable = function () {
    return this.map(function () {
      var a = this,
          i = !a.nodeName || d.inArray(a.nodeName.toLowerCase(), ['iframe', '#document', 'html', 'body']) != -1;
      if (!i) return a;
      var e = (a.contentWindow || a).document || a.ownerDocument || a;
      return d.browser.safari || e.compatMode == 'BackCompat' ? e.body : e.documentElement
    })
  };
  d.fn.scrollTo = function (n, j, b) {
    if (typeof j == 'object') {
      b = j;
      j = 0
    }
    if (typeof b == 'function') b = {
      onAfter: b
    };
    if (n == 'max') n = 9e9;
    b = d.extend({}, k.defaults, b);
    j = j || b.speed || b.duration;
    b.queue = b.queue && b.axis.length > 1;
    if (b.queue) j /= 2;
    b.offset = p(b.offset);
    b.over = p(b.over);
    return this._scrollable().each(function () {
      var q = this,
          r = d(q),
          f = n,
          s, g = {},
          u = r.is('html,body');
      switch (typeof f) {
      case 'number':
      case 'string':
        if (/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)) {
          f = p(f);
          break
        }
        f = d(f, this);
      case 'object':
        if (f.is || f.style) s = (f = d(f)).offset()
      }
      d.each(b.axis.split(''), function (a, i) {
        var e = i == 'x' ? 'Left' : 'Top',
            h = e.toLowerCase(),
            c = 'scroll' + e,
            l = q[c],
            m = k.max(q, i);
        if (s) {
          g[c] = s[h] + (u ? 0 : l - r.offset()[h]);
          if (b.margin) {
            g[c] -= parseInt(f.css('margin' + e)) || 0;
            g[c] -= parseInt(f.css('border' + e + 'Width')) || 0
          }
          g[c] += b.offset[h] || 0;
          if (b.over[h]) g[c] += f[i == 'x' ? 'width' : 'height']() * b.over[h]
        } else {
          var o = f[h];
          g[c] = o.slice && o.slice(-1) == '%' ? parseFloat(o) / 100 * m : o
        }
        if (/^\d+$/.test(g[c])) g[c] = g[c] <= 0 ? 0 : Math.min(g[c], m);
        if (!a && b.queue) {
          if (l != g[c]) t(b.onAfterFirst);
          delete g[c]
        }
      });
      t(b.onAfter);

      function t(a) {
        r.animate(g, j, b.easing, a &&
        function () {
          a.call(this, n, b)
        })
      }
    }).end()
  };
  k.max = function (a, i) {
    var e = i == 'x' ? 'Width' : 'Height',
        h = 'scroll' + e;
    if (!d(a).is('html,body')) return a[h] - d(a)[e.toLowerCase()]();
    var c = 'client' + e,
        l = a.ownerDocument.documentElement,
        m = a.ownerDocument.body;
    return Math.max(l[h], m[h]) - Math.min(l[c], m[c])
  };

  function p(a) {
    return typeof a == 'object' ? a : {
      top: a,
      left: a
    }
  }
})(jQuery);
