// Arrays to log all our watermark data
var watermarks = new Array();
var watermarkTexts = new Array();
var watermarkClasses = new Array();
var watermarkOldClasses = new Array();
var watermarkOldButtonClicks = new Array();
var watermarkAssociatedButtons = new Array();

addLoadEvent(applyWatermarks);

function watermark(id,text,watermarkCssClass,associatedButton)
{
  // Log all the details of the watermark
  watermarks[watermarks.length] = id;
  watermarkTexts[id] = text;
  watermarkClasses[id] = watermarkCssClass;
  watermarkAssociatedButtons[id] = associatedButton;
}

function applyWatermarks()
{
    // Iterate through all the elements applying the watermark
    for(var i=0;i<watermarks.length;i++)
    {
      var id = watermarks[i];
      var elm = document.getElementById(id);
      watermarkOldClasses[id] = elm.className;
      addEvent(elm, "focus", function(){removeWatermark(id);}, false);
      addEvent(elm, "blur", function(){applyWatermark(id);}, false);
      var btn = document.getElementById(watermarkAssociatedButtons[id]);
      watermarkOldButtonClicks[id] = btn.onclick;
      btn.onclick = function(){return checkWatermark(id);};
      applyWatermark(id);
    }
}

// Check we're not trying to submit with watermark text
function checkWatermark(id)
{
  var elm = document.getElementById(id);
  if(elm.value == watermarkTexts[id])
  {
    return false;
  }
  // Call old onclick event of button
  setTimeout(watermarkOldButtonClicks[id],0);
  return true;
}

// Remove the watermark
function removeWatermark(id)
{
  var elm = document.getElementById(id);
  elm.value = "";
  elm.className = watermarkOldClasses[id];
}

// Apply the watermark
function applyWatermark(id)
{
  var elm = document.getElementById(id);
  if(elm.value == "")
  {
    elm.value = watermarkTexts[id];
    elm.className = watermarkOldClasses[id] + " " + watermarkClasses[id];
  }
}