/*############################################################################*/
/*##########--- FUNÇÕES DE CONTROLE UTEIS DO SISTEMA ---######################*/
/*############################################################################*/
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
function addEvento(obj, evento, funcao)
{
	try
	{
		obj.addEventListener(evento, funcao, true);
	}
	catch(ex)
	{
		obj.attachEvent("on"+evento, funcao);
	}
}

String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}



/*############################################################################*/
/*############--- 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) {
	if (Hora.length != 5) {
		return false
	}
	phora = ''
	for (i=0;i<=1; i++) {
		val = Hora.charAt(i)
		phora  = phora  + Hora.charAt(i)
		if ((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") &&
					(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {
			return false
		}			   
	}
	if (phora > 23 || phora < 0) {
		return false
	}	
	if (Hora.charAt(2) != ":") {
		return false
	}
	minuto = ''
	for (i=3;i<=4; i++) {		
		val = Hora.charAt(i)
		minuto = minuto + Hora.charAt(i)
		if ((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") &&
					(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {
			return false
		}			   
	}
	if (minuto > 59 || minuto < 0) {
		return false
	}	
	return true
}

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			   --- ###*/
/*############################################################################*/

/**
* 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);
}