Guest User

Fractured's Vivox Hack Against Hazim

a guest
Aug 26th, 2010
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mod_uri = '/api2/viv_chan_mod.php';
  2. var debug   = '&debug_host=localhost&start_debug=1';
  3. function createCookie(name,value,days) {
  4.     if (days) {
  5.         var date = new Date();
  6.         date.setTime(date.getTime()+(days*24*60*60*1000));
  7.         var expires = "; expires="+date.toGMTString();
  8.     }
  9.     else var expires = "";
  10.     document.cookie = name+"="+value+expires+"; path=/";
  11. }
  12.  
  13. function readCookie(name) {
  14.     var nameEQ = name + "=";
  15.     var ca = document.cookie.split(';');
  16.     for(var i=0;i < ca.length;i++) {
  17.         var c = ca[i];
  18.         while (c.charAt(0)==' ') c = c.substring(1,c.length);
  19.         if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  20.     }
  21.     return null;
  22. }
  23.  
  24. function eraseCookie(name) {
  25.     createCookie(name,"",-1);
  26. }
  27.  
  28. function IsNumeric(sText)
  29. {
  30.    var ValidChars = "0123456789.";
  31.    var IsNumber=true;
  32.    var Char;
  33.  
  34.  
  35.    for (i = 0; i < sText.length && IsNumber == true; i++)
  36.       {
  37.       Char = sText.charAt(i);
  38.       if (ValidChars.indexOf(Char) == -1)
  39.          {
  40.          IsNumber = false;
  41.          }
  42.       }
  43.    return IsNumber;
  44.    
  45. }
  46.  
  47. function UnloadMenu() {
  48.     var menuElement = document.getElementById("menu");
  49.     if ( menuElement )
  50.         menuElement.innerHTML = '';
  51.     hideElement("menu");
  52. }
  53.  
  54. function LoadMenu(cgiString){
  55.     //alert("LoadMenu("+cgiString+")");
  56.     var queryString = new String(cgiString);
  57.    
  58.     var url='/menu.php';
  59.     if ( cgiString && queryString.length > 0){
  60.         url = url+'?'+cgiString;
  61.     } else {
  62.         cgiString = '';
  63.     }
  64.     vivoxAjaxCallback(url, cgiString, "LoadMenuCB");
  65. }
  66. function LoadLocation(cgiString){
  67.     key_values = cgiString.split('=');
  68.     if (key_values[0]=="location"){
  69.         if ( key_values[1] ) {
  70.             var locationString = new String(key_values[1]);
  71.             alert(locationString);
  72.             var ulist = document.getElementById(locationString);
  73.             if (ulist) {
  74.              var listlink=ulist.getElementsByTagName("a")[0]
  75.              if ( listlink)  
  76.                  ajaxpage(listlink.getAttribute("href"),
  77.                      listlink.getAttribute("rel"), listlink);
  78.             }
  79.         }
  80.     }
  81. }
  82. function LoadMenuCB(responseText, cgiString, responseXML) {
  83.     var status = processLoadPage(responseText, "menu", responseXML);
  84.     showElement("menu");
  85.     var ajaxtabsname = "maintab";
  86.     if ( cgiString.length > 0){
  87.         keyvalue = cgiString.split('=');
  88.         if ( keyvalue[0] == "location" && keyvalue[1].length > 0)
  89.             ajaxtabsname = ajaxtabsname + ":"+keyvalue[1];
  90.     }
  91.     startajaxtabs(ajaxtabsname);
  92.     return status;
  93. }
  94. function LoadDashboard(){
  95.     var url='/ahah/ahah_dashboard.php';
  96.     vivAjaxCallback(url, "LoadDashboardCB", "statusDiv", "middle", "results");
  97. }
  98. function LoadDashboardCB(responseText, statusDiv, contentDiv, ahahDivID ) {
  99.     var status = vivProcessCallback(responseText, statusDiv, contentDiv, ahahDivID);
  100.     return status;
  101. }
  102. function LoadDashboardURL(){
  103.         var url='/dashboardURL.php';
  104.         vivoxAjaxCallback(url, "middle", "LoadDashboardURLCB");
  105. }
  106. function LoadDashboardURLCB(responseText, containerid, responseXML) {
  107.         var status = processLoadPage(responseText, containerid, responseXML);
  108.         return status;
  109. }
  110. function LoadDbStatsControl(){
  111.         var url='/dbStatsControl.php';
  112.         vivoxAjaxCallback(url, "middle", "LoadDbStatsControlCB");
  113. }
  114. function LoadDbStatsControlCB(responseText, containerid, responseXML) {
  115.         var status = processLoadPage(responseText, containerid, responseXML);
  116.         new Accordion($$('dl#dbStatsAccordion dt'), $$('dl#dbStatsAccordion dd'),
  117.                      {start: 'all-closed',
  118.                       alwaysHide: true,
  119.                       opacity: true,
  120.                       duration: 500});
  121.         var innerDivs = $$('div.dbsInnerSpDiv');
  122.         innerDivs.each(
  123.           function(thisDiv){
  124.             var selectors = $ES('li'  ,thisDiv.id);
  125.             var cliskers  = $ES('li a',thisDiv.id);
  126.             var selectee  = $ES('div.panelSet div.panel', thisDiv.id);  
  127.             new tabSwapper({selectedClass: 'on',
  128.                             deselectedClass: 'off',
  129.                             tabSelector: '#tabSet_'+thisDiv.id+' li',
  130.                             clickSelector: '#tabSet_'+thisDiv.id+' li a',
  131.                             sectionSelector: '#panelSet_'+thisDiv.id+' div.dbsContrllpanel',
  132.                             smooth: true});
  133.           }
  134.         );
  135.         return status;
  136. }
  137. function LoadLogerControl(){
  138.         var url='/loggerControl.php';
  139.         vivoxAjaxCallback(url, "middle", "LoadLogerControlCB");
  140. }
  141.  
  142. function LoadLogerControlCB(responseText, containerid, responseXML) {
  143.         var status = processLoadPage(responseText, containerid, responseXML);
  144.         return status;
  145. }
  146. function updateLogControl(chkBox){
  147.   var myXHR = new XHR({async: false}).send('/loggerControl.php?mode=modControl&ctl='+chkBox.id+'&type='+chkBox.value+'&new_val='+chkBox.checked);
  148.   if(myXHR.response.text != ""){
  149.     alert(myXHR.response.text);
  150.   }
  151.   return;
  152. }
  153. function refreshLogControlXml(){
  154.    var myXHR = new XHR({async: false}).send('/loggerControl.php?mode=refreshXml');
  155.    alert(myXHR.response.text);
  156.    return;
  157. }
  158. function LoadConfStats(){
  159.         var url='/confServerStats.php';
  160.         vivoxAjaxCallback(url, "middle", "LoadConfStatsCB");
  161. }
  162. function LoadConfStatsCB(responseText, containerid, responseXML) {
  163.         var status = processLoadPage(responseText, containerid, responseXML);
  164.         var myXHR = new XHR({async: false}).send('/confServerStats.php?mode=get_cluster');
  165.         var serverMap = Json.evaluate(myXHR.response.text);
  166.         var tree = new MooTreeControl({   div: 'ConfStatsSelectTree',
  167.                                          mode: 'files',
  168.                                          grid: true,
  169.                                         theme: '/themes/icons/mootree.gif',
  170.                                        loader: '/themes/icons/mootree_loader.gif',
  171.                                      onSelect: confServerStatsRequest
  172.                                       },{
  173.                                        text: 'Director',
  174.                                        data: '?mode=gen&serv_type=director',
  175.                                        open: true
  176.                                    });
  177.         tree.disable();
  178.         serverMap.opers.each(
  179.           function(thisOper){
  180.             var operNode = tree.insert({text: 'Oper: '+thisOper.name,
  181.                                         data: '?mode=gen&serv_type=oper&name='+thisOper.name});
  182.             operNode.insert({text: 'Conferences',
  183.                              data: '?mode=gen&serv_type=oper_conf&name='+thisOper.name});
  184.             thisOper.ppms.each(
  185.               function(thisPpm){
  186.                 var ppmNode = operNode.insert({text: 'Ppm: '+thisPpm.name,
  187.                                                data: '?mode=gen&serv_type=ppm&name='+thisPpm.name});
  188.                 thisPpm.ppanels.each(
  189.                   function(thisPanel){
  190.                     ppmNode.insert({text: 'Panel :'+thisPanel,
  191.                                     data: '?mode=gen&serv_type=ppanel&name='+thisPanel});
  192.                   });
  193.               });            
  194.           });  
  195.         tree.enable();
  196.         window.ConfServTree = tree;
  197.         return status;
  198. }
  199. function confServerStatsRequest(node,selected){
  200.   if(selected){
  201.     var url = '/confServerStats.php'+node.data
  202.               +'&start='+document.dates.start.value
  203.               +'&end='+document.dates.end.value;
  204.     vivoxAjaxCallback(url, "ConfStatsDisplay", "confServerStatsRequestCB");
  205.   }
  206. }
  207. function confServerStatsHandleIncrement(page){
  208.    var url = '/confServerStats.php'+window.ConfServTree.selected.data
  209.              +'&start='+document.dates.start.value
  210.              +'&end='+document.dates.end.value
  211.              +'&page='+page;
  212.    vivoxAjaxCallback(url, "ConfStatsDisplay", "confServerStatsRequestCB");
  213. }
  214. function confServerStatsRequestCB(responseText, containerid, responseXML){
  215.   var status = processCallback(responseText, containerid, responseXML);
  216.   return status;
  217. }
  218. function eventConfigSubmit(form){
  219.   var notifies = form.enableNotify.checked;
  220.   var limit    = form.limit.value;
  221.   var type     = form.type_select.value;
  222.   var name     = form.id;
  223.   var desc     = form.eventDesc.value;
  224.   if(type == "undef"){
  225.     alert("Please set the event type");
  226.     return;
  227.   }
  228.   var url = '/dbStatsControl.php';
  229.   url=url+"?mode=submit&name="+form.id+"&notifies="+notifies+"&limit="+limit+"&type="+type+"&desc="+desc;
  230.   var submitRez  = window.open(url, "Submit "+form.id,
  231.     "height=575,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  232.   submitRez.focus();
  233.   trackChildren(submitRez);
  234.  
  235. }
  236. function resetEventCounter(form){
  237.   var div = $('count_'+form.id);
  238.   div.innerHTML = "0";
  239.   var url = '/dbStatsControl.php?mode=resetCount&name='+form.id;
  240.   var submitRez  = window.open(url, "Submit "+form.id,
  241.     "height=575,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  242.   submitRez.focus();
  243.   trackChildren(submitRez);
  244. }
  245. function LoadUsersPage(){
  246.     var url='/users.php';
  247.     vivoxAjaxCallback(url, "middle", "LoadUserPageCB");
  248. }
  249. function LoadUserPageCB(responseText, containerid, responseXML) {
  250.     var status = processLoadPage(responseText, containerid, responseXML);
  251.     RefreshUsers(1);
  252.     return status;
  253. }
  254. function LoadPasswordPage(){
  255.     var url='/password.php';
  256.     vivoxAjaxCallback(url, "middle", "LoadPasswordPageCB");
  257. }
  258. function LoadPasswordPageCB(responseText, containerid, responseXML) {
  259.     var status = processLoadPage(responseText, containerid, responseXML);
  260.     return status;
  261. }
  262.  
  263. function LoadChangePasswordPage(){
  264.     var url='/change_password.php';
  265.     vivoxAjaxCallback(url, "middle", "LoadChangePasswordPageCB");
  266. }
  267. function LoadChangePasswordPageCB(responseText, containerid, responseXML) {
  268.     var status = processLoadPage(responseText, containerid, responseXML);
  269.     return status;
  270. }
  271. function LoadFontsPage(){
  272.     var url='/fonts.php';
  273.     vivoxAjaxCallback(url, "middle", "LoadFontsPageCB");
  274. }
  275. function LoadFontsPageCB(responseText, containerid, responseXML) {
  276.     var status = processLoadPage(responseText, containerid, responseXML);
  277.     RefreshFonts(1);
  278.     return status;
  279. }
  280.  
  281. function LoadChannelsPage(){
  282.     var url='/channels.php';
  283.     vivoxAjaxCallback(url, "middle", "LoadChannelsPageCB");
  284. }
  285. function LoadChannelsPageCB(responseText, containerid, responseXML) {
  286.     var status = processLoadPage(responseText, containerid, responseXML);
  287.     RefreshChannels(1);
  288.     return status;
  289. }
  290.  
  291. function LoadAreasPage(){
  292.     var url='/areas.php';
  293.     vivoxAjaxCallback(url, "middle", "LoadAreasPageCB");
  294. }
  295. function LoadAreasPageCB(responseText, containerid, responseXML) {
  296.     var status = processLoadPage(responseText, containerid, responseXML);
  297.     RefreshAreas(1);
  298.     return status;
  299. }
  300.  
  301. function LoadRecordingsPage(){
  302.     var url='/recordings.php';
  303.     vivoxAjaxCallback(url, "middle", "LoadRecordingsPageCB");
  304. }
  305. function LoadRecordingsPageCB(responseText, containerid, responseXML) {
  306.     var status = processLoadPage(responseText, containerid, responseXML);
  307.     RefreshRecordings(1);
  308.     return status;
  309. }
  310. function processLoadPage(responseText, containerid, responseXML) {
  311.     var element = document.getElementById(containerid);
  312.     if ( element != null )
  313.         element.innerHTML=responseText;
  314.     clearStatusDiv();
  315. }
  316. function RefreshUsers(page){
  317.     var argv = RefreshUsers.arguments;
  318.     var argc = RefreshUsers.arguments.length;
  319.     var url='/ahah/ahah_users.php?page='+page;
  320.     switch (argc)
  321.     {
  322.         case 4:
  323.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1])+'&online='+encodeURIComponent(argv[2])+argv[3];
  324.         break;
  325.         case 3:
  326.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1])+'&online='+encodeURIComponent(argv[2]);
  327.         break;
  328.         case 2:
  329.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1]);
  330.         break;
  331.     }
  332.     vivoxAjaxCallback(url, "Users", "RefreshUsersCB");
  333. }
  334. function RefreshUsersCB(responseText, containerid, responseXML) {
  335.     processRefresh(responseText, '/level0/ahah-response/ahah-html', 'Users', 'statusDiv');
  336.     generateToolTipPoopups();
  337. }
  338. function RefreshChannels(page){
  339.     var argv = RefreshChannels.arguments;
  340.     var argc = RefreshChannels.arguments.length;
  341.     var url='/ahah/ahah_chan_dir.php?mode=search&page='+page;    
  342.  
  343.     switch (argc)
  344.     {
  345.         case 4:
  346.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1])+'&'+argv[2]+argv[3];
  347.         break;
  348.         case 3:
  349.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1])+'&'+argv[2];
  350.         break;
  351.         case 2:
  352.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1]);
  353.         break;
  354.     }
  355.        
  356.     vivoxAjaxCallback(url, "Channels", "RefreshChannelsCB");
  357. }
  358. function RefreshChannelsCB(responseText, containerid, responseXML) {
  359.     processRefresh(responseText, '/level0/ahah-response/ahah-html', containerid, 'statusDiv');
  360.     generateToolTipPoopups();
  361. }
  362. function RefreshAdvChannels(page){
  363.     var argv = RefreshAdvChannels.arguments;
  364.     var argc = RefreshAdvChannels.arguments.length;
  365.     var url='/ahah/ahah_chan_dir.php?mode=adv_search&page='+page;    
  366.  
  367.     switch (argc)
  368.     {
  369.         case 4:
  370.            url = url + '&cond='+encodeURIComponent(argv[1])+'&'+argv[2]+argv[3];
  371.         break;
  372.         case 3:
  373.            url = url + '&cond='+encodeURIComponent(argv[1])+'&'+argv[2];
  374.         break;
  375.         case 2:
  376.            url = url + '&cond='+encodeURIComponent(argv[1]);
  377.         break;
  378.     }
  379.        
  380.     vivoxAjaxCallback(url, "Channels", "RefreshAdvChannelsCB");
  381. }
  382. function RefreshAdvChannelsCB(responseText, containerid, responseXML) {
  383.     processRefresh(responseText, '/level0/ahah-response/ahah-html', containerid, 'statusDiv');
  384.     generateToolTipPoopups();
  385. }
  386. function RefreshFonts(page){
  387.     var argv = RefreshFonts.arguments;
  388.     var argc = RefreshFonts.arguments.length;
  389.     var url='/ahah/ahah_fonts_dir.php?mode=search&page='+page;    
  390.  
  391.     switch (argc)
  392.     {
  393.         case 4:
  394.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1])+'&'+argv[2]+argv[3];
  395.         break;
  396.         case 3:
  397.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1])+'&'+argv[2];
  398.         break;
  399.         case 2:
  400.            url = url + '&mode=search&cond='+encodeURIComponent(argv[1]);
  401.         break;
  402.     }
  403.        
  404.     vivoxAjaxCallback(url, "Fonts", "RefreshFontsCB");
  405. }
  406. function RefreshFontsCB(responseText, containerid, responseXML) {
  407.     processRefresh(responseText, '/level0/ahah-response/ahah-html', containerid, 'statusDiv');
  408.     generateToolTipPoopups();
  409. }
  410. function RefreshAreas(page){
  411.     var argv = RefreshAreas.arguments;
  412.     var argc = RefreshAreas.arguments.length;
  413.     var url='/ahah/ahah_area_dir.php?mode=search&page='+page;    
  414.     if ( argc > 1)
  415.        url = url + '&mode=search&cond='+encodeURIComponent(argv[1]);
  416.        
  417.     vivoxAjaxCallback(url, "Areas", "RefreshAreasCB");
  418. }
  419. function RefreshAreasCB(responseText, containerid, responseXML) {
  420.     processRefresh(responseText, '/level0/ahah-response/ahah-html', containerid, 'statusDiv');
  421. }
  422. function RefreshRecordings(page){
  423.     var argv = RefreshRecordings.arguments;
  424.     var argc = RefreshRecordings.arguments.length;
  425.     var url='/ahah/ahah_rec_dir.php?mode=list&page='+page;    
  426.     if ( argc > 1)
  427.        url = url + '&mode=search&cond='+encodeURIComponent(argv[1]);
  428.        
  429.     vivoxAjaxCallback(url, "Recordings", "RefreshRecordingsCB");
  430. }
  431. function RefreshRecordingsCB(responseText, containerid, responseXML) {
  432.     processRefresh(responseText, '/level0/ahah-response/ahah-html', containerid, 'statusDiv');
  433. }
  434. function processRefresh(responseText, responsePath, containerId, statusId){
  435.     clearStatusDiv();
  436.     var xml = new XMLDoc(responseText, null);
  437.     var status = xml.selectNodeText("/level0/status");
  438.     if (status == "ERR"){
  439.         var code = xml.selectNodeText("/level0/body/code");
  440.         var msg = xml.selectNodeText("/level0/body/msg");
  441.         status = status + " ("+code+") -> "+ msg;
  442.         alert(status);
  443.         return false;
  444.     }
  445.     else
  446.     {
  447.         var ahahHTMLNode = xml.selectNode(responsePath);
  448.         // Get display status;
  449.         var channelSubmenu = document.getElementById(containerId);
  450.         if ( channelSubmenu == null )
  451.             return;
  452.         var displayStatus = channelSubmenu.style.display;
  453.         if ( ahahHTMLNode )
  454.           var ahahHTML = ahahHTMLNode.getUnderlyingXMLText();
  455.         var element = document.getElementById(containerId);
  456.         if ( element )
  457.         {
  458.           // alert(ahahHTML);
  459.           element.innerHTML= ahahHTML;
  460.             channelSubmenu = document.getElementById(containerId);
  461.           channelSubmenu.style.display = displayStatus;
  462.         }
  463.         var ahahScriptNode = xml.selectNode("/level0/ahah-response/ahah-script");
  464.         if ( ahahScriptNode ){
  465.           var ahahScript = ahahScriptNode.getUnderlyingXMLText();
  466.           eval(ahahScriptNode.getText());
  467.         }  
  468.         return true;
  469.     }
  470. }
  471. function doAddAccount()
  472. {
  473.     var emailNode = document.getElementById("acc_email");
  474.     var email = new String(emailNode.value);
  475.     var verifyemailNode = document.getElementById("acc_verifyemail");
  476.     var verifyemail = new String(verifyemailNode.value);
  477.     if ( email.valueOf() != verifyemail.valueOf() ){
  478.         alert('Email and Verify Email do not match!');
  479.         return false;
  480.     }
  481.     var passwordNode = document.getElementById("acc_password");
  482.     var password = new String(passwordNode.value);
  483.     var verifypasswordNode = document.getElementById("acc_verifypassword");
  484.     var verifypassword = new String(verifypasswordNode.value);
  485.     if ( password.valueOf() != verifypassword.valueOf() ){
  486.         alert('Password and Verify Password do not match!');
  487.         return false;
  488.     }
  489.  
  490.     var nameNode = document.getElementById("acc_name");
  491.     var name = new String(nameNode.value);
  492.     var firstnameNode = document.getElementById("acc_firstname");
  493.     var firstname = new String(firstnameNode.value);
  494.     var lastnameNode = document.getElementById("acc_lastname");
  495.     var lastname = new String(lastnameNode.value);
  496.     var displaynameNode = document.getElementById("acc_displayname");
  497.     var displayname = new String(displaynameNode.value);
  498.  
  499.     if ( name.length < 1 ){
  500.         alert('Account name must be specified');
  501.         return false;
  502.     }
  503.     if ( password.length < 6 ){
  504.         alert('A password must be at least 6 characters long.');
  505.         return false;
  506.     }
  507.     if ( email.length < 1 ){
  508.         alert('An email address must be specified');
  509.         return false;
  510.     }
  511.     var url='/api2/viv_adm_acct_new.php?username='+encodeURIComponent(name.valueOf())+'&pwd='+encodeURIComponent(password.valueOf());
  512.     url = url+'&firstname='+encodeURIComponent(firstname);
  513.     url = url+'&lastname='+encodeURIComponent(lastname);
  514.     url = url+'&displayname='+encodeURIComponent(displayname);
  515.     url = url+'&email='+encodeURIComponent(email);
  516.     var profileNode = document.getElementById("acc_profile");
  517.     if ( profileNode ){
  518.         var profile = profileNode.value;
  519.         url = url+'&postlogin='+encodeURIComponent(profile);
  520.     }
  521.    
  522.     // url = url+'&ctype=99'
  523.    
  524.     var roleNode = document.getElementById("acc_role");
  525.     role = roleNode.value;
  526.     if ( role != "0" )
  527.     {
  528.         url = url + '&role='+encodeURIComponent(role);
  529.     }
  530.     vivoxAjaxCallback(url, "Accounts", "doAddAccountCB");
  531.     return false;
  532. }
  533. function doAddAccountCB(responseText, containerid, responseXML)
  534. {
  535.     var status = processCallback(responseText, containerid, responseXML);
  536.       var nameNode = document.getElementById("acc_name");
  537.     clearStatusDiv();
  538.       if ( status ) {
  539.        
  540.         alert("Account was successfully added.");
  541.         var firstnameNode = document.getElementById("acc_firstname");
  542.         var lastnameNode = document.getElementById("acc_lastname");
  543.         var displaynameNode = document.getElementById("acc_displayname");
  544.         var emailNode = document.getElementById("acc_email");
  545.         var verifyemailNode = document.getElementById("acc_verifyemail");
  546.         var passwordNode = document.getElementById("acc_password");
  547.         var verifypasswordNode = document.getElementById("acc_verifypassword");
  548.         nameNode.value = '';
  549.         firstnameNode.value = '';
  550.         lastnameNode.value = '';
  551.         displaynameNode.value = '';
  552.         emailNode.value = '';
  553.         verifyemailNode.value = '';        
  554.         passwordNode.value = '';
  555.         verifypasswordNode.value = '';
  556.     }
  557.     nameNode.focus();
  558.     return false;
  559. }
  560. function ImportSLBuddies()
  561. {
  562.     var actionName = 'Import';
  563.      var firstnameNode = document.getElementById("firstname");
  564.     var firstname = new String(firstnameNode.value);
  565.     var lastnameNode = document.getElementById("lastname");
  566.     var lastname = new String(lastnameNode.value);
  567.     var slpasswordNode = document.getElementById("slpassword");
  568.     var slpassword = new String(slpasswordNode.value);
  569.     var url='/api2/viv_sl_buddies_import.php?firstname='+firstname.valueOf()+'&lastname='+lastname.valueOf();
  570.     url = url + '&slpassword='+slpassword.valueOf();
  571.     //alert('calling url '+url);
  572.     var emailNode = document.getElementById('email');
  573.     if ( emailNode ){
  574.         actionName = 'Setup';
  575.         var emailVerifyNode = document.getElementById('email_verify');
  576.         var passwordNode = document.getElementById('vvxpassword');
  577.         var passwordVerifyNode = document.getElementById('vvxpassword_verify');
  578.         var email = new String(emailNode.value);
  579.         var emailVerify = new String(emailVerifyNode.value);
  580.         var password = new String(passwordNode.value);
  581.         var passwordVerify = new String(passwordVerifyNode.value);
  582.         if ( password.length < 6 ){
  583.             alert('A "Vivox OOG Client Password" must be specified and must be at least 6 character in length');
  584.             return false;
  585.         }
  586.         if ( email.length < 1 ){
  587.             alert('An eMail address must be supplied');
  588.             return false;
  589.         }
  590.         if ( password.valueOf() != passwordVerify.valueOf() ){
  591.             alert('Password and Verify Password do not match!');
  592.             return false;
  593.         }
  594.         if ( email.valueOf() != emailVerify.valueOf() ){
  595.             alert('Email and Verify Email do not match!');
  596.             return false;
  597.         }
  598.         url = url+"&email="+encodeURIComponent(email.valueOf());
  599.         url = url+"&password="+encodeURIComponent(password.valueOf());
  600.     }
  601.     vivoxAjaxCallback(url, actionName, "ImportSLBuddiesCB");
  602.     return false;
  603. }
  604. function ImportSLBuddiesCB(responseText, containerid, responseXML)
  605. {
  606.     var status = processCallback(responseText, containerid, responseXML);
  607.     if ( status ) {
  608.         if ( containerid == 'Setup'){
  609.             alert("Second Life buddies successfully imported.");
  610.         } else {
  611.              alert("Vivox Account Setup and Second Life buddies successfully imported.");
  612.         }
  613.     } else {
  614.         clearStatusDiv();
  615.         var error = getErrorText(responseText);
  616.         alert("Failed importing Second Life Buddies!\n "+error);
  617.     }
  618.     return status;
  619. }
  620. function AllocateAccessCode()
  621. {
  622.     var actionName = 'Import';
  623.         var firstnameNode = document.getElementById("firstname");
  624.         var firstname = new String(firstnameNode.value);
  625.         var lastnameNode = document.getElementById("lastname");
  626.         var lastname = new String(lastnameNode.value);
  627.         var categoryNode = document.getElementById("category");
  628.         var category = new String(categoryNode.value);
  629.     var url='/api2/sl_adm_access_code_new.php?firstname='+firstname.valueOf()+'&lastname='+lastname.valueOf()+'&category='+category.valueOf();
  630.  
  631.     var emailNode = document.getElementById('email');
  632.     if ( emailNode ){
  633.         actionName = 'Setup';
  634.         var emailVerifyNode = document.getElementById('email_verify');
  635.             var email = new String(emailNode.value);
  636.             var emailVerify = new String(emailVerifyNode.value);
  637.         if ( email.length < 1 ){
  638.             alert('An eMail address must be supplied');
  639.             return false;
  640.         }
  641.         if ( email.valueOf() != emailVerify.valueOf() ){
  642.             alert('Email and Verify Email do not match!');
  643.             return false;
  644.         }
  645.         url = url+"&email="+email.valueOf();
  646.     }
  647.  
  648.  
  649.         document.body.style.cursor = "wait";
  650.         vivoxAjaxCallback(url, actionName, "AllocateAccessCodeCB");
  651.         return false;
  652. }
  653. function AllocateAccessCodeCB(responseText, containerid, responseXML)
  654. {
  655.     var status = processCallback(responseText, containerid, responseXML);
  656.     clearStatusDiv();
  657.     clearStatusDiv();
  658.     document.body.style.cursor = "default";
  659.     if ( status ) {
  660.         var xml = new XMLDoc(responseText, null);
  661.         var bodystatus = xml.selectNodeText("/level0/status");
  662.         if (bodystatus == "OK"){
  663.                 var number = xml.selectNodeText("/level0/body/level2/code");
  664.                 var display = xml.selectNodeText("/level0/body/level2/code");
  665.         }
  666.         if ( containerid == 'Setup'){
  667.             alert("SecondLife Access Code Created. The number is "+number);
  668.         } else {
  669.              alert("SecondLife Access Code successfully linked. The number is "+display);
  670.         }
  671.     } else {
  672.         var error = getErrorText(responseText);
  673.         //alert("Failed allocating an Access code!\n "+error);
  674.     }
  675.     return status;
  676. }
  677.  
  678. function AllocatePstnNumber()
  679. {
  680.     var actionName = 'Import';
  681.      var firstnameNode = document.getElementById("firstname");
  682.     var firstname = new String(firstnameNode.value);
  683.     var lastnameNode = document.getElementById("lastname");
  684.     var lastname = new String(lastnameNode.value);
  685.     var slpasswordNode = document.getElementById("slpassword");
  686.     var slpassword = new String(slpasswordNode.value);
  687.     var cityNode = document.getElementById("city");
  688.     var city = new String(cityNode.value);
  689.     var url='/api2/viv_sl_pstn_setup.php?firstname='+firstname.valueOf()+'&lastname='+lastname.valueOf();
  690.     url = url + '&slpassword='+slpassword.valueOf()+'&city_id='+city.valueOf();
  691.     var emailNode = document.getElementById('email');
  692.     if ( emailNode ){
  693.         actionName = 'Setup';
  694.         var emailVerifyNode = document.getElementById('email_verify');
  695.         var email = new String(emailNode.value);
  696.         var emailVerify = new String(emailVerifyNode.value);
  697.         if ( email.length < 1 ){
  698.             alert('An eMail address must be supplied');
  699.             return false;
  700.         }
  701.         if ( email.valueOf() != emailVerify.valueOf() ){
  702.             alert('Email and Verify Email do not match!');
  703.             return false;
  704.         }
  705.         url = url+"&email="+email.valueOf();
  706.     }
  707.  
  708.     if ( cityNode && city == 0 ) {
  709.             alert('Please select a city and area code!');
  710.             return false;
  711.     }
  712.  
  713.     document.body.style.cursor = "wait";
  714.     vivoxAjaxCallback(url, actionName, "AllocatePstnNumberCB");
  715.     return false;
  716. }
  717. function AllocatePstnNumberCB(responseText, containerid, responseXML)
  718. {
  719.     var status = processCallback(responseText, containerid, responseXML);
  720.     clearStatusDiv();
  721.     document.body.style.cursor = "default";
  722.     if ( status ) {
  723.     var xml = new XMLDoc(responseText, null);
  724.     var bodystatus = xml.selectNodeText("/level0/body/status");
  725.     if (bodystatus == "Ok"){
  726.         var number = xml.selectNodeText("/level0/body/number");
  727.         var display = xml.selectNodeText("/level0/body/display");
  728.     }
  729.         if ( containerid == 'Setup'){
  730.             alert("SecondLife Telephone Created. The number is "+number);
  731.         } else {
  732.              alert("SecondLife Telephone successfully linked. The number is "+display);
  733.         }
  734.     } else {
  735.         var error = getErrorText(responseText);
  736.         //alert("Failed allocating a Telephone number!\n "+error);
  737.     }
  738.     return status;
  739. }
  740. function ResetPassword()
  741. {
  742.      var oldPasswordNode = document.getElementById("old_pwd");
  743.     var old_password = new String(oldPasswordNode.value);
  744.     var newPasswordNode = document.getElementById("new_pwd");
  745.     var new_password = new String(newPasswordNode.value);
  746.     var newPasswordVerifyNode = document.getElementById("new_pwd_verify");
  747.     var new_password_verify = new String(newPasswordVerifyNode.value);
  748.     if ( new_password.valueOf() != new_password_verify.valueOf() ){
  749.         alert('password and verify password do not match!');
  750.         return false;
  751.     }
  752.     if ( old_password.length < 1 ){
  753.         alert('You must specify your "Current Password"');
  754.         return false;
  755.     }
  756.     if ( new_password.length < 1 ){
  757.         alert('A "New Password" must be specified');
  758.         return false;
  759.     }
  760.     var acctNameNode = document.getElementById("acct_name");
  761.     var acctName = new String(acctNameNode.value);
  762.    
  763.     var url='/api2/viv_adm_password.php?old_pwd='+encodeURIComponent(old_password.valueOf())+'&new_pwd='+encodeURIComponent(new_password.valueOf());
  764.     url += '&user_name='+acctName;
  765.     vivoxAjaxCallback(url, "loginStatus", "ResetPasswordCB");
  766.  
  767.     return false;
  768.    
  769. }
  770. function ResetPasswordCB(responseText, containerid, responseXML)
  771. {
  772.     var status = processCallback(responseText, containerid, responseXML);
  773.     if ( status ) {
  774.         alert("Account password was successfully reset.");
  775.         eraseCookie('vx_session');
  776.         UnloadMenu();
  777.         var middleElement = document.getElementById("middle");
  778.         if ( middleElement )
  779.           middleElement.innerHTML = '';
  780.         checkLoginStatus(containerid);
  781.     } else {
  782.         clearStatusDiv();
  783.         var error = getErrorText(responseText);
  784.         alert("Failed changing account password!\n "+error);
  785.     }
  786.     return status;
  787. }
  788. function ChangePassword()
  789. {
  790.      var usernameNode = document.getElementById("username");
  791.     var username = '';
  792.     if ( usernameNode ){
  793.         username = usernameNode.value;
  794.     }
  795.      var oldPasswordNode = document.getElementById("old_pwd");
  796.     var old_password = new String(oldPasswordNode.value);
  797.     var newPasswordNode = document.getElementById("new_pwd");
  798.     var new_password = new String(newPasswordNode.value);
  799.     var newPasswordVerifyNode = document.getElementById("new_pwd_verify");
  800.     var new_password_verify = new String(newPasswordVerifyNode.value);
  801.     if ( new_password.valueOf() != new_password_verify.valueOf() ){
  802.         alert('password and verify password do not match!');
  803.         return false;
  804.     }
  805.     if ( old_password.length < 1 ){
  806.         alert('You must specify your "Current Password"');
  807.         return false;
  808.     }
  809.     if ( new_password.length < 1 ){
  810.         alert('A "New Password" must be specified');
  811.         return false;
  812.     }
  813.     var url='/api2/viv_change_password.php?tmp_pwd='+encodeURIComponent(old_password.valueOf())+'&new_pwd='+encodeURIComponent(new_password.valueOf());
  814.     var url = url + '&username='+encodeURIComponent(username);
  815.     vivoxAjaxCallback(url, "loginStatus", "ChangePasswordCB");
  816.     return false;
  817. }
  818. function ChangePasswordCB(responseText, containerid, responseXML)
  819. {
  820.     var status = processCallback(responseText, containerid, responseXML);
  821.     if ( status ) {
  822.         alert("Account password was successfully changed.");
  823.         UnloadMenu();
  824.         var middleElement = document.getElementById("middle");
  825.         if ( middleElement )
  826.           middleElement.innerHTML = '';
  827.     } else {
  828.         clearStatusDiv();
  829.         var error = getErrorText(responseText);
  830.         alert("Failed changing account password!\n "+error);
  831.     }
  832.     return status;
  833. }
  834. function doFontsSearch()
  835. {
  836.     var activeTerm ='';
  837.     var searchNode = document.getElementById("searchterm");
  838.     var searchTerm = searchNode.value;
  839.     var activeNode = document.getElementById("searchactive");
  840.     var url='/ahah/ahah_fonts_dir.php?mode=search&cond='+encodeURIComponent(searchTerm);
  841.     vivoxAjaxCallback(url, "Fonts", "doFontsSearchCB");
  842.     return false;
  843. }
  844. function doFontsSearchCB(responseText, containerid, responseXML)
  845. {
  846.     var status = processCallback(responseText, containerid, responseXML);
  847.     return status;
  848. }
  849. function doChannelSearch()
  850. {
  851.     var activeTerm ='';
  852.     var searchNode = document.getElementById("searchterm");
  853.     var searchTerm = searchNode.value;
  854.     var url='/ahah/ahah_chan_dir.php?mode=search&cond='+encodeURIComponent(searchTerm);
  855.     var activeNode = document.getElementById("searchactive");
  856.     if ( activeNode.checked )
  857.         url = url + '&inuse=1';
  858.    
  859.     var chn_activeNode = document.getElementById("chn_active");
  860.     var chn_inactiveNode = document.getElementById("chn_inactive");
  861.     if ( chn_activeNode.checked ){
  862.         url = url + '&active=1';
  863.         var chn_activeDaysNode = document.getElementById("chn_activelastdays");
  864.         url = url + '&days='+chn_activeDaysNode.value;
  865.     } else if ( chn_inactiveNode.checked ){
  866.         url = url + '&inactive=1';
  867.         var chn_inactiveDaysNode = document.getElementById("chn_inactivelastdays");
  868.         url = url + '&days='+chn_inactiveDaysNode.value;
  869.     }
  870.  
  871.        
  872.     vivoxAjaxCallback(url, "Channels", "doChannelSearchCB");
  873.     return false;
  874. }
  875. function doChannelSearchCB(responseText, containerid, responseXML)
  876. {
  877.     var status = processCallback(responseText, containerid, responseXML);
  878.     return status;
  879. }
  880. function doRecordingsSearch(node)
  881. {
  882.     var searchNode = document.getElementById("searchterm");
  883.     var searchTerm = searchNode.value;
  884.     var url='/ahah/ahah_rec_dir.php?mode=search&cond='+encodeURIComponent(searchTerm);
  885.     vivoxAjaxCallback(url, "Recordings", "doRecordingsSearchCB");
  886. }
  887. function doRecordingsSearchCB(responseText, containerid, responseXML)
  888. {
  889.     var status = processCallback(responseText, containerid, responseXML);
  890.     return status;
  891. }
  892. function doUserSearch()
  893. {
  894.     var activeTerm = '';
  895.        var groupNode = document.getElementById("adm_manager");
  896.     var groupTerm = groupNode.value;
  897.  
  898.     var searchNode = document.getElementById("UserSearchTerm");
  899.     var searchTerm = searchNode.value;
  900.     var url='/ahah/ahah_users.php?mode=search&cond='+encodeURIComponent(searchTerm);
  901.     var onlineOnlyNode = document.getElementById("onlineonly");
  902.     if ( onlineOnlyNode.checked )
  903.        url = url + '&online=1';
  904.  
  905.     var activeNode = document.getElementById("active");
  906.     var inactiveNode = document.getElementById("inactive");
  907.     if ( activeNode && activeNode.checked ) {
  908.        var activeDaysNode = document.getElementById("activelastdays");
  909.        if ( activeDaysNode )
  910.            activeTerm='&active&days='+encodeURIComponent(activeDaysNode.value);
  911.        
  912.     }
  913.     if ( inactiveNode && inactiveNode.checked ) {
  914.        var inactiveDaysNode = document.getElementById("inactivelastdays");
  915.        if ( inactiveDaysNode )
  916.            activeTerm='&inactive&days='+encodeURIComponent(inactiveDaysNode.value);
  917.        
  918.     }
  919.     url = url + activeTerm;
  920.     if ( groupTerm != "-1" ) {
  921.         url = url + "&group="+encodeURIComponent(groupTerm);
  922.     }
  923.    
  924.     vivoxAjaxCallback(url, "Users", "doUserSearchCB");
  925.     return false;    
  926. }
  927. function doUserSearchCB(responseText, containerid, responseXML)
  928. {
  929.     var status = processCallback(responseText, containerid, responseXML);
  930.     return status;
  931. }
  932. function doAdvUserSearch()
  933. {
  934.     var activeTerm = '';
  935.        var groupNode = document.getElementById("adm_manager");
  936.     var groupTerm = groupNode.value;
  937.  
  938.     var searchNode = document.getElementById("adv_UserSearchTerm");
  939.     var searchTerm = searchNode.value;
  940.     var url='/ahah/ahah_users.php?mode=search&cond='+encodeURIComponent(searchTerm);
  941.     var onlineOnlyNode = document.getElementById("adv_onlineonly");
  942.     if ( onlineOnlyNode.checked )
  943.        url = url + '&online=1';
  944.  
  945.     var activeNode = document.getElementById("adv_active");
  946.     var inactiveNode = document.getElementById("adv_inactive");
  947.     if ( activeNode && activeNode.checked ) {
  948.        var activeDaysNode = document.getElementById("adv_activelastdays");
  949.        if ( activeDaysNode )
  950.            activeTerm='&active&days='+encodeURIComponent(activeDaysNode.value);
  951.        
  952.     }
  953.     if ( inactiveNode && inactiveNode.checked ) {
  954.        var inactiveDaysNode = document.getElementById("adv_inactivelastdays");
  955.        if ( inactiveDaysNode )
  956.            activeTerm='&inactive&days='+encodeURIComponent(inactiveDaysNode.value);
  957.        
  958.     }
  959.     url = url + activeTerm;
  960.     if ( groupTerm != "-1" ) {
  961.         url = url + "&group="+encodeURIComponent(groupTerm);
  962.     }
  963.    
  964.     vivoxAjaxCallback(url, "Users", "doAdvUserSearchCB");
  965.     return false;    
  966. }
  967. function doAdvUserSearchCB(responseText, containerid, responseXML)
  968. {
  969.     var status = processCallback(responseText, containerid, responseXML);
  970.     return status;
  971. }
  972.  
  973. function doAreaSearch()
  974. {
  975.  
  976.     var searchNode = document.getElementById("AreaSearchTerm");
  977.     var searchTerm = searchNode.value;
  978.     var url='/ahah/ahah_area_dir.php?mode=search&cond='+encodeURIComponent(searchTerm);
  979.    
  980.     vivoxAjaxCallback(url, "Areas", "doAreaSearchCB");
  981.     return false;    
  982. }
  983.  
  984. function doAreaSearchCB(responseText, containerid, responseXML)
  985. {
  986.     var status = processCallback(responseText, containerid, responseXML);
  987.     return status;
  988. }
  989.  
  990. function processCMDCallback(responseText, containerid, responseXML)
  991. {
  992.     var element = document.getElementById("statusDiv");
  993.     var xml = new XMLDoc(responseText, null);
  994.     var status = xml.selectNodeText("/level0/status");
  995.     if (status == "ERR"){
  996.         var code = xml.selectNodeText("/level0/body/code");
  997.         var msg = xml.selectNodeText("/level0/body/msg");
  998.         clearStatusDiv();
  999.         status = status + " ("+code+") -> "+ msg;
  1000.         alert(status);
  1001.         return false;
  1002.     } else {
  1003.         clearStatusDiv();
  1004.         return true;
  1005.     }
  1006. }
  1007. function getErrorText(responseText)
  1008. {
  1009.     var xml = new XMLDoc(responseText, null);
  1010.     var status = xml.selectNodeText("/level0/status");
  1011.     if (status == "ERR"){
  1012.         var code = xml.selectNodeText("/level0/body/code");
  1013.         var msg = xml.selectNodeText("/level0/body/msg");
  1014.         status = status + " ("+code+") -> "+ msg;
  1015.         return status;
  1016.     }
  1017.     return "OK";    
  1018. }
  1019. function processRefreshCallback(responseText, channelid, responsePath, responseXML)
  1020. {
  1021.     var xml = new XMLDoc(responseText, null);
  1022.     var status = xml.selectNodeText("/level0/status");
  1023.     var containerid = 'cwrp'+channelid;
  1024.     var element = document.getElementById(containerid);
  1025.     if (status == "ERR"){
  1026.         var code = xml.selectNodeText("/level0/body/code");
  1027.         var msg = xml.selectNodeText("/level0/body/msg");
  1028.         clearStatusDiv();
  1029.         status = status + " ("+code+") -> "+ msg;
  1030.         alert(status);
  1031.         return false;
  1032.     }
  1033.     else
  1034.     {
  1035.         var ahahHTMLNode = xml.selectNode(responsePath);
  1036.         // Get display status;
  1037.         var channelSubmenuName = "csub"+channelid;
  1038.         var channelSubmenu = document.getElementById(channelSubmenuName);
  1039.         var displayStatus = channelSubmenu.style.display;
  1040.         if ( ahahHTMLNode )
  1041.           var ahahHTML = ahahHTMLNode.getUnderlyingXMLText();
  1042.         if ( element )
  1043.         {
  1044.           element.outerHTML= ahahHTML;
  1045.             channelSubmenu = document.getElementById(channelSubmenuName);
  1046.           channelSubmenu.style.display = displayStatus;
  1047.         }
  1048.         var ahahScriptNode = xml.selectNode("/level0/ahah-response/ahah-script");
  1049.         if ( ahahScriptNode ){
  1050.           var ahahScript = ahahScriptNode.getUnderlyingXMLText();
  1051.           eval(ahahScriptNode.getText());
  1052.         }  
  1053.         return true;
  1054.     }
  1055. }
  1056. function processCallback(responseText, containerid, responseXML)
  1057. {
  1058.     var xml = new XMLDoc(responseText, null);
  1059.     var status = xml.selectNodeText("/level0/status");
  1060.     var element = document.getElementById(containerid);
  1061.     var statusDiv = document.getElementById("statusDiv");
  1062.     if (status == "ERR"){
  1063.         var code = xml.selectNodeText("/level0/body/code");
  1064.         var msg = xml.selectNodeText("/level0/body/msg");
  1065.         clearStatusDiv();
  1066.         status = status + " ("+code+") -> "+ msg;
  1067.         alert(status);
  1068.         return false;
  1069.        
  1070.     }
  1071.     else
  1072.     {
  1073.         var ahahHTMLNode = xml.selectNode("/level0/ahah-response/ahah-html/div");
  1074.         if ( ahahHTMLNode )
  1075.           var ahahHTML = ahahHTMLNode.getUnderlyingXMLText();
  1076.         if ( element )
  1077.           element.innerHTML= ahahHTML;
  1078.         var ahahScriptNode = xml.selectNode("/level0/ahah-response/ahah-script");
  1079.         if ( ahahScriptNode ){
  1080.           var ahahScript = ahahScriptNode.getUnderlyingXMLText();
  1081.           eval(ahahScriptNode.getText());
  1082.         }  
  1083.         return true;
  1084.     }
  1085. }
  1086. function doAdvChSearch()
  1087. {
  1088.     var ownerNode = document.getElementById("searchowner");
  1089.     var ownerTerm = ownerNode.value;
  1090.     var moderatorNode = document.getElementById("searchmoderators");
  1091.     var moderatorTerm = moderatorNode.value;
  1092.     var persistenceNode = document.getElementById("persistence");
  1093.     var persistenceTerm = persistenceNode.value;
  1094.     var protectedNode = document.getElementById("protection");
  1095.     var protectedTerm = protectedNode.value;
  1096.  
  1097.     if ( persistenceTerm == 'persistent' )
  1098.         persistent = 't';
  1099.     if ( persistenceTerm == 'transient' )
  1100.         persistent = 'f';
  1101.  
  1102.     if ( protectedTerm == 'protected' )
  1103.         protectedChannel = 't';
  1104.     if ( protectedTerm == 'unprotected' )
  1105.         protectedChannel = 'f';
  1106.    
  1107.     // normal url
  1108.     var url='/ahah/ahah_chan_dir.php?&mode=adv_search&owner='+encodeURIComponent(ownerTerm)+'&moderator='+encodeURIComponent(moderatorTerm);
  1109.  
  1110.     if ( persistenceTerm != 'both' )
  1111.         url += '&persistent='+encodeURIComponent(persistent);
  1112.  
  1113.     if ( protectedTerm != 'both' )
  1114.         url += '&protected='+encodeURIComponent(protectedChannel);
  1115.  
  1116.     var activeNode = document.getElementById("chn_active");
  1117.     var inactiveNode = document.getElementById("chn_inactive");
  1118.     var activeTerm ='';
  1119.     if ( activeNode && activeNode.checked ) {
  1120.        var activeDaysNode = document.getElementById("chn_activelastdays");
  1121.        if ( activeDaysNode )
  1122.            activeTerm='&active&days='+encodeURIComponent(activeDaysNode.value);
  1123.        
  1124.     }
  1125.     if ( inactiveNode && inactiveNode.checked ) {
  1126.        var inactiveDaysNode = document.getElementById("chn_inactivelastdays");
  1127.        if ( inactiveDaysNode )
  1128.            activeTerm='&inactive&days='+encodeURIComponent(inactiveDaysNode.value);
  1129.        
  1130.     }
  1131.     url = url + activeTerm;
  1132.     vivoxAjaxCallback(url, "Channels", "doAdvChannelSearchCB");
  1133.     return false;
  1134. }
  1135. function doAdvChannelSearchCB(responseText, containerid, responseXML)
  1136. {
  1137.     var status = processCallback(responseText, containerid, responseXML);
  1138.     return status;
  1139. }
  1140.  
  1141. function togglePasswords(element){
  1142.     if (element.checked){
  1143.         showElement("chn_password_label");
  1144.         showElement("chn_password_input");
  1145.         showElement("chn_verify_password_label");
  1146.         showElement("chn_verify_password_input");
  1147.     } else {
  1148.         hideElement("chn_password_label");
  1149.         hideElement("chn_password_input");
  1150.         hideElement("chn_verify_password_label");
  1151.         hideElement("chn_verify_password_input");
  1152.     }
  1153. }
  1154. function showAddAccount()
  1155. {
  1156.     showElement("AddAccount");
  1157.     hideElement("UserSearch");
  1158.     hideElement("Users");
  1159. }
  1160. function hideAddAccount()
  1161. {
  1162.     hideElement("AddAccount");
  1163.     showElement("UserSearch");
  1164.     showElement("Users");
  1165.    
  1166. }
  1167.  
  1168. function showUserOptions()
  1169. {
  1170.     showElement("AdvUserSearch");
  1171.     hideElement("UserSearch");
  1172. }
  1173. function showOptions()
  1174. {
  1175.     showElement("AdvChSearch");
  1176.     hideElement("ChSearch");
  1177. }
  1178. function showAddChannel()
  1179. {
  1180.     showElement("AddChannelDiv");
  1181.     hideElement("ChSearch");
  1182.     hideElement("Channels");
  1183.    
  1184.     var encryptedNode = document.getElementById("encrypted");
  1185.     encryptedNode.checked = false;
  1186.    
  1187.     var persistentNode = document.getElementById("persistent");
  1188.     persistentNode.checked = false;
  1189.    
  1190.     var positionalNode = document.getElementById("positional");
  1191.     positionalNode.checked = false;
  1192.    
  1193.     var protectedNode = document.getElementById("protectedOnly");
  1194.    
  1195.     if ( protectedNode ) {
  1196.        protectedNode.checked = false;
  1197.        hideElement("chn_password_label");
  1198.        hideElement("chn_password_input");
  1199.        hideElement("chn_verify_password_label");
  1200.        hideElement("chn_verify_password_input");
  1201.     }
  1202. }
  1203.  
  1204. function hideAddChannel()
  1205. {
  1206.     hideElement("AddChannelDiv");
  1207.     showElement("ChSearch");
  1208.     showElement("Channels");
  1209. }
  1210. function showAddFolder()
  1211. {
  1212.     showElement("AddFolderDiv");
  1213.     hideElement("ChSearch");
  1214.     hideElement("Channels");
  1215. }
  1216.  
  1217. function hideAddFolder()
  1218. {
  1219.     hideElement("AddFolderDiv");
  1220.     showElement("ChSearch");
  1221.     showElement("Channels");
  1222. }
  1223.  
  1224. function showBasic()
  1225. {
  1226.     hideElement("AdvChSearch");
  1227.     showElement("ChSearch");
  1228. }
  1229. function showUserBasic()
  1230. {
  1231.     hideElement("AdvUserSearch");
  1232.     showElement("UserSearch");
  1233. }
  1234. function MuteAll(channelId)
  1235. {
  1236.     var url='/api2/viv_chan_cmd.php?mode=mute_all&chan_id='+encodeURIComponent(channelId);
  1237.     vivoxAjaxCallback(url, channelId, "MuteAllCB");
  1238. }
  1239. function MuteAllCB(responseText, containerid, responseXML)
  1240. {
  1241.     var status = processCMDCallback(responseText, containerid, responseXML);
  1242.     return status;
  1243. }
  1244. function UnMuteAll(channelId)
  1245. {
  1246.     var url='/api2/viv_chan_cmd.php?mode=unmute_all&chan_id='+encodeURIComponent(channelId);
  1247.     vivoxAjaxCallback(url, channelId, "UnMuteAllCB");
  1248. }
  1249. function UnMuteAllCB(responseText, containerid, responseXML)
  1250. {
  1251.     var status = processCMDCallback(responseText, containerid, responseXML);
  1252.     return status;
  1253. }
  1254. function Delete(channelId)
  1255. {
  1256.     var url='/api2/viv_chan_mod.php?mode=delete&chan_id='+encodeURIComponent(channelId);
  1257.     vivoxAjaxCallback(url, channelId, "DeleteCB");
  1258. }
  1259. function DeleteCB(responseText, containerid, responseXML)
  1260. {
  1261.     var status;
  1262.     var divname = 'chan'+containerid;
  1263.    
  1264.     var status = processCMDCallback(responseText, containerid, responseXML);
  1265.     if ( status == true )
  1266.     {
  1267.         var divElement = document.getElementById(divname);
  1268.         divElement.outerHTML='';
  1269.     }
  1270.     clearStatusDiv();
  1271.     alert('Channel Deleted');
  1272.     return false; // leave the message up on success
  1273. }
  1274.  
  1275. function doAddChannel(form) {
  1276.  
  1277.     var url;
  1278.     url = mod_uri + '?mode=create&chan_name=' + encodeURIComponent(form.chn_name.value) + '&chan_desc=' + encodeURIComponent(form.chn_desc.value) +
  1279.         '&chan_parent='+encodeURIComponent(form.chn_parent.value)+'&chan_limit='+encodeURIComponent(form.maxParticipants.value);
  1280.     var channel_name = new String(form.chn_name.value);
  1281.     if ( channel_name.length < 1){
  1282.         alert("Please fill in all required fields indicated with *" );
  1283.         return false;
  1284.     }
  1285.        
  1286.     if ( form.persistent.checked )
  1287.         url = url+'&chan_persist=1';
  1288.        
  1289.     if ( form.encrypted.checked )
  1290.         url = url+'&chan_encrypt_audio=1';
  1291.        
  1292.     if ( form.protectedOnly.checked ){
  1293.         var password = new String(form.password.value);
  1294.         var verifypassword = new String(form.verifypassword.value);
  1295.         if ( password.length < 6 ){
  1296.             alert("A password must be at least 6 characters long.");
  1297.             return false;
  1298.         }
  1299.         if ( password.valueOf() != verifypassword.valueOf() ){
  1300.             alert('Password and Verify Password do not match!');
  1301.             return false;
  1302.         }
  1303.        
  1304.         url = url + '&chan_passwd='+encodeURIComponent(form.password.value);
  1305.        
  1306.     }
  1307.     if ( !IsNumeric(form.maxParticipants.value) ){
  1308.         alert('max participants must be a numeric value!');
  1309.         return false;
  1310.     }
  1311.     if ( form.positional.checked )
  1312.         url = url + '&chan_type=positional';
  1313.     else
  1314.         url = url + '&chan_type=channel';
  1315.     vivoxAjaxCallback(url, "Channels", "addChannelCB");
  1316.     return false;
  1317. }
  1318.  
  1319. function refreshChannelsPanel(){
  1320.     var element = document.getElementById("refreshChannelsPage");
  1321.     if ( element ){
  1322.         var hrefString = new String(element.href);
  1323.         var evalString = hrefString.split(':');
  1324.         cmdString = evalString[1];
  1325.         eval(cmdString);
  1326.     }
  1327.    
  1328. }
  1329. function clearTextValue(fieldName) {
  1330.     var name = document.getElementById(fieldName);
  1331.     if ( name )
  1332.         name.value ='';
  1333. }
  1334.  
  1335. function clearAddChannelsForm() {
  1336.  
  1337.     clearTextValue("chn_name");
  1338.     clearTextValue("chn_desc");
  1339.     clearTextValue("password");
  1340.     clearTextValue("verifypassword");
  1341. }
  1342.  
  1343. function addChannelCB(responseText, containerid, responseXML)
  1344. {
  1345.     var status = processCMDCallback(responseText, containerid, responseXML);
  1346.     if ( status == true )
  1347.     {
  1348.         alert('Channel successfully added.');
  1349.         clearAddChannelsForm();
  1350.     }
  1351.     hideAddChannel();
  1352.     refreshChannelsPanel();
  1353.     return false; // leave the message up on success
  1354. }
  1355. function doAddFolder(form) {
  1356.     var url;
  1357.     var mod_uri = '/api2/viv_chan_mod.php';
  1358.    
  1359.     url = mod_uri + '?mode=create&type=dir&chan_uri=&chan_name=' + form.folder_name.value +
  1360.         '&chan_desc=' + form.folder_desc.value +
  1361.         '&succeed_if_exists=true';
  1362.     vivoxAjaxCallback(url, "Channels", "addFolderCB");
  1363.     return false;
  1364. }
  1365.  
  1366. function addFolderCB(responseText, containerid, responseXML)
  1367. {
  1368.     var status = processCMDCallback(responseText, containerid, responseXML);
  1369.     if ( status == true )
  1370.     {
  1371.         alert('Folder successfully added.');
  1372.     }
  1373.     else
  1374.         alert('Error adding folder.');
  1375.    
  1376.     hideAddFolder();
  1377.     refreshChannelsPanel();
  1378.     return false; // leave the message up on success
  1379. }
  1380. function ManageFolder(chanID, chanName)
  1381. {
  1382.     chanmgrURL = '/fldmgr.php?chan_id='+chanID+'&chan_name='+encodeURIComponent(chanName);
  1383.     chanmgr = window.open(chanmgrURL, "ChanMGR"+encodeURIComponent(chanID),
  1384.     "height=575,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  1385.     if (chanmgr.opener == null) chanmgr.opener = self
  1386.     chanmgr.focus();
  1387.     trackChildren(chanmgr);
  1388.    
  1389.    
  1390. }
  1391. function ManageAddAccounts()
  1392. {
  1393.     addusrmgrURL = '/addusrmgr.php';
  1394.     addusrmgr = window.open(addusrmgrURL, "AddUserMGR",
  1395.     "height=575,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  1396.     addusrmgr.focus();
  1397.     trackChildren(addusrmgr);
  1398.    
  1399. }
  1400.  
  1401. function ManageAccessCode(acID, chanName)
  1402. {
  1403.     acmgrURL = '/acmgr.php?ac_id='+acID;
  1404.     acmgr = window.open(acmgrURL, "CodeMGR"+encodeURIComponent(acID),
  1405.     "height=575,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  1406.     if (acmgr.opener == null) acmgr.opener = self
  1407.     acmgr.focus();
  1408.     trackChildren(acmgr);
  1409.    
  1410.    
  1411. }
  1412.  
  1413. function ManageRecording(recID, recName)
  1414. {
  1415.     recmgrURL = '/recmgr.php?rec_id='+encodeURIComponent(recID)+'&rec_name='+encodeURIComponent(recName);
  1416.     recmgr = window.open(recmgrURL, "recMGR"+encodeURIComponent(recID),
  1417.     "height=575,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  1418.     recmgr.focus();
  1419.     trackChildren(recmgr);
  1420.    
  1421. }
  1422.  
  1423. function ManageUser(acct_id, acc_name)
  1424. {
  1425.     usrmgrURL = '/usrmgr.php?acc_id='+encodeURIComponent(acct_id)+'&acc_name='+encodeURIComponent(acc_name);
  1426.     usermgr = window.open(usrmgrURL, "UserMGR"+encodeURIComponent(acct_id),
  1427.     "height=600,width=750,location=no,menubar=no,resizable=yes,scrollbars=yes,toolbar=no,status=no,titlebar=no");
  1428.     if (usermgr.opener == null) usermgr.opener = self
  1429.    
  1430.     usermgr.focus();
  1431.     trackChildren(usermgr);
  1432. }
  1433. function createChanMenu(chanName, chanID, moderator)
  1434. {
  1435.     var MenuName = "ChanMenu"+encodeURIComponent(chanID);
  1436.     var ManageCMD = "code:ManageChannel("+chanID+", '"+encodeURIComponent(chanName)+"');";
  1437.     var MuteAllCMD = "code:MuteAll("+chanID+");";
  1438.     var UnMuteAllCMD = "code:UnMuteAll("+chanID+");";
  1439.     var DeleteCMD   = "code:Delete("+chanID+");";
  1440.     var divName = 'DIV.menu'+chanID;
  1441.     var containerName = 'cwrp'+chanID;
  1442.     channelPopUpMenu = new jsDOMenu(150, "", MenuName);
  1443.       with (channelPopUpMenu) {
  1444.         addMenuItem(new menuItem("Manage", "mc", ManageCMD));
  1445.         addMenuItem(new menuItem("-"));
  1446.         addMenuItem(new menuItem("Mute All", "jk", MuteAllCMD));
  1447.         addMenuItem(new menuItem("UnMute All", "dd", UnMuteAllCMD));
  1448.         addMenuItem(new menuItem("Delete Channel", "dc", DeleteCMD));
  1449.         //Add icons
  1450.         items.dd.showIcon("icon2", "icon2");
  1451.         items.jk.showIcon("icon3", "icon1");
  1452.         items.dc.showIcon("icon1", "icon1");
  1453.         setNoneExceptFilter(new Array(divName));
  1454.     }
  1455.     setMultiPopUpMenus(channelPopUpMenu);
  1456.     activatePopUpMenuBy(0, 2);
  1457. }
  1458.  
  1459. function CheckUserLogin()
  1460. {
  1461.     var url = "/api2/viv_portal_signin.php";
  1462.     vivoxAjaxCallback(url, "junk", "CheckUserLoginCB");
  1463. }
  1464.  
  1465. function CheckUserLoginCB(responseText, containerid, responseXML) {
  1466.     var status = processCMDCallback(responseText, containerid, responseXML);
  1467.     if (status ){
  1468.         //alert("startajaxtabs");
  1469.         //startajaxtabs("maintab");
  1470.     }
  1471.     else {
  1472.         LoadLoginPage();
  1473.     }
  1474. }
  1475.  
  1476. function processCMDCallback(responseText, containerid, responseXML) {
  1477.     var xml = new XMLDoc(responseText, null);
  1478.     var status = xml.selectNodeText("/level0/status");
  1479.     if (status == "ERR") {
  1480.         var code = xml.selectNodeText("/level0/body/code");
  1481.         var msg = xml.selectNodeText("/level0/body/msg");
  1482.         status = status + " ("+code+") -> "+ msg;
  1483.         clearStatusDiv();
  1484.         alert(status);
  1485.         return false;
  1486.     } else {
  1487.         clearStatusDiv();
  1488.         return true;
  1489.     }
  1490. }
  1491.  
  1492. function LoadLoginPage(){
  1493.     var url='/login.php';
  1494.     vivoxAjaxCallback(url, "middle", "LoadLoginPageCB");
  1495. }
  1496. function LoadLoginPageCB(responseText, containerid, responseXML) {
  1497.     var status = processLoadPage(responseText, containerid, responseXML);
  1498.     return status;
  1499. }
  1500.  
  1501.  
  1502. function processAjaxResponse(responseText, statusDiv, contentDiv, ahahDiv ){
  1503.     var xml = new XMLDoc(responseText, null);
  1504.     var status = xml.selectNodeText("/level0/status");
  1505.     var contentElement = document.getElementById(contentDiv);
  1506.     if (status == "ERR"){
  1507.         var code = xml.selectNodeText("/level0/body/code");
  1508.         var msg = xml.selectNodeText("/level0/body/msg");
  1509.         status = status + " ("+code+") -> "+ msg;
  1510.         alert(status);
  1511.         return false;
  1512.     }
  1513.     else
  1514.     {
  1515.         clearStatusDiv();
  1516.         var ahahHTMLNode = xml.selectNode("/level0/ahah-response");
  1517.         var ahahDivNode = ahahHTMLNode.getElementById(ahahDiv);
  1518.         // Get display status;
  1519.         if ( ahahDivNode )
  1520.           var ahahHTML = klugeNode.getUnderlyingXMLText();
  1521.         if ( contentElement )
  1522.           contentElement.innerHTML= ahahHTML;
  1523.         var ahahScriptNode = xml.selectNode("/level0/ahah-response/ahah-script");
  1524.         if ( ahahScriptNode ){
  1525.           var ahahScript = ahahScriptNode.getUnderlyingXMLText();
  1526.           eval(ahahScriptNode.getText());
  1527.         }  
  1528.         return true;
  1529.     }
  1530. }
  1531.  
  1532. function generateReportCB(responseText, statusDiv, contentDiv, ahahDivID ) {
  1533.     var status = vivProcessCallback(responseText, statusDiv, contentDiv, ahahDivID);
  1534.     return status;
  1535. }
  1536.  
  1537. function generateReport(type, form)
  1538. {
  1539.    
  1540.     var url = '/ahah/ahah_stat_report.php?type='+encodeURIComponent(type);
  1541.     url = url + '&mode='+encodeURIComponent(form.mode.value);
  1542.     url = url + '&start='+encodeURIComponent(form.start.value);
  1543.     url = url + '&end='+encodeURIComponent(form.end.value);
  1544.     url = url + '&freq='+encodeURIComponent(form.freq.value);
  1545.     if(type == 'general' && form.freq.value == 'quarter'){
  1546.        alert("15 minute intervals for general statistics are not available. Please select different frequency");
  1547.        return;
  1548.     }
  1549.     if ( form.mode.value == 'csv'){
  1550.         document.location = url;
  1551.         //  csv = window.open(url, "StatReports",
  1552.         // "height=550,width=600,location=no,menubar=no,resizable=yes,scrollbar=yes,toolbar=no,status=no,titlebar=no");
  1553.     } else {
  1554.         vivAjaxCallback(url, "generateReportCB", "statusDiv", "statResults", null);
  1555.     }
  1556. }
  1557.  
  1558. function generateCallReport(form)
  1559. {
  1560.     var url = '/ahah/ahah_call_reports.php';
  1561.     url = url + '?from='+encodeURIComponent(form.from.value);
  1562.     url = url + '&to='+encodeURIComponent(form.to.value);
  1563.     url = url + '&start='+encodeURIComponent(form.start.value);
  1564.     url = url + '&end='+encodeURIComponent(form.end.value);
  1565.     url = url + '&domain='+encodeURIComponent(form.domain.value);
  1566.     url = url + '&sipstatus='+encodeURIComponent(form.sipstatus.value);
  1567.     url = url + '&callstatus='+encodeURIComponent(form.callstatus.value);
  1568.     url = url + '&duration='+encodeURIComponent(form.duration.value);
  1569.     url2 = url + '&mode=check';
  1570.     url = url + '&mode='+encodeURIComponent(form.mode.value);    
  1571.     if ( form.mode.value == 'csv'){
  1572.         document.location = url;
  1573.         //csv = window.open(url, "CallReports", "height=550,width=600,location=no,menubar=no,resizable=yes,scrollbar=yes,toolbar=no,status=no,titlebar=no");
  1574.     } else {
  1575.         vivAjaxCallback(url2, "generateCallReportCB", "statusDiv", "callsResults", null);
  1576.         vivAjaxCallback(url, "generateCallReportCB", "statusDiv", "callsResults", null);
  1577.     }
  1578. }
  1579.  
  1580. function generateCallReportCB(responseText, statusDiv, contentDiv, ahahDivID ) {
  1581.     var status = vivProcessCallback(responseText, statusDiv, contentDiv, ahahDivID);
  1582.     return status;
  1583. }
  1584. function srchKeyPress(e, form) {
  1585.     var key= e.keyCode || e.which;
  1586.     if (key==13){
  1587.         return doAdvChSearch();
  1588.    }
  1589. }
  1590. function PlayRecording(chanID, filename, rec_id)
  1591. {
  1592.     var playURL;
  1593.     var player;
  1594.    
  1595.     playURL = '/player.php?chan_id='+chanID+'&filename='+filename+'&rec_id='+rec_id;
  1596.     player = window.open(playURL, "PlayRec"+rec_id, "height=550,width=600,location=no,menubar=no,resizable=yes,scrollbar=yes,toolbar=no,status=no,titlebar=no");
  1597.    
  1598. }
  1599.  
  1600. function checkSpecialChars(word){
  1601.   if (/[^a-zA-Z0-9_ ]/.test(word.value)) {
  1602.     alert("Please enter alphanumerics only");
  1603.     return false;
  1604.   }
  1605.   return true;
  1606. }
  1607. function setTitle(){
  1608.   window.document.title = browserTitle;
  1609. }
Add Comment
Please, Sign In to add comment