﻿

/*
General AJAX technique samples--how to talk to the server + return data and do stuff with it.
Direct questions, answers, rants, flames to sbenfield@clearnova.com

1.0: 2005-07-14   Initial Release
1.1: 2005-07-15   Fixed bugs, changed text for clarity, added ability to register for updates
1.2: 2005-07-21   Cleaned up samples for clarity. Original version was all over the board using all sorts of different ways of calling XMLHTTPRequest
This version is cleaner. Only ping uses its own custom AJAX handling, everything else uses AJAXRequest
Added many many comments
			
If you find any bugs or have any ideas of enhancement--send them on.
     
*/

var _ms_XMLHttpRequest_ActiveX = ""; // Holds type of ActiveX to instantiate
var _ajax;                           // Reference to a global XMLHTTPRequest object for some of the samples
var _logger = true;                  // write output to the Activity Log
var _status_area;                    // will point to the area to write status messages to

var BASE_URL = ".";

if (!window.Node || !window.Node.ELEMENT_NODE) {
    var Node = { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5,
        ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10,
        DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12
    };
}

// From prototype.js @ www.conio.net | Returns an object reference to one or more strings
// ignore the fact that there are no arguments to this method -- javascript doesn't care how many you send (not strongly typed)
// The method checks the actual # of arguments -- returns a single object or an array
function $() {
    var elements = new Array();

    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];

        if (typeof element == 'string')
            element = document.getElementById(element);

        if (arguments.length == 1)
            return element;

        elements.push(element);
    }

    return elements;
}

// Method to get text from an XML DOM object
function getTextFromXML(oNode, deep) {
    var s = "";
    var nodes = oNode.childNodes;

    for (var i = 0; i < nodes.length; i++) {
        var node = nodes[i];

        if (node.nodeType == Node.TEXT_NODE) {
            s += node.data;
        } else if (deep == true && (node.nodeType == Node.ELEMENT_NODE || node.nodeType == Node.DOCUMENT_NODE
                                       || node.nodeType == Node.DOCUMENT_FRAGMENT_NODE)) {
            s += getTextFromXML(node, true);
        };
    }

    ;
    return s;
}

;

// If you plan on doing anything outside of North America, then you'd better encode the things you pass back and forth
// the escape() method in Javascript is deprecated -- should use encodeURIComponent if available
function encode(uri) {
    if (encodeURIComponent) {
        return encodeURIComponent(uri);
    }

    if (escape) {
        return escape(uri);
    }
}

function decode(uri) {
    uri = uri.replace(/\+/g, ' ');

    if (decodeURIComponent) {
        return decodeURIComponent(uri);
    }

    if (unescape) {
        return unescape(uri);
    }

    return uri;
}

// log information to the status area textfield
function logger(text, clear) {
    if (_logger) {
        if (!_status_area) {
            _status_area = $("status_area");
        }

        if (_status_area) {
            if (clear) {
                _status_area.value = "";
            }

            var old = _status_area.value;
            _status_area.value = text + ((old) ? "\r\n" : "") + old;
        }
    }
}


/*
* AJAXRequest: An encapsulated AJAX request. To run, call
* new AJAXRequest( method, url, async, process, data )
*
*/

function executeReturn(AJAX) {
    if (AJAX.readyState == 4) {
        if (AJAX.status == 200) {
            logger('AJAXRequest is complete: ' + AJAX.readyState + "/" + AJAX.status + "/" + AJAX.statusText);
            if (AJAX.responseText) {
                logger(AJAX.responseText);
                logger("-----------------------------------------------------------");
                eval(AJAX.responseText);
            }
        }
    }
}

function AJAXRequest(method, url, data, process, async, dosend) {
    // self = this; creates a pointer to the current function
    // the pointer will be used to create a "closure". A closure
    // allows a subordinate function to contain an object reference to the
    // calling function. We can't just use "this" because in our anonymous
    // function later, "this" will refer to the object that calls the function 
    // during runtime, not the AJAXRequest function that is declaring the function
    // clear as mud, right?
    // Java this ain't

    var self = this;

    // check the dom to see if this is IE or not
    if (window.XMLHttpRequest) {
        // Not IE
        self.AJAX = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        // Hello IE!
        // Instantiate the latest MS ActiveX Objects
        if (_ms_XMLHttpRequest_ActiveX) {
            self.AJAX = new ActiveXObject(_ms_XMLHttpRequest_ActiveX);
        } else {
            // loops through the various versions of XMLHTTP to ensure we're using the latest
            var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
                        "Microsoft.XMLHTTP"];

            for (var i = 0; i < versions.length; i++) {
                try {
                    // try to create the object
                    // if it doesn't work, we'll try again
                    // if it does work, we'll save a reference to the proper one to speed up future instantiations
                    self.AJAX = new ActiveXObject(versions[i]);

                    if (self.AJAX) {
                        _ms_XMLHttpRequest_ActiveX = versions[i];
                        break;
                    }
                }
                catch (objException) {
                    // trap; try next one
                };
            }

            ;
        }
    }

    // if no callback process is specified, then assing a default which executes the code returned by the server
    if (typeof process == 'undefined' || process == null) {
        process = executeReturn;
    }

    self.process = process;

    // create an anonymous function to log state changes
    self.AJAX.onreadystatechange = function() {
        //logger("AJAXRequest Handler: State =  " + self.AJAX.readyState);
        self.process(self.AJAX);
    }

    // if no method specified, then default to POST
    if (!method) {
        method = "POST";
    }

    method = method.toUpperCase();

    if (typeof async == 'undefined' || async == null) {
        async = true;
    }

    logger("----------------------------------------------------------------------");
    logger("AJAX Request: " + ((async) ? "Async" : "Sync") + " " + method + ": URL: " + url + ", Data: " + data);

    self.AJAX.open(method, url, async);

    if (method == "POST") {
        self.AJAX.setRequestHeader("Connection", "close");
        self.AJAX.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        self.AJAX.setRequestHeader("Method", "POST " + url + "HTTP/1.1");
    }

    // if dosend is true or undefined, send the request
    // only fails is dosend is false
    // you'd do this to set special request headers
    if (dosend || typeof dosend == 'undefined') {
        if (!data) data = "";
        self.AJAX.send(data);
    }
    return self.AJAX;
}





