/* Horizontal Tiny Scrolling - a smooth scrolling script for horizontal websites(the brother of the vertical "Tiny Scrolling")by Marco Rosella - http://lab.centralscrutinizer.it/the-tiny-scrollingsv0.8 - July 7, 2009Follow "The Horizontal Way"!: http://www.thehorizontalway.com			also on Facebook: http://www.facebook.com/pages/The-Horizontal-Way/91646807676?ref=share						DONATE!!!!!!!!: http://www.thehorizontalway.com/donateThanks! :-DThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA				*/window.onload = function() {	HtinyScrolling.init(); scrollTips.init();}function gotoit(target){	HtinyScrolling.scrollToIt(target);}var HtinyScrolling = {	speed : 50,      //set here the scroll speed: when this value increase, the speed decrease. 	maxStep: 150,	 //set here the "uniform motion" step for long distances	brakeK: 3,		 //set here the coefficient of slowing down	hash:null,			currentBlock:null,	requestedX:0,	init: function() {		var lnks = document.getElementsByTagName('a');   		for(var i = 0, lnk; lnk = lnks[i]; i++) {   			if ((lnk.href && lnk.href.indexOf('#') != -1) &&  ( (lnk.pathname == location.pathname) || ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {  			addEvent(lnk,'click',HtinyScrolling.initScroll,false);			lnk.onclick=function(){return false;} // Safari			}   		}    	},	getTarget: function(target) {		while(target.tagName.toLowerCase() != 'a')			target = target.parentNode;		return target;	},	getElementXpos: function(el){		var x = 0;		while(el.offsetParent){  			x += el.offsetLeft;    			el = el.offsetParent;		}	return x-60;//return x	},			getScrollLeft: function(){		if(document.all) return (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;		else return window.pageXOffset;   	},		getWindowWidth: function(){		if (window.innerWidth)	return window.innerWidth; 		if(document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;	},	getDocumentWidth: function(){		if (document.width) return document.width;		if(document.body.offsetWidth) return document.body.offsetWidth;	},	initScroll: function(e){		var targ;  		if (!e) var e = window.event;		if (e.target) targ = e.target;		else if (e.srcElement) targ = e.srcElement;  		targ = HtinyScrolling.getTarget(targ);  //a fix by Skid X		HtinyScrolling.hash = targ.href.substr(targ.href.indexOf('#')+1,targ.href.length); 		HtinyScrolling.currentBlock = document.getElementById(HtinyScrolling.hash);   		if(!HtinyScrolling.currentBlock) return;		HtinyScrolling.requestedX = HtinyScrolling.getElementXpos(HtinyScrolling.currentBlock); 		HtinyScrolling.scroll(targ); 		return false;	},	scrollToIt: function(targ){ //thanks to Michael Ionita-Ganea		target = document.getElementById(targ);		HtinyScrolling.currentBlock = document.getElementById(targ);		if(!HtinyScrolling.currentBlock) return;		HtinyScrolling.requestedX = HtinyScrolling.getElementXpos(HtinyScrolling.currentBlock);		HtinyScrolling.scroll(target);		return false;			}, 	scroll: function(targ) {		var left  = HtinyScrolling.getScrollLeft();		if(HtinyScrolling.requestedX > left) { //a fix by Michael Ionita-Ganea			var endDistance = Math.round((HtinyScrolling.getDocumentWidth() - (left + HtinyScrolling.getWindowWidth())) / HtinyScrolling.brakeK);			endDistance = Math.min(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK), endDistance);			var offset = Math.min(Math.abs(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK)), HtinyScrolling.maxStep);		}else {				var offset = - Math.min(Math.abs(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK)), HtinyScrolling.maxStep);		} 		window.scrollTo(left + offset, 0);		if(Math.abs(left-HtinyScrolling.requestedX) <= 1 || HtinyScrolling.getScrollLeft() == left) {			HtinyScrolling.hash = null;		} else 	setTimeout(HtinyScrolling.scroll,HtinyScrolling.speed);	}} var scrollTips = {	dx : null,	init : function() {			if (window.addEventListener) {		window.addEventListener("DOMMouseScroll", this.mouseScroll, false);		} else document.attachEvent("onmousewheel", this.mouseScroll); 		var left = document.getElementById('left');		addEvent(left,'mouseover', function() {this.dx=setInterval('scrollTips.arrowScroll(0)',100);return false;});		addEvent(left,'mouseout', function() { clearInterval(this.dx); return false;});		var right = document.getElementById('right');		addEvent(right,'mouseover', function() {this.dx=setInterval('scrollTips.arrowScroll(1)',100);return false;});		addEvent(right,'mouseout', function() { clearInterval(this.dx); return false;});	},	mouseScroll : function(e) {		/*		if (!e) var e = window.event;		  var scroll = e.detail ? e.detail * 20 : e.wheelDelta / -20;		if (scroll>=0 ){  		window.scrollBy(80,0);		} else  window.scrollBy(-80,0) ; 		*/	},		arrowScroll: function(val) {		if(val==1) {			window.scrollBy(70,0);		} else {			window.scrollBy(-70,0)		}	}}function addEvent( obj, type, fn ) {	if (obj.addEventListener)		obj.addEventListener( type, fn, false );	else if (obj.attachEvent) {		obj["e"+type+fn] = fn;		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }		obj.attachEvent( "on"+type, obj[type+fn] );	}}function removeEvent( obj, type, fn ) {	if (obj.removeEventListener)		obj.removeEventListener( type, fn, false );	else if (obj.detachEvent) {		obj.detachEvent( "on"+type, obj[type+fn] );		obj[type+fn] = null;		obj["e"+type+fn] = null;	}}
