/* some functions for me!
 *
 */


(function($){
$.fn.extend( { 
    
    removeColon: function() {
        return this.each(function() {
            obj = $(this);
            obj.text(obj.text().replace(/:/i,""));
        });
   },

    
    labelHint: function() {
        return this.each(function() {
            var $obj = $(this);
            var $label = $('label[for=' + $obj.attr('id') + ']');
            $obj.val($label.text());
            $(this).fieldNeutral(); // for the clear button

            $obj.focus(function() {
                $(this).fieldValidating();
                if($(this).val() == $label.text()){
                    $(this).val(''); 
                }
       
              });

        });
    },

    labelPasswordHint: function() {
        return this.each(function() {
            var $obj = $(this);
            var $label = $('label[for=' + $obj.attr('id') + ']');
            
            $clone = $('<input type="text" />');
            $clone.attr('class',$obj.attr('class'));
            $clone.attr('id',$obj.attr('id'));
            $clone.attr('name',$obj.attr('name'));
            $clone.val($obj.val()); 
            $clone.val($label.text());

            $clone.insertBefore($obj);
            $obj.remove()
            $clone.fieldNeutral(); //for the clear button

            $clone.focus(function() {
                $newPass = $('<input type="password" />');
                $newPass.attr('class',$(this).attr('class'));
                $newPass.attr('id',$(this).attr('id'));
                $newPass.attr('name',$(this).attr('name'));
                $newPass.insertAfter($(this));
                $(this).remove();
                $newPass.select();

                $newPass.keyup(function() {
                    if(($('#id_password2').val() != 
                        $('label[for=id_password2]').text()) 
                        &&
                        ($('#id_password1').val() != 
                         $('#id_password2').val())){
                        
                        $(this).fieldInvalid("Passwords should match.");
                    
                    } else {
                        $(this).fieldValid();
                    }                    
                });

                $newPass.blur(function() {
                    if($(this).val() == ""){
                        $(this).fieldNeutral(); 
                        $(this).labelPasswordHint();
                   
                    }
                });

            
            }); 
            


        });

    },


    fieldValid: function() {
        return this.each(function() {
            var img = '<img class="validation" src="http://django_media.tps.gaorsk.com/kfbeta/img/accounts/valid.png" />' 

            $span = $('#span_'+$(this).attr('id'));
            
            $span.removeClass('invalid');
            $span.removeClass('validating');
            $span.find('img').remove();

            $span.addClass('valid');
            $span.text('');
            $span.prepend(img);

            $(this).removeClass('invalid');
            $(this).removeClass('validating');
            $(this).addClass('valid');            

            });
    },

    fieldInvalid: function(msg) {
        return this.each(function() {
            var img = '<img class="validation" src="http://django_media.tps.gaorsk.com/kfbeta/img/accounts/invalid.png" />' 

            if(!msg) msg = "The value you entered is invalid";

            $span = $('#span_'+$(this).attr('id'));
            
            $span.removeClass('valid');
            $span.removeClass('validating');
            $span.find('img').remove();

            $span.addClass('invalid');
            $span.text(msg);
            $span.prepend(img);

            $(this).removeClass('valid');
            $(this).removeClass('validating');
            $(this).addClass('invalid');
        });
    },

    fieldValidating: function() {
        return this.each(function() {
            var img = '<img class="validation" src="http://django_media.tps.gaorsk.com/kfbeta/img/accounts/validating.gif" />' 

            $span = $('#span_'+$(this).attr('id'));
            
            $span.removeClass('valid');
            $span.removeClass('invalid');
            $span.find('img').remove();

            $span.addClass('validating');
            $span.text('');
            $span.prepend(img);

            $(this).removeClass('valid');
            $(this).removeClass('invalid');
            $(this).addClass('validating');

        });
    },

    fieldNeutral: function() {
        return this.each(function() {
            $span = $('#span_'+$(this).attr('id'));
            $span.find('img').remove();
            $span.text('');

            $(this).removeClass('valid');
            $(this).removeClass('invalid');
            $(this).removeClass('validating');
        });
    },

    // http://www.reynoldsftw.com/2009/03/live-email-validation-with-jquery/
    isValidEmailAddress: function(emailAddress) {
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    } 

});
})(jQuery);



