// Autor: Cristiano 
// Data : 28/05/2001
//Recebe um objeto do tipo "Text" com conteúdo de data num formato 
//qualquer e converte para o formato desejado.
//Deve ser usada no evento "OnBlur" do objeto Text. Exemplo:
//fJSCustomDateTime(this, '%D/%M/%Y %T:%I:%S')
//Dia 
//D - 00 com dois dígitos
//d - 0  com um dígito
//Mes
//M - 00 com dois dígitos
//m - 0  com um dígito
//Ano
//Y - 00 com dois dígitos
//y - 0  com um dígito
//Hora
//T - 00 com dois dígitos
//t - 0  com um dígito
//Minuto
//I - 00 com dois dígitos
//i - 0  com um dígito
//Segundo
//S - 00 com dois dígitos
//s - 0  com um dígito


function fJSCustomDateTime(strData, strFormat){
  //string = ""
  //strData = objText.value
  
  //if(strData.length == 0)
	//{
	 // return false;
	//}
	
  //strData = '#' + strData + '#'
  //if ((strData.length) > 17)
  //{
   // strData = strData.substr(0 ,strData.length -1)
    //strData = strData + ':00'+ '#'
  //}
	
 	datData = fJSSetDateTime(strData, 21); //século 21 passado como parâmetro
 	return fJSFormataDataCustom(datData, strFormat);
 	
 	//if ( ! fJSFormataDataCustom(datData, strFormat))
//	{
//	  alert('Data Inválida!');
//	  objText.focus();
//	}
//	else
//	{
//	  objText.value =  fJSFormataDataCustom(datData, strFormat);
	  
//	}

}

function fJSSetDateTime(strDate, intCenturyOPT){

	var rexDataHora = /#[0-9]?[0-9]\W[0-9]?[0-9]\W([0-9][0-9])?[0-9][0-9](\W[0-9]?[0-9]\W[0-9]?[0-9]\W[0-9]?[0-9](\W(AM|PM))?)?#/i;
  if(strDate.search(rexDataHora) != -1){

		var strCampos = new Array();
		var datData = new Date();
		var rexSplit = /\W/;

		strCampos = strDate.substr(1,strDate.length - 2).split(rexSplit);
		if(strCampos.length == 3){
			datData.setHours(0);
			datData.setMinutes(0);
			datData.setSeconds(0);
		}else if(strCampos.length == 6){
			if((strCampos[3] > 23) || (strCampos[4] > 59) || (strCampos[5] > 59)){
				return false;
			}
			datData.setHours(strCampos[3]);
			datData.setMinutes(strCampos[4]);
			datData.setSeconds(strCampos[5]);
		}else if(strCampos.length == 7){
			if((strCampos[3] > 12) || (strCampos[3] < 1) || (strCampos[4] > 59) || (strCampos[5] > 59)){
				return false;
			}
			if(strCampos[6].toUpperCase() == "AM"){
				if(parseInt(strCampos[3]) == 12){
					strCampos[3] = "0";
				}
			}else{
				if(parseInt(strCampos[3]) != 12){
					strCampos[3] = (parseInt(strCampos[3]) + 12).toString();
				}
			}
			datData.setHours(parseInt(strCampos[3]));
			datData.setMinutes(parseInt(strCampos[4]));
			datData.setSeconds(parseInt(strCampos[5]));
		}
		if(intCenturyOPT){
			if(strCampos[2].length == 2){
				strCampos[2] = (intCenturyOPT - 1) + strCampos[2];
			}
		}
		
		var blnAnoBi = parseInt(strCampos[2]) % 4;
		var rexMes30 = /(4|6|9|11)/;
    if((parseInt(strCampos[1]) > 12) || (parseInt(strCampos[1]) < 1)){
      return false;
    }
		if(parseInt(strCampos[1]) == 2){
			if(!blnAnoBi){
				if(parseInt(strCampos[0]) > 29){
					return false;
				}
			}else{
				if(parseInt(strCampos[0]) > 28){
					return false;
				}
			}
		}else if(parseInt(strCampos[1]).toString().search(rexMes30) != -1){
			if(parseInt(strCampos[0]) > 30){
				return false;
			}
		}else{
			if(parseInt(strCampos[0]) > 31){
				return false;
			}
		}
		datData.setYear(parseInt(strCampos[2]));
		datData.setMonth(parseInt(strCampos[1]) - 1);
		datData.setDate(parseInt(strCampos[0]));
		return datData;
	}else{
		return false;
	}
	
}

