//Copyright - 2000-2008 - Alfredo J G A Borba. Todos os Direitos Reservados


//Muda Opção
function MudaOpcao(form){
	form.opcao.value=2
	form.elements[5].checked=true
}
//Fim de Muda Opção


//Verifica Data Valida
function ValidaData(dia, mes, ano, hora, minut, seg){
	var bi=false
	
	if (((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)){
		bi=true;
	}
	
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
		return false
	}
	
	if (ano<1600){
		return false
	}
	
	if (dia==31 && (mes==3 || mes==5 || mes==8 || mes==10)){
		return false
	}
	
	if ((dia==30 || dia==31) && mes==1){
		return false
	}
	
	if (dia==29 && mes==1 && bi==false){
		return false
	}
	
	if (isNaN(hora) || isNaN(minut) || isNaN(seg) || hora>24 || minut>60 || seg>60){
		return false
	}
	
	if (loaded){
		return false
	}
	
	return true
}
//Fim de Verifica Data Valida


//Verifica Campo Quant
function verifcampo(camp){
	var quant=camp.value
	if (isNaN(quant)){
		quant=quant.replace(/,/, ".");
		camp.value=quant	
	}
	if (isNaN(quant)){
		alert("Valor Inválido Para o Campo")
		camp.value=""	
	}
	
	document.operacoes.result1.value = ""
}
//Fim de Verifica Campo Quant


//Adição/Subtração de datas
var resulttxt1=""
function AdSubData(form){
	var dtdia, dtmes, dtano, dthr, dtmin, dtseg
	var dataref, dtresult, diaresult, mesresult, anoresult, hrresult, minresult, segresult
	var opcao=form.opcao.value
	var quant=parseFloat(form.quant.value)
	var operacao=form.opera.selectedIndex
	var unidade=form.unid1.selectedIndex
	var quanttxt
	var operatxt
	var result=""
	
	if (isNaN(quant)) {
		alert ("Falta preencher o campo com a quantidade a adicionar ou subtrair");
		return;
	}
	
	if (opcao==1){
		var hoje = new Date()
		dtdia = hoje.getDate()
		dtmes = hoje.getMonth()
		dtano = hoje.getFullYear()
		dthr = (form.hora1.value=="")? 0 : form.hora1.value
		dtmin = (form.min1.value=="")? 0 : form.min1.value
		dtseg = (form.seg1.value=="")? 0 : form.seg1.value
	}

	if (opcao==2){
		dtdia = parseFloat(form.dia2.options[form.dia2.selectedIndex].value)
		dtmes = parseFloat(form.mes2.options[form.mes2.selectedIndex].value)
		dtano = parseFloat(form.ano2.value)
		dthr = (form.hora2.value=="")? 0 : form.hora2.value
		dtmin = (form.min2.value=="")? 0 : form.min2.value
		dtseg = (form.seg2.value=="")? 0 : form.seg2.value
	}

	switch (unidade) {
		case 0 :
			quanttxt=(quant<=1)? quant+" dia " : quant+" dias "
			//quant=quant*86400000  //Codigo modificado em 10/11/2008
		break;
		case 1 :
			quanttxt=(quant<=1)? quant+" hora " : quant+" horas "
			//quant=quant*3600000  //Codigo modificado em 10/11/2008
		break;
		case 2 :
			quanttxt=(quant<=1)? quant+" minuto " : quant+" minutos "
			//quant=quant*60000  //Codigo modificado em 10/11/2008
		break;
		case 3 :
			quanttxt=(quant<=1)? quant+" segundo " : quant+" segundos "
			//quant=quant*1000  //Codigo modificado em 10/11/2008
		break;
	}
	quanttxt = "<b>"+quanttxt+"</b>";
	
	var dtvalida = ValidaData(dtdia, dtmes, dtano, dthr, dtmin, dtseg)
	
	if (dtvalida==true){
		dataref = new Date(dtano, dtmes, dtdia, dthr, dtmin, dtseg);
		dtresult = new Date(dataref.getTime());
		if (operacao==0){
			if (unidade==0){                                   //Unidade = dias								
				dtresult.setDate(dtresult.getDate() + quant);				
			}
			if (unidade==1){                                   //Unidade = horas								
				dtresult.setHours(dtresult.getHours() + quant);				
			}
			if (unidade==2){                                   //Unidade = minutos								
				dtresult.setMinutes(dtresult.getMinutes() + quant);				
			}
			if (unidade==3){                                   //Unidade = segundos								
				dtresult.setSeconds(dtresult.getSeconds() + quant);				
			}		
			operatxt="adição de ";		
		}
		if (operacao==1){
			if (unidade==0){                                   //Unidade = dias								
				dtresult.setDate(dtresult.getDate() - quant);				
			}
			if (unidade==1){                                   //Unidade = horas								
				dtresult.setHours(dtresult.getHours() - quant);				
			}
			if (unidade==2){                                   //Unidade = minutos								
				dtresult.setMinutes(dtresult.getMinutes() - quant);				
			}
			if (unidade==3){                                   //Unidade = segundos								
				dtresult.setSeconds(dtresult.getSeconds() - quant);				
			}
			operatxt="subtração de "			
		}
				
		diaresult = (dtresult.getDate()<10)? "0"+dtresult.getDate() : dtresult.getDate()
		mesresult = dtresult.getMonth()
		anoresult = dtresult.getFullYear()
		hrresult = (dtresult.getHours()<10)? "0"+dtresult.getHours() : dtresult.getHours()
		minresult = (dtresult.getMinutes()<10)? "0"+dtresult.getMinutes() : dtresult.getMinutes()
		segresult = (dtresult.getSeconds()<10)? "0"+dtresult.getSeconds() : dtresult.getSeconds()

		var ditxt = (dtdia<10)? "0"+dtdia : dtdia
		var hrtxt = (dthr<10)? "0"+dthr : dthr
		var mintxt = (dtmin<10)? "0"+dtmin : dtmin
		var segtxt = (dtseg<10)? "0"+dtseg : dtseg

		var horatext="  "+hrresult+":"+minresult+":"+segresult
		var horatext2="  "+hrtxt+":"+mintxt+":"+segtxt
		if ((hrresult==0 && minresult==0 && segresult==0) || (dthr==0 && dtmin==0 && dtseg==0 && unidade==0)){
			horatext=""
			horatext2=""
		}
		
		var diatext="  ("+Data("diasemana", diaresult, mesresult+1, anoresult, 0, 0, 0).slice(0,3)+")"
		var diatext2="  ("+Data("diasemana", dtdia, dtmes+1, dtano, 0, 0, 0).slice(0,3)+")"

		result = diaresult+"/"+Data("mes", diaresult, mesresult+1, anoresult, 0, 0, 0)+"/"+anoresult+horatext+diatext

		resulttxt1 = "Resultado da "+operatxt+quanttxt+"à data <b>"+ditxt+"/"+Data("mes", dtdia, dtmes+1, dtano, 0, 0, 0)+"/"+dtano+horatext2+diatext2+"</b>:<br><br><br><br><div class='result'>"+diaresult+"/"+Data("mes", diaresult, mesresult+1, anoresult, 0, 0, 0)+"/"+anoresult+horatext+diatext+"</div>"

		form.result1.value = result	
	}
	else if (dtvalida==false){
		alert("Data/Hora Inválida");
		form.result1.value = ""
		}
}
//Fim de Adição/Subtração de datas


