/*############################################################################*/
/*##########--- FUNÇÕES DE CONTROLE UTEIS DO SISTEMA ---######################*/
/*############################################################################*/

function addEvento(obj, evento, funcao)
{
	try
	{
		obj.addEventListener(evento, funcao, true);
	}
	catch(ex)
	{
		obj.attachEvent("on"+evento, funcao);
	}
}





/*############################################################################*/
/*############--- FUNÇÕES GERAIS DO SISTEMA ---###############################*/
/*############################################################################*/
function deleteLines(tabela, de, ate)
{
    for(; ate>=de; ate--){
        try {
            tabela.deleteRow(ate);
        }
        catch(e){}
    }
}

/*############################################################################*/
/*### --- FUNÇÕES DE VALIDAÇÃO UTEIS PARA O DESENVOLVIMENTO DO SISTEMA --- ###*/
/*############################################################################*/

function validaHora(Hora) 
{
	var regex = /^[0-9]{2}(:[0-5][0-9]){2}$/;
	return regex.test(Hora);
}




function validaData(data) {
	var dia = ""
	var mes = ""
	var ano = ""
	var val = 0				
	if (data.length != 10) {
		return false
	}
	for(i=0;i<10;i++) {			
		if (i==0 || i==1 || i==3 || i==4 || i==6 || i==7 || i==8 || i==9) {
			val = data.charAt(i)				
			if (val=="0" || val=="1" || val=="2" || val=="3" || val=="4" || val=="5" || val=="6" || val=="7" || val=="8" || val=="9") {
				switch (i) {
					case 0: dia = val
							break
					case 1: dia = dia + val
							break		
					case 3: mes = val
							break
					case 4: mes = mes + val
							break				
					case 6: ano = val
							break
					case 7: ano = ano + val						
							break						
					case 8: ano = ano + val
							break
					case 9: ano = ano + val
							break												
				}
			}
			else {
				return false
			}
		}
		else {
			if (data.charAt(i) != "/") {
				return false
			}
		}
	}
	if (mes > 12 || mes == 0) {
		return false
	}
	if (ano == 0) {
		return false
	}
	data = new Date(ano,mes,0)
	if (dia > data.getDate() || dia == 0) {
		return false
	}
	return true
}


//retorna true se for número float
function validaFloat(Valor)
{
	var reFloatPt = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/
  	if (reFloatPt.test(Valor))
	{
    	return true
  	}
	return false
}

//retorna true se for número inteiro
function validaInt(Numero) {
	var reInt = /^[0-9]*$/ 
	if (reInt.test(Numero)) {
		return true
	}
	return false
}

function validaEmail(mailField){
	var re = new RegExp;
	re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var arr = re.exec(mailField);
	if (arr == null){
		return false
	}
	else{
		return true
	}
}

//limita a quantidade de caracteres de uma textarea
function max(txarea, vaMax) { 
    total = vaMax; 
    tam = txarea.value.length; 
    str=""; 
    str=str+tam;          
    if (tam > total) {          
       aux = txarea.value; 
       txarea.value = aux.substring(0,total); 
	} 
} 