function fJSFormataDataCustom(datNDate, strFormat){

	if(!datNDate){
		return false;
	}
	
	var rexDia1 = /%d/g;
	var rexDia2 = /%D/g;
	var rexMes1 = /%m/g;
	var rexMes2 = /%M/g;
	var rexMesl = /%e/g;
	var rexMesL = /%E/g;
	var rexAno2 = /%y/g;
	var rexAno4 = /%Y/g;
	var rexHora121 = /%h/g;
	var rexHora122 = /%H/g;
	var rexHora241 = /%t/g;
	var rexHora242 = /%T/g;
	var rexMinuto1 = /%i/g;
	var rexMinuto2 = /%I/g;
	var rexSegundo1 = /%s/g;
	var rexSegundo2 = /%S/g;
	var rexDiaSemana = /%k/g;
	var rexDiaSemana1 = /%w/g;
	var rexDiaSemana2 = /%W/g;
	var rexMilliseconds = /%x/g;
	var rexPeriod = /%q/g;
	var rexEspecial = /%%/g;
	
	var intDia = datNDate.getDate();
	var intMes = datNDate.getMonth() + 1;
	var intAno = datNDate.getFullYear();
	var intHora = datNDate.getHours();
	var intMinuto = datNDate.getMinutes();
	var intSegundo = datNDate.getSeconds();
	var intDiaDaSemana = datNDate.getDay();
	var intMSegundo = datNDate.getMilliseconds();
	
	strFormat = strFormat.replace(rexDia1,"" + intDia);
	strFormat = strFormat.replace(rexDia2,Right("0" + intDia, 2));
	strFormat = strFormat.replace(rexMes1,intMes);
	strFormat = strFormat.replace(rexMes2,Right("0" + intMes, 2));
	strFormat = strFormat.replace(rexMesl,PegaMes(intMes, false));
	strFormat = strFormat.replace(rexMesL,PegaMes(intMes, true));
	strFormat = strFormat.replace(rexAno2,Right("0" + intAno, 2));
	strFormat = strFormat.replace(rexAno4,intAno);
	strFormat = strFormat.replace(rexHora121,((intHora == 0) ? "12" : ((intHora > 12) ? intHora - 12 : intHora)));
	strFormat = strFormat.replace(rexHora122,((intHora == 0) ? "12" : ((intHora > 12) ? Right("0" + parseInt(intHora - 12), 2) : Right("0" + intHora, 2))));
	strFormat = strFormat.replace(rexHora241,intHora);
	strFormat = strFormat.replace(rexHora242,Right("0" + intHora, 2));
	strFormat = strFormat.replace(rexMinuto1,intMinuto);
	strFormat = strFormat.replace(rexMinuto2,Right("0" + intMinuto, 2));
	strFormat = strFormat.replace(rexSegundo1,intSegundo);
	strFormat = strFormat.replace(rexSegundo2,Right("0" + intSegundo, 2));
	strFormat = strFormat.replace(rexDiaSemana,intDiaDaSemana);
	strFormat = strFormat.replace(rexDiaSemana1,PegaSemana(intDiaDaSemana, false));
	strFormat = strFormat.replace(rexDiaSemana2,PegaSemana(intDiaDaSemana, true));
	strFormat = strFormat.replace(rexMilliseconds,intMSegundo);
	strFormat = strFormat.replace(rexPeriod,((intHora > 11)?"PM":"AM"));
	strFormat = strFormat.replace(rexEspecial,"%");
	
	return strFormat;
	
}

function PegaMes(intMes, blnFlag){
	
	var strM = new Array("", "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");
	var strm = new Array("", "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez");
	
	if(blnFlag){
		return strM[parseInt(intMes)];
	}else{
		return strm[parseInt(intMes)];
	}
	
}

function PegaSemana(intSemana, blnFlag){
	
	var strS = new Array("Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado");
	var strs = new Array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab");
	
	if(blnFlag){
		return strS[intSemana];
	}else{
		return strs[intSemana];
	}
	
}

function Right(strString, intPos){

	return strString.substr(strString.length - intPos, strString.length);
	
}

//final da função fJSCustomDateTime



// Autor: Leonardo Neves
// Data : 03/03/2000
// Remove os espaços no inicio e fim da string
function fJSTrim (lString)
{
		
	var lPosInicial, lPosFinal, lStringFinal
	
	for (i = 0; i < lString.length; i++)
	{		
		if (lString.substr(i, 1) != ' ')
		{
			lPosInicial = i
			break
		}		
	}
	
	for (i = lString.length - 1; i >= 0; i--)
	{		
		if (lString.substr(i, 1) != ' ')
		{
			lPosFinal = i
			break
		}		
	}
		
	lNumBrancos = lPosInicial + (lString.length - 1 - lPosFinal)
	lStringFinal = lString.substr(lPosInicial, lString.length - lNumBrancos);

	return lStringFinal
}

