// VC-ROUNDEDBOX
/*

PROJECT:	JDM (Java Dynamic Machine)
PROGRAMMER:	G. Patnude
FILE:		vc-interface/vc-roundedbox.js
PURPOSE:	USER INTERFACE FUNCTIONALITY

Includes functions for:

	-- 

*/


var RPANEL = {
	
	// CLASS VARIABLES...
	version : "0.000a",
	name: "RPANEL::",
	id: "RPANEL",
	width: 0,
	height: 4,
	ready: false,
	radius: 5,
	panel: {},


// CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS *
// CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS * CLASS FUNCTIONS *

	// CONSTRUCTOR...
	init: function init() {
	
		// TRACE...
		UTIL.trace(this.name + "init(0) --> Called...");

		this.width = document.body.offsetWidth;
		this.height = document.body.offsetHeight;
		// UTIL.warn("UI.width: " + this.width + " UI.height: " + this.height);
		
		// BROWSER CHECK...
		this.ready = this.check();
		
		// AND RETURN...
		return;
	
	},
	
	// PERFORMS A NECESSARY BROWSER CHECK...
	check: function check(){	
	
		// TRACE... 
		UTIL.trace(this.name + "check(I) --> Called...");		
		if(!document.getElementById || !document.createElement) return(false);
	
		var b = navigator.userAgent.toLowerCase();
		if (b.indexOf("msie 5") > 0 && b.indexOf("opera") == -1) return(false);

		return(true);
		
	},

	// GENERATES A ROUNDED-CORNER PANEL...
	rounded: function rounded(selector, bgcol, fgcol) {
	
		// TRACE... 
		UTIL.trace(this.name + "rounded(I) --> Called...");
		
		if (this.check()) {

			this.panel = this.getelement(selector);			
			for (var i = 0; i < this.panel.length; i++) {
		
				 this.addtop(this.panel[i], bgcol, fgcol);
				 this.addbottom(this.panel[i], bgcol, fgcol);
				
			}
			
			// AND RETURN...
			return this.panel;
			
		}
		
	},
	
	// GENERATES A ROUNDED PANEL AS A DHTML ELEMENT...
	newpanel: function newpanel(id, bgcol, fgcol, w, h) {
	
		// TRACE... 
		UTIL.trace(this.name + "newpanel(I) --> Called...");		
		
		// LOCALS...
		var d = DOM.createnode('DIV', id);
		d.style.width = parseInt(w);		
		var pnl = [];
		pnl.push(UI.div(id + "-T", ["ID = '" + id + "-T" + "'"]));
		pnl.push(UI.div(id + "-M", ["ID = '" + id + "-M" + "'", "STYLE = 'height: " + parseInt(h) + "px;'"]));
		pnl.push(UI.div(id + "-B", ["ID = '" + id + "-B" + "'"]));
		
		d.innerHTML = UI.div(pnl.join("\n"), []);
		this.rounded("DIV#" + id + "-T", bgcol, fgcol);
		this.rounded("DIV#" + id + "-M", bgcol, fgcol);
		this.rounded("DIV#" + id + "-B", bgcol, fgcol);

		// AND RETURN...		
		// UTIL.trace(d);		
		return d;

	},

	// ROUNDS OFF THE TOP LEFT AND RIGHT CORNERS ONLY...
	roundedtop: function roundedtop(selector, bgcol, fgcol) {
	
		// TRACE... 
		UTIL.trace(this.name + "roundedtop(I) --> Called...");		

		var v = this.getelement(selector);		
		for (var i = 0; i < v.length; i++) {
		
			this.addtop(v[i], bgcol, fgcol);
	    
		}

		// AND RETURN...
		return;
		
	},
	
	// ROUNDS OFF THE BOTTOM LEFT AND RIGHT CORNERS...
	roundedbottom: function roundedbottom(selector, bgcol, fgcol){
	
		// TRACE...
		UTIL.trace(this.name + "roundedbottom(0) --> Called...");

		var v = this.getelement(selector);	
		for (var i = 0; i < v.length; i++) {
		
			this.addbottom(v[i], bgcol, fgcol);
			
		}

		// AND RETURN...
		return;
		
	},

	// CREATES AND ADDS TOP LEFT AND RIGHT ROUNDED CORNERS...
	addtop: function addtop(el, bgcol, fgcol){
	
		// TRACE...
		UTIL.trace(this.name + "addtop(0) --> Called...");

		var i;
		var d = document.createElement("b");
		var cn = "r";
		d.className = "rtop";
		d.style.backgroundColor = bgcol;
		// el.style.backgroundColor = fgcol;
		
		for (i = 1; i <= this.height; i++) {
		
			var x = document.createElement("b");
			x.className = cn + i;
			x.style.backgroundColor = fgcol;
			d.appendChild(x);
			
		}
		
		el.insertBefore(d, el.firstChild);

		// AND RETURN...
		return el;
		
	},

	// CREATES AND ADDS BOTTOM LEFT ANR RIGHT ROUNDED CORNERS...
	addbottom: function addbottom(el, bgcol, fgcol) {
	
		// TRACE...
		UTIL.trace(this.name + "addbottom(0) --> Called...");

		var d = document.createElement("b");
		var cn = "r";
		d.className = "rbottom";
		d.style.backgroundColor = bgcol;
		// el.style.backgroundColor = fgcol;
		
		for (var i = this.height; i >= 1; i--) {
		
			var x = document.createElement("b");
			x.className = cn + i;
			x.style.backgroundColor = fgcol;
			d.appendChild(x);
			
		}
		
		el.appendChild(d, el.firstChild);
		
		// AND RETURN...
		return el;
		
	},

	// RETRIEVES A DOM ELEMENT
	getelement: function getelement(selector){

		// TRACE...
		UTIL.trace(this.name + "getelement(0) --> Called..." + selector);

		var s = [];
		var selid = "";
		var selclass = "";
		var tag = selector;
		var objlist = [];
		
		if (selector.indexOf(" ") > 0){  // descendant selector like "tag#id tag"
		
			s = selector.split(" ");
			var fs = s[0].split("#");
			if (fs.length == 1) return(objlist);
			return (document.getElementById(fs[1]).getElementsByTagName(s[1]));
		
		}

		if (selector.indexOf("#") > 0){ //id selector like "tag#id"
		
			s = selector.split("#");
			tag = s[0];
			selid = s[1];
		
		}
	
		if (selid != "") {
	
			objlist.push(document.getElementById(selid));
			return (objlist);
	
		}
	
		if (selector.indexOf(".") > 0){  //class selector like "tag.class"
	
			s = selector.split(".");
			tag = s[0];
			selclass = s[1];
	
		}
	
		var v = document.getElementsByTagName(tag);  // tag selector like "tag"
	
		if (selclass == "") {
		
			return (v);
			
		}
	
		for (var i = 0; i < v.length; i++) {
		
			if (v[i].className == selclass){
			
				objlist.push(v[i]);
		
			}
		}
		
		// AND RETURN...
		return (objlist);
	
	}	
	
// EOF...

};

