| 
/** USERS NAMESPACE
 ======================================== */
var users = {};
users.addEditData = {
    username      : $("#adduser-username"),
    email         : $("#adduser-email"),
    firstName     : $("#adduser-first_name"),
    lastName      : $("#adduser-last_name"),
    address       : $("#adduser-address"),
    phone         : $("#adduser-phone"),
    password      : $("#adduser-password"),
    conf_password : $("#adduser-confirm_password"),
    button        : $("#btn-add-user")
};
users.displayInfo = function (userId) {
jQuery.noConflict();
    var username    = $("#modal-username"),
        email       = $("#modal-email"),
        firstName   = $("#modal-first-name"),
        lastName    = $("#modal-last-name"),
        address     = $("#modal-address"),
        phone       = $("#modal-phone"),
        last_login  = $("#modal-last-login"),
        ajaxLoading = $("#ajax-loading"),
        detailsBody = $("#details-body"),
        modal       = $("#modal-user-details");
   //display modal
   //modal.modal('show');
   $("#modal-user-details").removeClass('hide');
 $("#modal-user-details").addClass('show');
   // set username (title of modal window) to loading...
   username.text($_lang.loading);
   
   //display ajax loading gif
   ajaxLoading.show();
   
   //hide details body
   detailsBody.hide();
   
   $.ajax({
       url: "WICore/WIClass/WIAjax.php",
       type: "POST",
       data: {
           action: "getUserDetails",
           userId: userId
       },
       success: function (result) {
           //parse result as JSON
           var res = JSON.parse(result);
           //console.log(res);
           //update modal fields
           username .text(res.username);
           email    .text(res.email);
           firstName.text(res.first_name);
           lastName .text(res.last_name);
           address  .text(res.address);
           phone    .text(res.phone);
           last_login.text(res.last_login);
           //hide ajax loading
           ajaxLoading.hide();
           
           //display user info
           detailsBody.show();
       }
   });
   
};
/**
 * Deletes an user.
 * @param {object} element Clicked DOM element.
 * @param {int} userId Id of user that will be deleted.
 */
users.deleteUser = function (element, userId) {
        //get whole user row that will be deleted
    var userRow = $(element).parents(".user-row");
        
        //ask admin to confirm that he want to delete this user
    var c = confirm($_lang.are_you_sure);
    if(c) {
                //confimed
                
                //send data to server
        $.ajax({
            type: "POST",
            url: "WICore/WIClass/WIAjax.php",
            data: {
                action: "deleteUser",
                userId: userId
            },
            success: function (result) {
                  console.log(result);
                                
          //remove user row from table
                userRow.fadeOut(600, function () {
                     $(this).remove();
                });
            }
        });
    }
};
/**
 * Changes user's role.
 * @param {Object} Clicked DOM element.
 * @param {int} userId User ID.
 */
