/**
*	@name							Defaultvalue
*	@descripton						Gives value to empty inputs
*	@version						1.1
*	@requires						Jquery 1.2.6+
*
*	@author							Jan Jarfalk
*	@author-email					jan.jarfalk@unwrongest.com
*	@author-website					http://www.unwrongest.com
*
*	@licens							MIT License - http://www.opensource.org/licenses/mit-license.php
*
*	@param {String} str				The default value
*/

(function(jQuery){
     jQuery.fn.extend({
         defaultValue: function(str) {
            return this.each(function() {

				var $input			=	$(this),
					defaultValue	=	str || $input.attr('rel');


				if( $input.attr('type') == 'password' ) {
					handlePasswordInput();
				} else {
					handleTextInputs();
				}

				function handlePasswordInput(){

					// Create clone and switch
					var $clone = createClone();
					$clone.insertAfter($input);
					$input.hide();

					// Events for password fields
					$input.blur(function(){
						if( $input.val().length <= 0 ){
							$clone.show();
							$input.hide();
						}
					});

				}

				function handleTextInputs(){

					// Set current state
					setState();

					// Events for non-password fields
					$input.keypress( function () {
						if( $input.val().length > 0 ) {
							setState();
						}
					}).blur(setState).focus( function () {
						$input.val() == defaultValue && $input.val('');
					});

					// Remove default values from fields on submit
					$input.closest("form").submit(function() {
  						$input.val() == defaultValue && $input.val('');
					});

				}

				function setState(){
					val = jQuery.trim($input.val());
					if( val.length <= 0 || val == defaultValue ) {
						$input.val(defaultValue).addClass('empty');
					} else {
						$input.removeClass('empty');
					}
				}


				// Create a text clone of password fields
				function createClone(){

					var $el = jQuery("<input />").attr({
						'type'	: 'text',
						'value'	: defaultValue,
						'class'	: $input.attr('class')+' empty',
						'style'	: $input.attr('style'),
						'tabindex' : $input.attr('tabindex')
					});

					$el.focus(function(){

						// Hide text clone and show real password field
						$el.hide();
						$input.show();

						// Webkit and Moz need some extra time
						// BTW $input.show(0,function(){$input.focus();}); doesn't work.
						setTimeout(function () {
							$input.focus();
						}, 1);

					});

					return $el;
				}

            });
        }
    });
})(jQuery);
