// VC-UTIL
/*

PROJECT:	JDM (Java Dynamic Machine)
PROGRAMMER:	G. Patnude
FILE:		vc-util/vc-util.js
PURPOSE:	GENERAL OBJECT & DHTML / DOM TOOLS & UTILITIES...

Includes functions for:

	-- TRACE / ERROR HANDLING
	-- DHTML/DOM OBJECT ACCESSORS
	-- DHTML/DOM GETTER / SETTER METHODS
	-- DHTML/DOM UTILITIES...

*/

var UTIL = {
	
	// CLASS VARIABLES...
	version: "0.000a",
	id: "UTIL",
	name: "UTIL::",
	// rgx: new RegExp(/\com.idynatech.dev/gi),
	rgx: new RegExp(/idynatech\./gi),
	bypass: false,


	// STANDARD TRACE / DEBUGGING MESSAGE...	
	trace: function trace(msg) {
	
		// if (((window.location.host == 'com.idynatech.dev') || (window.location.host == 'client.idynatech.dev')) && (window.location.host != 'www.idynatech.com')) {
		if ((this.rgx.test(window.location.host)) || (this.bypass)) {
		
			if ((tr = DOM.getnode("TRACE")) != null) {
				
				tr.innerHTML += msg + "<br>";
				
			}
			
		}  else {
		
			// NULL...
		
		}
	
		return;
		
	},
	
	// EXTENSION TO TRACE --> INCORPORATES A NICE BRIGHT COLOR !!!
	warn: function warn(msg) {
	
		// SIMPLY WRAP COLOR TAGS AROUND THE MESSAGE AND CALL this.trace()....
		return this.trace("<FONT COLOR = '#FF0000'>" + msg + "</FONT>");	
	
	},
	
	// EXTENSION TO TRACE --> INCORPORATES A NICE BRIGHT COLOR !!!
	trap: function trap(msg) {
	
		// SIMPLY WRAP COLOR TAGS AROUND THE MESSAGE AND CALL this.trace()....
		return this.trace("<FONT COLOR = '#0000CC'>" + msg + "</FONT>");	
	
	},
	
	// EXTENSION TO TRACE --> INCORPORATES A LINKBACK...
	linkback: function linkback(msg, lnk) {
	
		// SIMPLY WRAP COLOR TAGS AROUND THE MESSAGE AND CALL this.trace()....
		return this.trace("<A HREF = '" + lnk + "'><FONT COLOR = '#0000CC'>" + msg + "</FONT></A>");	
	
	},
	
	// UTILITY FUNCTION TO GET A HANDLE ON A DOM OBJECT...
	getObject:function getObject(str) {
	
	
		UTIL.warn("UTIL.getObject has been deprecated... use DOM.getnode(" + str + ") instead...");
		return DOM.getnode(str);
		
		// RETURNS A REFERENCE TO THE REQUESTED OBJECT...		
		try {
			
			// var o = document.getElementById(str);
			if (document.getElementById) {
			
				var obj = document.getElementById(str);
				// this.style = document.getElementById(str).style;
				
			} else if (document.all) {
			
				var obj = document.all[str];			
				// this.style = document.all[str].style;
			
			} else if (document.layers) {
			
				var obj = document.layers[str];
				// this.style = document.layers[str];
				
			}		
			
		} catch (e) {
			
		}
		
		return (obj == null) ? null : obj;
		
	},
	
	// LOOP THROUGH & DISPLAY AN OBJECTS PROPERTIES...
	psheet:function psheet(po) {
		
		if ((props = DOM.getnode(po)) != null) {
			
			for (var prop in props) {
				
				this.trace(prop + " --> " + props[prop]);
				
			}
			
		}
		
		return;
		
	},
	
	error:function error(msg) {
		
		// if (((window.location.host == 'com.idynatech.dev') || (window.location.host == 'client.idynatech.dev')) && (window.location.host != 'www.idynatech.com')) {
		if ((this.rgx.test(window.location.host)) || (this.bypass)) {
		
			if ((tr = DOM.getnode("ERROR")) != null) {
				
				tr.innerHTML += msg + "<br>";
				
			}
			
		}  else {
		
			// NULL...
		
		}
	
		return;
		
	},
	
	clear: function clear(str) {
		
		// this.trace("UTIL::clear(str) --> attempting to clear:" + str);
		if ((obj = DOM.getnode(str)) != null) {
			
			obj.innerHTML = "";
			
		}
		
		return obj;
		
	},
	
	
	// ITERATE AND DISPLAY AN OBJECTS PROPERTIES AND VALUES...
	oWatch: function oWatch (obj) {   
	
		for (var p in obj) {
	
			if (typeof(obj[p]) == 'object') {
			
				// RECURSION --> !!!
				this.oWatch(obj[p]);
			
			} else {
			
				UTIL.trace(p.toString() + ' --> ' + obj[p]);
				
			}
	
		}
	
		return;	
	
	},
	
	showhide: function showhide(target) {
	
		UTIL.warn("SHOWHIDE:" + target.toString());
		if ((o = DOM.getnode(target)) != null) {
		
			// o.style.visibility = ((vis == true) ? 'visible' : 'hidden');
			o.style.display = (o.style.display == 'none') ? 'block' : 'none';
			return (o.style.display == 'block') ? true : false;
		
		}
		
		return false;
	
	},
	
	// TOGGLES THE VISIBILITY OF A DOM OBJECT...
	hide: function hide(target) {
	
		UTIL.clear("TRACE");
		// UTIL.warn("HIDE:" + target.toString());
		// alert("HIDE:" + target.toString());
		if ((o = DOM.getnode(target)) != null) {
	
			o.style.display = 'none';
			return (o.style.display == 'none') ? false : true;
	
		}
	
		return;
	
	},
	
	// TOGGLES THE VISIBILITY OF A DOM OBJECT...
	show: function show(target) {
	
		UTIL.clear("TRACE");
		UTIL.warn("SHOW:" + target.toString());
	
		if ((o = DOM.getnode(target)) != null) {
	
			o.style.display = 'block';
			return (o.style.display == 'block') ? true : false;
	
		}
	
		return;
	
	},
	
	//
	isvisible: function isvisible(obj) {
	
		if ((o = DOM.getnode(obj)) != null) {
		
			return (o.style.visibility == 'visible') ? true : false;
		
		}
		
		return false;
	
	}

// EOF...

};

