summaryrefslogtreecommitdiffstats
path: root/core/js/jquery-showpassword.js
diff options
context:
space:
mode:
authorJan-Christoph Borchardt <JanCBorchardt@fsfe.org>2011-08-12 11:26:13 +0200
committerJan-Christoph Borchardt <JanCBorchardt@fsfe.org>2011-08-12 11:26:13 +0200
commit6c4d075bd656497e793c230818c53fa085cbbbf9 (patch)
tree55aff5d2c17074056998537eb441227ff64d9cd5 /core/js/jquery-showpassword.js
parent3747ba928ff573a8c50943ac8748ec2c24cbba09 (diff)
downloadnextcloud-server-6c4d075bd656497e793c230818c53fa085cbbbf9.tar.gz
nextcloud-server-6c4d075bd656497e793c230818c53fa085cbbbf9.zip
added jquery-tipsy for nice title tooltips
Diffstat (limited to 'core/js/jquery-showpassword.js')
-rw-r--r--core/js/jquery-showpassword.js113
1 files changed, 113 insertions, 0 deletions
diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js
new file mode 100644
index 00000000000..0f4678327a3
--- /dev/null
+++ b/core/js/jquery-showpassword.js
@@ -0,0 +1,113 @@
+/*
+* @name Show Password
+* @descripton
+* @version 1.3
+* @requires Jquery 1.5
+*
+* @author Jan Jarfalk
+* @author-email jan.jarfalk@unwrongest.com
+* @author-website http://www.unwrongest.com
+*
+* @special-thanks Michel Gratton
+*
+* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
+*/
+(function($){
+ $.fn.extend({
+ showPassword: function(c) {
+
+ // Setup callback object
+ var callback = {'fn':null,'args':{}}
+ callback.fn = c;
+
+ // Clones passwords and turn the clones into text inputs
+ var cloneElement = function( element ) {
+
+ var $element = $(element);
+
+ $clone = $("<input />");
+
+ // Name added for JQuery Validation compatibility
+ // Element name is required to avoid script warning.
+ $clone.attr({
+ 'type' : 'text',
+ 'class' : $element.attr('class'),
+ 'style' : $element.attr('style'),
+ 'size' : $element.attr('size'),
+ 'name' : $element.attr('name')+'-clone',
+ 'tabindex' : $element.attr('tabindex')
+ });
+
+ return $clone;
+
+ };
+
+ // Transfers values between two elements
+ var update = function(a,b){
+ b.val(a.val());
+ };
+
+ // Shows a or b depending on checkbox
+ var setState = function( checkbox, a, b ){
+
+ if(checkbox.is(':checked')){
+ update(a,b);
+ b.show();
+ a.hide();
+ } else {
+ update(b,a);
+ b.hide();
+ a.show();
+ }
+
+ };
+
+ return this.each(function() {
+
+ var $input = $(this),
+ $checkbox = $($input.data('typetoggle'));
+
+ // Create clone
+ var $clone = cloneElement($input);
+ $clone.insertAfter($input);
+
+ // Set callback arguments
+ if(callback.fn){
+ callback.args.input = $input;
+ callback.args.checkbox = $checkbox;
+ callback.args.clone = $clone;
+ }
+
+
+
+ $checkbox.bind('click', function() {
+ setState( $checkbox, $input, $clone );
+ });
+
+ $input.bind('keyup', function() {
+ update( $input, $clone )
+ });
+
+ $clone.bind('keyup', function(){
+ update( $clone, $input );
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for keyup event
+ $input.trigger('keyup');
+
+ });
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for blur event
+ $clone.bind('blur', function() { $input.trigger('focusout'); });
+
+ setState( $checkbox, $input, $clone );
+
+ if( callback.fn ){
+ callback.fn( callback.args );
+ }
+
+ });
+ }
+ });
+})(jQuery);