function fTimestamp(inp) {
  var str = inp.value;
  str = str.replace(/\D/g, '');
  while (str.length < 4 || (str.length % 2) == 1)
    str = '0' + str;
  str = str.replace(/(\d\d)/g, ':$1');
  str = str.replace(/^:/, '');
  inp.value = str;
}

function fCurrency(inp, sym) {
  var num = inp.value;
  var sign, pence;
  if (sym == undefined)
    sym = '£';
  num = num.toString().replace(/\$|,|£/g,'');
  if(isNaN(num))
    num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  pence = num%100;
  num = Math.floor(num/100).toString();
  if(pence<10)
    pence = "0" + pence;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
  inp.value = sym + (((sign)?'':'-') + num + '.' + pence);
}

function fNumber(inp) {
  var num = inp.value;
  num = num.toString().replace(/\$|,|£/g,'');
  if(isNaN(num))
    num = "0";
  inp.value = num;
}

function fPercentage(inp) {
  var num = inp.value;
  num = num.replace('%', '');
  inp.value = num + '%';
}

function fDate(inp) {
  var val = inp.value;
  val = val.replace("/", "");
  val = val.replace("/", "");
  if (val.length == 6) {
    var t = parseInt(val.substr(4, val.length)) || 0;
    if (t < 20) {
      rm = "20";
    }
    else {
      rm = "19";
    }
    val = val.substr(0, 2) + "/" + val.substr(2, 2) + "/" + rm + val.substr(4, val.length);
  }
  else if (val.length == 8) {
    val = val.substr(0, 2) + "/" + val.substr(2, 2) + "/" + val.substr(4, val.length);
  }
  inp.value = val;
}

function fMonthYearDate(inp) {
  var val = inp.value;
  if(val.length == 10) {
    val = val.substr(3, val.length)
  }
  val = val.replace("/", "");
  val = val.replace("/", "");
  if (val.length == 4) {
    var t = parseInt(val.substr(2, val.length)) || 0;
    if (t < 20) {
      rm = "20";
    }
    else {
      rm = "19";
    }
    val = val.substr(0, 2) + "/" + rm + val.substr(2, val.length);
  }
  else if (val.length == 6) {
    val = val.substr(0, 2) + "/" + val.substr(2, val.length);
  }
  inp.value = val;
}

function fYearDate(inp) {
  var val = inp.value;
  if(val.length == 10) {
    val = val.substr(3, val.length)
  }
  if(val.length == 7) {
    val = val.substr(3, val.length)
  }
  val = val.replace("/", "");
  val = val.replace("/", "");
  if (val.length == 2) {
    var t = parseInt(val.substr(2, val.length)) || 0;
    if (t < 20) {
      rm = "20";
    }
    else {
      rm = "19";
    }
    val = rm + val;
  }
  else if (val.length == 6) {
    val = val.substr(2, val.length);
  }
  inp.value = val;
}

function fProper(inp) {
  var val = inp.value;
  if (val != null) {
    val = val.toLowerCase().replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); });
  }
  inp.value = val;
}

function toNumber(num) {


  num = (num.toString()).replace(/[^\d^\.^-]/, '');
  if (!num)
    num = 0;
  return parseFloat(num);
}

function setCalculated(id, value, currency) {
  if (id) {
    var obj = $(id);
    if (obj) {
      obj.value = value;
      if (currency)
        fCurrency(obj);
      obj.onchange();
    }
  }
}

function getRadioValue(id) {
  var radname = radios[id];
  if (radname) {
    var rad = document.getElementsByName(radname);
    for (i = 0; i < rad.length; i++) {
      if (rad[i].checked)
        return rad[i].value;
    }
  }
  return '';
}

function setRadioValue(id, value) {
  var radname = radios[id];
  if (radname) {
    var rad = document.getElementsByName(radname);
    for (i = 0; i < rad.length; i++) {
      if (rad[i].value == value) {
        rad[i].checked = true;
        return;
      }
    }
  }
}

function getValue(id) {
  var obj = $(id);
  if (obj) {
    return obj.value;
  }
  else {
    if (radios[id]) {
      return getRadioValue(id);
    }
    else {
      return '';
    }
  }
}

function getNumberValue(id) {
  return toNumber(getValue(id));
}

function setValue(id, value) {
  var obj = $(id);
  if (obj) {
    obj.value = value;
  }
  else {
    if (radios[id]) {
      setRadioValue(id, value);      
    }
  }
}

function show(id, show) {
  var obj = $(id);
  if (obj)
    obj.style.display = ((show)?'block':'none');
}

function isNotBlank() {
  var ret = true;
  for (var i = 0; i < arguments.length; ++i) { // Are arguments 1-indexed?
    ret = ret && (getValue(arguments[i]) != '');
  }
  return ret;
}

var tags = [];
var addtags = [];
var removetags = [];

function writeTags() {
  var addstr = '';
  var removestr = '';
  var seentag = [];
  for (var i = 0; i < tags.length; i++) {
    v = tags[i];
    if (seentag[v]) {
      continue;
    }
    else {
      seentag[v] = true;
    }
    if (addtags[v] == 1) {
      addstr += ((addstr.length > 0)?',':'') + v;
    }
    if (removetags[v] == 1) {
      removestr += ((removestr.length > 0)?',':'') + v;
    }
  }
  $('addtags').value = addstr;
  $('removetags').value = removestr;

}

function addTag(str) {
  addtags[str] = 1;
  removetags[str] = 0;
  tags[tags.length] = str;
  writeTags();
}

function removeTag(str) {
  removetags[str] = 1;
  addtags[str] = 0;
  tags[tags.length] = str;
  writeTags();
}

