//list.js
//Author: R. Buck
//This script facilitates an AJAX representation of club and organization data
//3-13-09
//NEEDS CODE REFINEMENT!!

//The global XMLHttpRequest variable
var xhr;

//Global arrays 
var clubsNameList = new Array();
var clubsPhoneList = new Array();
var clubsEmailList = new Array();
var clubsOrgsURL = new Array();
var officerName = new Array();
var officerTitle = new Array();
var officerPhone = new Array();
var officerEmail = new Array();
var clubsOrgsPurpList = new Array();
var clubsNameFrstLtr = new Array();

var ltr;

function createXMLHttpRequest() {
    //Call the right constructor for the browser
    if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else {
	alert("Your browser does not support AJAX");
    }
}

//Initializes the script when the html doc is loaded 
function startRequest(l) {
    createXMLHttpRequest();
    ltr = l;
    xhr.onreadystatechange = handleStateChange; 
    var f1=("clubs_orgs.xml"); 
    xhr.open("GET", f1, true);
    xhr.send(null);
}

//Verifies the state has changed and proceeds with display method    
function handleStateChange() {
    if(xhr.readyState == 4) {
        if(xhr.status == 200) {
	    displayOrgs(ltr);
	}
    }
}
 
function displayOrgs(ltr) {
    var xmlDoc = xhr.responseXML;
    var clubsOrgsRow = xmlDoc.getElementsByTagName("ROW");

    clubsNameFrstLtr = xmlDoc.getElementsByTagName("OrgNameFrstLtr"); 
    clubsNameList = xmlDoc.getElementsByTagName("OrgName");
    clubsPhoneList = xmlDoc.getElementsByTagName("OrgPhone");
    clubsEmailList = xmlDoc.getElementsByTagName("OrgEmail");
    clubsOrgsURL = xmlDoc.getElementsByTagName("OrgURL");
    officerName = xmlDoc.getElementsByTagName("Officer1Name");
    officerTitle = xmlDoc.getElementsByTagName("Officer1Title");
    officerPhone = xmlDoc.getElementsByTagName("Officer1Phone");
    officerEmail = xmlDoc.getElementsByTagName("Officer1Email");
    clubsOrgsPurpList = xmlDoc.getElementsByTagName("OrgPurpose");

    outputlist(clubsNameList, ltr);

}

function outputlist(clubsNameList, ltr) {
    var currClub = null;
    var currLtr = null;
    var ltrCounter = 0; 
    var clubNum = document.getElementById("CLUBNUM");
    var club = document.getElementById("CLUB");
    club.innerHTML = "";
    clubNum.innerHTML = "";
 
    if (ltr != undefined){
       for(var i = 0; i < clubsNameList.length; i++) {
          currLtr = clubsNameFrstLtr[i];
	  if (ltr == currLtr.childNodes[0].nodeValue) { 
            ltrCounter++; 
       	     currClub = clubsNameList[i];
             var v1 = new String("<a href=\"javascript:showClubInfo\(");
             var v2 = v1 + i;
             var v3 = new String("\)\">");
             var v4 = (v2+v3);
             var v5 = currClub.childNodes[0].nodeValue;
             var v6 = v4 + v5;
             club.innerHTML += v6;
             club.innerHTML += "</a>";
             club.innerHTML += "<br />";
          }
	} 
    clubNum.innerHTML = ltrCounter;

    }
    else {
        clubNum.innerHTML = clubsNameList.length;
	for(var i = 0; i < clubsNameList.length; i++) {
	
           currClub = clubsNameList[i];
           var v1 = new String("<a href=\"javascript:showClubInfo\(");
           var v2 = v1 + i;
           var v3 = new String("\)\">");
           var v4 = (v2+v3);
           var v5 = currClub.childNodes[0].nodeValue;
           var v6 = v4 + v5;
           club.innerHTML += v6;
           club.innerHTML += "</a>";
           club.innerHTML += "<br />";
       }
   }
   return true;
}

function showClubInfo(i) {
    var clubName = document.getElementById("CLUBNAME");
    var clubPurp = document.getElementById("CLUBPURP");
    var clubUrl = document.getElementById("CLUBURL");
    var clubPhone = document.getElementById("CLUBPHONE");
    var clubEmail = document.getElementById("CLUBEMAIL");
    var offName = document.getElementById("OFF1NAME");
    var offTitle = document.getElementById("OFF1TITLE");
    var offPhone = document.getElementById("OFF1PHONE");
    var offEmail = document.getElementById("OFF1EMAIL");

    clubName.innerHTML = "";
    clubPurp.innerHTML = "";
    clubUrl.innerHTML = "";
    clubPhone.innerHTML = "";
    clubEmail.innerHTML = "";
    offName.innerHTML = "";
    offTitle.innerHTML = "";
    offPhone.innerHTML = "";
    offEmail.innerHTML = "";
    
    if (clubsNameList[i].childNodes[0] != undefined){
        clubName.innerHTML += clubsNameList[i].childNodes[0].nodeValue; 
    }

    if (clubsPhoneList[i].childNodes[0] != undefined){
        clubPhone.innerHTML += clubsPhoneList[i].childNodes[0].nodeValue;
    }
    if (clubsOrgsPurpList[i].childNodes[0] != undefined){
        clubPurp.innerHTML += clubsOrgsPurpList[i].childNodes[0].nodeValue;
    }
   if (clubsOrgsURL[i].childNodes[0] != undefined){
           var clublink = clubsOrgsURL[i].childNodes[0].nodeValue;
           var v1 = new String("<a href=\"http://");
           var v2 = v1 + clublink;
           var v3 = new String("\">");
           var v4 = v2+v3;
           var v5 = v4 + clublink;
           clubUrl.innerHTML += v5;
           clubUrl.innerHTML += "</a>";
    }
 
    
    if (officerName[i].childNodes[0] != undefined){
        offName.innerHTML += officerName[i].childNodes[0].nodeValue;
    }
    if (officerTitle[i].childNodes[0] != undefined){
        offTitle.innerHTML += officerTitle[i].childNodes[0].nodeValue;
    }
    if (officerPhone[i].childNodes[0] != undefined){
        offPhone.innerHTML += officerPhone[i].childNodes[0].nodeValue;
    }
    if (officerEmail[i].childNodes[0] != undefined){
        offEmail.innerHTML += officerEmail[i].childNodes[0].nodeValue;
    }
    if (clubsEmailList[i].childNodes[0] != undefined){
        clubEmail.innerHTML += clubsEmailList[i].childNodes[0].nodeValue;
    }

}


//Clears the current clubs listing for testing purposes
function clearList() {
    var clubNum = document.getElementById("CLUBNUM");
    clubNum.innerHTML = "";
    var club = document.getElementById("CLUB");
    club.innerHTML = "";
}

