if (jQuery) {
	var scrolltotop = {
		setting: 		{ startline: 100, scrollto: 0, scrollduration: 1000, fadeduration: [500, 100] },
		controlHTML: 	'<img src="/images/mainlayout/up.png" style="width:64px; height:64px" />',
		controlattrs: 	{offsetx: 5, offsety: 5},
		anchorkeyword: 	'#top',
		state: 			{ isvisible: false, shouldvisible: false },

		//send the viewpoint up
		scrollup: function() {
			if (!this.cssfixedsupport) {
				this.$control.css("opacity", "0");
			}
			
			var dest = isNaN(this.setting.scrollto) ? this.setting.scrollto : parseInt(this.setting.scrollto, 8);
			if (typeof dest == "string" && jQuery('#' + dest).length == 1) {
				dest = jQuery('#'+dest).offset().top;
			} else {
				dest = 0;
			}
			
			this.$body.animate({scrollTop: dest}, this.setting.scrollduration);
		},

		//keep the fixed position
		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'});
		},

		//turn on the button, i its visible
		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;
			}
		},
	
		//turn on
		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');
				
				//loose check for IE6 and below, plus whether control contains any text
				if (document.all && !window.XMLHttpRequest && mainobj.$control.text() !='') { 
					mainobj.$control.css("width", mainobj.$control.width()); //IE6- seems to require an explicit width on a DIV containing text
				}
				
				mainobj.togglecontrol();
				jQuery('a[href="' + mainobj.anchorkeyword +'"]').click(function() {
					mainobj.scrollup();
					return false;
				});
				
				jQuery(window).bind('scroll resize', function(e) {
					mainobj.togglecontrol();
				});
			});
		}
	}

	scrolltotop.init();
}
