
// Initialize navt page options
function init_navt_page_options() {
    set_common_control_events('page');
    alias_check();
}


// Initialize navt category options
function init_navt_cat_options() {
    set_common_control_events('category');
    alias_check();
}


// Initialize navt user options
function init_navt_usr_options() {
    set_user_control_events();
    alias_check();
}


// Common control event handling
function set_common_control_events(wp_type) {

    // Anchor display type - controls image class accessibility
    jQuery('#navt_anchor_display_option_cat').click(function() {
        set_display_anchor_options('category');
        return false;
    });

    // Anchor display type - controls image class accessibility
    jQuery('#navt_anchor_display_option_page').click(function() {
        set_display_anchor_options('page');
        return false;
    });

    // Moving out of the image class textbox
    jQuery('#navt_imgclass_tbx').blur(function() {
        image_class_check();
        return false;
    });

    // image class textbox receives focus
    jQuery('#navt_imgclass_tbx').focus(function() {
        jQuery(this).clearTextBoxError();
        return false;
    });

    // Moving out of the alias textbox
    jQuery('#navt_item_alias').blur(function() {
        alias_check();
        return false;
    });

    // alias textbox receives focus
    jQuery('#navt_item_alias').focus(function() {
        jQuery(this).clearTextBoxError();
        return false;
    });

    set_display_anchor_options(wp_type);
    return;
}


// Control event handling for user options
function set_user_control_events() {
    // Moving out of the alias textbox
    jQuery('#navt_item_alias').blur(function() {
        alias_check();
        return false;
    });

    // alias textbox receives focus
    jQuery('#navt_item_alias').focus(function() {
        jQuery(this).clearTextBoxError();
        return false;
    });

    // Show/use Avatar
    jQuery('#navt_show_avatar_cb').click(function() {
        check_show_avatar();
        return true;
    });

    // Use default Avatar
    jQuery('#navt_use_default_avatar_cb').click(function() {
        default_avatar_check();
        return true;
    });

    // Default avatar selection
    jQuery('#navt_default_avatar_select').click(function() {
        default_avatar_selection();
        return false;
    });

    // User avatar textbox entry
    jQuery('#navt_user_avatar_txb').blur(function() {
        user_avatar_check();
        return false;
    });

    // Avatar textbox receives focus
    jQuery('#navt_user_avatar_txb').focus(function() {
        jQuery(this).clearTextBoxError();
        return false;
    });

    // hide link text checkbox
    jQuery('#navt_hide_linktext_cb').click(function() {
        hide_link_text();
        return true;
    });

    // Establish initial conditions based on control settings
    check_show_avatar();
    return;
}


// Handles anchor options for each type of item (page/category)
function set_display_anchor_options(wp_type) {

    var selected;

    if( wp_type == 'category' ) {
        selected = jQuery('#navt_anchor_display_option_cat').getSelected();

        if( selected == '128' ) {
            jQuery('#navt_append_post_count_cb').unCheckIt().disableIt();
            jQuery('#navt_append_post_count_cb_lbl').grey();
        }
        else {
            jQuery('#navt_append_post_count_cb').enableIt();
            jQuery('#navt_append_post_count_cb_lbl').ungrey();
        }
    }
    else {
        selected = jQuery('#navt_anchor_display_option_page').getSelected();
    }

    if( selected == '256' ) {
        jQuery('#navt_imgclass_lbl').ungrey();
        jQuery('#navt_imgclass_tbx').ungrey_border().enableIt();
        image_class_check();
    }
    else {
        jQuery('#navt_imgclass_lbl').grey();
        jQuery('#navt_imgclass_tbx').clearTextBoxError().grey_border().disableIt();
    }

    return;
}

// sets or clears an error condition in the alias textbox
function alias_check() {
    if( jQuery('#navt_item_alias').isBlank() ) {
        jQuery('#navt_item_alias').setTextBoxError();
    }
    else {
        jQuery('#navt_item_alias').clearTextBoxError();
    }
    return;
}

// sets or clears an error condition in the image class textbox
function image_class_check() {
    if( jQuery('#navt_imgclass_tbx').isBlank() ) {
        jQuery('#navt_imgclass_tbx').setTextBoxError();
    }
    else {
        jQuery('#navt_imgclass_tbx').clearTextBoxError();
    }
    return;
}

// Handles the 'show avatar' checkbox
function check_show_avatar() {
    if(jQuery('#navt_show_avatar_cb').isChecked()) {
        jQuery('#navt_use_default_avatar_cb_lbl').ungrey();
        jQuery('#navt_use_default_avatar_cb').enableIt();
        jQuery('#navt_hide_linktext_cb_lbl').ungrey();
        jQuery('#navt_hide_linktext_cb').enableIt();
    }
    else {
        jQuery('#navt_use_default_avatar_cb_lbl').grey();
        jQuery('#navt_use_default_avatar_cb').unCheckIt().disableIt();
        jQuery('#navt_hide_linktext_cb_lbl').grey();
        jQuery('#navt_hide_linktext_cb').unCheckIt().disableIt();
    }
    default_avatar_check();
    hide_link_text();
    return;
}

// Handles the 'use default avatar' checkbox
function default_avatar_check() {
    if(jQuery('#navt_use_default_avatar_cb').isChecked()) {
        jQuery('#navt_default_avatar_select_lbl').ungrey();
        jQuery('#navt_default_avatar_select').ungrey().enableIt();
        var image = jQuery('#navt_default_avatar_select').getSelected();
        set_avatar_image(image);
    }
    else {
        jQuery('#navt_default_avatar_select_lbl').grey();
        jQuery('#navt_default_avatar_select').grey().disableIt();
    }
    user_avatar_check();
    return;
}

