2014-03-10 01:18:05 -04:00
//** 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
2014-03-20 13:51:21 -04:00
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
2014-03-10 01:18:05 -04:00
2014-03-20 13:51:21 -04:00
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 ( ) {
2014-03-10 01:18:05 -04:00
//** if ($dest!==0 && hash)
//** location.hash=hash
2014-03-20 13:51:21 -04:00
} )
}
} ,
2014-03-10 01:18:05 -04:00
2014-03-20 13:51:21 -04:00
urlparamselect : function ( ) {
var param = window . location . search . match ( /scrollto=[\w\-_,]+/i ) ; //search for scrollto=divid
return ( param ) ? param [ 0 ] . split ( '=' ) [ 1 ] : null
} ,
2014-03-10 01:18:05 -04:00
2014-03-20 13:51:21 -04:00
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 ( ) ;