

/*
	***********************************************

	Custom DOM Functions

	***********************************************
*/

function roundCorners(div,size,tb,innercolor)
{
	if (typeof(document.getElementById) != "undefined")
	{
		elmtHndl = document.getElementById((typeof(div)=="string"?div:div.attr('id')));
		// unfinished
		if (typeof(size) == "undefined") size = "large";
		if (typeof(tb) == "undefined") tb = "both";
		if (typeof(innercolor) == "undefined") innercolor = "";
		if (typeof elmtHndl.insertBefore != "undefined")
		{
			if (tb == "both" || tb == "top")
			{
				elmtHndl.insertBefore(createDOMSpan(null,"","","cb-tl"+(innercolor > "" ? "-"+innercolor : "")),elmtHndl.firstChild);
				elmtHndl.insertBefore(createDOMSpan(null,"","","cb-tr"+(innercolor > "" ? "-"+innercolor : "")),elmtHndl.firstChild.nextSibling);
			}
			if (tb == "both" || tb == "bottom")
			{
				elmtHndl.insertBefore(createDOMSpan(null,"","","cb-bl"+(innercolor > "" ? "-"+innercolor : "")),elmtHndl.lastChild.nextSibling);
				elmtHndl.insertBefore(createDOMSpan(null,"","","cb-br"+(innercolor > "" ? "-"+innercolor : "")),elmtHndl.lastChild.nextSibling);
			}
			return true;
		}
		else
		{
// needs support for doing either just top or bottom
			elmtHndl.innerHTML = "<span class=\"cb-tl\"></div><span class=\"cb-tr\"></div>" + //<div class=\"clear\"></div>
							elmtHndl.innerHTML + 
							"<span class=\"cb-bl\"></div><span class=\"cb-br\"></div>"; //<div class=\"clear\"></div>
			return true;
		}
	}
	return false;
}

function roundCorners2(div,size,tb,innercolor)
{
	if (typeof(document.getElementById) != "undefined")
	{
		elmtHndl = document.getElementById(div);
		// unfinished
		if (typeof(size) == "undefined") size = "large";
		if (typeof(tb) == "undefined") tb = "both";
		if (typeof(innercolor) == "undefined") innercolor = "c1";
		if (typeof elmtHndl.insertBefore != "undefined")
		{
			if (tb == "both" || tb == "top")
			{
				elmtHndl.insertBefore(createDOMLayer(null,"","",innercolor+"-tl"),elmtHndl.firstChild);
				elmtHndl.insertBefore(createDOMLayer(null,"","",innercolor+"-tr"),elmtHndl.firstChild.nextSibling);
				elmtHndl.insertBefore(createDOMLayer(null,"","","clear"),elmtHndl.childNodes[1].nextSibling);
			}
			if (tb == "both" || tb == "bottom")
			{
				elmtHndl.insertBefore(createDOMLayer(null,"","",innercolor+"-bl"),elmtHndl.lastChild.nextSibling);
				elmtHndl.insertBefore(createDOMLayer(null,"","",innercolor+"-br"),elmtHndl.lastChild.nextSibling);
				elmtHndl.insertBefore(createDOMLayer(null,"","","clear"),elmtHndl.lastChild.nextSibling);
			}
			return true;
		}
		else
		{
// needs support for doing either just top or bottom
			elmtHndl.innerHTML = "<div class=\"cb-tl\"></div><div class=\"cb-tr\"></div><div class=\"clear\">" + 
							elmtHndl + 
							"<div class=\"cb-bl\"></div><div class=\"cb-br\"></div><div class=\"clear\">"
			return true;
		}
	}
	return false;
}

function uDefChkBox() {
	var args = uDefChkBox.arguments;
	var chkHndl = getCtrlHndlbyTagName(args[0],"img");
	var frmHndl = (args[1] > "" ? getCtrlHndlbyTagName(args[1],"form") : chkHndl.parentNode);
	var chkVal = (args.length > 2 && args[2].length > 0 ? args[2] : "1");
	
	if (args[3] == "status") {
		if (chkHndl.src.indexOf('unchecked') > 0) {
			return "unchecked";
		} else {
			return "checked";
		}
	} else if (chkHndl.src.indexOf('unchecked') > 0) {
		chkHndl.src = udchk_checked;  // change image
		var hfHndl = appendInput(frmHndl,"hidden",args[0],chkVal);
	} else {
		// remove the form value
		deleteInput(args[0]);
		chkHndl.src = udchk_unchecked;  // change image
	}

	return;
}


/*
	***********************************************

	DOM Table Prototype v1

	***********************************************
*/


