var TEAMFIXTURES = 'Fixtures / Results';
var TEAMSCORERS = 'Scorers';
var TEAMKEEPERS = 'Keepers';
//var TEAMSELECTION = "Selection";

var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event; 
var DDM = YAHOO.util.DragDropMgr;


function TeamDetailsInit(activeTab, seasonId, teamId)
{
    // Set up tabs
    YAHOO.SHC.TeamDetails = new YAHOO.widget.TabView('TeamDetailsTabs');
    YAHOO.SHC.TeamDetails.addTab(new YAHOO.widget.Tab({label: TEAMFIXTURES, dataSrc:'/getFixtures.ashx?fixtures=2&team=' + teamId + '&season=' + seasonId, cacheData:false}));
    YAHOO.SHC.TeamDetails.getTab(0).addListener('contentChange', teamFixtures);
    YAHOO.SHC.TeamDetails.addTab(new YAHOO.widget.Tab({label: TEAMSCORERS, dataSrc:'/getScorers.ashx', cacheData:false}));
    YAHOO.SHC.TeamDetails.addTab(new YAHOO.widget.Tab({label: TEAMKEEPERS, dataSrc:'/getKeepers.ashx', cacheData:false}));
//    YAHOO.SHC.TeamDetails.addTab(new YAHOO.widget.Tab({label: TEAMSELECTION, dataSrc:'/members/getSelection.ashx', cacheData:false}));
    //YAHOO.SHC.TeamDetails.getTab(1).addListener('contentChange', teamTabChange);
    
    YAHOO.SHC.TeamDetails._contentTransition = YAHOO.SHC.TeamDetails.contentTransition; // backup of the original method...
    YAHOO.SHC.TeamDetails.contentTransition = function(newTab, oldTab) {
        // getting the dimension of the old tab
        var el = oldTab.get('contentEl');
        var d = Dom.getRegion (el);
        // only apply this rule for empty tabs...
        //if (!newTab.get('content')) {
           newTab.set('content', '<div style="width:'+(d.left-d.right)+'px; height: '+(d.bottom-d.top)+'px;">' + largeWait + '</div>');
        //}
        // parent::contentTransition - executing the original method...
        YAHOO.SHC.TeamDetails._contentTransition (newTab, oldTab);
    };
    YAHOO.SHC.TeamDetails.set('activeTab', YAHOO.SHC.TeamDetails.getTab(0));
}

var teamFixtures = function() {
    var myEls = Dom.getElementsBy(checkFixture, "tr", 'TeamDetailsTabs');
    teamResults = [];
    teamMissing = [];
    var f = myEls.length - 1;
    
    if (f >= 0) {            
        do {
            teamResults[teamResults.length] = myEls[f].id;
            Event.addListener(myEls[f].id, "click", showFixtureDetail);
            Event.addListener(myEls[f].id, "mouseover", setHoverFixture, true);
            Event.addListener(myEls[f].id, "mouseout", setHoverFixture, false);
            //YAHOO.SHC.tooltips.FixtureResult = new YAHOO.widget.Tooltip("fixtureResult", {context: myEls[f], text: 'Click the fixture to see more information.'});
        }
        while (f--);
    }
    myEls = Dom.getElementsBy(checkTRTag, "tr", 'TeamDetailsTabs');
    f = myEls.length - 1;
    if (f >= 0) {            
        do {
            if (myEls[f].lastChild.childNodes.length > 0) {
                var k = myEls[f].lastChild.childNodes.length - 1;
                do {
                    if (myEls[f].lastChild.childNodes[k].getAttribute("type") == "edit") {
                        teamMissing[teamResults.length] = myEls[f].id;
                        Event.addListener(myEls[f].lastChild.childNodes[k].id, "click", addFixtureResult);
                        YAHOO.SHC.tooltips.FixtureResult = new YAHOO.widget.Tooltip("fixtureResult", {context: myEls[f].lastChild.childNodes[k], text: 'Click to edit the result.'});
                    }                    
                    else if (myEls[f].lastChild.childNodes[k].getAttribute("type") == "details") {
                        teamMissing[teamResults.length] = myEls[f].id;
                        //Event.addListener(myEls[f].lastChild.childNodes[k], "click", showFixtureDetail);
                        YAHOO.SHC.tooltips.FixtureResult = new YAHOO.widget.Tooltip("fixtureResult", {context: myEls[f].lastChild.childNodes[k], text: 'Click to see more information.'});
                    }
                    else if (myEls[f].lastChild.childNodes[k].getAttribute("type") == "selection") {
                        teamMissing[teamResults.length] = myEls[f].id;
                        YAHOO.SHC.tooltips.FixtureResult = new YAHOO.widget.Tooltip("fixtureResult", {context: myEls[f].lastChild.childNodes[k], text: 'Click to see the Team Selection.'});
                    }
                }
                while (k--);
            }
        }
        while (f--);
    }
};
var showTeamFixtureDetail = function(e, obj) {
    var myTarget = getRow(e);
    var url = "/GetFixtures.ashx?fixtures=4&fixtureid=" + myTarget.id;
    try 
    {
        YAHOO.util.History.navigate( "content", url );
    } 
    catch ( e ) 
    {
        getContent(url, false);
    }
};
var addFixtureResult = function(e, obj) {
    var myTarget = getRow(e);
    var url = "/team/maintenance/resultsEntry.ashx?fixtureid=" + myTarget.id;
    try 
    {
        YAHOO.util.History.navigate( "content", url );
    } 
    catch ( e ) 
    {
        getContent(url, false);
    }
};

