function CalcularRec(){
   var f = document.CalculadoraRecibo;
   Ant1 = f.LecAnt1.value;
   Ant2 = f.LecAnt2.value;
   Ant3 = f.LecAnt3.value;
   Act1 = f.LecAct1.value;
   Act2 = f.LecAct2.value;
   Act3 = f.LecAct3.value;
   Prom = f.PromMens.value;
   w=f.FechaAnt.value;
   x=f.FechaAct.value;
   if (fecha(x)){
	   if (fecha(w)){
		   dia = parseInt(w/1000000);
		   mes = parseInt((w/10000)-(dia*100))-1;
	   	   ano = parseInt(w-(dia*1000000)-((mes+1)*10000));
	   	   Fecha1=new Date(ano,mes,dia);
		   dia2 = parseInt(x/1000000);
		   mes2 = parseInt((x/10000)-(dia2*100))-1;
	   	   ano2 = parseInt(x-(dia2*1000000)-((mes2+1)*10000));
	   	   Fecha2=new Date(ano2,mes2,dia2);
		   //Fecha2=new Date();
	   } else { alert("Por favor introduzca la fechca en formato adecuado. (ej: el día 10 de febrero de 2009 es: 10022009, sólo se pueden escribir fechas entre el 1 de enero de 2009 y la actual)"); }
   }else { Fecha2=new Date();}
   if (chkw(Ant1)){
     if (chkw(Act1)){
		 if (chkw(Prom)){
			 f.FechaAct.value=Fecha2.getDate()*1000000+(Fecha2.getMonth()+1)*10000+Fecha2.getFullYear();
			 consumo=(Act1-Ant1)+(Act2-Ant2)+(Act3-Ant3);
			 f.ConsumoMed1.value=(Act1-Ant1);
			 f.ConsumoMed2.value=(Act2-Ant2);
			 f.ConsumoMed3.value=(Act3-Ant3);
			 i=precio(consumo,Prom,Fecha1,Fecha2,f);
			 j=precio(consumo,109500,Fecha1,Fecha2,f);
			 i=parseInt(i*100)/100;
			 j=parseInt(j*100)/100;
			 //f.Precio.value="$"+i;
			 //f.PrecioTxt.value="$" + j;
			 if (j<=i){
				 f.Precio.value="Su tarifa sera DAC";
				 f.PrecioTxt.value="$" + j;
			 }else {
				 f.Precio.value="$" + i;
				 f.PrecioTxt.value="Su tarifa sera 01";
			 }
		 } else { alert("Por favor introduzca el Promedio Mensual."); }
	 } else { alert("Por favor introduzca al menos una lectura actual."); }
   } else { alert("Por favor introduzca al menos una lectura anterior."); }
}
function chkw(w){
   if (isNaN(parseInt(w))){
      return false;
   } else if (w < 0){
      return false;
   }
   else{
      return true;
   }
}
function fecha(w){
	dia = parseInt(w/1000000);
	mes = parseInt((w/10000)-(dia*100));
	ano = parseInt(w-(dia*1000000)-(mes*10000));
	hoy = new Date();
	if (isNaN(parseInt(w))){
      return false;
   } else if (w < 0){
      return false;
   }else if (0 > dia > 30){
	   return false;
   }else if (0 > mes > 12){
	   return false;
   }else if (2009 > ano){
	   return false;
   }else if (ano > hoy.getFullYear()){
	   return false;
   }else if (dia>DiasMes(mes)){
	   return false;
   }else if (mes>12){
	   return false;
   }
   else{
	   return true;
   }	  
}
function precio(Consumo,Prom,Fecha1,Fecha2,f){
	ConsumoMesAnt = new Array();
	DiasMesAnt= new Array();
	PrecioMesesAnt =0;
	hoy=new Date();
	Dd1=MesDias(Fecha1.getMonth());
	Dd2=MesDias(Fecha2.getMonth());
	Dias1=Fecha1.getDate()+Dd1+Fecha1.getFullYear()*365;
	Dias2=Fecha2.getDate()+Dd2+Fecha2.getFullYear()*365;
	DiasPeriodo=Dias2-Dias1;
	ConsumoPromDia=Consumo/DiasPeriodo;
	
	if (DiasPeriodo>365){
		ConsumProm=ConsumoPromDia*365;
	}else {	ConsumProm=(Prom*12/365)*(365-DiasPeriodo)+Consumo;
	
	}
	
	NMeses=Fecha2.getMonth()+(Fecha2.getFullYear()*12)-Fecha1.getMonth()-(Fecha1.getFullYear()*12);
	if (NMeses>1){
		c=0;
		k=0;
		d=NMeses-1;
		while (c<d){
			if (c>=Fecha2.getMonth()+1){mes=12-k;}
			else {mes=Fecha2.getMonth()-k+1;} 
			DiasMesAnt[c]=DiasMes(mes);		
			c=c+1;
			k=k+1;
			if (k>=13){k=0;}
		}
		e=Fecha1.getMonth()+1;
		DiasUltimoMes=Fecha2.getDate();
		ConsumoUltimoMes=DiasUltimoMes*ConsumoPromDia;
		l=hoy.getMonth()-Fecha2.getMonth();
		PrecioUltimoMes=valor(ConsumoUltimoMes,l,ConsumProm,false,ConsumoPromDia);
		
		for (n=0;n<c;n++){			
			ConsumoMesAnt[n]=DiasMesAnt[n]*ConsumoPromDia;
			g=hoy.getMonth()-Fecha2.getMonth()+n+1;
			PrecioMesesAnt=PrecioMesesAnt+valor(ConsumoMesAnt[n],g,ConsumProm,false,ConsumoPromDia);
					
		}
		DiasPrimerMes=DiasMes(e)-Fecha1.getDate();
		ConsumoPrimerMes=DiasPrimerMes*ConsumoPromDia;
		h=NMeses;
		//f.ConsumoMed3.value=h;
		PrecioPrimerMes=valor(ConsumoPrimerMes,h,ConsumProm,true,ConsumoPromDia);
		PrecioPeriodo = PrecioUltimoMes + PrecioMesesAnt + PrecioPrimerMes;
		
	} else {
		n=hoy.getMonth()-Fecha2.getMonth();
		DiasPeriodo = Fecha2.getDate()-Fecha1.getDate();
		ConsumoPeriodo = DiasPeriodo*ConsumoPromDia;
		PrecioPeriodo = valor(ConsumoPeriodo,n,ConsumProm,true,ConsumoPromDia);
	}
	PrecioPeriodo=PrecioPeriodo*1.15;
	return PrecioPeriodo;
}

