inviteusers.htm

<html>
<head>
    <title>Invite Users</title>
<link rel="stylesheet" type="text/css" href="breaking.css" />
<script src="include.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">

   //This function parses the XML tree returned from an Http Request object
   //and displays the information about users which it contains
   function parseXml(xmlUsers) 
   {
            clearUserDisplay();

            //Get the root node (skipping any text nodes that may be about)
            var nodeRoot = xmlUsers.firstChild;

            nodeRoot = getNextElementNode(nodeRoot);

            //Get the information about the users
                  var arrayUserNodes = nodeRoot.getElementsByTagName('user');


            //Show a message to confirm whether or not there are users
            //waiting to play
            if (arrayUserNodes.length == 0)
            {
                document.getElementById("idNoUsersMessage").style.display = "block";
                document.getElementById("idUsersMessage").style.display = "none";
            }
            else
            {
                document.getElementById("idNoUsersMessage").style.display = "none";
                document.getElementById("idUsersMessage").style.display = "block";
            }

            //And iterate through any users, displaying them
                  for (var i = 0; i < arrayUserNodes.length; i++) 
                  { 
                      var nodeUser =   arrayUserNodes[i];

                      if (nodeUser != undefined)
                      {
                           //We have users
                           var nodeUserID = nodeUser.getElementsByTagName('userid').item(0);
                           var nodeName = nodeUser.getElementsByTagName('name').item(0);
                           var nodeContact = nodeUser.getElementsByTagName('contact').item(0);
                           var nodeMyStatus = nodeUser.getElementsByTagName('mystatus').item(0);
                           var nodeTheirStatus = nodeUser.getElementsByTagName('theirstatus').item(0);

                           addUserAndStartIfConfirmed(getTextFromNode(nodeUserID), 
                                    getTextFromNode(nodeName), 
                                    getTextFromNode(nodeContact), 
                                    getTextFromNode(nodeMyStatus), 
                                    getTextFromNode(nodeTheirStatus));
                      }
                  }
}

//Clears the display of users, prior to showing a 
//new batch
function clearUserDisplay()
{
     var elem = document.getElementById("idDisplay");

     elem.innerHTML = "";
}

//This function displays the details of another user:
//their name, their contact details and whether
//they've invited us to play, or we've invited them to play.
//It also displays appropriate response buttons.
//If the user has expressed a wish to play with us,
//and we've expressed a wish to play with them, we start straight away.
function addUserAndStartIfConfirmed(userid, name, contact, mystatus, theirstatus) 
{
     //Get the element where we're going to display the user details
     var elem = document.getElementById("idDisplay");

     //This will hold the user details to display
     var strDisplay = "<i>" + name + "(" + contact + ")" + "</i>";

     if (mystatus == "willing") 
     {
          if (theirstatus == "willing")
          {
              top.location = "switch.htm";
          }
          else
          {
              strDisplay = "You've invited " + strDisplay + " to play <input type='button' value='Cancel' onclick='respondInvitation(" + userid + ", \"unconfirmed\")' />";
          }
     }
     else
     {
          if (theirstatus == "willing")
          {
               strDisplay += " has invited you to play <input type='button' value='Agree' onclick='respondInvitation(" + userid + ", \"willing\")' />";
          }
          else
          {
               strDisplay += " is waiting to play <input type='button' value='Invite' onclick='respondInvitation(" + userid + ", \"willing\")' />";
          }
     }

     elem.innerHTML += "<p>" + strDisplay + "</p>";
}
 
   function getUsers() 
   {
        doHttpRequest(httpXMLTimer, handleXMLTimerResponse, "getusers.php", "GET");
   }

   function handleXMLTimerResponse() 
   {
       parseXml(httpXMLTimer.responseXML);

       setTimeout("getUsers()",5000);
   }

   function handleXMLUserResponse() 
   {
       parseXml(httpXMLUser.responseXML);
   }

   function respondInvitation(userid, statuschange)
   {
        urlPost = "respondinvitation.php" + "?userid=" + userid + "&newstatus="+statuschange;

        doHttpRequest(httpXMLUser, handleXMLUserResponse, urlPost, "GET");
   }


</script>
</head>
<body onload="getUsers()">
<h1>Choose someone to play with</h1>
<p class="intro" id = "idNoUsersMessage" style = "display:none">At the moment, no-one is waiting to play. This page will let you know as soon as someone wants to play.</p>
<p class="intro" id = "idUsersMessage" style = "display:none"> These people are waiting to play:</p>
<div id="idDisplay"></div>
</body>
</html>