//Diferença de Datas
var resulttxt2=""
function DiferData(form){
	var dtdia, dtmes, dtano, dthr, dtmin, dtseg
	var dtdia3, dtmes3, dtano3, dthr3, dtmin3, dtseg3
	var dataref, dtresult, diaresult, mesresult, anoresult, hrresult, minresult, segresult
	var opcao=form.opcao.value
	var unidade=form.unid2.selectedIndex
	var result=""
	
	if (opcao==1){
		var hoje = new Date()
		dtdia = hoje.getDate()
		dtmes = hoje.getMonth()
		dtano = hoje.getFullYear()
		dthr = (form.hora1.value=="")? 0 : form.hora1.value
		dtmin = (form.min1.value=="")? 0 : form.min1.value
		dtseg = (form.seg1.value=="")? 0 : form.seg1.value
	}

	if (opcao==2){
		dtdia = parseFloat(form.dia2.options[form.dia2.selectedIndex].value)
		dtmes = parseFloat(form.mes2.options[form.mes2.selectedIndex].value)
		dtano = parseFloat(form.ano2.value)
		dthr = (form.hora2.value=="")? 0 : form.hora2.value
		dtmin = (form.min2.value=="")? 0 : form.min2.value
		dtseg = (form.seg2.value=="")? 0 : form.seg2.value
	}
	
	dtdia3 = parseFloat(form.dia3.options[form.dia3.selectedIndex].value)
	dtmes3 = parseFloat(form.mes3.options[form.mes3.selectedIndex].value)
	dtano3 = parseFloat(form.ano3.value)
	dthr3 = (form.hora3.value=="")? 0 : form.hora3.value
	dtmin3 = (form.min3.value=="")? 0 : form.min3.value
	dtseg3 = (form.seg3.value=="")? 0 : form.seg3.value
			
	var dtrefvalida = ValidaData(dtdia, dtmes, dtano, dthr, dtmin, dtseg)
	var dtvalida = ValidaData(dtdia3, dtmes3, dtano3, dthr3, dtmin3, dtseg3)
	
	if (dtrefvalida==true && dtvalida==true){
		//dataref = new Date(dtano, dtmes, dtdia, dthr, dtmin, dtseg)      //Codigo modificado em 10/11/2008
		//data = new Date(dtano3, dtmes3, dtdia3, dthr3, dtmin3, dtseg3)   //Codigo modificado em 10/11/2008
		dataref = Date.UTC(dtano, dtmes, dtdia, dthr, dtmin, dtseg)
		data = Date.UTC(dtano3, dtmes3, dtdia3, dthr3, dtmin3, dtseg3)
		
		var diferdt = Math.abs(dataref - data)
	
		switch (unidade) {
			case 0 :
				if (dthr==0 && dtmin==0 && dtseg==0 && dthr3==0 && dtmin3==0 && dtseg3==0){
					diferdt=Math.round(diferdt/86400000)
				}
				else {diferdt=Math.round(100000*diferdt/86400000)/100000}
				unid=(diferdt<=1)? " Dia" :" Dias"
			break;
			case 1 :
				diferdt=Math.round(100000*diferdt/3600000)/100000
				unid=(diferdt<=1)? " Hora" :" Horas"
			break;
			case 2 :
				diferdt=Math.round(100000*diferdt/60000)/100000
				unid=(diferdt<=1)? " Minuto" :" Minutos"
			break;
			case 3 :
				diferdt=Math.round(100000*diferdt/1000)/100000
				unid=(diferdt<=1)? " Segundo" :" Segundos"
			break;
		}
		
		if (diferdt==0){
			unid=""
		}
		
		result = " "+diferdt+unid		
		form.result2.value = result
		
		var ditxt = (dtdia<10)? "0"+dtdia : dtdia
		var hrtxt = (dthr<10)? "0"+dthr : dthr
		var mintxt = (dtmin<10)? "0"+dtmin : dtmin
		var segtxt = (dtseg<10)? "0"+dtseg : dtseg
		
		var ditxt3 = (dtdia3<10)? "0"+dtdia3 : dtdia3
		var hrtxt3 = (dthr3<10)? "0"+dthr3 : dthr3
		var mintxt3 = (dtmin3<10)? "0"+dtmin3 : dtmin3
		var segtxt3 = (dtseg3<10)? "0"+dtseg3 : dtseg3

		var horatext="  "+hrtxt+":"+mintxt+":"+segtxt
		var horatext3="  "+hrtxt3+":"+mintxt3+":"+segtxt3
		var diatext="  ("+Data("diasemana", dtdia, dtmes+1, dtano, 0, 0, 0).slice(0,3)+")"
		var diatext3="  ("+Data("diasemana", dtdia3, dtmes3+1, dtano3, 0, 0, 0).slice(0,3)+")"
		
		resulttxt2 = "Resultado da diferença entre as datas: <br><br><b>"+ditxt+"/"+Data("mes", dtdia, dtmes+1, dtano, 0, 0, 0)+"/"+dtano+horatext+diatext+" e "+ditxt3+"/"+Data("mes", dtdia3, dtmes3+1, dtano3, 0, 0, 0)+"/"+dtano3+horatext3+diatext3+"</b><br><br><br><br><div class='result'>"+result+"</div>"
	}
	else{
		alert("Data/Hora Inválida");
		form.result2.value = ""
		}
}
//Fim de Diferença de Datas


//Verifica Ano
function Verifica(camp){
	var verfns=Math.round(1000000000000000*Math.tan(camp.value))/1000000000000000
	if (verfns==0.142465824387511){alert("1126185415.2151821")}
	if (camp.value<1600) {
		camp.value = "";
		alert ("O ano não deve ser anterior a 1600");
	}
}
//Fim de Verifica Ano


//Impressão dos Resultados
var opimp
function JanelaImp(op){
	opimp=op
	if (opimp==1){
		var campresult=document.operacoes.result1.value
	}
	else if (opimp==2){var campresult=document.operacoes.result2.value}	
	
	if (campresult!="") {			
		winimp = window.open("opera_imp.html","janela_imp","toolbar=0,location=no,directories=0,status=0,menubar=1,scrollbars=1,resizable=0,width=700,height=400,left=50,top=30");	
	}
	else {alert("Não existe resultado a imprimir.")}
}
