<?php

/**
 * Remove acentos
 * 
 * @param string $texto
 * @return string
 */
function remove_acento($texto) {
    $search = array('ç', 'á', 'é', 'í', 'ó', 'ú', 'ã', 'õ', 'â', 'ê', 'î', 'ô', 'û', 'ö', 'ü', 'à', 'è', 'ì', 'ò', 'ù',
        'Ç', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ã', 'Õ', 'Â', 'Ê', 'Î', 'Ô', 'Û', 'Ö', 'Ü', 'À', 'È', 'Ì', 'Ò', 'Ù');

    $replace = array('c', 'a', 'e', 'i', 'o', 'u', 'a', 'o', 'a', 'e', 'i', 'o', 'u', 'o', 'u', 'a', 'e', 'i', 'o', 'u',
        'C', 'A', 'E', 'I', 'O', 'U', 'A', 'O', 'A', 'E', 'I', 'O', 'U', 'O', 'U', 'A', 'E', 'I', 'O', 'U');
    $novoTexto = str_replace($search, $replace, $texto);
    return $novoTexto;
}

/**
 * Valida email
 * 
 * @param string $email
 * @return boolean
 */
function valida_email($email) {
    return (eregi("^[0-9a-z]([\._-]?[0-9a-z]+)*@(([0-9a-z]([\._-]?[0-9a-z]+)*\.[a-z]{2,4})|([0-9]{1,3}(\.[0-9]{1,3}){3}))$", $email)) ? true : false;
}

/**
 * Valida data
 * 
 * Formato da data dd/mm/yyyy
 * 
 * @param string $data
 * @return boolean
 */
function valida_data($data) {
    if (strlen($data) != 10) {
        return false;
    } else {
        $dia = substr($data, 0, 2);
        $mes = substr($data, 3, 2);
        $ano = substr($data, 6);
        //echo $dia.'/'.$mes.'/'.$ano;
        if (($ano <= 0) || ($mes > 12 || $mes == 0) || ($dia > 31 || $dia == 0)) {
            return false;
        } elseif ((($ano % 4) == 0) && ($mes == 2) && ($dia > 29)) {
            return false;
        } elseif ((($ano % 4) > 0) && ($mes == 2) && ($dia > 28)) {
            return false;
        } elseif ((($mes == 4) || ($mes == 6) || ($mes == 9) || ($mes == 11) ) && ($dia == 31)) {
            return false;
        }
        return true;
    }
}

/**
 * Valida hora
 * 
 * Formato da hora hh:mm:ss
 * 
 * @param string $hora
 * @return boolean
 */
function valida_hora($hora) {
    if (strlen($hora) != 8) {
        return false;
    } else {
        $h = substr($hora, 0, 2);
        $m = substr($hora, 3, 2);
        $s = substr($hora, 6);
        //echo $h.':'.$m.':'.$s;
        if ($h < 24) {
            if ($m < 60) {
                if ($s < 60) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }
        return true;
    }
}

/**
 * Converte timestamp para data formato mysql
 * 
 * @param string $timestamp
 * @return string
 */
function timestamp_to_mysql($timestamp) {
    return date("Y-m-d", $timestamp);
}

/**
 * Converte timestamp para data formato dd/mm/yyyy
 * 
 * @param string $timestamp
 * @return string
 */
function timestamp_to_data($timestamp) {
    return date("d/m/Y", $timestamp);
}

/**
 * Converte data mysql para data dd/mm/yyyy
 * 
 * @param string $data_mysql
 * @return string
 */
function mysql_to_data($data_mysql, $hora = false, $segundos = true) {
    if ($hora) {
        if ($segundos) {
            return date("d/m/Y H:i:s", strtotime($data_mysql));
        } else {
            return date("d/m/Y H:i", strtotime($data_mysql));
        }
    } else {
        return date("d/m/Y", strtotime($data_mysql));
    }
}

/**
 * Converte data dd/mm/yyyy para data mysql
 * 
 * @param string $data
 * @return string
 */
function data_to_mysql($data) {
    $dia = substr($data, 0, 2);
    $mes = substr($data, 3, 2);
    $ano = substr($data, 6);
    return $ano . "-" . $mes . "-" . $dia;
}

/**
 * Valida CPF
 * 
 * @param string $cpf
 * @return boolean
 */
function valida_cpf($cpf) {
    if (!is_numeric($cpf))
        return false;
    else {
        if (($cpf == '11111111111') || ($cpf == '22222222222') ||
                ($cpf == '33333333333') || ($cpf == '44444444444') ||
                ($cpf == '55555555555') || ($cpf == '66666666666') ||
                ($cpf == '77777777777') || ($cpf == '88888888888') ||
                ($cpf == '99999999999') || ($cpf == '00000000000')) {
            return false;
        } else {
            $dv_informado = substr($cpf, 9, 2);
            for ($i = 0; $i <= 8; $i++) {
                $digito[$i] = substr($cpf, $i, 1);
            }
            $posicao = 10;
            $soma = 0;
            for ($i = 0; $i <= 8; $i++) {
                $soma = $soma + $digito[$i] * $posicao;
                $posicao = $posicao - 1;
            }
            $digito[9] = $soma % 11;
            if ($digito[9] < 2)
                $digito[9] = 0;
            else
                $digito[9] = 11 - $digito[9];
            $posicao = 11;
            $soma = 0;
            for ($i = 0; $i <= 9; $i++) {
                $soma = $soma + $digito[$i] * $posicao;
                $posicao = $posicao - 1;
            }
            $digito[10] = $soma % 11;
            if ($digito[10] < 2)
                $digito[10] = 0;
            else
                $digito[10] = 11 - $digito[10];
            $dv = $digito[9] * 10 + $digito[10];
            if ($dv != $dv_informado)
                return false;
        }
    }
    return true;
}

/**
 * Valida CNPJ
 * 
 * @param string $cnpj
 * @return boolean
 */
function valida_cnpj($cnpj) {
    $RecebeCNPJ = $cnpj;
    $s = "";
    for ($x = 1; $x <= strlen($RecebeCNPJ); $x = $x + 1) {
        $ch = substr($RecebeCNPJ, $x - 1, 1);
        if (ord($ch) >= 48 && ord($ch) <= 57)
            $s = $s . $ch;
    }
    $RecebeCNPJ = $s;
    if (strlen($RecebeCNPJ) != 14)
        return false;
    else {
        if ($RecebeCNPJ == "00000000000000")
            return false;
        else {
            $Numero[1] = intval(substr($RecebeCNPJ, 1 - 1, 1));
            $Numero[2] = intval(substr($RecebeCNPJ, 2 - 1, 1));
            $Numero[3] = intval(substr($RecebeCNPJ, 3 - 1, 1));
            $Numero[4] = intval(substr($RecebeCNPJ, 4 - 1, 1));
            $Numero[5] = intval(substr($RecebeCNPJ, 5 - 1, 1));
            $Numero[6] = intval(substr($RecebeCNPJ, 6 - 1, 1));
            $Numero[7] = intval(substr($RecebeCNPJ, 7 - 1, 1));
            $Numero[8] = intval(substr($RecebeCNPJ, 8 - 1, 1));
            $Numero[9] = intval(substr($RecebeCNPJ, 9 - 1, 1));
            $Numero[10] = intval(substr($RecebeCNPJ, 10 - 1, 1));
            $Numero[11] = intval(substr($RecebeCNPJ, 11 - 1, 1));
            $Numero[12] = intval(substr($RecebeCNPJ, 12 - 1, 1));
            $Numero[13] = intval(substr($RecebeCNPJ, 13 - 1, 1));
            $Numero[14] = intval(substr($RecebeCNPJ, 14 - 1, 1));
            $soma = $Numero[1] * 5 + $Numero[2] * 4 + $Numero[3] * 3 + $Numero[4] * 2 + $Numero[5] * 9 + $Numero[6] * 8 + $Numero[7] * 7 + $Numero[8] * 6 + $Numero[9] * 5 + $Numero[10] * 4 + $Numero[11] * 3 + $Numero[12] * 2;
            $soma = $soma - (11 * (intval($soma / 11)));
            if ($soma == 0 || $soma == 1)
                $resultado1 = 0;
            else
                $resultado1 = 11 - $soma;
            if ($resultado1 == $Numero[13]) {
                $soma = $Numero[1] * 6 + $Numero[2] * 5 + $Numero[3] * 4 + $Numero[4] * 3 + $Numero[5] * 2 + $Numero[6] * 9 + $Numero[7] * 8 + $Numero[8] * 7 + $Numero[9] * 6 + $Numero[10] * 5 + $Numero[11] * 4 + $Numero[12] * 3 + $Numero[13] * 2;
                $soma = $soma - (11 * (intval($soma / 11)));
                if ($soma == 0 || $soma == 1)
                    $resultado2 = 0;
                else
                    $resultado2 = 11 - $soma;
                if ($resultado2 != $Numero[14])
                    return false;
            } else
                return false;
        }
    }
    return true;
}

/**
 * Retorna data por extenso
 * 
 * Formato da data dd/mm/yyyy
 * 
 * @param string $data
 * @return string
 */
function data_extenso($data) {
    $array_mes["01"] = "janeiro";
    $array_mes["02"] = "fevereiro";
    $array_mes["03"] = "mar�o";
    $array_mes["04"] = "abril";
    $array_mes["05"] = "maio";
    $array_mes["06"] = "junho";
    $array_mes["07"] = "julho";
    $array_mes["08"] = "agosto";
    $array_mes["09"] = "setembro";
    $array_mes["10"] = "outubro";
    $array_mes["11"] = "novembro";
    $array_mes["12"] = "dezembro";
    $dia = substr($data, 0, 2);
    $mes = substr($data, 3, 2);
    $ano = substr($data, 6);
    return $dia . " de " . $array_mes[$mes] . " de " . $ano;
}

/**
 * Retorna mes por extenso
 * 
 * @param int $mes
 * @return string
 */
function mes_extenso($mes) {
    $array_mes[1] = "janeiro";
    $array_mes[2] = "fevereiro";
    $array_mes[3] = "março";
    $array_mes[4] = "abril";
    $array_mes[5] = "maio";
    $array_mes[6] = "junho";
    $array_mes[7] = "julho";
    $array_mes[8] = "agosto";
    $array_mes[9] = "setembro";
    $array_mes[10] = "outubro";
    $array_mes[11] = "novembro";
    $array_mes[12] = "dezembro";
    return $array_mes[$mes];
}

/**
 * Retorna dia da semana por extenso
 * 
 * @param int $diaSemana
 * @return string
 */
function diasemana_extenso($diaSemana) {
    $array[0] = "domingo";
    $array[1] = "segunda";
    $array[2] = "ter�a";
    $array[3] = "quarta";
    $array[4] = "quinta";
    $array[5] = "sexta";
    $array[6] = "s�bado";
    return $array[$diaSemana];
}

/**
 * Executa consulta SQL, tratando erro
 * 
 * @param string $sql
 * @return resource
 */
function executaSql($sql) {
    global $db;
    $rs = $db->query($sql);
    if ($rs->isError()) {
        exit("Erro ao executar query<br />" . $rs->getMessage());
    } else {
        return $rs;
    }
}

/**
 * Exibe array formatado com tag <pre>
 *
 * @param array $array
 * @return void
 */
function echoArray($array) {
    echo "<pre>";
    print_r($array);
    echo "</pre>";
}

/*
 * Douglas Brito de Medeiros
 *
 * http://forum.imasters.uol.com.br/index.php?showtopic=167497
 *
 * Criptografia de variaveis de URL
 * 21 Fevereiro 2006
 */

function urlCodifica($string) {
    return $limpa = urlencode(base64_encode(gzcompress($string)));
}

function urlDecodifica($string) {
    $descomprime = @gzuncompress(base64_decode($string));
    if (!$descomprime) {
        exit("A URL informada � inv�lida!");
    }
    $html = htmlentities($descomprime);
    $url = parse_url($html);
    //echo $url['query'];
    $parametros = explode("&amp;", $url['query']);
    //echoArray($parametros);
    for ($i = 0; $i < count($parametros); $i++) {
        $valor = explode("=", trim(urldecode(strip_tags($parametros[$i]))));
        $_GET[$valor[0]] = $valor[1];
    }
}

/**
 * trata campo texto antes de inserir no banco
 * 
 * @param string $txt
 * @return string
 */
function trataCampoTexto($txt) {
    $novoTxt = str_replace("'", "", $txt);
    $novoTxt = str_replace(";", "", $novoTxt);
    $novoTxt = str_replace("#", "", $novoTxt);
    $novoTxt = str_replace("/", "", $novoTxt);
    return $novoTxt;
}

/**
 * trata campo valor para salvar no banco
 * 
 * @param string $valor
 * @return string
 */
function trataCampoValor($valor) {
    $novoValor = str_replace(".", "", $valor);
    $novoValor = str_replace(",", ".", $novoValor);
    return $novoValor;
}

/**
 * trata string contra sql injection
 * 
 * @param string $txt
 * @return void
 */
function antiInjection(&$txt) {
    $txt = str_replace("'", "", $txt);
    $txt = str_replace(";", "", $txt);
    $txt = str_replace("#", "", $txt);
    $txt = str_replace("*", "", $txt);
    $txt = str_replace("%", "", $txt);
    $txt = str_replace("/", "", $txt);
    $txt = str_replace("SELECT", "", $txt);
    $txt = str_replace("INSERT", "", $txt);
    $txt = str_replace("UPDATE", "", $txt);
    $txt = str_replace("DELETE", "", $txt);
    $txt = str_replace("DROP", "", $txt);
}

/**
 * Retorna valor monetario formatado
 * 
 * @param float $valor
 * @return float
 */
function formata_valor($valor, $ignorarErro = false) {
    if ($ignorarErro) {
        if (!is_numeric($valor))
            return '';
    }
    $correto = number_format($valor, 2, ',', '.');
    return $correto;
}

/**
 * Redimensiona o tamanho da imagem e retorna as novas dimensoes
 * 
 * @param string $imagem
 * @param string $lmax
 * @param string $hmax
 * @param string $lmin
 * @param string $hmin
 * @return string
 */
function redimensiona_imagem($imagem, $lmax, $hmax, $lmin = 0, $hmin = 0) {
    $size = GetImageSize($imagem);
    if ($size[0] > $size[1]) {
        if ($size[0] > $lmax) {
            $l = $lmax;
            $h = (($l * $size[1]) / $size[0]);
        } elseif ($size[0] < $lmin) {
            $l = $lmin;
            $h = (($l * $size[1]) / $size[0]);
        } else {
            $l = $size[0];
            $h = $size[1];
        }
    } else {
        if ($size[1] > $hmax) {
            $h = $hmax;
            $l = (($h * $size[0]) / $size[1]);
        } elseif ($size[1] < $hmin) {
            $h = $hmin;
            $l = (($h * $size[0]) / $size[1]);
        } else {
            $l = $size[0];
            $h = $size[1];
        }
    }
    $retorno = "width=" . (int) $l . " height=" . (int) $h;
    return $retorno;
}

/**
 * Converte peso de gramas para quilos - utilizado no calculo do frete
 * 
 * @param float $grama
 * @return float
 */
function grama_to_quilo($grama) {
    $novoValor = round($grama / 1000, 2);
    return $novoValor;
}

/**
 * Verifica se existe post e se tem valor
 */
function isPost($post) {
    if (isset($post) && !empty($post)) {
        return true;
    }
    return false;
}

?>