function DiasMes(Mes){
	switch (Mes){
		case 1:
		return 31;
		case 3:
		return 31;
		case 5:
		return 31;
		case 7:
		return 31;
		case 8:
		return 31;
		break;
		case 10:
		return 31;
		break;
		case 12:
		return 31;
		break;
		case 4:
		return 30;
		break;
		case 6:
		return 30;
		break;
		case 9:
		return 30;
		break;
		case 11:
		return 30;
		break;
		case 2:
		return 28;
		break;
	}
}

function valor(consumo,mes,prom,esPrimMes,ConsumoPromDia){
	Tarifa = new Array();
	Tarifa[0] = new Array(0.663,0.783,0.663,1.89,2.313,69.86,3.038); /Enero 2009/
	Tarifa[1] = new Array(0.665,0.786,0.665,1.093,2.321,69.11,2.924); /Febrero 2009/
	Tarifa[2] = new Array(0.667,0.789,0.667,1.097,2.329,68.89,2.860);/Marzo 2009/
	Tarifa[3] = new Array(0.669,0.792,0.669,1.101,2.337,69.33,2.912);/Abril 2009/
	Tarifa[4] = new Array(0.671,0.795,0.671,1.105,2.345,69.61,2.866);/Mayo 2009/
	Tarifa[5] = new Array(0.673,0.798,0.673,1.109,2.353,68.73,2.804);/Junio 2009/
	Tarifa[6] = new Array(0.675,0.801,0.675,1.113,2.361,67.96,2.809);/Julio 2009/
	Tarifa[7] = new Array(0.677,0.804,0.677,1.117,2.369,67.95,2.939);/Agosto 2009/
	Tarifa[8] = new Array(0.679,0.807,0.679,1.121,2.377,68.16,2.896);/Septiembre 2009/
	Tarifa[9] = new Array(0.681,0.81,0.681,1.125,2.384,68.53,2.943);/Octubre 2009/
	Tarifa[10] = new Array(0.683,0.813,0.683,1.129,2.393,69.53,3.085);/Noviembre 2009/
	Tarifa[11] = new Array(0.685,0.816,0.685,1.133,2.401,69.47,3.176);/Diciembre 2009/
	Tarifa[12] = new Array(0.687,0.819,0.687,1.137,2.409,69.55,3.121);/Enero 2010/
	Tarifa[13] = new Array(0.689,0.822,0.689,1.141,2.417,69.68,3.266);/Febrero 2010/
	Tarifa[14] = new Array(0.691,0.825,0.691,1.145,2.425,70.24,3.303);/Marzo 2010/
	Tarifa[15] = new Array(0.692,0.828,0.693,1.149,2.433,70.71,3.284);/Abril 2010/
	Tarifa[16] = new Array(0.695,0.831,0.695,1.153,2.441,71.06,3.194);/Mayo 2010/
	Tarifa[17] = new Array(0.697,0.834,0.697,1.157,2.449,71.17,3.201);/Junio 2010/
	a = Tarifa.length-mes-1;
	
	if (prom>3000){
		if (esPrimMes){
			b = Tarifa[a][6]*consumo;
		} else {b = Tarifa[a][5]+Tarifa[a][6]*consumo;}
	} else {
		if (ConsumoPromDia<4.666666666) {
			if (ConsumoPromDia<2.5){
				b = consumo*Tarifa[a][0];
			} else {b = (2.5*Tarifa[a][0]+(ConsumoPromDia-2.5)*Tarifa[a][1])*(consumo/ConsumoPromDia);}
		}else {b= (2.5*Tarifa[a][2]+1.666666666666*Tarifa[a][3]+(ConsumoPromDia-4.166666666666666666666)*Tarifa[a][4])*(consumo/ConsumoPromDia);}	
	}
	return b;
}

function MesDias(Mes){
	switch (Mes){
		case 0:
		return 0;
		case 1:
		return 31;
		case 2:
		return 59;
		case 3:
		return 90;
		case 4:
		return 120;
		break;
		case 5:
		return 151;
		break;
		case 6:
		return 181;
		break;
		case 7:
		return 212;
		break;
		case 8:
		return 243;
		break;
		case 9:
		return 273;
		break;
		case 10:
		return 304;
		break;
		case 11:
		return 334;
		break;
	}	
}
