<?php
class Paginador {

    private $fn_load;
	private $pagina_actual;
	private $registros_por_pagina;
	private $total_registros;
	private $cantidad_paginas;

    public function __construct($fn_load, $pagina_actual, $registros_por_pagina, $total_registros)
	{
      $this->fn_load              = $fn_load;
	  $this->pagina_actual        = $pagina_actual;
	  $this->registros_por_pagina = $registros_por_pagina;
      $this->total_registros      = $total_registros;
    }

	public function muestraPaginador()
	{
		if($this->registros_por_pagina < $this->total_registros && ($this->total_registros < 15) )
			$minimo = $this->registros_por_pagina;
		else
			$minimo = 15;

		if(round($this->total_registros/$this->registros_por_pagina) < $this->total_registros/$this->registros_por_pagina) {
			$cantidad_paginas = round($this->total_registros/$this->registros_por_pagina) + 1;
		} else {
			$cantidad_paginas = round($this->total_registros/$this->registros_por_pagina);
		}

		$this->cantidad_paginas = $cantidad_paginas;
		?>

        <table>
            <tr>
                <td class="label_paginador">Mostrar:</td>
                <td>
                    <select
                    	style='width:70px; height: 30px; padding-top: 3px; padding-left: 1px;'
                        id='cmb_paginacion_cantidad' name='cmb_paginacion_cantidad'
                    	class="form-control label_paginador"
                            onchange='<?php echo $this->fn_load;?>(1, this.value)'><?php
						if($this->total_registros >= $minimo) {?>
						<option value='<?php echo $minimo;?>' <?php if($this->registros_por_pagina == 15) echo 'selected';?>><?php echo $minimo;?></option><?php
						}
					  if($this->total_registros >= 30) {?>
                      <option value='30' <?php if($this->registros_por_pagina == 30) echo 'selected';?>>30</option><?php
					  }
					  if($this->total_registros >= 45) {?>
                      <option value='45' <?php if($this->registros_por_pagina == 45) echo 'selected';?>>45</option><?php
					  }
					  if($this->total_registros >= 45) {?>
                      <option value='60' <?php if($this->registros_por_pagina == 60) echo 'selected';?>>60</option><?php
					  }
					  if($this->total_registros >= 45) {?>
                      <option value='75' <?php if($this->registros_por_pagina == 75) echo 'selected';?>>75</option><?php
					  }
					  if($this->total_registros >= 45) {?>
                      <option value='90' <?php if($this->registros_por_pagina == 90) echo 'selected';?>>90</option><?php
					  }
					  if($this->total_registros >= 45) {?>
                      <option value='105' <?php if($this->registros_por_pagina == 105) echo 'selected';?>>105</option><?php
					  }
					  if($this->total_registros >= 45) {?>
                      <option value='120' <?php if($this->registros_por_pagina == 120) echo 'selected';?>>120</option><?php
					  }?>
                      <option value='<?php echo $this->total_registros;?>' <?php
					  		if ( ($this->registros_por_pagina == $this->total_registros) ) echo 'selected';?>>Todos</option>
                    </select>
                </td><?php
				if($this->total_registros > $this->registros_por_pagina) {?>
					<td><?php
						if($this->pagina_actual > 1) {?>
							<a class='primero' onclick="<?php echo $this->fn_load;?>(1, <?php echo $this->registros_por_pagina;?>)"></a><?php
						}?>
					</td>
					<td><?php
						if($this->pagina_actual > 1) {?>
							<a class='anterior'
                            	onclick="<?php echo $this->fn_load;?>(<?php echo $this->pagina_actual - 1;?>, <?php echo $this->registros_por_pagina;?>)"></a><?php
						}?>
					</td>
					<td class="label_paginador" style='text-align:center'>Pagina:</td>
					<td style='text-align:center'>
						<select
                        	style='width:70px; height: 30px; padding-top: 3px; padding-left: 1px;'
							class="label_paginador"
                            id='cmb_paginacion_pagina'
							onchange='<?php echo $this->fn_load;?>(this.value, <?php echo $this->registros_por_pagina;?>)'><?php
							for($i = 1; $i <= $cantidad_paginas; $i++)
							{?>
							   <option value='<?php echo $i;?>' <?php
									if($this->pagina_actual == $i) {
										echo 'selected';
									}?>
							   ><?php
									echo $i;
								?></option><?php
							}?>
						</select>
					</td>
					<td><?php
						if($this->pagina_actual < $cantidad_paginas) {?>
                        	<a class='posterior'
                            	onclick="<?php echo $this->fn_load;?>(<?php echo $this->pagina_actual +1;?>, <?php echo $this->registros_por_pagina;?>)"></a><?php
						}?>
					</td>
					<td><?php
						if($this->pagina_actual < $cantidad_paginas) {?>
							<a class='ultimo'
                            	onclick="<?php echo $this->fn_load;?>(<?php echo $cantidad_paginas;?>, <?php echo $this->registros_por_pagina;?>)"></a><?php
						}?>
					</td><?php
				}?>
          		</tr>
			</table><?php
	}

   	public function cantidadPaginas() {

		if($this->cantidad_paginas == 0)
			$this->cantidad_paginas++;
		return "Página ".$this->pagina_actual." de ".$this->cantidad_paginas."";

   }
}
?>