// fieldname, warningname, remainingname, maxchars
function CheckFieldLength(taName, spWarning, wn, rn, mc) {
    var ta = $(taName);
    var len = ta.value.length + 1;
    if ((len + 100) >= mc) {
        $(spWarning).className = 'DateWarning'; //Warning
    } else {
        $(spWarning).className = 'Removed';
    }
    if (len > mc) {
        ta.value = ta.value.substring(0, mc - 1);
        len = mc;
    }
    $(wn).innerHTML = len;
    $(rn).innerHTML = mc - len;
}
/*
---------------USE-------------------
<textarea name="taMessage" id="taMessage" cols="40" rows="5"
onkeyup="CheckFieldLength(taMessage, 'charcount', 'remaining', 20);"
onkeydown="CheckFieldLength(taMessage, 'charcount', 'remaining', 20);"
onmouseout="CheckFieldLength(taMessage, 'charcount', 'remaining', 20);">
</textarea><br>
<small><span id="charcount">0</span> characters entered.   |   <span id="remaining">20</span> characters remaining.</small><br>

*/



var iDontDoTwice = 0;
// handle some key press events
function handleKeyUp(e) {
    e = (!e) ? window.event : e;
    target = (!e.target) ? e.srcElement : e.target;
    if (e.type == "keyup" || e.type == "keypress" || e.type == "keydown") {
        if (e.keyCode == 13) {
            iDontDoTwice = iDontDoTwice + 1;
            return CheckTopTeamExists();
            //alert(e.type + ' ' + iDontDoTwice);
        }
    }
    if (e.type == "keyup") {// || e.type == "keypress"  || e.type == "keydown" ) {
        // skip shift, alt, control keys
        if (e.keyCode == 16 || e.keyCode == 17 || e.keyCode == 18) {
            // do nothing
        }
        else {
            if (target.name == "state1" && !$('state1').value) {
                clearCustomersByState();
            } else if (target.name == "state2" && !$('state2').value) {
                clearCustomersByStateXML();
            } else if (target.id == "txtOpponentName") {
                if (target.value == '') {
                    $('divOpponentList').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                } else {
                    getTeamList(target.value);
                }
            } else if (target.id == "txtFindSchoolName") {
                if (target.value) {
                    getSchoolListByName(target.value);
                } else {
                    $('divSchoolList').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                }
            } else if (target.id == "txtFindByOrganizationName") {
                if (target.value) {
                    getOrganizationListByName(target.value);
                } else {
                    $('divSchoolList').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                }
            } else if (target.id == "txtOrgRosterFirst" || target.id == "txtOrgRosterLast") {
                if ($('txtOrgRosterLast').value) {
                    getSchoolOrganizationRosterSearch();
                } else {
                    $('divOrgSchoolSearchRoster').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                }
            } else if (target.id == "txtSchRosterFirst" || target.id == "txtSchRosterLast") {
                if ($('txtSchRosterLast').value) {
                    getSchoolRosterSearch();
                } else {
                    $('divSchoolSearchRoster').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                }
            } else if (target.id == "txtFullSchRosterFirst" || target.id == "txtFullSchRosterLast") {
                if ($('txtFullSchRosterLast').value) {
                    getFullRosterSearch();
                } else {
                    $('divFullSchoolSearchRoster').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                }
            } else if (target.id == "txtFindAvailableOfficialFN" || target.id == "txtFindAvailableOfficialLN") {
                if ($('txtFindAvailableOfficialLN').value) {
                    getGameOfficialListSearch();
                } else {
                    $('divAvailableOfficialsForGame').innerHTML = ''; //Loading...<br /><img src="images/progress.gif" />';
                }

            }
        }
    }
}

var eLastUpdated;
var eLastUpdatedTR = 0;
function UpdateGameInfo_CallBack(response) {
    if (eLastUpdated == null) {
        window.status = 'The last requested change was ' + response.value;
        return;
    }
    if (eLastUpdatedTR > 0) {
        if ($('trEvent' + eLastUpdatedTR) != null) {
            $('trEvent' + eLastUpdatedTR).className = 'ChangeError';
        }
        eLastUpdatedTR = 0;
        alert('This Game has been deleted.  The game will disappear with the next refresh of the schedule.');

    }
    else {
        switch (response.value) {
            case 'Success':
                eLastUpdated.className = 'ChangeSuccess';
                break;
            case 'Error':
                eLastUpdated.className = 'ChangeError';
                break;
            case 'Ready':
                eLastUpdated.className = '';
                break;
            case 'Delete':
                alert('This Game has been deleted.  Click on Get schedule to have the game disappear');
                eLastUpdated.parent.parent.className = 'ChangeError';
                break;
        }
        var s = eLastUpdated.value;
        if (s.length > 10) { s = s.substring(0, 10) + '...'; }
        var sText = eLastUpdated.FDesc + ' attempt to be changed to ' + s + ' resulted in ' + response.value;
        //$('divLastUpdate').innerHTML=sText;
        window.status = sText;
    }
}

