﻿/// <reference path="jquery-1.4.2.min.js" />

//BEGIN GENERAL FUNCTIONS

function debug(msg) 
{
    if ((_console == null) || (_console.closed)) 
    {
        _console = window.open("", "console", "width=800,height=600,resizable,scrollbars");
        _console.document.open("text/plain");
    }

    _console.focus();
    _console.document.writeln(msg);
}

function initializeGlobalStyles(selector)
{

    if (selector) {
        $(selector + ' input').addClass('ui-corner-all centerText');
        $(selector + ' textarea').addClass('ui-corner-all');
    }
    else {
        $('input').addClass('ui-corner-all centerText');
        $('textarea').addClass('ui-corner-all');
    }
    
}

//END GENERAL FUNCTIONS

//BEGIN MASTER PAGE FUNCTIONS

function initializeMasterPage()
{
    $("#nav li a").hover(
    function () 
    {
        $(this).animate({ "background-color": "#4C8DE2" }, "slow");
    },
    function () 
    {
        $(this).stop();
        this.style.backgroundColor = "transparent";
    });

    //set CSS styles
    $('.cContent').addClass('someContent ui-corner-all ui-widget-content');
    $('.cHeading1').addClass('ui-corner-all ui-widget-content divHeading');
    $('.cHeading2').addClass('ui-widget-header ui-corner-all ui-widget-content divHeading');
    $('.cHeading3').addClass('ui-widget-header ui-corner-all ui-widget-content divHeadingSmall');

    initializeGlobalStyles()

}

//END MASTER PAGE FUNCTIONS

//BEGIN RECRUITING BOARD FUNCTIONS

//set prospect position numbers
function processRecruitingBoardPositions()
{
    $(".positionColumn").each(function () 
    {
        var columns = $(this).find(".prospect-position");
        for (var i = 0, il = columns.length; i < il; i++) { columns[i].innerHTML = i + 1; }
    });
}

//programmatically reposition the prospect
function positionProspect()
{
    var oldPosition = prospect.find(".prospect-position")[0].innerHTML;
    var newPosition = $('#dropPosition').val();

    if (oldPosition != newPosition)
    {
        var column = prospect.closest(".positionColumn-content");
        prospect.remove();
        var prospects = column.children();

        if (prospects.length < newPosition)
        {
            prospect.insertAfter(prospects.eq(newPosition - 2)); 
        }
        else
        { prospect.insertBefore(prospects.eq(newPosition - 1)); }

        processRecruitingBoardPositions();
        addPositionTrigger(prospect.find(".prospect-position"));
    }
       
    $('#divPositionModal').jqmHide();
}

//add trigger for prospect positions
function addPositionTrigger(obj)
{
    obj.dblclick(function () 
    {

        $('#dropPosition').html("");

        var x = $(this);

        prospect = x.closest(".prospect");

        var columns = x.closest(".positionColumn-content").find(".prospect-position");
        var drop = $('#dropPosition');
        var y;

        for (var i = 0, il = columns.length; i < il; i++) {
            y = i + 1;
            //build options based on the current column
            drop.append($("<option></option>").attr("value", y).text(y));
        }

        //set the selected item based on the current prospect
        drop.val(x.html());

        $('#divPositionModal').jqmShow();

    });
}

