<?php

class utilString{
	
	 /* inicio funciones para convertir un numero en letras*/
     private   $Unidad;
	 private   $Diez;
	 private   $Decena;
	 private   $Centena;
	 private   $Millar;
	/**
	* Function para descomponer el Numero en decena, centena y unidad,
	* para obtener el resultado en letras
	* @param int $Num
	* @return 
	*/		
    function Nombrar_Centena($Num){
        $resultado='';
		//Num es una centena de la forma abc
		//descomponemos num en: a, b y c
		$resultado = '';
		$c = $Num%10;
		$b = ($Num%100 - $c)/10;
		$a = ($Num-10*$b - $c)/100;
		if( $a > 0 ){
		    //si el Num = 100
			if( $b == 0 && $c == 0 && $a == 0)	{
			    $resultado .= $this->Centena[0];
			//si 100<Num<200
			}else {
			    $resultado .= $this->Centena[$a]." " ;		
			}
		}
		if ($b > 0){
		    if ($b == 1){
			    //si 10<Num<20
				$resultado .= $this->Diez[$c]." ";	
			}else{
				$resultado .= $this->Decena[$b]." ";
			}			//si 1<b<10
		}
		if ($c > 0){														
			//imprime las Unidades
			if ($b > 1) {
				$resultado .= " Y ";
			}
			if ($b != 1) {
				$resultado .= $this->Unidad[$c]." ";
			}
		}
		return $resultado;
    } 
	/**
	* Function Obtener el total en letras, hasta las decenas
	* @param int $Num
	* @return 
	*/		
    function Nombrar_Numero($Num){	
	    $this->Unidad  = array( 0 => "CERO", 1 => "UNO", 2 => "DOS",3 => "TRES",4 => "CUATRO",5 => "CINCO",6 =>"SEIS",7 => 			                 "SIETE", 8=> "OCHO",9 => "NUEVE");
	    $this->Diez    = array( 0 => "DIEZ", 1 => "ONCE", 2 => "DOCE", 3 => "TRECE", 4 => "CATORCE", 5 => "QUINCE",6 => 							 "DIECISEIS", 7 => "DIECISIETE", 8 => "DIECIOCHO", 9 => "DIECINUEVE");
	    $this->Decena  = array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", 					     "NOVENTA");
        $this->Centena = array( "CIEN", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS","QUINIENTOS", "SEISCIENTOS", 		     			 "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS" );
	    $this->Millar  = "MIL";
		$resultado = null;
		$resultado = '';
		//Num es un numero menor que 100000
		if ($Num == 0) {
			$resultado = $this->Unidad[0]; //si Num=0
		}
		if ($Num < 100000){
			$Num_mil = ($Num - $Num%1000)/1000;
			if ($Num_mil > 1) {
				$resultado.=$this->Nombrar_Centena($Num_mil);
			}
			if ($Num >= 1000) $resultado .= $this->Millar." ";
			    $resultado.=$this->Nombrar_Centena($Num%1000);
		}else{
			$parte1 = $Num/100000;
			$parte2 = $Num%100000;
			$resultado .= $this->Centena[$parte1]." ";
			$Num_mil = ($parte2 - $parte2%1000)/1000;
			if ($Num_mil > 1){
				$resultado.=$this->Nombrar_Centena($Num_mil);
			}
		    if ($parte2 >= 1000){
		    	$resultado .= $this->Millar." ";		    
				$resultado.=$this->Nombrar_Centena($parte2%1000);
		    }
		}
		return $resultado;
   }
	/**
	* Function obtener el total en letras, ingresa
	* el numero a cambiar 
	* @param String $numero
	* @return 
	*/		
	function number($numero){
		   
		   $Millar=null; 
		   $Decena=null; 
		   $Diez=null; 
		   $Unidad=null;
		   $Centena=null;
	       $cadena = '';
	       $array  = explode(".", $numero);
	       $cents  = $array[1];
	       $entero = abs($array[0]);
	       $cadena = "SON : ";
	       $entero    = str_replace(",", "", $entero);
	       $entero    = (int)$entero;
	       $cadena .= $this->Nombrar_Numero($entero);
	       $cadena .= " Y ";
	       $cadena .= $cents."/100";
	             return $cadena;
	}
	/* fin funciones para convertir un numero en letras*/
	
	
}
?>