
/*
	cfg: {_tag: "div", id: "xin_con_div", align: "center", 
		style: "z-index: 999999; position: absolute; top: 0; left: 0; display: block", 
		hide: {_tag: "input", type: "button", id: "xin_con_hide", value: "hide", onclick: "Xin.con.hide();"},
		name: {_tag: "input", type: "text", id: "xin_con_name"},
		run: {_tag: "input", type: "button", id: "xin_con_run", value: "run", onclick: "Xin.con.run();"},
		load: {_tag: "input", type: "button", id: "xin_con_save", value: "load", onclick: "Xin.con.load();"},
		save: {_tag: "input", type: "button", id: "xin_con_save", value: "save", onclick: "Xin.con.save();"},
		br: {_tag: "br"}, 
		area: {_tag: "textarea", style: 'font: 13px/13px normal Courier New", Courier, monospace;', 
			id: "xin_con_area", cols: "84", rows: "13"}
	
	Xin.con.div = Xin.dom.create(Xin.con.cfg);
	var tagBody = document.getElementsByTagName("body")[0];
	tagBody.appendChild(Xin.con.div);
*/

Xin = {dom : 
	{
		get: function (strTrg) {
			return document.getElementById(strTrg);
		},
	
		remove: function (strTrg) {
			var objTrg = document.getElementById(strTrg);
		
			if (objTrg) {
				var objParent = objTrg.parentNode;
				objParent.removeChild(objTrg);
			}
		},
		
		clear: function (strTrg) {
			var objTrg = document.getElementById(strTrg);
			
			while (objTrg.hasChildNodes()) {
				objTrg.removeChild(objTrg.firstChild);
			}
		},
		
		insertBefore: function (strBefore, objTrg) {
			var objBefore = document.getElementById(strBefore);
			var objParent = objBefore.parentNode;
		
			objParent.insertBefore(objTrg, objBefore);
		},
	
		create: function (objCfg, objParent) {
			var elNew = document.createElement(objCfg._tag);
			
			if (typeof(objCfg._text) != "undefined") {
				var txtNode = document.createTextNode(objCfg._text);
				elNew.appendChild(txtNode);
			}
			
			if (typeof(objCfg._items) != "undefined") {
				for (var i=0; i<objCfg._items.length; i++) {
					var objItem = objCfg._items[i];
					
					if (typeof(objItem) == "string") {
						var txtNode = document.createTextNode(objItem);
						elNew.appendChild(txtNode);
					} else {
						Xin.dom.create(objItem, elNew);
					}
				}
			}
			
			for (var strName in objCfg) {
				var objValue = objCfg[strName];
			
				if (strName.indexOf("_") != 0 || strName == "_class") {
					if (typeof(objValue) != "undefined") {
						if (typeof(objValue._tag) == "undefined") {
							elNew.setAttribute(strName == "_class"? "class": strName, objValue);
						} else {
							Xin.dom.create(objValue, elNew);
						}
					}
				}	
			}	
			
			if (typeof(objCfg._parent) != "undefined") {
				var objParent = document.getElementById(objCfg._parent);
				objParent.appendChild(elNew);
			
			} else if (typeof(objCfg._replaceFirstChild) != "undefined") {
				var objParent = document.getElementById(objCfg._replaceFirstChild);
				if (objParent.firstChild != null) {
					objParent.removeChild(objParent.firstChild);
				}
				objParent.appendChild(elNew);
				
			} else if (typeof(objCfg._replaceByParent) != "undefined") {
				var objParent = document.getElementById(objCfg._replaceByParent);
				var objChild = document.getElementById(objCfg.id);
				if (objChild != null) {
					objParent.replaceChild(elNew, objChild);
				} else {
					objParent.appendChild(elNew);
				}
				
			} else if (typeof(objCfg._insertBefore) != "undefined") {
				Xin.dom.insertBefore(objCfg._insertBefore, elNew);
			
			} else if (typeof(objParent) != "undefined") {
				objParent.appendChild(elNew);
			}
		
			return elNew;
		},	
	
		scan: function (objTrg, intDeep, intMaxDeep) {
		
			if (typeof(intDeep) == "undefined") intDeep = 0;
			intDeep++;
		
			if (typeof(intMaxDeep) == "undefined") intMaxDeep=1000;
			intMaxDeep--;
			if (intMaxDeep < 0) return "";
		
			var strReturn = "";
			for (var i=0; i<intDeep; i++) strReturn += " ";
		
			strReturn += objTrg.tagName 
				+ " (" + objTrg.id + ")" + "\n";
		
			for (var i=0; i<objTrg.childNodes.length; i++) {
				strReturn += Xin.dom.scan(objTrg.childNodes[i], intDeep, intMaxDeep);
			}
		
			return strReturn;
		}	
	}
};	


