function toggleDOMBrowser(obj) {
	var domWindow = document.getElementById('domObjects');
	if(obj.value == 'Show DOM browser') {	
		obj.value = 'Hide DOM browser';
		domWindow.style.display = 'block';
	} else {
		obj.value = 'Show DOM browser';
		domWindow.style.display = 'none';
	}
}
function clickDomObject(name) {
	document.getElementById('domObject').value = name;
	loadDomObject(name);
}
function loadDomObject(name) {
  var iframeDoc = document.getElementById('iframe').contentWindow.document;	
  var mode = document.getElementById('domMode').options[document.getElementById('domMode').selectedIndex].text;
	
  if(navigator.userAgent.indexOf("Opera") > -1) {
  	if(name == 'document') {
		return false;
	}
  }
  if(name.match(/^java/)) {  
  	var java = getJavaObject();
  }
  
  if(mode == 'id') {
	  properties = name.split('.');
      var obj = iframeDoc.getElementById(properties[0]);
	  for(var i=1;i<properties.length;i++) {
	  	obj = obj[properties[i]];
	  }
  } else {
	  try {
	  	var obj = eval(name);  
	  } catch(e) {
	  	return false;
	  }
  }  
  
  var type = typeof(obj);
  
  if(name == '' || type == 'undefined') {
  	 document.getElementById('codeWindow').innerHTML = '';
	 return false;
  }

  var html = '<table id="domTable">';
  
  html += '<tr>';
  html += '<th>Name</th><th>Value</th>';
  html += '</tr>';
  
  var objs = name.split('.');
  
  html += '<tr>';
  html += '<td>';
  var objName = '';
  for(var i = 0; i<objs.length;i++) {
	if(i > 0 && i < objs.length) {
		objName += '.';
		html += '.';
	}
	objName += objs[i];
	html += '<a href="javascript:clickDomObject(\''+objName+'\');">'+ objs[i].escapeHTML() + '</a>';
  }
  html += '</td>';
  
  html += '<td>'+obj.toString().escapeHTML()+'</td>';  
  
  html += '</tr>';

  html += '<tr>';
  html += '<th>Details</th><th>Value</th>';
  html += '</tr>';

  if(type != 'object' && type != 'number') {

	  html += '<tr>';
	  
	  if(type == 'function') {
	  	html += '<td>Arguments</td>';
	  } else {
		html += '<td>Length</td>';		  
	  }
	  
	  html += '<td>'+obj.length+'</td>';  
	  
	  html += '</tr>';

  }


  html += '<tr>';
  html += '<td>Type</td>';
  
  html += '<td>'+type+'</td>';  
  
  html += '</tr>';    
  
  
  html += '<tr>';
  html += '<td>Permissions</td>';

  html += '<td>';
  try {
  	var val = eval(name);
	html += 'Read';
  } catch(error) {  	
  }
  
  try {
	eval(name + '+=' + '""');
	html += ',Write';
  } catch(error) {  	
  }
  html += '</td>';
  
  html += '</tr>';
    
  html += '<tr>';
  html += '<th>Type</th>';
  html += '<th>Object</th>';
  html += '</tr>';
  document.getElementById('codeWindow').innerHTML = '';
  
  var objProperties = new Array();
  var objTypes = new Array();  
  try {
	  for(var i in obj) {	  	  	  	
		  try {
			objProperties.push(i.escapeHTML());
		  } catch(err) {
			objTypes.push('DENIED');	    
		  }		
		  try {  
		  	var propType = typeof(obj[i]);
			if(propType == 'function') {
				var argLen = obj[i].length;
				propType += '(';
				for(i=0;i<argLen;i++) {
					propType += 'arg'+(i+1);
					if(i+1 < argLen) {
						propType += ',';
					}
				}
				propType += ')';
			} else if(propType == 'string') {
				propType += '('+ obj[i].length +')';
			} else if(type == 'number') {
				propType += '('+ obj[i].valueOf() + ')';												
			}
			objTypes.push(propType);	  
		  } catch(err) {
			objTypes.push('DENIED');	    
		  }	 
	  }
  } catch(err) {
  	objProperties.push(err);
	objTypes.push('DENIED');	    	
  }

  for(var i = 0;i<objProperties.length;i++) {
	var prop = objProperties[i];
	var currentObj = name + '.' + prop; 
	var type = objTypes[i];
	html += '<tr>';
    html += '<td>' + type + '</td>';
	if(type == "DENIED") {
		html += '<td>'+currentObj.escapeHTML()+'</td>';	
	} else {
		html += '<td><a href="javascript:clickDomObject(\''+currentObj+'\');">' + prop.escapeHTML() + '</a></td>';			
	}
  	html += '</tr>';
  }
  
  
  
  html += '</table>';
  document.getElementById('codeWindow').innerHTML = html;
}