function ChangeInnerLabelBlur(control, label)
{
    if(Trim(control.value) == '')
        control.value = label;
}

function ChangeInnerLabelFocus(control, label)
{
    if(Trim(control.value) == label)
        control.value = '';
}

function SetFocus(control)
{
    document.getElementById('" + control + "').focus();
    window.onload = SetFocus;
}

function Trim(s) {
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m == null) ? "" : m[1];
}

function GetKeyCode(e)
{
	var keynum

	keynum = e.keyCode //IE
	if((keynum == null)||(keynum==0))keynum = e.which; // Netscape/Firefox/Opera		
		
	return keynum;
}

/* using on event onkeypress
 * onkeypress="return IsNumeric(event)" 
 */

/*function IsNumeric(e)
{
var keynum;
var keychar;
var numcheck;

    keynum = e.keyCode;
    if((keynum == null)||(keynum == 0))keynum = e.which;

    if((keynum<47)||(keynum>58))return true;        //Teclas numéricas
    if((keynum>36)&&(keynum<41))return true;        //Setas
    if((keynum == 8)||(keynum == 9)||(keynum == 46)||(keynum == 116))return true;   //Teclas 'BackSpace','Tab' ,'delete' e 'F5'
    //if((keynum == null)||(keynum == 0))return true; 

    return false;
}*/
 
function IsNumeric(e)
{
	var keychar
	var numcheck
	var keynum = GetKeyCode(e);
	
	if((keynum>36)&&(keynum<41))return true;        //Setas
    if((keynum == 8)||(keynum == 9)||(keynum == 46)||(keynum == 116))return true;   //Teclas 'BackSpace','Tab' ,'delete' e 'F5'
		
	keychar = String.fromCharCode(GetKeyCode(e))
	numcheck = /\d/
	return numcheck.test(keychar)
}

function MaskPhone(field, e)
{
	var tecla = GetKeyCode(e);
	tammax = 8
	vr = field.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	tam = vr.length;
	
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		if ( tam <= 2 ){ 
	 		field.value = vr ; }
	 	if ( (tam > 4) ){
	 		field.value = vr.substr( 0, tam - 4 ) + '-' + vr.substr( tam - 4, tam ) ; }
	}		
}

