(function($) {
	Cronometro = new Class({
		Implements: [Options, Events],
	
		options: {
		
		},
	
		tempo: {
			inicial: new Date(),
			final: new Date()
		},
	
		initialize: function(opcoes) {
			this.setOptions(opcoes);
		
			inicio = this.options.horaInicio.split(":");
			fim = this.options.horaFim.split(":");
		
			// Dia
			this.tempo.inicial.setDate(inicio[0]);
			this.tempo.final.setDate(fim[0]);

			// Mês
			this.tempo.inicial.setMonth(inicio[1]-1);
			this.tempo.final.setMonth(fim[1]-1);

			// Ano
			this.tempo.inicial.setFullYear(inicio[2]);
			this.tempo.final.setFullYear(fim[2]);

			// Hora
			this.tempo.inicial.setHours(inicio[3]);
			this.tempo.final.setHours(fim[3]);

			// Minuto
			this.tempo.inicial.setMinutes(inicio[4]);
			this.tempo.final.setMinutes(fim[4]);

			// Minuto
			this.tempo.inicial.setSeconds(inicio[5]);
			this.tempo.final.setSeconds(fim[5]);
		
			this.atualizaCronometro.periodical(1000, this);
			this.atualizaHora.periodical(990, this);
		},
	
		atualizaCronometro: function() {
			this.tempo.inicial.setTime(this.tempo.inicial.getTime() + 1000);
		},
	
		getHora: function() {
			var milissegundos = this.tempo.final.getTime() - this.tempo.inicial.getTime();
			var minuto = 60 * 1000;

			var minutos = (milissegundos / minuto).toInt();
			var segundos = (milissegundos % minuto).toInt() / 1000;
		
			minutos = (new String(minutos).length < 2) ? '0' + minutos : minutos;
			segundos = (new String(segundos).length < 2) ? '0' + segundos : segundos;

			this.options.hora = minutos + ':' + segundos;
		
			return this.options.hora;
		},

		atualizaHora: function() {
			this.fireEvent('update');
		}
	});
})(document.id)

