var Utils = {
	show : function(element){
		if (element!=null && element.className.indexOf('hide') >= 0){
			element.className = element.className.substring(0, element.className.indexOf('hide'));
		}
	},

	hide : function(element){
		if (element!=null && element.className.indexOf('hide') < 0){
			element.className = element.className + " hide";
		}
	},

	// returns the first parent of a node with a given class
	findParent : function(obj, parentClass){
		var parent = obj.parentNode;
		if (parent.className && parent.className.indexOf(parentClass) != -1)
			return parent;
		else return this.findParent(parent, parentClass);
	},

	// returns the first child of a node with a given class
	findChild : function(obj, childClass){
		var match;
		for(var i=0; i<obj.childNodes.length; i++){
			var child = obj.childNodes[i];
			if (child.className && child.className==childClass)
				match = child;
			else if(child.childNodes && child.childNodes.length>0){
				match = this.findChild(child, childClass);
			}
			if(match) return match;
		}
	}
}

var Paginate = {
	getPrev : function(obj){
		this.page(obj, 'prev');
	},

	getNext : function(obj){
		this.page(obj, 'next');
	},

	page : function(obj, direction){
		var mdl = Utils.findParent(obj, 'mdl');

		var pagination = Utils.findChild(mdl, 'pagination');
		var pageCount = Utils.findChild(pagination, 'sm');

		var count = new Array();
		count = pageCount.innerHTML.split(' ');

		var current = count[0]*1;
		var total = count[2]*1;
		var requestPage;

		if(direction=='prev'){
			if(current==1) requestPage = total;
			else requestPage = current - 1;
		}
		else{
			if(current==total) requestPage = 1;
			else requestPage = current + 1;
		}

		var listCount = 0;
		for(var i=0; i<mdl.childNodes.length; i++){
			var child = mdl.childNodes[i];
			if (child.nodeName=='UL' || (child.nodeName=='DIV' && child.className.indexOf('paginationGroup')>-1)){
				listCount++;
				if (listCount!=requestPage) Utils.hide(child);
				else Utils.show(child);
			}
		}

		var newPageCounter = requestPage + " of " + total;
		pageCount.replaceChild(document.createTextNode(newPageCounter), pageCount.childNodes[0]);
	}
}