//** jQuery Scroll to Top Control script- (c) I made this script myself (Kyle Mo
nk) and it is hosted on my personal site so would appreciate if you followed my
blog at kylemonk.tumblr.com if you use it or for details on how to change the lo cation. //** Graphic originally from tumbler dashboard, for details on how to change gra phic colour, contact me at kylemonk.tumblr.com //** v1.1 (April 7th, 10'): //** 1) Adds ability to scroll to an absolute position (from top of page) or spe cific element on the page instead. //** 2) Fixes scroll animation not working in Opera. var scrolltotop={ //startline: Integer. Number of pixels from top of doc scrollbar is scro lled before showing control //scrollto: Keyword (Integer, or "Scroll_to_Element_ID"). How far to scr oll document up when control is clicked on (0=top). setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration: [500, 100]}, controlHTML: '<img src="http://media.tumblr.com/tumblr_m2cv8riIpn1r43b17 .png" style="filter:alpha(opacity=70); -moz-opacity:0.7;"/>', //HTML for control , which is auto wrapped in DIV w/ ID="topcontrol" controlattrs: {offsetx:35, offsety:60}, //offset of control relative to right/ bottom of window corner anchorkeyword: '#top', //Enter href value of HTML anchors on the page th at should also act as "Scroll Up" links state: {isvisible:false, shouldvisible:false}, scrollup:function(){ if (!this.cssfixedsupport) //if control is positioned using Java Script this.$control.css({opacity:0}) //hide control immediatel y after clicking it var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : p arseInt(this.setting.scrollto) if (typeof dest=="string" && jQuery('#'+dest).length==1) //check element set by string exists dest=jQuery('#'+dest).offset().top else dest=0 this.$body.animate({scrollTop: dest}, this.setting.scrollduratio n); }, keepfixed:function(){ var $window=jQuery(window) var controlx=$window.scrollLeft() + $window.width() - this.$cont rol.width() - this.controlattrs.offsetx var controly=$window.scrollTop() + $window.height() - this.$cont rol.height() - this.controlattrs.offsety this.$control.css({left:controlx+'px', top:controly+'px'}) }, togglecontrol:function(){ var scrolltop=jQuery(window).scrollTop() if (!this.cssfixedsupport) this.keepfixed() this.state.shouldvisible=(scrolltop>=this.setting.startline)? tr ue : false if (this.state.shouldvisible && !this.state.isvisible){ this.$control.stop().animate({opacity:1}, this.setting.f adeduration[0]) this.state.isvisible=true } else if (this.state.shouldvisible==false && this.state.isvisible ){ this.$control.stop().animate({opacity:0}, this.setting.f adeduration[1]) this.state.isvisible=false } }, init:function(){ jQuery(document).ready(function($){ var mainobj=scrolltotop var iebrws=document.all mainobj.cssfixedsupport=!iebrws || iebrws && document.co mpatMode=="CSS1Compat" && window.XMLHttpRequest //not IE or IE7+ browsers in sta ndards mode mainobj.$body=(window.opera)? (document.compatMode=="CSS 1Compat"? $('html') : $('body')) : $('html,body') mainobj.$control=$('<div id="topcontrol">'+mainobj.contr olHTML+'</div>') .css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.of fsetx, opacity:0, cursor:'pointer'}) .attr({title:'Scroll To Top'}) .click(function(){mainobj.scrollup(); return fal se}) .appendTo('body') if (document.all && !window.XMLHttpRequest && mainobj.$c ontrol.text()!='') //loose check for IE6 and below, plus whether control contain s any text mainobj.$control.css({width:mainobj.$control.wid th()}) //IE6- seems to require an explicit width on a DIV containing text mainobj.togglecontrol() $('a[href="' + mainobj.anchorkeyword +'"]').click(functi on(){ mainobj.scrollup() return false }) $(window).bind('scroll resize', function(e){ mainobj.togglecontrol() }) }) } } scrolltotop.init()