properties.prototype.profile = function () {
    var user_id = this.user_id; /* This user ID is used for AJAX save */
    
    // NOTE: Always unbind the last events that bubbled up the DOM tree.
    $(document).off('change enter', '.updateProperty');
    // Now bind the newly created event listeners.
    $(document).on("change enter", ".updateProperty", function () {
      // Get data attributes from the input that was changed.
      var propertyid = $(this).attr('data-propertyID');
      var fieldname = $(this).attr('data-changed');
      var newvalue = $(this).val();
      makeChanges(propertyid, fieldname, newvalue);
    }); // <-- END: onChane event (.updateProperty)

    $(document).off('change enter', '.updatePropertySelect');
    $(document).on("change enter", ".updatePropertySelect", function () {
      // Get data attributes from the input that was changed.
      var propertyid = $(this).find(':selected').attr('data-propertyID');
      var fieldname = $(this).find(':selected').attr('data-changed');
      var newvalue = $(this).find(':selected').val();
      makeChanges(propertyid, fieldname, newvalue);
    }); // <-- END: onChane event (.updatePropertySelected)               


    function makeChanges(propertyid, fieldname, newvalue) {
      // validate the form before we proccess it.
      var validate = $('#editProperty').form('validate form');
      // Get the result of the validation.
      var validateResult = $('#editProperty').form('is valid');
      // If the form passes validation the begin processing.
      if (validateResult === true) {
        // Get data attributes from the input that was changed.
        debug_print("Data Passed to AJAX: propertyid=" + propertyid + "&fieldname=" + fieldname + "&newvalue=" + newvalue);

        // Save the data then run loadLeft() to refresh left side and re bind event listeners.
        $.ajax({
          beforeSend: saving_toast,
          url: 'app/properties/edit-property.php',
          type: 'GET',
          data: {id: propertyid, field: fieldname, val: newvalue, user_id: user_id},
          success: function (response, status, xhr) {
            if (!has_error(response, xhr)) {
              has_saved(response, xhr, fieldname);

              start_progress(); /* Restart percentage to 1 */
              cloneObject.load_left('start_up');

              done_loading();
            } // END if !ERROR
          }// <-- END: on success

        }); // <-- END: .ajax() 

      } // <-- END: validate Results
    } // End makeChanges() function


  // Validation for #editProperty
  $('#editProperty')
          .form({
            inline: true,
            on: 'submit',
            keyboardShortcuts: false,
            onSuccess: function () {
              debug_print('#editProperty form has passed validation');

            },
            fields: {
              status: {
                identifier: 'status',
                rules: [
                  {
                    type: 'empty',
                    prompt: 'Select Property Status'
                  }
                ]
              },
              entity: {
                identifier: 'entity',
                rules: [
                  {
                    type: 'empty',
                    prompt: 'Select Entity Account'
                  }
                ]
              },
              rent: {
                identifier: 'rent',
                rules: [
                  {
                    type: 'decimal',
                    prompt: 'Enter a valid decimal amount: e.g. $0.00'
                  }
                ]
              },
              deposit: {
                identifier: 'deposit',
                rules: [
                  {
                    type: 'decimal',
                    prompt: 'Enter a valid decimal amount: e.g. $0.00'
                  }
                ]
              },
              name: {
                identifier: 'street',
                rules: [
                  {
                    type: 'empty',
                    prompt: 'Enter Property Address.'
                  }
                ]
              },
              city: {
                identifier: 'city',
                rules: [
                  {
                    type: 'empty',
                    prompt: 'Enter City Name'
                  }
                ]
              },
              zip: {
                identifier: 'zip',
                rules: [
                  {
                    type: 'minLength[5]',
                    prompt: 'Enter 5 Digit ZIP Code'
                  }
                ]
              }

            } // <-- END: fields

          }); // <-- END: .form

};
