$(function() {

    // Navigation Events

    registerEvent({
        selector: "#title_text a",
        category: "nav",
        action: "title"
    });

    // Sidebar Events

    registerEvent({
        selector: ".signin_links",
        category: "sidebar",
        action: "forgot_password"
    });

    registerEvent({
        selector: ".sidebar_providers .sidebar_box2_header",
        category: "sidebar_fi",
        action: "header",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_library .sidebar_box2_header",
        category: "sidebar_fi",
        action: "header",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_events .sidebar_box2_header",
        category: "sidebar_fi",
        action: "header",
        label: "events"
    });

    registerEvent({
        selector: ".sidebar_providers_search",
        category: "sidebar_fi",
        action: "resource",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_library_article_list",
        category: "sidebar_fi",
        action: "resource",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_events_title",
        category: "sidebar_fi",
        action: "resource",
        label: "events"
    });

    registerEvent({
        selector: ".sidebar_providers .sidebar_box1_arrow",
        category: "sidebar_fi",
        action: "manage",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_library .sidebar_box1_arrow",
        category: "sidebar_fi",
        action: "manage",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_events .sidebar_box1_arrow",
        category: "sidebar_fi",
        action: "manage",
        label: "events"
    });

    registerEvent({
        selector: ".sidebar_providers .sidebar_box1_header",
        category: "sidebar",
        action: "header",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_library .sidebar_box1_header",
        category: "sidebar",
        action: "header",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_events .sidebar_box1_header",
        category: "sidebar",
        action: "header",
        label: "events"
    });

    registerEvent({
        selector: ".sidebar_box1_details .sidebar_providers_name",
        category: "sidebar",
        action: "resource",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_box1_details .sidebar_library_article",
        category: "sidebar",
        action: "resource",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_box1_details .sidebar_events_title",
        category: "sidebar",
        action: "resource",
        label: "events"
    });

    registerEvent({
        selector: ".sidebar_box1.sidebar_providers .sidebar_box1_arrow",
        category: "sidebar",
        action: "manage",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_box1.sidebar_library .sidebar_box1_arrow",
        category: "sidebar",
        action: "manage",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_box1.sidebar_events .sidebar_box1_arrow",
        category: "sidebar",
        action: "manage",
        label: "events"
    });

    // FHM Sidebar Events

    registerEvent({
        selector: ".sidebar_box1.sidebar_providers .sidebar_box1_count",
        category: "sidebar",
        action: "count",
        label: "providers"
    });

    registerEvent({
        selector: ".sidebar_box1.sidebar_library .sidebar_box1_count",
        category: "sidebar",
        action: "count",
        label: "library"
    });

    registerEvent({
        selector: ".sidebar_box1.sidebar_events .sidebar_box1_count",
        category: "sidebar",
        action: "count",
        label: "events"
    });

    // FHM: Splash

    registerEvent({
        selector: "#fhmsplash_pitch_demo_play",
        category: "fhm",
        action: "splash",
        label: "demo"
    });

    registerEvent({
        selector: "#fhmsplash_pitch_blurb_button",
        category: "fhm",
        action: "splash",
        label: "get_started_splash"
    });

    registerEvent({
        selector: "#fhmsplash_demo_topbar_getstarted",
        category: "fhm",
        action: "splash",
        label: "get_started_demo_topbar"
    });

    registerEvent({
        selector: "#fhmsplash_demo_text_7_button_text",
        category: "fhm",
        action: "splash",
        label: "get_started_demo_7"
    });

    registerEvent({
        selector: "#fhmsplash_signin_forgotpassword",
        category: "fhm",
        action: "splash",
        label: "forgot_password"
    });

    // FHM: Registration Confirmation

    registerEvent({
        selector: "#fhmsplash_registration_confirmation_begin_message a",
        category: "fhm",
        action: "registration",
        label: "fhm_link"
    });

    // FHM: Family Profiles

    registerEvent({
        selector: ".fhmhome_section_header_buttons select#ProfileID",
        category: "fhm",
        action: "family",
        label: "switch"
    });

    // FHM: Recommendations

    registerEvent({
        selector: ".fhmhome_section_header_name a",
        attr: "href:/Recommendation/List",
        category: "fhm",
        action: "recommendations",
        label: "header"
    });

    registerEvent({
        selector: ".recommendation_body_left .button_type1",
        attr: "href:/Recommendation/List",
        category: "fhm",
        action: "recommendations",
        label: "see_all"
    });

    registerEvent({
        selector: ".recommendation_update",
        category: "fhm",
        action: "recommendations",
        label: "update"
    });

    registerEvent({
        selector: ".recommendation_action_title",
        category: "fhm",
        action: "recommendations",
        label: "accordian"
    });

    registerEvent({
        selector: ".slidernav_items a",
        category: "fhm",
        action: "recommendations",
        label: "slider"
    });

    // FHM: Interests

    registerEvent({
        selector: ".fhmhome_interests_add_buttons a",
        category: "fhm",
        action: "interests",
        label: "add"
    });

    registerEvent({
        selector: ".fhmhome_interests_custom_form a",
        category: "fhm",
        action: "interests",
        label: "custom"
    });

    // FHM: Providers

    registerEvent({
        selector: ".fhmhome_buttons a",
        attr: "href:/providers",
        category: "fhm",
        action: "providers",
        label: "find_header"
    });

    registerEvent({
        selector: ".fhmhome_section_body a",
        attr: "href:/providers",
        category: "fhm",
        action: "providers",
        label: "find_paragraph"
    });

    registerEvent({
        selector: ".fhmhome_add_title a",
        attr: "href:/providers",
        category: "fhm",
        action: "providers",
        label: "find_add"
    });

    registerEvent({
        selector: ".fhmhome_add_button a.button_type3",
        category: "fhm",
        action: "providers",
        label: "add"
    });

    registerEvent({
        selector: ".fhmhome_provider_edit",
        category: "fhm",
        action: "providers",
        label: "edit"
    });

    // FHM: Library

    registerEvent({
        selector: ".fhmhome_buttons a",
        attr: "href:/library",
        category: "fhm",
        action: "library",
        label: "find_header"
    });

    registerEvent({
        selector: ".fhmhome_section_body a",
        attr: "href:/library",
        category: "fhm",
        action: "library",
        label: "find_paragraph"
    });

    registerEvent({
        selector: ".fhmhome_add_title a",
        attr: "href:/library",
        category: "fhm",
        action: "library",
        label: "find_add"
    });

    registerEvent({
        selector: ".fhmhome_library_edit",
        category: "fhm",
        action: "library",
        label: "edit"
    });

    // FHM: Events

    registerEvent({
        selector: ".fhmhome_buttons a",
        attr: "href:/events",
        category: "fhm",
        action: "events",
        label: "find_header"
    });

    registerEvent({
        selector: ".fhmhome_section_body a",
        attr: "href:/events",
        category: "fhm",
        action: "events",
        label: "find_paragraph"
    });

    registerEvent({
        selector: ".fhmhome_add_title a",
        attr: "href:/events",
        category: "fhm",
        action: "events",
        label: "find_add"
    });

    registerEvent({
        selector: ".fhmhome_events_edit",
        category: "fhm",
        action: "events",
        label: "edit"
    });

    // FHM: Add New & Notes

    registerEvent({
        selector: ".fhmhome_add_button a.button_type3",
        category: "fhm",
        action: "providers",
        label: "add"
    });

    registerEvent({
        selector: ".fhmhome_add_button.note a.button_type3",
        category: "fhm",
        action: "notes",
        label: "add"
    });

    registerEvent({
        selector: ".fhmhome_note_edit",
        category: "fhm",
        action: "notes",
        label: "edit"
    });

    // Providers: Splash

    registerEvent({
        selector: "#splash_providers_search_launcher_keyword",
        category: "providers",
        action: "splash",
        label: "keyword"
    });

    registerEvent({
        selector: "#splash_providers_search_launcher_location",
        category: "providers",
        action: "splash",
        label: "clinic"
    });

    registerEvent({
        selector: "#splash_providers_search_launcher_name",
        category: "providers",
        action: "splash",
        label: "name"
    });

    // Providers: Results

    registerEvent({
        selector: ".provider_search",
        category: "providers",
        action: "results",
        label: "search"
    });

    registerEvent({
        selector: ".splash_providers_featured_locations_more",
        category: "providers",
        action: "results",
        label: "more_locations"
    });

    registerEvent({
        selector: ".splash_providers_featured_philo_more",
        category: "providers",
        action: "results",
        label: "more_about_this"
    });

    registerEvent({
        selector: "#results_provider_sorting input",
        category: "providers",
        action: "results",
        label: "sorting"
    });

    // Providers: Profile

    registerEvent({
        selector: "#tab_basics",
        category: "providers",
        action: "profile",
        label: "tab_basics"
    });

    registerEvent({
        selector: "#tab_credentials",
        category: "providers",
        action: "profile",
        label: "tab_credentials"
    });

    registerEvent({
        selector: "#tab_payment",
        category: "providers",
        action: "profile",
        label: "tab_payment"
    });

    // Providers: Locations

    registerEvent({
        selector: "#tab_map",
        category: "providers",
        action: "locations",
        label: "tab_map"
    });

    registerEvent({
        selector: "#tab_providers",
        category: "providers",
        action: "locations",
        label: "tab_providers"
    });

    registerEvent({
        selector: "#tab_more",
        category: "providers",
        action: "locations",
        label: "tab_more"
    });

    // Providers: Brands

    registerEvent({
        selector: "#tab_locations",
        category: "providers",
        action: "brands",
        label: "tab_locations"
    });

    registerEvent({
        selector: "#tab_payment_brands",
        category: "providers",
        action: "brands",
        label: "tab_payment"
    });

    registerEvent({
        selector: "#tab_contact",
        category: "providers",
        action: "brands",
        label: "tab_contact"
    });

    // Library: Splash

    registerEvent({
        selector: "#splash_library_search_launcher_keyword",
        category: "library",
        action: "splash",
        label: "keyword"
    });

    registerEvent({
        selector: "#splash_library_search_launcher_atoz",
        category: "library",
        action: "splash",
        label: "atoz"
    });

    // Library: Results

    registerEvent({
        selector: "#splash_library_search_header_toggle",
        category: "library",
        action: "results",
        label: "toggle"
    });

    registerEvent({
        selector: "#results_library_quickoptions input",
        category: "library",
        action: "results",
        label: "type"
    });

    // Library: Profile

    registerEvent({
        selector: "#profile_jump",
        category: "library",
        action: "profile",
        label: "jump_to"
    });

    registerEvent({
        selector: "#tab_images",
        category: "library",
        action: "profile",
        label: "tab_images"
    });

    registerEvent({
        selector: "#tab_links",
        category: "library",
        action: "profile",
        label: "tab_links"
    });

    registerEvent({
        selector: "#tab_references",
        category: "library",
        action: "profile",
        label: "tab_references"
    });

    // Library: Series

    registerEvent({
        selector: "#series_highlights_pages a",
        category: "library",
        action: "series",
        label: "highlights"
    });

    // Events: Splash

    registerEvent({
        selector: "#splash_events_search_launcher_topic",
        category: "events",
        action: "splash",
        label: "topic"
    });

    registerEvent({
        selector: "#splash_events_search_launcher_upcoming",
        category: "events",
        action: "splash",
        label: "upcoming"
    });

    // Events: Results

    registerEvent({
        selector: ".results_events_refine_input a",
        category: "events",
        action: "results",
        label: "criteria_x"
    });

    registerEvent({
        selector: "#results_events_refine_right",
        category: "events",
        action: "results",
        label: "change_criteria"
    });

    registerEvent({
        selector: "#splash_events_search_startover a",
        category: "events",
        action: "results",
        label: "start_over"
    });

    registerEvent({
        selector: ".results_events_top_about_more",
        category: "events",
        action: "results",
        label: "more_about_this"
    });

    registerEvent({
        selector: "#results_events_sorting input",
        category: "events",
        action: "results",
        label: "sorting"
    });

    // Events: Profiles

    registerEvent({
        selector: "#tab_contact_events",
        category: "events",
        action: "profile",
        label: "tab_contact_events"
    });

    registerEvent({
        selector: "#tab_speakers",
        category: "events",
        action: "profile",
        label: "tab_speakers"
    });

    registerEvent({
        selector: "#tab_preparing",
        category: "events",
        action: "profile",
        label: "tab_preparing"
    });

    registerEvent({
        selector: ".getDirections",
        category: "events",
        action: "profile",
        label: "get_directions"
    });

    // Appt/Register Buttons

    registerEvent({
        selector: "#profile_button_appt, #profile_button_appt span, #profile_button_appt2, #profile_button_appt2 span",
        category: "special",
        action: "appt",
        label: "appt"
    });

    // Site Tools

    registerEvent({
        selector: ".site_tools_button_providers_save",
        category: "site_tools",
        action: "providers",
        label: "save"
    });

    registerEvent({
        selector: ".site_tools_button_providers_share",
        category: "site_tools",
        action: "providers",
        label: "share"
    });

    registerEvent({
        selector: ".site_tools_button_providers_like",
        category: "site_tools",
        action: "providers",
        label: "like"
    });

    registerEvent({
        selector: ".site_tools_button_providers_print",
        category: "site_tools",
        action: "providers",
        label: "print"
    });

    registerEvent({
        selector: ".site_tools_button_library_save",
        category: "site_tools",
        action: "library",
        label: "save"
    });

    registerEvent({
        selector: ".site_tools_button_library_share",
        category: "site_tools",
        action: "library",
        label: "share"
    });

    registerEvent({
        selector: ".site_tools_button_library_like",
        category: "site_tools",
        action: "library",
        label: "like"
    });

    registerEvent({
        selector: ".site_tools_button_library_print",
        category: "site_tools",
        action: "library",
        label: "print"
    });

    registerEvent({
        selector: ".site_tools_button_events_save",
        category: "site_tools",
        action: "events",
        label: "save"
    });

    registerEvent({
        selector: ".site_tools_button_events_share",
        category: "site_tools",
        action: "events",
        label: "share"
    });

    registerEvent({
        selector: ".site_tools_button_events_like",
        category: "site_tools",
        action: "events",
        label: "like"
    });

    registerEvent({
        selector: ".site_tools_button_events_print",
        category: "site_tools",
        action: "events",
        label: "print"
    });

    registerEvent({
        selector: ".site_tools_button_fhm_save",
        category: "site_tools",
        action: "fhm",
        label: "save"
    });

    registerEvent({
        selector: ".site_tools_button_fhm_share",
        category: "site_tools",
        action: "fhm",
        label: "share"
    });

    registerEvent({
        selector: ".site_tools_button_fhm_like",
        category: "site_tools",
        action: "fhm",
        label: "like"
    });

    registerEvent({
        selector: ".site_tools_button_fhm_print",
        category: "site_tools",
        action: "fhm",
        label: "print"
    });

    // Client Header

    registerEvent({
        selector: "#client_header a",
        category: "client_header",
        action: "exit"
    });

    // Client Footer

    registerEvent({
        selector: "#client_footer a",
        category: "client_footer",
        action: "exit"
    });

});

