/**
 *
 * Helper functions for widgets
 *
 */

function setValue(e) {
  
  if (!e) {
    e = window.event;
  }


  var elt = e.target ? e.target : e.srcElement;
  var code = e.which ? e.which : e.keyCode;
  var key = String.fromCharCode(code);

  if (!key.match("[0-9]")) {
    return;
  }
  
  var val = elt.value.replace(" ","", "g") + key; 

  elt.value = "";
  
  while (val.length < 10) {
    val = " " + val;
  }

  elt.value = val.substring(0,10);

  return false;
}


/**
 * Increase hours
 */
function increaseH(elt, step, max) {
  
  currTime = getCurrentTime(elt);
  setTime(elt, ((currTime[0] + step < max) ? currTime[0] + step : max), currTime[1]);
}


/**
 * Decrease hours
 */
function decreaseH(elt, step) {
  
  currTime = getCurrentTime(elt);
  setTime(elt, ((currTime[0] > step) ? currTime[0] - step : 0), currTime[1]);
}


/**
 * Increase minutes
 */
function increaseM(elt, step) {
  
  currTime = getCurrentTime(elt);
  
  setTime(elt, currTime[0],
          ((currTime[1] + step < 60) ? step + currTime[1] : currTime[1]));
}


/**
 * Decrease minutes
 */
function decreaseM(elt, step) {
  
  currTime = getCurrentTime(elt);
  
  setTime(elt, currTime[0], (currTime[1] > step) ? currTime[1] - step: 0);
}


/**
 * Set the time for the element.
 */
function setTime(elt, h, m) {
  
  elt.value = ((h < 10) ? "0" + h : h) + ":" + ((m < 10) ? "0" + m : m);
}


/**
 * Set the time on blur. This will generate a proper hour-minute string
 * Even if no colon symbol was used.
 */
function setTimeOnBlur(elt){

  if( elt.value.indexOf(":") == -1 ) {
    h = elt.value
    elt.value = ((h < 10) ? "0" + h : h) + ":00"
  }
}

 
/**
 * Return the current time for the given imput element.
 */
function getCurrentTime(elt) {
  
  var currTime = new Array();
    
  var currH = elt.value.split(':')[0];
  var currM = elt.value.split(':')[1];
  
  currH ? (currTime[0] = parseInt(currH, 10)) : (currTime[0] = 0);
  currM ? (currTime[1] = parseInt(currM, 10)) : (currTime[1] = 0);
  
  return currTime;
}


/**
 * Onchange handler for currency fields
 */
function setCurrencyField(elt, loc, partone, parttwo) {
    if (loc == "left") {
        elt.value = partone.value+"."+parttwo.value;
    }
    if (loc == "right") {
        elt.value = parttwo.value+"."+partone.value;
    }
    elt.value = elt.value.replace(/\s/g,'');
    elt.value = elt.value.replace(/^0+/,'');
}