// Autor: Mônica Coelho Mitkiewicz
// Data : 27/08/1999
// Inverte a posicão do dia e o mes
function fJSInverteDiaMes( lData )
{
    var lPos
    var lDia
    var lMes
    var lAno
    var lResto
    var lDataRet
    
	lPos = fJSRetornaPosCaracter(lData, "/")
	lDia = lData.substr(0, lPos)
	
    lResto = lData.substr(lPos + 1, lData.length - lPos - 1)
    lPos = fJSRetornaPosCaracter(lResto, '/')
	lMes = lResto.substr(0, lPos)
	lAno = lResto.substr(lPos + 1, lResto.length - lPos - 1)
    lDataRet = lMes + '/' + lDia  + '/' + lAno
    return lDataRet

}
//Autor: Gabriel
//Data: 24/10/2000
//Recebe um objeto do tipo "Text" com conteúdo de data num formato 
//qualquer e converte para o formato padrao. "dd/mm/yyyy". 
//Deve ser usada no evento "OnBlur" do objeto Text. Exemplo:

//EXEMPLO: <INPUT type="text" name=txtDataInicio OnBlur="fJSFormataData(this);">

function fJSFormataData(objText)
{
	//Flag para contornar a rechamado do evento OnBlur no NetScape
	if (objText.FlagErroNE)
	  {
	  objText.FlagErroNE = false
	  return
	  }
	
	var lString, digito, dia='', mes='', ano='', parte = 1
	lString = objText.value
	
	
	// Percorre a string separando o dia, mes e ano
	for (i = 0; i < lString.length; i++)
	{		
	  digito = lString.substr(i, 1) 

		if (digito >= '0' && digito <= '9')
		{ 
		  if (parte == 1 && dia.length < 2){dia=dia+digito} 
		  else if (parte == 1) {parte = 2; mes=mes+digito}
		  else if (parte == 2 && mes.length < 2){mes=mes+digito} 
		  else if (parte == 2) {parte = 3; ano=ano+digito}
		  else if (parte == 3){ano=ano+digito}
		}		
		else
		{
		  if (mes.length > 0){parte=3}
		  else if (dia.length > 0){parte=2}  
		}
	}

	if (dia.length == 0 && lString.length == 0)
	  {	  
	  objText.value =''
	  return false;
	  }

  var DataAtual = new Date()
  
	  DataAtual.getMonth()

	if (mes.length == 0)
	  {
	  mes = (DataAtual.getMonth() + 1).toString(2)
	  }

	if (ano.length == 0)
	  {
	  ano = DataAtual.getYear()
	  }

  if (dia.length < 2){dia='0' + dia}
  if (mes.length < 2 ){mes='0' + mes}
  if (ano.length < 2){ano='200' + ano}
  else if (ano.length < 3 && ano > 79){ano='19' + ano}
  else if (ano.length < 3){ano='20' + ano}
		
	lString = dia + '/' + mes + '/' + ano
	
	if (!fJSValidaData(lString)) {
      if (fJSInStr(navigator.appName, 'Netscape')) objText.FlagErroNE = true;
	    alert('Data Inválida');
	    objText.focus();
	    return
	}
	else
	  objText.value = lString;
	return false;
}

//Autor: Juliana Borges Ribeiro
//Data: 15/05/2001
//Formata Numero para calculo
//Exemplo : 1.000,00 para  1000.00

function fJFormatNumber(strNumero)
{

  npos = strNumero.indexOf(".")
  
  if ((strNumero.length - npos) != 3)
  {
    while( npos > 0 && (strNumero.length - npos) != 3 )
    {
      strNumero  = strNumero.substr(0,npos) + strNumero.substr(npos+1,strNumero.length ) 
      npos = strNumero.indexOf(".")
          
    }
  }
  else
  {
    strNumero  = strNumero.substr(0,npos) +"," + strNumero.substr(npos+1,strNumero.length )       
  }
      
  npos = strNumero.indexOf(",")
  while( npos > 0 )
  {
    if ((strNumero.length - npos) == 3)
    {
      strNumero  = strNumero.substr(0,npos) +"." + strNumero.substr(npos+1,strNumero.length ) 
      npos = strNumero.indexOf(",")
    }
    else
    { 
      strNumero  = strNumero.substr(0,npos) + strNumero.substr(npos+1,strNumero.length ) 
      npos = strNumero.indexOf(",")
        
    }
  }
  return strNumero;
}