mirror of
https://github.com/SickGear/SickGear.git
synced 2024-11-30 00:13:38 +00:00
51 lines
2.6 KiB
JavaScript
51 lines
2.6 KiB
JavaScript
|
//** Scrolling HTML Bookmarks script- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
|
||
|
//** Available/ usage terms at http://www.dynamicdrive.com/ (April 11th, 09')
|
||
|
//** Updated Nov 10th, 09'- Fixed anchor jumping issue in IE7
|
||
|
|
||
|
var bookmarkscroll={
|
||
|
setting: {duration:1000, yoffset:-50}, //{duration_of_scroll_milliseconds, offset_from_target_element_to_rest}
|
||
|
topkeyword: '#top', //keyword used in your anchors and scrollTo() to cause script to scroll page to very top
|
||
|
|
||
|
scrollTo:function(dest, options, hash){
|
||
|
var $=jQuery, options=options || {}
|
||
|
var $dest=(typeof dest=="string" && dest.length>0)? (dest==this.topkeyword? 0 : $('#'+dest)) : (dest)? $(dest) : [] //get element based on id, topkeyword, or dom ref
|
||
|
if ($dest===0 || $dest.length==1 && (!options.autorun || options.autorun && Math.abs($dest.offset().top+(options.yoffset||this.setting.yoffset)-$(window).scrollTop())>5)){
|
||
|
this.$body.animate({scrollTop: ($dest===0)? 0 : $dest.offset().top+(options.yoffset||this.setting.yoffset)}, (options.duration||this.setting.duration), function(){
|
||
|
//** if ($dest!==0 && hash)
|
||
|
//** location.hash=hash
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
|
||
|
urlparamselect:function(){
|
||
|
var param=window.location.search.match(/scrollto=[\w\-_,]+/i) //search for scrollto=divid
|
||
|
return (param)? param[0].split('=')[1] : null
|
||
|
},
|
||
|
|
||
|
init:function(){
|
||
|
jQuery(document).ready(function($){
|
||
|
var mainobj=bookmarkscroll
|
||
|
mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body')
|
||
|
var urlselectid=mainobj.urlparamselect() //get div of page.htm?scrollto=divid
|
||
|
if (urlselectid) //if id defined
|
||
|
setTimeout(function(){mainobj.scrollTo(document.getElementById(urlselectid) || $('a[name='+urlselectid+']:eq(0)').get(0), {autorun:true})}, 100)
|
||
|
$('a[href^="#"]').each(function(){ //loop through links with "#" prefix
|
||
|
var hashvalue=this.getAttribute('href').match(/#\w+$/i) //filter links at least 1 character following "#" prefix
|
||
|
hashvalue=(hashvalue)? hashvalue[0].substring(1) : null //strip "#" from hashvalue
|
||
|
if (this.hash.length>1){ //if hash value is more than just "#"
|
||
|
var $bookmark=$('a[name='+this.hash.substr(1)+']:eq(0)')
|
||
|
if ($bookmark.length==1 || this.hash==mainobj.topkeyword){ //if HTML anchor with given ID exists or href==topkeyword
|
||
|
if ($bookmark.length==1 && !document.all) //non IE, or IE7+
|
||
|
$bookmark.html('.').css({position:'absolute', fontSize:1, visibility:'hidden'})
|
||
|
$(this).click(function(e){
|
||
|
mainobj.scrollTo((this.hash==mainobj.topkeyword)? mainobj.topkeyword : $bookmark.get(0), {}, this.hash)
|
||
|
e.preventDefault()
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bookmarkscroll.init()
|