function getPagesTotal(itemsPerSite, itemsTotal) {
	return Math.ceil(itemsTotal/itemsPerSite);
}

function pageSelectorClicked(container, itemsPerSite, itemsTotal, currentPage, callBackFunction, dataContainer, args) {
	
	displayLoader($(dataContainer));
	
	clearContent($(container));
	buildPageSelector(container, itemsPerSite, itemsTotal, currentPage, callBackFunction, dataContainer, args);
 
	callBackFunction(currentPage, dataContainer, args);

}

function insertItem(container, itemsPerSite, itemsTotal, page, callBackFunction, text, title, dataContainer, args) {
	var event = 'pageSelectorClicked(\''+ container + '\', ' + itemsPerSite + ', ' + itemsTotal + ', ' + page +  ', ' + callBackFunction + ', \'' + dataContainer + '\', ' +  Object.toJSON(args) + '); 	return false;';
	var temp = Builder.node('a', { 'href': '#', 'onclick': event, 'title': title }, text + ' ');
	$(container).insert(temp);
}

function calcAdd(arg1, op, arg2) {
	return (op == '+') ? arg1 + arg2 : arg1 - arg2;
}

function buildPageSelector(container, itemsPerSite, itemsTotal, currentPage, callBackFunction, dataContainer, args) {

	var pagesTotal = getPagesTotal(itemsPerSite, itemsTotal);

	if ( currentPage > 1 ) {
		if ( currentPage > 2 )
			insertItem(container, itemsPerSite, itemsTotal, 1, callBackFunction, '|«', 'Erste Seite', dataContainer, args);
		insertItem(container, itemsPerSite, itemsTotal, currentPage - 1, callBackFunction, '«', 'Vorige Seite', dataContainer, args);
	}

	if ( currentPage-2 > 0 )
		insertItem(container, itemsPerSite, itemsTotal, currentPage - 2, callBackFunction, currentPage - 2, 'Seite ' + calcAdd(currentPage, '-', 2), dataContainer, args);
	if ( currentPage-1 > 0 )
		insertItem(container, itemsPerSite, itemsTotal, currentPage - 1, callBackFunction, currentPage - 1, 'Seite ' + calcAdd(currentPage, '-', 1), dataContainer, args);
	
	$(container).insert(currentPage + ' ');
	
	if ( currentPage+1 <= pagesTotal )
		insertItem(container, itemsPerSite, itemsTotal, currentPage + 1, callBackFunction, currentPage + 1, 'Seite ' + calcAdd(currentPage, '+', 1), dataContainer, args);
	if ( currentPage+2 <= pagesTotal )
		insertItem(container, itemsPerSite, itemsTotal, currentPage + 2, callBackFunction, currentPage + 2, 'Seite ' + calcAdd(currentPage, '+', 2), dataContainer, args);
	
	if ( currentPage < pagesTotal ) {
		insertItem(container, itemsPerSite, itemsTotal, currentPage + 1, callBackFunction, '»', 'Nächste Seite', dataContainer, args);
		if ( currentPage < pagesTotal - 1 )
			insertItem(container, itemsPerSite, itemsTotal, pagesTotal, callBackFunction, '»|', 'Letzte Seite', dataContainer, args);
	}
	 
}