function initializeRecruitingBoard()
{

    var body = $("body");
    var bodyWidth = body.width();
    
    //initialize modal dialogs
    $('#divPositionRecruitBoardModal,#divPositionModal').jqm();

    //add trigger for headers
    $(".positionColumn-header").dblclick(function () { $('#divPositionRecruitBoardModal').jqmShow(); });

    addPositionTrigger($(".prospect-position"));
    
    //make columns sortable
    $(".warboardContainer").sortable(
    {
        handle: '.positionColumn-header',
        opacity: 0.5
    });

    //make prospects sortable
    $(".positionColumn-content").sortable(
    {
        connectWith: '.positionColumn-content',
        opacity: 0.5,
        stop: function (event, ui) { processRecruitingBoardPositions(); }
    });

    //initialize tabs and bind tab show event in order to set proper width for the tab based on the # of columns
    //this prevents wrapping of columns
    var $tabs = $("#tabs").tabs({ show: function (event, ui) 
    {
        var $theTabs = $("#tabs");
        var addPixels = 235 * $("#tabs-" + ($theTabs.tabs('option', 'selected') + 1)).find(".positionColumn").length;
        $theTabs.css("min-width", addPixels);
        body.css("min-width", bodyWidth + addPixels - 1100);
    }
    });

    //make tabs droppable for prospects
    var $tab_items = $("ul:first li", $tabs).droppable(
    {
        accept: ".positionColumn-content div",
        hoverClass: "tabHover",
        tolerance: "pointer",
        drop: function (ev, ui)
        {
            var $item = $(this);
            var $list = $($item.find('a').attr('href')).find('.sortableUndefined');

            ui.draggable.hide('slow', function () 
            {
                $tabs.tabs('select', $tab_items.index($item));
                $(this).appendTo($list).show().animate({ opacity: 1 }, function () { processRecruitingBoardPositions(); });
            });
        }
    });

    processRecruitingBoardPositions();

    $("button:first").button({ icons: { primary: 'ui-icon-disk'} });

}

//build XML data and save board via AJAX
function processBoardData()
{
    var saveRecruitBoardXML = new Array();
    var tabs = $("#tabs");
    var tabsData = tabs.children("div");

    saveRecruitBoardXML.push('<recruitBoard>');

    //cycle through each tab
    $("ul:first li", tabs).each(function (tabCtr)
    {
        //write tab info
        saveRecruitBoardXML.push('<recruitBoardTab name="');
        saveRecruitBoardXML.push($(this).text());
        saveRecruitBoardXML.push('">');
        //cycle through each col, ignoring the unassigned cols
        tabsData.eq(tabCtr).find(".positionColumn:not(.unassigned)").each(function (colCtr)
        {
            saveRecruitBoardXML.push('<recruitBoardColumn name="');
            saveRecruitBoardXML.push($(this).children("div:first-child").text());
            saveRecruitBoardXML.push('" index="');
            saveRecruitBoardXML.push(colCtr);
            saveRecruitBoardXML.push('">');
            //cycle through each player
            $(this).find(".prospect").each(function (playerCtr)
            {
                saveRecruitBoardXML.push('<recruitBoardPlayer ID="');
                saveRecruitBoardXML.push($(this).find("input.hidPlayerID").val());
                saveRecruitBoardXML.push('" index="');
                saveRecruitBoardXML.push(playerCtr);
                saveRecruitBoardXML.push('" />');
            });
            saveRecruitBoardXML.push('</recruitBoardColumn>');
        });
        saveRecruitBoardXML.push('</recruitBoardTab>');
    });

    saveRecruitBoardXML.push('</recruitBoard>');

    //THIS GETS PASSED TO OUR AJAX SERVANT
    //saveRecruitBoardXML.join('')

    debug(saveRecruitBoardXML.join(''));

    saveRecruitBoardXML = null;
}

//END RECRUITING BOARD FUNCTIONS

//BEGIN COACH DASHBOARD FUNCTIONS

function loadCoachDashboard()
{
    $(".column").sortable({
        connectWith: '.column'
    });

    $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
			.find(".portlet-header")
				.addClass("ui-widget-header ui-corner-all")
				.prepend('<span class="ui-icon ui-icon-minusthick"></span>')
				.end()
			.find(".portlet-content");

    $(".portlet-header .ui-icon").click(function () {
        $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick");
        $(this).parents(".portlet:first").find(".portlet-content").toggle();
    });

    $(".column").disableSelection();
}

//END COACH DASHBOARD FUNCTIONS

//BEGIN PROSPECT DASHBOARD FUNCTIONS

var columnWidth = 150;
var container;

