/**
 * Contains a set of global helper functions that assist in debugging.
 *
 * <p>Dependancies:</p>
 * <ul>
 *   <li>Drag.js</li>
 * </ul>
 */
ensurePackageAvailability('com.rig');
if (!doesPackageExists('Drag')) alert('com.rig.Debug is missing dependant package "Drag"');

com.rig.Debug = {
'display': function(elem) {
		if (elem == null) return;
	
		var root = document.createElement('div');
		root.style.position = 'absolute';
		root.style.height = '400px';
		root.style.width = '600px';
		root.style.top = '20px';
		root.style.left = '20px';
		root.style.backgroundColor = '#F4F4F4';
		root.style.border = '1px solid #333';
		root.style.zIndex = 10000;
		document.body.insertBefore(root,null);
	
		var handle = document.createElement('div');
		handle.style.margin = '2px';
		handle.style.padding = '2px';
		handle.style.width = root.clientWidth-8+'px';
		handle.style.color = 'white';
		handle.style.backgroundColor = 'navy';
		handle.style.fontFamily = 'verdana, sans-serif';
		handle.style.fontSize = '10px';
		if (elem.tagName !== undefined) {
			handle.appendChild(document.createTextNode('<'+elem.tagName+'> '+elem.id));
		} else {
			handle.appendChild(document.createTextNode(typeof(elem)));
		}
		root.appendChild(handle);

		var close = document.createElement('div');
		close.style.position = 'absolute';
		close.style.top = '0px';
		close.style.right = '3px';
		close.style.cursor = 'pointer';
		close.style.color = 'white';
		close.appendChild(document.createTextNode('X'));
		close.onclick = function() {
			var root = this.parentNode;
			root.parentNode.removeChild(root);
		}
		root.appendChild(close);
			
		var resize = document.createElement('div');
		resize.style.position = 'absolute';
		resize.style.zIndex = 0;
		resize.style.bottom = '0px';
		resize.style.right = '0px';
		resize.style.width = '20px';
		resize.style.height = '20px';
		resize.style.cursor = 'pointer';
		root.appendChild(resize);
		Drag.init(resize,undefined,undefined,undefined,undefined,undefined,true,true);
		resize.onDrag = function(nx, ny) {
			this.removeChild(this.firstChild);
			this.appendChild(document.createTextNode(nx+'x'+ny));
			var root = this.parentNode;
		}

		var scrollContainer = document.createElement('div');
		root.appendChild(scrollContainer);
	
		var scrollContent = document.createElement('div');
		scrollContainer.appendChild(scrollContent);
		scrollContent.style.overflow = 'scroll';
		scrollContent.style.width = root.clientWidth+'px';
		scrollContent.style.height = root.clientHeight-20+'px';
	
		var messageTag = document.createElement('pre');
		scrollContent.appendChild(messageTag);
	
		var message = '';
		for (key in elem) {
			try {
				message += key + ' = ' + elem[key] + '\r\n';
			} catch (e) {
			};
		}
		messageTag.appendChild(document.createTextNode(message));

		Drag.init(handle,root);
	}
}


function displayPropertyNames(obj){
    if (obj == null){
        alert("null");
    }else{
        var names = "";
        for(var name in obj) names += name + ':'+ obj[name] + "\n";
        alert(names);
    }
}
