text: //
  //Copyright (c) 2015, Skedans Systems, Inc.
  //All rights reserved.
  //
  //Redistribution and use in source and binary forms, with or without
  //modification, are permitted provided that the following conditions are met:
  //
  //    * Redistributions of source code must retain the above copyright notice,
  //      this list of conditions and the following disclaimer.
  //    * Redistributions in binary form must reproduce the above copyright
  //      notice, this list of conditions and the following disclaimer in the
  //      documentation and/or other materials provided with the distribution.
  //
  //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
  //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  //POSSIBILITY OF SUCH DAMAGE.
  //
  var selfEasyrtcid = "";
  
  function disable(domId) {
      document.getElementById(domId).disabled = "disabled";
  }
  
  
  function enable(domId) {
      document.getElementById(domId).disabled = "";
  }
  
  
  function connect() {
      easyrtc.enableDebug(false);
      console.log("Initializing.");
      easyrtc.enableAudio(false);
      easyrtc.enableAudioReceive(false);
      easyrtc.setRoomOccupantListener(convertListToButtons);
      easyrtc.initMediaSource(
          function(){        // success callback
              var selfVideo = document.getElementById("selfVideo");
              easyrtc.setVideoObjectSrc(selfVideo, easyrtc.getLocalStream());
              easyrtc.connect("easyrtc.videoOnly", loginSuccess, loginFailure);
          },
          function(errorCode, errmesg){
              easyrtc.showError("MEDIA-ERROR", errmesg);
          }  // failure callback
          );
  }
  
  
  function terminatePage() {
      easyrtc.disconnect();
  }
  
  
  function hangup() {
      easyrtc.hangupAll();
      disable('hangupButton');
  }
  
  
  function clearConnectList() {
      var otherClientDiv = document.getElementById('otherClients');
      while (otherClientDiv.hasChildNodes()) {
          otherClientDiv.removeChild(otherClientDiv.lastChild);
      }
  
  }
  
  
  function convertListToButtons (roomName, occupants, isPrimary) {
      clearConnectList();
      var otherClientDiv = document.getElementById('otherClients');
      for(var easyrtcid in occupants) {
          var button = document.createElement('button');
          button.onclick = function(easyrtcid) {
              return function() {
                  performCall(easyrtcid);
              };
          }(easyrtcid);
  
          var label = document.createTextNode( easyrtc.idToName(easyrtcid));
          button.appendChild(label);
          otherClientDiv.appendChild(button);
      }
      if( !otherClientDiv.hasChildNodes() ) {
          otherClientDiv.innerHTML = "<em>Nobody else is on...</em>";
      }
  }
  
  
  function performCall(otherEasyrtcid) {
      easyrtc.hangupAll();
      var acceptedCB = function(accepted, easyrtcid) {
          if( !accepted ) {
              easyrtc.showError("CALL-REJECTED", "Sorry, your call to " + easyrtc.idToName(easyrtcid) + " was rejected");
              enable('otherClients');
          }
      };
      var successCB = function() {
          enable('hangupButton');
      };
      var failureCB = function() {
          enable('otherClients');
      };
      easyrtc.call(otherEasyrtcid, successCB, failureCB, acceptedCB);
  }
  
  
  function loginSuccess(easyrtcid) {
      disable("connectButton");
      // enable("disconnectButton");
      enable('otherClients');
      selfEasyrtcid = easyrtcid;
      document.getElementById("iam").innerHTML = "I am " + easyrtcid;
  }
  
  
  function loginFailure(errorCode, message) {
      easyrtc.showError(errorCode, message);
  }
  
  
  function disconnect() {
      document.getElementById("iam").innerHTML = "logged out";
      easyrtc.disconnect();
      console.log("disconnecting from server");
      enable("connectButton");
      // disable("disconnectButton");
      clearConnectList();
      easyrtc.setVideoObjectSrc(document.getElementById('selfVideo'), "");
  }
  
  
  easyrtc.setStreamAcceptor( function(easyrtcid, stream) {
      var video = document.getElementById('callerVideo');
      easyrtc.setVideoObjectSrc(video,stream);
      console.log("saw video from " + easyrtcid);
      enable("hangupButton");
  });
  
  
  easyrtc.setOnStreamClosed( function (easyrtcid) {
      easyrtc.setVideoObjectSrc(document.getElementById('callerVideo'), "");
      disable("hangupButton");
  });
  
  
  easyrtc.setAcceptChecker(function(easyrtcid, callback) {
      document.getElementById('acceptCallBox').style.display = "block";
      if( easyrtc.getConnectionCount() > 0 ) {
          document.getElementById('acceptCallLabel').innerHTML = "Drop current call and accept new from " + easyrtc.idToName(easyrtcid) + " ?";
      }
      else {
          document.getElementById('acceptCallLabel').innerHTML = "Accept incoming call from " + easyrtc.idToName(easyrtcid) +  " ?";
      }
      var acceptTheCall = function(wasAccepted) {
          document.getElementById('acceptCallBox').style.display = "none";
          if( wasAccepted && easyrtc.getConnectionCount() > 0 ) {
              easyrtc.hangupAll();
          }
          callback(wasAccepted);
      };
      document.getElementById("callAcceptButton").onclick = function() {
          acceptTheCall(true);
      };
      document.getElementById("callRejectButton").onclick =function() {
          acceptTheCall(false);
      };
  } );
  