/*
* Input Placeholder 1.0 - jQuery Plugin
*
* Copyright 2010, Graham Blache, Dan Dofter
* Dual licensed under the MIT or GPL Version 2 licenses.
*/
(function($){
  
  $.fn.input_placeholder = function(options) {

    var input = $(this);
    
    var options = $.extend({
      left: 0,
      top: 0
    },options);
    
    // Build container
    var container = $('<div><span>' + $(input).attr('data-placeholder') + '</span></div>');
    $(container).css('position','relative');

    // Position placeholder
    var placeholder = $(container).find('span');
    $(placeholder).css('position','absolute');
    $(placeholder).css('left', options.left);
    $(placeholder).css('top', options.top);

    // Style placeholder
    $(placeholder).css('font-size', $(input).css('font-size'));
    $(placeholder).css('font-family', $(input).css('font-family'));
    $(placeholder).css('font-weight', $(input).css('font-weight'));
    
    // Disable selection
    $(placeholder).css('user-select','none').css('-moz-user-select','none').css('-webkit-user-select','none');    
  
    // Hide placeholder if its been prepopulated
    if ($(input).val().length > 0) {
      $(placeholder).hide();
    }

    // Insert the container into the dom
    $(input).after(container);
    $(input).appendTo(container);
  
    // Add the placeholder class so it can be styled
    $(placeholder).addClass('placeholder');

    // Focus on input if placeholder is clicked
    $(placeholder).click(function(){
      $(input).focus();
    });
  
    // Interval, detect all changes to input
    var input_value = $(input).val();
    setInterval(function(){
      if ($(input).val() != input_value) {
        if ($.trim($(input).val()).length == 0) {
          $(this).val('');
          $(placeholder).show();
        } else {
          $(placeholder).hide();
        }
        input_value = $(input).val();
      }
    }, 50);

  }
  
})(jQuery);