function resizeFixtureDialog()
{
    YAHOO.SHC.myDialog.cfg.setProperty('width', '500px');
    YAHOO.SHC.myDialog.render();        
    YAHOO.SHC.myDialog.show();
}

function setUpOppositionMaintenance()
{
    var previousValue = '';
    
    var storeOpposition = function (e) {
        var myTarget = getRow(e);
        
        previousValue = YAHOO.util.Dom.get(myTarget.id + 'opposition').value;
        YAHOO.log('previousValue=' + previousValue);
    };
    var editOpposition = function (e) {
        var myTarget = getRow(e);
        
        var opposition = YAHOO.util.Dom.get(myTarget.id + 'opposition').value;
        YAHOO.log('opposition=' + opposition);
        if (!opposition)
            YAHOO.util.Dom.get(myTarget.id + 'opposition').value = previousValue;
        else
            YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'hidden', 'visible');
    };
    var saveOpposition = function (e) {
        var myTarget = getRow(e);
        var opposition = YAHOO.util.Dom.get(myTarget.id + 'opposition').value;
        var teamtype = myTarget.getAttribute('teamtype');
        
        getUrlContent('/team/maintenance/setOpposition.ashx?oppositionid=' + myTarget.id + '&opposition=' + opposition + '&teamtype=' + teamtype, false);
        YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'visible', 'hidden');
    };
    
    var addListeners = function() {
        myEls = YAHOO.util.Dom.getElementsByClassName('hidden', 'img', YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddClickAndMouseListeners(myEls, saveOpposition, setHoverFixture, setHoverFixture);
        
        myEls = YAHOO.util.Dom.getElementsBy(checkTextInputTag, "input", YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddEditAndStoreListeners(myEls, editOpposition, storeOpposition);
    };
    
    YAHOO.util.Event.onAvailable("generalMaintenanceHolder",addListeners);
}
function setUpTeamMaintenance()
{
    var previousValue = '';
    var prevDisplay = '';
    
    var storeTeam = function (e) {
        var myTarget = getRow(e);
        
        previousValue = YAHOO.util.Dom.get(myTarget.id + 'team').value;
        prevDisplay = YAHOO.util.Dom.get(myTarget.id + 'display').value;
        YAHOO.log('previousValue=' + previousValue);
    };
    var editTeam = function (e) {
        var myTarget = getRow(e);
        
        var team = YAHOO.util.Dom.get(myTarget.id + 'team').value;
        var displayOrder = YAHOO.util.Dom.get(myTarget.id + 'display').value;
        YAHOO.log('team=' + team);
        if (!team) {
            YAHOO.util.Dom.get(myTarget.id + 'team').value = previousValue;
            YAHOO.util.Dom.get(myTarget.id + 'display').value = prevDisplay;
        }
        else
            YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'hidden', 'visible');
    };
    var saveTeam = function (e) {
        var myTarget = getRow(e);
        var team = YAHOO.util.Dom.get(myTarget.id + 'team').value;
        var teamtype = myTarget.getAttribute('teamtype');
        var displayOrder = YAHOO.util.Dom.get(myTarget.id + 'display').value;
        
        getUrlContent('/team/maintenance/setTeam.ashx?teamid=' + myTarget.id + '&team=' + team + '&teamtype=' + teamtype + '&displayorder=' + displayOrder, false);
        YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'visible', 'hidden');
    };
    
    var addListeners = function() {
        myEls = YAHOO.util.Dom.getElementsByClassName('hidden', 'img', YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddClickAndMouseListeners(myEls, saveTeam, setHoverFixture, setHoverFixture);
        
        myEls = YAHOO.util.Dom.getElementsBy(checkTextInputTag, "input", YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddEditAndStoreListeners(myEls, editTeam, storeTeam);
    };
    
    YAHOO.util.Event.onAvailable("generalMaintenanceHolder",addListeners);
}
function setUpVenueMaintenance()
{
    var previousValue = '';
    var checked;
    
    var storeVenue = function (e) {
        var myTarget = getRow(e);
        
        previousValue = YAHOO.util.Dom.get(myTarget.id + 'venue').value;
        checked = YAHOO.util.Dom.get(myTarget.id + 'home').checked;
        YAHOO.log('Store Venue: previousValue=' + previousValue + 'checked=' + checked);
    };
    var editVenue = function (e) {
        var myTarget = getRow(e);
        
        var venue = YAHOO.util.Dom.get(myTarget.id + 'venue').value;
        YAHOO.log('Edit Venue: venue=' + venue);
        if (!venue)
            YAHOO.util.Dom.get(myTarget.id + 'venue').value = previousValue;
        else
            YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'hidden', 'visible');
    };
    var saveVenue = function (e) {
        var myTarget = getRow(e);
        var venue = YAHOO.util.Dom.get(myTarget.id + 'venue').value;
        var homeVenue = YAHOO.util.Dom.get(myTarget.id + 'home').checked;
        YAHOO.log('Save Venue: venue=' + venue + ',homeVenue=' + homeVenue);
        
        getUrlContent('/team/maintenance/setVenue.ashx?venueid=' + myTarget.id + '&venue=' + venue + '&homevenue=' + homeVenue + '&directions=', false);
        YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'visible', 'hidden');
    };
    
    var addListeners = function() {
        myEls = YAHOO.util.Dom.getElementsByClassName('hidden', 'img', YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddClickAndMouseListeners(myEls, saveVenue, setHoverFixture, setHoverFixture);
        
        myEls = YAHOO.util.Dom.getElementsBy(checkInputTag, "input", YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddEditAndStoreListeners(myEls, editVenue, storeVenue);
    };
    
    YAHOO.util.Event.onAvailable("generalMaintenanceHolder",addListeners);
}
function setUpFixtureTypeMaintenance()
{
    var previousValue = '';
    var checked;
    
    var storeFixtureType = function (e) {
        var myTarget = getRow(e);
        
        previousValue = YAHOO.util.Dom.get(myTarget.id + 'fixturetype').value;
    };
    var editFixtureType = function (e) {
        var myTarget = getRow(e);
        
        var fixturetype = YAHOO.util.Dom.get(myTarget.id + 'fixturetype').value;
        if (!fixturetype)
            YAHOO.util.Dom.get(myTarget.id + 'fixturetype').value = previousValue;
        else
            YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'hidden', 'visible');
    };
    var saveFixtureType = function (e) {
        var myTarget = getRow(e);
        var fixturetype = YAHOO.util.Dom.get(myTarget.id + 'fixturetype').value;
        
        getUrlContent('/team/maintenance/setFixtureType.ashx?fixturetypeid=' + myTarget.id + '&fixturetype=' + fixturetype, false);
        YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'visible', 'hidden');
    };
    
    var addListeners = function() {
        myEls = YAHOO.util.Dom.getElementsByClassName('hidden', 'img', YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddClickAndMouseListeners(myEls, saveFixtureType, setHoverFixture, setHoverFixture);
        
        myEls = YAHOO.util.Dom.getElementsBy(checkTextInputTag, "input", YAHOO.util.Dom.get('generalMaintenanceHolder'));
        AddEditAndStoreListeners(myEls, editFixtureType, storeFixtureType);
    };
    
    YAHOO.util.Event.onAvailable("generalMaintenanceHolder",addListeners);
}
function setUpFixtureStatusMaintenance()
{
    var previousValue = '';
    var checked;
    
    var storeFixtureStatus = function (e) {
        var myTarget = getRow(e);
        
        previousValue = YAHOO.util.Dom.get(myTarget.id + 'fixturestatus').value;
    };
    var editFixtureStatus = function (e) {
        var myTarget = getRow(e);
        
        var fixturestatus = YAHOO.util.Dom.get(myTarget.id + 'fixturestatus').value;
        if (!fixturestatus)
            YAHOO.util.Dom.get(myTarget.id + 'fixturestatus').value = previousValue;
        else
            YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'hidden', 'visible');
    };
    var saveFixtureStatus = function (e) {
        var myTarget = getRow(e);
        var fixturestatus = YAHOO.util.Dom.get(myTarget.id + 'fixturestatus').value;
        
        getUrlContent('/team/maintenance/setFixtureStatus.ashx?fixturestatusid=' + myTarget.id + '&fixturestatus=' + fixturestatus, false);
        YAHOO.util.Dom.replaceClass(myTarget.id + 'save', 'visible', 'hidden');
    };
    
    var addListeners = function() {
        myEls = Dom.getElementsByClassName('hidden', 'img', Dom.get('generalMaintenanceHolder'));
        AddClickAndMouseListeners(myEls, saveFixtureStatus, setHoverFixture, setHoverFixture);
        
        myEls = Dom.getElementsBy(checkTextInputTag, "input", Dom.get('generalMaintenanceHolder'));
        AddEditAndStoreListeners(myEls, editFixtureStatus, storeFixtureStatus);
    };
    
    YAHOO.util.Event.onAvailable("generalMaintenanceHolder",addListeners);
}

