// DOM modifications for certain visual effects
// by Lost Boys - www.lostboys.nl

RoundedBoxes = function(root) {
	var els = getElementsByAttributeValue("class", "rounded", root);
	for(var i = 0; i < els.length; i++) this.createEdges(els[i]);
}

RoundedBoxes.prototype.createEdges = function(box, recursive) {
	var top = document.createElement("span");
	var bottom = document.createElement("span");
	top.className = "top";
	bottom.className = "bottom";
	box.insertBefore(top, box.firstChild);
	box.appendChild(bottom);
	
	if(recursive) {
		new RoundedBoxes(box);
	}
}

StripedTables = function(root) {
	var els = (root || document).getElementsByTagName("table");
	for(var i = 0; i < els.length; i++) this.createStripes(els[i]);
}

StripedTables.prototype.createStripes = function(table) {
	var tb = table.getElementsByTagName("tbody")[0];
	if(tb) 
		var rows = tb.getElementsByTagName("tr");
	else
		var rows = table.getElementsByTagName("tr");
	
	if(rows.length > 3)
		for(var i = 1; i < rows.length; i+=2) {
			if(rows[i]) addClass(rows[i], "odd");
		}
}

SplittedLists = function(root) {	
	var els = getElementsByAttributeValue("class", "splitted", root);
	for(var i = 0; i < els.length; i++) {
		if(els[i].tagName.toLowerCase() == "ul" || els[i].tagName.toLowerCase() == "ol") this.splitList(els[i]);
	}
}

SplittedLists.prototype.splitList = function(list) {	
	/* create two sets, put them in place of the original list, including classnames (but not 'splitted') */
	var set1 = document.createElement(list.tagName.toLowerCase());
	var set2 = document.createElement(list.tagName.toLowerCase());
	removeClass(list, "splitted");
	set1.className = set2.className = list.className;
	list.parentNode.replaceChild(set2, list);
	set2.parentNode.insertBefore(set1, set2);
	/* devide the list items over the set */
	var items = list.getElementsByTagName("li");
	var half = Math.round(items.length / 2);
	if(list.tagName.toLowerCase() == "ol") set2.start = half + 1;
	if(items.length == 1) set2.parentNode.removeChild(set2);
	for(var j = items.length - 1; j > half - 1; j--) {
		set2.insertBefore(items[j], set2.firstChild);
	}
	for(var j = half - 1; j >= 0; j--) {
		set1.insertBefore(items[j], set1.firstChild);	
	}
}

EventListener.addEvent(window, 'load', function() {
	window.stripedTables = new StripedTables();	
	window.roundedBoxes = new RoundedBoxes();		
	window.splittedLists = new SplittedLists();
});

gimme = function(u) {
	t = "";
	for(var e in u) t = t + " / " + e;
	alert(t);
}

/*@cc_on
try { document.execCommand('BackgroundImageCache', false, true); } catch (e) {}
EventListener.addEvent(window, 'load', function(){
	var main = document.getElementById("main-content");
	if(main) {
		span = document.createElement('span');
		span.className = 'flow-interrupt';
		span.innerHTML = '&nbsp;';
		main.insertBefore(span, main.firstChild);
	}
});
@*/