function setDivHtml(div_name, value, force_display, color)
{
	if (force_display != false) force_display = true;
	if (color == undefined)     color = "000000";
	var div = $(div_name);
	if (div)
	{
		var display = div.style.display;
		if (display != "block" && force_display && value != "")
		{
			displayDiv(div_name);
			display = "block";
		}
		if (display == "block")
		{
			div.innerHTML = "<span style='color:#" + color + "'>" + value + "</span>";
		}
	}
}
function emptyDiv(div_name)
{
	var div = $(div_name);
	if (div)
	{
		div.innerHTML = "";
	}
}
function displayDiv(div_name)
{
	var div = $(div_name);
	if (div)
	{
		div.style.display = "block";
	}
}
function hideDiv(div_name)
{
	var div = $(div_name);
	if (div)
	{
		div.style.display = "none";
	}
}
function blurElement(item, color)
{
	
	var element = $(item);
	if (element)
	{
		element.style.border = "1px solid "+color;
	}
}
//
//
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentHTML){
	HTMLElement.prototype.__defineGetter__("outerHTML", function () {
		var attrs = this.attributes;
		var str = "<" + this.tagName;
		for (var i = 0; i < attrs.length; i++)
			str += " " + attrs[i].getAttribute('name') + "=\"" + attrs[i].value + "\"";
		
		if (_emptyTags[this.tagName])
			return str + ">";
		
		return str + ">" + this.innerHTML + "</" + this.tagName + ">";
	});
	
	HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var df = r.createContextualFragment(sHTML);
		this.parentNode.replaceChild(df, this);
	});
	
	
	HTMLElement.prototype.insertAdjacentHTML = function (sWhere, sHTML) {
	var df;   // : DocumentFragment
	var r = this.ownerDocument.createRange();
	
	switch (String(sWhere).toLowerCase()) {  // convert to string and unify case
	  case "beforebegin":
		 r.setStartBefore(this);
		 df = r.createContextualFragment(sHTML);
		 this.parentNode.insertBefore(df, this);
		 break;
		 
	  case "afterbegin":
		 r.selectNodeContents(this);
		 r.collapse(true);
		 df = r.createContextualFragment(sHTML);
		 this.insertBefore(df, this.firstChild);
		 break;
		 
	  case "beforeend":
		 r.selectNodeContents(this);
		 r.collapse(false);
		 df = r.createContextualFragment(sHTML);
		 this.appendChild(df);
		 break;
		 
	  case "afterend":
		 r.setStartAfter(this);
		 df = r.createContextualFragment(sHTML);
		 this.parentNode.insertBefore(df, this.nextSibling);
		 break;
	}   
	};
}
// :: kDisplay object
// - object constructor
function kDisplay(){
}
// - object definition
kDisplay.prototype = {
	// variables
	elementCount: new Object(),
	// methods
	dupplicateElement: function (element) 
	{
		// set counters
		if (this.elementCount[element] == undefined) {
			this.elementCount[element] = 1;
		}
		// dupplicate element
		var tmp = $(element);
		if (tmp) {
			var newRecord = tmp.cloneNode(true);
			var elementName = tmp.readAttribute("id");
			newRecord.writeAttribute('id', element + this.elementCount[element]);
			var all = newRecord.descendants();
			for (var i=0; i<all.length; i++) {
				var attribute_id = all[i].readAttribute("id");
				if (attribute_id != null) {
					all[i].writeAttribute("id", attribute_id + this.elementCount[element]);
				}
				var attribute_name = all[i].readAttribute("name");
				if (attribute_name != null) {
					all[i].writeAttribute("name", attribute_name + this.elementCount[element]);
				}
			}
			if (this.elementCount[element] == 1) {
				new Insertion.After(elementName, newRecord);
			}
			else {
				new Insertion.After(elementName + (this.elementCount[element]-1), newRecord);	
			}
			this.elementCount[element]++;
		}
		return this.elementCount[element];
	},
	setElementHTML: function (elementName, value, color, forceDisplay)
	{
		if (color == undefined)    color = "000000";
		if (forceDisplay != false) forceDisplay = true;
		var element = $(elementName);
		if (element) {
			var display = element.style.display;
			if (display != "block" && forceDisplay && value != "") {
				this.displayElement(elementName);
				display = "block";
			}
			element.innerHTML = "<span style='color:#" + color + "'>" + value + "</span>";
		}
	},
	emptyElement: function (elementName)
	{
		var element = $(elementName);
		if (element) {
			element.innerHTML = "";
		}
	},
	displayElement: function (elementName)
	{
		var element = $(elementName);
		if (element) {
			element.style.display = "block";
		}
	},
	hideElement: function (elementName)
	{
		var element = $(elementName);
		if (element) {
			element.style.display = "none";
		}
	},
	blurElement: function (item, color)
	{
		var element = $(item);
		if (element) {
			element.style.border = "1px solid "+color;
		}
	}
}
kDisplay = new kDisplay();
