ajax-dynamic-pages.js

Summary

DHTMLgoodies_scrollingPages class
(C) www.dhtmlgoodies.com, October 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.

Terms of use:
Look at the terms of use at http://www.dhtmlgoodies.com/index.html?page=termsOfUse

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland




Class Summary
DHTMLgoodies_scrollingPages  

/************************************************************************************************************<br>
<br>
	@fileoverview
	DHTMLgoodies_scrollingPages class<br>
	(C) www.dhtmlgoodies.com, October 2006<br>
	<br>
	This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	<br>
	<br>
	Terms of use:<br>
	Look at the terms of use at http://www.dhtmlgoodies.com/index.html?page=termsOfUse<br>
	<br>
	Thank you!<br>
	<br>
	www.dhtmlgoodies.com<br>
	Alf Magne Kalleland<br>
<br>
************************************************************************************************************/

// {{{ Constructor
function DHTMLgoodies_scrollingPages()
{
	var targetId;
	var url;
	var sackObj;
	var currentUrl;
	var pageObjects;
	var maximumNumberOfPages;
	var scrollSpeed;
	var currentScrollTop;
	
	this.pageObjects = new Array();
	this.currentUrl = false;
	this.scrollSpeed = 20;
	this.currentScrollTop = 0;
	
	try{
		this.sackObj = new sack();
	}catch(e){
		alert('You need to include the AJAX(SACK) js file');
	}
	
}

// }}}
DHTMLgoodies_scrollingPages.prototype = {

	// {{{ setTargetId()
    /**
     * Specify where to insert dynamic pages.
     *
     * @param String targetId = Id of element where the dynamic pages will be inserted inside.
     * @public
     */		
	setTargetId : function(targetId)
	{
		this.targetId = targetId;		
	}
	// }}}	
	,
	// {{{ setUrl()
    /**
     * Set auto scroll speed
     *
     * @param String url = Specify url of page to load
     * @public
     */		
	setUrl : function(url)
	{
		this.url = url;
	}
	// }}}	
	,
	
	loadPage : function()
	{
		if(!this.url)return;
		if(this.url == this.currentUrl)return;
		this.currentUrl = this.url;
		this.currentScrollTop = Math.max(document.documentElement.scrollTop,document.body.scrollTop);
		var index = this.pageObjects.length;
		
		if(this.maximumNumberOfPages){
			if(document.getElementById('DHTMLgoodies_scrollingPages_page' + (index - this.maximumNumberOfPages))){
				var obj = document.getElementById('DHTMLgoodies_scrollingPages_page' + (index - this.maximumNumberOfPages));
				obj.parentNode.removeChild(obj);
			} 				
		}		
		
		this.pageObjects[index] = document.createElement('DIV');
		this.pageObjects[index].id = 'DHTMLgoodies_scrollingPages_page' + index;
		document.getElementById(this.targetId).appendChild(this.pageObjects[index]);
		window.refToScrollPageObj = this;
		ajax_loadContent('DHTMLgoodies_scrollingPages_page' + index,this.url,'window.refToScrollPageObj.scroll(' + index + ')');
	}
	// }}}	
	,
	// {{{ setMaximumNumberOfPages()
    /**
     * Set auto scroll speed
     *
     * @param Int maximumNumberOfPages = Maximum number of dynamic "pages". When maximum is achieved, the first "page" will be deleted dynamically.
     * @public
     */			
	setMaximumNumberOfPages : function(maximumNumberOfPages)
	{
		this.maximumNumberOfPages = maximumNumberOfPages;
	}
	
	,
	// {{{ setScrollSpeed()
    /**
     * Set auto scroll speed
     *
     * @param Int scrollSpeed = Scroll speed - (NB! Lower = faster)
     * @public
     */		
	setScrollSpeed : function(scrollSpeed)
	{
		this.scrollSpeed = scrollSpeed;
	}
	// }}}	
	,
	
	scroll : function(index)
	{
		window.scrollTo(0,this.currentScrollTop);
		var obj = document.getElementById('DHTMLgoodies_scrollingPages_page' + index);
		var scrollTop = Math.max(document.documentElement.scrollTop,document.body.scrollTop);		
		var scrollTo = this.getTopPos(obj) + obj.offsetHeight;		
		if(scrollTo>scrollTop)this.__performScroll(scrollTo);
		
	}
	
	,
	// {{{ setScrollSpeed()
    /**
     * Set auto scroll speed
     *
     * @param Int scrollSpeed = Scroll speed - (NB! Lower = faster)
     * @private
     */		
	__performScroll : function(scrollTo)
	{
		var scrollTop = Math.max(document.documentElement.scrollTop,document.body.scrollTop);
		var initScrollTop = scrollTop;
		var rest = scrollTo - scrollTop;
		scrollSpeed = Math.round(rest / this.scrollSpeed);
		if(scrollSpeed<1)scrollSpeed = 1;
		scrollTop = scrollTop + scrollSpeed;
		window.scrollTo(0,scrollTop);

		scrollTop = Math.max(document.documentElement.scrollTop,document.body.scrollTop);
		window.refToScrollPageObj = this;
		if(scrollTop < scrollTo && scrollTop!=initScrollTop)setTimeout('window.refToScrollPageObj.__performScroll(' + scrollTo + ')',10);
		
		
	}	
	,
	// {{{ getTopPos()
    /**
     * This method will return the top coordinate(pixel) of an object
     *
     * @param Object inputObj = Reference to HTML element
     * @public
     */	
	getTopPos : function(inputObj)
	{		
	  var returnValue = inputObj.offsetTop;
	  while((inputObj = inputObj.offsetParent) != null){
	  	if(inputObj.tagName!='HTML'){
	  		returnValue += inputObj.offsetTop;
	  		if(document.all)returnValue+=inputObj.clientTop;
	  	}
	  } 
	  return returnValue;
	}
	// }}}	
	,	
	// {{{ getLeftPos()
    /**
     * This method will return the left coordinate(pixel) of an object
     *
     * @param Object inputObj = Reference to HTML element
     * @public
     */	
	getLeftPos : function(inputObj)
	{	  
	  var returnValue = inputObj.offsetLeft;
	  while((inputObj = inputObj.offsetParent) != null){
	  	if(inputObj.tagName!='HTML'){
	  		returnValue += inputObj.offsetLeft;
	  		if(document.all)returnValue+=inputObj.clientLeft;
	  	}
	  }
	  return returnValue;
	}
		
}


Documentation generated by JSDoc on Sat Oct 7 17:29:51 2006