function registerEvent(values) {
    if (values["attr"]) {
        var parts = values["attr"].split(":");
        $(values["selector"]).each(function() {
            if ($(this).attr(parts[0]) != undefined && $(this).attr(parts[0]).indexOf(parts[1]) > -1) {
                $(this).click(function() {
                    values["obj"] = $(this);
                    processGAEvent(values);
                    return false;
                });
            }
        });
    } else {
        $(values["selector"]).click(function() {
            values["obj"] = $(this);
            processGAEvent(values);
            return false;
        });
    }
}

function processGAEvent(values) {
    if (!values["obj"] || !values["category"] || !values["action"]) {
        return;
    }

    if (!values["label"] && !values["value"]) {
        _gaq.push(['_trackEvent', values["category"], values["action"]]);
        //alert(values["category"]+", "+values["action"]);
    } else if (!values["value"] && values["label"]) {
        _gaq.push(['_trackEvent', values["category"], values["action"], values["label"]]);
        //alert(values["category"]+", "+values["action"]+", "+values["label"]);
    } else {
        if (values["value"] == "inner") {
            values["value"] = $(values["obj"]).html();
        } else if (values["value"] == "field") {
            values["value"] = $(values["obj"]).val();
        }
        _gaq.push(['_trackEvent', values["category"], values["action"], values["label"], values["value"]]);
        //alert(values["category"]+", "+values["action"]+", "+values["label"]+", "+values["value"]);
    }

    var obj = $(values["obj"]);
    var href = obj.attr("href");
    var rel = obj.attr("rel");
    if ((rel != undefined && rel != "external") && (href != undefined && href != false && href != "")) {
        location.href = $(values["obj"]).attr("href");
    }
}
