// ********************************************************************************************
// General DOM routines © Ben Johnson, 2004
// 	- REQUIRES: [core], [js.strings]
// ********************************************************************************************
SetModStatus("dom.core", "ready");


// ROUTINES ***********************************************************************************

// adds a row to specified TBODY, containing a column for each HTML string in asColsHtml
function AddTR(oTBody, asColsHtml) {
	var d = oTBody.ownerDocument;
	var oCell, oRow = d.createElement("TR");
	oTBody.appendChild(oRow);
	for(i=0; i<asColsHtml.length; i++) {
		oCell = d.createElement("TD");
		oCell.innerHTML = asColsHtml[i];
		oRow.appendChild(oCell);
	}
}

// appends specified HTML to end of specified element, using method suited to browser type
function AppendHTML(oElem, sHtml) {
	if(oElem.insertAdjacentHTML)
		oElem.insertAdjacentHTML("beforeEnd", sHtml);		// avoids prob where changing innerHTML can interfere with IE standards mode
	else if(oElem.innerHTML)
		oElem.innerHTML += sHtml;
	else
		ThrowErr("AppendHTML: no known method to append HTML to specified element");
}


// scrolls to element with specified ID (Netscape compatible)
function ScrollToEl( sID ) {
	oEl = Ptr(sID);
	if(bNetscape)
		scrollTo(0, oEl.offsetTop);
	else
		oEl.scrollIntoView();
}


// CSS ROUTINES *******************************************************************************

// add a CSS class to specified object, unless already present
function AddCssClass(oEl, sCssClass) { if(oEl && oEl.className && !HasCssClass(oEl, sCssClass)) oEl.className += " "+sCssClass }
// remove a CSS class from specified object (matches 
function RemCssClass(oEl, sCssClass) { if(oEl && oEl.className) oEl.className = oEl.className.replace(RegExp("(^|\\s*)"+ sCssClass +"(\\s*|$)", "g"), "$2"); }
// return true if specified element has specified CSS class, else false
function HasCssClass(oEl, sCssClass) { return (oEl && oEl.className && RegExp("(^|\\s)"+ sCssClass +"(\\s|$)").test(oEl.className)); }