function AddEditAndStoreListeners(elements, editFunction, storeFunction) {
    var f = elements.length - 1;

    if (f >= 0)
    {            
        do
        {
            YAHOO.util.Event.addListener(elements[f].id, "change", editFunction, elements[f]);
            YAHOO.util.Event.addListener(elements[f].id, "focus", storeFunction, elements[f]);
        }
        while (f--);
    }
}
function AddClickAndMouseListeners(elements, clickListener, mouseOverListener, mouseOutListener) {
    f = elements.length - 1;

    if (f >= 0)
    {            
        do
        {
            YAHOO.util.Event.addListener(elements[f].id, "click", clickListener, elements[f]);
            YAHOO.util.Event.addListener(elements[f].id, "mouseover", mouseOverListener, true);
            YAHOO.util.Event.addListener(elements[f].id, "mouseout", mouseOutListener, false);
        }
        while (f--);
    }
}

//var getPlayer = function (el) 
//    {
//        return el.tagName == "LI";
//    };

function setupFixtureResult(fixtureId, isPlayed) {
    YAHOO.SHC.ResultEntry.fixtureId = fixtureId;
    YAHOO.SHC.ResultEntry.isPlayed = isPlayed;
    YAHOO.SHC.ResultEntry.init();
}

function setUpSelectionMaintenance(teamType, selectionDate) {
	//var SelectionApp = YAHOO.SHC.Selection;
	YAHOO.SHC.Selection.teamType = teamType;
	YAHOO.SHC.Selection.selectionDate = selectionDate;
	YAHOO.SHC.Selection.init(teamType);
}
function setUpSelection(teamType) {
    var manageSelection = function () {
        var selectedDate = Dom.get('selectionDate')[Dom.get('selectionDate').selectedIndex].value;
        
        if (selectedDate === "0")
            return;
        else {
            var url = '/team/maintenance/getSelectionForDate.ashx~teamtype-' + teamType + ',date-' + selectedDate;
            try 
            {
                YAHOO.util.History.navigate( "content", url );
                //setBrowserTitle(testItem.getAttribute('title'));
            } 
            catch ( e ) 
            {
                getContent(url, false);
            }
            //getContent('/team/maintenance/getSelectionForDate.ashx~teamtype-' + teamType + ',date-' + selectedDate, false);
        }
    };
    Event.on("manageSelection", "click", manageSelection);
}
YAHOO.SHC.Updates = {
    messages : null, 
    clear : function() {
        if (this.messages)
            this.messages.innerHTML = '';
    },
    display : function(msg) {
        if (this.messages)
            this.messages.innerHTML = msg;
    }
};
YAHOO.SHC.ResultEntry = {
    fixtureId : null,
    teamList : null,
    keeperList: null,
    scorerList : null,
    cardList : null,
    addKeeperButton : null,
    addScorerButton : null,
    addCardButton : null,
    findMemberButton : null,
    saveResultButton : null,
    isPlayed : false,
    resultSection : null,
    outcome : null,
    init : function () {
        this.outcome = Dom.get('fixturestatus');
        this.addKeeperButton = new YAHOO.widget.Button('addKeeper')
        this.addKeeperButton.on('click', this.addKeeper, null, this);
        this.addScorerButton = new YAHOO.widget.Button('addScorer')
        this.addScorerButton.on('click', this.addScorer, null, this);
        this.addCardButton = new YAHOO.widget.Button('addCard')
        this.addCardButton.on('click', this.addCard, null, this);
        this.findMemberButton = new YAHOO.widget.Button('addMemToSelection')
        this.findMemberButton.on('click', this.findAndAddMember, null, this);
        this.teamList = Dom.get('teamlist_' + this.fixtureId);
        this.keeperList = Dom.get('keeperlist_' + this.fixtureId);
        this.scorerList = Dom.get('scorerlist_' + this.fixtureId);
        this.cardList = Dom.get('cardlist_' + this.fixtureId);
        this.resultSection = Dom.get('resultSection');
        this.saveResultButton = new YAHOO.widget.Button('saveOutcome')
        this.saveResultButton.on('click', this.addResult, null, this);

        this.addKeeperButton.set('disabled', (this.keeperList.attributes['needKeepers'].value == 0));
        this.addScorerButton.set('disabled', (this.scorerList.attributes['needScorers'].value == 0));
        this.saveResultButton.set('disabled', this.isPlayed);

        // Add the delete and edit listeners
        Event.on(this.keeperList, 'click', this.keeperEdit, this, true);
        Event.on(this.scorerList, 'click', this.deleteScorer, this, true);
        Event.on(this.cardList, 'click', this.deleteCard, this, true);
        
        Event.on(this.outcome, 'change', this.handleResult, this, true);
        
        // If been played then show details
        if (!this.isPlayed && this.resultSection) {
            Dom.setStyle(this.resultSection, "visibility", "hidden");
            Dom.setStyle(this.resultSection, "display", "none");
        }
    }, 
    addKeeper : function(e) {
        if (!this.teamList.value) {
            showError('Please select a Player from the list before clicking Add Keeper');
            return;
        }
        var url = '/team/maintenance/editKeeper.ashx~fixtureid-' + this.fixtureId + ',memberid-' + this.teamList.value;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Edit Keeper');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    addScorer : function(e) {
        if (!this.teamList.value) {
            showError('Please select a Player from the list before clicking Add Scorer');
            return;
        }
        // Check the values, is minutes a number
        var time = Dom.get('time');
        var minutes = validateInt(time.value, 'Please enter a valid number of minutes, or leave blank for Unknown.', '', false);
        if (Dom.get('unknown').checked)
            goalType = Dom.get('unknown').value;
        else if (Dom.get('field').checked)
            goalType = Dom.get('field').value;
        else if (Dom.get('pc').checked)
            goalType = Dom.get('pc').value;
        else if (Dom.get('ps').checked)
            goalType = Dom.get('ps').value;
        
        var url = '/team/maintenance/DoAddScorer.ashx~fixtureId-' + this.fixtureId + ',memberId-' + this.teamList.value + ',goalType-' + goalType + ',minutes-' + minutes;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Add Scorer');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    addCard : function(e) {
        if (!this.teamList.value) {
            showError('Please select a Player from the list before clicking Add Card');
            return;
        }
        var cardType;
        if (Dom.get('green').checked)
            cardType = Dom.get('green').value;
        else if (Dom.get('yellow').checked)
            cardType = Dom.get('yellow').value;
        else if (Dom.get('red').checked)
            cardType = Dom.get('red').value;
            
        var url = '/team/maintenance/DoAddCard.ashx~fixtureid-' + this.fixtureId + ',memberid-' + this.teamList.value + ',cardType-' + cardType;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Add Card');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    deleteScorer : function(e) {
        var eTarget = e.target;
        var url = '/team/maintenance/DoDeleteScorer.ashx~fixtureid-' + this.fixtureId + ',scorerid-' + eTarget.id;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Delete Scorer');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    keeperEdit : function(e) {
        var eTarget = e.target;
        var url = '';
        if (eTarget.id.indexOf('edit_') > -1)
            url = '/team/maintenance/editKeeper.ashx~fixtureid-' + this.fixtureId + ',keeperid-' + eTarget.id;
        else
            url = '/team/maintenance/DoDeleteKeeper.ashx~fixtureid-' + this.fixtureId + ',keeperid-' + eTarget.id;
        
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Edit Keeper');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    deleteCard : function(e) {
        var eTarget = e.target;
        var url = '/team/maintenance/DoDeleteCard.ashx~fixtureid-' + this.fixtureId + ',cardid-' + eTarget.id;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Delete Card');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    findAndAddMember : function (e) {
        var url = '/team/maintenance/findMemberForSelection.ashx~fixtureid-' + this.fixtureId + ',searchterm-' + Dom.get('searchTerm').value;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Delete Card');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    },
    addResult : function() {
        var ourScore = '';
        var theirScore = '';
        
        if (this.outcome.value == 2) {
            ourScore = validateInt(Dom.get('ourscore').value, 'Please enter a valid value for Ourscore.', null, true);
            if (ourScore == -1)
                return;
            theirScore = validateInt(Dom.get('theirscore').value, 'Please enter a valid value for Their score.', null, true);;
            if (theirScore == -1)
                return;
        }        
        var url = '/team/maintenance/DoResultEntry.ashx~fixtureid-' + this.fixtureId + ',ourscore-' + ourScore + ',theirscore-' + theirScore + ',fixturestatus-' + this.outcome.value;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Saving Fixture Outcome');
        } 
        catch ( e ) {
            getContent(url, false);
        }
    }, 
    handleResult : function() {
        if (this.outcome.value == '2') {
            this.isPlayed = true;
            Dom.setStyle(this.resultSection, "visibility", "visible");
            Dom.setStyle(this.resultSection, "display", "block");
        }
        else {
            this.isPlayed = false;
            Dom.setStyle(this.resultSection, "visibility", "hidden");
            Dom.setStyle(this.resultSection, "display", "none");
        }
        
        this.saveResultButton.set('disabled', false);
    }
};
YAHOO.SHC.Selection = {
    availablePlayers : null,
    teams : null,
    //selectionUpdates : null,
    teamType : null,
    selectionDate : null,
    init : function() {
        Event.on("mailSelection", "click", this.emailSelection); 
        
//        var teamHolder = Dom.get('teams');
        this.teams = Dom.getElementsBy( function(e){return true;}, "ul", 'teams');
        var k = this.teams.length - 1;
        if (k >= 0) {
            do {
                new YAHOO.util.DDTarget(this.teams[k].id);
                
                if(this.teams[k].childNodes.length > 0) {
                    var i = this.teams[k].childNodes.length - 1;
                    
                    if (i >= 0) {
                        do {
                            new YAHOO.SHC.Players(this.teams[k].childNodes[i].id);
                            DDM.getDDById(this.teams[k].childNodes[i].id).sourceElement = this.teams[k].id;
                        }
                        while (i--);
                    }
                }                    
            }
            while (k--);
        }
        
        new YAHOO.util.DDTarget("availableplayers");       
        this.availablePlayers = Dom.get('availableplayers').childNodes;
        
//        this.availablePlayers = Dom.getElementsBy(getPlayer, "li", Dom.get('availableplayers'));
//        new YAHOO.SHC.AvailablePlayers("mem_309");
        var i = this.availablePlayers.length - 1;
        
        if (i >= 0) {
            do {
                new YAHOO.SHC.Players(this.availablePlayers[i].id);
                DDM.getDDById(this.availablePlayers[i].id).sourceElement = 'availableplayers';
            }
            while (i--);
        }
        
        YAHOO.SHC.Updates.messages = Dom.get('selectionUpdates');        
        
    	var editButtons = Dom.getElementsByClassName('editImage', 'img', 'teams');
    	Event.on(editButtons, "click", this.editFixture);
    },
    emailSelection : function() {
        var url = '/team/maintenance/DoMailSelection.ashx~teamtype-' + YAHOO.SHC.Selection.teamType + ',date-' + YAHOO.SHC.Selection.selectionDate;
        getContent(url, false);
    },	
	editFixture : function (e) {
        var myTarget = getTarget(e);
        var url = '/team/maintenance/editFixture.ashx~fixtureid-' + myTarget.getAttribute('fixtureId') + ',teamtype-' + YAHOO.SHC.Selection.teamType;
        try {
            YAHOO.util.History.navigate( "content", url );
            setBrowserTitle('Edit Fixture');
        } 
        catch ( e ) {
            getContent(url, false);
        }
	}
};

