jQuery.fn.labelifyWWW = function(settings) {
  settings = jQuery.extend({
    text: "title",
    labelledClass: ""
  }, settings);
  var lookups = {
    title: function(input) {
      return $(input).attr("title");
    },
    label: function(input) {
      return $("label[for=" + input.id +"]").text();
    }
  };
  var lookup;
  var jQuery_labellified_elements = $(this);
  return $(this).each(function() {
    if (typeof settings.text === "string") {
      lookup = lookups[settings.text];
    } else {
      lookup = settings.text;
    };
    if (typeof lookup !== "function") { return; }
    var lookupval = lookup(this);
    if (!lookupval) { return; }

    $(this).data("label",lookup(this).replace(/\n/g,''));
    $(this).focus(function() {
      if (this.value === $(this).data("label")) {
       
        $(this).removeClass(settings.labelledClass);
         $(this).val(this.defaultValue + "http://www.");

         var field = this;

         setTimeout(function() {
             field.value = field.value;
         }, 320);
         

      }
    }).blur(function(){
      if (this.value === this.defaultValue + "http://www.") {
        this.value = $(this).data("label");
        $(this).addClass(settings.labelledClass);
      }
    });

    var removeValuesOnExit = function() {
      jQuery_labellified_elements.each(function(){
        if (this.value === $(this).data("label")) {
          this.value = this.defaultValue;
          $(this).removeClass(settings.labelledClass);
        }
      })
    };

    $(this).parents("form").submit(removeValuesOnExit);
    $(window).unload(removeValuesOnExit);

    if (this.value !== this.defaultValue) {
      return;
    }
    this.value = $(this).data("label");
    $(this).addClass(settings.labelledClass);

  });
};
