﻿var bookmarkscroll = {
    setting: { duration: 500, yoffset: 0 }, //{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)
            document.getElementById(urlselectid).setAttribute("class", "BoxBlink");
            setTimeout("document.getElementById('" + urlselectid + "').setAttribute('class', 'Box2')", 2000);
            $('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()

function blinkOnce(ElementID) {
    document.getElementById(ElementID).setAttribute("class", "BoxBlink");
    setTimeout("document.getElementById('" + ElementID + "').setAttribute('class', 'Box2')", 2000);
}