function DeleteID(EventOrgID, GameID) {
    eLastUpdatedTR = EventOrgID;
    if (confirm('This will completely delete this event?  It cannot be undone.')) {
        clsAjaxUpdates.DeleteGame(EventOrgID, GameID, UpdateGameInfo_CallBack)
    } //getEventObject(event);
}
function CreateIDFrom2Key(ev) {
    eLastUpdated = getEventObject(ev);
    if (eLastUpdated == null) {
        window.status = 'The last object is missing';
        return;
    }
    e = eLastUpdated;
    if (e == null) { return; }
    //alert(e.type);
    var s = e.value;
    switch (e.type) {
        case 'text':
            break;
        case 'select-one':
        case 'select':
            s = eLastUpdated.options[e.selectedIndex].value;
            break;
        case 'checkbox':
            s = 0;
            if (eLastUpdated.checked) { s = 1; }
            break;
    }
    //if(e.fname.substring(0,3)=='dec'||e.fname.substring(0,3)=='int'||e.fname.substring(0,1)=='n'||e.fname.substring(0,2)=='fk'||e.fname.substring(0,2)=='pk'){s = " "+s+" ";}else{s = " '"+s+"'";}
    clsAjaxUpdates.UpdateGameInfoNoValueCertain(eLastUpdated.tb, eLastUpdated.fname1, eLastUpdated.pkID1, eLastUpdated.fname2, eLastUpdated.pkID2, s, eLastUpdated.field, UpdateGameInfo_CallBack);

}
function getEventObject(ev) {
    //IE
    if (window.event) {
        return ev.srcElement;
    }
    //MOZ
    else {
        return ev.target;
    }
}
function SetClass(ID, Class) {
    $(ID).className = Class;
}
function SetID(ev) {
    eLastUpdated = getEventObject(ev); //window.event.srcElement;
    var s = eLastUpdated.value;
    switch (eLastUpdated.type) {
        case 'text':
            break;
        case 'select-one':
        case 'select':
            s = eLastUpdated.options[eLastUpdated.selectedIndex].value;
            break;
        case 'checkbox':
            s = 0;
            if (eLastUpdated.checked) { s = 1; }
            break;
    }
    //if(e.fname.substring(0,3)=='dec'||e.fname.substring(0,3)=='int'||e.fname.substring(0,1)=='n'||e.fname.substring(0,2)=='fk'||e.fname.substring(0,2)=='pk'){s = " "+s+" ";}else{s = " '"+s+"'";}

    clsAjaxUpdates.UpdateGameInfo(eLastUpdated.getAttribute("tb"), eLastUpdated.getAttribute("fname"), s, eLastUpdated.getAttribute("pkID"), UpdateGameInfo_CallBack);

}
function ShowUpdates(ev) {
    eLastUpdated = getEventObject(ev); //window.event.srcElement;
    if (eLastUpdated == null) { window.status = 'Event Object is not on page'; return; };
    var s = eLastUpdated.value;
    switch (eLastUpdated.type) {
        case 'text':
            break;
        case 'select-one':
        case 'select':
            if (eLastUpdated != null) {
                if (eLastUpdated.selectedIndex != null) {
                    s = eLastUpdated.options[eLastUpdated.selectedIndex].value;
                } else
                { window.status = 'Event Object is not on page'; return; };

            }
            break;
        case 'checkbox':
            s = 0;
            if (eLastUpdated.checked) { s = 1; }
            break;
    }
    clsAjaxUpdates.ShowGameInfo(eLastUpdated.getAttribute("tb"), eLastUpdated.getAttribute("fname"), s, eLastUpdated.getAttribute("pkID"), ShowUpdates_CB);

}
function ShowUpdates_CB(response) {
    if ($('divUpdates') != null) {
        $('divUpdates').innerHTML = response.value;
    }
}
function CheckTopTeamExists() {
    //This will redirect in the case of at least 1 team existing if the user hits enter while in an organization field
    var txtGoToThisTeam = $("txtAutoHref");
    if (txtGoToThisTeam && iDontDoTwice >= 1) {
        //if(confirm('Do you want to view the schedule for '+txtGoToThisTeam.getAttribute("tn")+'?'))
        document.location.href = $("txtAutoHref").value;
        alert('You are now going to the schedule for ' + $("txtAutoHref").getAttribute("tn") + '');
        return false;
    }
    return false;
}
function getGameOfficialListSearch() {
    var e = $('txtFindAvailableOfficialLN');
    var LName = e.value;
    e = $('txtFindAvailableOfficialFN');
    var FName = e.value;
    e = $('txtFindAvailableOfficialScheduleEventID');
    var SEID = e.value;
    //if(LName.length>0){
    var divSearchOfficials = $("divAvailableOfficialsForGame");
    if (divSearchOfficials != null) {
        $('divAvailableOfficialsForGame').innerHTML = '';
    }
    e = $('ddlAssignOfficialSportID');
    var SportID = e.options[e.selectedIndex].value;
    e = $('ddlAssignOfficialCompetitionLevelID');
    var CLID = e.options[e.selectedIndex].value;
    e = $('ddlAssignOfficialDistrictID');
    var DID = e.options[e.selectedIndex].value;
    var SchedOffs = 1;
    var AdminOffs = 3; //Assigner
    clsAjaxUpdates.GetGameOfficialsListByName(FName, LName, SEID, AdminOffs, SchedOffs, SportID, CLID, DID, getGameOfficialListSearch_CB);
    //}
}
function getGameOfficialListSearch_CB(response) {
    var divSearchOfficials = $("divAvailableOfficialsForGame");
    if (divSearchOfficials) {
        $('divAvailableOfficialsForGame').innerHTML = response.value;
    }
}
function getFullRosterSearch() {
    var divSearchRoster = $("divFullSchoolSearchRoster");
    if (divSearchRoster) {
        $('divFullSchoolSearchRoster').innerHTML = '';
    }
    var e = $('ddlFullSchRstrSearch');
    var SID = e.options[e.selectedIndex].value;
    e = $('txtFullSchRstrAdministrate');
    var Adm = e.value;
    e = $('txtFullSchRosterLast');
    var LName = e.value;
    e = $('txtFullSchRosterFirst');
    var FName = e.value;
    //var CurrentOrganizationID=e.options[e.selectedIndex].value;
    clsAjaxUpdates.GetSchoolRosterListByName(2, SID, -1, FName, LName, Adm, getFullRosterSearch_CB);
}
//Roster Search options
function getFullRosterSearch_CB(response) {
    var divSearchRoster = $("divFullSchoolSearchRoster");
    if (divSearchRoster) {
        $('divFullSchoolSearchRoster').innerHTML = response.value;
    }
}
function getSchoolRosterSearch() {
    var e = $('txtSchRstrSchoolID');
    var SID = e.value;
    e = $('txtSchRstrAdministrate');
    var Adm = e.value;
    e = $('txtSchRosterLast');
    var LName = e.value;
    e = $('txtSchRosterFirst');
    var FName = e.value;
    //var CurrentOrganizationID=e.options[e.selectedIndex].value;
    clsAjaxUpdates.GetSchoolRosterListByName(2, SID, -1, FName, LName, Adm, getSchoolRosterSearch_CB);
}
//Roster Search options
function getSchoolRosterSearch_CB(response) {
    var divSearchRoster = $("divSchoolSearchRoster");
    if (divSearchRoster) {
        $('divSchoolSearchRoster').innerHTML = response.value;
    }
}
function getSchoolOrganizationRosterSearch() {
    var e = $('txtOrgRstrSchoolID');
    var SID = e.value;
    e = $('txtOrgRstrOrgID');
    var OID = e.value;
    e = $('txtOrgRstrAdministrate');
    var Adm = e.value;
    e = $('txtOrgRosterLast');
    var LName = e.value;
    e = $('txtOrgRosterFirst');
    var FName = e.value;
    //var CurrentOrganizationID=e.options[e.selectedIndex].value;
    clsAjaxUpdates.GetSchoolRosterListByName(1, SID, OID, FName, LName, Adm, getSchoolOrganizationRosterSearch_CB);
}
//Roster Search options
function getSchoolOrganizationRosterSearch_CB(response) {
    var divSearchRoster = $("divOrgSchoolSearchRoster");
    if (divSearchRoster) {
        $('divOrgSchoolSearchRoster').innerHTML = response.value;
    }
}
function AddNewRosterToSchool(SchoolID, Administrate) {
    var e = $('txtSchRstrSchoolID');
    var SID = e.value;
    e = $('txtSchRstrAdministrate');
    var Adm = e.value;
    e = $('txtSchRosterLast');
    var LName = e.value;
    e = $('txtSchRosterFirst');
    var FName = e.value;
    clsAjaxUpdates.AddNewRosterToSchool(SID, FName, LName, Adm, ShowSchoolRosterDetails_CB);
}
function AddNewRosterToSchoolAndOrganization(OrgID, SchoolID, Administrate) {
    var e = $('txtOrgRstrSchoolID');
    var SID = e.value;
    e = $('txtOrgRstrOrgID');
    var OID = e.value;
    e = $('txtOrgRstrAdministrate');
    var Adm = e.value;
    e = $('txtOrgRosterLast');
    var LName = e.value;
    e = $('txtOrgRosterFirst');
    var FName = e.value;
    clsAjaxUpdates.AddNewRosterToSchoolAndOrganization(OrgID, SID, FName, LName, Adm, AddRosterToOrganization_CB);
}

