//pouziti:
//pokud chceme, aby se nejaka oblast s prvky <table> nebo <div> strankovala, tak je nutne ji obalit to divu se tridou "paging_enabled". hledat a strankovat div class=conttext je problematicke, protoze casto obsahuje i jine prvky
//pokud chceme strankovat i jine polozky nez <table> <div> v <div class="paging_enabled">, tak je treba temto prvkum nastavit class="paging_alowHide"
//pokud nechceme, aby se nektere prvky shovavaly(nadpisy,...) je treba jim nastavit tridu "paging_notHide".

//odkaz na prvek se tridou "paging_enabled"
var paging_content;

//pocet polozek na stranku
var paging_itemsOnPage = 8;

//cislo aktualni stranky 
var paging_actualPage = 0;

//celkovy pocet zobrazovanych polozek
var paging_itemsCount = 0;

YAHOO.util.Event.onDOMReady(
	function() {
	  
		paging_content = YAHOO.util.Dom.getElementsByClassName("paging_enabled")[0];
		
		paging_itemsCount = paging_getOnlyValuableItemsCount();
			  
		paging_showPage(0);		
		
		paging_showPageListing();
		
		function paging_getOnlyValuableItemsCount(){
			var ccc = 0;
			for (var i = 0; i < paging_content.children.length; i++ ){
				if(paging_isValuableItem(paging_content.children[i])){ 
					ccc++;
				}
			}
			return ccc;
		}				
	}
);                                                      

//odstraneni polozek, ktere se nemaji zobrazit a zviditelneni tech, tere se zobrazit maji																
function paging_showPage(page){
	paging_actualPage = page;
	var startItem = page * paging_itemsOnPage;
	var endItem = (page + 1) * paging_itemsOnPage;
	var countOfValuableItems = 0;
	var ct = paging_content.children; 
	for(var i = 0; i < ct.length; i++){
		//i==0 jen z toho duvodu, ze snad vsechny vypisy zacinaji nadpisem - element h1
		if(/*(i == 0)||*/(inClassName(ct[i].className,"paging_notHide")) || (startItem <= countOfValuableItems && countOfValuableItems < endItem)){
			ct[i].style.display = "";	
		} else { 
		  ct[i].style.display = "none";
		}	
		if(paging_isValuableItem(ct[i])){
			 countOfValuableItems++;
		}
	}
}

//zjisti, jestli je v retezci trid zadana trida
function inClassName(className,el){
	if(className == el) return true;
	arr = className.split(" ");
	for(var i=0; i< arr.length; i++){
		if(arr[i] == el) return true;
	}
	return false;
}

//zjisti, zda je html element plnohodnoty prvek, ktery se ma strankovat
function paging_isValuableItem(item){
	if(item.tagName == "DIV" || item.tagName == "div" || item.tagName == "TABLE" || item.tagName == "table" || inClassName(item.className,"paging_alowHide")){
		return true; 
	} else {
		return false;
	}
}

//zobrazi cisla stranek
function paging_showPageListing(){
	var pages = paging_itemsCount / paging_itemsOnPage;
	//var div = "<div id=\"paging\" style=\"float:left;margin-left:20px;margin-right:20px;\">";
	var spans = "";
	for(var i=0; i < pages; i++){
		if(i == paging_actualPage){
			spans += "<span class=\"paging_actualPage\">" + (i+1) + "</span>";
		} else {
			spans += "<span onclick=\"paging_showPage("+i+");paging_showPageListing();\" class=\"paging_notActualPage\">" + (i+1) + "</span>";
		}
	}
	var dviNode = document.getElementById("paging_listing");
	if(dviNode){
		divNode.innerHTML = spans;
	}else{
		divNode = document.createElement('div');
		divNode.id = "paging_listing";
		
		divNode.innerHTML = spans;
		//pokud by rodicovsky element byl tabulka, je treba jit jeste o jednoho rodice zpet.
		//to muze nastat, pokud je potreba strankovat tabulky, kde je potreba aby strankovani bylo nastaveno u tbody
		if(paging_content.parentNode.tagName == "table" || paging_content.parentNode.tagName == "TABLE"){
			paging_content.parentNode.parentNode.appendChild(divNode);	
		} else {
			paging_content.parentNode.appendChild(divNode);
		}
	}
}

