/**
 * jQuery.placeholder - Placeholder plugin for input fields
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2008/10/14
 *
 * @author Blair Mitchelmore
 * @version 1.0.1
 *
 **/
new function($) {
  $.fn.placeholder = function(settings) {
    settings = settings || {};
    var key = settings.dataKey || "placeholderValue";
    var attr = settings.attr || "placeholder";
    var className = settings.className || "placeholder";
    var values = settings.values || [];
    var block = settings.blockSubmit || false;
    var blank = settings.blankSubmit || false;
    var submit = settings.onSubmit || false;
    var value = settings.value || "";
    var position = settings.cursor_position || 0;

    
    return this.filter(":input").each(function(index) { 
      $.data(this, key, values[index] || $(this).attr(attr)); 
    }).each(function() {
      if ($.trim($(this).val()) === "" || $.trim($(this).val()) === $.data(this, key)) {
        $(this).addClass(className).val($.data(this, key));
        if (this.type === "password") {
          this.type = 'text';
          $(this).addClass('placeholder-password');
        }
      }
    }).focus(function() {
      if ($.trim($(this).val()) === $.data(this, key)) {
        $(this).removeClass(className).val(value)
        if ($.fn.setCursorPosition) {
          $(this).setCursorPosition(position);
        }
        if ($(this).hasClass('placeholder-password')) {
          this.type = 'password';
        }
      }
    }).blur(function() {
      if ($.trim($(this).val()) === value) {
        $(this).addClass(className).val($.data(this, key));
        if (this.type === "password") {
          this.type = 'text';
          $(this).addClass('placeholder-password');
        }
      }
    }).each(function(index, elem) {
      if (block)
        new function(e) {
          $(e.form).submit(function() {
            return $.trim($(e).val()) != $.data(e, key)
          });
        }(elem);
      else if (blank)
        new function(e) {
          $(e.form).submit(function() {
            if ($.trim($(e).val()) == $.data(e, key)) 
              $(e).removeClass(className).val("");
            return true;
          });
        }(elem);
      else if (submit)
        new function(e) { $(e.form).submit(submit); }(elem);
    });
  };
}(jQuery);
