/js/freshdns.js

http://freshdns.googlecode.com/ · JavaScript · 657 lines · 617 code · 38 blank · 2 comment · 16 complexity · 9ce5bd256f36e5510bc136ed2bfe8afe MD5 · raw file

  1. var timeoutInMilisec = 100;
  2. function resultError (request)
  3. {
  4. alert('Error ' + request.status + ' -- ' + request.statusText + ' -- ' + request.responseText);
  5. }
  6. function resultDebug (request)
  7. {
  8. document.getElementById("debug").style.display = 'inline';
  9. document.getElementById("debug").innerHTML = request.responseText;
  10. }
  11. function dummy ()
  12. {
  13. return true;
  14. }
  15. function succesFailed (request)
  16. {
  17. if (request.readyState==4)
  18. {
  19. // JAVASCRIPT DEBUG INFORMATION
  20. //document.getElementById("query").innerHTML = request.responseText;
  21. var jsonData = eval('('+request.responseText+')');
  22. if(jsonData.status=="success")
  23. {
  24. alert(jsonData.text);
  25. }else
  26. {
  27. alert("Failed: "+jsonData.text);
  28. }
  29. if(jsonData.reload=="yes")
  30. {
  31. window.location.reload();
  32. }
  33. }
  34. }
  35. function displayList (id, name, records, fullname, userId)
  36. {
  37. output = '<tr><td>[ <a href="javascript:deleteZone(\''+id+'\')">delete zone</a> ]</td>';
  38. output += '<td><a href="javascript:editDomain('+id+');">'+name+'</a></td>';
  39. output += '<td>'+records+'</td>';
  40. output += '<td><a href="javascript:ownersList(\''+userId+'\');">'+fullname+'</a></td></tr>';
  41. return output;
  42. }
  43. function list (letter)
  44. {
  45. new Ajax.Request(baseurl+"?p=letterlist&letter="+letter,
  46. {
  47. method:"get",
  48. asynchronous:true,
  49. onSuccess:showList,
  50. onFailure:resultError
  51. });
  52. }
  53. function showList (request)
  54. {
  55. if (request.readyState==4) {
  56. document.getElementById("body").innerHTML = '';
  57. var jsonData = eval('('+request.responseText+')');
  58. var output = '<table width="800">';
  59. if(request.responseText.length==2)
  60. {
  61. output += '<tr><td>No results found</td></tr>';
  62. }
  63. for(i=0; i<jsonData.length; i++)
  64. {
  65. output += displayList (jsonData[i].id, jsonData[i].name, jsonData[i].records, jsonData[i].fullname, jsonData[i].userId);
  66. }
  67. output += '</table>';
  68. document.getElementById("body").innerHTML = output;
  69. }
  70. }
  71. function liveSearchStart()
  72. {
  73. new Ajax.Request(baseurl+"?p=livesearch&q="+document.getElementById('livesearch').value,
  74. {
  75. method:"get",
  76. asynchronous:true,
  77. onSuccess:liveSearchResults,
  78. onFailure:resultError
  79. });
  80. }
  81. function liveSearchResults (request)
  82. {
  83. if (request.readyState==4) {
  84. document.getElementById("body").innerHTML = '';
  85. var jsonData = eval('('+request.responseText+')');
  86. var output = '<table width="800">';
  87. if(request.responseText.length==2)
  88. {
  89. output += '<tr><td>No results found</td></tr>';
  90. }
  91. for(i=0; i<jsonData.length; i++)
  92. {
  93. output += displayList (jsonData[i].id, jsonData[i].name, jsonData[i].records, jsonData[i].fullname, jsonData[i].userId);
  94. }
  95. output += '</table>';
  96. document.getElementById("body").innerHTML = output;
  97. }
  98. }
  99. function ownersList (userId)
  100. {
  101. new Ajax.Request(baseurl+"?p=ownerslist&userId="+userId,
  102. {
  103. method:"get",
  104. asynchronous:true,
  105. onSuccess:showOwnersList,
  106. onFailure:resultError
  107. });
  108. }
  109. function showOwnersList (request)
  110. {
  111. if (request.readyState==4) {
  112. document.getElementById("body").innerHTML = '';
  113. var jsonData = eval('('+request.responseText+')');
  114. var output = '<table width="800">';
  115. if(request.responseText.length==2)
  116. {
  117. output += '<tr><td>No results found</td></tr>';
  118. }
  119. for(i=0; i<jsonData.length; i++)
  120. {
  121. output += displayList (jsonData[i].id, jsonData[i].name, jsonData[i].records, jsonData[i].fullname, jsonData[i].userId);
  122. }
  123. output += '</table>';
  124. document.getElementById("body").innerHTML = output;
  125. }
  126. }
  127. function deleteZone (domainId)
  128. {
  129. if(confirm("Are you sure you want to delete this domain?"))
  130. {
  131. new Ajax.Request(baseurl+"?p=deleteZone&domainId="+escape(domainId),
  132. {
  133. method:"get",
  134. asynchronous:true,
  135. onSuccess:succesFailed,
  136. onFailure:resultError
  137. });
  138. }
  139. }
  140. function editDomain (domainId)
  141. {
  142. new Ajax.Request(baseurl+"?p=getDomainInfo&domainId="+escape(domainId),
  143. {
  144. method:"get",
  145. asynchronous:true,
  146. onSuccess:editDomainWindow,
  147. onFailure:resultError
  148. });
  149. }
  150. function editDomainWindow (request)
  151. {
  152. if (request.readyState==4)
  153. {
  154. if(request.responseText=='failed')
  155. {
  156. alert("The action you performed failed.");
  157. }else
  158. {
  159. var jsonData = eval('('+request.responseText+')');
  160. new Ajax.Request(baseurl+"?p=getOwners",
  161. {
  162. method:"get",
  163. asynchronous:true,
  164. onSuccess:changeOwnersSelect,
  165. onFailure:resultError
  166. });
  167. var result = '<p><table>';
  168. result += ' <tr>';
  169. result += ' <td><h1>Edit domain :: '+jsonData.domain.name+' ('+jsonData.records.length+')</h1></td>';
  170. result += ' </tr>';
  171. result += ' <tr>';
  172. result += ' <td><form name="editDomain" action="javascript:saveAllRecords(document.editDomain);">';
  173. result += ' <input type="hidden" id="domainId" value="'+jsonData.domain.id+'" /><table>';
  174. result += ' <tr><td><b>name</b></td><td><b>type</b></td><td><b>content</b></td><td><b>prio</b></td><td><b>ttl</b></td><td>&nbsp;</td><td>&nbsp;</td></tr>';
  175. for(i=0; i<jsonData.records.length; i++)
  176. {
  177. var r = jsonData.records[i];
  178. result += '<tr>';
  179. result += '<td><input type="text" value="'+r.name+'" id="name['+i+']"><input type="hidden" value="'+r.id+'" id="id['+i+']"></td>';
  180. result += '<td><input type="text" size="4" value="'+r.type+'" id="type['+i+']"></td>';
  181. result += '<td><input type="text" size="50" value="'+r.content+'" id="content['+i+']"></td>';
  182. result += '<td><input type="text" size="2" value="'+r.prio+'" id="prio['+i+']"></td>';
  183. result += '<td><input type="text" size="4" value="'+r.ttl+'" id="ttl['+i+']"></td>';
  184. result += '<td><input type="button" onclick="removeRecord('+r.id+', '+jsonData.domain.id+');setTimeout(\'editDomain('+jsonData.domain.id+');\', '+timeoutInMilisec+');" value="delete record" id="delete['+i+']"></td>';
  185. result += '<td><input type="button" onclick="javascript:saveRecord('+jsonData.domain.id+', document.getElementById(\'id['+i+']\').value, ';
  186. result += 'document.getElementById(\'name['+i+']\').value, document.getElementById(\'type['+i+']\').value, ';
  187. result += 'document.getElementById(\'content['+i+']\').value, document.getElementById(\'prio['+i+']\').value, ';
  188. result += 'document.getElementById(\'ttl['+i+']\').value); setTimeout(\'editDomain('+jsonData.domain.id+');\', '+timeoutInMilisec+');" id="save['+i+']" value="save"></td>';
  189. result += '</tr>';
  190. }
  191. result += ' <tr><td colspan="7"><input type="submit" value="save all changes"></td></tr></table></form></td>';
  192. result += ' </tr>';
  193. result += ' <tr>';
  194. result += ' <td><h1>Add a record</h1></td>';
  195. result += ' </tr>';
  196. result += ' <tr>';
  197. result += ' <td><table>';
  198. result += ' <tr><td><b>name</b></td><td><b>type</b></td><td><b>content</b></td><td><b>prio</b></td><td><b>ttl</b></td><td>&nbsp;</td></tr>';
  199. result += ' <tr><td><input type="text" value="'+r.name+'" id="new[name]" /></td>';
  200. result += ' <td><select id="new[type]"><option selected="selected" value="A">A</option>';
  201. result += ' <option value="AAAA">AAAA</option><option value="CNAME">CNAME</option>';
  202. result += ' <option value="HINFO">HINFO</option><option value="MX">MX</option>';
  203. result += ' <option value="NAPTR">NAPTR</option><option value="NS">NS</option>';
  204. result += ' <option value="PTR">PTR</option><option value="SOA">SOA</option>';
  205. result += ' <option value="TXT">TXT</option><option value="URL">URL</option>';
  206. result += ' <option value="SRV">SRV</option><option value="MBOXFW">MBOXFW</option></select></td>';
  207. result += ' <td><input type="content" size="50" value="" id="new[content]" /></td>';
  208. result += ' <td><input type="prio" size="2" value="0" id="new[prio]" /"></td>';
  209. result += ' <td><input type="ttl" size="4" value="3600" id="new[ttl]" /></td>';
  210. result += ' <td><input type="button" onclick="newRecord('+jsonData.domain.id+', document.getElementById(\'new[name]\').value, ';
  211. result += 'document.getElementById(\'new[type]\').value, document.getElementById(\'new[content]\').value, ';
  212. result += 'document.getElementById(\'new[prio]\').value, document.getElementById(\'new[ttl]\').value); setTimeout(\'editDomain('+jsonData.domain.id+');\', '+timeoutInMilisec+');" id="new[save]" value="save" />';
  213. result += ' </tr></table></td>';
  214. result += ' </tr>';
  215. if(userlevel >= 5)
  216. {
  217. result += ' <tr>';
  218. result += ' <td><h1>Transfer domain</h1></td>';
  219. result += ' </tr>';
  220. result += ' <tr>';
  221. result += ' <td>Transfer domain to <select id="owner"></select>';
  222. result += ' <input type="button" onclick="transferDomain('+jsonData.domain.id+', document.getElementById(\'owner\').value);" value="transfer" /></td>';
  223. result += ' </tr>';
  224. result += '</table></p>';
  225. }
  226. document.getElementById('body').innerHTML = result;
  227. }
  228. }
  229. }
  230. function saveAllRecords (input)
  231. {
  232. var postBody = 'dummy=true';
  233. for(i=0; i<input.length; i++)
  234. {
  235. var ident = input[i].id;
  236. var value = input[i].value;
  237. if(ident == "domainId")
  238. {
  239. var domainId = value;
  240. }
  241. postBody += '&'+escape(ident)+'='+escape(value);
  242. }
  243. new Ajax.Request(baseurl+"?p=saveAllRecords",
  244. {
  245. method:"post",
  246. postBody:postBody,
  247. asynchronous:true,
  248. onSuccess:succesFailed,
  249. onFailure:resultError
  250. });
  251. setTimeout('editDomain('+domainId+');', timeoutInMilisec);
  252. }
  253. function transferDomain (domainId, owner)
  254. {
  255. new Ajax.Request(baseurl+"?p=transferDomain",
  256. {
  257. method:"post",
  258. postBody:"domainId="+escape(domainId)+"&owner="+escape(owner),
  259. asynchronous:true,
  260. onSuccess:succesFailed,
  261. onFailure:resultError
  262. });
  263. }
  264. function removeRecord (recordId, domainId)
  265. {
  266. if(confirm("Are you sure you want to delete the record?"))
  267. {
  268. new Ajax.Request(baseurl+"?p=removeRecord&recordId="+escape(recordId)+"&domainId="+escape(domainId),
  269. {
  270. method:"get",
  271. asynchronous:true,
  272. onSuccess:succesFailed,
  273. onFailure:resultError
  274. });
  275. }
  276. }
  277. function saveRecord(domainId, recordId, name, type, content, prio, ttl)
  278. {
  279. new Ajax.Request(baseurl+"?p=saveRecord",
  280. {
  281. method:"post",
  282. postBody:"domainId="+escape(domainId)+"&recordId="+escape(recordId)+"&name="+escape(name)+"&type="+escape(type)+"&content="+escape(content)+"&prio="+escape(prio)+"&ttl="+escape(ttl),
  283. asynchronous:true,
  284. onSuccess:succesFailed,
  285. onFailure:resultError
  286. });
  287. }
  288. function newRecord (domainId, name, type, content, prio, ttl)
  289. {
  290. new Ajax.Request(baseurl+"?p=newRecord",
  291. {
  292. method:"post",
  293. postBody:"domainId="+escape(domainId)+"&name="+escape(name)+"&type="+escape(type)+"&content="+escape(content)+"&prio="+escape(prio)+"&ttl="+escape(ttl),
  294. asynchronous:true,
  295. onSuccess:succesFailed,
  296. onFailure:resultError
  297. });
  298. }
  299. function newDomain ()
  300. {
  301. new Ajax.Request(baseurl+"?p=getOwners",
  302. {
  303. method:"get",
  304. asynchronous:true,
  305. onSuccess:changeOwnersSelect,
  306. onFailure:resultError
  307. });
  308. new Ajax.Request(baseurl+"?p=getTemplates",
  309. {
  310. method:"get",
  311. asynchronous:true,
  312. onSuccess:changeTemplateSelect,
  313. onFailure:resultError
  314. });
  315. var result = '<table>';
  316. result += '<tr>';
  317. result += ' <td colspan="2"><h1>Add a domain</h1></td>';
  318. result += '</tr>';
  319. result += '<tr><td>Domain name:</td><td><input type="text" id="domain" /></td></tr>';
  320. result += '<tr><td>WEB IP:</td><td><input type="text" id="webIP" /></td></tr>';
  321. result += '<tr><td>Mail IP:</td><td><input type="text" id="mailIP" /></td></tr>';
  322. result += '<tr><td>Owner:</td><td><select id="owner"></select></td></tr>';
  323. result += '<tr><td>Template:</td><td><select id="template"></select></td></tr>';
  324. result += '<tr><td>&nbsp;</td><td><input type="button" id="add" value="Add domain" onClick="saveNewRecord(document.getElementById(\'domain\').value, ';
  325. result += 'document.getElementById(\'webIP\').value, document.getElementById(\'mailIP\').value, document.getElementById(\'owner\').value, ';
  326. result += 'document.getElementById(\'template\').value);" /></td></tr>';
  327. result += '</table>';
  328. document.getElementById('body').innerHTML = result;
  329. }
  330. function bulkNewDomain ()
  331. {
  332. new Ajax.Request(baseurl+"?p=getOwners",
  333. {
  334. method:"get",
  335. asynchronous:true,
  336. onSuccess:changeOwnersSelect,
  337. onFailure:resultError
  338. });
  339. new Ajax.Request(baseurl+"?p=getTemplates",
  340. {
  341. method:"get",
  342. asynchronous:true,
  343. onSuccess:changeTemplateSelect,
  344. onFailure:resultError
  345. });
  346. var result = '<table>';
  347. result += '<tr>';
  348. result += ' <td colspan="2"><h1>Add multiple domains</h1></td>';
  349. result += '</tr>';
  350. result += '<tr><td>Domain names:<br />(one domain per line)</td><td><textarea id="domains" rows="10" cols="50"></textarea></td></tr>';
  351. result += '<tr><td>WEB IP:</td><td><input type="text" id="webIP" /></td></tr>';
  352. result += '<tr><td>Mail IP:</td><td><input type="text" id="mailIP" /></td></tr>';
  353. result += '<tr><td>Owner:</td><td><select id="owner"></select></td></tr>';
  354. result += '<tr><td>Template:</td><td><select id="template"></select></td></tr>';
  355. result += '<tr><td>&nbsp;</td><td><input type="button" id="add" value="Add domains" onClick="saveNewDomains(document.getElementById(\'domains\').value, ';
  356. result += 'document.getElementById(\'webIP\').value, document.getElementById(\'mailIP\').value, document.getElementById(\'owner\').value, ';
  357. result += 'document.getElementById(\'template\').value);" /></td></tr>';
  358. result += '</table>';
  359. document.getElementById('body').innerHTML = result;
  360. }
  361. function changeOwnersSelect (request)
  362. {
  363. if (request.readyState==4)
  364. {
  365. var jsonData = eval('('+request.responseText+')');
  366. document.getElementById('owner').options.length=0;
  367. for(i=0; i<jsonData.length; i++)
  368. {
  369. if(userlevel<5)
  370. {
  371. if(myUserId==jsonData[i].id)
  372. {
  373. document.getElementById('owner').options[i]=new Option(jsonData[i].fullname, jsonData[i].id, false, true);
  374. }
  375. }else
  376. {
  377. document.getElementById('owner').options[i]=new Option(jsonData[i].fullname, jsonData[i].id, false, false);
  378. }
  379. }
  380. }
  381. }
  382. function changeTemplateSelect (request)
  383. {
  384. if (request.readyState==4)
  385. {
  386. var jsonData = eval('('+request.responseText+')');
  387. document.getElementById('template').options.length=0;
  388. for(i=0; i<jsonData.length; i++)
  389. {
  390. document.getElementById('template').options[i]=new Option(jsonData[i], jsonData[i], false, false);
  391. }
  392. }
  393. }
  394. function saveNewRecord (domain, webIP, mailIP, owner, template)
  395. {
  396. new Ajax.Request(baseurl+"?p=newDomain",
  397. {
  398. method:"post",
  399. postBody:"domain="+escape(domain)+"&webIP="+escape(webIP)+"&mailIP="+escape(mailIP)+"&owner="+escape(owner)+"&template="+escape(template),
  400. asynchronous:true,
  401. onSuccess:succesFailed,
  402. onFailure:resultError
  403. });
  404. }
  405. function saveNewDomains (domains, webIP, mailIP, owner, template)
  406. {
  407. new Ajax.Request(baseurl+"?p=newDomains",
  408. {
  409. method:"post",
  410. postBody:"domains="+escape(domains)+"&webIP="+escape(webIP)+"&mailIP="+escape(mailIP)+"&owner="+escape(owner)+"&template="+escape(template),
  411. asynchronous:true,
  412. onSuccess:succesFailed,
  413. onFailure:resultError
  414. });
  415. }
  416. function userAdmin ()
  417. {
  418. new Ajax.Request(baseurl+"?p=getOwners",
  419. {
  420. method:"get",
  421. asynchronous:true,
  422. onSuccess:showUserAdmin,
  423. onFailure:resultError
  424. });
  425. }
  426. function showUserAdmin (request)
  427. {
  428. if (request.readyState==4)
  429. {
  430. var jsonData = eval('('+request.responseText+')');
  431. var result = '<form name="addUserrrr"><table width="800">';
  432. for(i=0; i<jsonData.length; i++)
  433. {
  434. if(!(userlevel<5 && jsonData[i].id != myUserId))
  435. {
  436. result += '<tr>';
  437. result += ' <td>[ <a onclick="deleteUser('+jsonData[i].id+');setTimeout(\'userAdmin();\', '+timeoutInMilisec+');">delete user</a> ]</td>';
  438. result += ' <td><a href="javascript:editUser('+jsonData[i].id+');">'+jsonData[i].fullname+'</a></td>';
  439. result += ' <td>'+jsonData[i].level+'</td>';
  440. result += '</tr>';
  441. }
  442. }
  443. result += '<tr><td colspan="3">&nbsp;</td></tr>';
  444. result += '<tr><td colspan="3"><h1>Add a user</h1></td></tr>';
  445. result += '<tr><td>Username</td><td colspan="2"><input type="text" id="username"></td></tr>';
  446. result += '<tr><td>Password</td><td colspan="2"><input type="text" id="password"></td></tr>';
  447. result += '<tr><td>Password check</td><td colspan="2"><input type="text" id="passwordcheck"></td></tr>';
  448. result += '<tr><td>Full name</td><td colspan="2"><input type="text" id="fullname"></td></tr>';
  449. result += '<tr><td>E-mail</td><td colspan="2"><input type="text" id="email"></td></tr>';
  450. result += '<tr><td>Description</td><td colspan="2"><input type="text" id="description"></td></tr>';
  451. result += '<tr><td>Max domains</td><td colspan="2"><input type="text" id="maxdomains" value="0"></td></tr>';
  452. result += '<tr><td>Level</td><td colspan="2"><select id="level"><option value="1" selected="selected">normal user</option>';
  453. result += '<option value="5">moderator</option><option value="10">administrator</option></td></tr>';
  454. result += '<tr><td>Active</td><td colspan="2">Yes <input type="radio" name="activeBool" id="activeBool1" value="1" checked="checked" /> No <input type="radio" name="activeBool" id="activeBool0" value="0" /></td></tr>';
  455. result += '<tr><td colspan="3"><input type="button" id="save" value="Add user" onclick="addUser(';
  456. result += ' document.getElementById(\'username\').value, document.getElementById(\'password\').value, document.getElementById(\'passwordcheck\').value,';
  457. result += ' document.getElementById(\'fullname\').value, document.getElementById(\'email\').value, document.getElementById(\'description\').value,';
  458. result += ' document.getElementById(\'level\').value, checkActiveBool(document.getElementById(\'activeBool1\'),document.getElementById(\'activeBool0\')),document.getElementById(\'maxdomains\').value);setTimeout(\'userAdmin();\', '+timeoutInMilisec+');"></td></tr>';
  459. result += '</table></form>';
  460. document.getElementById("body").innerHTML = result;
  461. }
  462. }
  463. function checkActiveBool (bool0, bool1)
  464. {
  465. if (bool0.checked)
  466. {
  467. return bool0.value;
  468. }else
  469. {
  470. return bool1.value;
  471. }
  472. }
  473. function deleteUser (userId)
  474. {
  475. if(confirm("Are you sure you want to delete this user, and all it's data?"))
  476. {
  477. new Ajax.Request(baseurl+"?p=deleteUser",
  478. {
  479. method:"post",
  480. postBody:"userId="+userId,
  481. asynchronous:true,
  482. onSuccess:succesFailed,
  483. onFailure:resultError
  484. });
  485. }
  486. }
  487. function editUser (userId)
  488. {
  489. new Ajax.Request(baseurl+"?p=getUser",
  490. {
  491. method:"post",
  492. postBody:"userId="+userId,
  493. asynchronous:true,
  494. onSuccess:showEditUser,
  495. onFailure:resultError
  496. });
  497. }
  498. function showEditUser (request)
  499. {
  500. if (request.readyState==4)
  501. {
  502. var jsonData = eval('('+request.responseText+')');
  503. var result = '<table width="800"><input type="hidden" id="userId" value="'+jsonData.id+'">';
  504. result += '<tr><td>Username</td><td><input type="text" id="username" value="'+jsonData.username+'"></td></tr>';
  505. result += '<tr><td>Password</td><td><input type="password" id="password" value=""></td></tr>';
  506. result += '<tr><td>Full name</td><td><input type="text" id="fullname" value="'+jsonData.fullname+'"></td></tr>';
  507. result += '<tr><td>E-mail</td><td><input type="text" id="email" value="'+jsonData.email+'"></td></tr>';
  508. result += '<tr><td>Description</td><td><textarea id="description">'+jsonData.description+'</textarea></td></tr>';
  509. result += '<tr><td>Max domains</td><td colspan="2"><input type="text" id="maxdomains" value="'+jsonData.maxdomains+'"></td></tr>';
  510. result += '<tr><td>Level</td><td><input type="text" id="level" value="'+jsonData.level+'"></td></tr>';
  511. result += '<tr><td>Active</td><td><input type="text" id="active" value="'+jsonData.active+'"></td></tr>';
  512. result += '<tr><td><input type="button" name="save" value="Opslaan" onclick="javascript:saveUser(';
  513. result += 'document.getElementById(\'userId\').value, document.getElementById(\'username\').value, document.getElementById(\'password\').value,';
  514. result += ' document.getElementById(\'fullname\').value, document.getElementById(\'email\').value, document.getElementById(\'description\').value,';
  515. result += ' document.getElementById(\'level\').value, document.getElementById(\'active\').value, document.getElementById(\'maxdomains\').value);"></td><td></td></tr>';
  516. result += '</table>';
  517. document.getElementById("body").innerHTML = result;
  518. }
  519. }
  520. function addUser (username, password, passwordcheck, fullname, email, description, level, active, maxdomains)
  521. {
  522. new Ajax.Request(baseurl+"?p=addUser",
  523. {
  524. method:"post",
  525. postBody:"username="+username+"&password="+password+"&passwordcheck="+passwordcheck+"&fullname="+fullname+"&email="+email+"&description="+description+"&level="+level+"&active="+active+"&maxdomains="+maxdomains,
  526. asynchronous:true,
  527. onSuccess:succesFailed,
  528. onFailure:resultError
  529. });
  530. }
  531. function saveUser (userId, username, password, fullname, email, description, level, active, maxdomains)
  532. {
  533. new Ajax.Request(baseurl+"?p=editUser",
  534. {
  535. method:"post",
  536. postBody:"userId="+userId+"&username="+username+"&password="+password+"&fullname="+fullname+"&email="+email+"&description="+description+"&level="+level+"&active="+active+"&maxdomains="+maxdomains,
  537. asynchronous:true,
  538. onSuccess:succesFailed,
  539. onFailure:resultError
  540. });
  541. }
  542. function loginForm ()
  543. {
  544. var result = '<p><form method="post" action=\'javascript:login(document.getElementById("usernamefield").value, document.getElementById("passwordfield").value);\'><table>';
  545. result += ' <tr>';
  546. result += ' <td rowspan="4" width="70"><img src="images/agent.png" alt="Please login" /></td>';
  547. result += ' <td colspan="3"><b>Login<span id="infoHead"></span></b></td>';
  548. result += ' </tr>';
  549. result += ' <tr>';
  550. result += ' <td>Username:</td>';
  551. result += ' <td><input type="text" id="usernamefield" tabindex="1" /></td>';
  552. result += ' <td rowspan="2"><img src="images/forward.png" id="loginstatus" alt="login status" /></td>';
  553. result += ' </tr>';
  554. result += ' <tr>';
  555. result += ' <td>Password:</td>';
  556. result += ' <td><input type="password" id="passwordfield" tabindex="2" /></td>';
  557. result += ' </tr>';
  558. result += ' <tr>';
  559. result += ' <td colspan="2"><input type="submit" value="login" tabindex="3" id="loginBtn" /></td>';
  560. result += ' </tr>';
  561. result += '</table></form></p>';
  562. document.getElementById('login').innerHTML = result;
  563. }
  564. function login (username, password)
  565. {
  566. new Ajax.Request(baseurl+"?p=doLogin",
  567. {
  568. method:"post",
  569. postBody:"username="+escape(username)+"&password="+escape(password),
  570. asynchronous:true,
  571. onSuccess:succesFailed,
  572. onFailure:resultError
  573. });
  574. }