// Handles the selection of a default avatar
function default_avatar_selection() {
    var image = jQuery('#navt_default_avatar_select').getSelected();
    set_avatar_image(image);
    return;
}

// Handles the textbox for the user specified avatar path
function user_avatar_check() {
    var show_avatar = jQuery('#navt_show_avatar_cb').isChecked();
    var use_default = jQuery('#navt_use_default_avatar_cb').isChecked();
    var check_for_user_entry = 0;

    if( show_avatar ) {
        if( use_default ) {
            jQuery('#navt_user_avatar_txb_lbl').grey();
            jQuery('#navt_user_avatar_txb').clear().clearTextBoxError().grey_border().disableIt();
        }
        else {
            check_for_user_entry = 1;
            jQuery('#navt_user_avatar_txb_lbl').ungrey();
            jQuery('#navt_user_avatar_txb').ungrey_border().enableIt();
            var user_entry = jQuery('#navt_user_avatar_txb').getValue();
            var image = jQuery('#navt_users_saved_avatar_url').getValue();

            if( !user_entry.isEmpty() ) {
                image = jQuery('#navt_user_avatar_txb').getValue();
                jQuery('#navt_users_saved_avatar_url').setValue(image);
            }
            jQuery('#navt_user_avatar_txb').setValue(image);
            set_avatar_image(image);
        }
    }
    else {
        var image = jQuery('#navt_user_avatar_txb').getValue();
        jQuery('#navt_users_saved_avatar_url').setValue(image);
        jQuery('#navt_user_avatar_txb_lbl').grey();
        jQuery('#navt_user_avatar_txb').clear().clearTextBoxError().grey_border().disableIt();
    }

    if( check_for_user_entry ) {
        if( jQuery('#navt_user_avatar_txb').isBlank() ) {
            jQuery('#navt_user_avatar_txb').setTextBoxError();
        }
    }
    return;
}

// Handles the avatar image
function set_avatar_image(image) {
    jQuery('#navt_avatar_image').attr('src', image);
    return;
}

// Handles the 'hide link text' checkbox setting
function hide_link_text() {

    if(jQuery('#navt_hide_linktext_cb').isChecked()) {
        jQuery('#navt_append_post_count_cb_lbl').grey();
        jQuery('#navt_inc_email_address_cb_lbl').grey();
        jQuery('#navt_inc_website_address_cb_lbl').grey();
        jQuery('#navt_inc_bio_cb_lbl').grey();
        jQuery('#navt_append_post_count_cb').unCheckIt().disableIt();
        jQuery('#navt_inc_email_address_cb').unCheckIt().disableIt();
        jQuery('#navt_inc_website_address_cb').unCheckIt().disableIt();
        jQuery('#navt_inc_bio_cb').unCheckIt().disableIt();
    }
    else {
        jQuery('#navt_append_post_count_cb_lbl').ungrey();
        jQuery('#navt_inc_email_address_cb_lbl').ungrey();
        jQuery('#navt_inc_website_address_cb_lbl').ungrey();
        jQuery('#navt_inc_bio_cb_lbl').ungrey();
        jQuery('#navt_append_post_count_cb').enableIt();
        jQuery('#navt_inc_email_address_cb').enableIt();
        jQuery('#navt_inc_website_address_cb').enableIt();
        jQuery('#navt_inc_bio_cb').enableIt();
    }
    return;
}

// -------------------------------------------------------------------------
// My jQuery extensions - quick composites
// -------------------------------------------------------------------------
jQuery.fn.extend({

    // is present - returns true if the DOM element is present
    isPresent: function() {
        return( this[0] ? 1: 0 );
    },

    // Is a checkbox ticked ?
    isChecked: function() {
        return(this.isPresent() ? ( this.attr('checked') ? 1: 0 ) : 0 );
    },

    // Uncheck a checkbox
    unCheckIt: function() {
        if( this.isPresent() ) return(this.removeAttr('checked'));
    },

    // Enable something
    enableIt: function() {
        if(this.isPresent()) return(this.removeAttr('disabled'));
    },

    // Disable something
    disableIt: function() {
        if(this.isPresent()) return( this.attr('disabled', 'disabled'));
    },

    // Clear text in a textbox
    clear: function() {
        return(this.val(''));
    },

    // Is this textbox empty?
    isBlank: function() {
        var c = this.val();
        return( c.isEmpty() );
    },

    // Put a red border around this textbox
    setTextBoxError: function() {
        this.css({border: '1px solid red'});
        return(this);
    },

    // Put a black border around this textbox
    clearTextBoxError: function() {
        this.css({border: '1px solid black'});
        return(this);
    },

    // Returns the value of an <input> control
    getValue: function() {
        return(this.val());
    },

    // Set a value
    setValue: function(v) {
        this.val(v);
        return(this);
    },

    // Returns the value of a <select> control
    getSelected: function() {
        return(this.val());
    },

    // Put a grey border around this textbox
    grey_border: function() {
        this.css({border: '1px solid #888'});
        return(this);
    },

    // Put a black border around this textbox
    ungrey_border: function() {
        this.css({border: '1px solid #000'});
        return(this);
    },

    // Make this look disabled
    grey: function() {
        this.css({ color: '#888'});
        return(this);
    },

    // Make this look available
    ungrey: function() {
        this.css({ color: '#000'});
        return(this);
    }

});

// String extensions
String.prototype.isEmpty = function() {
    var r = 1;
    if( this.length != 0 && this != '' ) {for(var i = 0; i < this.length && r; i++){if( this[i] != ' ') r = 0;}}
    return(r);
};