function ShowSchoolRosterDetails(SchoolRosterID, SchoolID, Administrate) {
    $('divEditSchoolRoster').innerHTML = '';
    clsAjaxUpdates.GetSchoolRosterDetails(SchoolRosterID, SchoolID, Administrate, ShowSchoolRosterDetails_CB);
}
function ShowSchoolRosterDetails_CB(response) {
    $('divEditSchoolRoster').innerHTML = response.value;
}
function AddRosterToOrganization(SchoolRosterID, OrgID, SchoolID, Administrate) {
    clsAjaxUpdates.AddSchoolRosterToOrganization(SchoolRosterID, OrgID, SchoolID, Administrate, AddRosterToOrganization_CB);
}
function RemoveOrganizationRoster(ORosterID, Show) {
    clsAjaxUpdates.RemoveOrganizationRoster(ORosterID, Show, AddRosterToOrganization_CB);
}
function AddRosterToOrganization_CB(response) {
    if ($('divOrganizationRoster') != null) { $('divOrganizationRoster').innerHTML = response.value; }
}
//Within the Organization and Autoleague interface...these will be functional
function AddRosterToALOrganization(SchoolRosterID, ALSchoolRosterID, ALID, OrgID) {
    if (OrgID > 0) { clsAjaxUpdates.AddSchoolRosterToALOrganization(SchoolRosterID, ALSchoolRosterID, ALID, OrgID, AddRosterToALOrganization_CB); }
}
function RemoveRosterFromALOrganization(SchoolRosterID, ALID, OID) {
    clsAjaxUpdates.RemoveALOrganizationRoster(SchoolRosterID, ALID, OID, AddRosterToALOrganization_CB);
}

