//** jQuery Scroll to Top Control script- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
//** Available/ usage terms at http://www.dynamicdrive.com (March 30th, 09')
//** v1.1 (April 7th, 09'):
//** 1) Adds ability to scroll to an absolute position (from top of page) or specific element on the page instead.
//** 2) Fixes scroll animation not working in Opera. 

var scrolltotop = {
	setting : {
		startline :100,
		scrollto :0,
		scrollduration :1000,
		fadeduration : [ 500, 100 ]
	},
	controlHTML :'<img src="up.png" style="width:48px; height:48px" />',
	controlattrs : {
		offsetx :5,
		offsety :5
	},
	anchorkeyword :'#top',

	state : {
		isvisible :false,
		shouldvisible :false
	},

	scrollup : function(dest) {
		if (!this.cssfixedsupport)
			this.$control.css( {
				opacity :0
			})
		if (!dest) {
			var dest = isNaN(this.setting.scrollto) ? this.setting.scrollto
					: parseInt(this.setting.scrollto)
			if (typeof dest == "string" && jQuery('#' + dest).length == 1)
				dest = jQuery('#' + dest).offset().top
		} else {
			dest = parseInt(dest);
		}
		this.$body.animate( {
			scrollTop :dest
		}, this.setting.scrollduration);
	},

	keepfixed : function() {
		var $window = jQuery(window)
		var controlx = $window.scrollLeft() + $window.width()
				- this.$control.width() - this.controlattrs.offsetx
		var controly = $window.scrollTop() + $window.height()
				- this.$control.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) ? true
				: false
		if (this.state.shouldvisible && !this.state.isvisible) {
			this.$control.stop().animate( {
				opacity :1
			}, this.setting.fadeduration[0])
			this.state.isvisible = true
		} else if (this.state.shouldvisible == false && this.state.isvisible) {
			this.$control.stop().animate( {
				opacity :0
			}, this.setting.fadeduration[1])
			this.state.isvisible = false
		}
	},

	init : function() {
		jQuery(document)
				.ready(
						function($) {
							var mainobj = scrolltotop
							var iebrws = document.all
							mainobj.cssfixedsupport = !iebrws || iebrws
									&& document.compatMode == "CSS1Compat"
									&& window.XMLHttpRequest
							mainobj.$body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html')
									: $('body'))
									: $('html,body')
							mainobj.$control = $(
									'<div id="topcontrol">' + mainobj.controlHTML + '</div>')
									.css(
											{
												position :mainobj.cssfixedsupport ? 'fixed'
														: 'absolute',
												bottom :mainobj.controlattrs.offsety,
												right :mainobj.controlattrs.offsetx,
												opacity :0,
												cursor :'pointer'
											}).attr( {
										title :'Scroll Back to Top'
									}).click( function() {
										mainobj.scrollup();
										return false
									}).appendTo('body')
							if (document.all && !window.XMLHttpRequest
									&& mainobj.$control.text() != '')
								mainobj.$control.css( {
									width :mainobj.$control.width()
								})
							mainobj.togglecontrol()
							$('a[href="' + mainobj.anchorkeyword + '"]').click(
									function() {
										mainobj.scrollup()
										return false
									})
							$(window).bind('scroll resize', function(e) {
								mainobj.togglecontrol()
							})
						})
	}
}

scrolltotop.init()
