<!--
/**
 * jQuery history plugin e animated scroll
 *
 * Copyright (c) 2006 Taku Sano (Mikage Sawatari)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization
 * for msie when no initial hash supplied.
 * @package lib
 * @subpackage lib.js.jquery
 */

jQuery.extend({historyCurrentHash:undefined,historyCallback:undefined,historyInit:function(callback){jQuery.historyCallback=callback;var current_hash=location.hash;jQuery.historyCurrentHash=current_hash;if(jQuery.browser.msie){if(jQuery.historyCurrentHash==''){jQuery.historyCurrentHash='#';}$("body").prepend('<iframe id="jQuery_history" style="display: none;"></iframe>');var ihistory=$("#jQuery_history")[0];var iframe=ihistory.contentWindow.document;iframe.open();iframe.close();iframe.location.hash=current_hash;}else if($.browser.safari){jQuery.historyBackStack=[];jQuery.historyBackStack.length=history.length;jQuery.historyForwardStack=[];jQuery.isFirst=true;}jQuery.historyCallback(current_hash.replace(/^#/,''));setInterval(jQuery.historyCheck,100);},historyAddHistory:function(hash){jQuery.historyBackStack.push(hash);jQuery.historyForwardStack.length=0;this.isFirst=true;},historyCheck:function(){if(jQuery.browser.msie){var ihistory=$("#jQuery_history")[0];var iframe=ihistory.contentDocument||ihistory.contentWindow.document;var current_hash=iframe.location.hash;if(current_hash!=jQuery.historyCurrentHash){location.hash=current_hash;jQuery.historyCurrentHash=current_hash;jQuery.historyCallback(current_hash.replace(/^#/,''));}}else if($.browser.safari){if(!jQuery.dontCheck){var historyDelta=history.length-jQuery.historyBackStack.length;if(historyDelta){jQuery.isFirst=false;if(historyDelta<0){for(var i=0;i<Math.abs(historyDelta);i++)jQuery.historyForwardStack.unshift(jQuery.historyBackStack.pop());}else{for(var i=0;i<historyDelta;i++)jQuery.historyBackStack.push(jQuery.historyForwardStack.shift());}var cachedHash=jQuery.historyBackStack[jQuery.historyBackStack.length-1];if(cachedHash!=undefined){jQuery.historyCurrentHash=location.hash;jQuery.historyCallback(cachedHash);}}else if(jQuery.historyBackStack[jQuery.historyBackStack.length-1]==undefined&&!jQuery.isFirst){if(document.URL.indexOf('#')>=0){jQuery.historyCallback(document.URL.split('#')[1]);}else{var current_hash=location.hash;jQuery.historyCallback('');}jQuery.isFirst=true;}}}else{var current_hash=location.hash;if(current_hash!=jQuery.historyCurrentHash){jQuery.historyCurrentHash=current_hash;jQuery.historyCallback(current_hash.replace(/^#/,''));}}},historyLoad:function(hash){var newhash;if(jQuery.browser.safari){newhash=hash;}else{newhash='#'+hash;location.hash=newhash;}jQuery.historyCurrentHash=newhash;if(jQuery.browser.msie){var ihistory=$("#jQuery_history")[0];var iframe=ihistory.contentWindow.document;iframe.open();iframe.close();iframe.location.hash=newhash;jQuery.historyCallback(hash);}else if(jQuery.browser.safari){jQuery.dontCheck=true;this.historyAddHistory(hash);var fn=function(){jQuery.dontCheck=false;};window.setTimeout(fn,200);jQuery.historyCallback(hash);location.hash=newhash;}else{jQuery.historyCallback(hash);}}});
var scrollInt;var scrTime,scrSt,scrDist,scrDur,scrInt,scrSl,scrDistX;function easeInOut(t,b,c,d){return(c/2*(1-Math.cos(Math.PI*t/d))+b);}scrollPage=function(){scrTime+=scrInt;if(scrTime<scrDur){window.scrollTo(easeInOut(scrTime,scrSl,scrDistX,scrDur),easeInOut(scrTime,scrSt,scrDist,scrDur));}else{window.scrollTo(scrSl+scrDistX,scrSt+scrDist);clearInterval(scrollInt);}};jQuery.fn.extend({smoothScroll:function(duration,velocity,marginLeft,marginTop){if(typeof(duration)=='undefined')duration=500;if(typeof(velocity)=='undefined')velocity=10;if(typeof(marginLeft)=='undefined')marginLeft=0;if(typeof(marginTop)=='undefined')marginTop=0;this.click(function(){var element_id=$(this).attr("href");var source_positions={top:$(this).get(0).offsetTop,left:$(this).get(0).offsetLeft};var dest_positions={top:$(element_id).get(0).offsetTop-marginTop,left:$(element_id).get(0).offsetLeft-marginLeft};if(window.scrollY)scrSt=window.scrollY;else if(document.documentElement.scrollTop)scrSt=document.documentElement.scrollTop;else scrSt=document.body.scrollTop;if(window.scrollX)scrSl=window.scrollX;else if(document.documentElement.scrollLeft)scrSl=document.documentElement.scrollLeft;else scrSl=document.body.scrollLeft;scrDist=dest_positions.top-scrSt;scrDistX=dest_positions.left-scrSl;scrDur=500;scrTime=0;scrInt=5;clearInterval(scrollInt);scrollInt=setInterval(scrollPage,scrInt);return false;})}})
//-->
