﻿var AJAX_LOADER_IMAGE_HTML = '<img src="/images/ajax-loader.gif" alt="Loading" />';

$(document).ready(function() {
    setupNav();
    setupFilterResults();
    setupAutoCompletes();
    showStudentAIScores();
    
    $("input").checkBox();
});

function setupFilterResults() {
	$(".filter-options").hide();

    $("a.filter-results").click(function(event) {
        event.preventDefault();
        var filterOptions = $(this).parent().next(".filter-options");
        $(filterOptions).slideDown("fast");
    });
    
    $(".filter-options .cancel").click(function(event) {
        var filterOptions = $(this).parents(".filter-options");
        var filterLink = $(filterOptions).prev("p").find("a.filter-results");
        
        $(filterOptions).slideUp("slow");
    });


}


function showStudentAIScores() {
    $(".action-icon-score").each(function() {
        var userId = $(this).attr("id").replace("student", "");
        var container = $(this);
        $(container).after("<div class=\"tooltip\">" + AJAX_LOADER_IMAGE_HTML + "</div>");

        $(container).html(AJAX_LOADER_IMAGE_HTML);

        $.getJSON(
                "/Student/ShowActionProfile",
                { userId: userId },
                function(json) {
                    var AIHtml = '';

                    $.each(json, function(i, item) {
                        var imageHtml = "<img src=\"/ActionIcon/ActionIconImage/" + item.categoryId + "\">";
                        AIHtml = AIHtml + imageHtml + item.score;
                    });

                    $(container).html(AIHtml);
                }
            );


        $(this).tooltip({
            position: 'center right',
            onBeforeShow: function() {
                if (!$(container).next(".tooltip").hasClass("loaded")) {
                    $.get('/Student/ActionIconPopup', { userId: userId },
                            function(data) {
                                $(container).next(".tooltip").html(data);
                            });
                    $(container).next(".tooltip").addClass("loaded");
                }

            }
        }).dynamic();


    });
    

}


function showMessage(header, message, type) {
    var messageHtml = "<div class='message' style='display:none'><h2></h2></div>";

    if ($(".message").size() == 0) {
        $("#content").prepend(messageHtml);
    }
    else {
        $(".message").replaceWith(messageHtml);
    }
    
    $(".message").removeAttr("class").attr("class", "message " + type);
    $(".message h2").text(header);
    $(".message h2").after(message);
    $(".message").fadeIn("slow");
    scrollToTopOfPage();
}

function setupNav() {
    $("#menu ul#nav").superfish({ autoArrows: false, dropShadows: true });
}

function setupFormValidation(formSelector)
{		
    addValidationMessageBox();

    $(formSelector).validate({
	   ignore: ":hidden",
	   errorContainer: ".message.validation",
	   errorLabelContainer: ".message.validation ul",
	   wrapper: "li",
	   errorElement: "span",
	   showErrors: function(errorMap, errorList)
	   {
		   this.defaultShowErrors();

			var messageBox = $(".message.validation");
			var messageList = $(messageBox).find("ul");
			
			// have to handle showing and hiding the messagebox
			// ourselves because of messages generated server side
			if ($(messageList).find("li.server").size() != 0)
			{
				$(messageBox).show();
				$(messageList).show();
			}
			
		},
	    invalidHandler: function(form, validator) {
			scrollToTopOfPage();
		}
	});
}

function setupAutoCompletes() {
    $(".job").autocomplete('/Career/JobTitles');
    $(".location").autocomplete('/StudentData/LocationNames');
    $(".company").autocomplete('/Company/CompanyNames');
    $(".major").autocomplete('/StudentData/MajorNames');
}

function addValidationMessageBox() {
    if ($(".message.validation").size() == 0) {
        $("#content").prepend("<div class='message validation' style='display:none'><h2>There are some problems</h2><ul /></div>");
    }
}

function scrollToTopOfPage() {
    $("body, html").animate({ scrollTop: 0 }, 'slow');
}

// Assumes both name and id are in the format fieldname-XX
// where XX is an integer
function updateInputNames(selector) {
    var index = 1;
    $(selector).each(function() {
        container = $(this);

        $(container).find(':input').each(function() {
            var newName = $(this).attr('id').replace(/(.*)-[0-9]*/, '$1-' + index);

            $(this).attr("id", newName);
            $(this).attr("name", newName);
        });

        index++;
    });
}
