/**
 * Revision date: 10/08/2010
 */

jQuery.fn.placeholder = function() {

  // See if natively supported
  var i = document.createElement('input');
  if(typeof(i.placeholder) !== 'undefined') {
    return false;
  }

  
  
  function inputFocusHandler() {
    var p = jQuery(this).attr('placeholder');

    // Remove placeholder class
    jQuery(this).removeClass('jq-placeholder');

    // If still placeholder
    if(jQuery(this).val() == p) {
      jQuery(this).select();
    }
  }

  function inputBlurHandler() {
    var p = jQuery(this).attr('placeholder');

    if(jQuery(this).val() == '') {
      jQuery(this).val(p).addClass('jq-placeholder');
    }
  }

  return this.each(function(){

    // Input field
    var inputField = this;

    // Prevent being attached twice
    if($(inputField).hasClass('jq-placeholder-added')) {
      return;
    }
    $(inputField).addClass('jq-placeholder-added');

    // Placeholder text
    var p = jQuery(inputField).attr('placeholder');

    // Don't bother if placeholder text blank
    if( p == '') {
      return;
    }

    if(p != '') {

      // Initially set placeholder value
      if(jQuery.trim(jQuery(inputField).val()) == '') {
        jQuery(inputField).addClass('jq-placeholder');
        jQuery(inputField).val(p);
      }

      // Focus handler
      jQuery(inputField).focus(inputFocusHandler);
      jQuery(inputField).keyup(inputFocusHandler);

      // Blur handler
      jQuery(inputField).blur(inputBlurHandler)

      // Form submit handler
      jQuery(inputField).parents('form').submit(function() {

        // If still placeholder text, submit blank
        if(jQuery(inputField).val() == p)
          jQuery(inputField).val('');
      });


    }
  });

}
