// /_cms/js/DOMCore.js
var DOMUtil = new Object();

DOMUtil.insertAfter = function (oTarget,oInsert) {
	var oTarget		= DOMUtil.checkTarget(oTarget);
	var oParent		= oTarget.parentNode;
	if (oParent.lastChild == oTarget) {
		oParent.appendChild(oInsert);
	} else {
		oParent.insertBefore(oInsert,oTarget.nextSibling);
	}
};

DOMUtil.swapNodes = function (oNode1, oNode2) {
	var oNode1 = this.checkTarget(oNode1);
	var oNode2 = this.checkTarget(oNode2);
	var oNewNode = oNode2.parentNode.removeChild(oNode2);
	oNode1.parentNode.insertBefore(oNewNode,oNode1);
};

DOMUtil.checkTarget = function (oTarget) {
	if (typeof(oTarget) == 'string') {
		var oTarget		= document.getElementById(oTarget);
		return oTarget;
	} else if (typeof(oTarget) == 'object') {
		return oTarget;
	} else {
		return false;
	}
};

DOMUtil.setId = function(oObj,sStr) {
	if (sStr) {
		oObj.id = sStr;
	}
};

DOMUtil.setClass = function (oTarget,sStr) {
	var oTarget	= this.checkTarget(oTarget);
	if (sStr) {
		if (isIE) {
			oTarget.setAttribute('className',sStr);
		} else {
			oTarget.setAttribute('class',sStr);
		}
	}
}

DOMUtil.getClass = function (oTarget) {
	var oTarget	= this.checkTarget(oTarget);
	var sClass = false;
	if (isIE) {
		sClass	= oTarget.getAttribute('className');
	} else {
		sClass	= oTarget.getAttribute('class');
	}
	return sClass;
}

DOMUtil.addJavaScript = function(sSrc,sId) {
	if (!document.getElementById(sId)) {
		var oHead		= document.getElementsByTagName('head')[0];
		var oScript		= document.createElement('script');
		oScript.type	= 'text/javascript';
		oScript.src = sSrc;
		oHead.appendChild(oScript);
		DOMUtil.setId(oScript,sId);
	}
	return true;
};

DOMUtil.createBr = function (oTarget) {
	var oTarget		= this.checkTarget(oTarget);
	var oObj		= document.createElement('br');
	oTarget.appendChild(oObj);
};

DOMUtil.createDiv = function (oTarget,sId,sClass,bDisplay) {
	/*
		oTarget		str/obj	Target DOM node or id to add to
		sId			str		unique DOM id
		sClass		str		class to apply
		bDisplay	bool	true:	sets inline style="display:none;" fixes prototype/script.aculo.us issues
							false:	set nothing
	*/
	var oTarget		= this.checkTarget(oTarget);
	var oDiv		= document.createElement('div');

	if (sId) {
		this.setId(oDiv,sId);
	}
	if (sClass) {
		this.setClass(oDiv,sClass);
	}
	if (bDisplay == false) {
		oDiv.style.display='none';
	} else {
		oDiv.style.display='';
	}
	oTarget.appendChild(oDiv);
	return oDiv;
};

DOMUtil.createHeading = function (oTarget,sText,iSize) {
	/*
		oTarget		str/obj	Target DOM node or id to attach to
		sText		str		DOM id to apply
		iSize		int		size (1-6) for head element
	*/
	var oTarget		= this.checkTarget(oTarget);
	var sHsize		= 'h' + iSize;
	var oHeading	= document.createElement(sHsize);

	this.createText(oHeading,sText);

	oTarget.appendChild(oHeading);
	return oHeading;
};

DOMUtil.createImage = function (oTarget,sSrc,bBefore,bReplace) {
	var oTarget		= this.checkTarget(oTarget);
	var oImg		= document.createElement('img');

	oImg.src = sSrc;

	if (bReplace == true && oTarget.hasChildNodes) {
		if (oTarget.childNodes.length == 1) {
			oTarget.replaceChild(oImg,oTarget.firstChild);
		} else {
			oTarget.appendChild(oImg);
		}
	} else {
		oTarget.appendChild(oImg);
	}
	if (bBefore == true) {
		oTarget.insertBefore(oImg,oTarget.lastChild);
	} else {
		oTarget.appendChild(oImg);
	}
	return oImg;
};

DOMUtil.createIframe = function (oTarget,sId,sSrc) {
	var oTarget		= this.checkTarget(oTarget);
	var oIframe		= document.createElement('iframe');

	this.setId(oIframe,sId);
	if (sSrc) {
		oIframe.src = sSrc;
	}
	oTarget.appendChild(oIframe);
	return oIframe;
};

