﻿function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

//===========================================================
var NUMRECIPS = 20;
var current = 2;
var adder = document.getElementById("addrecip");
adder.onclick = showAnotherRecip;

loadHandlersOnRemovers();

function loadHandlersOnRemovers()
{
    var removers = getElementsByClassName("remove");
    
    for(var i=0; i < NUMRECIPS - 1; i++)
    {
       removers[i].onclick = nukeRow;
    }

}

function nukeRow()
{
    //clear any data entered
    returnSpecificNodeType(returnSpecificNodeType(this.parentNode.parentNode, "TD"),"INPUT").value = "";
    var startNode;
    if (this.parentNode.parentNode.childNodes.length < 5)
        startNode = 1;
    else
        startNode = 3;

    returnSpecificNodeType(returnSpecificNodeType(this.parentNode.parentNode, "TD", startNode),"INPUT").value = "";
    
    //hide the row
    this.parentNode.parentNode.className = "hide";
}

//dig out the specified element
function returnSpecificNodeType(node, type, startNode)
{
    if (!startNode)
        var i = 0; 
    else
        var i = startNode;
    
    while(node.childNodes[i] && node.childNodes[i].nodeName != type)
    {
        i++;
    }
    
    return node.childNodes[i];
}

function showAnotherRecip(e)
{
    if (current > NUMRECIPS)
        return false;
        
    var recipToShow = document.getElementById("recip" + current);
    
    recipToShow.className = "";
    
    current ++;
    
    if (current > NUMRECIPS)
        this.className = "hide";
    
    return false;
}