YAHOO.SHC.Players = function(id, sGroup, config) {
    YAHOO.SHC.Players.superclass.constructor.call(this, id, sGroup, config); 

    this.logger = this.logger || YAHOO; 
    var el = this.getDragEl(); 
    Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent 

    this.goingUp = false; 
    this.lastY = 0; 
    this.isTarget = false;
};
YAHOO.extend(YAHOO.SHC.Players, YAHOO.util.DDProxy, {
    sourceElement : null,
    stayInSourceList : false,
    startDrag: function(x, y) {
        this.logger.log(this.id + " startDrag");

        // make the proxy look like the source element
        var dragEl = this.getDragEl();
        var clickEl = this.getEl();
        if (!this.stayInSourceList)
            Dom.setStyle(clickEl, "visibility", "hidden");

        dragEl.innerHTML = clickEl.innerHTML;

        Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color"));
        Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor"));
        Dom.setStyle(dragEl, "border", "2px solid gray");
        
        var targets = DDM.getRelated(this, true);
        for (var i=0; i<targets.length; i++) {
            var targetEl = targets[i].getEl();
            Dom.addClass(targetEl, "selectionTarget");
        }

        YAHOO.SHC.Updates.clear();
    },

    endDrag: function(e) {

        var srcEl = this.getEl();
        var proxy = this.getDragEl();

        // Show the proxy element and animate it to the src element's location
        Dom.setStyle(proxy, "visibility", "");
        var a = new YAHOO.util.Motion( 
            proxy, { 
                points: { 
                    to: Dom.getXY(srcEl)
                }
            }, 
            0.2, 
            YAHOO.util.Easing.easeOut 
        )
        var proxyid = proxy.id;
        var thisid = this.id;

        // Hide the proxy and show the source element when finished with the animation
        a.onComplete.subscribe(function() {
                Dom.setStyle(proxyid, "visibility", "hidden");
                Dom.setStyle(thisid, "visibility", "");
            });
        a.animate();
        var targets = DDM.getRelated(this, true);
        for (var i=0; i<targets.length; i++) {
            var targetEl = targets[i].getEl();
            Dom.removeClass(targetEl, "selectionTarget");
        }
        
    },
    onDragDrop: function(e, id) {

        // If there is one drop interaction, the li was dropped either on the list,
        // or it was dropped on the current location of the source element.
        if (DDM.interactionInfo.drop.length === 1) {

            // The position of the cursor at the time of the drop (YAHOO.util.Point)
            var pt = DDM.interactionInfo.point; 

            // The region occupied by the source element at the time of the drop
            var region = DDM.interactionInfo.sourceRegion; 

            // Check to see if we are over the source element's location.  We will
            // append to the bottom of the list once we are sure it was a drop in
            // the negative space (the area of the list without any list items)
            if (!region.intersect(pt)) {
                var destEl = Dom.get(id);
                var destDD = DDM.getDDById(id);
                destEl.appendChild(this.getEl());
                destDD.isEmpty = false;
                DDM.refreshCache();

                // We are adding an available player to a team
                if ((this.sourceElement === 'availableplayers') 
                    && (destEl.id.indexOf('teamlist') >= 0)) {
                    this.addToSelection(destEl);
                    this.sourceElement = destEl.id;
                }
                else if ((this.sourceElement.indexOf('keeperlist') >= 0) 
                    && (destEl.id.indexOf('teamlist') >= 0)) {
                    this.removeKeeper(DDM.getDDById(this.sourceElement));
                    this.sourceElement = destEl.id;
                }
                else if ((this.sourceElement.indexOf('teamlist') >= 0) 
                    && (destEl.id.indexOf('keeperlist') >= 0)) {
                    this.addKeeper(destEl);
                    this.sourceElement = destEl.id;
                }
                // Moving from team to team
                else if ((this.sourceElement.indexOf('teamlist') >= 0) 
                    && (destEl.id.indexOf('teamlist') >= 0)) {
                    this.moveSelection(DDM.getDDById(this.sourceElement), destEl);
                    this.sourceElement = destEl.id;
                }
                else if ((this.sourceElement.indexOf('teamlist') >= 0) 
                    && (destEl.id === 'availableplayers')) {
                    this.removeFromSelection(DDM.getDDById(this.sourceElement));
                    this.sourceElement = destEl.id;
                }
            }

        }
    },

    onDrag: function(e) {

        // Keep track of the direction of the drag for use during onDragOver
        var y = Event.getPageY(e);

        if (y < this.lastY) {
            this.goingUp = true;
        } else if (y > this.lastY) {
            this.goingUp = false;
        }

        this.lastY = y;
    },

    onDragOver: function(e, id) {
    
        var srcEl = this.getEl();
        var destEl = Dom.get(id);

        // We are only concerned with list items, we ignore the dragover
        // notifications for the list.
        if (destEl.nodeName.toLowerCase() == "li") {
            var orig_p = srcEl.parentNode;
            var p = destEl.parentNode;

            if (this.goingUp) {
                p.insertBefore(srcEl, destEl); // insert above
            } else {
                p.insertBefore(srcEl, destEl.nextSibling); // insert below
            }

            DDM.refreshCache();
        }
    },
    addToSelection : function(destinationTeam) {
        var url = '/team/maintenance/DoSelection.ashx?action=0&teamtype=' + YAHOO.SHC.Selection.teamType + '&fixtureid=' + destinationTeam.id + '&memberid=' + this.id;
        var sourcePlayer = this.getEl();
        var callback = {
            success : function(o) {
                var response = eval('new Array(' + o.responseText + ')');
                if (response[0] === 'SUCCESS') {
                    YAHOO.SHC.Updates.display('Selection successfull.');
                    var image = new Image(12,12);
                    image.src = '/graphics/unconfirmed.gif'
                    image.setAttribute('class', 'playerStatus');
                    sourcePlayer.insertBefore(image, sourcePlayer.firstChild);
                }
                else {
                    YAHOO.SHC.Updates.display('Selection failed.');
                }
            },
            failure : function(o) {
                showContentError();
            }
        };
        YAHOO.util.Connect.resetFormState();
        var conn = YAHOO.util.Connect.asyncRequest("GET", unescape(url), callback, null);
    },
    removeFromSelection : function(sourceTeam) {
        var url = '/team/maintenance/DoSelection.ashx?action=1&teamtype=' + YAHOO.SHC.Selection.teamType + '&fixtureid=' + sourceTeam.id + '&memberid=' + this.id;
        var sourcePlayer = this.getEl();
        var callback = {
            success : function(o) {
                var response = eval('new Array(' + o.responseText + ')');
                if (response[0] === 'SUCCESS') {
                    YAHOO.SHC.Updates.display('Selection removed successfully.');
                    sourcePlayer.removeChild(sourcePlayer.firstChild);
                    if (sourcePlayer.childNodes.length > 1)
                        sourcePlayer.removeChild(sourcePlayer.firstChild);
                }
                else {
                    YAHOO.SHC.Updates.display('Selection removal failed.');
                }
            },
            failure : function(o) {
                showContentError();
            }
        };
        YAHOO.util.Connect.resetFormState();
        var conn = YAHOO.util.Connect.asyncRequest("GET", unescape(url), callback, null);
    },
    moveSelection : function(sourceTeam, destinationTeam) {
        var url = '/team/maintenance/DoSelection.ashx?action=2&teamtype=' + YAHOO.SHC.Selection.teamType + '&oldfixtureid=' + sourceTeam.id + '&newfixtureid=' + destinationTeam.id + '&memberid=' + this.id;
        var sourcePlayer = this.getEl();
        var callback = {
            success : function(o) {
                var response = eval('new Array(' + o.responseText + ')');
                if (response[0] === 'SUCCESS') {
                    YAHOO.SHC.Updates.display('Selection moved successfully.');
                    sourcePlayer.childNodes[0].src = '/graphics/unconfirmed.gif';
                    if (sourcePlayer.childNodes.length > 2)
                        sourcePlayer.removeChild(sourcePlayer.childNodes[1]);
                }
                else {
                    YAHOO.SHC.Updates.display('Selection move failed.');
                }
            },
            failure : function(o) {
                showContentError();
            }
        };
        YAHOO.util.Connect.resetFormState();
        var conn = YAHOO.util.Connect.asyncRequest("GET", unescape(url), callback, null);
    }
});

function validateInt(valueToCheck, errorMessage, defaultValue, showError) {
    var result = -1;
    if (defaultValue != null)
        result = defaultValue;
        
    if (valueToCheck != null) {
        if (valueToCheck.length > 0) {
            if (!isNaN(valueToCheck)) {
                result = parseInt(valueToCheck);
            }
            else if(showError) {
                showError(errorMessage);
                return;
            }
        }
        else if(showError) {
            showError(errorMessage);
            return;
        }
    }
    else if(showError) {
        showError(errorMessage);
        return;
    }
    return result;
}
