Help please! Calculo de horas em Javascript

Hi GujExperts…

Estou desenvolvendo uma página que faz cálculo de horas.

O uso é para o seguinte:
Calcular um intervalo de tempo entre HoraInicial e HoraFinal e mostrar o resultado ou seja o tempo corrido.

O problema é o seguinte:
A lógica do programa, creio eu está funcionando, mas na hora de mostrar o resultado está mostrando errado.

Ex1:
se eu coloco na HoraInicial: 17:01 e HoraFinal: 21:04
ele mostra o resultado de: 04:30 e não o certo que seria 04:03

Ex2:
mas se eu coloco na HoraInicial: 17:01 e HoraFinal: 21:14
ele mostra o resultado de: 04:13 ou seja resultado correto

conclusão:
creio que quando a HoraFinal é assim: 21:04 com um ZEROantes do minuto ele ignora e entende como se fosse assim: 21:4

Por favor galera me ajude…

d = document;
w = window;

//calculo de horas
function hora(getDiaI,getDiaII,getHoraI,getHoraII){

	diaI = getDiaI.split('/');
	diaII = getDiaII.split('/');
	
	horaI = getHoraI.split(':');
	horaII = getHoraII.split(':');
	
	var date1 = new Date(diaI[0], diaI[1], diaI[2]);//ano,mes,dia  
	var date2 = new Date(diaII[0], diaII[1], diaII[2]);//ano,mes,dia   
	
	date1.setHours(horaI[0]);   
	date1.setMinutes(horaI[1]);   

	date2.setHours(horaII[0]);   
	date2.setMinutes(horaII[1]);   
	  
	var time = date2.getTime() - date1.getTime();    
	var horas = time / 3600000;   
	
	var hrTotal = parseInt(horas, 10) + ":" + ((time % 3600000) / 60000);// mostra o resultado.......................
	
	setHora(hrTotal);
 
}

//pega data inicial
function getDataInicial(){
	var dt;
	dt = d.getElementById('dataInicio').value;	
	return dt;
}

//pega data final
function getDataFinal(){
	var dt = getDataInicial();	
	return dt;
}

//pega hora inicial
function getHoraInicial(){
	var dt = d.getElementById('horaInicio').value;	
	return dt;
}

//pega hora final
function getHoraFinal(){
	var dt = d.getElementById('horaFim').value;	
	return dt;
}

//coloca o total de horas trabalhada nos dois imputs de resultado
function setHora(arg){
	d.getElementById('horaTotalI').value = arg;
	d.getElementById('horaTotalII').value = arg;
}

//chama a função que calcula as horas
function calculaHora(){
	hora(getDataInicial(),getDataFinal(),getHoraInicial(),getHoraFinal());
} 

O construtor do Date só aceita valores numéricos, ou seja, você precisa converter os valores de string para número:

var date1 = new Date(parseInt(diaI[0], 10), parseInt(diaI[1], 10), parseInt(diaI[2], 10));//ano,mes,dia    
var date2 = new Date(parseInt(diaII[0], 10), parseInt(diaII[1], 10), parseInt(diaII[2], 10));//ano,mes,dia     

O segundo parâmetro do parseInt especifica a base. Isso é necessário pois se um valor tiver um zero à esquerda o Javascript assumirá que você está usando base octal.

Blz… Obrigado!