var hp = null; //Global hoster profile
var hpInited = false;
function hosterProfile(options)
{
    var self = this;
    self.typeHighSchool = "1";
    self.typeCollege = "2";

    self.idSuffix = options["id"];
    self.changeCallBack = options["changeCallBack"];
    self.hosterType = options["hosterType"];
    self.hideRadioButton = options["hideRadioButton"];
    self.hosterTypesOptions = options["hosterTypesOptions"];
    self.additionalSuggestParams = options["additionalSuggestParams"];
    self.closeCallBack = options["closeCallBack"];

    self.hosterProfileSelector = "div[id=hosterProfile" + self.idSuffix + "]";
    
    self.formHosterPopupSelector = "div[id=formHosterPopup" + /*self.idSuffix +*/ "]";
    self.formHosterInfoSelector = "div[id=hosterInfo" + /*self.idSuffix +*/ "]";

    self.formHosterTabsSelector = "div[id=hosterTabs" + /*self.idSuffix +*/ "]";
    self.formHosterTeamTabSelector = "div[id=hosterTeams" + /*self.idSuffix +*/ "]";
    self.formHosterMemberTabSelector = "div[id=hosterMembers" + /*self.idSuffix +*/ "]";

    self.formHosterMemberSelector ="div[id=hosterMemberInfo" + /*self.idSuffix +*/ "]";
    self.exportTeamOptionsSelector = "div[id=exportTeamOptions]";

    self.selectHosterCallBack = null;

     self.lastAutocompleteRequest = "";
    self.lastAutocompleteRequestNumber = 0;
    self.focusInValue = "";

    self.blurTimeout = null;

    self.notAllowedVals = ["none", "n/a"];
    self.tooltipTimeout = null;

    self.mainManager = false;
    self.selectAutoSuggest = false;
    self.init = function()
    {
        $(self.hosterProfileSelector).ready(function(){
            self.autocompleteIn = $("input[id=hoster_id]", $(self.hosterProfileSelector)[0]);
            self.autocompleteIn.tooltip({
                events: { input:   "noone,noone" },
                position: 'top left',
                offset: [-190, -120]
            });
            //self.autocompleteIn.data("tooltip").hide();
            self.autocompleteIn.autocompleteNative(
                {
                    source:function(request, response) {
                            if(!self.lastAutocompleteRequest)
                                 self.lastAutocompleteRequest = request.term;

                             for(var i in self.notAllowedVals){
                                 if(self.notAllowedVals[i].toLowerCase() == request.term.toLowerCase() ){
                                     self.autocompleteIn.removeClass( "ui-autocomplete-loading");

                                     self.autocompleteIn.next().html("Please do not type in " +
                                                                     self.autocompleteIn.val() +
                                                                     ".  Please leave this field blank instead.");
                                     if(self.tooltipTimeout){
                                         clearTimeout(self.tooltipTimeout);
                                         self.tooltipTimeout = null;
                                     }
                                     self.autocompleteIn.data("tooltip").show();
                                     self.tooltipTimeout = setTimeout(function(){
                                         self.autocompleteIn.data("tooltip").hide();
                                         self.tooltipTimeout = null;
                                     }, 10000);

                                     self.autocompleteIn.val("");
                                     return;
                                 }else if(self.notAllowedVals[i].toLowerCase().startsWith(request.term.toLowerCase())){
                                     self.autocompleteIn.removeClass( "ui-autocomplete-loading");
                                     return;
                                 }
                             }

                            request.requestNumber = ++self.lastAutocompleteRequestNumber;
                        
                            $.ajax({
                                url: "/ScoutsCMS/ajax/autocomplete.php?t=hoster&type="+self.hosterType+"&"+createQueryString(self.additionalSuggestParams),
                                dataType: "json",
                                data: request,
                                success: function( data ) {
                                    if(data.requestNumber != self.lastAutocompleteRequestNumber){
                                        self.autocompleteIn.removeClass( "ui-autocomplete-loading" );
                                        return false;
                                    }

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

                                    self.lastAutocompleteRequest = "";
                                    self.autocompleteIn.removeClass( "ui-autocomplete-loading" );
                                    response( data.result );
                                }
                        });
                    },
                    delay:10,
                    minLength:2,
                    select: function(event, ui)
                    {
                        self.setHosterId(event, ui);
                        self.selectAutoSuggest = true;
                    }      
                }
                ).bind("keyup", function(event){
                        if(event.keyCode == 13 && !self.selectAutoSuggest)
                            self.checkEnteredValue();
                        
                        self.selectAutoSuggest = false;
                    }
                ).bind("change",function(){if($(this).val() == ""){$(this).attr("retValue", "")}})
                 .bind("blur", function(event){ self.blurTimeout = setTimeout(function(){self.checkEnteredValue();}, 200)})
                 //.focusout(function(){ $(self.hosterProfileSelector + " input.hosterEditControl").css("visibility", "visible");})
                 .focusin(function(event){self.focusInValue = event.target.value;});

            //if(self.hideRadioButton)
            //{
            //    $("input[id=selectHoster]", $(self.hosterProfileSelector)[0]).hide();
            //    $("input[id=selectDontKnownHoster]", $(self.hosterProfileSelector)[0]).parent().hide();
            //}
        
            if(hpInited) return;
            hpInited = true;
            $(self.formHosterPopupSelector).dialog({
                modal:true,
                autoOpen: false,
                width:800,
                buttons: {
                    "Save": function() {hp.saveHosterInfo();},
                    "Close": function() {$(this).dialog("close"); hp.callCloseCallBack();}
                    }
            });
            registerPopupEnterPress(self.formHosterPopupSelector, self.formHosterPopupSelector + " ~ div.ui-dialog-buttonpane button:first");

            $(self.formHosterTabsSelector).tabs();

            $(self.formHosterMemberSelector).dialog({
                modal:true,
                autoOpen: false,
                width:500,
                buttons: {
                    "Save": function() {self.addMember();},
                    "Close": function() {$(this).dialog("close");}
                    }
            });
            registerPopupEnterPress(self.formHosterMemberSelector, self.formHosterMemberSelector + " ~ div.ui-dialog-buttonpane button:first");

            $(self.formHosterInfoSelector + " div[id=accentColor]," +
               self.formHosterInfoSelector + " div[id=accentFontColor]," +
               self.formHosterInfoSelector + " div[id=primaryColor]," +
               self.formHosterInfoSelector + " div[id=primaryFontColor]").click(showJPicker)
            .data("liveCallback",
                function(color){
                    $(self.formHosterInfoSelector + " input[name=" + $.colorPickerElements.currentInput.attr("name") + "]").val(color.get_Hex());
                    $.colorPickerElements.currentInput.find("div[name=color]").css('background-color', '#' + color.get_Hex());
                    self.fillColorpreview();
                })
            .data("commitCallback",
                function(color){
                    $(self.formHosterInfoSelector + " input[name=" + $.colorPickerElements.currentInput.attr("name") + "]").val(color.get_Hex());
                    $.colorPickerElements.currentInput.find("div[name=color]").css('background-color', '#' + color.get_Hex());
                    self.fillColorpreview();
                    $.colorPickerElements.currentJPickerControl.hide();
                })
            .data("cancelCallback",
                function(color){
                    $(self.formHosterInfoSelector + " input[name=" + $.colorPickerElements.currentInput.attr("name") + "]").val(color.get_Hex());
                    $.colorPickerElements.currentInput.find("div[name=color]").css('background-color', '#' + color.get_Hex());
                    self.fillColorpreview();
                    $.colorPickerElements.currentJPickerControl.hide();
                })

            });
    }

    self.saveHosterInfo = function(force)
    {
        if(!checkForm(self.formHosterInfoSelector + " .hosterData"))
        {
             jAlert("Fill required fields", "Error");
            return;
        }
        var hosterData = GetFormValues(self.formHosterInfoSelector + " .hosterData");
        if(force) hosterData.force = true;
        $.ajax({
            url:"/ScoutsCMS/ajax/saveHosterInfo.php",
            type: "post",
            dataType: 'json',
            data: hosterData,
            success: self.setHosterPopId
        });

        if( $(self.formHosterInfoSelector + " input[name=id]").val() != "")
        {
            $.ajax({
                url:"/ScoutsCMS/ajax/saveHosterMainMangerInfo.php",
                type: "post",
                dataType: 'json',
                data: {hosterID: $(self.formHosterInfoSelector + " input[name=id]").val(), mainManagers: self.getMainMagerInfo()}                
            });
        }        
    }

    self.callCloseCallBack = function()
    {
        if(self.closeCallBack)
        {
            if(typeof self.closeCallBack == "function")
            {
                self.closeCallBack();
            }
            else
            {
                eval(self.closeCallBack);
            }
        }
    }

    self.createNewHoster = function(name)
    {
        if(self.blurTimeout)
        {
            self.closeBlurTimeout();
            if($(self.hosterProfileSelector + " input[id=hoster_id]").val() != "")
            {
                self.checkEnteredValue();
                return;
            }
        }
        self.setMainManager(-1);
        self.fillTypeOptions();
        self.setVisabilityByType()
        resetForm(self.formHosterInfoSelector + " .hosterData");
        $(self.formHosterInfoSelector + " input[name=id]").val("");


       $(self.formHosterInfoSelector + " input[name=primaryColor]").val('000000');
       $(self.formHosterInfoSelector + " input[name=accentColor]").val('000000');

       $(self.formHosterInfoSelector + " input[name=primaryFontColor]").val('ffffff');
       $(self.formHosterInfoSelector + " input[name=accentFontColor]").val('ffffff');

       $(self.formHosterInfoSelector + " div[id=accentColor] div") .css('background-color', '#000000');
       $(self.formHosterInfoSelector + " div[id=primaryColor] div") .css('background-color', '#000000');

       $(self.formHosterInfoSelector + " div[id=primaryFontColor] div") .css('background-color', '#ffffff');
       $(self.formHosterInfoSelector + " div[id=accentFontColor] div") .css('background-color', '#ffffff');

        $(self.formHosterInfoSelector + " div[id=hosterMembersContent]").html("");        
        $(self.formHosterInfoSelector + " div[id=hosterTeamsContent]").html("");
        $(self.formHosterInfoSelector + " div[id=hosterOldTeamsContent]").html("");

        self.fillColorpreview();

        $(self.formHosterInfoSelector + " img[id=hosterLogo]").attr("src", "/ScoutsCMS/images/noimage.jpg");

        $(self.formHosterPopupSelector + " input[name=name]").val(name);

        self.openPopup();
        $(self.formHosterPopupSelector).dialog("option", "title", "Create New Organization");
    }
    self.openPopup = function()
    {
        hp = self;
        $(self.formHosterTabsSelector).tabs('select', 0);

        $(self.formHosterPopupSelector).dialog("option", "title", $(self.hosterProfileSelector + " input[id=hoster_id]").val());
        $(self.formHosterPopupSelector).dialog("open");        
    }

    self.selectHosterSelected = function(isSet)
    {
        if(isSet)
        {
            self.selectHosterType($(self.hosterProfileSelector + " input[id=selectHoster]")[0]);
        }
        else
        {
            self.selectHosterType($(self.hosterProfileSelector + " input[id=selectDontKnownHoster]")[0]);
        }
    }

    self.selectHosterType = function(obj)
    {
        if(obj == $(self.hosterProfileSelector + " input[id=selectHoster]")[0])
        {
            $(self.hosterProfileSelector + " input[id=selectDontKnownHoster]").attr("checked", false);
            $(self.hosterProfileSelector + " input[id=selectHoster]").attr("checked", true);
        }
        else
        {
            $(self.hosterProfileSelector + " input[id=selectHoster]").attr("checked", false);
            $(self.hosterProfileSelector + " input[id=selectDontKnownHoster]").attr("checked", true);

            $(self.hosterProfileSelector + " input[id=hoster_id]").val("");
            $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue", "");
        }
    }

    self.fillColorpreview = function()
    {
       $(self.formHosterInfoSelector + " div[id=primaryColorPreview]").css("background-color", "#" + $(self.formHosterInfoSelector + " input[name=primaryColor]").val()).
           css("color", "#" + $(self.formHosterInfoSelector + " input[name=primaryFontColor]").val());

       $(self.formHosterInfoSelector + " div[id=accentColorPreview]").css("background-color", "#" + $(self.formHosterInfoSelector + " input[name=accentColor]").val()).
           css("color", "#" + $(self.formHosterInfoSelector + " input[name=accentFontColor]").val());
    }

    self.editHosterInfo = function()
    {
        var id= $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue");
        if(id == null || id == "") return;

         self.setMainManager(id, function(){
             $.ajax({
                    url:"/ScoutsCMS/ajax/hosterInfo.php",
                    type: "post",
                    dataType: 'json',
                    data: {hosterID: id},
                    success: self.fillHosterInfo
                });
         });
    }

    self.setMainManager = function(id, callback)
    {
        $.ajax({
                url:"/ScoutsCMS/ajax/hosterMainManager.php",
                type: "post",
                data: {hosterID: id},
                success: function(main){
                    self.mainManager = main=="true";
                    if(callback && typeof callback == "function")
                        callback();
                    else if(callback)
                        eval(callback);
                }
            });
    }

    self.fillHosterInfo = function(data)
    {
        self.fillTypeOptions();

        fillForm(self.formHosterInfoSelector + " .hosterData", data["hosterInfo"]);
        self.fillHosterTeams(data["hosterTeams"], data["scout"] == "1");
        self.fillHosterMembers(data["hosterMembers"]);
        if(data["hosterInfo"]["image"])
        {
            $(self.formHosterInfoSelector + " img[id=hosterLogo]").attr("src", "/organizationLogo/thumbs/" + data["hosterInfo"]["image"]);
        }
        else
        {
            $(self.formHosterInfoSelector + " img[id=hosterLogo]").attr("src", "/ScoutsCMS/images/noimage.jpg");
        }
        var color = "";

        var colors = ["primaryColor", "accentColor", "primaryFontColor", "accentFontColor"];
        for(var i in colors)
        {
            if(data["hosterInfo"][colors[i]])
            {
                color = '#' + data["hosterInfo"][colors[i]];
            }
            else
            {
                color = "";
            }
            $(self.formHosterInfoSelector + " div[id=" + colors[i] + "] div").css('background-color', color);
        }        
        self.fillColorpreview();
        self.setVisabilityByType();

        tpcoach_team.setAdditionalSuggestParams({hosterID: self.getCurrentHosterID()});

        self.openPopup();

        self.callSelectHosterCallBack();
    }

    self.callSelectHosterCallBack = function()
    {
        if(self.selectHosterCallBack)
        {
            if(typeof self.selectHosterCallBack == 'function')
            {
                self.selectHosterCallBack();
            }
            else
            {
                eval(self.selectHosterCallBack);
            }
        }
    }

    self.getHosterTeamHTML = function(data){
       var currentTeam = self.isCurrentYearTeam(data["seasonYear"]);
       var teamID = data["id"];
       return  "<tr class='" + data['even_class'] + "' id='t" + teamID + "'><td>" + data["name"] + " (" + data["season"] + " " + data["seasonYear"] + ")" +
                "</td>" +
                (data["scaut"] == "1" || currentTeam ? "<td><input type='image' src='/ScoutsCMS/images/edit.png' title='Edit' onclick='hp" +
                self.idSuffix +".editTeam(" + teamID +")' /></td>" +
                "<td><input type='image' src='/ScoutsCMS/images/remove.png' title='Delete' value='Delete' onclick='hp" +
                self.idSuffix + ".deleleTeamFromHoster(" + teamID + "); return false;' /></td>":"") +
                "<td><input type='button' value='Export to Excel' onclick='hp" + self.idSuffix + ".showExportTeamToExcelOptions(" + teamID + ")'/></td>" +
                "</tr>"
    }

    self.fillHosterTeams = function(data, scout)
    {
        var html = "<table class='simpleTable'><tbody><tr class='header'><td>Team</td><td>Edit</td><td>Delete</td><td>Export</td></tr>";
        var oldHtml = "<table class='simpleTable'><tbody><tr class='header'><td>Team</td>";        
        if(scout)
            oldHtml += "<td>Edit</td><td>Delete</td>";        
        oldHtml += "<td>Export</td></tr>";
        
        var row = "";
        var counter = 0;
        var oldCounter = 0;
        for(var obj in data)
        {            
            var currentTeam = self.isCurrentYearTeam(data[obj]["seasonYear"]);
            if(currentTeam)
                data[obj]["even_class"] = counter++ % 2 == 1 ? "even" : "";
            else
                data[obj]["even_class"] = oldCounter++ % 2 == 1 ? "even" : "";
            row = self.getHosterTeamHTML(data[obj]);
            
            if(currentTeam)
            {
                html += row;
            }
            else
            {
                oldHtml += row;
            }
        }
        html += "</table>";
        oldHtml += "</table>"
        $(self.formHosterTeamTabSelector + ' div[id=hosterTeamsContent]').html(html);
        $(self.formHosterTeamTabSelector + ' div[id=hosterOldTeamsContent]').html(oldHtml);
    }

    self.fillHosterMembers = function(data)
    {
        var html = "<table class='simpleTable'><tr class='header'><td>Name</td><td>Team Name</td>";

        if(self.mainManager){
            html += "<td>Main Admin</td>";
            html += "<td>Delete</td>";
            html += "<td>Edit</td>";
        }
        
        html += "</tr>";
        var counter = 0;
        for(var obj in data)
        {
            data[obj]["even_class"] = counter++ % 2 == 1 ? "even" : "";
             html += self.getMemberHtml(data[obj]);
        }
        html += "</table>";
        $(self.formHosterMemberTabSelector + ' div[id=hosterMembersContent]').html(html);
    }

    self.editTeam = function(id)
    {
        eval("tphoster_team.editTeamById(" + id + ")");
    }

    self.deleleTeamFromHoster = function(id)
    {
        var hosterID = $(self.formHosterInfoSelector + " input[name=id]").val();
        if(typeof hosterID != 'undefined' && hosterID != "")
        {
            jConfirm('Are you sure?',
                    "Confirm",
                    function(r)
                    {
                        if(r)
                        {
                            $.ajax({
                                    url:"/ScoutsCMS/ajax/deleteTeamFormOrganization.php",
                                    type: "post",
                                    dataType: 'json',
                                    data: {teamID: id,
                                           hosterID: hosterID},
                                    success:function(){
                                        $(self.formHosterTeamTabSelector + " div[id=hosterTeamsContent] tr[id=t" + id + "]").remove();
                                    }
                                });
                        }
                    }
            );
        }
    }

    self.setHosterId = function(event, ui)
    {
        if( ui == null || ui.item == null) return;

        var sValue = ui.item.id;
        $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue", sValue);
        $(self.hosterProfileSelector + " input[id=hoster_id]").val(ui.item.label);

        if(self.changeCallBack !=null && self.changeCallBack != '') eval(self.changeCallBack + "(" + ui.item.id + "," + ui.item.type +")");
    }

    self.setHosterPopId = function(data)
    {
        if(data.status == "success")
        {
            if(data.id)
            {
                $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue", data.id);
            }
            else
            {
                id = $(self.formHosterInfoSelector + " input[name=id]").val();
            }

            $.ajax({
                url:"/ScoutsCMS/ajax/getHosterName.php",
                type: "post",
                data: {"id": data.id},
                success:function(name){
                    $(self.hosterProfileSelector + " input[id=hoster_id]").val(name);
                }
            });

            if(self.changeCallBack !=null && self.changeCallBack != '') eval(self.changeCallBack + "(" + data.id + ", " + $(self.formHosterInfoSelector + " select[name=type]").val() + ")");

            $(self.formHosterPopupSelector).dialog("close");
            self.callCloseCallBack();
        } else {
            jAlert(data.message, data.status);
        }
    }

    self.showHosterByID = function(id)
    {
        /*if(id == $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue"))
        {
            self.openPopup();
            self.callSelectHosterCallBack();
            return;
        }*/
        $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue", id);
        self.editHosterInfo();
    }

    self.uploadLogo = function()
    {
         $(self.formHosterInfoSelector + " input[id=hosterUploadLoading]")
            .ajaxStart(function(){
                $(this).show();
            })
            .ajaxComplete(function(){
                $(this).hide();
        });
        var hosterID =$(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue");
        if(hosterID  != "")
        {
            $.ajaxFileUpload
            (
                {
                    url:'/ScoutsCMS/ajax/savePlayerImage.php?type=hosterLogo&hosterId=' + hosterID,
                    secureuri:false,
                    fileElementId:'hosterUploadLogo',
                    dataType: 'json',
                    success: function (data, status)
                    {
                        if(typeof(data.error) != 'undefined')
                        {
                            if(data.error != '')
                            {
                                jAlert(data.error, "Error");
                            }
                            else
                            {
                                $(self.formHosterInfoSelector + " img[id=hosterLogo]").attr("src", "/organizationLogo/thumbs/" + data.msg);
                            }
                        }
                    },
                    error: function (data, status, e)
                    {
                        jAlert(e, "Error");
                    }
                }
            )
        }
        else
        {
            jAlert("Please save the organization first before uploading a logo.");
        }

        return false;
    }

    self.addTeam = function()
    {
        if($(self.formHosterInfoSelector + " input[name=id]").val() == "")
        {
            jAlert("Save organization first");
            return;
        }      

        eval("tphoster_team.createNewTeam('', '" + self.getCurrentHosterID() + "'," +
             $(self.formHosterInfoSelector + " select[name=type]").val() + ")");
    }

    self.addMember = function()
    {
        if(!checkForm(self.formHosterMemberSelector + " .hosterMemberData"))
        {
            jAlert("Please fill required fields marked by a red asterisk*");
            return;
        }

        var data = GetFormValues(self.formHosterMemberSelector + " .hosterMemberData");
        if(!validateEmail(data["email"]))
        {
            jAlert("Enter valid email", "Error");
            return;
        }

        data["hosterID"] = $(self.formHosterInfoSelector + " input[name=id]").val();

        data["phones"] = {};
        data["phones"]["0"] = {};

        data["phones"]["0"]["phone"] = $(self.formHosterMemberSelector + " input[id=phone]").val();
        data["phones"]["0"]["phoneType"] = $(self.formHosterMemberSelector + " select[id=phoneDesc]").val();
        data["phones"]["0"]["sms"] = $(self.formHosterMemberSelector + " input[id=phonesms]").attr("checked")?1:0;

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

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

                    var html = self.getMemberHtml(data.hostereMember);

                    if($(self.formHosterMemberTabSelector + ' div[id=hosterMembersContent] table tr[id=m' + data.hostereMember.id + ']').length > 0)
                        $(self.formHosterMemberTabSelector + ' div[id=hosterMembersContent] table tr[id=m' + data.hostereMember.id + ']').replaceWith(html);
                    else
                        $(self.formHosterMemberTabSelector + ' div[id=hosterMembersContent] table').append(html);

                    $(self.formHosterMemberSelector).dialog("close");
                }
            });
    }

    self.editMember = function(id)
    {
        $.ajax({
                url:"/ScoutsCMS/ajax/hosterMemberInfo.php",
                type: "post",
                data: {"id":id},
                dataType: 'json',
                success:function(data){
                   
                   self.clearMemberForm();
                   fillForm(self.formHosterMemberSelector + " .hosterMemberData", data["memberData"]);
                   if(data["phones"] && data["phones"][0])
                   {
                        $(self.formHosterMemberSelector + " input[id=phone]").val(data["phones"]["0"]["phone"]);
                        $(self.formHosterMemberSelector + " select[id=phoneDesc]").val(data["phones"]["0"]["phoneType"]);
                        $(self.formHosterMemberSelector + " input[id=phonesms]").attr("checked", data["phones"]["0"]["sms"]=="1"?true:false)
                   }

                   $(self.formHosterMemberSelector).dialog("option", "title", data["memberData"]["firstName"] + " " + data["memberData"]["lastName"]);
                   $(self.formHosterMemberSelector).dialog("open");
                }
            });
    }

    self.getMemberHtml = function(data)
    {
        var html =  "<tr class='" + data["even_class"] + "' id='m" + data["id"] + "'><td>" + data["name"] + "</td>";
        html += "<td>" + (data["teamName"]?data["teamName"]: "") + "</td>";
        if(self.mainManager)
        {
        	
        	html += "<td><label><input name='mainManager' type='checkbox' " + (data["mainManager"] == 1? "checked='checked'": "") +"/>Main Web Admin</label></td>";
           html += "<td><input type='image' src='/ScoutsCMS/images/remove.png' title='Delete' value='Delete' onclick='hp" +
                    self.idSuffix + ".deleleMemberFromHoster(" + data["id"] + "); return false;' /></td>";
           html += "<td><input type='image'  src='/ScoutsCMS/images/edit.png' " +
                "onclick='hp" + self.idSuffix + ".editMember(" + data["id"] + "); return false;' /></td>";
        }        
       
        html += "</tr>";
        return html;
    }

    self.addMemberOpen = function()
    {
        if($(self.formHosterInfoSelector + " input[name=id]").val() == "")
        {
            jAlert("Please save the organization first.");
            return;
        }

        if(self.mainManager)
        {
            $(self.formHosterMemberSelector + " input[name=mainManager]").parent().show();
        }
        else
        {
            $(self.formHosterMemberSelector + " input[name=mainManager]").parent().hide();
        }

         self.clearMemberForm();

        $(self.formHosterMemberSelector).dialog("option", "title", "Create New Member");
        $(self.formHosterMemberSelector).dialog("open");
    }

    self.clearMemberForm = function()
    {
        resetForm(self.formHosterMemberSelector + " .hosterMemberData");
        $(self.formHosterMemberSelector + " input[id=phone]").val("");
        $(self.formHosterMemberSelector + " select[id=phoneDesc]").val("");
        $(self.formHosterMemberSelector + " input[id=phonesms]").attr("checked", false)
    }

    self.deleleMemberFromHoster = function(id)
    {
        var hosterID = $(self.formHosterInfoSelector + " input[name=id]").val();
        if(typeof hosterID != 'undefined' && hosterID != "")
        {
            jConfirm('Are you sure?',
                    "Confirm",
                    function(r)
                    {
                        if(r)
                        {
                            $.ajax({
                                    url:"/ScoutsCMS/ajax/deleteMemberFormOrganization.php",
                                    type: "post",
                                    dataType: 'json',
                                    data: {memberID: id,
                                           hosterID: hosterID},
                                    success:function(){
                                        $(self.formHosterMemberTabSelector + " div[id=hosterMembersContent] tr[id=m" + id + "]").remove();
                                    }
                                });
                        }
                    }
            );
        }
    }

    self.saveTeamCallBack = function(name, id)
    {
        $.ajax({
            url:"/ScoutsCMS/ajax/teamInfo.php",
            type: "post",
            dataType: 'json',
            data: {"teamID": id},
            success: function(data){
                var tableID= "";
                var currentTeam = self.isCurrentYearTeam(data["seasonYear"]);
                if(currentTeam)
                {
                   tableID = "hosterTeamsContent";
                }
                else
                {
                    tableID = "hosterOldTeamsContent";
                }

                var html = self.getHosterTeamHTML(data);

                if($(self.formHosterTeamTabSelector + ' div[id=' + tableID + '] table tr[id=t' + data["id"] + "]").length == 0)
                {
                    $(self.formHosterTeamTabSelector + ' div[id=' + tableID + '] table').append(html);
                }
                else
                {
                    $(self.formHosterTeamTabSelector + ' div[id=' + tableID + '] table tr[id=t' + data["id"] + "]").replaceWith(html);
                }
            }
        });
    }

    self.getMainMagerInfo = function()
    {
        var retObj = {};
        $(self.formHosterMemberTabSelector + ' div[id=hosterMembersContent] table tr').each(function(){
           var id = $(this ).attr("id");
           id = id.substring(1);
           var mainManager = $(this).find("input[name=mainManager]").attr("checked")?1:0;
           retObj[id] = mainManager;
        });
        return retObj;
    }

    self.selectTab = function(type)
    {
        if(type == "team")
        {
            $(self.formHosterTabsSelector).tabs('select', 2);
        }
        else if(type == "member")
        {
            $(self.formHosterTabsSelector).tabs('select', 3);
        }
    }

    self.getCurrentHosterID = function()
    {
        return $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue");
    }

    self.setVisabilityByType = function()
    {
        var type = $(self.formHosterPopupSelector + " select[name=type]").val();

        switch(type)
        {
            case self.typeHighSchool:
                $(self.formHosterPopupSelector + " input[name=website]").parent().hide();
                $(self.formHosterPopupSelector + " input[name=website]").val("");

                $(self.formHosterPopupSelector + " input[name=yearEstablished]").parent().hide();
                $(self.formHosterPopupSelector + " input[name=yearEstablished]").val("");

                $(self.formHosterTabsSelector + " a[href=#hosterTeams]").parent().show();

                $(self.formHosterPopupSelector + " select[name=division]").parent().hide();
                $(self.formHosterPopupSelector + " select[name=division]").val("");

                $(self.formHosterPopupSelector + " [id=organizationNameLabel]").text("High School Name");
                break;
            case self.typeCollege:
                $(self.formHosterPopupSelector + " input[name=website]").parent().hide();
                $(self.formHosterPopupSelector + " input[name=website]").val("");

                $(self.formHosterPopupSelector + " input[name=yearEstablished]").parent().hide();
                $(self.formHosterPopupSelector + " input[name=yearEstablished]").val("");

                $(self.formHosterTabsSelector + " a[href=#hosterTeams]").parent().hide();

                $(self.formHosterPopupSelector + " select[name=division]").parent().show();

                $(self.formHosterPopupSelector + " [id=organizationNameLabel]").text("College Name");
                break;
            default:
                $(self.formHosterPopupSelector + " input[name=website]").parent().show();
                $(self.formHosterPopupSelector + " input[name=yearEstablished]").parent().show();

                $(self.formHosterTabsSelector + " a[href=#hosterTeams]").parent().show();

                $(self.formHosterPopupSelector + " select[name=division]").parent().hide();
                $(self.formHosterPopupSelector + " select[name=division]").val("");

                $(self.formHosterPopupSelector + " [id=organizationNameLabel]").text("Organization Name");
                break;
        }
    }

    self.fillTypeOptions = function()
    {
        $(self.formHosterPopupSelector + " select[name=type]").html(self.hosterTypesOptions);
        $(self.formHosterPopupSelector + " select[name=type]").val($(self.formHosterPopupSelector + " select[name=type] option:selected").val());
        if($(self.formHosterPopupSelector + " select[name=type] option").length > 1)
        {            
           $(self.formHosterPopupSelector + " select[name=type]").show();
           $(self.formHosterPopupSelector + " label[id=type_label]").hide();
        }
        else
        {
           $(self.formHosterPopupSelector + " select[name=type]").hide();
           $(self.formHosterPopupSelector + " label[id=type_label]").html($(self.formHosterPopupSelector + " select[name=type] option").text());
           $(self.formHosterPopupSelector + " label[id=type_label]").show();
        }
    }

    self.isCurrentYearTeam = function(teamYear)
    {
        teamYear = parseInt(teamYear);
        curDate = new Date();
        novDate = new Date(curDate.getFullYear(), 10, 01);
        decDate = new Date(curDate.getFullYear(), 12, 01);

        if(curDate < novDate)
        {
            return teamYear == curDate.getFullYear();
        }
        else if(novDate <= curDate && curDate < decDate)
        {
            return teamYear == curDate.getFullYear() || teamYear == curDate.getFullYear()+1;
        }
        else
        {
             return teamYear == curDate.getFullYear()+1;
        }
    }

    self.checkEnteredValue = function()
    {
        self.closeBlurTimeout();
		var obj = $(self.hosterProfileSelector + " input[id=hoster_id]");
        if(!self.selectAutoSuggest && obj.val() != "" && obj.is(":visible") &&
                (!self.getCurrentHosterID() || (self.getCurrentHosterID() && self.focusInValue != obj.val() && self.focusInValue)))
        {
            showAjaxLoading(true);
            $.ajax({
                url:"/ScoutsCMS/ajax/checkAutocompleteValue.php?t=hoster&type="+self.hosterType+"&"+createQueryString(self.additionalSuggestParams),
                type: "get",
                dataType: 'json',
                data: {"term": $(self.hosterProfileSelector + " input[id=hoster_id]").val()},
                success: function(data){
                    data = data.result;
                    showAjaxLoading(false);
                    if(data.length == 0)
                    {
                        self.createNewHoster($(self.hosterProfileSelector + " input[id=hoster_id]").val());
                        return;
                    }

                    var duplicateStr = "There are several organizations named similarly to that you just entered. Please check the list below carefully and select one if it is among them. If it isn't, create a new one with the button at the bottom.\n";
                    duplicateStr +="<table cellpadding='0' cellspacing='0' class='duplicatesTable'><thead><tr><th>Name</th><th>City</th></tr></thead>";
                    for(var i in data)
                    {
                        duplicateStr += "<tr class='a_button' onclick='hp" + self.idSuffix + ".setHosterPopId({\"status\":\"success\", \"id\":\"" + data[i].id + "\"});$.alerts._hide();'>"
                                +"<td>" + data[i].name + "</td>"                                
                                +"<td>" + (data[i].cityName?data[i].cityName:"") + " (" +  (data[i].stateAbbreviation?data[i].stateAbbreviation:"") + ")</td>"
                                +"</tr>";
                    }
                    var backup = $.alerts.okButton;
                    $.alerts.okButton = "Create New";
                    jConfirm(duplicateStr, "Warning", function(r){
                        if(r)
                        {
                            self.createNewHoster($(self.hosterProfileSelector + " input[id=hoster_id]").val());
                        }
                    });
                    $.alerts.okButton = backup;
                }
            });
        }
    }

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

    self.clearFilter = function()
    {
        $(self.hosterProfileSelector + " input[id=hoster_id]").val("");
        $(self.hosterProfileSelector + " input[id=hoster_id]").attr("retValue", "");
        if(self.changeCallBack !=null && self.changeCallBack != '') eval(self.changeCallBack + "(null,null)");
    }

    self.getCurrentHosterName = function(){
        return $(self.hosterProfileSelector + " input[id=hoster_id]").val();
    }

    self.exportTeamToExcel = function(options){
        var d = new Date();
        var rand = 10000 - Math.floor(Math.random()*1100) - d.getUTCMilliseconds();
        window.open("/ScoutsCMS/ajax/exportTeamToExcel_" + rand + ".php?" + createQueryString(options));
    }

    self.showExportTeamToExcelOptions = function(id){
        $(self.exportTeamOptionsSelector).dialog({
                title: "Export Team Roster Options",
                modal:true,
                buttons: {
                    "Export": function() {
                        var options = GetFormValues(".exportTeamData");
                        options["id"] = id;
                        self.exportTeamToExcel(options);
                        $(self.exportTeamOptionsSelector).dialog("close");
                    },
                    "Close": function() {$(this).dialog("close");}
                }
            });
    }

    self.init();
}
