var userRoles = {scout:1, coach:2, member:3, player:5};
var playerControlRenderTypes = {normal: "normal", notabs: "notabs"};
var timeOut = null;

function playerProfile(options)
{
    var self = this;
    self.idSuffix = options["id"];
    self.playerControlRenderType = options["playerControlRenderType"];
    self.playerSelecCallBack = options["playerSelecCallBack"];
    self.playerSaveCallBack = options["playerSaveCallBack"];
    self.playerAutoSuggest = options["playerAutoSuggest"];
    self.flatMode = options["playerControlFlatMode"];
    self.additionallSuggestParams = options["playerControlAdditionalSuggestParams"];
    self.playerCreateNewControl = options["playerCreateNewControl"];

    self.showPast = false;

    self.playerProfileSelector = "div#playerProfile" + self.idSuffix;
    self.formPopupSelector = "div#formPopup" + self.idSuffix;

    self.inited = false;
    self.selectAutoSuggest = false;
    self.lastAutocompleteRequest = "";
    self.focusInValue = "";
    self.lastAutocompleteRequestNumber = 0;

    self.blurTimeout = null;

    self.teamCommitmentList = [];


    self.init = function()
    {
        if(self.inited) return;

        $(self.playerProfileSelector).ready(function(){
                    if(self.playerAutoSuggest)
                    {                       
                        $(self.playerProfileSelector + " input.autocomplete").autocompleteNative(
                                {
                                    source:function(request, response) {
                                        if(!self.lastAutocompleteRequest)
                                            self.lastAutocompleteRequest = request.term;

                                        request.requestNumber = ++self.lastAutocompleteRequestNumber;
                                        request.showPast = self.showPast;
                                        $.ajax({
                                            url: "/ScoutsCMS/ajax/autocomplete.php?t=player&"+createQueryString(self.additionallSuggestParams),
                                            dataType: "json",
                                            data: request,
                                            success: function( data ) {
                                                if(data.requestNumber != self.lastAutocompleteRequestNumber) {
                                                    $(self.playerProfileSelector + " input.autocomplete").removeClass( "ui-autocomplete-loading" );
                                                    return;
                                                }

                                                if(request.term.startsWith(self.lastAutocompleteRequest) && data.result.length < 1){
                                                    $(self.playerProfileSelector + " input.autocomplete").removeClass( "ui-autocomplete-loading" );
                                                    return;
                                                }

                                                self.lastAutocompleteRequest = "";
                                                $(self.playerProfileSelector + " input.autocomplete").removeClass( "ui-autocomplete-loading" );
                                                response( data.result );
                                            }
                                        });
                                    },
                                    delay:10,
                                    minLength:2,
                                    select: function(event, ui)
                                    {
                                        self.getPlayerInfo(event, ui);
                                        self.selectAutoSuggest = true;
                                    }
                                }
                            ).bind("keyup", function(event){
                                    if(event.keyCode == 13 && !self.selectAutoSuggest)
                                        self.checkEnteredValue();
                                    else
                                    {
                                        if(timeOut) clearTimeout(timeOut);
                                        timeOut = setTimeout(function(){self.disableAddByEmail()}, 1000);
                                    }
                                    self.selectAutoSuggest = false;
                            }).bind("blur", function(event){ self.blurTimeout = setTimeout(function(){self.checkEnteredValue();}, 1000)})
                             .bind("change", function(event){
                                 if($(event.target).val() == "")
                                 {
                                     self.ClearPlayerForm();
                                 }
                                 self.disableAddByEmail();
                         })
                    }
                $(self.playerProfileSelector + " input.autocomplete")//.focusout(function(){ $(self.playerProfileSelector + " input.playerEditControl").css("visibility", "visible");})
                .focusin(function(event){self.focusInValue = event.target.value;/* $(self.playerProfileSelector + " input.playerEditControl").css("visibility", "hidden");*/});

                     if(self.playerControlRenderType != playerControlRenderTypes.notabs)
                     {
                        $(self.formPopupSelector + " div#playerInfoTabs").tabs();
                     }
                     
                   if(!self.flatMode)
                   {
                       $(self.formPopupSelector).dialog({
                            modal:true,
                            autoOpen: false,
                            width:1000,
                            buttons: {
                                "Save": function() {self.savePlayerInfo();},
                                "Close": function() {$(this).dialog("close");}
                                }
                        });
                   }

                    registerPopupEnterPress(self.formPopupSelector, self.formPopupSelector +" ~ div.ui-dialog-buttonpane button:first");

                    $(self.formPopupSelector + " div#playerInfo input[name=birthdate2]").datepicker({
                        showOn: 'button',
                        buttonImageOnly: true,
                        buttonImage: '/ScoutsCMS/images/Calendar_scheduleHS.png',
                        beforeShow: function() {$('#ui-datepicker-div').maxZIndex();},
                        changeYear: true,
                        changeMonth: true,
                        yearRange: ((new Date()).getFullYear() - 90).toString() + ':' + (new Date()).getFullYear().toString(),
                        dateFormat: 'yy-mm-dd'
                    }).click(function(){$(this).datepicker('show')});

                    $(self.formPopupSelector + " div#playerInfo input[name=height]").mask("9'?99|\"");
                    $(self.formPopupSelector + " div#playerInfo input[name=weight]").mask("999");

            

                    $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content").tablesorter({
                        headers: [{sorter:'teamCommitmentName'},{ sorter: false},{ sorter: false},{ sorter: false},{ sorter: false},{ sorter: false}],
                        widgets: ['repeatTeamCommitmentHeaders']});

                    $(self.formPopupSelector + " .clearBirth").click(self.clearBirth);

                    });

            self.inited = true;
    }

    self.createnewPlayer = function (name)
    {        
        if(self.blurTimeout)
        {            
            self.closeBlurTimeout();            
            /*if($(self.playerProfileSelector + " input.autocomplete").val() != "")
            {
                self.checkEnteredValue();
                return;
            }*/
        }
         self.ClearPlayerForm();

        var firstSpaceIndex =  name.indexOf(" ");
        var firstName = "";
        var lastName = "";

        if(firstSpaceIndex > 0)
        {
            firstName = name.substr(0, firstSpaceIndex);
            lastName = name.substr(firstSpaceIndex + 1);
        }
        else
        {
            lastName = name;
        }

        $(self.formPopupSelector + " div#playerInfo input[name=firstName]").val(firstName.toTitleCase());
        $(self.formPopupSelector + " div#playerInfo input[name=lastName]").val(lastName.toTitleCase());

        $(self.playerProfileSelector + " input#showEditForm").attr("disabled", true);
        self.showPlayerProfile();

        $(self.formPopupSelector).dialog("option", "title", "Create New Player");
    }

    self.getPlayerInfo = function (event, ui)
    {
        //if( li == null ) return;

        //if( li.extra ) var sValue = li.extra[0];
        //else var sValue = li.selectValue;
        if(ui == null || ui.item == null) return;
        var sValue = ui.item.id;

        $.ajax({
            url:"/ScoutsCMS/ajax/playerInfo.php",
            type: "post",
            dataType: 'json',
            data: {playerID: sValue},
            success:self.fillPlayerData
        });
    }

    self.deletePlayer = function ()
    {
        if($(self.formPopupSelector + " div#playerInfo input[name=playerID]").val() == "") return;

       jConfirm('You are going to delete the following data related to ' +
                $(self.playerProfileSelector + " input.autocomplete").val() + ':<br/>'+
                '- Personal profile<br/>'+
                '- Pictures/headshots<br/>'+
                '- Team participation<br/>'+
                '- History records<br/>'+
                'This operation cannot be undone. Are sure you want to proceed?',
                "Confirm",
                function(r)
                {
                    if(r)
                    {
                        $.ajax({
                                    url:"/ScoutsCMS/ajax/deletePlayer.php",
                                    type: "post",
                                    dataType: 'json',
                                    data: {playerID: $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val()},
                                    success:function(){
                                        self.ClearPlayerForm();
                                        $(self.playerProfileSelector + " input#showEditForm").attr("disabled", true);
                                        $(self.playerProfileSelector + " input.autocomplete").val("");
                                    }
                                });
                    }
                }
        );



    }

    self.fillPlayerData = function (data)
    {
        self.ClearPlayerForm();
        fillForm(self.formPopupSelector + " div#playerInfo .playerData", data["playerInfo"]);
        self.addPlayerImages(data["playerImages"]);
        self.addPlayerCollegeChoice(data["collegeChoices"]);
        self.addPlayerPhones(data["phones"]);
        self.addPlayerTeamCommitments(data["teamCommitment"]);

        if(data["playerImages"][0])
        {
            $(self.formPopupSelector + " div#playerInfo img#basicInfoImage").attr("src", "/playerPhotos/thumbs/" + data["playerImages"][0]['name']);
        }
        else
        {
            $(self.formPopupSelector + " div#playerInfo img#basicInfoImage").attr("src", "/ScoutsCMS/images/noimage.jpg");
        }
        $(self.playerProfileSelector + " input#showEditForm").attr("disabled", false);
        if(self.playerSelecCallBack != null && self.playerSelecCallBack != '') eval(self.playerSelecCallBack + "(" + self.getCurrentPlayerID() + ")");

        //For show palyer by ID
        self.setPlayerAutoSuggestText(data["playerInfo"]);
        self.disableAddByEmail();
    }    

    self.setPlayerAutoSuggestText = function(data)
    {
        if(!data)
        {
            data = GetFormValues(self.formPopupSelector + " div#playerInfo .playerData");
        }
        
        if(self.additionallSuggestParams["showEmail"])
        {
            $(self.playerProfileSelector + " input.autocomplete").val((data["firstName"]?data["firstName"]:"") + " " +
                                       (data["lastName"]?data["lastName"]:"") + " (" +
                                       (data["graduated_year"]?data["graduated_year"]:"") + " " +
                                       (data["email"]?data["email"]:"") + ")");
        }
        else
        {
            var cityName = $(self.formPopupSelector + " div#playerInfo input.playerData[name=cityID]").val();

            $(self.playerProfileSelector + " input.autocomplete").val((data["firstName"]?data["firstName"]:"") + " " +
                                        (data["lastName"]?data["lastName"]:"") + " (" +
                                        (data["graduated_year"]?data["graduated_year"]:"") + ", " +
                                        $(self.formPopupSelector + " div#playerInfo select.playerData[name=first_position_id] option:selected").text() +
                                        (cityName?" - " + cityName:"") + ")");
        }

        $(self.formPopupSelector).dialog("option", "title", $(self.playerProfileSelector + " input.autocomplete").val());
    }

    self.deletePlayerImage = function (id)
    {
        if(!confirm("Are you sure?")) return;

        $.ajax({
            url:"/ScoutsCMS/ajax/deletePlayerImage.php",
            type: "post",
            dataType: 'json',
            data: {imageID: id}
        });
        $(self.formPopupSelector + " div#playerInfo div#images" + self.idSuffix).children("div#playerImage" + id).remove();
    }

    self.savePlayerInfo = function ()
    {
        if(checkForm(self.formPopupSelector + " div#playerInfo .playerData"))
        {
            if($(self.formPopupSelector + " div#playerInfo input[name=email]").val() != "" &&
                !validateEmail($(self.formPopupSelector + " div#playerInfo input[name=email]").val()))
            {
                jAlert("Enter valid email", "Error");
                return;
            }
            var playerData = GetFormValues(self.formPopupSelector + " div#playerInfo .playerData");
            playerData["phones"] = {};
            playerData["phones"]["0"] = {};
            playerData["phones"]["1"] = {};
            
            playerData["phones"]["0"]["phone"] = $(self.formPopupSelector + " div#playerInfo input[id=phone1]").val();
            playerData["phones"]["0"]["phoneType"] = $(self.formPopupSelector + " div#playerInfo select[id=phone1Desc]").val();
            playerData["phones"]["0"]["sms"] = $(self.formPopupSelector + " div#playerInfo input[id=phone1sms]").attr("checked")?1:0;

            playerData["phones"]["1"]["phone"] =  $(self.formPopupSelector + " div#playerInfo input[id=phone2]").val();
            playerData["phones"]["1"]["phoneType"] = $(self.formPopupSelector + " div#playerInfo select[id=phone2Desc]").val();
            playerData["phones"]["1"]["sms"] = $(self.formPopupSelector + " div#playerInfo input[id=phone2sms]").attr("checked")?1:0;

            
           $.ajax({
                url:"/ScoutsCMS/ajax/savePlayerInfo.php",
                type: "post",
                dataType: 'json',
                data: playerData,
                success: self.setPlayerId
            });
            //$("div#formPopup").dialog("close");
            return true;
        }
        else
        {
            jAlert("The following fields are required to create" + 
                   " a player, but have not been entered: <br/>" + getEmptyRequiredFieldsNames(self.formPopupSelector + " div#playerInfo .playerData").join(",<br/>"),
                   "Message",
                   function(){focusFirstRequiredField(self.formPopupSelector + " div#playerInfo .playerData");});
            return false;
        }
    }

    self.setPlayerId = function (data)
    {
        if(data.status == "error")
        {
            jAlert(data.message, "Error");
            return;
        }
        else
        {
            jAlert("Player Profile saved successfully", "Message");
        }

        if(!data.id) return;

        var callback = !$(self.formPopupSelector + " div#playerInfo input[name=playerID]").val();

        $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val(data.id);

        if(callback) //new player
        {
             if(self.playerSelecCallBack != null && self.playerSelecCallBack != '') eval(self.playerSelecCallBack + "(" + self.getCurrentPlayerID() + ")");
        }

        if(self.playerSaveCallBack != null && self.playerSaveCallBack != '') eval(self.playerSaveCallBack + "(" + self.getCurrentPlayerID() + ")");
       
        self.setPlayerAutoSuggestText();
        self.disableAddByEmail();
    }

    self.clearPlayerFilter = function ()
    {
        self.ClearPlayerForm();
        $(self.playerProfileSelector + " .autocomplete").val("");
        $(self.playerProfileSelector + " input#showEditForm").attr("disabled", true);
        if(self.playerSelecCallBack != null && self.playerSelecCallBack != '') eval(self.playerSelecCallBack + "(" + self.getCurrentPlayerID() + ")");

        self.disableAddByEmail();
    }

    self.ClearPlayerForm = function ()
    {
        resetForm($(self.formPopupSelector + " div#playerInfo .playerData"));
        $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val("");

        //$("div#playerInfo div#images").text("");
        //$("div#playerInfo div#images").html("");
        $(self.formPopupSelector + " div#playerInfo div#images" + self.idSuffix).children("div[id^=playerImage]").remove();

        $(self.formPopupSelector + " div#playerInfo img#basicInfoImage").attr("src", "");

        $(self.formPopupSelector + " div#playerInfo input[name=CollegeChoices]").attr("retValue", "");
        $(self.formPopupSelector + " div#playerInfo input[name=CollegeChoices]").val("");

        $(self.formPopupSelector + " div#playerInfo input[id=phone1]").val("");
        $(self.formPopupSelector + " div#playerInfo select[id=phone1Desc]").val("");
        $(self.formPopupSelector + " div#playerInfo input[id=phone1sms]").attr("checked", false);
        
        $(self.formPopupSelector + " div#playerInfo input[id=phone2]").val("");
        $(self.formPopupSelector + " div#playerInfo select[id=phone2Desc]").val("");
        $(self.formPopupSelector + " div#playerInfo input[id=phone2sms]").attr("checked", false);

        $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content tbody").html("");
        $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content").css("display", "none");
        $(self.formPopupSelector + " div#playerInfo div#CollegeChoices" + self.idSuffix + " table#content").html("");
        self.teamCommitmentList = [];
    }

    self.uploadPlayerImage = function ()
    {
        $(self.formPopupSelector + " div#playerInfo input#playerUploadLoading")
            .ajaxStart(function(){
                $(this).show();
            })
            .ajaxComplete(function(){
                $(this).hide();
        });
        var playerID = $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val();
        if(playerID  != "")
        {
            $.ajaxFileUpload
            (
                {
                    url:'/ScoutsCMS/ajax/savePlayerImage.php?type=playerImage&palyerId=' + playerID,
                    secureuri:false,
                    fileElementId:'playerImage' + self.idSuffix,
                    dataType: 'json',
                    success: function (data, status)
                    {
                        if(typeof(data.error) != 'undefined')
                        {
                            if(data.error != '')
                            {
                                jAlert(data.error, "Error");
                            }
                            else
                            {
                                var splits = data.msg.split("|");
                                self.addPlayerImages([{id:splits[1], name:splits[0], uploadDate: formatDate(new Date(),"MM/dd/yy")}]);
                            }
                        }
                    },
                    error: function (data, status, e)
                    {
                        jAlert(e, "Error");
                    }
                }
            )
        }
        else
        {
            jAlert("Save player first");
        }

        return false;
    }

    self.addPlayerImages = function (data)
    {
        for(var obj in data)
        {
            $(self.formPopupSelector + " div#playerInfo div#images" + self.idSuffix).append("<div style='width:150px; float: left;' id='playerImage" + data[obj]["id"] +
                "'><image src='/playerPhotos/thumbs/" + data[obj]['name']+
                "'/><br/><input type='image' src='/ScoutsCMS/images/remove.png' title='Delete' value='Delete' onclick='pp" + self.idSuffix + ".deletePlayerImage(" +
                data[obj]["id"] + "); return false;' />" + data[obj]["uploadDate"] + "</div>");
        }
    }

    self.showPlayerProfileByID = function (id, userRole)
    {
        self.getPlayerInfo(null, {item:{"id":id}});
        self.showPlayerProfile(userRole);
    }

    self.selectPlayerProfileByID = function (id)
    {
        self.getPlayerInfo(null, {item:{"id":id}});
    }

    self.showPlayerProfile = function (userRole, tab)
    {
        self.transformPlayerProfile(userRole);
        $(self.formPopupSelector).dialog("option", "title", $(self.playerProfileSelector + " input.autocomplete").val());
        $(self.formPopupSelector).dialog("open");

        if(typeof tab != 'undefined')
            $(self.formPopupSelector + " div#playerInfoTabs").tabs("select", tab + self.idSuffix);
    }

    self.transformPlayerProfile = function (userRole)
    {
        if(typeof userRole == 'undefined' ||
            userRole == null)
        {
            userRole = userRoles.scout;
        }
        switch(userRole)
        {
            case userRoles.scout:
            case userRoles.player:
                $(self.formPopupSelector + " div#playerInfo span.readonly").each(function(){
                   $(this).replaceWith("<input class='" + $(this).attr("class") + "'" +
                                        " name='" + $(this).attr("name") + "'" +
                                        " id='" + $(this).attr("id") + "'" +
                                        " value='" + $(this).text() + "'/>");
                });
            break;
            case userRoles.coach:
            case userRoles.member:
                $(self.formPopupSelector + " div#playerInfo input.readonly").each(function(){
                   $(this).replaceWith("<span class='" + $(this).attr("class") + "'" +
                                        " name='" + $(this).attr("name") + "'" +
                                        " id='" + $(this).attr("id") + "'" +
                                        $(this).val() + "</span>");
                });
            break;
        }

    }

    self.getCurrentPlayerID = function ()
    {
        return $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val();
    }

    self.addCollegeChoice = function ()
    {
        var id=$(self.formPopupSelector + " div#playerInfo input[name=CollegeChoices]").attr("retValue");

        if(typeof id != 'undefined' && id != '')
        {
            $.ajax({
                    url:"/ScoutsCMS/ajax/savePlayerCollegeChoices.php",
                    type: "post",
                    dataType: 'json',
                    data: {playerID: $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val(), collegeID: id},
                    success: self.addCollegeChoiceSuccess
                });
        }
    }

    self.addCollegeChoiceSuccess = function (data)
    {
        if(data != null)
        {
            $(self.formPopupSelector + " div#playerInfo div#CollegeChoices" + self.idSuffix + " table#content").append(self.getCollegeChoiceHTML(data.id, data.name));
        }
    }

    self.getCollegeChoiceHTML = function (id, name)
    {
        id = parseInt(id);
        return "<tr id='cc" + id + "'><td>" + name +
            "</td><td><input type='image' src='/ScoutsCMS/images/remove.png' title='Delete' value='Delete' onclick='pp" + self.idSuffix +".removeCollegeChoice(\"" +
                + id + "\"); return false;' /></td></tr>";
    }

    self.removeCollegeChoice = function (id)
    {
        $.ajax({
                url:"/ScoutsCMS/ajax/removePlayerCollegeChoices.php",
                type: "post",
                dataType: 'json',
                data: {playerID: $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val(), collegeID: id},
                success: self.removeCollegeChoiceSuccess
            });
    }

    self.removeCollegeChoiceSuccess = function (data)
    {
        if(data != null)
        {
            $(self.formPopupSelector + " div#playerInfo div#CollegeChoices" + self.idSuffix + " table#content tr#cc" + data.id).remove();
        }
    }

    self.addPlayerCollegeChoice = function (data)
    {
        var html = "";

        for(var obj in data)
        {
            html += self.getCollegeChoiceHTML(data[obj]["id"], data[obj]["name"]);
        }

        $(self.formPopupSelector + " div#playerInfo div[id=CollegeChoices" + self.idSuffix + "] table[id=content]").html(html);
    }

    self.addPlayerTeamCommitments = function(data)
    {
        var html = "";
        self.teamCommitmentList = [];
        for(var obj in data)
        {
            html += self.getTeamCommitmentHTML(data[obj]);
            self.teamCommitmentList.push(data[obj]["id"]) 
        }

        $(self.formPopupSelector + " div[id=playerInfo] div[id=TeamComitment" + self.idSuffix + "] table[id=content] tbody").html(html);
        self.setTeamCommitmentExceptID();
        self.updateCommitmentTable();
    }

    self.setTeamCommitmentExceptID = function()
    {
        if(self.teamCommitmentList.length == 0) return;
        
        var teamControl = eval("tp" + self.idSuffix + "_add_team_commitment");
        teamControl.setAdditionalSuggestParams({"exeptID": self.teamCommitmentList.join(',') } );
    }

    self.getTeamCommitmentHTML = function(data)
    {
        var html = "<tr id='tc" + data.id + "'>" +
                "<td>" + data.name +
                    " <input type='hidden' name='seasonYear' value='" + data.seasonYear + "'/>" +
                    " <input type='hidden' name='season' value='" + data.season + "'/>" +
                "</td>" +
                "<td style='text-align:center;'>" + data.season + "</td>"+
                "<td>" + data.seasonYear + "</td>";
        if(data.season == 'Summer')
        {
            html += "<td style='text-align:center;'><input style='margin:0;' title='Mark summer commitment' type='radio' class='commit' name='" + (data.season.toLowerCase() + data.seasonYear) + "'" +
                    (data["summer_commitment"] ==1?" checked='true'":"") +
                "onclick='pp" + self.idSuffix +".setComitmentTeam(\"" + data.id +"\", \"summer\", " + data.seasonYear + ")'/></td>";
        }
        else
        {
            html += "<td style='text-align:center;'><input style='margin:0;' title='Mark fall commitment' type='radio' class='commit' name='" + (data.season.toLowerCase() + data.seasonYear) + "'" +
                    (data["fall_commitment"] ==1?" checked='true'":"") +
                "onclick='pp" + self.idSuffix +".setComitmentTeam(\"" + data.id +"\", \"fall\", " + data.seasonYear + ")'/></td>";
        }

        html += "<td><input type='image' src='/ScoutsCMS/images/remove.png' title='Delete' value='Delete' onclick='pp" + self.idSuffix +".removeTeamCommitment(\"" +
        + data.id + "\", \"" + data.season +"\", " + data.seasonYear +"); return false;' /></td>" +
        "</tr>";
        return html;
    }

    self.addTeamCommitment = function()
    {
        var playerID = self.getCurrentPlayerID();
        if(!playerID)
        {
            jAlert("Save player first", "Error");
            return;
        }
        var teamID =eval("tp" + self.idSuffix + "_add_team_commitment.currentTeamID()");
        if(!teamID)
        {
            jAlert("Select team first", "Error");
            return;
        }

        $.ajax({
                url:"/ScoutsCMS/ajax/addPlayerTeamCommitment.php",
                type: "post",
                dataType: 'json',
                data: {"playerID":playerID, "teamID": teamID},
                success: function(data){

                    if(data.status == "error")
                    {
                        jAlert(data.message, "Error");
                        return;
                    }
                    self.teamCommitmentList.push(data["teamData"]["id"]);
                    self.setTeamCommitmentExceptID();
                    var html = self.getTeamCommitmentHTML(data["teamData"]);
                    if($(self.formPopupSelector + " div[id=playerInfo] div[id=TeamComitment" + self.idSuffix + "] table[id=content] tbody tr[id=tc"+data["teamData"].id + "]").length > 0)
                    {
                        $(self.formPopupSelector + " div[id=playerInfo] div[id=TeamComitment" + self.idSuffix + "] table[id=content] tbody tr[id=tc"+data["teamData"].id + "]").replaceWith(html);
                    }
                    else
                    {
                        $(self.formPopupSelector + " div[id=playerInfo] div[id=TeamComitment" + self.idSuffix + "] table[id=content] tbody").append(html);
                    }

                    self.updateCommitmentTable();

                    eval("tp" + self.idSuffix + "_add_team_commitment.clearTeamFilter()");
                }
            });
    }

    self.removeTeamCommitment = function(teamID, season, year)
    {
        if(!teamID) return;
        var playerID = self.getCurrentPlayerID();
        if(!playerID)
        {
            jAlert("Save player first", "Error");
            return;
        }

        $.ajax({
                url:"/ScoutsCMS/ajax/deletePlayerTeamCommitment.php",
                type: "post",
                dataType: 'json',
                data: {"playerID":playerID, "teamID": teamID},
                success: function(data){

                    if(data.status == "error")
                    {
                        jAlert(data.message, "Error");
                        return;
                    }

                    self.teamCommitmentList.splice(self.teamCommitmentList.indexOf(teamID), 1);
                    self.setTeamCommitmentExceptID();
                    $(self.formPopupSelector + " div[id=playerInfo] div[id=TeamComitment" + self.idSuffix + "] table[id=content] tbody tr[id=tc"+teamID + "]").remove();
                    self.updateCommitmentTable();

                    var tbody = $(self.formPopupSelector + " div[id=playerInfo] div[id=TeamComitment" + self.idSuffix + "] table[id=content] tbody").get(0);
                    if($('tr input[name=seasonYear][value=' + year + ']', tbody).closest('tr').find('input[name=season][value=' + season + ']').length == 1)
                    {
                        $('tr input[name=seasonYear][value=' + year + ']', tbody).closest('tr').find('input:radio').attr("checked", "checked");
                    }
                }
            });
    }

    self.setComitmentTeam = function(teamID, season, year)
    {
        if(!teamID || !season || (season != 'fall' && season != 'summer'))
        {
            jAlert("Wrong parameters", "Error");
            return;
        }

        var playerID = self.getCurrentPlayerID();
        if(!playerID)
        {
            jAlert("Save player first", "Error");
            return;
        }

        var imageName = season == "fall"?"leaf":"sun";

        /*$(self.formPopupSelector +
            " div[id=playerInfo] div[id=TeamComitment" +
            self.idSuffix + "] table[id=content]").find("tbody tr input[name=seasonYear][value=" + year + "]").parents("tr")
                .find("input." + season + "_commit").attr("src", "/ScoutsCMS/images/" + imageName + "_dis.png");*/

        $.ajax({
                url:"/ScoutsCMS/ajax/markTeamCommitment.php",
                type: "post",
                dataType: 'json',
                data: {"playerID":playerID, "teamID": teamID, "season":season, "year":year},
                success: function(data){

                    if(data.status == "error")
                    {
                        jAlert(data.message, "Error");
                        return;
                    }
                    $(self.formPopupSelector +
                        " div[id=playerInfo] div[id=TeamComitment" +
                        self.idSuffix + "] table[id=content] tbody tr[id=tc" + teamID + "] input." +
                        season + "_commit").attr("src", "/ScoutsCMS/images/" + imageName + ".png");

                }
            });
    }

    self.updateCommitmentTable = function()
    {
        $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content").trigger("update");
        if($(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix).find("table#content tbody tr[class!=year]").length > 0)
        {
            $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content").css("display", "");
            $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content").trigger("sorton",[[[0,1]]]);
        }
        else
        {
            $(self.formPopupSelector + " div#playerInfo div#TeamComitment" + self.idSuffix + " table#content").css("display", "none");
        }
    }

    self.addPlayerPhones = function(data)
    {
        if(data["0"])
        {
            $(self.formPopupSelector + " div#playerInfo input[id=phone1]").val(data["0"]["phone"]);
            $(self.formPopupSelector + " div#playerInfo select[id=phone1Desc]").val(data["0"]["phoneType"]);
            $(self.formPopupSelector + " div#playerInfo input[id=phone1sms]").attr("checked", data["0"]["sms"]=="1"?true:false);
        }
        if(data["1"])
        {
            $(self.formPopupSelector + " div#playerInfo input[id=phone2]").val(data["1"]["phone"]);
            $(self.formPopupSelector + " div#playerInfo select[id=phone2Desc]").val(data["1"]["phoneType"]);
            $(self.formPopupSelector + " div#playerInfo input[id=phone2sms]").attr("checked", data["1"]["sms"]=="1"?true:false);
        }
    }

    self.getCurrentPlayerName = function()
    {
        return $(self.formPopupSelector + " div#playerInfo input[name=firstName]").val() + " " +
            $(self.formPopupSelector + " div#playerInfo input[name=lastName]").val();
    }

    self.addPlayerByEmail = function(email, callBack)
    {
        if(self.blurTimeout)
        {
            self.closeBlurTimeout();            
        }
        $.ajax({
                url:"/ScoutsCMS/ajax/savePlayerInfo.php",
                type: "post",
                dataType: 'json',
                data: {"email":email, "login":email},
                success: function(data){

                    if(data.status == "error")
                    {
                        jAlert(data.message, "Error");
                        return;
                    }

                    $(self.formPopupSelector + " div#playerInfo input[name=playerID]").val(data.id);
                    self.getPlayerInfo(null, {item:{"id":data.id}});
                    eval(callBack);
                }
            });
    }

    self.getAutoSuggestText = function()
    {
        return $(self.playerProfileSelector + " input.autocomplete").val();
    }

    self.disableAddByEmail = function()
    {
        $(self.playerProfileSelector + " input#btnAddByEmail").attr("disabled", 
            !(!self.getCurrentPlayerID() &&
            $(self.playerProfileSelector + " input.autocomplete").val().match(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b/))
        );
    }

    self.getPlayerAutosuggestText = function()
    {
        return $(self.playerProfileSelector + " input.autocomplete").val();
    }

    self.close = function()
    {
        if($(self.formPopupSelector).dialog( "isOpen"))
            $(self.formPopupSelector).dialog("close");
    }

    self.checkEnteredValue = function()
    {
        self.closeBlurTimeout();
        var obj = $(self.playerProfileSelector + " input.autocomplete");
        if(!self.selectAutoSuggest && obj.val() != "" && obj.is(":visible") &&
            (!self.getCurrentPlayerID() || (self.getCurrentPlayerID() && self.focusInValue != obj.val() && self.focusInValue)))
        {
            $.ajax({
                url:"/ScoutsCMS/ajax/checkAutocompleteValue.php?t=player",
                type: "get",
                dataType: 'json',
                data: {"term":$(self.playerProfileSelector + " input.autocomplete").val()},
                success: function(data){
                    data = data.result;
                    if(data.length == 0)
                    {
                        if(self.playerCreateNewControl)
                            self.createnewPlayer($(self.playerProfileSelector + " input.autocomplete").val());
                    }
                    else
                    {
                        if(data.length == 1)
                        {
                            self.getPlayerInfo(null, {item: data[0]});
                        }
                        else
                        {
                            var duplicateStr = " PW found similar players that exist in the database.  Please check the list below and select one if it is among them. If there is no match, please use the \"Create New\" button at the bottom.\n";
                            duplicateStr +="<table cellpadding='0' cellspacing='0' class='duplicatesTable'><thead><tr><th>Name</th><th>Pos</th><th>Grad</th><th>City</th></tr></thead>";
                            for(var i in data)
                            {
                                duplicateStr += "<tr onclick='pp" + self.idSuffix + ".getPlayerInfo(null, {item: " + txt2xml(JSON.stringify(data[i])) + "});$.alerts._hide();'>"
                                        +"<td>" + data[i].firstName + " " + data[i].lastName + "</td>"
                                        +"<td>" + data[i].position_name + "</td>"
                                        +"<td>" + data[i].graduated_year + "</td>"
                                        +"<td>" + data[i].cityName + " (" +  data[i].stateAbbreviation + ")</td>"
                                        +"</tr>";
                            }
                            duplicateStr +="</table>";
                            var backup = $.alerts.okButton;
                            $.alerts.okButton = "Create New";
                            jConfirm(duplicateStr, "Warning", function(r){
                                if(r)
                                {
                                    self.createnewPlayer($(self.playerProfileSelector + " input.autocomplete").val());
                                }
                            });
                            $.alerts.okButton = backup;
                        }
                    }
                }
            });
        }
    }

    self.fillLogin = function()
    {
        if($(self.formPopupSelector + " div#playerInfo input[name=login]").val() == '')
        {
            $(self.formPopupSelector + " div#playerInfo input[name=login]").val($(self.formPopupSelector + " div#playerInfo input[name=email]").val());
        }
    }

    self.closeBlurTimeout = function()
    {
        if(self.blurTimeout)
        {
            clearTimeout(self.blurTimeout);
        }
        self.blurTimeout = null;
    }

    self.changeShowPast = function(){
        self.closeBlurTimeout();

        self.showPast = !self.showPast;
        if(self.showPast){
            $(self.playerProfileSelector + " input.showPast").attr("src", "/ScoutsCMS/images/showPast_true.png");
        }else{
            $(self.playerProfileSelector + " input.showPast").attr("src", "/ScoutsCMS/images/showPast_false.png");
        }
    }

    self.clearBirth = function(){
        $(self.formPopupSelector + " [name=birthdate2]").val("");
    }

    self.init();
}