users.changeRole = function (element, role, userId) {
  //send data to server
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: {
            action: "changeRole",
            userId: userId,
            role  : role
        },
        success: function (newRole) {
            //change button text
            element.text(newRole);
        }
    });
};
users.roleChanger = function (element, userId) {
    jQuery.noConflict();
   /* $("#modal-change-role").modal({
        keyboard: false,
        backdrop: "static",
        show: true
    });
    */
       $("#modal-change-role").removeClass('hide');
 $("#modal-change-role").addClass('show');
   //find elements needed for changing text
    var userRoleSpan = $(element).parents(".btn-group").find(".user-role");
    $("#change-role-button").unbind().bind('click', function () {
        var newRole = $("#select-user-role").val();
        users.changeRole(userRoleSpan, newRole, userId);
    });
};
users.showAddUserModal = function () {
    jQuery.noConflict();
    $("#modal-add-edit-user").modal({
        keyboard: false,
        backdrop: "static",
        show: true
    });
    $("#modal-username").text($_lang.add_user);
    WICore.removeErrorMessages();
    $("#add-user-form input[type='text'], #add-user-form input[type='password']").each(function () {
        $(this).val('');
    });
    users.addEditData.button.attr('onclick', 'users.addUser();');
};
users.addUser = function (editMode) {
    var data  = users.addEditData;
    var modal = $("#modal-add-edit-user");
    var btn   = $("#btn-add-user");
    if ( editMode )
        var forUpdate = true;
    else
        var forUpdate = false;
    if ( users._validateUser(data, forUpdate) ) {
        var action = "addUser";
        var userId = 0;
        if ( editMode === true ) {
            action = "updateUser";
            userId = $("#adduser-userId").val();
        }
        //create data object that will be sent to server
        var forServer = { 
            action : action,
            userId : userId,
            userData: {
                email      : data.email.val(),
                phone      : data.phone.val(),
                address    : data.address.val(),
                username   : data.username.val(),
                password   : CryptoJS.SHA512(data.password.val()).toString(),
                last_name  : data.lastName.val(),
                first_name : data.firstName.val(),
                confirm_password: CryptoJS.SHA512(data.conf_password.val()).toString()
            },
            fieldId: {
                email      : "adduser-email",
                username   : "adduser-username",
                password   : "adduser-password",
                address    : "adduser-address",
                phone      : "adduser-phone",
                last_name  : "adduser-last_name",
                first_name : "adduser-first_name",
                confirm_password: "adduser-confirm_password",
            }
        };
        //put button to loading state
        WICore.loadingButton(btn, $_lang.working);
        $.ajax({
            type: "POST",
            url: "WICore/WIClass/WIAjax.php",
            data: forServer,
            success: function ( result ) {
                //return button to normal state
                WICore.removeLoadingButton(btn);
                
                //parse result to JSON
                var res = JSON.parse(result);
                if(res.status === "error") {
                    //error
                    
                    //display all errors
                    for(var i=0; i<res.errors.length; i++) {
                        var error = res.errors[i];
                        WICore.displayErrorMessage($("#"+error.id), error.msg);
                    }
                }
                else {
                   location.reload();
                }
            }
        });
    }
};
users.updateUser = function () {
    users.addUser(true);
};
users.editUser = function (userId) {
    $("#adduser-userId").val(userId);
    var modal = $("#modal-add-edit-user"),
        data  = users.addEditData,
        modalTitle = modal.find(".modal-title"),
        modalBody  = modal.find(".modal-body"),
        ajaxLoading = modal.find(".ajax-loading");
    data.button.attr('onclick', 'users.updateUser();');
    WICore.removeErrorMessages();
    
    modal.modal('show');
    modalTitle.text($_lang.loading);
    modalBody.hide();
    ajaxLoading.show();
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: { action : "getUser", userId : user_Id },
        success : function (result) {
            //parse result to JSON
            var res = JSON.parse(result);
            data.email.val( res.email );
            data.username.val( res.username );
            data.firstName.val( res.first_name );
            data.lastName.val( res.last_name );
            data.address.val( res.address );
            data.phone.val( res.phone );
            data.password.attr('placeholder', $_lang.leave_blank);
            data.conf_password.attr('placeholder', $_lang.leave_blank);
            data.button.text($_lang.update);
            ajaxLoading.hide();
            modalTitle.text( res.username );
            modalBody.show();
        }
    });
};
users.banUser = function (el, userid) {
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: {
            userId : userid,
            action : "banUser"
        },
        success: function ( result ) {
            var buttons = $(el).parents('.btn-group').find(".btn-primary");
            buttons.each(function () {
                $(this).removeClass("btn-primary").addClass("btn-danger");
            });
            $(el).find('span').text($_lang.unban);
            $(el).attr('onclick', 'users.unbanUser(this,'+userid+');');
        }
    });
};
users.unbanUser = function (el, userid) {
    $.ajax({
        type: "POST",
        url: "WICore/WIClass/WIAjax.php",
        data: {
            userId : userid,
            action : "unbanUser"
        },
        success: function ( result ) {
            var buttons = $(el).parents('.btn-group').find(".btn-danger");
            buttons.each(function () {
                $(this).removeClass("btn-danger").addClass("btn-primary");
            });
            $(el).find('span').text($_lang.ban);
            $(el).attr('onclick', 'users.banUser(this,'+userid+');');
        }
    });
};
users._validateUser = function (data, forUpdate) {
    var valid = true;
    //remove previous error messages
    WICore.removeErrorMessages();
    // validate username
    if ( $.trim( data.username.val() ) == "" ) {
        valid = false;
        WICore.displayErrorMessage( data.username, $_lang.field_required );
    }
    // validate email
    if ( $.trim( data.email.val() ) == "" ) {
        valid = false;
        WICore.displayErrorMessage( data.email, $_lang.field_required );
    }
    else if ( ! WICore.validateEmail( data.email.val() ) ) {
        valid = false;
        WICore.displayErrorMessage( data.email, $_lang.email_wrong_format );
    }
    // validate passwords
    if ( forUpdate === true )
    {
        if ( data.password.val().length > 0 && data.password.val().length < 6 ) {
            valid = false;
            WICore.displayErrorMessage( data.password, $_lang.password_length );
        }
        if ( data.password.val() != data.conf_password.val() ) {
            valid = false;
            WICore.displayErrorMessage( data.password );
            WICore.displayErrorMessage( data.conf_password, $_lang.passwords_dont_match );
        }
    }
    else
    {
        if ( $.trim( data.password.val() ) == "" ) {
            valid = false;
            WICore.displayErrorMessage( data.password, $_lang.field_required );
        }
        else if ( data.password.val().length < 6 ) {
            valid = false;
            WICore.displayErrorMessage( data.password, $_lang.password_length );
        }
        if ( $.trim( data.conf_password.val() ) == "" ) {
            valid = false;
            WICore.displayErrorMessage( data.conf_password, $_lang.field_required );
        }
        if ( data.password.val() != data.conf_password.val() ) {
            valid = false;
            WICore.displayErrorMessage( data.password );
            WICore.displayErrorMessage( data.conf_password, $_lang.passwords_dont_match );
        }
    }
    return valid;
};
 |