1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
  
     | 
    
      function genJabberXDataTable(x) {
	var html = '<input type=hidden name="jwchat_form_type" value="jabber:x:data">';
	if (x.getElementsByTagName('title').item(0))
		html += "<h1>"+x.getElementsByTagName('title').item(0).firstChild.nodeValue.replace(/\n/g,"<br>")+"</h1>";
	if (x.getElementsByTagName('instructions').item(0))
		html += x.getElementsByTagName('instructions').item(0).firstChild.nodeValue.replace(/\n/g,"<br>");
	if (!x.getElementsByTagName('field').length)
		return html;
	html += '<table width="100%">';
	for (var i=0; i<x.getElementsByTagName('field').length; i++) {
		var aField = x.getElementsByTagName('field').item(i);
 		html += "<tr>";
		switch (aField.getAttribute('type')) {
		case 'hidden':
			if (aField.firstChild && aField.firstChild.firstChild)
				html += "<td colspan=2><input type=hidden name='"+aField.getAttribute('var')+"' value='"+aField.firstChild.firstChild.nodeValue+"'></td>";
			break;
		case 'fixed':
			html += "<td colspan=2><b>"+aField.firstChild.firstChild.nodeValue+"</b></td>";
			break;
		case 'jid-single':
		case 'text-single':
			html += "<th>" + aField.getAttribute('label') + "</th>";
			html += "<td>";
			html += "<input type=text size='24' name='" + aField.getAttribute('var') + "'";
			if (aField.firstChild && aField.firstChild.firstChild)
				html += " value='" + aField.firstChild.firstChild.nodeValue + "'";
			html += ">";
			html += "</td>";
			break;
		case 'text-private':
			html += "<th>" + aField.getAttribute('label') + "</th>";
			html += "<td>";
			html += "<input type=password size='24' name='" + aField.getAttribute('var') + "'";
			if (aField.firstChild && aField.firstChild.firstChild)
				html += " value='" + aField.firstChild.firstChild.nodeValue + "'";
			html += ">";
			html += "</td>";
			break;
		case 'jid-multi':
		case 'text-multi':
			html += "<th valign=top>" + aField.getAttribute('label') + "</th>";
			html += "<td>";
			html += "<textarea cols=24 rows=4 name='" + aField.getAttribute('var') + "'>";
			if (aField.firstChild && aField.firstChild.firstChild)
				html += aField.firstChild.firstChild.nodeValue;
			html += "</textarea>";
			html += "</td>";
			break;
		case 'list-single':
			html += "<th>" + aField.getAttribute('label') + "</th>";
			html += "<td>";
			html += "<select name='" + aField.getAttribute('var') + "'>";
			if (aField.childNodes.length) {
				var val;
				for (var j=0; j<aField.childNodes.length; j++) 
					if (aField.childNodes.item(j).nodeName == 'value') 
						val = aField.childNodes.item(j).firstChild.nodeValue;
				for (var j=0; j<aField.childNodes.length; j++) {
					if (aField.childNodes.item(j).nodeName == 'option') {
						html += "<option value='" + aField.childNodes.item(j).firstChild.firstChild.nodeValue + "'";
 						if (val && val == aField.childNodes.item(j).firstChild.firstChild.nodeValue)
 							html += " selected";
						html += ">"+aField.childNodes.item(j).getAttribute('label')+"</option>";
					}
				}
			}
			html += "</select>";
			html += "</td>";
			break;
		case 'list-multi':
			html += "<th>" + aField.getAttribute('label') + "</th>";
			html += "<td>";
			html += "<select name='" + aField.getAttribute('var') + "' "
				+ "multiple='true'>";
			if (aField.childNodes.length) {
				for (var j=0; j<aField.childNodes.length; j++) {
					if (aField.childNodes.item(j).nodeName == 'option') {
						html += "<option value='" + aField.childNodes.item(j).firstChild.firstChild.nodeValue + "'";
// 						if (x.o[i].value == x.o[i].o[j].value)
// 							html += " selected";
						html += ">"+aField.childNodes.item(j).getAttribute('label')+"</option>";
					}
				}
			}
			html += "</select>";
			html += "</td>";
			break;
		case 'boolean':
			html += "<th>" + aField.getAttribute('label') + "</th>";
			html += "<td>";
			html += "<input type=checkbox name='" +aField.getAttribute('var') + "'";
			if (aField.firstChild && aField.firstChild.firstChild && aField.firstChild.firstChild.nodeValue == '1')
				html += " checked";
			html += ">";
			html += "</td>";
			break;
		default:
			srcW.Debug.log("unknown type: " + aField.getAttribute('type'),1);
			break;
		}
 		html += "</tr>";
	}
	html += "</table>";
	return html;
}
function genJabberXDataReply(form) {
	var xml = "<x xmlns='jabber:x:data' type='submit'>";
	var els = form.elements;
	for (var i=0; i<els.length; i++) {
		if (els[i].name == '' || els[i].value == '' || els[i].name == 'jwchat_form_type')
			continue;
		xml += "<field var='" +els[i].name + "'><value>";
		if (els[i].type == 'checkbox')
			xml += (els[i].checked) ? '1':'0';
		else
			xml += els[i].value;
		xml += "</value></field>";
	}
	xml += "</x>";
	return xml;
}
 
     |