function MaskFormat(field, Mask, e)
{
    var i, count, value, fldLen, mskLen, bolMask, sCod;
    var keynum = GetKeyCode(e);
    if(keynum == 13)
    {
		return false;
    }

    if ((keynum == 9) || (keynum == 16) || (keynum == 8) || (keynum == 46) || (keynum == 37) || (keynum == 39)) 
		 return true;
    
    value = field.value;
    // Limpa todos os caracteres de formata??o que
    // j? estiverem no field.
	value = value.toString().replace( "-", "" );
	value = value.toString().replace( "-", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( ",", "" );
	value = value.toString().replace( "/", "" );
	value = value.toString().replace( "/", "" );
	value = value.toString().replace( "(", "" );
	value = value.toString().replace( "(", "" );
	value = value.toString().replace( ")", "" );
	value = value.toString().replace( ")", "" );
	value = value.toString().replace( " ", "" );
	value = value.toString().replace( " ", "" );
    fldLen = value.length;
    mskLen = Mask.length;

    i = 0;
    count = 0;
    sCod = "";
    mskLen = fldLen;

    while (i <= mskLen) {
		try {
			bolMask = ((Mask.charAt(i) == "-") || (Mask.charAt(i) == ".") ||  (Mask.charAt(i) == "/"))|| (Mask.charAt(i) == ",")
			bolMask = bolMask || ((Mask.charAt(i) == "(") || (Mask.charAt(i) == ")") || (Mask.charAt(i) == " ")) 

			if (bolMask) {
				sCod += Mask.charAt(i);
				mskLen++; 
				}
			else {
				//if ((Mask.charAt(i)=="9" && IsNumeric(value.charCodeAt(count))) || (Mask.charAt(i)=="!")) 
				// foi alterado por joel - ver com o stiven 05-02-07
				if ((Mask.charAt(i)=="9" && IsNumeric(e)) || (Mask.charAt(i)=="!")) 
					sCod += value.charAt(count);
				else
					mskLen--;
				count++;
			}
			i++;
		} catch ( e ) {
			alert(e);
		}
    }

    field.value = sCod;

    if (keynum != 8) { // backspace
		if (Mask.charAt(i-1) == "9") { // apenas n?meros...
			return ((keynum > 47) && (keynum < 58)); 
		} // n?meros de 0 a 9
		else { 
			return true;
		} 
    }
    else {
		return true;
    }
}

function ValidIE(o)
{
    return true;
}

function ValidCNPJ(field)
{
	var value = field.value;
	
	var l, inx,dig; // string
	var s1,s2,i,d1,d2,v,m1,m2; // int
	
    value = value.toString().replace( "/", "" );
    value = value.toString().replace( ".", "" );
	value = value.toString().replace( ".", "" );
	value = value.toString().replace( "-", "" );

    if (value.length == 0)
	{ return true; }
	
	if (value.length != 14)
	{
		alert("CNPJ inválido!");
		field.focus();
		field.select();
		return false;
	}

	inx = value.substr(12,2);
	cnpj = value.substr(0,12);
	s1 = 0;
	s2 = 0;
	m2 = 2;

	for (i= 11; i >=0 ; i-- ) 
	{
		l = cnpj.substr(i,1);
		v = parseInt(l);
		m1 = m2;
		m2 = m2 < 9 ? m2 + 1 : 2;
		s1 += v * m1;
		s2 += v * m2;
	}

	s1 %= 11;
	d1 = s1<2 ? 0 : 11-s1;
	s2 = ( s2 + 2*d1 ) % 11;
	d2 = s2<2 ? 0: 11-s2;
	dig = d1.toString() + d2.toString();

	if(inx != dig)
	{
		alert("CNPJ inválido!");
		field.focus();
		field.select();
		return false;
	}	
	return true;
}


/* ClearFormatMoney
 * Description: 
 * Event:  ?
 * Sample: ClearFormatMoney('SD12SER34', '0123456789');
 */ 
function ClearFormatMoney(valor, validos)
{
    var result = "";
    var aux;
    for (var i=0; i < valor.length; i++)
    {
        aux = validos.indexOf(valor.substring(i, i+1));
        if (aux>=0) 
            result += aux;
    }
    return result;
}

/* FormatMoney
 * Description: 
 * Event:  OnKeyDown
 * Sample: OnKeyDown="FormatMoney(this,20,2)"
 * Adding in object:style="text-align:Right;"
 */ 
function FormatMoney(campo, tammax, decimal, e) 
{
    var keynum = GetKeyCode(e);
    vr = ClearFormatMoney(campo.value,"0123456789");
    tam = vr.length;
    dec = decimal;

    if (tam < tammax && keynum != 8)
        tam = vr.length + 1 ;

    if (keynum == 8 )
        tam = tam - 1 ;

    if ( keynum == 8 || keynum >= 48 && keynum <= 57 || keynum >= 96 && keynum <= 105 )
    {

        if ( tam <= dec )
            campo.value = vr;
        if ((tam > dec) && (tam <= 5))
            campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ;             
        if ((tam >= 6) && (tam <= 8) )
            campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
        if ((tam >= 9) && (tam <= 11) )
            campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
        if ((tam >= 12) && (tam <= 14) )
            campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
        if ((tam >= 15) && (tam <= 17) )
            campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;
    } 
}

function MaskHour(field, e)
{
    var keynum = GetKeyCode(e);
	if((keynum != 8) || (keynum != 46)){
		if(field.value.length == 2)
			field.value = field.value + ':';
	}
}

function ValidHour(field)
{
	var value = field.value;
	
	if(value != ''){
		//format de horas minutos
		splValor = value.split(':');
	
		//atribuindo valor a horas e minutos
		horas	= splValor[0];
		minutos	= splValor[1];
		
		//Verificando Tamanho do field, tem q ser 2.
		if((horas.length != 2) || (minutos.length != 2)){
			alert('Horários tem que ser em formato HH:MM');
			field.value = "";
			field.focus();
			return false
		}
	
		//verificando Horas
		if((Number(horas) < 0) || (Number(horas) > 23)){
			alert('Horas tem que ser entre 0 a 23');
			field.value = "";
			field.focus();
			return false;
		}
	
		//verificando Minutos
		if((Number(minutos) < 0) || (Number(minutos) > 59)){
			alert('Minutos tem que ser entre 0 a 59');
			field.value = "";
			field.focus();
			return false;
		}
	}
	return true;
}


/* DateFormat
 * Description: 
 * Event: ?
 * Sample: DateFormat()
 */ 
function DateFormat(field, toValidate, e)
{
	errMsg = "Data Inválida.";

	try
	{
	var keynum = GetKeyCode(e);
	
	//se o caracter digitado não for um número do teclado padrão,
	//é subtraído -48 a keynum para verificar se o caracter é um número do teclado numérico.
	if(keynum>57)keynum-=48;
	
		if(!toValidate) {
			if(keynum < 48 || keynum > 57){
			    //event.keyCode = 0;
				return false;
			}
			else {
				nTecla = keynum;
				fieldLen = field.value.length;
				nBarras = 0;
				barra1 = 0;
				barra2 = 0;
				
				for(i=0; i < fieldLen; i++) {
					if(field.value.charAt(i) == '/') {
						nBarras++;
						if(nBarras == 1) {
							barra1 = i;
						}
						else {
							barra2 = i;
						}
					}
				}
				
				if((barra1 + barra2 == 4 && fieldLen == 8) || (barra1 + barra2 == 5 && fieldLen == 9) || (barra1 + barra2 == 6 && fieldLen == 9) ) {
				
					//Verifica posição do cursor

					var rangeInit = document.selection.createRange();
					var rangeEnd = document.selection.createRange();

					rangeInit.moveStart('character', -1);
					rangeEnd.moveStart('character', +1)
					rangeEnd.moveEnd('character', +1);
					charAnt1 = rangeInit.text;//'/'
					charPos1 = rangeEnd.text;//'/'

					rangeInit.moveStart('character', -1);
					rangeInit.moveEnd('character', -1);
					rangeEnd.moveStart('character', -1)
					rangeEnd.moveEnd('character', -1);
					charAnt2 = rangeInit.text;//'/'
					charPos2 = rangeEnd.text;//'/'
					
					
					//se está alterando no campo Mês
					if((charAnt1 == '/' && charPos1 == '/') || (charAnt2 == '/' && charPos2 == '/')) {
					}
					else {
						rangeInit.moveStart('character', 1);
						rangeInit.moveEnd('character',1);
						rangeEnd.moveStart('character', 0)
						rangeEnd.moveEnd('character', 0);
						charAnt1 = rangeInit.text; //'/'
						charPos1 = rangeEnd.text;

						rangeEnd.moveStart('character', 1)
						rangeEnd.moveEnd('character', 1);
						charPos2 = rangeEnd.text;
						
						//se está alterando no campo Dia
						if((charAnt1 == '/' && charPos1 == '/') || (charAnt1 == '/' && charPos2 == '/')) {
						}
						else {
							//event.keyCode = 0;
							return false;
						}
					}
				}
				
				if(keynum == 47) {
					if(fieldLen == 0 || nBarras == 2 || (nBarras == 1 && barra1 == fieldLen-1)) {
						//event.keyCode = 0;
						return false;
					}
				}
				else if((fieldLen == 2 && nBarras < 1) || (fieldLen == 5 && nBarras < 2) || (fieldLen == 4 && nBarras < 2 && barra1 == 1)) {
					field.value = field.value + "/";
				}
				return true;
			}
		}
		else {
			dia = field.value.split("/")[0];
			mes = field.value.split("/")[1];
			ano = field.value.split("/")[2];
			
			if(dia > 31 || mes > 12 || ano > 2100 || (ano < 1800 && ano > 99) || ano.length == 3 || ano.length == 1 || mes < 1 || dia < 1) {
				alert(errMsg);
				field.value = "";
				field.focus();
				return false;
			}
			if(dia.length == 1) {
				dia = "0" + dia;
			}
			if(mes.length == 1) {
				mes = "0" + mes;
			}
			if(ano.length == 2) {
				if(ano < 15) {
					ano = "20" + ano;
				}
				else {
					ano = "19" + ano;
				}
			}
			
			arrMes = new Array();
			arrMes[1] = arrMes[3] = arrMes[5] = arrMes[7] = arrMes[8] = arrMes[10] = arrMes[12] = 31;
			arrMes[4] = arrMes[6] = arrMes[9] = arrMes[11] = 30;
			arrMes[2] = ano % 4 == 0 ? 29 : 28;
			if(dia > arrMes[parseInt(mes)]) {
				alert(errMsg);
				field.value = "";
				field.focus();
				return false;
			}
			
			field.value = dia + "/" + mes + "/" + ano;
		}
	}
	catch(e)
	{
	}
}

/* Alfanumeric
 * Description: 
 * Event: ?
 * Sample: Alfanumeric()
 */ 
function Alfanumeric(e)
{
    var keynum = GetKeyCode(e);
	if(keynum < 48 || keynum > 57 && keynum < 97 || keynum > 122)
	{
			event.keyCode = 0;
			return false;
	}
	else
		return true;
}

/* ValidEmail
 * Description: 
 * Event: ?
 * Sample: ValidEmail(field);
 */ 
function ValidEmail(field)
{
	var email = field.value;
    if(email.length > 0)
    {
	    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	    if (filter.test(email))
	        return true;//alert('Email válido');
	    else
	    {
	        alert('Email inválido');
	        field.select();
	        return false;
	    }
	}
	return true;
}

function FormataMoeda(pObject)
{
	if (pObject.value=="") return;
	this.valorNaoFormatado=pObject.value
	posPonto = this.valorNaoFormatado.indexOf(".");
	posVirgula = this.valorNaoFormatado.indexOf(",");
	if (posPonto > posVirgula) {
		re = /,/g;
		this.valorNaoFormatado=this.valorNaoFormatado.replace(re,"");
		this.virgulaFinal=this.valorNaoFormatado.indexOf(".");
	}
	else {
		re = /\./g;
		this.valorNaoFormatado=this.valorNaoFormatado.replace(re,"");
		this.virgulaFinal=this.valorNaoFormatado.indexOf(",");
		this.valorNaoFormatado = this.valorNaoFormatado.replace(",",".");
	}
	
	//caso n?o seja um valor v?lido
	if (isNaN(this.valorNaoFormatado)) {
		//alert (pObject.title + ': Valor não numérico!');
		pObject.focus();
		pObject.select();
		pObject.value=="0,00"
		return (false);
	}
		
	if (this.virgulaFinal== -1){ // nao tem virgula na string de valor
		this.valorFracionario="00";		
		this.valorInteiro=this.valorNaoFormatado;
	}
	else{
		//tem ponto : define a parte fracionaria
		//toPrecision usado para contornar bug na soma do JS. Ex.: 100.46 + 2000.34 = 2100.79999999997 (retorno do JS)
		this.valorNaoFormatado = parseFloat(this.valorNaoFormatado).toPrecision(this.virgulaFinal+2)
		this.valorFracionario=this.valorNaoFormatado.substr(this.virgulaFinal+1,2);
		//if (this.valorFracionario < 10) this.valorFracionario = "0" + this.valorFracionario
		this.valorInteiro=this.valorNaoFormatado.substring(0,this.virgulaFinal);
	}
	this.DesformataInteiro();
	if ((this.valorInteiro > 999999999999999)&&(pObject.id.indexOf("Total")==-1)){
		alert(pObject.title + " Obs : Entre com um valor válido, menor que 1.000.000.000.000.000,00!");
		pObject.focus();
		pObject.select();
		return (false);
	}

	this.FormataValorInteiro();
	if (pObject.value != this.valorInteiro + "," + this.valorFracionario)
		pObject.value=this.valorInteiro + "," + this.valorFracionario;
	
	return (true); 
}

function DesformataInteiro(){
	var x=this.valorInteiro;
	var xAux="";
	var xInicial=0;
	var xPos=x.indexOf(".");
	while (xPos!=-1){
		xAux=xAux + x.substring(0,xPos);
		x=x.substring(xPos+1);
		xPos=x.indexOf(".");
	}
	xAux=xAux + x;
	this.valorInteiro=xAux;
}

function FormataValorInteiro(){
	var sInteiro = this.valorInteiro;
	var iLength=sInteiro.length;
	var sAux="";
	var iPos=iLength;
		
	if (sInteiro.indexOf("-")==0) {
		sNegativo="-";
		iPos--;
	}
	else
		sNegativo="";
	sInteiro = sInteiro.replace("-","");
	
	while(iPos>0) {
		iPos-=3;
		if (sAux!="")	{
			sAux=sInteiro.substring(iPos,iPos+3)+"."+sAux;			
		}
		else {
			sAux=sInteiro.substring(iPos,iPos+3);
		}
	}
	this.valorInteiro = sNegativo + sAux;
}

function ValidCPF(field)
{

	var value = field.value;
	
    value = value.toString().replace( "-", "" );
    value = value.toString().replace( ".", "" );
    value = value.toString().replace( ".", "" );
    value = value.toString().replace( ".", "" );
    
    if (value.length == 0){ return true; }
	
	if (value.length != 11)
	{
		alert("CPF inválido!");
		field.focus();
		field.select();
		return false;
	}
	
	//-- A pedido do Jr foi criado esse CPF (111.222.333-55) pelo fato
	//-- que uma pessoa estrangeira não estava conseguindo realizar o 
	//-- cadastro para concorrer a uma vaga no processo seletivo de pós-graduação - 14/02/2005
	if( value == '11122233355' )
	{
		//alert('11122233355');
		return true;
	}
	
	cpf1 = value.substr(0,9) 
	cpf2 = value.substr(9,2) 
	
	d1 = 0;
	for (i=0;i<9;i++) 
		d1 += cpf1.charAt(i)*(10-i);
	d1 = 11 - (d1 % 11);
	if (d1>9) d1 = 0;
	
	if (cpf2.charAt(0) != d1) 
	{
		alert("CPF inválido!");
		field.focus();
		field.select();
		return false;
	}
	
	d1 *= 2;
	for (i=0;i<9;i++) 
		d1 += cpf1.charAt(i)*(11-i);
	d1 = 11 - (d1 % 11);
	if (d1>9) d1 = 0;
	
	if (cpf2.charAt(1) != d1)
	{
		alert("CPF inválido!");
		field.focus();
		field.select();
		return false;
	}
	
	return true;
}
function NumericFormat(field, allowNegative, e)
{
    var keynum = GetKeyCode(e);
	    
	if ((keynum >= 96 && keynum <= 105) || (keynum >= 48 && keynum <= 57)
		|| keynum == 190
		|| keynum == 8 || keynum == 46 || (keynum == 189 && allowNegative)){
		
		fieldTmp = field.value;
		reg = /[^0-9]/g;	
		
		if (fieldTmp.indexOf("-")==0)
			negativo = "-";		
		else
			negativo = "";
	
		fieldTmp=fieldTmp.replace(reg,"");		
		i=4;
		len=fieldTmp.length;
		result = "";
		while (i<=fieldTmp.length) {
			result='.'+fieldTmp.substr(len-3,3)+result;
			i+=3;
			len-=3;
		}
		result=fieldTmp.substr(0,len)+result;		
					
		field.value=negativo + result;		
	}
	else 
		if ((keynum < 35 || keynum > 40) && keynum != 9 && keynum != 16) {
			if (allowNegative)
				reg = /[^0-9-\.]/g;
			else
				reg = /[^0-9\.]/g;
				
			field.value = field.value.replace(reg,"");
		}
}
function FormatTextRA(oObj)
{
	try
	{
		if(oObj.value.length > 1)
		{
			sValue = oObj.value.replace( "/", "" );
			iLength = sValue.length;
			var nuRa = sValue.substring(0 , iLength - 1);
			var nuDigito = sValue.substring(iLength - 1, iLength);
			oObj.value = nuRa + '/' + nuDigito;
		}
		else if(oObj.value.length == 1)
		{
			if(isNaN(oObj.value)) oObj.value = '';
		}

	}
	catch(e) 
	{ 
		return false;
	}
}
