From d50abec492bf0803eea98707392148db13c1affe Mon Sep 17 00:00:00 2001
From: Yasin <mohammed-yasin.rahman@lip6.fr>
Date: Fri, 9 Aug 2013 13:31:17 +0200
Subject: [PATCH] Moved css,js and img to /portal/static dir

---
 portal/static/jquery.validate.js         | 1222 ++++++++++++++++++++++
 portal/static/my_account.common.css      |  230 ++++
 portal/static/my_account.edit_profile.js |  198 ++++
 portal/static/my_account.profile.css     |  173 +++
 portal/static/my_account.register.js     |   56 +
 portal/static/ques_icon.png              |  Bin 0 -> 102623 bytes
 portal/templates/my_account.html         |   14 +-
 third-party/jquery/js/jquery.validate.js | 1222 ++++++++++++++++++++++
 8 files changed, 3108 insertions(+), 7 deletions(-)
 create mode 100644 portal/static/jquery.validate.js
 create mode 100644 portal/static/my_account.common.css
 create mode 100644 portal/static/my_account.edit_profile.js
 create mode 100644 portal/static/my_account.profile.css
 create mode 100644 portal/static/my_account.register.js
 create mode 100644 portal/static/ques_icon.png
 create mode 100644 third-party/jquery/js/jquery.validate.js