function domTable(content,attributes,columnorder)
{
    this.hndl = document.createElement('table');
	if (typeof(attributes) != "undefined")
	{
        for (var attr in attributes)
        {
	        this.hndl.setAttribute(attr, attributes[attr]);
	    }
	}

    for (var rowcontent in content)
        if (rowcontent != "attributes" && rowcontent != "columnorder")
			this.addRow(content[rowcontent], content[rowcontent].attributes || null, columnorder || null);

}

domTable.prototype.addRow = function(content,attributes,orderby)
{
    var x = 0;
    var rHndl = this.hndl.insertRow(this.hndl.rows.length);
    if (attributes != null && typeof(attributes.length) == "undefined")
        for (var attr in attributes)
            rHndl.setAttribute(attr, attributes[attr]);
	var cols = orderby || content;
    for (var col in cols)
    {
		if (content[col] != "undefined")
		{
			if (col != "attributes")
			{
				newCell = rHndl.insertCell(x);
				newCell.innerHTML = content[col];
			}
			if (attributes != null && typeof(attributes.length) != "undefined")
			{
				attribs = attributes[x];
				for (var attr in attribs)
					newCell.setAttribute(attr, attribs[attr]);
			}
			x++;
		}
    }
}

domTable.prototype.removeRowById = function(rowid)
{
    var tblrows = this.hndl.rows;
    for (r=0;r<tblrows.length;r++)
        if(rowid == tblrows.id) this.removeRowById(r);
}

domTable.prototype.removeRow = function(rowidx)
{
    this.hndl.deleteRow(rowidx);        
}


/*
	***********************************************

	DOM Functions

	***********************************************
*/

function createDOMLayer()
{
	var args = createDOMLayer.arguments
	var dHndl = args[0];

	// create the Layer
	var ndHndl = document.createElement('div');
	// set attributes
	ndHndl.innerHTML = args[1];
	if (args.length > 2 && args[2].length > 0) ndHndl.setAttribute("align", args[2]);
	if (args.length > 3 && args[3].length > 0) ndHndl.setAttribute("class", args[3]);
	if (args.length > 4 && args[4].length > 0) ndHndl.setAttribute("id", args[4]);
	if (args.length > 5 && args[5].length > 0) ndHndl.setAttribute("style", args[5]);
	// append Layer
	if (dHndl) dHndl.appendChild(ndHndl);

	return ndHndl;
}

function createDOMSpan()
{
	var args = createDOMSpan.arguments
	var dHndl = args[0];

	// create the Layer
	var ndHndl = document.createElement('span');
	// set attributes
	ndHndl.innerHTML = args[1];
	if (args.length > 2 && args[2].length > 0) ndHndl.setAttribute("align", args[2]);
	if (args.length > 3 && args[3].length > 0) ndHndl.setAttribute("class", args[3]);
	if (args.length > 4 && args[4].length > 0) ndHndl.setAttribute("id", args[4]);
	if (args.length > 5 && args[5].length > 0) ndHndl.setAttribute("style", args[5]);
	// append Layer
	if (dHndl) dHndl.appendChild(ndHndl);

	return ndHndl;
}

function createDOMForm() {
	var dHndl = createDOMForm.arguments[0];

	// create the form
	var fHndl = document.createElement('form');
	// set attributes
	fHndl.setAttribute("action", createDOMForm.arguments[1]);
	fHndl.setAttribute("method", createDOMForm.arguments[2]);
	fHndl.setAttribute("id", createDOMForm.arguments[3]);
	// append form
	dHndl.appendChild(fHndl);

	return fHndl;
}

function createDOMTable() {
	var dHndl = createDOMTable.arguments[0];
		
	// create the table
	var tHndl = document.createElement('table');
	// set attributes
	tHndl.setAttribute("width", createDOMTable.arguments[1]);
	tHndl.setAttribute("border", createDOMTable.arguments[2]);
	tHndl.setAttribute("align", "center");
	tHndl.setAttribute("cellspacing", "1");
	tHndl.setAttribute("cellpadding", "3");
	//tHndl.setAttribute("id", "datable");
	// append table
	dHndl.appendChild(tHndl);
	
	return tHndl;
}
		
function createDOMInput() {
	// create input
	var iHndl = document.createElement('input');
	// set attributes
	iHndl.setAttribute("type", createDOMInput.arguments[1]);
	iHndl.setAttribute("name", createDOMInput.arguments[2]);
	iHndl.setAttribute("value", createDOMInput.arguments[3]);
	// append to form
	createDOMInput.arguments[0].appendChild(iHndl);
	return iHndl;
}