function AddRosterToALOrganization_CB(response) {
    $('divALORGSR').innerHTML = response.value;
}

function getTeamRosterList() {
    var e = $('ddlALOrganizationList')
    var ORGID = e.options[e.selectedIndex].value;
    var ALID = e.options[e.selectedIndex].getAttribute("ALID");
    var SFL = $('chkShowFullList').value;
    var AllowOR = $('chkAllowRostering').value;
    $('divALORGSR').innerHTML = 'Loading...';
    clsAjaxUpdates.GetAutoLeagueOrganizationRoster(ORGID, ALID, SFL, AllowOR, getTeamRosterList_CB);
}
function getTeamRosterList_CB(response) {
    var divALORGSR = $("divALORGSR");
    if (divALORGSR) {
        $('divALORGSR').innerHTML = response.value;
    }
}

//Team Search Instructions
function ReturnedTeams_CallBack(response) {
    var divOpponentList = $("divOpponentList");
    if (divOpponentList) {
        $('divOpponentList').innerHTML = response.value;
    }
}
function getSchoolListByName(GivenSchoolName) {
    // pass the query the user has typed
    // Since no callback handler is specified, AJAXRequest will execute the code returned
    //e=$('txtOpponentID').value='-1';
    //e=$('spnSelectedTeam').innerHTML='';
    var e = $('txtDAStateID');
    var StID = e.value;
    //var CurrentOrganizationID=e.options[e.selectedIndex].value;
    clsAjaxUpdates.GetSchoolListByName(StID, GivenSchoolName, ReturnedSchools_CallBack);
}
function getOrganizationListByNameAndList() {
    var e = $('txtFindByOrganizationName');
    var GivenOrgName = e.value;
    return getOrganizationListByName(GivenOrgName);
}
function getOrganizationListByName(GivenOrgName) {
    // pass the query the user has typed
    // Since no callback handler is specified, AJAXRequest will execute the code returned
    //e=$('txtOpponentID').value='-1';
    //e=$('spnSelectedTeam').innerHTML='';
    var e = $('txtDAStateID');
    var StID = e.value;
    var e = $('ddlDASelectYearList');
    var YLID = e.value;
    var e = $('ddlDASelectSportList');
    var SPID = e.value;
    //var CurrentOrganizationID=e.options[e.selectedIndex].value;
    clsAjaxUpdates.GetOrganizationListByName(StID, GivenOrgName, YLID, SPID, ReturnedOrganizations_CallBack);
}
function getTeamList(SchoolName) {
    // pass the query the user has typed
    // Since no callback handler is specified, AJAXRequest will execute the code returned
    $('txtOpponentID').value = '-1';
    $('spnSelectedTeam').innerHTML = 'None';
    $('spnSelectedTeamOK').className = 'Removed';
    var e = $('txtCurrentOrgID');
    //var CurrentOrganizationID=e.options[e.selectedIndex].value;
    var CurrentOrganizationID = e.value;
    var divOpponentList = $("divOpponentList");
    if (divOpponentList) {
        $('divOpponentList').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    }

    clsAjaxUpdates.GetTeamList(SchoolName, CurrentOrganizationID, ReturnedTeams_CallBack);
}
function getTeamListWithOrg(SchoolName, CurrentOrganizationID) {
    // pass the query the user has typed
    // Since no callback handler is specified, AJAXRequest will execute the code returned
    $('txtOpponentID').value = '-1';
    $('spnSelectedTeam').innerHTML = 'None';
    $('spnSelectedTeamOK').className = 'Removed';
    var divOpponentList = $("divOpponentList");
    if (divOpponentList) {
        $('divOpponentList').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    }

    clsAjaxUpdates.GetTeamList(SchoolName, CurrentOrganizationID, ReturnedTeams_CallBack);
}
function getSchoolListByOrg() {
    var e = $('ddlSearchDistrict');
    var iDID = e.options[e.selectedIndex].value;
    var divSchoolList = $('divSchoolList');
    if (divSchoolList) {
        $('divSchoolList').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    }
    var iReason = 0;
    var SportID = 0;
    var iLevel = -1;
    var iSYID = -1;
    var eCalDate = new Date();
    e = $('ddlSearchDistrictReasonList');
    if (e) {
        iReason = e.options[e.selectedIndex].value;
        e = $('ddlDASelectSportStandingsList');
        SportID = e.options[e.selectedIndex].value;
        e = $('ddlDACompetitionStandingsList');
        iLevel = e.options[e.selectedIndex].value;
        e = $('ddlDASchoolYearStandingsList');
        iSYID = e.options[e.selectedIndex].value;
    }
    e = $('divSearchDistictSportCalendar');
    if (e) {
        eCalDate = getDateStringFromDDLs('txtSDCal');
    }
    e = $('divSearchDistictSport');
    var c = $('divSearchDistictSportCalendar');
    if (iReason == 0) {
        if (e) { e.className = 'Removed'; }
        if (c) { c.className = 'Removed'; }
        clsAjaxUpdates.GetSchoolList(iDID, ReturnSchoolList_CB);
    }
    else if (iReason == 1) {//Standings
        if (e) { e.className = ''; }
        if (c) { c.className = 'Removed'; }
        clsAjaxUpdates.GetOrganizationStandingsList(iDID, iReason, iSYID, SportID, iLevel, ReturnSchoolList_CB);
    }
    else if (iReason == 2) {//Games
        if (e) { e.className = ''; }
        if (c) { c.className = ''; }
        clsAjaxUpdates.GetDistrictEventList(iDID, iReason, iSYID, SportID, iLevel, eCalDate, ReturnSchoolList_CB);
    }
}
function ReturnedSchools_CallBack(response) {
    var divSchoolList = $("divSchoolList");
    if (divSchoolList) {
        $('divSchoolList').innerHTML = response.value;
    }
}
function ReturnedOrganizations_CallBack(response) {
    var divSchoolList = $("divSchoolList");
    if (divSchoolList) {
        $('divSchoolList').innerHTML = response.value;
    }
}