diff --git a/portal/static/jquery.validate.js b/portal/static/jquery.validate.js
new file mode 100644
index 00000000..51eb2ef5
--- /dev/null
+++ b/portal/static/jquery.validate.js
@@ -0,0 +1,1222 @@
+/**
+ * jQuery Validation Plugin 1.11.0pre
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright 2013 Jörn Zaefferer
+ * Released under the MIT license:
+ *   http://www.opensource.org/licenses/mit-license.php
+ */
+
+(function($) {
+
+$.extend($.fn, {
+    // http://docs.jquery.com/Plugins/Validation/validate
+    validate: function( options ) {
+
+        // if nothing is selected, return nothing; can't chain anyway
+        if ( !this.length ) {
+            if ( options && options.debug && window.console ) {
+                console.warn( "Nothing selected, can't validate, returning nothing." );
+            }
+            return;
+        }
+
+        // check if a validator for this form was already created
+        var validator = $.data( this[0], "validator" );
+        if ( validator ) {
+            return validator;
+        }
+
+        // Add novalidate tag if HTML5.
+        this.attr( "novalidate", "novalidate" );
+
+        validator = new $.validator( options, this[0] );
+        $.data( this[0], "validator", validator );
+
+        if ( validator.settings.onsubmit ) {
+
+            this.validateDelegate( ":submit", "click", function( event ) {
+                if ( validator.settings.submitHandler ) {
+                    validator.submitButton = event.target;
+                }
+                // allow suppressing validation by adding a cancel class to the submit button
+                if ( $(event.target).hasClass("cancel") ) {
+                    validator.cancelSubmit = true;
+                }
+            });
+
+            // validate the form on submit
+            this.submit( function( event ) {
+                if ( validator.settings.debug ) {
+                    // prevent form submit to be able to see console output
+                    event.preventDefault();
+                }
+                function handle() {
+                    var hidden;
+                    if ( validator.settings.submitHandler ) {
+                        if ( validator.submitButton ) {
+                            // insert a hidden input as a replacement for the missing submit button
+                            hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
+                        }
+                        validator.settings.submitHandler.call( validator, validator.currentForm, event );
+                        if ( validator.submitButton ) {
+                            // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+                            hidden.remove();
+                        }
+                        return false;
+                    }
+                    return true;
+                }
+
+                // prevent submit for invalid forms or custom submit handlers
+                if ( validator.cancelSubmit ) {
+                    validator.cancelSubmit = false;
+                    return handle();
+                }
+                if ( validator.form() ) {
+                    if ( validator.pendingRequest ) {
+                        validator.formSubmitted = true;
+                        return false;
+                    }
+                    return handle();
+                } else {
+                    validator.focusInvalid();
+                    return false;
+                }
+            });
+        }
+
+        return validator;
+    },
+    // http://docs.jquery.com/Plugins/Validation/valid
+    valid: function() {
+        if ( $(this[0]).is("form")) {
+            return this.validate().form();
+        } else {
+            var valid = true;
+            var validator = $(this[0].form).validate();
+            this.each(function() {
+                valid &= validator.element(this);
+            });
+            return valid;
+        }
+    },
+    // attributes: space seperated list of attributes to retrieve and remove
+    removeAttrs: function( attributes ) {
+        var result = {},
+            $element = this;
+        $.each(attributes.split(/\s/), function( index, value ) {
+            result[value] = $element.attr(value);
+            $element.removeAttr(value);
+        });
+        return result;
+    },
+    // http://docs.jquery.com/Plugins/Validation/rules
+    rules: function( command, argument ) {
+        var element = this[0];
+
+        if ( command ) {
+            var settings = $.data(element.form, "validator").settings;
+            var staticRules = settings.rules;
+            var existingRules = $.validator.staticRules(element);
+            switch(command) {
+            case "add":
+                $.extend(existingRules, $.validator.normalizeRule(argument));
+                staticRules[element.name] = existingRules;
+                if ( argument.messages ) {
+                    settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+                }
+                break;
+            case "remove":
+                if ( !argument ) {
+                    delete staticRules[element.name];
+                    return existingRules;
+                }
+                var filtered = {};
+                $.each(argument.split(/\s/), function( index, method ) {
+                    filtered[method] = existingRules[method];
+                    delete existingRules[method];
+                });
+                return filtered;
+            }
+        }
+
+        var data = $.validator.normalizeRules(
+        $.extend(
+            {},
+            $.validator.classRules(element),
+            $.validator.attributeRules(element),
+            $.validator.dataRules(element),
+            $.validator.staticRules(element)
+        ), element);
+
+        // make sure required is at front
+        if ( data.required ) {
+            var param = data.required;
+            delete data.required;
+            data = $.extend({required: param}, data);
+        }
+
+        return data;
+    }
+});
+
+// Custom selectors
+$.extend($.expr[":"], {
+    // http://docs.jquery.com/Plugins/Validation/blank
+    blank: function( a ) { return !$.trim("" + a.value); },
+    // http://docs.jquery.com/Plugins/Validation/filled
+    filled: function( a ) { return !!$.trim("" + a.value); },
+    // http://docs.jquery.com/Plugins/Validation/unchecked
+    unchecked: function( a ) { return !a.checked; }
+});
+
+// constructor for validator
+$.validator = function( options, form ) {
+    this.settings = $.extend( true, {}, $.validator.defaults, options );
+    this.currentForm = form;
+    this.init();
+};
+
+$.validator.format = function( source, params ) {
+    if ( arguments.length === 1 ) {
+        return function() {
+            var args = $.makeArray(arguments);
+            args.unshift(source);
+            return $.validator.format.apply( this, args );
+        };
+    }
+    if ( arguments.length > 2 && params.constructor !== Array  ) {
+        params = $.makeArray(arguments).slice(1);
+    }
+    if ( params.constructor !== Array ) {
+        params = [ params ];
+    }
+    $.each(params, function( i, n ) {
+        source = source.replace( new RegExp("\\{" + i + "\\}", "g"), function() {
+            return n;
+        });
+    });
+    return source;
+};
+
+$.extend($.validator, {
+
+    defaults: {
+        messages: {},
+        groups: {},
+        rules: {},
+        errorClass: "error",
+        validClass: "valid",
+        errorElement: "label",
+        focusInvalid: true,
+        errorContainer: $([]),
+        errorLabelContainer: $([]),
+        onsubmit: true,
+        ignore: ":hidden",
+        ignoreTitle: false,
+        onfocusin: function( element, event ) {
+            this.lastActive = element;
+
+            // hide error label and remove error class on focus if enabled
+            if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+                if ( this.settings.unhighlight ) {
+                    this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+                }
+                this.addWrapper(this.errorsFor(element)).hide();
+            }
+        },
+        onfocusout: function( element, event ) {
+            if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
+                this.element(element);
+            }
+        },
+        onkeyup: function( element, event ) {
+            if ( event.which === 9 && this.elementValue(element) === "" ) {
+                return;
+            } else if ( element.name in this.submitted || element === this.lastElement ) {
+                this.element(element);
+            }
+        },
+        onclick: function( element, event ) {
+            // click on selects, radiobuttons and checkboxes
+            if ( element.name in this.submitted ) {
+                this.element(element);
+            }
+            // or option elements, check parent select in that case
+            else if ( element.parentNode.name in this.submitted ) {
+                this.element(element.parentNode);
+            }
+        },
+        highlight: function( element, errorClass, validClass ) {
+            if ( element.type === "radio" ) {
+                this.findByName(element.name).addClass(errorClass).removeClass(validClass);
+            } else {
+                $(element).addClass(errorClass).removeClass(validClass);
+            }
+        },
+        unhighlight: function( element, errorClass, validClass ) {
+            if ( element.type === "radio" ) {
+                this.findByName(element.name).removeClass(errorClass).addClass(validClass);
+            } else {
+                $(element).removeClass(errorClass).addClass(validClass);
+            }
+        }
+    },
+
+    // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+    setDefaults: function( settings ) {
+        $.extend( $.validator.defaults, settings );
+    },
+
+    messages: {
+        required: "This field is required.",
+        remote: "Please fix this field.",
+        email: "Please enter a valid email address.",
+        url: "Please enter a valid URL.",
+        date: "Please enter a valid date.",
+        dateISO: "Please enter a valid date (ISO).",
+        number: "Please enter a valid number.",
+        digits: "Please enter only digits.",
+        creditcard: "Please enter a valid credit card number.",
+        equalTo: "Please enter the same value again.",
+        maxlength: $.validator.format("Please enter no more than {0} characters."),
+        minlength: $.validator.format("Please enter at least {0} characters."),
+        rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
+        range: $.validator.format("Please enter a value between {0} and {1}."),
+        max: $.validator.format("Please enter a value less than or equal to {0}."),
+        min: $.validator.format("Please enter a value greater than or equal to {0}.")
+    },
+
+    autoCreateRanges: false,
+
+    prototype: {
+
+        init: function() {
+            this.labelContainer = $(this.settings.errorLabelContainer);
+            this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
+            this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+            this.submitted = {};
+            this.valueCache = {};
+            this.pendingRequest = 0;
+            this.pending = {};
+            this.invalid = {};
+            this.reset();
+
+            var groups = (this.groups = {});
+            $.each(this.settings.groups, function( key, value ) {
+                if ( typeof value === "string" ) {
+                    value = value.split(/\s/);
+                }
+                $.each(value, function( index, name ) {
+                    groups[name] = key;
+                });
+            });
+            var rules = this.settings.rules;
+            $.each(rules, function( key, value ) {
+                rules[key] = $.validator.normalizeRule(value);
+            });
+
+            function delegate(event) {
+                var validator = $.data(this[0].form, "validator"),
+                    eventType = "on" + event.type.replace(/^validate/, "");
+                if ( validator.settings[eventType] ) {
+                    validator.settings[eventType].call(validator, this[0], event);
+                }
+            }
+            $(this.currentForm)
+                .validateDelegate(":text, [type='password'], [type='file'], select, textarea, " +
+                    "[type='number'], [type='search'] ,[type='tel'], [type='url'], " +
+                    "[type='email'], [type='datetime'], [type='date'], [type='month'], " +
+                    "[type='week'], [type='time'], [type='datetime-local'], " +
+                    "[type='range'], [type='color'] ",
+                    "focusin focusout keyup", delegate)
+                .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate);
+
+            if ( this.settings.invalidHandler ) {
+                $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+            }
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/form
+        form: function() {
+            this.checkForm();
+            $.extend(this.submitted, this.errorMap);
+            this.invalid = $.extend({}, this.errorMap);
+            if ( !this.valid() ) {
+                $(this.currentForm).triggerHandler("invalid-form", [this]);
+            }
+            this.showErrors();
+            return this.valid();
+        },
+
+        checkForm: function() {
+            this.prepareForm();
+            for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
+                this.check( elements[i] );
+            }
+            return this.valid();
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/element
+        element: function( element ) {
+            element = this.validationTargetFor( this.clean( element ) );
+            this.lastElement = element;
+            this.prepareElement( element );
+            this.currentElements = $(element);
+            var result = this.check( element ) !== false;
+            if ( result ) {
+                delete this.invalid[element.name];
+            } else {
+                this.invalid[element.name] = true;
+            }
+            if ( !this.numberOfInvalids() ) {
+                // Hide error containers on last error
+                this.toHide = this.toHide.add( this.containers );
+            }
+            this.showErrors();
+            return result;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+        showErrors: function( errors ) {
+            if ( errors ) {
+                // add items to error list and map
+                $.extend( this.errorMap, errors );
+                this.errorList = [];
+                for ( var name in errors ) {
+                    this.errorList.push({
+                        message: errors[name],
+                        element: this.findByName(name)[0]
+                    });
+                }
+                // remove items from success list
+                this.successList = $.grep( this.successList, function( element ) {
+                    return !(element.name in errors);
+                });
+            }
+            if ( this.settings.showErrors ) {
+                this.settings.showErrors.call( this, this.errorMap, this.errorList );
+            } else {
+                this.defaultShowErrors();
+            }
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+        resetForm: function() {
+            if ( $.fn.resetForm ) {
+                $(this.currentForm).resetForm();
+            }
+            this.submitted = {};
+            this.lastElement = null;
+            this.prepareForm();
+            this.hideErrors();
+            this.elements().removeClass( this.settings.errorClass ).removeData( "previousValue" );
+        },
+
+        numberOfInvalids: function() {
+            return this.objectLength(this.invalid);
+        },
+
+        objectLength: function( obj ) {
+            var count = 0;
+            for ( var i in obj ) {
+                count++;
+            }
+            return count;
+        },
+
+        hideErrors: function() {
+            this.addWrapper( this.toHide ).hide();
+        },
+
+        valid: function() {
+            return this.size() === 0;
+        },
+
+        size: function() {
+            return this.errorList.length;
+        },
+
+        focusInvalid: function() {
+            if ( this.settings.focusInvalid ) {
+                try {
+                    $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
+                    .filter(":visible")
+                    .focus()
+                    // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+                    .trigger("focusin");
+                } catch(e) {
+                    // ignore IE throwing errors when focusing hidden elements
+                }
+            }
+        },
+
+        findLastActive: function() {
+            var lastActive = this.lastActive;
+            return lastActive && $.grep(this.errorList, function( n ) {
+                return n.element.name === lastActive.name;
+            }).length === 1 && lastActive;
+        },
+
+        elements: function() {
+            var validator = this,
+                rulesCache = {};
+
+            // select all valid inputs inside the form (no submit or reset buttons)
+            return $(this.currentForm)
+            .find("input, select, textarea")
+            .not(":submit, :reset, :image, [disabled]")
+            .not( this.settings.ignore )
+            .filter(function() {
+                if ( !this.name ) {
+                    if ( window.console ) {
+                        console.error( "%o has no name assigned", this );
+                    }
+                    throw new Error( "Failed to validate, found an element with no name assigned. See console for element reference." );
+                }
+
+                // select only the first element for each name, and only those with rules specified
+                if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {
+                    return false;
+                }
+
+                rulesCache[this.name] = true;
+                return true;
+            });
+        },
+
+        clean: function( selector ) {
+            return $(selector)[0];
+        },
+
+        errors: function() {
+            var errorClass = this.settings.errorClass.replace(" ", ".");
+            return $(this.settings.errorElement + "." + errorClass, this.errorContext);
+        },
+
+        reset: function() {
+            this.successList = [];
+            this.errorList = [];
+            this.errorMap = {};
+            this.toShow = $([]);
+            this.toHide = $([]);
+            this.currentElements = $([]);
+        },
+
+        prepareForm: function() {
+            this.reset();
+            this.toHide = this.errors().add( this.containers );
+        },
+
+        prepareElement: function( element ) {
+            this.reset();
+            this.toHide = this.errorsFor(element);
+        },
+
+        elementValue: function( element ) {
+            var type = $(element).attr("type"),
+                val = $(element).val();
+
+            if ( type === "radio" || type === "checkbox" ) {
+                return $("input[name='" + $(element).attr("name") + "']:checked").val();
+            }
+
+            if ( typeof val === "string" ) {
+                return val.replace(/\r/g, "");
+            }
+            return val;
+        },
+
+        check: function( element ) {
+            element = this.validationTargetFor( this.clean( element ) );
+
+            var rules = $(element).rules();
+            var dependencyMismatch = false;
+            var val = this.elementValue(element);
+            var result;
+
+            for (var method in rules ) {
+                var rule = { method: method, parameters: rules[method] };
+                try {
+
+                    result = $.validator.methods[method].call( this, val, element, rule.parameters );
+
+                    // if a method indicates that the field is optional and therefore valid,
+                    // don't mark it as valid when there are no other rules
+                    if ( result === "dependency-mismatch" ) {
+                        dependencyMismatch = true;
+                        continue;
+                    }
+                    dependencyMismatch = false;
+
+                    if ( result === "pending" ) {
+                        this.toHide = this.toHide.not( this.errorsFor(element) );
+                        return;
+                    }
+
+                    if ( !result ) {
+                        this.formatAndAdd( element, rule );
+                        return false;
+                    }
+                } catch(e) {
+                    if ( this.settings.debug && window.console ) {
+                        console.log( "Exception occured when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
+                    }
+                    throw e;
+                }
+            }
+            if ( dependencyMismatch ) {
+                return;
+            }
+            if ( this.objectLength(rules) ) {
+                this.successList.push(element);
+            }
+            return true;
+        },
+
+        // return the custom message for the given element and validation method
+        // specified in the element's HTML5 data attribute
+        customDataMessage: function( element, method ) {
+            return $(element).data("msg-" + method.toLowerCase()) || (element.attributes && $(element).attr("data-msg-" + method.toLowerCase()));
+        },
+
+        // return the custom message for the given element name and validation method
+        customMessage: function( name, method ) {
+            var m = this.settings.messages[name];
+            return m && (m.constructor === String ? m : m[method]);
+        },
+
+        // return the first defined argument, allowing empty strings
+        findDefined: function() {
+            for(var i = 0; i < arguments.length; i++) {
+                if ( arguments[i] !== undefined ) {
+                    return arguments[i];
+                }
+            }
+            return undefined;
+        },
+
+        defaultMessage: function( element, method ) {
+            return this.findDefined(
+                this.customMessage( element.name, method ),
+                this.customDataMessage( element, method ),
+                // title is never undefined, so handle empty string as undefined
+                !this.settings.ignoreTitle && element.title || undefined,
+                $.validator.messages[method],
+                "<strong>Warning: No message defined for " + element.name + "</strong>"
+            );
+        },
+
+        formatAndAdd: function( element, rule ) {
+            var message = this.defaultMessage( element, rule.method ),
+                theregex = /\$?\{(\d+)\}/g;
+            if ( typeof message === "function" ) {
+                message = message.call(this, rule.parameters, element);
+            } else if (theregex.test(message)) {
+                message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
+            }
+            this.errorList.push({
+                message: message,
+                element: element
+            });
+
+            this.errorMap[element.name] = message;
+            this.submitted[element.name] = message;
+        },
+
+        addWrapper: function( toToggle ) {
+            if ( this.settings.wrapper ) {
+                toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+            }
+            return toToggle;
+        },
+
+        defaultShowErrors: function() {
+            var i, elements;
+            for ( i = 0; this.errorList[i]; i++ ) {
+                var error = this.errorList[i];
+                if ( this.settings.highlight ) {
+                    this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+                }
+                this.showLabel( error.element, error.message );
+            }
+            if ( this.errorList.length ) {
+                this.toShow = this.toShow.add( this.containers );
+            }
+            if ( this.settings.success ) {
+                for ( i = 0; this.successList[i]; i++ ) {
+                    this.showLabel( this.successList[i] );
+                }
+            }
+            if ( this.settings.unhighlight ) {
+                for ( i = 0, elements = this.validElements(); elements[i]; i++ ) {
+                    this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+                }
+            }
+            this.toHide = this.toHide.not( this.toShow );
+            this.hideErrors();
+            this.addWrapper( this.toShow ).show();
+        },
+
+        validElements: function() {
+            return this.currentElements.not(this.invalidElements());
+        },
+
+        invalidElements: function() {
+            return $(this.errorList).map(function() {
+                return this.element;
+            });
+        },
+
+        showLabel: function( element, message ) {
+            var label = this.errorsFor( element );
+            if ( label.length ) {
+                // refresh error/success class
+                label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
+
+                // check if we have a generated label, replace the message then
+                if ( label.attr("generated") ) {
+                    label.html(message);
+                }
+            } else {
+                // create label
+                label = $("<" + this.settings.errorElement + "/>")
+                    .attr({"for":  this.idOrName(element), generated: true})
+                    .addClass(this.settings.errorClass)
+                    .html(message || "");
+                if ( this.settings.wrapper ) {
+                    // make sure the element is visible, even in IE
+                    // actually showing the wrapped element is handled elsewhere
+                    label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+                }
+                if ( !this.labelContainer.append(label).length ) {
+                    if ( this.settings.errorPlacement ) {
+                        this.settings.errorPlacement(label, $(element) );
+                    } else {
+                        label.insertAfter(element);
+                    }
+                }
+            }
+            if ( !message && this.settings.success ) {
+                label.text("");
+                if ( typeof this.settings.success === "string" ) {
+                    label.addClass( this.settings.success );
+                } else {
+                    this.settings.success( label, element );
+                }
+            }
+            this.toShow = this.toShow.add(label);
+        },
+
+        errorsFor: function( element ) {
+            var name = this.idOrName(element);
+            return this.errors().filter(function() {
+                return $(this).attr("for") === name;
+            });
+        },
+
+        idOrName: function( element ) {
+            return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+        },
+
+        validationTargetFor: function( element ) {
+            // if radio/checkbox, validate first element in group instead
+            if ( this.checkable(element) ) {
+                element = this.findByName( element.name ).not(this.settings.ignore)[0];
+            }
+            return element;
+        },
+
+        checkable: function( element ) {
+            return (/radio|checkbox/i).test(element.type);
+        },
+
+        findByName: function( name ) {
+            return $(this.currentForm).find("[name='" + name + "']");
+        },
+
+        getLength: function( value, element ) {
+            switch( element.nodeName.toLowerCase() ) {
+            case "select":
+                return $("option:selected", element).length;
+            case "input":
+                if ( this.checkable( element) ) {
+                    return this.findByName(element.name).filter(":checked").length;
+                }
+            }
+            return value.length;
+        },
+
+        depend: function( param, element ) {
+            return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;
+        },
+
+        dependTypes: {
+            "boolean": function( param, element ) {
+                return param;
+            },
+            "string": function( param, element ) {
+                return !!$(param, element.form).length;
+            },
+            "function": function( param, element ) {
+                return param(element);
+            }
+        },
+
+        optional: function( element ) {
+            var val = this.elementValue(element);
+            return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
+        },
+
+        startRequest: function( element ) {
+            if ( !this.pending[element.name] ) {
+                this.pendingRequest++;
+                this.pending[element.name] = true;
+            }
+        },
+
+        stopRequest: function( element, valid ) {
+            this.pendingRequest--;
+            // sometimes synchronization fails, make sure pendingRequest is never < 0
+            if ( this.pendingRequest < 0 ) {
+                this.pendingRequest = 0;
+            }
+            delete this.pending[element.name];
+            if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
+                $(this.currentForm).submit();
+                this.formSubmitted = false;
+            } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {
+                $(this.currentForm).triggerHandler("invalid-form", [this]);
+                this.formSubmitted = false;
+            }
+        },
+
+        previousValue: function( element ) {
+            return $.data(element, "previousValue") || $.data(element, "previousValue", {
+                old: null,
+                valid: true,
+                message: this.defaultMessage( element, "remote" )
+            });
+        }
+
+    },
+
+    classRuleSettings: {
+        required: {required: true},
+        email: {email: true},
+        url: {url: true},
+        date: {date: true},
+        dateISO: {dateISO: true},
+        number: {number: true},
+        digits: {digits: true},
+        creditcard: {creditcard: true}
+    },
+
+    addClassRules: function( className, rules ) {
+        if ( className.constructor === String ) {
+            this.classRuleSettings[className] = rules;
+        } else {
+            $.extend(this.classRuleSettings, className);
+        }
+    },
+
+    classRules: function( element ) {
+        var rules = {};
+        var classes = $(element).attr("class");
+        if ( classes ) {
+            $.each(classes.split(" "), function() {
+                if ( this in $.validator.classRuleSettings ) {
+                    $.extend(rules, $.validator.classRuleSettings[this]);
+                }
+            });
+        }
+        return rules;
+    },
+
+    attributeRules: function( element ) {
+        var rules = {};
+        var $element = $(element);
+
+        for (var method in $.validator.methods) {
+            var value;
+
+            // support for <input required> in both html5 and older browsers
+            if ( method === "required" ) {
+                value = $element.get(0).getAttribute(method);
+                // Some browsers return an empty string for the required attribute
+                // and non-HTML5 browsers might have required="" markup
+                if ( value === "" ) {
+                    value = true;
+                }
+                // force non-HTML5 browsers to return bool
+                value = !!value;
+            } else {
+                value = $element.attr(method);
+            }
+
+            if ( value ) {
+                rules[method] = value;
+            } else if ( $element[0].getAttribute("type") === method ) {
+                rules[method] = true;
+            }
+        }
+
+        // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
+        if ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) {
+            delete rules.maxlength;
+        }
+
+        return rules;
+    },
+
+    dataRules: function( element ) {
+        var method, value,
+            rules = {}, $element = $(element);
+        for (method in $.validator.methods) {
+            value = $element.data("rule-" + method.toLowerCase());
+            if ( value !== undefined ) {
+                rules[method] = value;
+            }
+        }
+        return rules;
+    },
+
+    staticRules: function( element ) {
+        var rules = {};
+        var validator = $.data(element.form, "validator");
+        if ( validator.settings.rules ) {
+            rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+        }
+        return rules;
+    },
+
+    normalizeRules: function( rules, element ) {
+        // handle dependency check
+        $.each(rules, function( prop, val ) {
+            // ignore rule when param is explicitly false, eg. required:false
+            if ( val === false ) {
+                delete rules[prop];
+                return;
+            }
+            if ( val.param || val.depends ) {
+                var keepRule = true;
+                switch (typeof val.depends) {
+                case "string":
+                    keepRule = !!$(val.depends, element.form).length;
+                    break;
+                case "function":
+                    keepRule = val.depends.call(element, element);
+                    break;
+                }
+                if ( keepRule ) {
+                    rules[prop] = val.param !== undefined ? val.param : true;
+                } else {
+                    delete rules[prop];
+                }
+            }
+        });
+
+        // evaluate parameters
+        $.each(rules, function( rule, parameter ) {
+            rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
+        });
+
+        // clean number parameters
+        $.each(["minlength", "maxlength", "min", "max"], function() {
+            if ( rules[this] ) {
+                rules[this] = Number(rules[this]);
+            }
+        });
+        $.each(["rangelength", "range"], function() {
+            var parts;
+            if ( rules[this] ) {
+                if ( $.isArray(rules[this]) ) {
+                    rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
+                } else if ( typeof rules[this] === "string" ) {
+                    parts = rules[this].split(/[\s,]+/);
+                    rules[this] = [Number(parts[0]), Number(parts[1])];
+                }
+            }
+        });
+
+        if ( $.validator.autoCreateRanges ) {
+            // auto-create ranges
+            if ( rules.min && rules.max ) {
+                rules.range = [rules.min, rules.max];
+                delete rules.min;
+                delete rules.max;
+            }
+            if ( rules.minlength && rules.maxlength ) {
+                rules.rangelength = [rules.minlength, rules.maxlength];
+                delete rules.minlength;
+                delete rules.maxlength;
+            }
+        }
+
+        return rules;
+    },
+
+    // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+    normalizeRule: function( data ) {
+        if ( typeof data === "string" ) {
+            var transformed = {};
+            $.each(data.split(/\s/), function() {
+                transformed[this] = true;
+            });
+            data = transformed;
+        }
+        return data;
+    },
+
+    // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+    addMethod: function( name, method, message ) {
+        $.validator.methods[name] = method;
+        $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];
+        if ( method.length < 3 ) {
+            $.validator.addClassRules(name, $.validator.normalizeRule(name));
+        }
+    },
+
+    methods: {
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/required
+        required: function( value, element, param ) {
+            // check if dependency is met
+            if ( !this.depend(param, element) ) {
+                return "dependency-mismatch";
+            }
+            if ( element.nodeName.toLowerCase() === "select" ) {
+                // could be an array for select-multiple or a string, both are fine this way
+                var val = $(element).val();
+                return val && val.length > 0;
+            }
+            if ( this.checkable(element) ) {
+                return this.getLength(value, element) > 0;
+            }
+            return $.trim(value).length > 0;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/remote
+        remote: function( value, element, param ) {
+            if ( this.optional(element) ) {
+                return "dependency-mismatch";
+            }
+
+            var previous = this.previousValue(element);
+            if (!this.settings.messages[element.name] ) {
+                this.settings.messages[element.name] = {};
+            }
+            previous.originalMessage = this.settings.messages[element.name].remote;
+            this.settings.messages[element.name].remote = previous.message;
+
+            param = typeof param === "string" && {url:param} || param;
+
+            if ( previous.old === value ) {
+                return previous.valid;
+            }
+
+            previous.old = value;
+            var validator = this;
+            this.startRequest(element);
+            var data = {};
+            data[element.name] = value;
+            $.ajax($.extend(true, {
+                url: param,
+                mode: "abort",
+                port: "validate" + element.name,
+                dataType: "json",
+                data: data,
+                success: function( response ) {
+                    validator.settings.messages[element.name].remote = previous.originalMessage;
+                    var valid = response === true || response === "true";
+                    if ( valid ) {
+                        var submitted = validator.formSubmitted;
+                        validator.prepareElement(element);
+                        validator.formSubmitted = submitted;
+                        validator.successList.push(element);
+                        delete validator.invalid[element.name];
+                        validator.showErrors();
+                    } else {
+                        var errors = {};
+                        var message = response || validator.defaultMessage( element, "remote" );
+                        errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
+                        validator.invalid[element.name] = true;
+                        validator.showErrors(errors);
+                    }
+                    previous.valid = valid;
+                    validator.stopRequest(element, valid);
+                }
+            }, param));
+            return "pending";
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/minlength
+        minlength: function( value, element, param ) {
+            var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
+            return this.optional(element) || length >= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+        maxlength: function( value, element, param ) {
+            var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
+            return this.optional(element) || length <= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+        rangelength: function( value, element, param ) {
+            var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
+            return this.optional(element) || ( length >= param[0] && length <= param[1] );
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/min
+        min: function( value, element, param ) {
+            return this.optional(element) || value >= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/max
+        max: function( value, element, param ) {
+            return this.optional(element) || value <= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/range
+        range: function( value, element, param ) {
+            return this.optional(element) || ( value >= param[0] && value <= param[1] );
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/email
+        email: function( value, element ) {
+            // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
+            return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/url
+        url: function( value, element ) {
+            // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
+            return this.optional(element) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/date
+        date: function( value, element ) {
+            return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+        dateISO: function( value, element ) {
+            return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/number
+        number: function( value, element ) {
+            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/digits
+        digits: function( value, element ) {
+            return this.optional(element) || /^\d+$/.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
+        // based on http://en.wikipedia.org/wiki/Luhn
+        creditcard: function( value, element ) {
+            if ( this.optional(element) ) {
+                return "dependency-mismatch";
+            }
+            // accept only spaces, digits and dashes
+            if ( /[^0-9 \-]+/.test(value) ) {
+                return false;
+            }
+            var nCheck = 0,
+                nDigit = 0,
+                bEven = false;
+
+            value = value.replace(/\D/g, "");
+
+            for (var n = value.length - 1; n >= 0; n--) {
+                var cDigit = value.charAt(n);
+                nDigit = parseInt(cDigit, 10);
+                if ( bEven ) {
+                    if ( (nDigit *= 2) > 9 ) {
+                        nDigit -= 9;
+                    }
+                }
+                nCheck += nDigit;
+                bEven = !bEven;
+            }
+
+            return (nCheck % 10) === 0;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+        equalTo: function( value, element, param ) {
+            // bind to the blur event of the target in order to revalidate whenever the target field is updated
+            // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
+            var target = $(param);
+            if ( this.settings.onfocusout ) {
+                target.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
+                    $(element).valid();
+                });
+            }
+            return value === target.val();
+        }
+
+    }
+
+});
+
+// deprecated, use $.validator.format instead
+$.format = $.validator.format;
+
+}(jQuery));
+
+// ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+(function($) {
+    var pendingRequests = {};
+    // Use a prefilter if available (1.5+)
+    if ( $.ajaxPrefilter ) {
+        $.ajaxPrefilter(function( settings, _, xhr ) {
+            var port = settings.port;
+            if ( settings.mode === "abort" ) {
+                if ( pendingRequests[port] ) {
+                    pendingRequests[port].abort();
+                }
+                pendingRequests[port] = xhr;
+            }
+        });
+    } else {
+        // Proxy ajax
+        var ajax = $.ajax;
+        $.ajax = function( settings ) {
+            var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+                port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+            if ( mode === "abort" ) {
+                if ( pendingRequests[port] ) {
+                    pendingRequests[port].abort();
+                }
+                return (pendingRequests[port] = ajax.apply(this, arguments));
+            }
+            return ajax.apply(this, arguments);
+        };
+    }
+}(jQuery));
+
+// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
+// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
+(function($) {
+    $.extend($.fn, {
+        validateDelegate: function( delegate, type, handler ) {
+            return this.bind(type, function( event ) {
+                var target = $(event.target);
+                if ( target.is(delegate) ) {
+                    return handler.apply(target, arguments);
+                }
+            });
+        }
+    });
+}(jQuery));
+
+
diff --git a/portal/static/my_account.common.css b/portal/static/my_account.common.css
new file mode 100644
index 00000000..82540a63
--- /dev/null
+++ b/portal/static/my_account.common.css
@@ -0,0 +1,230 @@
+/*****************************************************************
+<File Name>
+	common.css
+
+<Started>
+	January 18, 2009
+	
+<Refactored>
+    March 7, 2009
+
+<Author>
+	shawiz@cs.washington.edu
+	Xuanhua (Sean) Ren
+
+<Purpose>
+	Provides the common stylesheet for Seattle Clearinghouse
+
+
+*****************************************************************/
+
+
+/*******************
+* RESET
+********************/
+
+* {
+	margin: 0;
+	padding: 0;
+}
+
+fieldset, img {
+	border: 0;
+}
+
+
+
+/************************
+* GENERAL
+************************/
+
+body {
+	background-color: #fff;
+	font-family: "Segoe UI", "Lucida Grande", "Helvetica" , sans-serif;
+	font-size: 12pt;
+	  min-width: 1000px; /* ADDED July 2012 */
+	  margin: 0px auto; /* ADDED Aug 14, 2012 */
+}
+
+ol {
+    list-style-position: inside;
+}
+
+a {
+    text-decoration: none;
+    color: #0066FF;
+}
+
+code {
+    font-family: "Consolas", "Lucida Console", "Monaco", "Courier New";
+}
+
+.odd {
+    background-color: #fff;
+}
+
+.even {
+    background-color: #eee;
+}
+
+
+/************************
+* LAYOUT
+************************/
+
+/***** Header *****/
+
+#header {
+    width: 900px;   /* Edited Aug 14, 2012  prev width:70%*/
+    margin: 30px auto 20px auto;
+}
+
+#header #logo {
+    font-size: 42px;  /* Edited Sept 28, 2012  prev value :36pt*/
+    font-weight: bold;
+}
+
+#header #logo a {
+    color: #000;
+}
+
+#header #caption {
+    margin-left: 20px;
+    font-size: 13.3333px; 
+}
+
+#header #caption a {
+	color: #0066FF;
+}
+
+
+/***** Navigator *****/
+
+#navigator {
+    border-bottom: 3px solid #222;
+    width: 100%;
+    margin: 0 auto;  /* ADDED Aug 14, 2012 */
+}
+
+#tabs {
+    margin: 0 auto; 
+    width: 900px; /* Editied Aug 14, 2012 prev width: 70% */
+}
+
+#meta {
+    float: right;
+    font-size: 13pt;
+    margin: 5px 0;
+}
+
+#meta a.logout {
+    color: red;
+}
+
+#tabs table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+#tabs table tr td {
+   padding: 5px 15px;
+   font-size: 14pt;
+   border-top: 1px solid #222;
+   border-right: 2px solid #222;
+   border-left: 2px solid #222;
+}
+
+#tabs table tr td a {
+    color: #000;
+}
+
+#tabs table tr td.active {
+    background-color: #222;
+    color: #fff;
+}
+
+#tabs table tr td.active a {
+    color: #fff;
+}
+
+
+/***** Main *****/
+
+#main {
+    width: 100%;
+    height: 400px;
+    padding: 40px 0;
+    background-image: url(../images/bg.png);
+    background-repeat: repeat-x;
+}
+
+#middle {
+   margin: 0 auto;
+   width: 900px;  /* Edited Aug 14, 2012 prev width:70% */
+  padding-bottom: 60px;
+}
+
+
+/***** Notifications *****/
+
+.warning {
+	border: 1px solid red;
+	margin: 20px 60px;
+	padding: 10px 20px;
+	color: red;
+	background-color: #f2dbdb;
+	text-align: center;
+}
+.warning2 {
+	border: 1px solid red;
+	margin: 20px 60px;
+	padding: 10px 20px;
+	color: red;
+	background-color: #f2dbdb;
+	text-align: center;
+}
+.message {
+	border: 1px solid green;
+	   max-width : 682px;  /* ADDED July 2012 */
+	margin: 20px 60px;
+	padding: 10px 20px;
+	color: green;
+	font-weight: bold;
+	background-color: #CCFFCC;
+	text-align: center;
+}
+
+.tooltip {
+	background-color: #efefef;
+	color: #333;
+	font-size: 10pt;
+	padding: 3px;
+    border: solid 1px #333;
+	z-index:100;
+}
+
+ul.errorlist li {
+	color: red;
+	font-weight: normal;
+	font-size: 10pt;
+	background-color: #f2dbdb;
+    padding: 3px;
+    list-style-position: inside;
+}
+
+#learn-about-seattle {
+   /* max-width : 70%;*/
+    text-align : center;
+    background-color : #ded;
+    border : 1px solid #0a0;
+    padding : 1em;
+    margin-top : 1em;
+    margin-bottom : 1em;
+    font-size : 1.3em;
+}
+
+
+
+
+
+
diff --git a/portal/static/my_account.edit_profile.js b/portal/static/my_account.edit_profile.js
new file mode 100644
index 00000000..de71b107
--- /dev/null
+++ b/portal/static/my_account.edit_profile.js
@@ -0,0 +1,198 @@
+/*
+                        *********
+ ******* JQuery for the MySlice [Local] account buttons ********************* 
+                        ********
+Authors:
+  Mohammed Yasin Rahman <mohammed-yasin.rahman@lip6.fr>
+Copyright 2013, UPMC Sorbonne Universités / LIP6
+   
+ */
+
+jQuery(document).ready(function(){
+                      // jquery functionalities of different buttons [Edit, Cancel, Upload]
+                      //edit name
+                      jQuery("#edit_name").click(function(){
+
+                              jQuery("#span_name").show();
+                              jQuery("#nameval").hide();
+                              jQuery("#edit_name").hide();
+                              // enforcing when one edit is clicked the rest will not work at same time
+                              jQuery("#span_pass").hide();
+                              jQuery("#edit_pass").show();
+                              jQuery("#passval").show();
+                              jQuery("#span_aff").hide();
+                              jQuery("#edit_aff").show();
+                              jQuery("#affval").show();
+                              jQuery("#span_email").hide();
+                              jQuery("#edit_email").show();
+                              jQuery("#emailval").show();
+                              jQuery("#span_upload").hide();
+                              jQuery("#keyval").show();
+                              jQuery("#dl_file").show();
+                              jQuery("#upload_file").show();
+                      });
+                      jQuery("#cancel_name_change").click(function(){
+
+                              jQuery("#span_name").hide();
+                              jQuery("#nameval").show();
+                              jQuery("#edit_name").show();
+
+
+                      });
+                      //edit pass
+                      jQuery("#edit_pass").click(function(){
+
+                              jQuery("#span_pass").show();
+                              jQuery("#passval").hide();
+                              jQuery("#edit_pass").hide();
+                              // enforcing when one edit is clicked the rest will not work at same time
+                              jQuery("#span_name").hide();
+                              jQuery("#edit_name").show();
+                              jQuery("#nameval").show();
+                              jQuery("#span_aff").hide();
+                              jQuery("#edit_aff").show();
+                              jQuery("#affval").show();
+                              jQuery("#span_email").hide();
+                              jQuery("#edit_email").show();
+                              jQuery("#emailval").show();
+                              jQuery("#span_upload").hide();
+                              jQuery("#keyval").show();
+                              jQuery("#dl_file").show();
+                              jQuery("#upload_file").show();
+                      });
+                      jQuery("#cancel_pass_change").click(function(){
+
+                              jQuery("#span_pass").hide();
+                              jQuery("#passval").show();
+                              jQuery("#edit_pass").show();
+                      });
+                      // both password should be same
+                      jQuery("#editForm").validate({
+                        rules: {
+                            password: { 
+                                required: true
+                                }, 
+                            confirmpassword: { 
+                                required: true, equalTo: "#password"
+                                }
+                            }
+                      });
+                      //edit affiliation
+                      jQuery("#edit_aff").click(function(){
+
+                              jQuery("#span_aff").show();
+                              jQuery("#affval").hide();
+                              jQuery("#edit_aff").hide();
+                              // enforcing when one edit is clicked the rest will not work at same time
+                              jQuery("#span_pass").hide();
+                              jQuery("#edit_pass").show();
+                              jQuery("#passval").show();
+                              jQuery("#span_name").hide();
+                              jQuery("#edit_name").show();
+                              jQuery("#nameval").show();
+                              jQuery("#span_email").hide();
+                              jQuery("#edit_email").show();
+                              jQuery("#emailval").show();
+                              jQuery("#span_upload").hide();
+                              jQuery("#keyval").show();
+                              jQuery("#dl_file").show();
+                              jQuery("#upload_file").show();
+                      });
+                      jQuery("#cancel_aff_change").click(function(){
+
+                              jQuery("#span_aff").hide();
+                              jQuery("#affval").show();
+                              jQuery("#edit_aff").show();
+                      });
+                      //edit email
+                      /* edit email will be done by PI if needed
+                      jQuery("#edit_email").click(function(){
+
+                              jQuery("#span_email").show();
+                              jQuery("#emailval").hide();
+                              jQuery("#edit_email").hide();
+                              // enforcing when one edit is clicked the rest will not work at same time
+                              jQuery("#span_pass").hide();
+                              jQuery("#edit_pass").show();
+                              jQuery("#passval").show();
+                              jQuery("#span_aff").hide();
+                              jQuery("#edit_aff").show();
+                              jQuery("#affval").show();
+                              jQuery("#span_name").hide();
+                              jQuery("#edit_name").show();
+                              jQuery("#nameval").show();
+                              jQuery("#span_upload").hide();
+                              jQuery("#keyval").show();
+                              jQuery("#dl_file").show();
+                              jQuery("#upload_file").show();
+                      });
+                      jQuery("#cancel_email_change").click(function(){
+
+                              jQuery("#span_email").hide();
+                              jQuery("#emailval").show();
+                              jQuery("#edit_email").show();
+                      }); */
+                      //upload pub keys
+                      jQuery("#upload_file").click(function(){
+
+                              jQuery("#span_upload").show();
+                              jQuery("#dl_file").hide();
+                              jQuery("#upload_file").hide();
+                              jQuery("#keyval").hide();
+                              // enforcing when one edit is clicked the rest will not work at same time
+                              jQuery("#span_name").hide();
+                              jQuery("#edit_name").show();
+                              jQuery("#nameval").show();
+                              jQuery("#span_pass").hide();
+                              jQuery("#edit_pass").show();
+                              jQuery("#passval").show();
+                              jQuery("#span_aff").hide();
+                              jQuery("#edit_aff").show();
+                              jQuery("#affval").show();
+                              jQuery("#span_email").hide();
+                              jQuery("#edit_email").show();
+                              jQuery("#emailval").show();
+                      });
+                      jQuery("#cancel_upload").click(function(){
+
+                              jQuery("#span_upload").hide();
+                              jQuery("#keyval").show();
+                              jQuery("#dl_file").show();
+                              jQuery("#upload_file").show();
+                      });
+                  });
+
+// alert box for the "Generate new Key Pair button"
+function myFunction()
+{
+alert("You have requested to generate new key pairs. Please download and save the new keypairs after receiving the success message.");
+}
+
+function emailAlert()
+{
+alert("To edit email please contact the administratior. You will be redirected to the support page now");
+window.location.href = "/support";
+}
+
+function affAlert()
+{
+alert("To edit affiliation please contact the administratior. You will be redirected to the support page now");
+window.location.href = "/support";
+}
+/*
+ // alert having ok or cancel option
+function show_confirm()
+{
+var r=confirm("Press a button!");
+if (r==true)
+  {
+  alert("You pressed OK!");
+  }
+else
+  {
+  alert("You pressed Cancel!");
+  }
+}
+*/
+
+
diff --git a/portal/static/my_account.profile.css b/portal/static/my_account.profile.css
new file mode 100644
index 00000000..b6e1b208
--- /dev/null
+++ b/portal/static/my_account.profile.css
@@ -0,0 +1,173 @@
+
+
+/******************************
+* STYLE FOR PROFILE PAGE
+*******************************/
+
+h1 { 
+  font-size: 1.8em; 
+  border-bottom: 1px solid #bbb; 
+  width: 70%; 
+  min-width: 688px;
+}
+
+#info {
+  background-color : #ded;
+  border : 1px solid #0a0;
+  padding : 1em;
+  margin-bottom : 1em;
+}
+
+#error_msg {
+  background-color : #f2dbdb;
+  border : 1px solid red;
+  padding : 1em;
+  margin-bottom : 1em;
+}
+
+ul.errorlist li {
+	font-size: 12pt;
+  padding: 0px;
+}
+
+/* ADDED July 27, 2012 to fix the table collapsing on itself when the browser is below a certain size */
+table.profile {  
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 70%;
+  min-width: 703px; 
+}
+
+table.profile tr td.key {
+  text-align: right;
+  height: 30px;
+	font-size: 16px;
+  font-weight: bold;
+  width: 160px;
+}
+
+table.profile tr td.value {
+  padding-left: 20px;   
+    min-width: 500px; /* ADDED July 27, 2012 */
+}
+
+table.profile button { 
+  width: 80px;
+  vertical-align: middle;
+  float: right;
+  margin-right: 15px;
+}
+
+table.profile span.hide_this{ 
+	display: inline;
+	display: none;
+}
+
+table.profile form{ 
+	display:inline;
+}
+
+#download {
+  float: right;
+  border: 2px solid #666;
+  background-color: #fff;
+  padding: 10px;
+  margin-right: 0px;
+  text-align: center;
+  font-weight: bold;
+}
+
+#download a img {
+  display: block;
+  width: 150px;
+}
+
+#download a {
+  color: black;
+}
+
+#download_pubkey_form {
+  display : inline;	
+}
+/* ADDED(everything below) Aug 14, 2012 */
+#generate_api {
+  width: 175px;
+}
+
+#change_key form {
+  display: inline;
+  width: 688px; 
+}
+
+#generate_keypair {
+  position:relative;
+  width: 175px;
+  float: right;
+  margin-right: 15px;
+
+}
+#edit_password table {
+ display:inline;
+ margin: auto;
+  border-collapse: collapse;
+  border-spacing: 0;
+  padding-left: 5px;
+  width: 100%;
+}
+
+#edit_password td.field {
+  padding-left: 5px;
+
+}
+
+.wide_button {
+  width: 175px;
+}
+
+.api_cell {
+  color:red;
+}
+
+.api_cell:hover {
+  text-decoration: underline; 
+}
+
+img.help {
+  position: relative;
+  float: left;
+  left: 162px;
+  display: none;
+  /* when a negative margin is applied to right or bottom
+  it allows the element to overlap
+  */
+  margin-bottom: -50px;
+}
+
+#id_email {
+  width: 200px; 
+}
+
+#aff_list {
+  width: 200px;
+}
+#name {
+  width: 200px;
+}
+
+/*Added Sept 2012 to fix long api keys creating a new line*/
+#api_key {
+  color: red;
+  font-family: courier;
+}
+
+#up_arrow {
+  height: 36px;
+  width: 36px;
+  float: right;
+  position: relative;
+  margin-right: 132px;
+  /*when a negative margin is applied to right or bottom
+  it allows the element to overlap
+  */
+  margin-bottom:-50px;
+}
diff --git a/portal/static/my_account.register.js b/portal/static/my_account.register.js
new file mode 100644
index 00000000..bb7fba49
--- /dev/null
+++ b/portal/static/my_account.register.js
@@ -0,0 +1,56 @@
+/* 
+# Jquery for password matching and Affiliation list
+
+Authors:
+  Mohammed Yasin Rahman <mohammed-yasin.rahman@lip6.fr>
+Copyright 2013, UPMC Sorbonne Universités / LIP6
+
+*/
+jQuery(document).ready(function(){
+    
+    jQuery("#commentForm").validate({
+        rules: {
+          password: { 
+                required: true
+          }, 
+          confirmpassword: { 
+                required: true, equalTo: "#password"
+          }
+        }
+    });
+    // upload button
+    jQuery("#question").change(function(){
+        if(this.value=="upload"){
+            jQuery("#upload_key").show();
+        }else{
+            jQuery("#upload_key").hide();
+        }
+    });
+
+});
+
+jQuery(function() {
+    var availableTags = [
+      "iMinds",
+      "IT Innovation",
+      "UPMC",
+      "Fraunhofer",
+      "TUB",
+      "UEDIN",
+      "INRIA",
+      "NICTA",
+      "ATOS",
+      "UTH",
+      "NTUA",
+      "UNIVBRIS",
+      "i2CAT",
+      "EUR",
+      "DANTE Limited",
+      "UC",
+      "NIA"
+    ];
+    jQuery( "#aff_list" ).autocomplete({
+      source: availableTags
+    });
+  });
+
diff --git a/portal/static/ques_icon.png b/portal/static/ques_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..4113c1216504fd87f383305037ea92b04551d1af
GIT binary patch
literal 102623
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
M|LZOcgs9{H0OaI`wEzGB

literal 0
HcmV?d00001

diff --git a/portal/templates/my_account.html b/portal/templates/my_account.html
index 634f2c5c..72d69b6d 100644
--- a/portal/templates/my_account.html
+++ b/portal/templates/my_account.html
@@ -1,11 +1,11 @@
 {% extends "layout-unfold1.html" %}
 
 {% block head %}
-<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/my_account.common.css" />
-<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/my_account.profile.css" />
-<script type="text/javascript" src="{{STATIC_URL}}/js/jquery.validate.js"></script> 
-<script type="text/javascript" src="{{STATIC_URL}}/js/my_account.edit_profile.js"></script>
-<script type="text/javascript" src="{{STATIC_URL}}/js/my_account.register.js"></script>
+<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/my_account.common.css" />
+<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/my_account.profile.css" />
+<script type="text/javascript" src="{{STATIC_URL}}/jquery.validate.js"></script> 
+<script type="text/javascript" src="{{STATIC_URL}}/my_account.edit_profile.js"></script>
+<script type="text/javascript" src="{{STATIC_URL}}/my_account.register.js"></script>
 {% endblock %}
 
 {% block unfold1_main %}
@@ -31,7 +31,7 @@
                                             <td class="key">Email</td>
                                             <td class="value">
                                                    <span id="emailval" class="value" >{{ person.email }}</span>
-                                                   <img class="logo" src="{{STATIC_URL}}/img/ques_icon.png" onclick="emailAlert()"  title="To change your email please contact the administrator" style="height: 20px; width: 20px; position: absolute; left: 625px; left: 900px; margin-top: -9px;">
+                                                   <img class="logo" src="{{STATIC_URL}}/ques_icon.png" onclick="emailAlert()"  title="To change your email please contact the administrator" style="height: 20px; width: 20px; position: absolute; left: 625px; left: 900px; margin-top: -9px;">
                                             </td>
                                     </tr>
                                 <tr class="odd">
@@ -81,7 +81,7 @@
                                             <td class="key">Affiliation</td>
                                             <td class="value">
                                                     <span id="affval" class="value">UPMC</span>
-                                                    <img class="logo" src="{{STATIC_URL}}/img/ques_icon.png" onclick="affAlert()"  title="To change your affiliation please contact the administrator" style="height: 20px; width: 20px; position: absolute; left: 625px; left: 900px; ">
+                                                    <img class="logo" src="{{STATIC_URL}}/ques_icon.png" onclick="affAlert()"  title="To change your affiliation please contact the administrator" style="height: 20px; width: 20px; position: absolute; left: 625px; left: 900px; ">
                                             </td>
                                     </tr>
                             
diff --git a/third-party/jquery/js/jquery.validate.js b/third-party/jquery/js/jquery.validate.js
new file mode 100644
index 00000000..51eb2ef5
--- /dev/null
+++ b/third-party/jquery/js/jquery.validate.js
@@ -0,0 +1,1222 @@
+/**
+ * jQuery Validation Plugin 1.11.0pre
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright 2013 Jörn Zaefferer
+ * Released under the MIT license:
+ *   http://www.opensource.org/licenses/mit-license.php
+ */
+
+(function($) {
+
+$.extend($.fn, {
+    // http://docs.jquery.com/Plugins/Validation/validate
+    validate: function( options ) {
+
+        // if nothing is selected, return nothing; can't chain anyway
+        if ( !this.length ) {
+            if ( options && options.debug && window.console ) {
+                console.warn( "Nothing selected, can't validate, returning nothing." );
+            }
+            return;
+        }
+
+        // check if a validator for this form was already created
+        var validator = $.data( this[0], "validator" );
+        if ( validator ) {
+            return validator;
+        }
+
+        // Add novalidate tag if HTML5.
+        this.attr( "novalidate", "novalidate" );
+
+        validator = new $.validator( options, this[0] );
+        $.data( this[0], "validator", validator );
+
+        if ( validator.settings.onsubmit ) {
+
+            this.validateDelegate( ":submit", "click", function( event ) {
+                if ( validator.settings.submitHandler ) {
+                    validator.submitButton = event.target;
+                }
+                // allow suppressing validation by adding a cancel class to the submit button
+                if ( $(event.target).hasClass("cancel") ) {
+                    validator.cancelSubmit = true;
+                }
+            });
+
+            // validate the form on submit
+            this.submit( function( event ) {
+                if ( validator.settings.debug ) {
+                    // prevent form submit to be able to see console output
+                    event.preventDefault();
+                }
+                function handle() {
+                    var hidden;
+                    if ( validator.settings.submitHandler ) {
+                        if ( validator.submitButton ) {
+                            // insert a hidden input as a replacement for the missing submit button
+                            hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
+                        }
+                        validator.settings.submitHandler.call( validator, validator.currentForm, event );
+                        if ( validator.submitButton ) {
+                            // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+                            hidden.remove();
+                        }
+                        return false;
+                    }
+                    return true;
+                }
+
+                // prevent submit for invalid forms or custom submit handlers
+                if ( validator.cancelSubmit ) {
+                    validator.cancelSubmit = false;
+                    return handle();
+                }
+                if ( validator.form() ) {
+                    if ( validator.pendingRequest ) {
+                        validator.formSubmitted = true;
+                        return false;
+                    }
+                    return handle();
+                } else {
+                    validator.focusInvalid();
+                    return false;
+                }
+            });
+        }
+
+        return validator;
+    },
+    // http://docs.jquery.com/Plugins/Validation/valid
+    valid: function() {
+        if ( $(this[0]).is("form")) {
+            return this.validate().form();
+        } else {
+            var valid = true;
+            var validator = $(this[0].form).validate();
+            this.each(function() {
+                valid &= validator.element(this);
+            });
+            return valid;
+        }
+    },
+    // attributes: space seperated list of attributes to retrieve and remove
+    removeAttrs: function( attributes ) {
+        var result = {},
+            $element = this;
+        $.each(attributes.split(/\s/), function( index, value ) {
+            result[value] = $element.attr(value);
+            $element.removeAttr(value);
+        });
+        return result;
+    },
+    // http://docs.jquery.com/Plugins/Validation/rules
+    rules: function( command, argument ) {
+        var element = this[0];
+
+        if ( command ) {
+            var settings = $.data(element.form, "validator").settings;
+            var staticRules = settings.rules;
+            var existingRules = $.validator.staticRules(element);
+            switch(command) {
+            case "add":
+                $.extend(existingRules, $.validator.normalizeRule(argument));
+                staticRules[element.name] = existingRules;
+                if ( argument.messages ) {
+                    settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+                }
+                break;
+            case "remove":
+                if ( !argument ) {
+                    delete staticRules[element.name];
+                    return existingRules;
+                }
+                var filtered = {};
+                $.each(argument.split(/\s/), function( index, method ) {
+                    filtered[method] = existingRules[method];
+                    delete existingRules[method];
+                });
+                return filtered;
+            }
+        }
+
+        var data = $.validator.normalizeRules(
+        $.extend(
+            {},
+            $.validator.classRules(element),
+            $.validator.attributeRules(element),
+            $.validator.dataRules(element),
+            $.validator.staticRules(element)
+        ), element);
+
+        // make sure required is at front
+        if ( data.required ) {
+            var param = data.required;
+            delete data.required;
+            data = $.extend({required: param}, data);
+        }
+
+        return data;
+    }
+});
+
+// Custom selectors
+$.extend($.expr[":"], {
+    // http://docs.jquery.com/Plugins/Validation/blank
+    blank: function( a ) { return !$.trim("" + a.value); },
+    // http://docs.jquery.com/Plugins/Validation/filled
+    filled: function( a ) { return !!$.trim("" + a.value); },
+    // http://docs.jquery.com/Plugins/Validation/unchecked
+    unchecked: function( a ) { return !a.checked; }
+});
+
+// constructor for validator
+$.validator = function( options, form ) {
+    this.settings = $.extend( true, {}, $.validator.defaults, options );
+    this.currentForm = form;
+    this.init();
+};
+
+$.validator.format = function( source, params ) {
+    if ( arguments.length === 1 ) {
+        return function() {
+            var args = $.makeArray(arguments);
+            args.unshift(source);
+            return $.validator.format.apply( this, args );
+        };
+    }
+    if ( arguments.length > 2 && params.constructor !== Array  ) {
+        params = $.makeArray(arguments).slice(1);
+    }
+    if ( params.constructor !== Array ) {
+        params = [ params ];
+    }
+    $.each(params, function( i, n ) {
+        source = source.replace( new RegExp("\\{" + i + "\\}", "g"), function() {
+            return n;
+        });
+    });
+    return source;
+};
+
+$.extend($.validator, {
+
+    defaults: {
+        messages: {},
+        groups: {},
+        rules: {},
+        errorClass: "error",
+        validClass: "valid",
+        errorElement: "label",
+        focusInvalid: true,
+        errorContainer: $([]),
+        errorLabelContainer: $([]),
+        onsubmit: true,
+        ignore: ":hidden",
+        ignoreTitle: false,
+        onfocusin: function( element, event ) {
+            this.lastActive = element;
+
+            // hide error label and remove error class on focus if enabled
+            if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+                if ( this.settings.unhighlight ) {
+                    this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+                }
+                this.addWrapper(this.errorsFor(element)).hide();
+            }
+        },
+        onfocusout: function( element, event ) {
+            if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
+                this.element(element);
+            }
+        },
+        onkeyup: function( element, event ) {
+            if ( event.which === 9 && this.elementValue(element) === "" ) {
+                return;
+            } else if ( element.name in this.submitted || element === this.lastElement ) {
+                this.element(element);
+            }
+        },
+        onclick: function( element, event ) {
+            // click on selects, radiobuttons and checkboxes
+            if ( element.name in this.submitted ) {
+                this.element(element);
+            }
+            // or option elements, check parent select in that case
+            else if ( element.parentNode.name in this.submitted ) {
+                this.element(element.parentNode);
+            }
+        },
+        highlight: function( element, errorClass, validClass ) {
+            if ( element.type === "radio" ) {
+                this.findByName(element.name).addClass(errorClass).removeClass(validClass);
+            } else {
+                $(element).addClass(errorClass).removeClass(validClass);
+            }
+        },
+        unhighlight: function( element, errorClass, validClass ) {
+            if ( element.type === "radio" ) {
+                this.findByName(element.name).removeClass(errorClass).addClass(validClass);
+            } else {
+                $(element).removeClass(errorClass).addClass(validClass);
+            }
+        }
+    },
+
+    // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+    setDefaults: function( settings ) {
+        $.extend( $.validator.defaults, settings );
+    },
+
+    messages: {
+        required: "This field is required.",
+        remote: "Please fix this field.",
+        email: "Please enter a valid email address.",
+        url: "Please enter a valid URL.",
+        date: "Please enter a valid date.",
+        dateISO: "Please enter a valid date (ISO).",
+        number: "Please enter a valid number.",
+        digits: "Please enter only digits.",
+        creditcard: "Please enter a valid credit card number.",
+        equalTo: "Please enter the same value again.",
+        maxlength: $.validator.format("Please enter no more than {0} characters."),
+        minlength: $.validator.format("Please enter at least {0} characters."),
+        rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
+        range: $.validator.format("Please enter a value between {0} and {1}."),
+        max: $.validator.format("Please enter a value less than or equal to {0}."),
+        min: $.validator.format("Please enter a value greater than or equal to {0}.")
+    },
+
+    autoCreateRanges: false,
+
+    prototype: {
+
+        init: function() {
+            this.labelContainer = $(this.settings.errorLabelContainer);
+            this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
+            this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+            this.submitted = {};
+            this.valueCache = {};
+            this.pendingRequest = 0;
+            this.pending = {};
+            this.invalid = {};
+            this.reset();
+
+            var groups = (this.groups = {});
+            $.each(this.settings.groups, function( key, value ) {
+                if ( typeof value === "string" ) {
+                    value = value.split(/\s/);
+                }
+                $.each(value, function( index, name ) {
+                    groups[name] = key;
+                });
+            });
+            var rules = this.settings.rules;
+            $.each(rules, function( key, value ) {
+                rules[key] = $.validator.normalizeRule(value);
+            });
+
+            function delegate(event) {
+                var validator = $.data(this[0].form, "validator"),
+                    eventType = "on" + event.type.replace(/^validate/, "");
+                if ( validator.settings[eventType] ) {
+                    validator.settings[eventType].call(validator, this[0], event);
+                }
+            }
+            $(this.currentForm)
+                .validateDelegate(":text, [type='password'], [type='file'], select, textarea, " +
+                    "[type='number'], [type='search'] ,[type='tel'], [type='url'], " +
+                    "[type='email'], [type='datetime'], [type='date'], [type='month'], " +
+                    "[type='week'], [type='time'], [type='datetime-local'], " +
+                    "[type='range'], [type='color'] ",
+                    "focusin focusout keyup", delegate)
+                .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate);
+
+            if ( this.settings.invalidHandler ) {
+                $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+            }
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/form
+        form: function() {
+            this.checkForm();
+            $.extend(this.submitted, this.errorMap);
+            this.invalid = $.extend({}, this.errorMap);
+            if ( !this.valid() ) {
+                $(this.currentForm).triggerHandler("invalid-form", [this]);
+            }
+            this.showErrors();
+            return this.valid();
+        },
+
+        checkForm: function() {
+            this.prepareForm();
+            for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
+                this.check( elements[i] );
+            }
+            return this.valid();
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/element
+        element: function( element ) {
+            element = this.validationTargetFor( this.clean( element ) );
+            this.lastElement = element;
+            this.prepareElement( element );
+            this.currentElements = $(element);
+            var result = this.check( element ) !== false;
+            if ( result ) {
+                delete this.invalid[element.name];
+            } else {
+                this.invalid[element.name] = true;
+            }
+            if ( !this.numberOfInvalids() ) {
+                // Hide error containers on last error
+                this.toHide = this.toHide.add( this.containers );
+            }
+            this.showErrors();
+            return result;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+        showErrors: function( errors ) {
+            if ( errors ) {
+                // add items to error list and map
+                $.extend( this.errorMap, errors );
+                this.errorList = [];
+                for ( var name in errors ) {
+                    this.errorList.push({
+                        message: errors[name],
+                        element: this.findByName(name)[0]
+                    });
+                }
+                // remove items from success list
+                this.successList = $.grep( this.successList, function( element ) {
+                    return !(element.name in errors);
+                });
+            }
+            if ( this.settings.showErrors ) {
+                this.settings.showErrors.call( this, this.errorMap, this.errorList );
+            } else {
+                this.defaultShowErrors();
+            }
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+        resetForm: function() {
+            if ( $.fn.resetForm ) {
+                $(this.currentForm).resetForm();
+            }
+            this.submitted = {};
+            this.lastElement = null;
+            this.prepareForm();
+            this.hideErrors();
+            this.elements().removeClass( this.settings.errorClass ).removeData( "previousValue" );
+        },
+
+        numberOfInvalids: function() {
+            return this.objectLength(this.invalid);
+        },
+
+        objectLength: function( obj ) {
+            var count = 0;
+            for ( var i in obj ) {
+                count++;
+            }
+            return count;
+        },
+
+        hideErrors: function() {
+            this.addWrapper( this.toHide ).hide();
+        },
+
+        valid: function() {
+            return this.size() === 0;
+        },
+
+        size: function() {
+            return this.errorList.length;
+        },
+
+        focusInvalid: function() {
+            if ( this.settings.focusInvalid ) {
+                try {
+                    $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
+                    .filter(":visible")
+                    .focus()
+                    // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+                    .trigger("focusin");
+                } catch(e) {
+                    // ignore IE throwing errors when focusing hidden elements
+                }
+            }
+        },
+
+        findLastActive: function() {
+            var lastActive = this.lastActive;
+            return lastActive && $.grep(this.errorList, function( n ) {
+                return n.element.name === lastActive.name;
+            }).length === 1 && lastActive;
+        },
+
+        elements: function() {
+            var validator = this,
+                rulesCache = {};
+
+            // select all valid inputs inside the form (no submit or reset buttons)
+            return $(this.currentForm)
+            .find("input, select, textarea")
+            .not(":submit, :reset, :image, [disabled]")
+            .not( this.settings.ignore )
+            .filter(function() {
+                if ( !this.name ) {
+                    if ( window.console ) {
+                        console.error( "%o has no name assigned", this );
+                    }
+                    throw new Error( "Failed to validate, found an element with no name assigned. See console for element reference." );
+                }
+
+                // select only the first element for each name, and only those with rules specified
+                if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {
+                    return false;
+                }
+
+                rulesCache[this.name] = true;
+                return true;
+            });
+        },
+
+        clean: function( selector ) {
+            return $(selector)[0];
+        },
+
+        errors: function() {
+            var errorClass = this.settings.errorClass.replace(" ", ".");
+            return $(this.settings.errorElement + "." + errorClass, this.errorContext);
+        },
+
+        reset: function() {
+            this.successList = [];
+            this.errorList = [];
+            this.errorMap = {};
+            this.toShow = $([]);
+            this.toHide = $([]);
+            this.currentElements = $([]);
+        },
+
+        prepareForm: function() {
+            this.reset();
+            this.toHide = this.errors().add( this.containers );
+        },
+
+        prepareElement: function( element ) {
+            this.reset();
+            this.toHide = this.errorsFor(element);
+        },
+
+        elementValue: function( element ) {
+            var type = $(element).attr("type"),
+                val = $(element).val();
+
+            if ( type === "radio" || type === "checkbox" ) {
+                return $("input[name='" + $(element).attr("name") + "']:checked").val();
+            }
+
+            if ( typeof val === "string" ) {
+                return val.replace(/\r/g, "");
+            }
+            return val;
+        },
+
+        check: function( element ) {
+            element = this.validationTargetFor( this.clean( element ) );
+
+            var rules = $(element).rules();
+            var dependencyMismatch = false;
+            var val = this.elementValue(element);
+            var result;
+
+            for (var method in rules ) {
+                var rule = { method: method, parameters: rules[method] };
+                try {
+
+                    result = $.validator.methods[method].call( this, val, element, rule.parameters );
+
+                    // if a method indicates that the field is optional and therefore valid,
+                    // don't mark it as valid when there are no other rules
+                    if ( result === "dependency-mismatch" ) {
+                        dependencyMismatch = true;
+                        continue;
+                    }
+                    dependencyMismatch = false;
+
+                    if ( result === "pending" ) {
+                        this.toHide = this.toHide.not( this.errorsFor(element) );
+                        return;
+                    }
+
+                    if ( !result ) {
+                        this.formatAndAdd( element, rule );
+                        return false;
+                    }
+                } catch(e) {
+                    if ( this.settings.debug && window.console ) {
+                        console.log( "Exception occured when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
+                    }
+                    throw e;
+                }
+            }
+            if ( dependencyMismatch ) {
+                return;
+            }
+            if ( this.objectLength(rules) ) {
+                this.successList.push(element);
+            }
+            return true;
+        },
+
+        // return the custom message for the given element and validation method
+        // specified in the element's HTML5 data attribute
+        customDataMessage: function( element, method ) {
+            return $(element).data("msg-" + method.toLowerCase()) || (element.attributes && $(element).attr("data-msg-" + method.toLowerCase()));
+        },
+
+        // return the custom message for the given element name and validation method
+        customMessage: function( name, method ) {
+            var m = this.settings.messages[name];
+            return m && (m.constructor === String ? m : m[method]);
+        },
+
+        // return the first defined argument, allowing empty strings
+        findDefined: function() {
+            for(var i = 0; i < arguments.length; i++) {
+                if ( arguments[i] !== undefined ) {
+                    return arguments[i];
+                }
+            }
+            return undefined;
+        },
+
+        defaultMessage: function( element, method ) {
+            return this.findDefined(
+                this.customMessage( element.name, method ),
+                this.customDataMessage( element, method ),
+                // title is never undefined, so handle empty string as undefined
+                !this.settings.ignoreTitle && element.title || undefined,
+                $.validator.messages[method],
+                "<strong>Warning: No message defined for " + element.name + "</strong>"
+            );
+        },
+
+        formatAndAdd: function( element, rule ) {
+            var message = this.defaultMessage( element, rule.method ),
+                theregex = /\$?\{(\d+)\}/g;
+            if ( typeof message === "function" ) {
+                message = message.call(this, rule.parameters, element);
+            } else if (theregex.test(message)) {
+                message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
+            }
+            this.errorList.push({
+                message: message,
+                element: element
+            });
+
+            this.errorMap[element.name] = message;
+            this.submitted[element.name] = message;
+        },
+
+        addWrapper: function( toToggle ) {
+            if ( this.settings.wrapper ) {
+                toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+            }
+            return toToggle;
+        },
+
+        defaultShowErrors: function() {
+            var i, elements;
+            for ( i = 0; this.errorList[i]; i++ ) {
+                var error = this.errorList[i];
+                if ( this.settings.highlight ) {
+                    this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+                }
+                this.showLabel( error.element, error.message );
+            }
+            if ( this.errorList.length ) {
+                this.toShow = this.toShow.add( this.containers );
+            }
+            if ( this.settings.success ) {
+                for ( i = 0; this.successList[i]; i++ ) {
+                    this.showLabel( this.successList[i] );
+                }
+            }
+            if ( this.settings.unhighlight ) {
+                for ( i = 0, elements = this.validElements(); elements[i]; i++ ) {
+                    this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+                }
+            }
+            this.toHide = this.toHide.not( this.toShow );
+            this.hideErrors();
+            this.addWrapper( this.toShow ).show();
+        },
+
+        validElements: function() {
+            return this.currentElements.not(this.invalidElements());
+        },
+
+        invalidElements: function() {
+            return $(this.errorList).map(function() {
+                return this.element;
+            });
+        },
+
+        showLabel: function( element, message ) {
+            var label = this.errorsFor( element );
+            if ( label.length ) {
+                // refresh error/success class
+                label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
+
+                // check if we have a generated label, replace the message then
+                if ( label.attr("generated") ) {
+                    label.html(message);
+                }
+            } else {
+                // create label
+                label = $("<" + this.settings.errorElement + "/>")
+                    .attr({"for":  this.idOrName(element), generated: true})
+                    .addClass(this.settings.errorClass)
+                    .html(message || "");
+                if ( this.settings.wrapper ) {
+                    // make sure the element is visible, even in IE
+                    // actually showing the wrapped element is handled elsewhere
+                    label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+                }
+                if ( !this.labelContainer.append(label).length ) {
+                    if ( this.settings.errorPlacement ) {
+                        this.settings.errorPlacement(label, $(element) );
+                    } else {
+                        label.insertAfter(element);
+                    }
+                }
+            }
+            if ( !message && this.settings.success ) {
+                label.text("");
+                if ( typeof this.settings.success === "string" ) {
+                    label.addClass( this.settings.success );
+                } else {
+                    this.settings.success( label, element );
+                }
+            }
+            this.toShow = this.toShow.add(label);
+        },
+
+        errorsFor: function( element ) {
+            var name = this.idOrName(element);
+            return this.errors().filter(function() {
+                return $(this).attr("for") === name;
+            });
+        },
+
+        idOrName: function( element ) {
+            return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+        },
+
+        validationTargetFor: function( element ) {
+            // if radio/checkbox, validate first element in group instead
+            if ( this.checkable(element) ) {
+                element = this.findByName( element.name ).not(this.settings.ignore)[0];
+            }
+            return element;
+        },
+
+        checkable: function( element ) {
+            return (/radio|checkbox/i).test(element.type);
+        },
+
+        findByName: function( name ) {
+            return $(this.currentForm).find("[name='" + name + "']");
+        },
+
+        getLength: function( value, element ) {
+            switch( element.nodeName.toLowerCase() ) {
+            case "select":
+                return $("option:selected", element).length;
+            case "input":
+                if ( this.checkable( element) ) {
+                    return this.findByName(element.name).filter(":checked").length;
+                }
+            }
+            return value.length;
+        },
+
+        depend: function( param, element ) {
+            return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;
+        },
+
+        dependTypes: {
+            "boolean": function( param, element ) {
+                return param;
+            },
+            "string": function( param, element ) {
+                return !!$(param, element.form).length;
+            },
+            "function": function( param, element ) {
+                return param(element);
+            }
+        },
+
+        optional: function( element ) {
+            var val = this.elementValue(element);
+            return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
+        },
+
+        startRequest: function( element ) {
+            if ( !this.pending[element.name] ) {
+                this.pendingRequest++;
+                this.pending[element.name] = true;
+            }
+        },
+
+        stopRequest: function( element, valid ) {
+            this.pendingRequest--;
+            // sometimes synchronization fails, make sure pendingRequest is never < 0
+            if ( this.pendingRequest < 0 ) {
+                this.pendingRequest = 0;
+            }
+            delete this.pending[element.name];
+            if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
+                $(this.currentForm).submit();
+                this.formSubmitted = false;
+            } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {
+                $(this.currentForm).triggerHandler("invalid-form", [this]);
+                this.formSubmitted = false;
+            }
+        },
+
+        previousValue: function( element ) {
+            return $.data(element, "previousValue") || $.data(element, "previousValue", {
+                old: null,
+                valid: true,
+                message: this.defaultMessage( element, "remote" )
+            });
+        }
+
+    },
+
+    classRuleSettings: {
+        required: {required: true},
+        email: {email: true},
+        url: {url: true},
+        date: {date: true},
+        dateISO: {dateISO: true},
+        number: {number: true},
+        digits: {digits: true},
+        creditcard: {creditcard: true}
+    },
+
+    addClassRules: function( className, rules ) {
+        if ( className.constructor === String ) {
+            this.classRuleSettings[className] = rules;
+        } else {
+            $.extend(this.classRuleSettings, className);
+        }
+    },
+
+    classRules: function( element ) {
+        var rules = {};
+        var classes = $(element).attr("class");
+        if ( classes ) {
+            $.each(classes.split(" "), function() {
+                if ( this in $.validator.classRuleSettings ) {
+                    $.extend(rules, $.validator.classRuleSettings[this]);
+                }
+            });
+        }
+        return rules;
+    },
+
+    attributeRules: function( element ) {
+        var rules = {};
+        var $element = $(element);
+
+        for (var method in $.validator.methods) {
+            var value;
+
+            // support for <input required> in both html5 and older browsers
+            if ( method === "required" ) {
+                value = $element.get(0).getAttribute(method);
+                // Some browsers return an empty string for the required attribute
+                // and non-HTML5 browsers might have required="" markup
+                if ( value === "" ) {
+                    value = true;
+                }
+                // force non-HTML5 browsers to return bool
+                value = !!value;
+            } else {
+                value = $element.attr(method);
+            }
+
+            if ( value ) {
+                rules[method] = value;
+            } else if ( $element[0].getAttribute("type") === method ) {
+                rules[method] = true;
+            }
+        }
+
+        // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
+        if ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) {
+            delete rules.maxlength;
+        }
+
+        return rules;
+    },
+
+    dataRules: function( element ) {
+        var method, value,
+            rules = {}, $element = $(element);
+        for (method in $.validator.methods) {
+            value = $element.data("rule-" + method.toLowerCase());
+            if ( value !== undefined ) {
+                rules[method] = value;
+            }
+        }
+        return rules;
+    },
+
+    staticRules: function( element ) {
+        var rules = {};
+        var validator = $.data(element.form, "validator");
+        if ( validator.settings.rules ) {
+            rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+        }
+        return rules;
+    },
+
+    normalizeRules: function( rules, element ) {
+        // handle dependency check
+        $.each(rules, function( prop, val ) {
+            // ignore rule when param is explicitly false, eg. required:false
+            if ( val === false ) {
+                delete rules[prop];
+                return;
+            }
+            if ( val.param || val.depends ) {
+                var keepRule = true;
+                switch (typeof val.depends) {
+                case "string":
+                    keepRule = !!$(val.depends, element.form).length;
+                    break;
+                case "function":
+                    keepRule = val.depends.call(element, element);
+                    break;
+                }
+                if ( keepRule ) {
+                    rules[prop] = val.param !== undefined ? val.param : true;
+                } else {
+                    delete rules[prop];
+                }
+            }
+        });
+
+        // evaluate parameters
+        $.each(rules, function( rule, parameter ) {
+            rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
+        });
+
+        // clean number parameters
+        $.each(["minlength", "maxlength", "min", "max"], function() {
+            if ( rules[this] ) {
+                rules[this] = Number(rules[this]);
+            }
+        });
+        $.each(["rangelength", "range"], function() {
+            var parts;
+            if ( rules[this] ) {
+                if ( $.isArray(rules[this]) ) {
+                    rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
+                } else if ( typeof rules[this] === "string" ) {
+                    parts = rules[this].split(/[\s,]+/);
+                    rules[this] = [Number(parts[0]), Number(parts[1])];
+                }
+            }
+        });
+
+        if ( $.validator.autoCreateRanges ) {
+            // auto-create ranges
+            if ( rules.min && rules.max ) {
+                rules.range = [rules.min, rules.max];
+                delete rules.min;
+                delete rules.max;
+            }
+            if ( rules.minlength && rules.maxlength ) {
+                rules.rangelength = [rules.minlength, rules.maxlength];
+                delete rules.minlength;
+                delete rules.maxlength;
+            }
+        }
+
+        return rules;
+    },
+
+    // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+    normalizeRule: function( data ) {
+        if ( typeof data === "string" ) {
+            var transformed = {};
+            $.each(data.split(/\s/), function() {
+                transformed[this] = true;
+            });
+            data = transformed;
+        }
+        return data;
+    },
+
+    // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+    addMethod: function( name, method, message ) {
+        $.validator.methods[name] = method;
+        $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];
+        if ( method.length < 3 ) {
+            $.validator.addClassRules(name, $.validator.normalizeRule(name));
+        }
+    },
+
+    methods: {
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/required
+        required: function( value, element, param ) {
+            // check if dependency is met
+            if ( !this.depend(param, element) ) {
+                return "dependency-mismatch";
+            }
+            if ( element.nodeName.toLowerCase() === "select" ) {
+                // could be an array for select-multiple or a string, both are fine this way
+                var val = $(element).val();
+                return val && val.length > 0;
+            }
+            if ( this.checkable(element) ) {
+                return this.getLength(value, element) > 0;
+            }
+            return $.trim(value).length > 0;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/remote
+        remote: function( value, element, param ) {
+            if ( this.optional(element) ) {
+                return "dependency-mismatch";
+            }
+
+            var previous = this.previousValue(element);
+            if (!this.settings.messages[element.name] ) {
+                this.settings.messages[element.name] = {};
+            }
+            previous.originalMessage = this.settings.messages[element.name].remote;
+            this.settings.messages[element.name].remote = previous.message;
+
+            param = typeof param === "string" && {url:param} || param;
+
+            if ( previous.old === value ) {
+                return previous.valid;
+            }
+
+            previous.old = value;
+            var validator = this;
+            this.startRequest(element);
+            var data = {};
+            data[element.name] = value;
+            $.ajax($.extend(true, {
+                url: param,
+                mode: "abort",
+                port: "validate" + element.name,
+                dataType: "json",
+                data: data,
+                success: function( response ) {
+                    validator.settings.messages[element.name].remote = previous.originalMessage;
+                    var valid = response === true || response === "true";
+                    if ( valid ) {
+                        var submitted = validator.formSubmitted;
+                        validator.prepareElement(element);
+                        validator.formSubmitted = submitted;
+                        validator.successList.push(element);
+                        delete validator.invalid[element.name];
+                        validator.showErrors();
+                    } else {
+                        var errors = {};
+                        var message = response || validator.defaultMessage( element, "remote" );
+                        errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
+                        validator.invalid[element.name] = true;
+                        validator.showErrors(errors);
+                    }
+                    previous.valid = valid;
+                    validator.stopRequest(element, valid);
+                }
+            }, param));
+            return "pending";
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/minlength
+        minlength: function( value, element, param ) {
+            var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
+            return this.optional(element) || length >= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+        maxlength: function( value, element, param ) {
+            var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
+            return this.optional(element) || length <= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+        rangelength: function( value, element, param ) {
+            var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);
+            return this.optional(element) || ( length >= param[0] && length <= param[1] );
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/min
+        min: function( value, element, param ) {
+            return this.optional(element) || value >= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/max
+        max: function( value, element, param ) {
+            return this.optional(element) || value <= param;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/range
+        range: function( value, element, param ) {
+            return this.optional(element) || ( value >= param[0] && value <= param[1] );
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/email
+        email: function( value, element ) {
+            // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
+            return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/url
+        url: function( value, element ) {
+            // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
+            return this.optional(element) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/date
+        date: function( value, element ) {
+            return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+        dateISO: function( value, element ) {
+            return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/number
+        number: function( value, element ) {
+            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/digits
+        digits: function( value, element ) {
+            return this.optional(element) || /^\d+$/.test(value);
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
+        // based on http://en.wikipedia.org/wiki/Luhn
+        creditcard: function( value, element ) {
+            if ( this.optional(element) ) {
+                return "dependency-mismatch";
+            }
+            // accept only spaces, digits and dashes
+            if ( /[^0-9 \-]+/.test(value) ) {
+                return false;
+            }
+            var nCheck = 0,
+                nDigit = 0,
+                bEven = false;
+
+            value = value.replace(/\D/g, "");
+
+            for (var n = value.length - 1; n >= 0; n--) {
+                var cDigit = value.charAt(n);
+                nDigit = parseInt(cDigit, 10);
+                if ( bEven ) {
+                    if ( (nDigit *= 2) > 9 ) {
+                        nDigit -= 9;
+                    }
+                }
+                nCheck += nDigit;
+                bEven = !bEven;
+            }
+
+            return (nCheck % 10) === 0;
+        },
+
+        // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+        equalTo: function( value, element, param ) {
+            // bind to the blur event of the target in order to revalidate whenever the target field is updated
+            // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
+            var target = $(param);
+            if ( this.settings.onfocusout ) {
+                target.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
+                    $(element).valid();
+                });
+            }
+            return value === target.val();
+        }
+
+    }
+
+});
+
+// deprecated, use $.validator.format instead
+$.format = $.validator.format;
+
+}(jQuery));
+
+// ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+(function($) {
+    var pendingRequests = {};
+    // Use a prefilter if available (1.5+)
+    if ( $.ajaxPrefilter ) {
+        $.ajaxPrefilter(function( settings, _, xhr ) {
+            var port = settings.port;
+            if ( settings.mode === "abort" ) {
+                if ( pendingRequests[port] ) {
+                    pendingRequests[port].abort();
+                }
+                pendingRequests[port] = xhr;
+            }
+        });
+    } else {
+        // Proxy ajax
+        var ajax = $.ajax;
+        $.ajax = function( settings ) {
+            var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+                port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+            if ( mode === "abort" ) {
+                if ( pendingRequests[port] ) {
+                    pendingRequests[port].abort();
+                }
+                return (pendingRequests[port] = ajax.apply(this, arguments));
+            }
+            return ajax.apply(this, arguments);
+        };
+    }
+}(jQuery));
+
+// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
+// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
+(function($) {
+    $.extend($.fn, {
+        validateDelegate: function( delegate, type, handler ) {
+            return this.bind(type, function( event ) {
+                var target = $(event.target);
+                if ( target.is(delegate) ) {
+                    return handler.apply(target, arguments);
+                }
+            });
+        }
+    });
+}(jQuery));
+
+
-- 
2.47.0