<?php

function echo_panel_page($total, $page, $url)
{
	if ($total <= 1) return;
	
	echo '<ul>';
	
	if ($page > 1) { 
		echo '<li class="prev">';
		echo '<a href="'.urlReplaceParam($url,'page', $page - 1).'">';
		echo '&nbsp;&nbsp;&nbsp;';
		echo getResource("field.Pager.Previous");		
		echo '</a>';
		echo '</li>';
	} 		
		
	if ($page > 5){
		echo '<li><a href="'.urlReplaceParam($url,'page', 1).'">1</a></li>';
		
		if ($page > 6){
			echo '<li>...</li>';
		}
	}
	//Тут если ссылок больше 4 и текущая страница старше 4 рисуем ссылку для самой первой страницы
	//STU Убрано ($total > 4), т.к. оно выполняется автоматом при $page>5
	
	
	for($i=$page-4;$i<$page+5;$i++) { //по 4 с каждой стороны от текущей страницы
		if ($i<1 || $i >$total)
			continue;
		//STU В таком виде понятнее, чем в условие при выводе
		
		echo '<li'.($i==$page?' class="active"':'').'>';
		//STU А это единственное, что отличается - почему бы этим и не пользоваться?
		
		echo '<a href="'.urlReplaceParam($url,'page', $i).'">';
		echo $i;
		echo '</a></li>';		
	}
	
	if ($page < $total-4){
		if ($page < $total-5){
			echo '<li>...</li>';
		}
		
		echo '<li><a href="'.urlReplaceParam($url,'page', $total).'">'.$total.'</a></li>';		
	}
	//Тут если ссылок больше 4 и текущая страница младше чем на 4 страницы от самой старшей - рисуем ссылку для самой последней страницы
	//STU Убрал кучу условий в первом if, потому что они автоматом выполняются
	
	
	if ($page < $total) { 
		echo '<li class="next">';
		echo '<a href="'.urlReplaceParam($url,'page', $page +1).'">';
		echo getResource("field.Pager.Next");		
		echo '&nbsp;&nbsp;&nbsp;';
		echo '</a>';
		echo '</li>';
	} 
		
	echo '</ul>';
}

?>