function ReturnSchoolList_CB(response) {
    var divSchoolList = $("divSchoolList");
    if (divSchoolList) {
        $('divSchoolList').innerHTML = response.value;
    }
}
function SelectTeam(TID) {
    var e = $('txtOpponentID');
    e.value = TID;
    e = $('spnSelectedTeam');
    var eST = $('aST' + TID);
    e.innerHTML = eST.innerHTML;
    $('spnSelectedTeamOK').className = '';
}
function DeleteSecurityAccess(e) {
    var agree = confirm("This will remove this security access?  Once it has been removed, you must request the access be regranted by an administrator.");
    if (agree) {
        $('divUserAccess').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
        clsAjaxUpdates.GetDeleteSecurityStatus(e);
        clsAjaxUpdates.GetUserSecurityStatus(1, 0, UserAccess_CB);
    }
}
function GetUserAccess() {
    $('divUserAccess').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    clsAjaxUpdates.GetUserSecurityStatus(1, 0, UserAccess_CB);
}
function UserAccess_CB(response) {
    $('divUserAccess').innerHTML = response.value;
}
function GetSchoolAccess(SchoolID) {
    $('divSchoolAccess').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    clsAjaxUpdates.GetSchoolAccess(SchoolID, GetSchoolAccess_CB);
}
function GetSchoolAccess_CB(response) {
    $('divSchoolAccess').innerHTML = response.value;
}
function GetSchoolAccessSchoolPage(SchoolID) {
    $('spnEditSchool').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    clsAjaxUpdates.GetSchoolAccess(SchoolID, GetSchoolAccessSchoolPage_CB);
}
function GetSchoolAccessSchoolPage_CB(response) {
    $('spnEditSchool').innerHTML = response.value;
}
function GetUserRequestsForAccess(RequestsOnly) {
    $('divOtherSecurityRequests').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    clsAjaxUpdates.GetUserSecurityStatus(0, RequestsOnly, UserRequestAccess_CB);
}
function UserRequestAccess_CB(response) {
    $('divOtherSecurityRequests').innerHTML = response.value;
}

function ShowTournament() {
    var e = $('ddlSelectAutoLeague');
    var TID = e.options[e.selectedIndex].value;
    Controls_ucTournamentList.ShowAutoLeagueList(TID, ShowTournament_CB);
}
function ShowTournament_CB(response) {
    $('divShownTournament').innerHTML = response.value;
}
function ShowStatisticSub() {
    if ($('divStatisticReport')) {
        $('divStatisticReport').innerHTML = 'Loading...<br /><img src="images/progress.gif" />';
    }
    var HABD = 0;
    if ($('chkStatHABreakdown')) {
        var e = $('chkStatHABreakdown');
        if (e.checked) { HABD = 1; }
    }
    e = $('txtStatALID');
    var ALID = e.value;
    e = $('ddlStatisticTypeSelect');
    var StatTID = e.options[e.selectedIndex].value;
    clsAjaxUpdates.GetStatisticReport(StatTID, ALID, HABD, ShowStatisticSub_CB);
}
function ShowStatisticSub_CB(response) {
    if ($('divStatisticReport')) {
        $('divStatisticReport').innerHTML = response.value;
    }
}
//Additional Rostering functions
function ShowTeamRosterQuick(OID, SCHID, ADM) {
    clsAjaxUpdates.getOrganizationRosterTotal(OID, SCHID, ADM, ShowTeamRosterQuick_CB)
}
function ShowTeamRosterQuick_CB(response) {
    if ($('divEditPayments') != null) { $('divEditPayments').innerHTML = response.value; }
}
//Payment functions
function ShowPaymentInformation(SRID, OID, ALID) {
    clsAjaxUpdates.ShowPaymentInformation(SRID, OID, ALID, ShowPaymentInformation_CB);
}
function ShowPaymentInformation_CB(response) {
    if ($('divEditPayments') != null) { $('divEditPayments').innerHTML = response.value; }
}
function MakeALRosterPayment(SRID, OID, ALID) {
    var ALROwed = $('txtALRosterAmountOwed').value;
    var ALRPaid = $('txtALRosterAmountPaid').value;
    var e = $('ddlALRosterPaymentType');
    var ACHPaymentType = e.options[e.selectedIndex].value;
    clsAjaxUpdates.MakeALSROrgPayment(SRID, OID, ALID, ALROwed, ALRPaid, ACHPaymentType, 1, ShowPaymentInformation_CB);
}