function validaCNPJ(pcgc)
{
	// verifica o tamanho
	if (pcgc.length != 14) {
		sim=false
		return false
	}
	else {sim=true}

	if (sim )  // verifica se e numero
	{
		for (i=0;((i<=(pcgc.length-1))&& sim); i++)
		{
			val = pcgc.charAt(i)
			// alert (val)
			if
			((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") &&
			(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {sim=false}
		}
		if (sim)  // se for numero continua
		{
			m2 = 2
			soma1 = 0
			soma2 = 0
			for (i=11;i>=0;i--)
			{
				val = eval(pcgc.charAt(i))
				// alert ("Valor do Val: "+val)
				m1 = m2
				if (m2<9) { m2 = m2+1}
				else {m2 = 2}
				soma1 = soma1 + (val * m1)
				soma2 = soma2 + (val * m2)
			}  // fim do for de soma

			soma1 = soma1 % 11
			if (soma1 < 2) {  d1 = 0}
			else { d1 = 11- soma1}

			soma2 = (soma2 + (2 * d1)) % 11
			if (soma2 < 2) { d2 = 0}
			else { d2 = 11- soma2}
			// alert (d1)
			// alert (d2)
			if ((d1==pcgc.charAt(12)) && (d2==pcgc.charAt(13)))
			{ return true }
			else return false
		}
	}
}

function validaCPF(s)	{
	var i;
	//s = limpa_string(s);
	if (s.length != 11) {
		return false
	}
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(10-i);
	}
	if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
	return true;
}


/*############################################################################*/
/*### --- 					FUNÇÕES DE FORMATAÇÕES GERAIS			   --- ###*/
/*############################################################################*/
String.prototype.trim = function(){return this.replace(/^\s*/, "").replace(/\s*$/, "");}

function trim(str){return str.replace(/^\s+|\s+$/g,"");}

/**
* Javascript prototypes - String.pad() and Number.format()
* Carlos Reche (carlosreche@yahoo.com)
*/
String.PAD_LEFT  = 0;
String.PAD_RIGHT = 1;
String.PAD_BOTH  = 2;

String.prototype.pad = function(size, pad, side) {
  var str = this, append = "", size = (size - str.length);
  var pad = ((pad != null) ? pad : " ");
  if ((typeof size != "number") || ((typeof pad != "string") || (pad == ""))) {
    throw new Error("Wrong parameters for String.pad() method.");
  }
  if (side == String.PAD_BOTH) {
    str = str.pad((Math.floor(size / 2) + str.length), pad, String.PAD_LEFT);
    return str.pad((Math.ceil(size / 2) + str.length), pad, String.PAD_RIGHT);
  }
  while ((size -= pad.length) > 0) {
    append += pad;
  }
  append += pad.substr(0, (size + pad.length));
  return ((side == String.PAD_LEFT) ? append.concat(str) : str.concat(append));
}

Number.prototype.format = function(d_len, d_pt, t_pt) {
  var d_len = d_len || 0;
  var d_pt = d_pt || ".";
  var t_pt = t_pt || ",";
  if ((typeof d_len != "number")
    || (typeof d_pt != "string")
    || (typeof t_pt != "string")) {
    throw new Error("wrong parameters for method 'String.pad()'.");
  }
  var integer = "", decimal = "";
  var n = new String(this).split(/\./), i_len = n[0].length, i = 0;
  if (d_len > 0) {
    n[1] = (typeof n[1] != "undefined") ? n[1].substr(0, d_len) : "";
    decimal = d_pt.concat(n[1].pad(d_len, "0", String.PAD_RIGHT));
  }
  while (i_len > 0) {
    if ((++i % 3 == 1) && (i_len != n[0].length)) {
      integer = t_pt.concat(integer);
    }
    integer = n[0].substr(--i_len, 1).concat(integer);
  }
  return (integer + decimal);
}

function FormataCampo(Campo,teclapres,mascara)
{
	//pegando o tamanho do texto da caixa de texto com delay de -1 no event
	//ou seja o caractere que foi digitado não será contado.
	strtext = Campo.value
	tamtext = strtext.length
	//pegando o tamanho da mascara
	tammask = mascara.length
	//criando um array para guardar cada caractere da máscara
	arrmask = new Array(tammask)
	//jogando os caracteres para o vetor
	for (var i = 0 ; i < tammask; i++){
		arrmask[i] = mascara.slice(i,i+1)
	}
	//alert (teclapres.keyCode)
	//começando o trabalho sujo
	if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))){
		if ((teclapres.keyCode >= 37 && teclapres.keyCode <= 40)||(teclapres.keyCode >= 48 && teclapres.keyCode <= 57)||(teclapres.keyCode >= 96 && teclapres.keyCode <= 105)||(teclapres.keyCode == 8)||(teclapres.keyCode == 9) ||(teclapres.keyCode == 46) ||(teclapres.keyCode == 13)){
			Organiza_Casa(Campo,arrmask[tamtext],teclapres.keyCode,strtext)
		}
		else{
			Detona_Event(Campo,strtext)
		}
	}
	else{//Aqui funcionaria a mascara para números mas eu ainda não implementei
		if ((arrmask[tamtext] == "A")) {
			charupper = event.valueOf()
			//charupper = charupper.toUpperCase()
			Detona_Event(Campo,strtext)
			masktext = strtext + charupper
			Campo.value = masktext
		}
	}
}


function Organiza_Casa(Campo,arrpos,teclapres_key,strtext){
	if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){
		separador = arrpos
		masktext = strtext + separador
		Campo.value = masktext
	}
}


function Detona_Event(Campo,strtext){
	event.returnValue = false
	if (strtext != "") {
		Campo.value = strtext
	}
}

