function testClick(event) {
	var elm = universalSource(event);
	if (elm.tagName.toLowerCase() == "a") {
		var li = elm.parentNode;
		var ul = li.parentNode;
		ul.removeChild(li);
		li.className="old"
		ul.appendChild(li);
	}
}

function find_movable_li(ul) {
	var lis = ul.getElementsByTagName("li");
	for (var i=0;i<lis.length;i++) {
		if (lis[i].className != "old") {
			var a = lis[i].getElementsByTagName("a")[0];
			var color = universalColor(getStyle(a,"color"));
			if (color.join(",") == "153,153,153") {
				return lis[i];
			} /* if visited */
		} /* not old */
	} /* for all lis */
}

function fill(index,data) {
	var elm = document.getElementById("div_"+index+"_div");
	elm.innerHTML = data;
}

/*--------------------------------------- objects ------------------------------ */

function div_move_old() {
	var div2 = document.getElementById("div_"+this.id_number+"_div");
	var ul = div2.getElementsByTagName("ul")[0];
	var li;
	while (li = find_movable_li(ul)) {
		ul.removeChild(li);
		li.className="old";
		ul.appendChild(li);
	}
}

function div_refresh() {
	var obj = this;
	var sendRef = function() {
		var div2 = document.getElementById("div_"+obj.id_number+"_div");
		div2.innerHTML = "Loading...";
		return "id="+obj.id_number;
	}
	var recRef = function(data) {
		fill(obj.id_number,data);
		obj.move_old();
	}
	ajax_command(GET,"get.php",sendRef,recRef);
}

function add_box(index,header) {
	var div = document.createElement("div");
	var div2 = document.createElement("div");
	var h = document.createElement("h2");
	var c = document.createElement("div");
	var r = document.createElement("div");
	div.className="top";
	div2.className="content";
	c.className = "img_close";
	r.className = "img_reload";
	div.id = "div_"+index;
	div2.id = "div_"+index+"_div";
	div.id_number = index;
	h.innerHTML = header;
	div.appendChild(c);
	div.appendChild(r);
	div.appendChild(h);
	div.appendChild(div2);
	div.refresh = div_refresh;
	div.move_old = div_move_old;

	var closeRef = function() {
		div.parentNode.removeChild(div);
	}
	var reloadRef = function() {
		div.refresh();
	}
	universalAttacher(r,"click",reloadRef);
	universalAttacher(c,"click",closeRef);

	document.body.appendChild(div);
	div.refresh();
}

function load(data) {
	var pole = data.split(",");
	for (var i=0;i<pole.length;i++) {
		add_box(i,pole[i]);
	}
}

function init() {
	ajax_command(GET,"get.php",dummy,load);
	universalAttacher(document,"click",testClick);
}

/*--------------------------------------- support -------------------------------*/

function universalAttacher(element, event, callback) {
	if (element.addEventListener) {
		/* gecko */
		element.addEventListener(event,callback,false);
	} else if (element.attachEvent) {
		/* ie */
		element.attachEvent("on"+event,callback);
	} else {
		/* ??? */
		element["on"+event] = callback;
	}
}

function getStyle(element,property) {
	if (document.defaultView && document.defaultView.getComputedStyle) {
		return document.defaultView.getComputedStyle(element,'')[property];
	} else {
		return element.currentStyle[property];
	} 
}

function hex2dec(hex_str) {
	var conversion = {hex_0:0, hex_1:1, hex_2:2, hex_3:3, hex_4:4, hex_5:5, hex_6:6, hex_7:7, hex_8:8, hex_9:9, hex_a:10, hex_b:11, hex_c:12, hex_d:13, hex_e:14, hex_f:15};
	var first = hex_str.toLowerCase().charAt(0);
	var second = hex_str.toLowerCase().charAt(1);
	return (conversion["hex_"+first]*16+conversion["hex_"+second]);
}

function universalColor(str) {
	/* returns [col1,col2,col3] in decimal */
	if (str.match(/#/)) {
		/* hex */
		if (str.length == 4) {
			var tmpstr = "#"+str.charAt(1)+str.charAt(1)+str.charAt(2)+str.charAt(2)+str.charAt(3)+str.charAt(3);
		} else {
			var tmpstr = str;
		}
		var tmp = tmpstr.match(/#(..)(..)(..)/);
		return [hex2dec(tmp[1]),hex2dec(tmp[2]),hex2dec(tmp[3])];
	} else {
		/* decimal */
		var tmp = str.match(/\(([^,]*),([^,]*),([^\)]*)/);
		return [parseInt(tmp[1]),parseInt(tmp[2]),parseInt(tmp[3])];
	}
	
}

function universalSource(event) {
	return (event.target ? event.target : event.srcElement);
}
var dummy = function(){}
