function getEditObject(descriptor){
	var index;
	for(index=0;index<descriptor.fields.length;++index){
		if(descriptor.fields[index].transform!=null){
			descriptor.source[descriptor.fields[index].property]=descriptor.fields[index].transform(document.getElementById(descriptor.fields[index].id)[descriptor.fields[index].elementProperty]);
		}else{
			descriptor.source[descriptor.fields[index].property]=document.getElementById(descriptor.fields[index].id)[descriptor.fields[index].elementProperty];
		}
	}
}
function setEditObject(descriptor){
	var index;
	for(index=0;index<descriptor.fields.length;++index){
		document.getElementById(descriptor.fields[index].id)[descriptor.fields[index].elementProperty]=descriptor.source[descriptor.fields[index].property];
	}
}
function createEditObjectContent(descriptor){
		var content = "";
		content += "<h1>"+descriptor.title+"</h1>"; 
		var index;
		for(index=0;index<descriptor.fields.length;++index){
			content += "<p>";
			content += descriptor.fields[index].label;
			switch(descriptor.fields[index].type){
				case "select":
					content += "<select id=\""+descriptor.fields[index].id+"\">";
					for(var index2=descriptor.fields[index].minimumValue;index2<=descriptor.fields[index].maximumValue;++index2){
						content+="<option value=\""+index2+"\">";
						content+=descriptor.fields[index].transform(index2);
						content+="</option>";
					}
					content += "</select>";
					break;
				case "textarea":
					content += "<br/><textarea id=\""+descriptor.fields[index].id+"\"></textarea>";
					break;
				default:
					content += "<input id=\""+descriptor.fields[index].id+"\" type=\""+descriptor.fields[index].type+"\"/>";
					break;
			}
			content += "</p>";
		}
		content += "<p><button onclick=\""+descriptor.events.onapply+"("+descriptor.index+");\">Done</button>";
		content += "<button onclick=\""+descriptor.events.oncancel+"();\">Cancel</button></p>";
		return content;
}
function createEditObjectListContent(descriptor){
		var content="<h1>"+descriptor.title+"</h1>";
		content+="<table border=\"border\">";
		content+="<tr>"
		var index; 
		var index2;
		for(index=0;index<descriptor.fields.length;++index){
			content+="<th>"+descriptor.fields[index].header+"</th>";
		}
		content+="<th>Modify</th><th>Delete</th></tr>";
		for(index=0;index<descriptor.source.length;++index){
			content+="<tr>";
			for(index2=0;index2<descriptor.fields.length;++index2){
				content+="<td>";
				if(descriptor.fields[index2].transform!=null){
					content+=descriptor.fields[index2].transform(descriptor.source[index][descriptor.fields[index2].property],descriptor.source[index]);
				}else{
					content+=descriptor.source[index][descriptor.fields[index2].property];
				}
				content+="</td>";
			}
			content+="<td><button onclick=\""+descriptor.events.onmodify+"("+index+",false);\">Modify</button></td>";
			if(index==descriptor.source.length-1){
				content+="<td><button onclick=\""+descriptor.events.ondelete+"()\">Delete</button></td>";
			}else{
				content+="<td>&nbsp;</td>";
			}
			content+="</tr>";
		}
		content+="</table>";
		return content;
}
function createEditRoomObjectListContent(descriptor){
		var content="<h1>"+descriptor.title+"</h1>";
		content+="<table border=\"border\">";
		content+="<tr>"
		var index; 
		var index2;
		for(index=0;index<descriptor.fields.length;++index){
			content+="<th>"+descriptor.fields[index].header+"</th>";
		}
		content+="<th>Modify</th><th>Delete</th></tr>";
		for(index=0;index<descriptor.source.length;++index){
			content+="<tr>";
			for(index2=0;index2<descriptor.fields.length;++index2){
				content+="<td>";
				if(descriptor.fields[index2].transform!=null){
					content+=descriptor.fields[index2].transform(descriptor.source[index][descriptor.fields[index2].property],descriptor.source[index]);
				}else{
					content+=descriptor.source[index][descriptor.fields[index2].property];
				}
				content+="</td>";
			}
			content+="<td><button onclick=\""+descriptor.events.onmodify+"("+descriptor.room+","+index+",false);\">Modify</button></td>";
			if(index==descriptor.source.length-1){
				content+="<td><button onclick=\""+descriptor.events.ondelete+"("+descriptor.room+")\">Delete</button></td>";
			}else{
				content+="<td>&nbsp;</td>";
			}
			content+="</tr>";
		}
		content+="</table>";
		return content;
}