function AdvanceGame(se, al, gn) {
    clsAjaxUpdates.AdvanceGameAndBracket(se, al, gn, AdvanceGameAndBracket_cb);
}
function AdvanceGameAndBracket_cb(response) {
    switch (response.value) {
        case 'Success':
            //e.className='ChangeSuccess';
            alert('The bracket has been updated');
            break;
        case 'Error':
            //e.className='ChangeError';
            alert('There may have been an error updating this game');
            break;
    }
}
function copyToClipboard(pre) {
    if (document.getElementById || (document.all && !(document.getElementById))) {
        textarea1.value = pre.innerText;
        var Copied = textarea1.createTextRange();
        Copied.execCommand("Copy");
        alert("Copied to clipboard.");


    }
}

//DateChecker
var monthLength = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
function getCompareDateFromText(GivenValidDate) {
    //this must be a date in the format mm/dd/yyyy
    var NewDate = GivenValidDate;
    var month = (NewDate.substring(0, 2));
    NewDate = NewDate.substring(3);
    var day = (NewDate.substring(0, 2));
    NewDate = NewDate.substring(3);
    var year = (NewDate.substring(0, 4));
    //alert('@@'+GivenValidDate+'##'+month+'/'+day+'/'+year);
    var dateToCheck = new Date();
    dateToCheck.setYear(year);
    dateToCheck.setMonth(month - 1);
    dateToCheck.setDate(day);
    var checkDate = dateToCheck.getTime();

    return checkDate
}
function getCompareDateFromDDLs(name) {
    var ddlDay = $(name + "_day");
    var ddlMonth = $(name + "_month");
    var ddlYear = $(name + "_year");


    var day = parseInt(ddlDay.options[ddlDay.selectedIndex].value);
    var month = parseInt(ddlMonth.options[ddlMonth.selectedIndex].value);
    var year = parseInt(ddlYear.options[ddlYear.selectedIndex].value);
    //alert('$$'+month+'/'+day+'/'+year);
    var dateToCheck = new Date();
    dateToCheck.setYear(year);
    dateToCheck.setMonth(month - 1);
    dateToCheck.setDate(day);
    var checkDate = dateToCheck.getTime();

    return checkDate
}
function getDateStringFromDDLs(name) {
    var ddlDay = $(name + "_day");
    var ddlMonth = $(name + "_month");
    var ddlYear = $(name + "_year");

    var day = 1;
    var month = 1;
    var year = 2000;


    if (ddlDay != null) {
        day = parseInt(ddlDay.options[ddlDay.selectedIndex].value);
        month = parseInt(ddlMonth.options[ddlMonth.selectedIndex].value);
        year = parseInt(ddlYear.options[ddlYear.selectedIndex].value);

        return month + '/' + day + '/' + year;
    }
    var dateToCheck = new Date();
    dateToCheck.setYear(year);
    dateToCheck.setMonth(month - 1);
    dateToCheck.setDate(day);
    var checkDate = dateToCheck.getTime();

    return dateToCheck.toUTCString();
    return checkDate
}
function checkPastDate(name) {
    var ddlDay = $(name + "_day");
    var ddlMonth = $(name + "_month");
    var ddlYear = $(name + "_year");
    var day = parseInt(ddlDay.options[ddlDay.selectedIndex].value);
    var month = parseInt(ddlMonth.options[ddlMonth.selectedIndex].value);
    var year = parseInt(ddlYear.options[ddlYear.selectedIndex].value);

    if (!day || !month || !year)
        return false;

    if (year / 4 == parseInt(year / 4))
        monthLength[1] = 29;

    if (day > monthLength[month - 1])
        return false;

    monthLength[1] = 28;

    var now = new Date();
    now = now.getTime(); //NN3

    var dateToCheck = new Date();
    dateToCheck.setYear(year);
    dateToCheck.setMonth(month - 1);
    dateToCheck.setDate(day);
    var checkDate = dateToCheck.getTime();

    var futureDate = (now < checkDate);
    var pastDate = (now > checkDate);

    return pastDate; //;
}
// OFFICALS AREA!!!!!!!!!!!!!!!!!!!!!!!