// example createDOMSelect(formHandle,"mylist",1,new Array("Option 1", "1"),new Array("Option 2", "2"))
function createDOMSelect() {
	var args = createDOMSelect.arguments;
	// create input
	var sHndl = document.createElement('select');
	// set attributes
	sHndl.setAttribute("name", args[1]);
	sHndl.setAttribute("size", args[2]);
	// create options list
	if (args.length > 3) {
		var opHndl, opArray;
		for (c=3; c < args.length; c++) {
			opArray = args[c];
			opHndl = document.createElement('option');
			// append to select
			sHndl.appendChild(opHndl);
			opHndl.text = opArray[0];
			opHndl.value = opArray[1];
		}
	}
	// append to form
	args[0].appendChild(sHndl);
	return sHndl;
}

function appendOption(sel,text,value)
{
	opHndl = document.createElement('option');
	sel.appendChild(opHndl);
	opHndl.text = text;
	opHndl.value = value;
}

// v2.1
function addTableCols() {
	var tHndl = addTableCols.arguments[0];
	var rPos = addTableCols.arguments[1];
	var colArray = addTableCols.arguments[2];
	var colAlign = addTableCols.arguments[3];
	var colSpan = addTableCols.arguments[4];
	var rowSpan = addTableCols.arguments[5];
	var colClass = addTableCols.arguments[6];
	var colWidth = addTableCols.arguments[7];
	var c,newCell;
	
	if (colArray.length > 0) {
		var rHndl = tHndl.insertRow(rPos);
		for (c=0; c < colArray.length; c++) {
			newCell = rHndl.insertCell(c);
			newCell.innerHTML = colArray[c];
			newCell.setAttribute("align" ,(typeof colAlign == "array") ? colAlign[c] : colAlign);
			newCell.setAttribute("colspan" ,(typeof colSpan == "array") ? colSpan[c] : colSpan);
			newCell.setAttribute("rowspan" ,(typeof rowSpan == "array") ? rowSpan[c] : rowSpan);
			newCell.setAttribute("class" ,(typeof colClass == "array") ? colClass[c] : colClass);
			newCell.setAttribute("width" ,(typeof colWidth == "array") ? colWidth[c] : colWidth);
		}
	}

	return rHndl;
}

function clearTableRows(parntHndl) {
	var l = parntHndl.rows.length;
	while (parntHndl.rows.length>0) parntHndl.deleteRow(0);
	return l;
}

function removeTableRow(parntName,elemID) {
	var tblHndl = getCtrlHandle(parntName); //.deleteRow();
	for (x=0;x<tblHndl.rows.length;x++) {
		if (tblHndl.rows[x].id = elemID) tblHndl.deleteRow(x);
	}
	//return getCtrlHandle(parntName).removeChild(getCtrlHandle(elemID));
}

function appendInput() {
	var args = appendInput.arguments;
	var frmHndl = (!isString(args[0]) ? args[0] : getCtrlHandle(args[0]));
	var inpType = (args[1].length > 0 ? args[1] : "hidden");

	if (document.all) {
		// this is done because IE doesn't seem handle appendChild correctly
		frmHndl.innerHTML = "<input type=\""+inpType+"\" name='"+args[2]+"' value="+args[3]+">" + frmHndl.innerHTML;
	} else {
		var hfHndl = createDOMInput(frmHndl,inpType,args[2],args[3]);
	}
	
	return frmHndl;
}

function deleteInput() {
	var args = deleteInput.arguments;
	var delCount = 0;

	var cbFlds = document.getElementsByName(args[0]);
	for (c=0;c<cbFlds.length;c++) {
		var fTagName = cbFlds.item(c).tagName.toLowerCase();
		if (fTagName.indexOf("input") > -1) {
			//alert(cbFlds.item(c).name+"/"+cbFlds.item(c).value);
			cbFlds.item(c).parentNode.removeChild(cbFlds.item(c));
			delCount++;
		}
	}

	return delCount;
}
// add item to select element the less
// elegant, but compatible way.
function appendToSelect(select, value, content) {
    var opt;
    opt = document.createElement("option");
    opt.value = value;
    opt.appendChild(content);
    select.appendChild(opt);
}

// clears the list of options
function clearOptions(selcName)
{
	ctrlHndl = document.getElementById(selcName);
	for (x=0;x<=ctrlHndl.length;x++)
	{
		ctrlHndl.options[x] = null;
	}
	return;
}

function getChildNodebyId(parent,id)
{
	if (parent.childNodes.length > 0)
	   for (var i = 0; i < parent.childNodes.length; i++) if (parent.childNodes[i].id == id) return parent.childNodes[i];

	return null;
}


