<?php
/*
 * Created on 13.6.2010
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 require_once('config.php');
 
 class car_insurance {  
	var $calc_array;
	var $coefs;
	var $sazby_return;

	function car_insurance($data) {
		global $db;
		$this->db = $db;
		if($data) {
			$this->data = $data;
			if($this->data['el_pohon']) { //elektromotor nema objem
				$this->data['objem'] = 0;
			}
		}
	}
	
	function set_particip($value) {
		$this->data['particip'] = $value;
	}
	
	function set_particip_hp($value) {
		$this->data['particip_hp'] = $value;
	}
	
	//realizuje vypocet POV
	function calculate_pov() {
		
		$this->comp_id = 15; //ID e-finance motor
	
	    
		$rhis->rate_id = $this->get_rate_for('Allianz');

		$this->sazby = $this->get_zakladni_sazba();
	    $this->segmentace = $this->get_segmentation();
	    $this->use_PSLPOV();
	    
		$datumPrvniRegistrace = explode(".", $this->data['datumPrvniRegistrace']);
		$this->car_age = $this->get_months_age($datumPrvniRegistrace);
		
		$this->get_coefs();
		
//		echo "<pre>";
//		var_export($this->sazby);
//		var_export($this->discounts);
//		echo "</pre>";	
	}
	
	
	function sazby2return() {
		
		foreach ($this->sazby as $k=>$v) {
			if($this->only_PSL) {
				$this->sazby[$k]['icompanies_id'] = 16;
			
			} else {
				$this->sazby[$k]['icompanies_id'] = $this->comp_id;
			}
			$this->sazby[$k]['icompanies_limits_id'] = $v['limit'];
			$this->sazby[$k]['spoluucast'] = $v['particip'];	
			$this->sazby[$k]['pripojisteni'] = $this->pripojisteni;
			
			$this->sazby[$k]['return_coef'] = $this->map_all_perc_koef_POV($v['return_coef']);
			$this->sazby[$k]['return_coef']['pr_tech_sleva_prirazka'] = $this->tech_sleva_prirazka;
			
		}
		if(count($this->sazby) == 1 && $this->data['remote_N1']) {
			
			$this->sazby = array_pop($this->sazby);
		}
	}
	
	
	

	
	//ziskani koeficientu slev
	function get_coefs() {
		$this->coefs = $temp = null;
		//sleva za historicke vozidlo
		$this->tech_sleva_prirazka = 100;
		if($this->data['historicke_vozidlo'] == 2) { //se zvlastni SPZ
			$temp['koef'] = (1 - ($this->segmentace['HV02'] / 100));
			$this->tech_sleva_prirazka -= $this->segmentace['HV02'];
			$temp['perc'] = $this->segmentace['HV02'];
			$temp['perc_key'] = 'pr_hist';
			$temp['text_vyp_pov'] = 'Sleva pro vozidla vyrobena do roku 1952 '.$this->segmentace['HV02'].'% ';
			$this->coefs[] = $temp;
		} elseif($this->data['historicke_vozidlo'] == 1) { // r.v. do roku 1952
			$temp['koef'] = (1 - ($this->segmentace['HV01'] / 100));
			$this->tech_sleva_prirazka -= $this->segmentace['HV01'];
			$temp['perc'] = $this->segmentace['HV01'];
			$temp['perc_key'] = 'pr_hist';
			$temp['text_vyp_pov'] = 'Sleva pro vozidla vyrobena do roku 1952 '.$this->segmentace['HV01'].'% ';
			$this->coefs[] = $temp;
		}
		
		
		//sleva za spoluucast	
		if($this->data['particip'] == 'S01') {
			$temp['koef'] = (1 - ($this->segmentace['S01'] / 100));
			$this->tech_sleva_prirazka -= $this->segmentace['S01'];
			$temp['particip'] = '5.000 K�';
			$temp['perc'] = $this->segmentace['S01'];
			$temp['perc_key'] = 'pr_spoluucast';
			$temp['text_vyp_pov'] = 'Sleva za spolu��ast ve v���i 5.000 K� '.$this->segmentace['S01'].'% ';
			$this->coefs[] = $temp;
		} elseif($this->data['particip'] == 'S02') {
			$temp['koef'] = (1 - ($this->segmentace['S02'] / 100));
			$this->tech_sleva_prirazka -= $this->segmentace['S02'];
			$temp['particip'] = '10.000 K�';
			$temp['perc'] = $this->segmentace['S02'];
			$temp['perc_key'] = 'pr_spoluucast';
			$temp['text_vyp_pov'] = 'Sleva za spolu��ast ve v���i 10.000 K� '.$this->segmentace['S02'].'% ';
			$this->coefs[] = $temp;
		}
		
		//prirazka za pouziti vozidla
		if($this->segmentace[$this->data['pouziti_vozidla']]) {
			$temp['koef'] = (1 + ($this->segmentace[$this->data['pouziti_vozidla']] / 100));
			$this->tech_sleva_prirazka += $this->segmentace[$this->data['pouziti_vozidla']];
			$temp['perc'] = $this->segmentace[$this->data['pouziti_vozidla']];
			$temp['perc_key'] = 'pr_riziko_provoz';
			$temp['text_vyp_pov'] = 'Prir�ka za pou�it� vozidla '.$this->segmentace[$this->data['pouziti_vozidla']].'% ';
			$this->coefs[] = $temp;
		}
	
	}
	//-------------------
	
	
	/*
	 * Plosni sleva na zakladni sazby
	 */
	function use_PSLPOV() {
		if($this->segmentace['PSLPOV_a'] && $this->segmentace['PSLPOV'] > 0) {
			foreach ($this->sazby as $k=>$v) {
				$this->sazby[$k]['pojistne'] = $v['sazba'] * (1 - ($this->segmentace['PSLPOV'] / 100));			
				$this->sazby[$k]['text_vyp_pov'].= '<br />Plo�n� sleva '.$this->segmentace['PSLPOV'].'%: ';
				$this->sazby[$k]['text_vyp_pov'].= $v['sazba'].' * '.(1 - ($this->segmentace['PSLPOV'] / 100)).' = '.$this->sazby[$k]['pojistne'];
			}
		}
	}
	
	//pouziti moznych slev
	function use_coefs($sazba_key) {
		
		foreach ($this->coefs as $k_coef=>$coef) {
			//foreach ($this->sazby as $k=>$v) {
				$v = $this->sazby[$sazba_key];
				$this->sazby[$sazba_key]['return_coef'][$coef['perc_key']] = $coef['perc'];
				
				$this->sazby[$sazba_key]['text_vyp_pov'].= '<br />'.$coef['text_vyp_pov'].': ';
				$this->sazby[$sazba_key]['text_vyp_pov'].= $v['pojistne'].' * '.$coef['koef'];			
				$this->sazby[$sazba_key]['pojistne'] = $v['pojistne'] * $coef['koef'];			
				$this->sazby[$sazba_key]['text_vyp_pov'].= ' = '.$this->sazby[$sazba_key]['pojistne'];
				if($coef['particip']) {
					$this->sazby[$sazba_key]['particip'] = $coef['particip'];
				}
			//}
		}
	}
	//-----------------
	
	//nastavi lhutni platby a podobne
	function prepare_sazby() {
		if(isset($this->sazby[0])) {
			foreach ($this->sazby as $k=>$v) {
				$this->sazby[$k]['pojistne'] = ceil($this->sazby[$k]['pojistne']);
				if($this->data['forma_platby'] == 'LP01' || !$this->data['forma_platby']) {
					$this->sazby[$k]['lhutni_pojistne'] = $v['pojistne']; //rocni
				} elseif($this->data['forma_platby'] == 'LP02') {
					$this->sazby[$k]['lhutni_pojistne'] = ceil(($v['pojistne'] / 2)); //pololetni
				} elseif($this->data['forma_platby'] == 'LP03') {
					$this->sazby[$k]['lhutni_pojistne'] = ceil(($v['pojistne'] / 4)); //ctvrtletni
				}
			}
		} else {
			$this->sazby['pojistne'] = ceil($this->sazby['pojistne']);
			
			if($this->data['forma_platby'] == 'LP01' || !$this->data['forma_platby']) {
				$this->sazby['lhutni_pojistne'] = $this->sazby['pojistne']; //rocni
			} elseif($this->data['forma_platby'] == 'LP02') {
				$this->sazby['lhutni_pojistne'] = ceil(($this->sazby['pojistne'] / 2)); //pololetni
			} elseif($this->data['forma_platby'] == 'LP03') {
				$this->sazby['lhutni_pojistne'] = ceil(($this->sazby['pojistne'] / 4)); //ctvrtletni
			}
		}
	}
	//------------------------
   
   /**
   * Vrati koeficient bezeskodniho prubehu
   *  < 1 pro bonus, >1 pro malus
   * 
   * @param array $rates pole segmentace
   * @param string $bp vybrany bezeskodni prubeh(B0,B1,.., M1)
   */
   public function getB_M($bp) {
  	$ret=1;
  	if(isset($this->segmentace[$bp])) {
    	if(preg_match("/^B/",$bp)) {
    		$bonus = $this->segmentace[$bp];
    		$ret=(1 - ($bonus/100));
    	} elseif(preg_match("/^M/",$bp)) {
    		$malus = $this->segmentace[$bp];
    		$ret=(1 + ($malus/100));
    	}
    }
    return $ret;
   }
   
   public function get_discount_B_M($bp) {
		$koef_b_m = $this->getB_M($bp);
		$temp = null;
		if($koef_b_m < 1) { //bonus
			$temp['koef'] = $koef_b_m;
			$temp['text_vyp_pov'] = 'Sleva za beze�kodn� pr�b�h '.$this->segmentace[$bp].'%: ';
		} elseif($koef_b_m > 1) { //bonus
			$temp['koef'] = $koef_b_m;
			$temp['text_vyp_pov'] = 'Prir�ka za �kodn� pr�b�h '.$this->segmentace[$bp].'%: ';
		}
		if($temp) {
			$temp['key'] = 'BM';	
			$temp['perc'] = $this->segmentace[$bp];
		}
		return $temp;
   }
   
   //vrati BM pre HAV Allianz - ktera ma jiny bonus pro HAV a jiny pro POV
   function get_discount_B_M_allianz_HAV($bp) {		
		if($bp == 'B0S') {
			return false;
		}
		$sql = "SELECT value FROM `".DB_D."`.allianzBonus 
				WHERE name = '".$bp."' LIMIT 1";
        $res = mysqli_query($this->db, $sql);
        $row = mysqli_fetch_array($res);
        $obchSlevy += $row['value'];
        
        if($row['value'] > 0) {
        	$temp['koef'] = (1 - ($row['value']/100));
			$temp['text_vyp'] = 'Sleva za beze�kodn� pr�b�h '.$row['value'].'%: ';
        } elseif($row['value'] < 0) { 
        	$row['value'] *= -1;
        	$temp['koef'] = (1 + ($row['value']/100));
			$temp['text_vyp'] = 'Prir�ka za �kodn� pr�b�h '.$row['value'].'%: ';
        }
        $temp['perc'] = $row['value'];
        $temp['key'] = 'BM';	
		return $temp;
	}
	//------------------
	
	function get_rate_for($comp) {	
		$method = 'get_rate_for_'.$comp;
		if(method_exists($this,$method)) {			
			return call_user_method($method,$this);
		}
	}
	
	//vrati cislo sazebniku na zaklade PSC pro Allianz
	function get_rate_for_Allianz() {
		//var_export($this->data);
		if($this->data['subjekt'] == 2) {
			$ret = 101; /* podnikatel alebo pravnicka osoba, na regione NEZALEZI */
		} else {
			if($this->is_praha($this->data['psc'])) {
				if( date('y-m-d') <= '2010-06-30' && strtotime($this->data['pocatek_date_sql']) < strtotime('2010-12-31')) {
		        	$this->prazske_jaro = 0.85;
		        }
				$ret = 102; //praha
			} else if(($this->data['psc'] >= 25000 && $this->data['psc'] <= 25499) || // okol� Prahy - Praha v�chod, Praha z�pad
	               ($this->data['psc'] >= 30100 && $this->data['psc'] <= 32699) || 
	               ($this->data['psc'] >= 33200 && $this->data['psc'] <= 33399) ||
	               ($this->data['psc'] >= 33441 && $this->data['psc'] <= 33699) || // -Plze� + Plze�-jih
	               ($this->data['psc'] >= 37000 && $this->data['psc'] <= 37599) || // -�esk� Bud�jovice
	               ($this->data['psc'] >= 40002 && $this->data['psc'] <= 40399) || // -�st� nad Labem
	               ($this->data['psc'] >= 46001 && $this->data['psc'] <= 46312) || // -Liberec
	               ($this->data['psc'] >= 50000 && $this->data['psc'] <= 50499) || // -Hradec Kr�lov�
	               ($this->data['psc'] >= 60200 && $this->data['psc'] <= 66434) || // -Brno 
	               ($this->data['psc'] >= 70000 && $this->data['psc'] <= 72599) || // -Ostrava
	               ($this->data['psc'] >= 77200 && $this->data['psc'] <= 78599)    // -Olomouc
	             )
		     {  // Mesta nad 90 tis. ob.
		        
		        $ret = 103;		        
		        if($this->data['psc'] >= 25000 && $this->data['psc'] <= 25499) {
		        	if( date('y-m-d') <= '2010-06-30' && strtotime($this->data['pocatek_date_sql']) < strtotime('2010-12-31')) {
			        	$this->prazske_jaro = 0.85;
			        }
		        }
		     } else {
		     	$ret = 104;
		     }		
		}
		return $ret;
	}
	// END = vrati cislo sazebniku na zaklade PSC pro Allianz
  
  
  function get_limit_id_by_val($value) {
		$value = explode("/",$value);
		
		$sql = "SELECT id FROM ".DB.".gt_icompanies_limits 
				WHERE icompanies_id = ".$this->comp_id." AND health = ".$value[0]."
					AND property = ".$value[1];
		$res = mysqli_query($this->db, $sql);
    	$row = mysqli_fetch_array($res);
    	return $row['id'];
  }
  

  // function get_vehicle_number()
  public function get_vehicle_number($valid_from = false,$valid_to=false) {
	$this->data['objem'] = preg_replace("/,/",".",$this->data['objem']);
    $this->data['hmotnost'] = preg_replace("/,/",".",$this->data['hmotnost']);
    $this->data['vykon'] = preg_replace("/,/",".",$this->data['vykon']);
    
    if($this->data['ostatni'] != 1) { //pokud nepojistujeme ostatni
      if($this->data['hmotnost'] > 0) {
	      $hmotnost_query = "( weight_from   <= ".$this->data['hmotnost']." || ISNULL(weight_from)   ) && 
	                         ( weight_to     >= ".$this->data['hmotnost']." || ISNULL(weight_to)     ) &&";
      } else {
      	$hmotnost_query="";
      }
      
      /* ak je druh vozidla "Trikolky nebo ctyrkolky", je potrebne zistit, do ktorej
         hmotnostnej kategorie patri specifikovane vozidlo
       */      
      if($this->data['druhVozidla'] == "1100" && $this->data['hmotnost'] > 400)
      { /* hmotnost je vacsia ako 400 kg (kategoria nad 400 kg) */
        $druhVozidla = 1150;
      }  
      elseif($this->data['druhVozidla'] == "1100" && $this->data['hmotnost'] <= 400)
      { /* hmotnost neprasahuje 400 kg (kategoria do 400 kg vcetne) */
        $druhVozidla = 1100;
      }  
      elseif($this->data['druhVozidla'] == "1200" || $this->data['druhVozidla'] == "1000")
      {
        $hmotnost_query = "";
        $druhVozidla = $this->data['druhVozidla'];
      }      
      else
      { /* nie je potrebne menit @number druhu vozidla */
        $druhVozidla = $this->data['druhVozidla'];
      }     
      
      if($this->data['el_pohon'] == 1)
      {
        $plus_query = " && ci_rate_subcategories.electro = 1";
      } 
      else
      {
        $plus_query = "";
      } 
      
      $objem = $this->data['objem'];
      
      
      $wh_valid=" (ci_ratesval.valid_from <= '".$valid_from."' AND ci_ratesval.valid_to >= '".$valid_to."') ";
	
      $query = "SELECT ci_rate_subcategories.category, ci_rate_subcategories.number, 
                       ci_rate_subcategories.name as subcategory_name, 
                       ci_rate_categories.name as category_name
                FROM `".DB."`.`ci_rate_categories`, `".DB."`.`ci_rate_subcategories`, `".DB."`.`ci_ratesval`
                WHERE (  
                        ".(($plus_query == "") ? "
                        ( 
                          ( cubature_from <= ".$objem."    || ISNULL(cubature_from) ) && 
                          ( cubature_to   >= ".$objem."    || ISNULL(cubature_to)   ) &&
                          ".$hmotnost_query."
                          ( category       = ".$druhVozidla.")
                        ) && " : "( cubature_from = -1 && cubature_to = -1 ".$plus_query." ) && ")."
                        (
                          ( ci_rate_subcategories.number = ci_ratesval.item_id && 
                            ci_ratesval.icompanies_id = ".$this->comp_id."         &&
                            ci_ratesval.aval     = 1 &&
                            ".$wh_valid."
                          )
                        ) &&                              
                        (
                          ( ci_rate_categories.number = ".$druhVozidla." ) 
                        )
                      )
				GROUP BY ci_rate_subcategories.number";
     
    }
    else
    { /* tato podmienka riesi vyber "Ostatni" */
      /* @number druhov, ktorych @number sa dalej NECLENI v tabulke `ci_rate_subcategories` */
      $categories    = Array ( 1300, 1400, 1500, 1800, 1900, 2000, 2100, 2200, 2300 );
      /* @number druhov, ktorych @number sa dalej CLENI v tabulke `ci_rate_subcategories`   */
      $subcategories = Array ( 1000, 1710, 1720, 2210, 2400);
     
      $druh_vozu=$this->data['druhVozidla'];
      $druh_cleneni=$this->data['druh_cleneni'];
     
      if(in_array($druh_vozu, $categories))
      {
        $query = "SELECT number, name as category_name
                   FROM `".DB."`.`ci_rate_categories`
                   WHERE ( number = ".$druh_vozu." )";
      }
      elseif(in_array($druh_vozu, $subcategories))
      {
        $objem_sql=$hmotnost_sql=$cleneni_sql="";
        if($this->data['objem']) {
          $objem_sql=" ( cubature_from <= ".$this->data['objem']."    || ISNULL(cubature_from) ) && 
                       ( cubature_to   >= ".$this->data['objem']."    || ISNULL(cubature_to)   ) && ";
        }
        
        if($this->data['hmotnost']) {
          $hmotnost_sql="  ( weight_from   <= ".$this->data['hmotnost']." || ISNULL(weight_from)   ) && 
                           ( weight_to     >= ".$this->data['hmotnost']." || ISNULL(weight_to)     ) && ";
        }
        
        if($druh_cleneni) {
          $cleneni_sql = " AND ci_rate_subcategories.number='".$druh_cleneni."' ";
        }
        
       
        $query = "SELECT ci_rate_subcategories.category, ci_rate_subcategories.number, 
                         ci_rate_subcategories.name as subcategory_name, 
                         ci_rate_categories.name as category_name
                  FROM `".DB."`.`ci_rate_categories`, `".DB."`.`ci_rate_subcategories`, `".DB."`.`ci_ratesval` 
                  WHERE ( ( 
                           ".$objem_sql."
                           ".$hmotnost_sql."
                           ( category       = ".$druh_vozu."  )
                           ".$cleneni_sql."
                          ) &&
                        (
                          ( ci_rate_subcategories.number = ci_ratesval.item_id && 
                            ci_ratesval.icompanies_id = ".$this->comp_id."         &&
                            ci_ratesval.aval     = 1 
                          )
                        ) && 
                          (
                           ( ci_rate_categories.number = ".$druh_vozu." ) 
                          )
                        )
				GROUP BY ci_rate_subcategories.number";
      }
      
      
    }                   
   
    $exec   = mysqli_query($this->db, $query);
    $result = mysqli_fetch_array($exec);

    return $result;  
  }
  
  
  /*
   * Vrati segmentaci
   */
  public function get_segmentation() {
 
  	$pocatekPoj_sql=$this->check_is_valid_segmentation($this->data['pocatek_date_sql']);
  	
  	$wh_valid="(ci_segmentation.valid_from <= '".$pocatekPoj_sql."' AND ci_segmentation.valid_to >= '".$pocatekPoj_sql."')";
  
  	$sql = "SELECT `data` FROM `".DB."`.`ci_segmentation` 
                WHERE (`icompanies_id` = ".$this->comp_id." &&  ".$wh_valid.")";
    $res = mysqli_query($this->db, $sql);
    
    $row = mysqli_fetch_array($res);
    // obsahuje kompletnu segmentaciu podla kodov v manager.e-finance.eu //
    return unserialize($row['data']); 
  }
  //--------------------
  
  
  /**
   * kontroluje jestli existuje segmentace pre dane obdobi pocatku smlouvy
   * pokud jeste neni naplnen, nebo se nemenil, zmeni $pocatekPoj_sql
   * na posledni den validity danej pojistnej segemntace, 
   * zmeneni hodnoty nema vplyv na hodnotu pocatku pojisteni,
   * 
   * @param date $pocatekPoj_sql datum puvodniho pocatku pojisteni
   */
  public function check_is_valid_segmentation($pocatekPoj_sql) {

  	$sql = "SELECT `data` FROM `".DB."`.`ci_segmentation` 
                WHERE (`icompanies_id` = ".$this->comp_id." 
                         AND ( ci_segmentation.valid_from <= '".$pocatekPoj_sql."' AND ci_segmentation.valid_to >= '".$pocatekPoj_sql."' )
						)
                 LIMIT 1";
                
    $res = mysqli_query($this->db, $sql);
    $rows = mysqli_num_rows($res);
    
    //pokial nic nenasiel, tak ziskame posledny zadany sadzobnik pojistovni
    if($rows>0) {
    	return $pocatekPoj_sql;
    } else {
    	$sql="SELECT ci_segmentation.valid_to
		    FROM `wpdb_pojisteni_com`.`ci_segmentation`
			WHERE ( ci_segmentation.icompanies_id = ".$this->comp_id." ) 
        	ORDER BY ci_segmentation.valid_to DESC	
            LIMIT 1";
        $res = mysqli_query($this->db, $sql);
        $row = mysqli_fetch_array($res);
        return $row['valid_to'];
    }
    
  }
  //----------------------------------------
  
	
  /*
   * Vrati zakladni sazbu pro pojistovne
   */
  public function get_zakladni_sazba() {
	$pocatekPoj_sql = $this->check_is_valid_rate($this->data['pocatek_date_sql']);
	
	$this->vehicle_values = $this->get_vehicle_number($pocatekPoj_sql,$pocatekPoj_sql);
	
	$wh_valid="(ci_ratesval.valid_from <= '".$pocatekPoj_sql."' AND ci_ratesval.valid_to >= '".$pocatekPoj_sql."') && ";
	 
	if($this->rate_id != '') {
		$add_reg = "&& ( ci_ratesval.rate_id = ".$this->rate_id." )";
	} else {
		$add_reg = "";
	}
	
	$add_limit = '';
	if($this->limit_id) {
		$add_limit = " AND ci_ratesval.limit_id = ".$this->limit_id;
	}
	
	$sql = "SELECT gt_icompanies_limits.id as icompanies_limits_id, gt_icompanies_limits.name as insurance_limit,
	                   gt_icompanies_limits.health, gt_icompanies_limits.property,
	                   ci_ratesval.value 
	            FROM `".DB."`.`gt_icompanies_limits`, `".DB."`.`ci_ratesval`
	            WHERE (
	                   ( ci_ratesval.item_id = " . $this->vehicle_values['number'] . " ) &&
	                   ( ci_ratesval.icompanies_id = ".$this->comp_id." ) &&
	                   ".$wh_valid." 
	                   ( gt_icompanies_limits.id = ci_ratesval.limit_id )
	                   ".$add_reg." ".$add_limit."
	                  ) " .
	                  		" GROUP BY icompanies_limits_id
	            ORDER BY gt_icompanies_limits.place ASC";
	
	
	$res = mysqli_query($this->db, $sql);

    $zakladni_sazba = Array();	   
    while($sazba_r = mysqli_fetch_array($res))
    {
      if($sazba_r['value'] != 0)
  	  {
    	$zakladni_sazba[] = Array( "limit" => $sazba_r['icompanies_limits_id'], "sazba" => $sazba_r['value'], "pojistne" => $sazba_r['value'] );     	
      }  
    }  
	    
    return  $zakladni_sazba;
  }
  //--------------------------------------------
  
  
  /**
   * kontroluje jestli existuje sadzobnik pre dane obdobi pocatku smlouvy
   * pokud jeste neni naplnen, nebo se nemenil, zmeni $pocatekPoj_sql
   * na posledni den validity daneho pojistneho sazebniku, 
   * 
   * @param date $pocatekPoj datum puvodniho pocatku pojisteni
   */
  public function check_is_valid_rate($pocatekPoj,$ret_valid_from = false) {
  	$sql="SELECT ci_ratesval.value,ci_ratesval.valid_to,ci_ratesval.valid_from
		  FROM `".DB."`.`ci_ratesval`
			WHERE (
            ( ci_ratesval.icompanies_id = ".$this->comp_id." ) 
            AND ( ci_ratesval.valid_from <= '".$pocatekPoj."' AND ci_ratesval.valid_to >= '".$pocatekPoj."' )
			)
          LIMIT 1";
    
    $res = mysqli_query($this->db, $sql);
    $rows = mysqli_num_rows($res);
  
    //pokial nic nenasiel, tak ziskame posledny zadany sadzobnik pojistovni
    if($rows>0) {
     	$row = mysqli_fetch_array($res);
     	if($ret_valid_from) return $row['valid_from'];
     	else return $row['valid_to'];
    } else {
    	$sql="SELECT ci_ratesval.valid_to
		    FROM `".DB."`.`ci_ratesval`
			WHERE ( ci_ratesval.icompanies_id = ".$this->comp_id." ) 
        	ORDER BY ci_ratesval.valid_to DESC	
            LIMIT 1";
        $res = mysqli_query($this->db, $sql);
        $row = mysqli_fetch_array($res);
        if($ret_valid_from) return $row['valid_from'];
     	else return $row['valid_to'];
    } 	
  }
  //----
  
  
  function get_DP() {
  	
  }
  
    public function is_praha($psc) {
	  	return ($psc >= 10000 && $psc <= 19999);
	}
	
	
	public function get_months_age($datum) {
		if(!is_array($datum)) {
			if(preg_match("/-/",$datum)) {
				$datum = explode("-",$datum);
			} elseif(preg_match("/./",$datum)) {
				$datum = explode(".",$datum);
			}
		}
		
		$carAge = date("Y") - $datum[2];
	    $months = 0;
	 
	    if(date("n") < $datum[1]) {
	      $carAge--;  
	      $months += (12 - ($datum[1] - date("n")));	     
	    } else if(date("n") == $datum[1]) {
	      if(date("j") < $datum[0]) {
	        $months--;            
	      } elseif(date("j") >= $datum[0]) {
	        $months++;            
	      }
	    } else {
	      $months += (date("n") - $datum[1]);
	       if(date("j") > $datum[0]) {
	        $months++;            
	      }
	    }
	    $months += ($carAge * 12);
	    return $months;
	}
	
	function get_age_from_date($date) {
		if(!$date) return false;
		if(!preg_match("/-/",$date) && preg_match("/./",$date)) {
			$date = date("Y-m-d",strtotime($date));
		}
		list($year,$month,$day) = explode("-",$date);
	    $year_diff  = date("Y") - $year;
	    $month_diff = date("m") - $month;
	    $day_diff   = date("d") - $day;
	    if ($day_diff < 0 || $month_diff < 0) {
	      $year_diff--;
	    }
	    return $year_diff;
	}
	
	
	function GetNextDays($datecalc,$duedays) {
		$i = 1;

	    while ($i <= $duedays) {
	        $datecalc += 86400; // Add a day.
	     
	        $date_info  = getdate( $datecalc );
	        if (($date_info["wday"] == 0) or ($date_info["wday"] == 6) )  {
	            $datecalc += 86400; // Add a day.
	            continue;
	        }
	        $i++;
	    }
	    return $datecalc ;
	}
  
 }
?>