function showCurtain(element){
	var position = getAbsoluteElementPosition(element);
	var curtain = document.createElement("DIV");
	curtain.style.display = 'none';
	curtain.style.position = "absolute";
	curtain.style.width = element.clientWidth;
	curtain.style.height = element.clientHeight;
	curtain.style.left = position.x;
	curtain.style.top = position.y;
	curtain.style.background = "black";
	curtain.style.opacity = "0.1";
	curtain.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=10)";
	document.body.appendChild(curtain);
	curtain.style.display = '';
	return curtain;
}

function getAbsoluteElementPosition(element) {
	var coord = {x: element.offsetLeft, y: element.offsetTop};
	if (element.offsetParent) {
		var parent_pos = getAbsoluteElementPosition(element.offsetParent);
		coord.x += parent_pos.x;
		coord.y += parent_pos.y;
	}
	return coord;
}

function getMousePosition(e) {
	var x = 0, y = 0;
	if (!e) e = window.event;
	if (e.pageX || e.pageY) {
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY) {
		x = e.clientX;
		y = e.clientY;
	}
	return {'x': x, 'y': y};
}

function removeElementById(id) {
	element = document.getElementById(id);
	removeElement(element);
}

function removeElement(element) {
	if(element) element.parentNode.removeChild(element);
}

function zeroizeElementRecursive(element, reg_exp, replacement, ident) {
	if(element.tagName) {
		if(ident !== false && element.getAttribute("ident")) element.setAttribute("ident", ident);
		if(element.getAttribute("property")) element.setAttribute("property", element.getAttribute("property").replace(reg_exp, replacement));
		switch(element.tagName) {
			case 'INPUT': 
				element.name = element.name.replace(reg_exp, replacement);
				if(element.id != '') element.id = element.id.replace(reg_exp, replacement);
				if(element.type == 'text') element.value = '';
				break;
			case 'SELECT':
				element.name = element.name.replace(reg_exp, replacement);
				if(element.id != '') element.id = element.id.replace(reg_exp, replacement);
				element.selectedIndex = 0;
				break;
			case 'TEXTAREA':
				element.name = element.name.replace(reg_exp, replacement);
				if(element.id != '') element.id = element.id.replace(reg_exp, replacement);
				element.innerHTML = '';
				break;
			case 'DIV':
				if(element.id != '') element.id = element.id.replace(reg_exp, replacement);
				break;
		}
		for (var i = 0; i < element.childNodes.length; i++) {
			zeroizeElementRecursive(element.childNodes[i], reg_exp, replacement, ident);
		}
	}
}

function setElemVisByAttrRecursive(element, visibility, attr_name, attr_value, all) {
	if(!element.tagName) return false;
	var attr = element.getAttribute(attr_name);
	if(attr == attr_value) {
		element.style.visibility = visibility;
		return true;
	}
	else {
		for (var i = 0; i < element.childNodes.length; i++)
			if(setElemVisByAttrRecursive(element.childNodes[i], visibility, attr_name, attr_value, all) && !all) return true;
	}
}

function removeElemByClassNameRecursive(element, classname, all) {
	if(!element.tagName) return false;
	if(element.className == classname) {
		removeElement(element);
		return true;
	}
	else {
		for (var i = 0; i < element.childNodes.length; i++)
			if(removeElemByClassNameRecursive(element.childNodes[i], classname, all) && !all) return true;
	}
}

function actionPublishInfo(id, publish_info, picPath, element) {
	if(!element) element = document.getElementById(id);
	var element_pos = getAbsoluteElementPosition(element);
	if(null !== (div = document.getElementById("publish_info_" + id))) {
		if(div.style.display == "none") {
			div.style.left = element_pos.x + 15;
			div.style.top = element_pos.y + 18;
			div.style.display = "inline";
		}
		else div.style.display = "none";
		return;
	}
	if(!publish_info[id] || publish_info[id] == 'undefined' || !publish_info[id].length) {
		//alert("Your bunny wrote!");
		return;
	}
	var div = document.createElement("DIV");
	div.id = "publish_info_" + id;
	var table = document.createElement("TABLE");
	table.cellPadding = 0;
	table.cellSpacing = 0;
	table.style.margin = 2;
	table.style.border = '1px solid #287BBB';
	var tbody = document.createElement("TBODY");
	header = false;
	for (i in publish_info[id]) {
		if(!header) {
			tr_h = document.createElement("TR");
			for(j in publish_info[id][i]) {
				td_h = document.createElement("TD");
				td_h.innerHTML = "<b>" + j + "</b>";
				td_h.className = 'publish_td';
				tr_h.appendChild(td_h);
			}
			td_h = document.createElement("TD");
			td_h.style.width = '18px';
			td_h.innerHTML = "<img src='" + picPath + "/x.gif' title='Close pop-up Info' onClick=\"actionPublishInfo('" + id + "')\" style='cursor: pointer;'>";
			td_h.className = 'publish_td2';
			tr_h.appendChild(td_h);
			tbody.appendChild(tr_h);
			header = true;
		}
		tr = document.createElement("TR");
		for(j in publish_info[id][i]) {
			td = document.createElement("TD");
			td.innerHTML = publish_info[id][i][j];
			td.className = 'publish_td';
			tr.appendChild(td);
		}
		td = document.createElement("TD");
		td.innerHTML = "<img src='" + picPath + "/1.gif'>";
		td.className = 'publish_td2';
		tr.appendChild(td);
		tbody.appendChild(tr);
	}
	table.appendChild(tbody);
	div.appendChild(table);
	div.style.left = element_pos.x + 15;
	div.style.top = element_pos.y + 18;
	div.style.position = "absolute";
	div.style.background = "white";
	div.style.border = "1px solid #287BBB";
	div.style.display = "inline";
	document.body.appendChild(div);
}

function getSubstring(string, start, length) {
	string += '';
	if(start < 0) start += string.length;
	if(length == undefined) length = string.length;
	else if(length < 0) length += string.length;
	else length += start;
	if(length < start) length = start;
	return string.substring(start, length);
}

function getElementsByNameIE(tag, name) {
	var result = new Array();
	var elements = document.getElementsByTagName(tag);
	for(i = 0, index = 0; i < elements.length; i++) {
		attribute = elements[i].getAttribute("name");
		if(attribute == name) {
			result[index] = elements[i];
			index++;
		}
	}
	return result;
}

