var other_profiles_dirty = false;

function init_profile(){
    $("#content").live("click", function(e){
        var node = $(e.target);

        //click handler for user add 
        if(node.hasClass(".add-friend")){
            onclick_add_friend(e, node);
        }

        //click handler for remove friend
        else if(node.hasClass("remove-friend")){
            onclick_remove_friend(e, node);
        }

        //click handler for remove friend
        else if(node.hasClass("add-friend-tab")){
            onclick_add_friend_from_tab(e, node);
        }

        //click handler for remove friend
        else if(node.hasClass("remove-friend-tab")){
            onclick_remove_friend_from_tab(e, node);
        }

        //click handler for add all fans
        else if(node.hasClass("add-all-fans")){
            onclick_add_all_fans(e, node);
        }

        //click handler for upload new profile image
        else if(node.hasClass("upload-image")){
            $("#avatar-link").hide();
            onclick_get_form(e, node, "avatar");
        }

        //click handler for cancel change profile image
        else if(node.is("#avatar-cancel")){
            e.preventDefault();
            $("#image-form").slideUp(600, function(e){
                $("#image-form").html("");
                $("#avatar-link").fadeIn(300);
            });
        }

        //click handler for edit bio link, to show edit form
        else if(node.is("#edit-bio")){
            $("#bio").hide();
            $("#blog-box").hide();
            onclick_get_form(e, node, "bio");
        }

        //click handler for save bio form
        else if(node.is("#save-bio")){
            onclick_save_bio(e, node);
        }

        //click handler for cancel bio form
        else if(node.is("#cancel-bio")){
            e.preventDefault();
            $("#edit-bio-form").slideUp(500, function(){
                $("#edit-bio-form").html("");
                $("#bio").fadeIn(300);
                
                if($("#blog-text").text() != "")
                    $("#blog-box").fadeIn(300);
            });
        }

        //click handler for save email/password change form
        else if(node.is("#save-password")){
            onclick_save_email_password(e, node);
        }

        //click handler for save email notification form
        else if(node.hasClass(".email-check")){
            onclick_save_email_notifications(e, node);
        }
        
        //click handler for save member's groups form
        else if(node.hasClass(".member-group-check")){
            onclick_save_member_groups(e, node);
        }

        //click handler for save email notification form
        else if(node.is("#save-payment")){
            onclick_request_payment(e, node);
        }

        //click handler for edit profiles form
        else if(node.hasClass("edit-profiles")){            
            if($("#edit-profiles-form").html() == ""){
                $("#profile-icons").hide();
                onclick_get_form(e, node, "other_profiles");
            }
        }

        //click handler for cancel profiles form
        else if(node.is("#cancel-profiles")){
            if(other_profiles_dirty){
               if(confirm("You have made changes to this profile url. Do you want to save them?")){
                   onclick_save_profile_icons(e, node);
               } else {
                   other_profiles_dirty = false;
               }
            }

            $("#edit-profiles-form").slideUp(500, function(){
                $("#edit-profiles-form").html("");
                onclick_show_profile_icons(e, node);                
            });
        }

        //click handler to show form to edit other profiles
        else if(node.hasClass("profile-edit-link")){
            onclick_show_profile_link_form(e, node);
        }

        //click handler to save a change to other profile icon
        else if(node.is("#service-save")){
            onclick_save_profile_icons(e, node);
        }

        //click handler to remove other profile icon
        else if(node.is("#service-remove")){
            onclick_remove_profile_icons(e, node);
        }

        //click handler for stats toggle
        else if(node.is("#toggle-stats")){
            onclick_toggle_stats(e, node);
        }

        //click handler for previous pagination links on activity tab
        else if(node.hasClass("activity-previous")){
            onclick_activity_pagination(e, node);
        }

        //click handler for next pagination links on activity tab
        else if(node.hasClass("activity-next")){
            onclick_activity_pagination(e, node);
        }

        //click handler for all questions tab
        else if(node.is("#all-questions-tab")){
            load_answers_subtab(node, "asked", 1);
        }

        //click handler for direct questions tab
        else if(node.is("#direct-questions-tab")){
            load_answers_subtab(node, "direct", 1);
        }

        //click handler for open questions tab
        else if(node.is("#open-questions-tab")){
            load_answers_subtab(node, "open", 1);
        }

        //click handler for all answers tab
        else if(node.is("#all-answers-tab")){
            load_answers_subtab(node, "answered", 1);
        }

        //click handler for best answers tab
        else if(node.is("#best-answers-tab")){
            load_answers_subtab(node, "answered-best", 1);
        }

        //click handler for helpful answers tab
        else if(node.is("#helpful-answers-tab")){
            load_answers_subtab(node, "answered-helpful", 1);
        }

        //click handler for unhelpful answers tab
        else if(node.is("#unhelpful-answers-tab")){
            load_answers_subtab(node, "answered-unhelpful", 1);
        }

        //click handler for direct answers tab
        else if(node.is("#direct-answers-tab")){
            load_answers_subtab(node, "answered-direct", 1);
        }

        //click handler for comments tab
        else if(node.is("#comments-tab")){
            load_answers_subtab(node, "commented", 1);
        }

        //click handler for tips tab
        else if(node.is("#tips-tab")){
            load_answers_subtab_tips(node);
        }

        else if(node.is("#tips-tab-sharing")){
            load_answers_subtab_tips(node);
        }

        //For Questions link in stats table
        else if(node.is("#questions-tab-link")) {
            e.preventDefault();
            $(".tabs-nav>li").removeClass("tabs-selected");
            $("#answers-tab").addClass("tabs-selected");
            load_tab("answers");
            setTimeout('load_answers_subtab($("#all-questions-tab"), "asked", 1);', 200);
        }

        //For Answers link in stats table
        else if(node.is("#answers-tab-link")) {
            e.preventDefault();
            $(".tabs-nav>li").removeClass("tabs-selected");
            $("#answers-tab").addClass("tabs-selected");
            load_tab("answers");
            setTimeout('load_answers_subtab($("#all-answers-tab"), "answered", 1);', 200);
        }
        
        //For Best Answers link in stats table
        else if(node.is("#best-tab-link")) {
            e.preventDefault();
            $(".tabs-nav>li").removeClass("tabs-selected");
            $("#answers-tab").addClass("tabs-selected");
            load_tab("answers");
            setTimeout('load_answers_subtab($("#best-answers-tab"), "answered-best", 1);', 200);
        }

        //For Best Answers link in stats table
        else if(node.is("#helpful-tab-link")) {
            e.preventDefault();
            $(".tabs-nav>li").removeClass("tabs-selected");
            $("#answers-tab").addClass("tabs-selected");
            load_tab("answers");
            setTimeout('load_answers_subtab($("#helpful-answers-tab"), "answered-helpful", 1);', 200);
        }

        //For Best Answers link in stats table
        else if(node.hasClass("tip-tab-link")) {
            e.preventDefault();
            $(".tabs-nav>li").removeClass("tabs-selected");
            $("#answers-tab").addClass("tabs-selected");
            load_tab("answers");
            setTimeout('load_answers_subtab_tips($("#tips-tab"));', 200);
        }

        //click handler for previous pagination links on answers tab
        else if(node.hasClass("question-list-previous")){
            onclick_answers_pagination(e, node);
        }

        //click handler for next pagination links on answers tab
        else if(node.hasClass("question-list-next")){
            onclick_answers_pagination(e, node);
        }

        //click handler for all tasks tab
        else if(node.is("#all-tasks-tab")) {
            load_tasks_subtab(node, "all", 1);
        }

        //click handler for claimed tasks tab
        else if(node.is("#claimed-tasks-tab")) {
            load_tasks_subtab(node, "claimed", 1);
        }
        
        //click handler for tasks under review tab 
        else if(node.is("#review-tasks-tab")) {
            load_tasks_subtab(node, "review", 1);
        }

        //click handler for approved tasks tab
        else if(node.is("#approved-tasks-tab")) {
            load_tasks_subtab(node, "approved", 1);
        }
        
        //click handler for rejected tasks tab 
        else if(node.is("#rejected-tasks-tab")) {
            load_tasks_subtab(node, "rejected", 1);
        }

        //click handler for task comments tab 
        else if(node.is("#task-comments-tab")) {
            load_tasks_subtab(node, "commented", 1);
        }
        
        //click handler for tips tab
        else if(node.is("#task-tips-tab")){
            load_tasks_subtab_tips(node);
        }

        //click handler for previous pagination links on tasks tab
        else if(node.hasClass("task-list-previous")){
            onclick_tasks_pagination(e, node);
        }

        //click handler for next pagination links on tasks tab
        else if(node.hasClass("task-list-next")){
            onclick_tasks_pagination(e, node);
        }

        //click handler for previous pagination links on links tab
        else if(node.hasClass("links-previous")){
            onclick_links_pagination(e, node);
        }

        //click handler for next pagination links on links tab
        else if(node.hasClass("links-next")){
            onclick_links_pagination(e, node);
        }

        //click handler for settings tab change email or password
        else if(node.is("#password-tab")){
            e.preventDefault();
            $("#email-subtab").hide();
            $("#payments-subtab").hide();
            $("#member-group-subtab").hide();
            $("#user-permissions-subtab").hide();
            $("#password-subtab").fadeIn(300);
            $(".tablink").css("font-weight", "normal");
            $(node).css("font-weight", "bold");
        }
        
        //click handler for settings tab that shows the member's groups
        else if(node.is("#member-group-tab")){
            e.preventDefault();
            $("#email-subtab").hide();
            $("#payments-subtab").hide();
            $("#password-subtab").hide();
            $("#user-permissions-subtab").hide();
            $("#member-group-subtab").fadeIn(300);
            $(".tablink").css("font-weight", "normal");
            $(node).css("font-weight", "bold");
            track_add_remove_groups();
        }

        //click handler for settings tab email notifications
        else if(node.is("#email-tab")){
            e.preventDefault();
            $("#payments-subtab").hide();
            $("#password-subtab").hide();
            $("#member-group-subtab").hide();
            $("#user-permissions-subtab").hide();
            $("#email-subtab").fadeIn(300);
            $(".tablink").css("font-weight", "normal");
            $(node).css("font-weight", "bold");
        }

        //click handler for user permissions tab
        else if(node.is("#user-permissions-tab")){
            e.preventDefault();
            $("#payments-subtab").hide();
            $("#password-subtab").hide();
            $("#member-group-subtab").hide();
            $("#email-subtab").hide();
            $("#user-permissions-subtab").fadeIn(300);
            $(".tablink").css("font-weight", "normal");
            $(node).css("font-weight", "bold");
            init_user_permission_tab() 
        }

        //click handler for edit profiles form
        else if(node.is("#request-payment")){
            if($("#payment-form").html() == ""){
                onclick_get_form(e, node, "payments");
            } else {
                e.preventDefault();
                $("#payment-form").slideUp(1000, function(){
                    $("#payment-form").html("");
                });
            }
        }

        else if(node.is("#request-quota-increase")){
            onclick_request_quota_increase(e, node);
        }

        else if(node.is("#friends-tab")){
            e.preventDefault();
            load_friend_tab(node, "friends");
        }

        else if(node.is("#fans-tab")){
            e.preventDefault();
            load_friend_tab(node,"fans");
        }

        else if(node.is("#fanof-tab")){
            e.preventDefault();
            load_friend_tab(node, "fanof");
        }

        else if(node.hasClass("friends-previous")){
            e.preventDefault();
            onclick_friends_pagination(e, node, "friends");
        }
        
        else if(node.hasClass("friends-next")){
            e.preventDefault();
            onclick_friends_pagination(e, node, "friends");
        }

        else if(node.hasClass("fans-previous")){
            e.preventDefault();
            onclick_friends_pagination(e, node, "fans");
        }
        
        else if(node.hasClass("fans-next")){
            e.preventDefault();
            onclick_friends_pagination(e, node, "fans");
        }

        else if(node.hasClass("fanof-previous")){
            e.preventDefault();
            onclick_friends_pagination(e, node, "fanof");
        }
        
        else if(node.hasClass("fanof-next")){
            e.preventDefault();
            onclick_friends_pagination(e, node, "fanof");
        }
        
        else if (node.is("#pages-managed-tab")) {
            e.preventDefault();
            load_search_subtab(node, "pages-managed", 1);
        }
        
        else if (node.is("#links-submitted-tab")) {
            e.preventDefault();
            load_search_subtab(node, "links-submitted", 1);
        }
        
        else if (node.is("#favorites-tab")) {
            e.preventDefault();
            load_search_subtab(node, "favorite-links", 1);
        }

        else if(node.is("#ban-user-link")) {
            onclick_ban_user(e, node);
        }

        else if(node.is("#unban-user-link")) {
            onclick_unban_user(e, node);
        }
    });

    set_profile_tabs();

    //Load selected tab
    selected_tab = $("#profile-tabs").find(".tabs-selected").attr("id").replace("profile-", "").replace("-tab", "");
    $("#"+selected_tab+"-link").click(); // simulate click
    
    if($("#blog-text").text() != ""){
        $("#blog-box").show();
    } else {
        $("#blog-box").hide();
    }
    
    $("#service-url").live("change", function(e){
        other_profiles_dirty = true;
    });
}

