/**
 * JavaScript library to wrap one or more elements when creating boxes with rounded corners etc.
 *
 * $Revision:$
 *
 * Copyright (c) 2007 TOLRA Micro Systems Limited. All rights reserved.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 * @package Framework
 * @subpackage JavaScript
 */

/**
 * Wrap a element type of a given class in 8 <div> tags for creating image bounded boxes.
 * The <div> tags are given the classes top, bottom, left, right, tl, tr, br, bl and are
 * nested in that order.
 *
 * The selected elements can either be placed inside the <div>s or outside.
 *
 * @param string tag The tag to select the elements to box, e.g. 'div.box', '#area', 'form'
 * @param string prefix The prefix to apply to all classes.
 **/
function afMakeGraphicalBox(tag, prefix){

	// Get the element(s) from the tag
	var e = [];

	if(tag.indexOf("#") >= 0) {
		var s = tag.split("#");
		e.push(document.getElementById(s[1]));
	}
	else {
		var s = tag.split(".");
		els = document.getElementsByTagName(s[0]);
		if(s.length == 1)
			e = els;
		else {
			for(var i=0; i < els.length; i++) {
				if(els[i].className == s[1])
					e.push(els[i]);
			}
		}
	}

	// For all elements box
	for(var i=0; i < e.length; i++) {

		var t = document.createElement("div");
		t.className = prefix + "top";

		var b = document.createElement("div");
		b.className = prefix + "bottom";
		t.appendChild(b);

		var l = document.createElement("div");
		l.className = prefix + "left";
		b.appendChild(l);

		var r = document.createElement("div");
		r.className = prefix + "right";
		l.appendChild(r);

		var tl = document.createElement("div");
		tl.className = prefix + "tl";
		r.appendChild(tl);

		var tr = document.createElement("div");
		tr.className = prefix + "tr";
		tl.appendChild(tr);

		var br = document.createElement("div");
		br.className = prefix + "br";
		tr.appendChild(br);

		var bl = document.createElement("div");
		bl.className = prefix + "bl";
		br.appendChild(bl);

		// Move all child codes into new node
		while(e[i].hasChildNodes())
			bl.appendChild(e[i].removeChild(e[i].firstChild));
		e[i].appendChild(t);
	}
}