function floatHelper() {

    var txtArray = new Array();

    txtArray.push('#divPersonalInfo1');
    txtArray.push('#divPersonalAddresses');
    txtArray.push('#divPersonalInfo2');
    txtArray.push('#divRecruitingOwnership');
    txtArray.push('#divCommSummary');
    txtArray.push('#divSportStats');
    txtArray.push('#divOfferInfo');
    txtArray.push('#divFamilyInfo');
    txtArray.push('#divFatherInfo');
    txtArray.push('#divMotherInfo');
    txtArray.push('#divHSInfo');
    txtArray.push('#divLegalGuardianInfo');
    txtArray.push('#divAthleticInfo');
    txtArray.push('#divAcademicInfo');
    txtArray.push('#divInfluenceFactors');
    txtArray.push('#divReferences');

    $(txtArray.join(',')).children().each(function () {
        container = $(this);
        container.width(Math.ceil(container.width() / columnWidth) * columnWidth);
    })

    txtArray = null;

    floatHelperSpecific("#divPersonalAddresses > div");

}

function floatHelperSpecific(selector) {
    $(selector).children().each(function () {
        container = $(this);
        container.width(Math.ceil(container.width() / columnWidth) * columnWidth);
    })
}

function tabHelper()
{

    var $tabs = $("#tabsProspectDashboard");

    $tabs.tabs({ cookie: {} });

    //this removing/adding of this class is needed for calculating column widths
    $(".ui-tabs-panel").each(function () { $(this).removeClass('ui-tabs-hide'); });
    floatHelper();
    $("ui-tabs-panel").each(function () { $(this).addClass('ui-tabs-hide'); });

    var selectedTab = $tabs.tabs('option', 'selected');

    //this is needed for IE (IE8 at least)
    if (selectedTab == 0) {
        $tabs.tabs("select", 1);
        $tabs.tabs("select", 0);
    }
    else {
        $tabs.tabs("select", 0);
        $tabs.tabs("select", selectedTab);
    }

}

function initializeProspectDashboard()
{

    $('.cStatHeading').addClass('leftStat ui-widget-header ui-corner-all ui-widget-content divHeading');

    tabHelper();

    var dateX = new Date();

    $("#txtOfferDate,#txtCommitDate,#txtSignedDate,#txtRecruitDOB,#txtHSCoachDOB").datepicker({ 
        changeMonth: true,
        changeYear: true,
        yearRange: '1985:' + dateX.getFullYear()
    });

    $("#txtRecruitCity").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "http://ws.geonames.org/searchJSON",
                dataType: "jsonp",
                data: {
                    country: 'US',
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
                success: function (data) {
                    response($.map(data.geonames, function (item) {
                        return {
                            label: item.name + (item.adminName1 ? ", " + item.adminName1 : ""),
                            city: item.name,
                            state: item.adminName1
                        }
                    }))
                }
            })
        },
        minLength: 2,
        select: function (event, ui) {
            $(this).val(ui.item.city);
            $('#ctl00_cphMain_dropRecruitState').val(ui.item.state);
            setTimeout("$('#txtRecruitZIP').focus();", 250);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });
    
    $("#txtRecruitZIP").mask("99999");
    $("#txtRecruitHomePhone,#txtRecruitMobilePhone").mask("(999) 999-9999");
    $("#txtRecruitSSN").mask("999-99-9999");

    $("button:first").button({ icons: { primary: 'ui-icon-plusthick'} });

}

function addRecruitAddress()
{
    $.ajax({
        type: "GET",
        url: "../ajaxServants/ProspectDashboard/GetNewAddressBox.aspx",
        success: function (returnData) {
            if (returnData.substr(0, 4) == "Fail") { alert(returnData); }
            else {
                $('#divPersonalAddresses').append(returnData);
                initializeGlobalStyles('#divPersonalAddresses');
                floatHelperSpecific("#divPersonalAddresses > div");
            }
        },
        error: function (xhr, textStatus, errorThrown) {
            alert("An error occurred.\n\nxhr response: " + xhr.responseText + "\n\nHTTP status code: " + xhr.status + "\n\nerrorThrown: " + errorThrown);
        }
    });
}

//END PROSPECT DASHBOARD FUNCTIONS