var domPager = new Class({
	Implements:[Options,Events],
	rootNode:null,
	contentElements:[],
	pagerElements:[],
	actPage:0,
	options:{
		content:'.pager-content',
		pagerClass:'pager',
		pagerActiveClass:'side-pager-out',
		pagerBoxClass:'pager-box',
		pagerItem:'element',
		pagerPrev:'prev-pager',
		pagerNext:'next-pager'
	},
	initialize:function(item,options){
		if($defined(item)){
			this.setRootNode($$(item)[0]);
		}else{
			this.rootNode = $(document.body);
		}
		this.setOptions(options);
		this.fetchContent();
		this.buildPager();
		this.fireEvent('onInit');		
	},
	setRootNode:function(item){
		if($defined(item)){
			this.rootNode = $(item);
		}else{
			this.log('domPager: no items found for making domtabs');
		}
	},
	fetchContent:function(){
		var content = $$(this.options.content);
		this.contentElements = $A(content);
	},
	buildPager:function(){
		//only build browser if more than one content element is shown...
		if(this.contentElements.length >1){
			var container = new Element('div',{
				'class':this.options.pagerBoxClass
			}); 
			var pager = new Element('ul',{
				'class':this.options.pagerClass
			});
			container.grab(pager);
			
			var prevLink = new Element('a',{
				'events': {
				'click':function(event){
					//event.preventDefault(); 
					if(parseInt(this.actPage) > 0){
						this.showPage(parseInt(this.actPage-1));
					}
				}.bind(this)
			},
			'href':window.location+'#',
			'html':'&nbsp;'
			}); 
			var prevButton = new Element('li',{
				'class':this.options.pagerPrev
			}); 
			prevButton.grab(prevLink);
			pager.grab(prevButton);
			//build link items
			this.contentElements.each(function(el,index){
				var link = new Element('a',{
					'events': {
						'click':function(event){
							//event.preventDefault(); 
							this.showPage(index);
						}.bind(this)
					},
					'href':window.location+'#',
					'html':index+1
				});
				var element = new Element('li',{
					'class':this.options.pagerItem
				});
				this.pagerElements.push(element);
				element.grab(link);
				pager.grab(element);
			}.bind(this));
			//link items end
			
			var nextLink = new Element('a',{
				'events': {
				'click':function(event){
					//event.preventDefault();
					if(parseInt(this.actPage+1) < this.pagerElements.length){
						this.showPage(parseInt(this.actPage+1));
					}
				}.bind(this)
			},
			'href':window.location+'#',
			'html':'&nbsp;'
			}); 
			var nextButton = new Element('li',{
				'class':this.options.pagerNext
			}); 
			nextButton.grab(nextLink);
			pager.grab(nextButton);
			//clone
			/*var pagerCopy = this.clonePager(pager);
			var containerCopy = new Element('div',{
				'class':this.options.pagerBoxClass
			}); 
			containerCopy.grab(pagerCopy);
			this.rootNode.grab(containerCopy,'top');
			*/
			//clone end
			//inject into dom document...
			this.rootNode.grab(container,'bottom');
			this.showPage(0);
		}		
	},
	showPage:function(index){
		if(!$defined(this.contentElements[index])){
			index = 0
		}
		this.contentElements.each(function(el,index){
			el.setStyle('display','none');
		});
		
		this.pagerElements.each(function(el,index){
			el.removeClass(this.options.pagerActiveClass);
		}.bind(this));
		
		this.actPage = index;
		this.pagerElements[index].addClass(this.options.pagerActiveClass);
		this.contentElements[index].setStyle('display','block');
	},
	clonePager:function(pager){
		var pagerCopy = pager.clone(false).cloneEvents(pager);		
		pager.getChildren().each(function(el,index){
			var item = el.clone(false).cloneEvents(el);
			el.getChildren().each(function(el,index){
				var link = el.clone().cloneEvents(el);
				item.grab(link);
			});
			pagerCopy.grab(item);
		});
	return pagerCopy;
	}
});