DOMUtil.createLi = function (oTarget,sText,sLink,sOnClick,sTarget) {
	/*
		oTarget	obj,str	element to attach list item to (usually a list)
		sText	str		text of li
		sLink	str		if we're stripping in a link
		sTarget	str		if we have a link, we may need a target
	
	*/
	var oTarget		= this.checkTarget(oTarget);
	var oLi			= document.createElement('li');

	oTarget.appendChild(oLi);

	if (sText) {
		oLi.id = oTarget.id + sText.toLowerCase();
		if (sLink) {
			this.createLink(oLi,sLink,sText,sTarget,sOnClick);
		} else {
			this.createText(oLi,sText);
		}
	}
	return oLi;
};

DOMUtil.createLink = function (oTarget,sLink,sText,sTarget,sOnClick) {

	var oTarget		= this.checkTarget(oTarget);
	var oLink		= document.createElement('a');
	if (sText) {
		this.createText(oLink,sText);
	}


	if (sOnClick) {
		oLink.href		= 'javascript:;';
		oLink.onclick = function() {
			new net.ContentLoader('/ajax.php',updateUI,DIVUtil.setSysmsg,'POST',sOnClick);
			return false;
		}
	} else {
		oLink.href		= sLink;
		oLink.onclick = function() {
			if (sTarget) {
				window.open(sLink, sTarget);
				return false;
			} else {
				document.location = sLink;
			}
		}
	}
	oTarget.appendChild(oLink);
	return oLink;
}

DOMUtil.createList = function (oTarget,sId,sType,sClass) {
	var oTarget		= this.checkTarget(oTarget);
	if (!sType) {
		var sType	= 'ul';
	}
	var oList		= document.createElement(sType);
	if (sId) {
		this.setId(oList,sId);
	}
	if (sClass) {
		this.setClass(oList,sClass);
	}
	oTarget.appendChild(oList);
	return oList;
};

DOMUtil.createParagraph = function (oTarget,oText,sId) {
	var oTarget		= this.checkTarget(oTarget);
	var oParagraph	= document.createElement('p');

	if (!oText) {
		oText = '';
	}

	if (oText.length > 1) {
		if (typeof(oText) == 'string') {
			this.createText(oParagraph,oText);
		} else {
			for (ii = 0; ii < oText.length; ii++) {
				if (typeof(oText[ii]) == 'object') {
					oParagraph.appendChild(oText[ii]);
				}
			}
		}
	} else {
		if (typeof(oText) == 'object') {
			oParagraph.appendChild(oText);
		} else {
			this.createText(oParagraph,oText);
		}
	}
	if (sId) {
		var oOldElement = document.getElementById(sId);
		if (oOldElement) {
			oTarget.replaceChild(oParagraph,oOldElement);
		} else {
			oTarget.appendChild(oParagraph);
		}
		this.setId(oParagraph,sId);
	} else {
		oTarget.appendChild(oParagraph);
	}

	return oParagraph;
};

DOMUtil.createSpan = function (oTarget,sText,bFirst) {
	var oTarget		= this.checkTarget(oTarget);
	var oSpan		= document.createElement('span');

	if (sText) {
		this.createText(oSpan,sText);
	}

	if (bFirst == true && oTarget.hasChildNodes() == true) {
		oTarget.insertBefore(oSpan,oTarget.firstChild);
	} else {
		oTarget.appendChild(oSpan);
	}

	return oSpan;
};

DOMUtil.createText = function (oTarget,sText) {
	var oTarget		= this.checkTarget(oTarget);
	var oText		= document.createTextNode(sText);
	oTarget.appendChild(oText);
};

DOMUtil.createTable = function (oTarget,sId) {
	var oTarget		= this.checkTarget(oTarget);
	var oTable		= document.createElement('table');
	var oOldTable	= document.getElementById(sId);
	var oTBody		= document.createElement('tbody');

	oTable.createTHead();
	oTable.appendChild(oTBody);

	if (oOldTable) {
		oTarget.replaceChild(oTable,oOldTable);
	} else {
		oTarget.appendChild(oTable);
	}
	this.setId(oTable,sId);

	return oTable;
};

DOMUtil.addRow = function (oTarget,sId) {
	var oTarget		= this.checkTarget(oTarget);
	alert(oTarget.rows.length);
//	this.setId(oTable,sId);
};

DOMUtil.addCell = function(oTarget,sStr) {
	var oTarget		= this.checkTarget(oTarget);
	oTarget.rows.length;
};