function AssignThisOfficialToEvent(OfficialID, Admin) {
    var EventID = $('txtFindAvailableOfficialScheduleEventID').value
    var e = $('ddlAssignOfficialSportID');
    var SportID = e.options[e.selectedIndex].value;
    e = $('ddlAssignOfficialCompetitionLevelID');
    var CLID = e.options[e.selectedIndex].value;
    e = $('ddlAssignOfficialDistrictID');
    var DID = e.options[e.selectedIndex].value;
    $('divAssignerGameChosen').innerHTML = 'Loading...';
    clsAjaxUpdates.AssignThisOfficialToEvent(OfficialID, EventID, SportID, CLID, DID, Admin, AssignOfficialsToGame_CB);
}
function AssignOfficialsToGame(EventID, SportID, CLID, DID, Admin) {
    $('divAssignerGameChosen').innerHTML = 'Loading...';
    clsAjaxUpdates.AssignOfficialsToGame(EventID, SportID, CLID, DID, Admin, AssignOfficialsToGame_CB);
}
function AssignOfficialsToGame_CB(response) {
    $('divAssignerGameChosen').innerHTML = response.value;
}
function AssignOfficialToDistrict(DID, StateID, OID, CheckBoxName) {
    var e = $(CheckBoxName);
    var b = 0;
    if (e.checked) { b = 1 };
    clsAjaxUpdates.AssignOfficialToDistrict(DID, StateID, OID, b, AssignOfficialToDistrict_CB)
}
function AssignOfficialToDistrict_CB(response) {
    //$('divAssignerGameChosen').innerHTML=response.value;
}
function AcceptOfficialGame(OfficialID, NewValueID, ScheduledEventOfficialID, AsAssigner) {
    clsAjaxUpdates.OfficialAcceptGame(OfficialID, NewValueID, ScheduledEventOfficialID, AsAssigner, ShowCurrentOfficialSchedule_CB);
}
function ShowCurrentOfficialSchedule_CB(response) {

    var e = $('divOfficalSchedule')
    if (e) {
        e.innerHTML = response.value;
    }
    else {
        e = $('divOfficialsAssignedToGame')
        if (e) { e.innerHTML = response.value; }
    }

}
function RateOfficial(OfficialID, SEID, SchoolID) {
    $('divRateOfficials').innerHTML = 'Loading...'
    clsAjaxUpdates.RateOfficials(OfficialID, SchoolID, SEID, RateOfficial_CB);
}
function RateOfficial_CB(response) {
    $('divRateOfficials').innerHTML = response.value;
    //alert('Rating by dropdowns');
}
function BuildAdvertisementLink(AdvertisementID) {
    var H = $('txtAdHeightRemote').value;
    var W = $('txtAdWidthRemote').value;
    clsAjaxUpdates.ShowAdJavascriptLink(AdvertisementID, H, W, BuildAdvertisementLink_CB);
}
function BuildAdvertisementLink_CB(response) {
    $('divAdvertisementJava').innerHTML = response.value;
}
function GetUserInformationAjax() {
    clsAjaxUpdates.GetUserInformationAjax(GetUserInformationAjax_CB);
}
function GetUserInformationAjax_CB(response) {
    $(divGetUserInformation).innerHTML = response.value;
}

/*****************************Popup Message***********************************************/
function getAutoLeagueMessageWindow(ALID, GameID, TeamID) {
    clsAjaxUpdates.getAutoLeagueMessageWindow(ALID, GameID, TeamID, SendAutoLeagueMessage_CB);
}
function SendAutoLeagueMessage_CB(response) {
    var s = response;
    if (s != null) { s = s.value; }
    if (s == null) { s == '' };
    var i = s.indexOf(']');
    if (i > 0) {
        var trName = s.substring(0, i);
        var itr = trName.indexOf('divNewMessage'); //Edit area for this Sample Service Organism
        if (itr >= 0) {
            var sInside = s.substring(i + 1);
            CreateDropdownWindow('Send a Message Across the League', 600, true, sInside, 'divNewMessage');
            if ($('txtOrgMessageTitle') != null) { $('txtOrgMessageTitle').focus; }
        }
    }
}
function SendAutoLeagueMessage() {
    var Message = $('txtOrgMessage').innerText;
    var Title = $('txtOrgMessageTitle').value;
    var Orgs = $('txtOrgsInMessage').value;
    var ALList = '';
    if (Message == '') {
        alert('Please include a message to send.');
    } else {
        if (Orgs == '0,') {
            alert('You must include at least one team to send this message to');
        } else {
            $('btnSendLeagueMessage').disabled = true;
            clsAjaxUpdates.SendAutoLeagueMessage(ALList, Orgs, Title, Message, SendAutoLeagueMessageFinal_CB);
        }
    }
}
function SendAutoLeagueMessageFinal_CB(response) {
    $('btnSendLeagueMessage').disabled = false;
    alert(response.value);
}


/**
* DHTML textbox character counter script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
*/

maxL = 120;
var bName = navigator.appName;
function taLimit(taObj) {
    if (taObj.value.length == maxL) return false;
    return true;
}

function taCount(taObj, Cnt) {
    objCnt = createObject(Cnt);
    objVal = taObj.value;
    if (objVal.length > maxL) objVal = objVal.substring(0, maxL);
    if (objCnt) {
        if (bName == "Netscape") {
            objCnt.textContent = maxL - objVal.length;
        }
        else { objCnt.innerText = maxL - objVal.length; }
    }
    return true;
}
function createObject(objId) {
    if (document.getElementById) return document.getElementById(objId);
    else if (document.layers) return eval("document." + objId);
    else if (document.all) return eval("document.all." + objId);
    else return eval("document." + objId);
}
/*****************************Popup Message***********************************************/
