mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 13:22:36 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var debugWindow = null;
 | 
						|
function debug(text, reverse) {
 | 
						|
	if (debugWindow == null)
 | 
						|
 		return;
 | 
						|
 | 
						|
	time = "-"; //new Date();
 | 
						|
	if (reverse) {
 | 
						|
		$('debug').innerHTML = time + " " + text + "<br>"+ 	$('debug').innerHTML;
 | 
						|
		debugWindow.getContent().scrollTop=0;
 | 
						|
	}
 | 
						|
	else {
 | 
						|
		$('debug').innerHTML +=  time + " " + text + "<br>";
 | 
						|
		debugWindow.getContent().scrollTop=10000; // Far away 
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function hideDebug() {
 | 
						|
	if (debugWindow) {
 | 
						|
		debugWindow.destroy();
 | 
						|
		debugWindow = null;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function showDebug(bShow) {
 | 
						|
 if (debugWindow == null) {
 | 
						|
  debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"})
 | 
						|
  debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div id='debug'></div>";
 | 
						|
  date=new Date;
 | 
						|
    date.setMonth(date.getMonth()+3);
 | 
						|
    
 | 
						|
  //debugWindow.setCookie(null, date);
 | 
						|
 }
 | 
						|
 if( typeof bShow == 'undefined' || bShow)debugWindow.show()
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function clearDebug() {
 | 
						|
	if (debugWindow == null)
 | 
						|
 		return;
 | 
						|
	$('debug').innerHTML = "";
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * document.createElement convenience wrapper
 | 
						|
 *
 | 
						|
 * The data parameter is an object that must have the "tag" key, containing
 | 
						|
 * a string with the tagname of the element to create.  It can optionally have
 | 
						|
 * a "children" key which can be: a string, "data" object, or an array of "data"
 | 
						|
 * objects to append to this element as children.  Any other key is taken as an
 | 
						|
 * attribute to be applied to this tag.
 | 
						|
 *
 | 
						|
 * Available under an MIT license:
 | 
						|
 * http://www.opensource.org/licenses/mit-license.php
 | 
						|
 *
 | 
						|
 * @param {Object} data The data representing the element to create
 | 
						|
 * @return {Element} The element created.
 | 
						|
 */
 | 
						|
function $E(data) {
 | 
						|
  var el;
 | 
						|
  if ('string'==typeof data) {
 | 
						|
      el=document.createTextNode(data);
 | 
						|
  } else {
 | 
						|
    //create the element
 | 
						|
    el=document.createElement(data.tag);
 | 
						|
    delete(data.tag);
 | 
						|
 | 
						|
    //append the children
 | 
						|
    if ('undefined'!=typeof data.children) {
 | 
						|
      if ('string'==typeof data.children ||'undefined'==typeof data.children.length) {
 | 
						|
        //strings and single elements
 | 
						|
        el.appendChild($E(data.children));
 | 
						|
      } else {
 | 
						|
        //arrays of elements
 | 
						|
        for (var i=0, child=null; 'undefined'!=typeof (child=data.children[i]); i++) {
 | 
						|
            el.appendChild($E(child));
 | 
						|
        }
 | 
						|
      }
 | 
						|
      delete(data.children);
 | 
						|
    }
 | 
						|
 | 
						|
    //any other data is attributes
 | 
						|
    for (attr in data) {
 | 
						|
      el[attr]=data[attr];
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return el;
 | 
						|
}
 | 
						|
 | 
						|
// FROM Nick Hemsley
 | 
						|
var Debug = {
 | 
						|
	inspectOutput: function (container, within) {
 | 
						|
		within = within || debugWindow.getContent()
 | 
						|
		
 | 
						|
		if (debugWindow == null)
 | 
						|
 			return;
 | 
						|
 | 
						|
		within.appendChild(container)
 | 
						|
	},
 | 
						|
	
 | 
						|
	inspect: function(object) {
 | 
						|
		var cont = $E({tag: "div", className: "inspector"})
 | 
						|
		Debug.inspectObj(object, cont)
 | 
						|
		debugWindow.getContent().appendChild(cont)
 | 
						|
	},
 | 
						|
	
 | 
						|
	inspectObj: function (object, container) {
 | 
						|
		for (prop in object) {
 | 
						|
			Debug.inspectOutput(Debug.inspectable(object, prop), container)
 | 
						|
		}
 | 
						|
	},
 | 
						|
	
 | 
						|
	inspectable: function(object, prop) {
 | 
						|
		cont = $E({tag: 'div', className: 'inspectable', children: [prop + " value: " + object[prop] ]})
 | 
						|
		cont.toInspect = object[prop]
 | 
						|
		Event.observe(cont, 'click', Debug.inspectClicked, false)
 | 
						|
		return cont
 | 
						|
	},
 | 
						|
	
 | 
						|
	inspectClicked: function(e) {
 | 
						|
		Debug.inspectContained(Event.element(e))
 | 
						|
		Event.stop(e)
 | 
						|
	},
 | 
						|
	
 | 
						|
	inspectContained: function(container) {
 | 
						|
		if (container.opened) {
 | 
						|
			container.parentNode.removeChild(container.opened)
 | 
						|
			delete(container.opened)
 | 
						|
		} else {
 | 
						|
			sibling = container.parentNode.insertBefore($E({tag: "div", className: "child"}), container.nextSibling)
 | 
						|
			if (container.toInspect)
 | 
						|
				Debug.inspectObj(container.toInspect, sibling)
 | 
						|
			container.opened = sibling
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
var inspect = Debug.inspect;
 |