
	Date.prototype.getHoraFormatada = function() {

		var hora = 0;
		var minuto = 0;
		var segundo = 0;
		var milesimo = 0;
		var tmp = 0;
		
		milesimoSegundo = this.getTime();
		tmp = ( milesimoSegundo / 1000 );
		milesimo = (tmp-parseInt(tmp))*1000;
		tmp = parseInt(tmp) / 60;
		segundo = tmp - parseInt(tmp);
		segundo = 60 * segundo;
		tmp = parseInt(tmp)/60;
		minuto = tmp - parseInt(tmp);
		minuto = 60 * minuto;
		hora = parseInt(tmp);
		
		hora = Math.round(hora).toString().zeroEsquerda(2);
		minuto = Math.round(minuto).toString().zeroEsquerda(2);
		segundo = Math.round(segundo).toString().zeroEsquerda(2);
		
		return hora + ':' + minuto + ':' + segundo;

	}
	
	// Função que seta a duração de um time code, subtraindo o final pelo inicial.
	Date.prototype.setDuracaoTimeCode = function(pTimeCodeInicial, pTimeCodeFinal) {
		
		var segundoTcInicial = (parseInt(pTimeCodeInicial.substr(0,2))*60*60*1000) + 
							   (parseInt(pTimeCodeInicial.substr(3,2))*60*1000) + 
							   (parseInt(pTimeCodeInicial.substr(6,2)*1000));
							   
		var segundoTcFinal = (parseInt(pTimeCodeFinal.substr(0,2))*60*60*1000) + 
							 (parseInt(pTimeCodeFinal.substr(3,2))*60*1000) + 
							 (parseInt(pTimeCodeFinal.substr(6,2)*1000));
		
		var duracao = parseInt(segundoTcFinal - segundoTcInicial);
		
		this.setTime(duracao);
	}
	
	// Função que seta o time code
	Date.prototype.setTimeCode = function(pTimeCode) {
		
		var segundoTimeCode = (parseInt(pTimeCode.substr(0,2))*60*60*1000) + 
							  (parseInt(pTimeCode.substr(3,2))*60*1000) + 
							  (parseInt(pTimeCode.substr(6,2)*1000));
		
		this.setTime(segundoTimeCode);
	}
	
	// Função que verifica se o time code inicial é maior que o final
	Date.prototype.isTimeCodeInicialMaiorFinal = function(pTcInicial, pTcFinal) {
		return pTcInicial.getTime()>pTcFinal.getTime();
	}
	
	Date.prototype.subtrairTc = function(pTcInicial, pTcFinal) {
		return pTcInicial-pTcFinal;
	}
	Date.prototype.subtrairHora = function(pHoraInicial, pHoraFinal) {
		return pHoraFinal-pHoraInicial;
	}
	Date.prototype.somarHora = function(pHoraInicial, pHoraFinal) {
		return pHoraInicial+pHoraFinal;
	}

	
	Date.prototype.getDiaSemanaExtenso = function(){
		var diaSemana = '';
		
		if (this.getDay() == 0 )
			diaSemana = "Domingo"
		else if (this.getDay() == 1 )
			diaSemana = "Segunda-Feira"
		else if (this.getDay() == 2 )
			diaSemana = "Terça-Feira"
		else if (this.getDay() == 3 )
			diaSemana = "Quarta-Feira"
		else if (this.getDay() == 4 )
			diaSemana = "Quinta-Feira"
		else if (this.getDay() == 5 )
			diaSemana = "Sexta-Feira"
		else if (this.getDay() == 6 )
			diaSemana = "Sábado"
	
		return diaSemana;
	}
	
	Date.prototype.setHora = function(pNovaHora){
		
		if (typeof pNovaHora != 'string')
			throw('IllegalArgumentException: O parâmetro esperado para String.prototype.setData(pNovaData) ' +
				' deve ser uma String');
		if ((pNovaHora.substr(3,1)!=':') && (pNovaHora.substr(6,1)!=':'))
			throw('IllegalArgumentException: O conteúdo do parâmetro String.prototype.setData(pNovaData) é inválido!');

		/*colunaSomaPri.setHours(colunaBreakPri.substr(0,2))
		colunaSomaPri.setMinutes(colunaBreakPri.substr(3,2))
		colunaSomaPri.setSeconds(colunaBreakPri.substr(6,2))*/

		this.setHours(pNovaHora.substr(1,2));
		this.setMinutes(pNovaHora.substr(4,2));
		this.setSeconds(pNovaHora.substr(7,2));
		
		return this;
	}

	Date.prototype.setData = function(pNovaData){
		
		if (typeof pNovaData != 'string')
			throw('IllegalArgumentException: O parâmetro esperado para String.prototype.setData(pNovaData) ' +
				' deve ser uma String');
		if ((pNovaData.substr(2,1)!='/') && (pNovaData.substr(5,1)!='/'))
			throw('IllegalArgumentException: O conteúdo do parâmetro String.prototype.setData(pNovaData) é inválido!');

		this.setDate(pNovaData.substr(0,2));
		this.setMonth(parseInt(pNovaData.substr(3,2))-1);
		this.setYear(pNovaData.substr(6,4));
	}

	Date.prototype.getDataFormatada = function(pMascara){
		
		if (typeof pMascara != 'string')
			throw('IllegalArgumentException: O parâmetro esperado para String.prototype.getDataFormatada(pMascara) ' +
				' deve ser uma String');
		
		if ((pMascara.toUpperCase()!='DD/MM/AAAA') && (pMascara.toUpperCase()!='AAAA/MM/DD'))
			throw('IllegalArgumentException: O conteúdo do parâmetro String.prototype.getDataFormatada(pMascara) é inválido!');
		
		var dataFormatada = '';
		
		if (pMascara.toUpperCase()=='DD/MM/AAAA')
			dataFormatada = this.getDate().toString().zeroEsquerda(2) + '/' + 
							(this.getMonth()+1).toString().zeroEsquerda(2) + '/' + 
							this.getFullYear().toString().zeroEsquerda(4);
		else if (pMascara.toUpperCase()=='AAAA/MM/DD')
			dataFormatada = this.getFullYear().toString().zeroEsquerda(4) + '/' + 
							(this.getMonth()+1).toString().zeroEsquerda(2) + '/' + 
							this.getDate().toString().zeroEsquerda(2);
		return dataFormatada;
	}
	
	Date.prototype.getIdade = function(){
	
		var idade = 0;
		var diaNascimento = this.getDate();
		var mesNascimento = this.getMonth();
		var anoNascimento = this.getFullYear();
		
		var hoje = new Date();
		
		var dia = hoje.getDate();
		var mes = hoje.getMonth();
		var ano = hoje.getYear();
		idade = ano - anoNascimento;
		
		if (mes<mesNascimento) 
			idade = idade - 1;
		else if (mes=mesNascimento){
			if (dia<diaNascimento) 
				idade = idade - 1;
		}
		
		return idade;
		
	};
	
	Date.prototype.getDiaSemanaExtenso = function () {
	
		var diaSemana = this.getDay();
		if(diaSemana == 0 )
			diaSemanaText = "Domingo"
		else if(diaSemana == 1 )
			diaSemanaText = "Segunda-Feira"
		else if(diaSemana == 2 )
			diaSemanaText = "Terça-Feira"
		else if(diaSemana == 3 )
			diaSemanaText = "Quarta-Feira"
		else if(diaSemana == 4 )
			diaSemanaText = "Quinta-Feira"
		else if(diaSemana == 5 )
			diaSemanaText = "Sexta-Feira"
		else if(diaSemana == 6 )
			diaSemanaText = "Sábado"
	
		return diaSemanaText;
	};
	
	Date.prototype.getMesExtenso = function() {

		mes = this.getMonth();
		
		if(mes == 0 )
			mesText = "Janeiro"
		else if(mes == 1 )
			mesText = "Fevereiro"
		else if(mes == 2 )
			mesText = "Marco"
		else if(mes == 3 )
			mesText = "Abril"
		else if(mes == 4 )
			mesText = "Maio"
		else if(mes == 5 )
			mesText = "Junho"
		else if(mes == 6 )
			mesText = "Julho"
		else if(mes == 7 )
			mesText = "Agosto"
		else if(mes == 8 )
			mesText = "Setembro"
		else if(mes == 9 )
			mesText = "Outubro"
		else if(mes == 10 )
			mesText = "Novembro"
		else if(mes == 11 )
			mesText = "Dezembro"
	
		return mesText;
		
	};
	
	Date.prototype.getPorExtenso = function () {

		var dataText = '';
			dataText += this.getDiaSemanaExtenso();
			dataText += ', '+((this.getDate().length==1)?'0':'')+this.getDate();
			dataText += ' de '+this.getMesExtenso().toLowerCase();
			dataText += ' de '+this.getYear();
			
		return dataText;
	};
