function getSquareFeetSpans() {
  return getElementsByNameAndClass("span", "square_feet");
}

function getElementsByNameAndClass(n, c) {
  var tags = document.getElementsByTagName(n);
  var filtered = [];
  var str = "";
  for (var i = 0; i < tags.length; i++) {
    if (tags[i].className == c) {
      filtered[filtered.length] = tags[i];
    }
  }
  return filtered;
}

function markSquareFeetSpans() {
  var sqs = getSquareFeetSpans();
  for (var i = 0; i < sqs.length; i++) {
    sqs[i].onmouseover = squareFeetMouseOver;
    sqs[i].onmouseout = squareFeetMouseOut;
    sqs[i].onmouseup = squareFeetMouseUp;
  }
}

function toggleSqftSqm(obj) {
  var str = obj.innerHTML;
  num = "" + getNumber(str);
  if (hasSqft(str)) {
    obj.sqft = num;
    str = str.replace("Sq.ft", "Sq.m");
    str = str.replace(num, sqftToSqm(num));

  } else if (hasSqm(str)) {
    str = str.replace("Sq.m", "Sq.ft");
    str = str.replace(num, obj.sqft);

  }// else... don't know what we got
  else {
    alert(str);
  }

  obj.innerHTML = str;
}

function hasSqft(str) {
  return (str.search(/Sq\.ft/) != -1);
}

function hasSqm(str) {
  return (str.search(/Sq\.m/) != -1);
}

function getNumber(str) {
  return str.match(/\d+/);
}

function sqftToSqm(sqft) {
  return Math.round(parseInt(sqft) * 0.0929);
}

function sqmToSqft(sqm) {
  return Math.round(parseInt(sqm) / 0.0929);
}

function squareFeetMouseOver() {
  this.style.textDecoration = "underline";
  this.style.cursor = "pointer";
}

function squareFeetMouseOut() {
  this.style.textDecoration = "";
  this.style.cursor = "";
}

function squareFeetMouseUp() {
  toggleSqftSqm(this);
}

markSquareFeetSpans();

