| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 | 
							- ;(function(factory) {
 
-     if (typeof define === 'function' && define.amd) {
 
-         // AMD
 
-         define(['jquery'], factory);
 
-     } else if (typeof module === 'object' && module.exports) {
 
-         factory(require('jquery'));
 
-     } else {
 
-         // Browser globals
 
-         factory(jQuery);
 
-     }
 
- }(function($) {
 
-     /****
 
-      * Allows plugin behavior simulation in modern browsers for easier debugging. 
 
-      * When setting to true, use attribute "placeholder-x" rather than the usual "placeholder" in your inputs/textareas 
 
-      * i.e. <input type="text" placeholder-x="my placeholder text" />
 
-      */
 
-     var debugMode = false; 
 
-     // Opera Mini v7 doesn't support placeholder although its DOM seems to indicate so
 
-     var isOperaMini = Object.prototype.toString.call(window.operamini) === '[object OperaMini]';
 
-     var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini && !debugMode;
 
-     var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini && !debugMode;
 
-     var valHooks = $.valHooks;
 
-     var propHooks = $.propHooks;
 
-     var hooks;
 
-     var placeholder;
 
-     var settings = {};
 
-     if (isInputSupported && isTextareaSupported) {
 
-         placeholder = $.fn.placeholder = function() {
 
-             return this;
 
-         };
 
-         placeholder.input = true;
 
-         placeholder.textarea = true;
 
-     } else {
 
-         placeholder = $.fn.placeholder = function(options) {
 
-             var defaults = {customClass: 'placeholder'};
 
-             settings = $.extend({}, defaults, options);
 
-             return this.filter((isInputSupported ? 'textarea' : ':input') + '[' + (debugMode ? 'placeholder-x' : 'placeholder') + ']')
 
-                 .not('.'+settings.customClass)
 
-                 .not(':radio, :checkbox, :hidden')
 
-                 .bind({
 
-                     'focus.placeholder': clearPlaceholder,
 
-                     'blur.placeholder': setPlaceholder
 
-                 })
 
-                 .data('placeholder-enabled', true)
 
-                 .trigger('blur.placeholder');
 
-         };
 
-         placeholder.input = isInputSupported;
 
-         placeholder.textarea = isTextareaSupported;
 
-         hooks = {
 
-             'get': function(element) {
 
-                 var $element = $(element);
 
-                 var $passwordInput = $element.data('placeholder-password');
 
-                 if ($passwordInput) {
 
-                     return $passwordInput[0].value;
 
-                 }
 
-                 return $element.data('placeholder-enabled') && $element.hasClass(settings.customClass) ? '' : element.value;
 
-             },
 
-             'set': function(element, value) {
 
-                 var $element = $(element);
 
-                 var $replacement;
 
-                 var $passwordInput;
 
-                 if (value !== '') {
 
-                     $replacement = $element.data('placeholder-textinput');
 
-                     $passwordInput = $element.data('placeholder-password');
 
-                     if ($replacement) {
 
-                         clearPlaceholder.call($replacement[0], true, value) || (element.value = value);
 
-                         $replacement[0].value = value;
 
-                     } else if ($passwordInput) {
 
-                         clearPlaceholder.call(element, true, value) || ($passwordInput[0].value = value);
 
-                         element.value = value;
 
-                     }
 
-                 }
 
-                 if (!$element.data('placeholder-enabled')) {
 
-                     element.value = value;
 
-                     return $element;
 
-                 }
 
-                 if (value === '') {
 
-                     
 
-                     element.value = value;
 
-                     
 
-                     // Setting the placeholder causes problems if the element continues to have focus.
 
-                     if (element != safeActiveElement()) {
 
-                         // We can't use `triggerHandler` here because of dummy text/password inputs :(
 
-                         setPlaceholder.call(element);
 
-                     }
 
-                 } else {
 
-                     
 
-                     if ($element.hasClass(settings.customClass)) {
 
-                         clearPlaceholder.call(element);
 
-                     }
 
-                     element.value = value;
 
-                 }
 
-                 // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
 
-                 return $element;
 
-             }
 
-         };
 
-         if (!isInputSupported) {
 
-             valHooks.input = hooks;
 
-             propHooks.value = hooks;
 
-         }
 
-         if (!isTextareaSupported) {
 
-             valHooks.textarea = hooks;
 
-             propHooks.value = hooks;
 
-         }
 
-         $(function() {
 
-             // Look for forms
 
-             $(document).delegate('form', 'submit.placeholder', function() {
 
-                 
 
-                 // Clear the placeholder values so they don't get submitted
 
-                 var $inputs = $('.'+settings.customClass, this).each(function() {
 
-                     clearPlaceholder.call(this, true, '');
 
-                 });
 
-                 setTimeout(function() {
 
-                     $inputs.each(setPlaceholder);
 
-                 }, 10);
 
-             });
 
-         });
 
-         // Clear placeholder values upon page reload
 
-         $(window).bind('beforeunload.placeholder', function() {
 
-             var clearPlaceholders = true;
 
-             try {
 
-                 // Prevent IE javascript:void(0) anchors from causing cleared values
 
-                 if (document.activeElement.toString() === 'javascript:void(0)') {
 
-                     clearPlaceholders = false;
 
-                 }
 
-             } catch (exception) { }
 
-             if (clearPlaceholders) {
 
-                 $('.'+settings.customClass).each(function() {
 
-                     //this.value = '';
 
-                 });
 
-             }
 
-         });
 
-     }
 
-     function args(elem) {
 
-         // Return an object of element attributes
 
-         var newAttrs = {};
 
-         var rinlinejQuery = /^jQuery\d+$/;
 
-         $.each(elem.attributes, function(i, attr) {
 
-             if (attr.specified && !rinlinejQuery.test(attr.name)) {
 
-                 newAttrs[attr.name] = attr.value;
 
-             }
 
-         });
 
-         return newAttrs;
 
-     }
 
-     function clearPlaceholder(event, value) {
 
-         
 
-         var input = this;
 
-         var $input = $(this);
 
-         
 
-         if (input.value === $input.attr((debugMode ? 'placeholder-x' : 'placeholder')) && $input.hasClass(settings.customClass)) {
 
-             
 
-             input.value = '';
 
-             $input.removeClass(settings.customClass);
 
-             if ($input.data('placeholder-password')) {
 
-                 $input = $input.hide().nextAll('input[type="password"]:first').show().attr('id', $input.removeAttr('id').data('placeholder-id'));
 
-                 
 
-                 // If `clearPlaceholder` was called from `$.valHooks.input.set`
 
-                 if (event === true) {
 
-                     $input[0].value = value;
 
-                     return value;
 
-                 }
 
-                 $input.focus();
 
-             } else {
 
-                 input == safeActiveElement() && input.select();
 
-             }
 
-         }
 
-     }
 
-     function setPlaceholder(event) {
 
-         var $replacement;
 
-         var input = this;
 
-         var $input = $(this);
 
-         var id = input.id;
 
-         // If the placeholder is activated, triggering blur event (`$input.trigger('blur')`) should do nothing.
 
-         if (event && event.type === 'blur' && $input.hasClass(settings.customClass)) {
 
-             return;
 
-         }
 
-         if (input.value === '') {
 
-             if (input.type === 'password') {
 
-                 if (!$input.data('placeholder-textinput')) {
 
-                     
 
-                     try {
 
-                         $replacement = $input.clone().prop({ 'type': 'text' });
 
-                     } catch(e) {
 
-                         $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
 
-                     }
 
-                     $replacement
 
-                         .removeAttr('name')
 
-                         .data({
 
-                             'placeholder-enabled': true,
 
-                             'placeholder-password': $input,
 
-                             'placeholder-id': id
 
-                         })
 
-                         .bind('focus.placeholder', clearPlaceholder);
 
-                     $input
 
-                         .data({
 
-                             'placeholder-textinput': $replacement,
 
-                             'placeholder-id': id
 
-                         })
 
-                         .before($replacement);
 
-                 }
 
-                 input.value = '';
 
-                 $input = $input.removeAttr('id').hide().prevAll('input[type="text"]:first').attr('id', $input.data('placeholder-id')).show();
 
-             } else {
 
-                 
 
-                 var $passwordInput = $input.data('placeholder-password');
 
-                 if ($passwordInput) {
 
-                     $passwordInput[0].value = '';
 
-                     $input.attr('id', $input.data('placeholder-id')).show().nextAll('input[type="password"]:last').hide().removeAttr('id');
 
-                 }
 
-             }
 
-             $input.addClass(settings.customClass);
 
-             $input[0].value = $input.attr((debugMode ? 'placeholder-x' : 'placeholder'));
 
-         } else {
 
-             $input.removeClass(settings.customClass);
 
-         }
 
-     }
 
-     function safeActiveElement() {
 
-         // Avoid IE9 `document.activeElement` of death
 
-         try {
 
-             return document.activeElement;
 
-         } catch (exception) {}
 
-     }
 
- }));
 
- $(function(){
 
- 	$('input[placeholder], textarea[placeholder]').placeholder();
 
- });
 
 
  |