mirror of
https://github.com/SickGear/SickGear.git
synced 2025-03-23 21:14:36 +00:00
53 lines
No EOL
3.1 KiB
JavaScript
53 lines
No EOL
3.1 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(); |