function explodeTime(time){
  var timeStr = new String(time);
  var timePattern = /^(\d{1,2}):(\d{1,2})$/;
  
  return timeStr.match(timePattern);
}

function fillTime(timeStr){
  var timeArray = explodeTime(timeStr);
  var time = new Array();

  for (i=0; i<=1; i++){
    time[i] = new String(timeArray[i+1]);
    if (time[i].length == 1){
      time[i] = "0" + time[i];
    }
  }
  return time[0] + ":" + time[1]
}

function checkTimePattern(timeStr){
  var timeArray = explodeTime(timeStr);
  if (timeArray == null){
    return false;
  } else {
    return true;
  }
}

function isValidTime(timeStr){
  if ( checkTimePattern(timeStr) ) {
    var timeArray = explodeTime(timeStr);
    var hour   = timeArray[1];
    var minute = timeArray[2];

    if (hour < 0  || hour > 23) {
      alert("Hora deve ser maior que 0 e menor que 23");
      return false;
    }

    if (minute < 0 || minute > 59) {
      alert ("Minuto deve ser maior que 0 e menor que 59");
      return false;
    }
    return true;
    
  } else {
    alert("Hora em formato inválido, favor usar HH:MM");
    return false;
  }
}

function timeDiff(timeStrBegin, timeStrEnd){
  timeStrBegin = explodeTime(timeStrBegin);
  timeStrEnd   = explodeTime(timeStrEnd);
  
  hours   = timeStrEnd[1]  - timeStrBegin[1];
  minutes = timeStrEnd[2]  - timeStrBegin[2];
  
  while(minutes < 0){
    hours--;
    minutes += 60;
  }
  
  return fillTime(hours + ":" + minutes);
}

function timeAdd(timeStrBegin, timeStrEnd){
  timeStrBegin = explodeTime(timeStrBegin);
  timeStrEnd   = explodeTime(timeStrEnd);
  hours   = parseInt(timeStrBegin[1],10)  + parseInt(timeStrEnd[1],10);
  minutes = parseInt(timeStrBegin[2],10)  + parseInt(timeStrEnd[2],10);

  while(minutes > 60){
    hours++;
    minutes -= 60;
  }
  return fillTime(hours + ":" + minutes);  
}

function getInputTotals(){
  var inputArray = document.getElementsByTagName('input');
  var inputTotals = new Array();
  var j = 0;
  
  for (i=0; i < inputArray.length; i++){
    if (inputArray[i].name == "totals" && inputArray[i].value != "-"){
      inputTotals[j] = inputArray[i];
      j++;
    }
  }
  
  return inputTotals;
}

function getTotalOkTime(){
  var totalOkTime = '00:00';
  var inputTotals = getInputTotals() ;
  var inputTotalsLength = 0

  while(inputTotalsLength < inputTotals.length){
    totalOkTime = timeAdd(totalOkTime, inputTotals[inputTotalsLength].value);
    inputTotalsLength++;
  }
  
//  for (i=0; i<inputTotalsLength ; i++){
//    totalOkTime = timeAdd(totalOkTime, inputTotals[i].value);
//    alert(totalOkTime + ", " + inputTotals[i].value);
//  }
  
  return totalOkTime;
}

function setTotal(){
  var _in        = document.getElementById('in');
  var out_lunch  = document.getElementById('out_lunch');
  var back_lunch = document.getElementById('back_lunch');
  var out        = document.getElementById('out');
  var total      = document.getElementById('total');
  
  var grandtotal = document.getElementById('grandtotal');
  
  var semitotal = new Array(2);
  
  if (_in.value != "" && out_lunch.value != ""){
    semitotal[0] = timeDiff(_in.value, out_lunch.value);
  } else {
    semitotal[0] = '';
  }
  
  if (back_lunch.value != "" && out.value != ""){
    semitotal[1] = timeDiff(back_lunch.value, out.value);
  } else {
    semitotal[1] = '';
  }
  
  if (semitotal[0] != "" && semitotal[1] != ""){
    total.value = timeAdd(semitotal[0], semitotal[1]);
  } else {
    if (semitotal[0] != ""){
      total.value = semitotal[0];
    } else {
      total.value = semitotal[1];
    }
  }
  
  totalOkTime = getTotalOkTime();
  total      = document.getElementById('total');
  
  if(total.value != ""){
    grandtotal.value = timeAdd(total.value, totalOkTime);
  }else{
    grandtotal.value = totalOkTime;
  }
}

function setStyleById(i, p, v) {
	var n = document.getElementById(i);
	n.style[p] = v;
}

function addHour(){ 
  setStyleById("insert_hour", "display", "block");
  setStyleById("insert_menu", "display", "none");
  setStyleById("insert_form", "display", "block");
}

function cancelAddHour(){  
  setStyleById("insert_hour", "display", "none");
  setStyleById("insert_menu", "display", "block");
  setStyleById("insert_form", "display", "none");
}

function submitForm(form){
  form = document.getElementById(form);
  form.submit();
}

function sendForm(form, object){
  if(object.value == undefined){
    object = document.getElementById(object);
  }
  
  if(object.value != ""){
    submitForm(form);
  }
}

function checkPassword(){
  password = document.getElementById('password');
  password_check = document.getElementById('password_check');
  form = document.getElementById('changeUserPassword');
  
  if(password.value == password_check.value){
    form.submit();
  }else{
    alert('Senhas não conferem, favor digitar novamente');
    password.value = '';
    password_check.value = '';
  }
}
