var joinwidgethandler = null;

function getJoinUrl () {

   var hostname = window.location.hostname.toString ();
   return "http://" + hostname + "/perl/mxmd/web";
}

function submitJoin (source, id, callback) {

   var elem = document.getElementById (id);
   if (! elem)
      return false;

   var cellnumber = elem.value;

   if (! cellnumber || cellnumber == "")
      return false;

   if (window.XMLHttpRequest) {
      joinwidgethandler = new XMLHttpRequest ();
   } else {
      joinwidgethandler = new ActiveXObject ("Microsoft.XMLHTTP");
   }

   if (joinwidgethandler != null) {

      joinwidgethandler.callback = callback;
      joinwidgethandler.onreadystatechange = joinWidgetOnResponse;
      joinwidgethandler.open ("POST", getJoinUrl() + "/registration", true);
      joinwidgethandler.setRequestHeader('Content-Type', 'text/xml');

      var str = "<registration><task>join</task><auth_appid>D9F06843280BE34F5D89430468FFF43049785EE8B3F8423FCB90E9E6FA5CA47A</auth_appid>";
      str += "<sourceurl><![CDATA[" + window.location + "]]></sourceurl>";
      str += "<data><![CDATA[" + cellnumber + "]]></data>";

      if (source != null)
         str += "<source>" + source + "</source>";

      str += "</registration>";

      joinwidgethandler.send (str);
   }

   return true;
}

function joinWidgetOnResponse () {

   if (joinwidgethandler.readyState != 4 || joinwidgethandler.status != 200)
      return;

   var xml = joinwidgethandler.responseXML;
   if (xml == null) {
      joinwidgethandler.callback ({'status': 0, 'msg': 'Unexpected error, please try again later'});
      return;
   }

   if (! findNode (xml, 'ok')) {
      joinwidgethandler.callback ({'status': 0, 'msg': 'Unexpected error, please try again later'});
      return;
   }

   var task = findNodeValue (xml, 'task');
   switch (task) {
      case "join":

         var status = findNodeValue (xml, 'status');
         var msg    = findNodeValue (xml, 'msg');

         if (status == 1) {

            var number = findNodeValue (xml, 'number');
            joinwidgethandler.callback ({'status': status, 'msg': msg, 'number': number});

         } else {

            joinwidgethandler.callback ({'status': status, 'msg': msg});
         }

         break;
   }

}

function joinWidgetInputKeyPressed (e) {
}
function joinWidgetInputOnBlur (e) {
}
function joinWidgetInputOnFocus (e) {
   document.getElementById ('joingo').style.visibility='visible';
}
function findNode (node, tag) {
   return node.getElementsByTagName (tag)[0];
}
function findNodeValue (node, tag) {

   var value;
   try {
      value = node.getElementsByTagName (tag)[0].firstChild.nodeValue;
   } catch (err) {
      value = null;
   }
   return value;
}