function onclick_ban_user(e, node){
    e.preventDefault();
    
    var username = $(node).attr("username");
    username = username.toLowerCase();
    username = username.replace(" ", "_");

    document.location.href = "/guides/block_ip?name=" + username;
}

function onclick_unban_user(e, node){
    e.preventDefault();
    
    username = $(node).attr("username");
    var args = [{"name":"username","value":username}];
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/sheriff/unban_user/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                document.location.reload();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong unbanning this user. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_add_friend_from_tab(e, node){
    e.preventDefault();

    var args = $("#friend_tab_form").serializeArray();
    var addLink = $(node);
    
    args.push({"name":"friend_name", "value": addLink.attr("username")});
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/request_friend/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                addLink.html("<small><strong>Added!<strong></small>").removeClass("add-friend");
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong making this user your friend. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_remove_friend_from_tab(e, node){
    e.preventDefault();

    var args = $("#friend_tab_form").serializeArray();
    var addLink = $(node);
    
    args.push({"name":"friend_name", "value": addLink.attr("username")});
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/remove_friend/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                addLink.parents("li").fadeOut();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong removing this friend. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_add_all_fans(e, node){
    e.preventDefault();

    var args = $("#friend_tab_form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/friend_all_fans/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong adding all your fans. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_add_friend(e, node){
    e.preventDefault();

    args = $("#friending-form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/request_friend/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                $("#friending-icon").effect("highlight", {"color": "#e0f4c0"}, 1500);
                $("#friending-icon img").removeClass("add_friend_button").removeClass("add-friend");
                $("#friending-icon img").addClass("remove_friend_button").addClass("remove-friend");
                $("#friending-icon a").removeClass("add-friend").addClass("remove-friend").html("Remove this Friend");
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong adding this friend. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_remove_friend(e, node){
    e.preventDefault();

    args = $("#friending-form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/remove_friend/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                $("#friending-icon").effect("highlight", {"color": "#f7cabc"}, 1500);
                $("#friending-icon img").removeClass("remove_friend_button").removeClass("remove-friend");
                $("#friending-icon img").addClass("add_friend_button").addClass("add-friend");
                $("#friending-icon a").removeClass("remove-friend").addClass("add-friend").html("Add as a Friend");
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong removing this friend. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_save_bio(e, node){
    e.preventDefault();
    
    var args =  $("#bio_form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/set_bio/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                $("#bio-text").html(data.bio);

                if($("#bio-text").html() != "" ){
                    $("#bio-msg").hide();
                }
                else {
                    $("#bio-msg").html("Click edit to tell us a bit about yourself.");
                    $("#bio-msg").show();
                }

                $("#edit-bio-form").slideUp(1000, function(){
                    $("#edit-bio-form").html("");
                    $("#bio").fadeIn(300);
                    $("#blog-text").html(data.blog);
                    $("#blog-text").attr("href", data.blog);

                    if(data.blog.length > 0){
                        $("#blog-box").fadeIn(300);
                    } else {
                        $("#blog-box").hide();
                    }
                });
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong setting your bio information. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_show_profile_link_form(e, node){
    e.preventDefault();

    var service = $(node).attr("alt");
    var service_text = $(node).attr("title");

    if(other_profiles_dirty){
       if(confirm("You have made changes to your this profile url. Do you want to save them?")){
           onclick_save_profile_icons(e, node);
       } else {
           other_profiles_dirty = false;
       }
    }
    
    $("#profile-links-form").fadeOut(300, function(){
        var service = $(node).attr("alt");
        var service_text = $(node).attr("title");

        $("#service-icon").removeClass();
        $("#service-icon").addClass(service + "_sprite");
        $("#service-header").html(service_text);
        $("#service").val(service);
        $("#service-url").val("");
        $("#service-save").html("Save");
        $("#service-remove").html("Remove");
        
        if(service == "myspace"){
            $("#service-desc").html("<span style='font-size:9pt'><a target='blank' style='font-size:9pt' href='http://www.myspace.com'>Login to MySpace</a>, then click on 'Profile' to view your profile URL</span>");
        } else if(service == "facebook"){
            $("#service-desc").html("<span style='font-size:9pt'><a target='blank' style='font-size:9pt' href='http://www.facebook.com/login.php'>Login to Facebook</a> and click on 'Profile' to view your profile URL</span>");
        } else if(service == "flickr"){
            $("#service-desc").html("<span style='font-size:9pt'><a target='blank' style='font-size:9pt' href='http://flickr.com/signin/'>Login to Flickr</a>, then click on 'My Photos' to view your URL</span>");
        } else if(service == "stumbleupon"){
            $("#service-desc").html("<span style='font-size:9pt'><a target='blank' style='font-size:9pt' href='http://www.stumbleupon.com/login.php'>Login to StumbleUpon</a> and you'll go directly to your profile URL</span>");
        } else if(service == "linkedin"){
            $("#service-desc").html("<span style='font-size:9pt'>Login to your <a target='blank' style='font-size:9pt' href='http://www.linkedin.com/myprofile'>LinkedIn profile</a> then click 'Edit My Public profile'</span>");
        
        
        } else {
            $("#service-desc").html("");
        }
        
        var args = [{"name": "service", "value": service}];
        args = args.concat(API_KEYS);

        $.ajax({
            type: "GET",
            url: API_URL + "/social/get_profile_link/",
            data: args,
            success: function(data){
                if (data.status == false) {
                    error(data.msg);
                }
                else {
                    if(data.profile_link == "undefined"){
                        $("#service-remove").hide();
                    }

                    $("#service-url").val(data.profile_link);
                    $("#service-url").focus();
                    $("#service-url").select();
                }
            },
            error: function(xhr, msg, thrownError){
                on_ajax_request_error("Something went wrong setting your other profile links. (" + msg + " : " + xhr.status + ")");
            }
        });
    });
    
    $("#profile-links-form").fadeIn(300);
}

function onclick_show_profile_icons(e, node){
    var args = [{"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username }];
    args = args.concat(API_KEYS);

    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_profile_icons/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                $("#other-profile-icons").html(data.rendered);
                $("#profile-icons").fadeIn(300);
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong fetching your other profile links. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_save_profile_icons(e, node){
    e.preventDefault();
    
    var args = $("#profiles_form").serializeArray();
    args = args.concat(API_KEYS);
    
    $.ajax({
        url: API_URL + "/social/set_profile_link/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                other_profiles_dirty = false;
                $("#service-save").html("<strong>Saved!</strong>");
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong saving your other profile links. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_remove_profile_icons(e,node){
    e.preventDefault();

    $("#service-url").val("");

    var args = $("#profiles_form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/set_profile_link/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                other_profiles_dirty = false;
                $("#service-remove").html("<strong>Removed!</strong>");
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong removing your other profile links. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_save_email_password(e, node){
    e.preventDefault();
    
    var args = $("#password_form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/social/set_account/",
        data: args,
        success: function(data){
            if (data.status == false) {
                $("#password-msg").show()
                error(data.msg,"password-msg", 500, true);
                setTimeout('$("#password-msg").fadeOut(300)', 5000);
            }
            else {
                $("#password-msg").show()
                error("Your settings were changed successfully.", "password-msg", 500, true);
                setTimeout('$("#password-msg").fadeOut(300)', 5000);
            }
        },
        error: function(xhr, msg, thrownError){
            $("#password-msg").show()
            on_ajax_request_error("Something went wrong saving your password. (" + msg + " : " + xhr.status + ")");
            setTimeout('$("#password-msg").fadeOut(300)', 5000);
        }
    });
}

function onclick_save_email_notifications(e, node){
    var args = $("#email_form").serializeArray();
    args = args.concat(API_KEYS);
    
    $.ajax({
        url: API_URL + "/social/set_email/",
        data: args,
        success: function(data){
            if (data.status == false) {
                $("#email-msg").show()
                error(data.msg, "email-msg", 500, true);
                setTimeout('$("#email-msg").fadeOut(300)', 5000);
            }
            else {
            }
        },
        error: function(xhr, msg, thrownError){
            $("#email-msg").show()
            on_ajax_request_error("Something went wrong saving your email preferences. (" + msg + " : " + xhr.status + ")");
            setTimeout('$("#email-msg").fadeOut(300)', 5000);
        }
    });
}

function onclick_save_member_groups(e, node){
    var args = $("#member-group_form").serializeArray();
    args = args.concat(API_KEYS);
    
    $.ajax({
        url: API_URL + "/social/set_member_groups/",
        data: args,
        success: function(data){
            if (data.status == false) {
                $("#member-group-msg").show()
                error(data.msg, "member-group-msg", 500, true);
                setTimeout('$("#member-group-msg").fadeOut(300)', 5000);
            }
            else {
            }
        },
        error: function(xhr, msg, thrownError){
            $("#member-group-msg").show()
            on_ajax_request_error("Something went wrong saving your member groups. (" + msg + " : " + xhr.status + ")");
            setTimeout('$("#member-group-msg").fadeOut(300)', 5000);
        }
    });
}

function onclick_request_payment(e, node){
    e.preventDefault();
    
    var args = $("#payments_form").serializeArray();
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/payments/request_m2/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                confirmation("Your request for payment has been sent.");
                $("#payment-form").slideUp(1000, function(){
                    $("#payment-form").html("");
                });
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong requestiong your payment. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_get_form(e, node, form_type){
    e.preventDefault();

    args = [{"name": "form_type", "value": form_type}];
    args = args.concat(API_KEYS); 
    
    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_profile_form/",
        data: args,
        success: function(data){
            if (data.status == false) {
                error(data.msg);
            }
            else {
                if(data.form_type == "avatar"){
                    $("#image-form").hide();
                    $("#image-form").html(data.rendered);
                    $("#image-form").slideDown(600);
                } else if (data.form_type == "direct_questions"){
                    $("#direct-questions-form").hide();
                    $("#direct-questions-form").html(data.rendered);
                    $("#direct-questions-form").slideDown(600);
                } else if (data.form_type == "bio"){
                    $("#edit-bio-form").hide();
                    $("#edit-bio-form").html(data.rendered);
                    $("#edit-bio-form").slideDown(600, function(){
                        $("#bio-editbox").focus();
                        $("#bio-editbox").select();
                    });
                } else if (data.form_type == "other_profiles"){
                    $("#edit-profiles-form").hide();
                    $("#edit-profiles-form").html(data.rendered);
                    $("#edit-profiles-form").slideDown(600);
                } else if (data.form_type == "payments"){
                    $("#payment-form").hide();
                    $("#payment-form").html(data.rendered);
                    $("#payment-form").slideDown(600);
                }
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the form. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function onclick_toggle_stats(e, node){
    e.preventDefault();
    
    if($(node).hasClass("twisty-minus")){
        $(node).removeClass("twisty-minus").addClass("twisty-plus");
        $("#stats-container").slideUp("fast");
    } else {
        $(node).removeClass("twisty-plus").addClass("twisty-minus");
        $("#stats-container").slideDown("fast");
    }
}

function onclick_activity_pagination(e, node){
    e.preventDefault();

    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading Page...</span>" );
    $("#tab-loading").show();

    page = $(node).attr("page");
    load_tab("activity", page);
}

function onclick_links_pagination(e, node){
    e.preventDefault();

    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading Page...</span>" );
    $("#tab-loading").show();

    page = $(node).attr("page");
    load_search_subtab(node, "links-submitted", page);
}

function onclick_answers_pagination(e, node){
    e.preventDefault();

    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading Page...</span>" );
    $("#tab-loading").show();

    page = $(node).attr("page");
    filter = $(node).attr("filter");
    elm = $(".active-tablink");
    load_answers_subtab(elm, filter, page);
}

function onclick_tasks_pagination(e, node){
    e.preventDefault();

    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading Page...</span>" );
    $("#tab-loading").show();

    page = $(node).attr("page");
    filter = $(node).attr("filter");
    elm = $(".active-tablink");
    load_tasks_subtab(elm, filter, page);
}

function set_profile_tabs(){
    $("#activity-link").click(function (e) {
        e.preventDefault();
        $(".tabs-nav>li").removeClass("tabs-selected");
        $("#activity-tab").addClass("tabs-selected");
        
        load_tab("activity");
    });

    $("#answers-link").click(function (e) {
        e.preventDefault();
        $(".tabs-nav>li").removeClass("tabs-selected");
        $("#answers-tab").addClass("tabs-selected");

        load_tab("answers");
        setTimeout('load_answers_subtab(null, "asked", 1);', 200);
    });
    
    $("#tasks-link").click(function (e) {
        e.preventDefault();
        $(".tabs-nav>li").removeClass("tabs-selected");
        $("#tasks-tab").addClass("tabs-selected");

        load_tab("tasks");
        setTimeout('load_tasks_subtab(null, "all", 1);', 200);
    });

    $("#search-link").click(function (e) {
        e.preventDefault();
        $(".tabs-nav>li").removeClass("tabs-selected");
        $("#search-tab").addClass("tabs-selected");

        load_tab("search");
        setTimeout('load_search_subtab(null, "pages-managed", 1);', 200);
    });

    $("#settings-link").click(function (e) {
        e.preventDefault();
        $(".tabs-nav>li").removeClass("tabs-selected");
        $("#settings-tab").addClass("tabs-selected");

        load_tab("settings");
    });

    $("#friends-link").click(function (e) {
        e.preventDefault();
        $(".tabs-nav>li").removeClass("tabs-selected");
        $("#profile-friends-tab").addClass("tabs-selected");

        load_tab("friends");
        setTimeout('load_friend_tab(null, "friends", 1);', 200);
        $("#friends-tab").addClass("active-tablink");
    });
}    

function load_tab(tab, page){
    if(!page){
        var page = 1
    }
    
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();
    
    var args = [ {"name": "tab_type", "value": tab}, {"name": "page", "value": page }, {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username } ];
    args = args.concat(API_KEYS);

    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_profile_tab/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#current-tab").fadeIn(500);
            } else {
                $("#current-tab").hide();
                $("#current-tab").html(data.rendered_tab);
                $("#tab-loading").hide();
                $("#current-tab").fadeIn(500);
                if(tab == "activity"){
                  if(!$.browser.msie){
                      fuzzy_headers();
                  }
                } 
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#current-tab").fadeIn(500);
        }
    });
}

function load_search_subtab(node, filter, page) {
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    var args = [ {"name": "subtab", "value": filter}, {"name": "page", "value": page}, {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username } ];
    args = args.concat(API_KEYS);
    
    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_search_subtab/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#search-subtab").fadeIn(500);
            } else {

                $(".tablink").removeClass("active-tablink");

                if(node == null){
                    $("#pages-managed-tab").addClass("active-tablink");
                } else {
                    node.addClass("active-tablink");
                }

                //$("#search-subtab").hide();
                $("#search-subtab").html(data.rendered_tab);
                $("#tab-loading").hide();
                $("#search-subtab").fadeIn(500);
                fuzzy_headers();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#search-subtab").fadeIn(500);
        }
    });
}

function load_answers_subtab(node, filter, page){
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    var args = [ {"name": "filter", "value": filter}, {"name": "page", "value": page}, {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username } ];
    args = args.concat(API_KEYS);

    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_answers_subtab/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#answers-subtab").fadeIn(500);
            } else {

                $(".tablink").removeClass("active-tablink");
                if(node == null){
                    $("#all-questions-tab").addClass("active-tablink");
                } else {
                    node.addClass("active-tablink");
                }

                //$("#answers-subtab").hide();
                $("#answers-subtab").html(data.rendered_tab);
                $("#tab-loading").hide();
                $("#answers-subtab").fadeIn(500);
                fuzzy_headers();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#answers-subtab").fadeIn(500);
        }
    });
}

function load_answers_subtab_tips(node, filter, page){
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    var filter_list = $(node).attr("data-filter")

    var args = [ {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username }, {"name": "filter_list", "value": filter_list } ];
    args = args.concat(API_KEYS);

    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_answers_subtab_tips/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#answers-subtab").fadeIn(500);
            } else {

                $(".tablink").css("font-weight", "normal");
                if(node == null){
                    $("#all-questions-tab").css("font-weight", "bold");
                } else {
                    node.css("font-weight", "bold");
                }

                $("#answers-subtab").hide();
                $("#answers-subtab").html(data.rendered_tab);
                $("#tab-loading").hide();
                $("#answers-subtab").fadeIn(500);
                fuzzy_headers();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#answers-subtab").fadeIn(500);
        }
    });
}

function load_tasks_subtab_tips(node, filter, page){
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    var filter_list = $(node).attr("data-filter")

    var args = [ {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username }, {"name": "filter_list", "value": filter_list } ];
    args = args.concat(API_KEYS);

    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_tasks_subtab_tips/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#tasks-subtab").fadeIn(500);
            } else {

                $(".tablink").css("font-weight", "normal");
                if(node == null){
                    $("#all-tasks-tab").css("font-weight", "bold");
                } else {
                    node.css("font-weight", "bold");
                }

                $("#tasks-subtab").hide();
                $("#tasks-subtab").html(data.rendered_tab);
                $("#tab-loading").hide();
                $("#tasks-subtab").fadeIn(500);
                fuzzy_headers();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#tasks-subtab").fadeIn(500);
        }
    });
}

function load_tasks_subtab(node, filter, page){
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    var args = [ {"name": "filter", "value": filter}, {"name": "page", "value": page}, {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username } ];
    args = args.concat(API_KEYS);
 
    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_tasks_subtab/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#tasks-subtab").fadeIn(500);
            } else {     
                $(".tablink").removeClass("active-tablink");
                if(node == null){
                    $("#all-tasks-tab").addClass("active-tablink");
                } else {
                    node.addClass("active-tablink");
                }

                //$("#tasks-subtab").hide();
                $("#tasks-subtab").html(data.rendered_tab);
                $("#tab-loading").hide();
                $("#tasks-subtab").fadeIn(500);
                fuzzy_headers();
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#tasks-subtab").fadeIn(500);
        }
    });
}

function onclick_friends_pagination(e, node, type){
    e.preventDefault();

    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    page = $(node).attr("page");
    elm = $(".active-tablink");
    load_friend_tab(elm, type, page);
}

function load_friend_tab(node, tab, page){
    if(!page){
        var page = 1
    }
    
    $("#tab-loading").html( "<span class='loading-text'>&nbsp;&nbsp;Loading...</span>" );
    $("#tab-loading").show();

    var args = [ {"name": "tab_type", "value": tab}, {"name": "page", "value": page }, {"name": "view_username", "value": view_username }, {"name": "auth_username", "value": auth_username } ];
    args = args.concat(API_KEYS);
    
    $.ajax({
        type: "GET",
        url: API_URL + "/social/get_friend_tab/",
        data: args,
        success: function(data){
            if(data.status == false){
                error(data.msg);
                $("#tab-loading").hide();
                $("#friends-subtab").fadeIn(500);
            } else {

                $(".tablink").removeClass("active-tablink");
                if(node == null){
                    $("#friends-tab").addClass("active-tablink");
                } else {
                    node.addClass("active-tablink");
                }

                $("#friends-subtab").hide();
                $("#friends-subtab").html(data.rendered_tab);
                $("#friend-count").html(data.friends_count);
                $("#fan-count").html(data.fans_count);
                $("#fanof-count").html(data.fanof_count);
                $("#tab-loading").hide();
                $("#friends-subtab").fadeIn(500);
            }
        },
        error: function(xhr, msg, thrownError){
            on_ajax_request_error("Something went wrong rendering the tab. (" + msg + " : " + xhr.status + ")");
            $("#tab-loading").hide();
            $("#friends-subtab").fadeIn(500);
        }
    });
}

function onclick_request_quota_increase(e, node) {
    $("#submit-request-busy").show();

    var args = [ {"name": "type", "value": "page_management" } ];
    args = args.concat(API_KEYS);

    $.ajax({
        url: API_URL + "/requests/quota_increase/",
        data: args,
        success: function(data){
             $("#submit-request-busy").hide();

            if(data.status == false){
                error(data.msg);
            } else {
                var parent = $(node).parent();
                $(node).remove();
                parent.append("Increase Requested")
            }
        },
        error: function(xhr, msg, thrownError){
            $("#submit-request-busy").hide();
            on_ajax_request_error("Something went wrong requesting raising your quota. (" + msg + " : " + xhr.status + ")");
        }
    });
}

function get_local_time(timeString, offset) {
	if (typeof offset == 'undefined') {
		var now = new Date();
		var now_ms = now.getTime();
		var offset = now.getTimezoneOffset();
		offset = offset * 60 * 1000;
	}

	var year = timeString.substring(0,4);
	var month = timeString.substring(4,6);
	var day = timeString.substring(6,8);
	var hour = timeString.substring(8,10);
	var minute = timeString.substring(10,12);
	var second = timeString.substring(12,14);

	var newDate = new Date();
	newDate.setFullYear(year);
	newDate.setMonth(month - 1);
	newDate.setDate(day);
	newDate.setHours(hour);
	newDate.setMinutes(minute);
	newDate.setSeconds(second);

	var ms = newDate.getTime();
	ms -= offset;
	newDate.setTime(ms);

	return newDate;
}

function fuzzy_headers() {
	var now = new Date();
	var now_ms = now.getTime();
	var offset = now.getTimezoneOffset();
	offset = offset * 60 * 1000;

	var activityRows = $("#activity tr");

	if (activityRows.length > 0) {
	    
		var firstRow = activityRows[0];
		var timestamp = $(firstRow).attr("timestamp");
		var lastTime = get_local_time(timestamp);

		var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];

		var dateString = months[lastTime.getMonth()] + " " + lastTime.getDate() + ", " + lastTime.getFullYear();

		try {
			$("#activity").html('<tbody><tr class="date-header"><td colspan="2"><h3 style="display: inline;">'+dateString+'</h3>&nbsp;<span class="light-grey"></span><div class="hr"></div></td></tr>' + $("#activity").html());
		} catch (ignoreIE) {
		}

		for (var i = 1; i < activityRows.length; i++) {
			var timestamp = $(activityRows[i]).attr("timestamp");

			if (!timestamp) {
				continue;
			}

			var localTime = get_local_time(timestamp);

			if (localTime.getMonth() != lastTime.getMonth() || localTime.getDate() != lastTime.getDate()) {
				var temp = $("#activity").html();

				temp = temp.split($(activityRows[i]).html());

				var firstPart = temp.shift();

				var veryFirstPart = "";
				var secondFirstPart = "";

				var len = firstPart.length;

				for (var s = len - 1; s >= 0; s--) {
					secondFirstPart = firstPart[s] + secondFirstPart;
					veryFirstPart = firstPart.substring(0, s);

					if (firstPart[s] == '<') {
						break;
					}
				}

				var dateString = months[localTime.getMonth()] + " " + localTime.getDate() + ", " + localTime.getFullYear();

				var newRow = '<tr class="date-header"><td colspan="2"><br /><h3 style="display: inline;">'+dateString+'</h3>&nbsp;<span class="light-grey"></span><div class="hr"></div></td></tr>';
				var newHTML = veryFirstPart + newRow + secondFirstPart + $(activityRows[i]).html() + temp.join($(activityRows[i]).html());

				try {
					$("#activity").html(newHTML);
				} catch (ignoreIE) {
				}

				lastTime = localTime;
			}
		}
	}

	var activityRows = $("#activity tr");
	var n = activityRows.length;

	var points = 0;

	for (var i = n - 1; i >= 0; i--) {
		if ($(activityRows[i]).attr("points")) {
			points += parseInt($(activityRows[i]).attr("points"), 10);
		}
		else if ($(activityRows[i]).hasClass('date-header')) {
			if (points > 0) {
				var pointString = "(+" + points + " Point";
				if (points != 1) pointString += "s";
				pointString += ")";

				$(activityRows[i]).find("span").html(pointString);
				points = 0;
			}
		}
	}
}



//-------  Member Group Management: Join/Leave Group --------
function track_add_remove_groups() {
    $("#user_group_management select").live("dblclick", function (e) {
        e.preventDefault();
        $("#user_group_error").html("");
        
        var parent = $(this);
        var joinGroup = true;
        var groupName = '';
        var groupRef = null;
        var groupAPIURL = 'join_group/';
        var viewUser = $("#view_user").val();
        
        if (parent.attr("id") == "available_groups") {
            parent.find("option").each(function () {
                if ($(this).attr("selected")) {
                    groupName = $(this).val();
                    groupRef = $(this);
                }
            });
        }
        else {
            parent.find("option").each(function () {
                if ($(this).attr("selected")) {
                    groupName = $(this).val();
                    groupRef = $(this);
                }
            });
            joinGroup = false;
            groupAPIURL = 'leave_group/';
        }
        var postData = [{name: 'group_name', value: groupName}, {name: 'view_user', value: viewUser}];
        $.post(API_URL + "/accounts/" + groupAPIURL, postData.concat(API_KEYS), function (data) {
            if (data.status == false) { $("#user_group_error").html(data.msg + "<br /><br />"); }
            else {
                if(joinGroup) {
                    $(this).remove();
                    $("#joined_groups").append(groupRef);
                }
                else {
                    $(this).remove();
                    $("#available_groups").append(groupRef);
                }
            }

        }, "json");
    });
}

//-------  User Permission Management --------
function init_user_permission_tab() {

    $(".user_perm_limit_btn").live("click", function(e) {
        
        var permName = $(this).attr("perm_name");
        var userName = $("#view_user").val();
        var limit = $("#" + permName + "_limit").val();


        var postData = [{name: 'permission_name', value: permName}, {name: 'user_name', value: userName}, {name: 'limit', value: limit}];
        $.post(API_URL + "/accounts/set_user_permission_limit", postData.concat(API_KEYS), function (data) {
            if(data.status == false) { 
                respMsg = data.msg;
                respColor = '#FAAFBE';

                $("#" + permName + "_response").remove();
                $("#" + permName + "_div").before('<div style="color: #000000; background-color: '+ respColor +'; margin-bottom: 6px; padding: 2px 2px 2px 2px;" id="' + 
                        permName + '_response">&nbsp;&nbsp;' + respMsg + '</div>');
                permResp = $("#" + permName + "_response");
                setTimeout(function() { 
                    permResp.fadeOut("normal", function() { 
                        $(this).remove(); 
                    });
                }, 2000);
            }

        }, "json");
    });

    $(".user_perm_off_radio").live("click", function(e) { // Always Off
        var permName = $(this).attr('name');
        var userName = $("#view_user").val();

        var postData = [{name: 'permission_name', value: permName}, {name: 'view_user', value: userName}, {name: 'always_on', value: 0}];
        $.post(API_URL + "/accounts/set_user_permission", postData.concat(API_KEYS), function (data) {
            if (data.status == false) { error(data.msg); }
            else {
                $("#" + permName + "_checkbox").attr('checked', false);
            }

        }, "json");
        $("#" + permName + "_limit").attr('user_limit', '');
        toggleLimit(permName, false, '');
    });

    $(".user_perm_on_radio").live("click", function(e) { // Always On
        var permName = $(this).attr('name');
        var userName = $("#view_user").val();

        var postData = [{name: 'permission_name', value: permName}, {name: 'view_user', value: userName}, {name: 'always_on', value: 1}];
        $.post(API_URL + "/accounts/set_user_permission", postData.concat(API_KEYS), function (data) {
            if (data.status == false) { error(data.msg); }
            else {
                $("#" + permName + "_checkbox").attr('checked', true);
            }

        }, "json");

        // Set limit to user always on val
        toggleLimit(permName, true, $("#" + permName + "_limit").attr('user_limit'));
    });

    $(".user_perm_group_radio").live("click", function(e) { // Group Settings
        var radioRef = $(this);
        var permName = $(this).attr('name');
        var userName = $("#view_user").val();
        var postData = [{name: 'permission_name', value: permName}, {name: 'view_user', value: userName}];

        $.post(API_URL + "/accounts/remove_user_permission", postData.concat(API_KEYS), function (data) {
            if(radioRef.attr('group_enabled') == 1) {
                $("#" + permName + "_checkbox").attr('checked', true);
            }
            else {
                $("#" + permName + "_checkbox").attr('checked', false);
            }
        }, "json");

        // Set limit to group val
        $("#" + permName + "_limit").attr('user_limit', '');
        toggleLimit(permName, false, $("#" + permName + "_limit").attr('group_limit'));

    });

    function toggleLimit(permName, enableLimit, value) {
        limitInput = $("#" + permName + "_limit");
        limitBtn = $("#" + permName + "_limit_btn");
        if(limitInput) {
            if(enableLimit) { 
                limitInput.removeAttr("disabled");
                limitBtn.removeAttr("disabled");
            }
            else { 
                limitInput.attr("disabled", "disabled");
                limitBtn.attr("disabled", "disabled");
            }
        }
        limitInput.val(value);
    }
}
