// JavaScript Document
var baseURL="http://www.gpwmi.us/PHP/outputMeetings.php";
//var baseURL="http://localhost/PHP/outputMeetings.php";
var catIndex;
var typeIndex;
var selectedMeetings = new Array();
var phaseDIV;
var currDateSelection;
var phaseChanged;
var dateSelectType;
 
function processDateSelect(dateString)
{
    meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] = 'z';//dateSelectType;
    meetingsArray[catIndex]['typeList'][typeIndex]['date'] = dateString;
    paramString = '';
    buildString('m');
    outputMeetingContent();
}
//************************************
function phaseStateChanged() 
{
    switch (phaseChanged)
    {
        case 'a':
            if (meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['httpRequest'].readyState==4 || meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['httpRequest'].readyState=="complete")
            {
                document.getElementById(phaseDIV).innerHTML=meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['httpRequest'].responseText;
            }
            break;
        case 'm':
            if (meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['httpRequest'].readyState==4 || meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['httpRequest'].readyState=="complete")
            {
                document.getElementById(phaseDIV).innerHTML=meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['httpRequest'].responseText;
            }
            break;
        case 's':
            if (meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['httpRequest'].readyState==4 || meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['httpRequest'].readyState=="complete")
            {
                document.getElementById(phaseDIV).innerHTML=meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['httpRequest'].responseText;
            }
            break;
        default:
            break;
    }
}
//************************************
function toggleType(typeID, closeButton)
{
    findTypeElement(typeID);
    if(meetingsArray[catIndex]['typeList'][typeIndex]['selected'] == null)
    {
        var phaseArray = new Array();
        var arrayIndex = selectedMeetings.length;
        selectedMeetings[arrayIndex] = new Array();
        selectedMeetings[arrayIndex]['catIndex'] = catIndex;
        selectedMeetings[arrayIndex]['typeIndex'] = typeIndex;
        selectedMeetings[arrayIndex]['typeID'] = meetingsArray[catIndex]['typeList'][typeIndex]['typeID'];
        
        phaseArray['agendas'] = new Array();
        phaseArray['minutes'] = new Array();
        phaseArray['summaries'] = new Array();
        
        phaseArray['agendas']['selected'] = true;
        phaseArray['agendas']['divID'] = "Agendas" + meetingsArray[catIndex]['typeList'][typeIndex]['typeID'];
        phaseArray['agendas']['httpRequest'] = null;
        
        phaseArray['minutes']['selected'] = false;
        phaseArray['minutes']['divID'] = "Minutes" + meetingsArray[catIndex]['typeList'][typeIndex]['typeID'];
        phaseArray['minutes']['httpRequest'] = null;
        
        phaseArray['summaries']['selected'] = false;
        phaseArray['summaries']['divID'] = "Summaries" + meetingsArray[catIndex]['typeList'][typeIndex]['typeID'];
        phaseArray['summaries']['httpRequest'] = null;        
        
        meetingsArray[catIndex]['typeList'][typeIndex]['selected'] = phaseArray;
        meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] = 'c';
        meetingsArray[catIndex]['typeList'][typeIndex]['date'] = null;
    }
    else
    {
        var i = 0;
        while(selectedMeetings[i])
        {
            if(selectedMeetings[i]['typeID'] == typeID)
            {
                selectedMeetings.splice(i,1);
                break;
            }
            i++;
        }
        meetingsArray[catIndex]['typeList'][typeIndex]['selected'] = null;
    }   
    paramString = '';
    buildString('m');
    outputMeetingContent();
    if(closeButton == 1)
        displayTypes();
}
//************************************
function toggleDateSelect(dateString)
{
    dateSelectType = dateString.slice(0,1);
    var typeID = dateString.slice(1);
    findTypeElement(typeID);
    
    if(dateSelectType == 's')
    {
        show_calendar('calform.datebox', null, null, "YYYYMMDD");
        var currCatIndex = catIndex;
        var currTypeIndex = typeIndex;
        paramString = '';
        buildString('m');
        outputMeetingContent();
        catIndex = currCatIndex;
        typeIndex = currTypeIndex;
    }
    else
    {
        meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] = dateSelectType;
        paramString = '';
        buildString('m');
        outputMeetingContent(); 
    }
} 
//************************************
function togglePhase(typeID, phaseSelect)
{
    findTypeElement(typeID);
    switch (phaseSelect)
    {
        case 'a':
            if(meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['selected'])
                meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['selected'] = false;
            else
                meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['selected'] = true;
            break;
        case 'm':
            if(meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['selected'])
                meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['selected'] = false;
            else
                meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['selected'] = true;
            break;
        case 's':
            if(meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['selected'])
                meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['selected'] = false;
            else
                meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['selected'] = true;
            break;
        default:
            break;
    }
    paramString = '';
    buildString('m');
    outputMeetingContent();
}
//************************************
function buildString(stringType)
{
    switch (stringType)
    {
         case 'p':
            paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['typeID'] + 'i';
            paramString = paramString + phaseChanged; 
            paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'];
            if(meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] == 's' || meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] == 'z')
                paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['date'];
            break;
        case 'c':
            catIndex = 0;
            while(meetingsArray[catIndex])
            {
                if(meetingsArray[catIndex]['selected'])
                    paramString = meetingsArray[catIndex]['catID'];
                catIndex++;
            }
            break;
        case 't':
            catIndex = 0;
            while(meetingsArray[catIndex])
            {
                if(meetingsArray[catIndex]['selected'])
                    break;
                catIndex++;
            }
            typeIndex = 0;
            while(meetingsArray[catIndex]['typeList'][typeIndex])
            {
                paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['typeID'] + 'i';
                if(meetingsArray[catIndex]['typeList'][typeIndex]['selected'] != null)
                    paramString = paramString + '1' + '/';
                else
                    paramString = paramString + '0' + '/';
                typeIndex++;
            } 
            break;
        case 'm':
            var i = 0;
            selectedMeetings.reverse();
            while(selectedMeetings[i])
            {
                catIndex = selectedMeetings[i]['catIndex'];
                typeIndex = selectedMeetings[i]['typeIndex'];
                
                paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['typeID'] + 'i'; 
                if(meetingsArray[catIndex]['typeList'][typeIndex]['selected']['agendas']['selected'] == true)
                    paramString = paramString + '1';
                else
                    paramString = paramString + '0';
                if(meetingsArray[catIndex]['typeList'][typeIndex]['selected']['minutes']['selected'] == true)
                    paramString = paramString + '1';
                else
                    paramString = paramString + '0';
                if(meetingsArray[catIndex]['typeList'][typeIndex]['selected']['summaries']['selected'] == true)
                    paramString = paramString + '1';
                else
                    paramString = paramString + '0';
                if(meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] == 's' || meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] == 'z')
                {
                    paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'];
                    paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['date'];
                }
                else
                    paramString = paramString + meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'];
                i++;
            }
            selectedMeetings.reverse();
            break;
        default:
            break;
    }
}
//************************************
function outputMeetingContent()
{
    httpMeeting = GetXmlHttpObject();
    
    if(httpMeeting == null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url = baseURL;
    url=url+"?meeting="+paramString;
    url=url+"&sid="+Math.random();
    httpMeeting.onreadystatechange=meetingStateChanged;
    httpMeeting.open("GET", url, true);
    httpMeeting.send(null);
}
//************************************
function meetingStateChanged() 
{
    if (httpMeeting.readyState==4 || httpMeeting.readyState=="complete")
    {
        document.getElementById("meetingsOutput").innerHTML=httpMeeting.responseText;
    }
}
//************************************
function resetAll()
{
    catIndex = 0;
    
    while(meetingsArray[catIndex])
    {
        meetingsArray[catIndex]['selected'] = false;
        typeIndex = 0;
        while(meetingsArray[catIndex]['typeList'][typeIndex])
        {
            meetingsArray[catIndex]['typeList'][typeIndex]['selected'] = null;
            meetingsArray[catIndex]['typeList'][typeIndex]['dateSelection'] = null;
            meetingsArray[catIndex]['typeList'][typeIndex]['httpRequest'] = null;
            typeIndex++;
        }
        catIndex++;
    }
    selectedMeetings = new Array();
    meetingsArray[0]['selected'] = true;
    displayCategories();
    displayTypes();
    paramString = '';
    buildString('m');
    outputMeetingContent();
}
//************************************
function selectCat(catID)
{

    catIndex = 0;
    while(!meetingsArray[catIndex]['selected'])
        catIndex++;
    if(meetingsArray[catIndex]['catID'] != catID)
    {
        meetingsArray[catIndex]['selected'] = false;
        catIndex = 0;
        while(meetingsArray[catIndex]['catID'] != catID)
            catIndex++;
        meetingsArray[catIndex]['selected'] = true;
        displayCategories();
        displayTypes();
    } 
}
//************************************
function displayTypes()
{
    paramString = '';
    buildString('t');
    
    xmlHttpType=GetXmlHttpObject2();
    if (xmlHttpType==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url = baseURL;
    url=url+"?meetingTypes="+paramString;
    url=url+"&sid="+Math.random();

    xmlHttpType.open("GET",url,true);
    xmlHttpType.onreadystatechange=stateChangedType;
    xmlHttpType.send(null); 
}
//************************************
function GetXmlHttpObject2()
{
    var xmlHttp2=null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp2=new XMLHttpRequest();
    }
    catch (e)
    {
        //Internet Explorer
        try
        {
            xmlHttp2=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp2=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp2;
}
//************************************
function displayCategories()
{
    paramString = '';
    buildString('c');
    xmlHttpC=GetXmlHttpObject1();
    if (xmlHttpC==null)
    {
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url = baseURL;
    url=url+"?selectedCatID="+paramString;
    url=url+"&sid="+Math.random();

    xmlHttpC.open("GET",url,true);
    xmlHttpC.onreadystatechange=stateChangedC;
    xmlHttpC.send(null);
}
//************************************
function GetXmlHttpObject1()
{
    var xmlHttp1=null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp1=new XMLHttpRequest();
    }
    catch (e)
    {
        //Internet Explorer
        try
        {
            xmlHttp1=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp1=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp1;
}
//************************************
function stateChangedC() 
{ 
    if (xmlHttpC.readyState==4 || xmlHttpC.readyState=="complete")
    { 
        document.getElementById("meetingCat").innerHTML=xmlHttpC.responseText; 
    } 
}
//************************************
function stateChangedType() 
{ 
    if (xmlHttpType.readyState==4 || xmlHttpType.readyState=="complete")
    { 
        document.getElementById("meetingTypes").innerHTML=xmlHttpType.responseText; 
    } 
}
//************************************
function GetXmlHttpObject()
{
    var xmlHttp=null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        //Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
//************************************ 
function findTypeElement(typeID)
{
    catIndex = 0;
    var found = 0;
    while(meetingsArray[catIndex])
    {
        typeIndex = 0;
        while(meetingsArray[catIndex]['typeList'][typeIndex])
        {
            if(meetingsArray[catIndex]['typeList'][typeIndex]['typeID'] == typeID)
            {
                found = 1;
                break;
            }
            else
                typeIndex++;
        }
        if(found)
            break;
        else
            catIndex++;
    }
}

