
var numb=1;

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

/* cloneRow
* Clones a row when a cell has been clicked on
* Given a reference to the cell, clones the row and inserts it
* before nextSibling.
* If the nextSibling doesn't exist, it doesn't matter, the
* newElement is put immediately after the the row anyway.
*/

function cloneRow(theCell) {

var newElement, cell, thisRow;
if((cell = theCell.parentNode) && (thisRow = cell.parentNode)) {


var thisRow_textareas= thisRow.getElementsByTagName('textarea');
var thisRow_selects= thisRow.getElementsByTagName('select');
var thisRow_inputs= thisRow.getElementsByTagName('input');
var i;

var newElement = thisRow.cloneNode(true);

newElement.className='';

var headerCells = newElement.getElementsByTagName('th');
for(i=0;i<headerCells.length;i++)
	{	
	headerCells[i].innerHTML='';
	}

var textareas= newElement.getElementsByTagName('textarea');

for(i=0;i<textareas.length;i++)
	{	
	var oldName=updateName(textareas[i].name);
	textareas[i].name=oldName;
	textareas[i].value=thisRow_textareas[i].value;
	}

var selects= newElement.getElementsByTagName('select');

for(i=0;i<selects.length;i++)
	{	
	var oldName=updateName(selects[i].name);
	selects[i].name=oldName;

		//multiple select box options
		for (var j=0; j<thisRow_selects[i].options.length; j++) {
			selects[i].options[j].selected=false; //unselect for ffox
			if (thisRow_selects[i].options[j].selected) {
			selects[i].options[j].selected=true;			
			}
		}
	//selects[i].options.selectedIndex=thisRow_selects[i].options.selectedIndex;///for non-multiple selects
	}

var inputs= newElement.getElementsByTagName('input');

for(i=0;i<inputs.length;i++)
	{	
	var oldName=updateName(inputs[i].name);
	inputs[i].name=oldName;
	inputs[i].value=thisRow_inputs[i].value;
	}

numb++
thisRow.parentNode.insertBefore(newElement,thisRow.nextSibling);
}}

function updateName(oName){
var old_Name=oName.split("__");
old_Name=old_Name[0];
old_Name=old_Name + "__" + numb;
return old_Name;
}

/* deleteRow
* Deletes a row when a cell is clicked on.
* Gets a reference to the row that the cell is in, then deletes the
* entire row from the table.
*/
function deleteRow(theCell) {
if((cell = theCell.parentNode) && (thisRow = cell.parentNode)) {

var thisRow = theCell.parentNode.parentNode;
	if(thisRow.rowIndex > 1) {
	//alert(thisRow.rowIndex);
	thisRow.parentNode.removeChild(thisRow);
	} 
	else{
	alert("cannot delete first row");
	}

}}
