function init() {
    try {
        if (currentPage == "menuEdit") {
            removeEmptySpaces("def");
            makeIngTable("def");
            removeEmptySpaces("main");
            makeIngTable("main");
            removeEmptySpaces("opt");
            makeIngTable("opt");
            removeEmptySpaces("choi");
            makeChoiIngTable();
        }
        else {
            if (currentPage == "restaurantEdit") {
                initTimes();
            }
            else {
                if (currentPage == "categoryEdit") {
                    initCategoryTimes();
                }
            }
        }
    }
    catch(er) {
        //do nothing if not the menu edit page
    }
}

function removeEmptySpaces(ingType) {
    dv = document.getElementById(ingType + 'IngDiv');
    nds = dv.childNodes;
    for (i = 0; i < nds.length; i++) {
        if (nds[i].nodeType == 3) {
            dv.removeChild(nds[i]);
        }
    }
}

function makeIngTable(ingType) {
    dv = document.getElementById(ingType + 'IngDiv');
    nds = dv.childNodes;
    table = "<table class=\"list\">";
    val = "";
    for (i = 0; i < nds.length; i++) {
        name = ingType + "IngTd" + i;
        val = nds[i].getAttribute("value");
        val = val.substr(val.indexOf("@") + 1);
        if (val.indexOf("$") >= 0) {
            newVal = val.substr(0, val.indexOf("$"));
            price = val.substr(val.indexOf("$") + 1);
            table = table + "<tr><td id=\"" + name + "\" width=\"100%\" onclick=\"selectRow('" + name + "')\">" + newVal + "</td><td>$<input type=\"text\" id=\"" + name + "Price\" value=\"" + price + "\" size=\"5\" style=\"text-align:right;\" onchange=\"updatePrice('" + name + "');\" /></td></tr>"
        }
        else {
            newVal = val;

            if (val.indexOf("(") >= 0) {            
                newVal = val.substr(0, val.indexOf("("));
            }
            table = table + "<tr><td id=\"" + name + "\" onclick=\"selectRow('" + name + "')\">" + newVal + "</td></tr>"
        }
    }
    
    if (val.indexOf("^") > 0) {
        hideEasy = val.substr(val.indexOf("^") + 1, 1);
        hideSide = val.substr(val.indexOf("^") + 2, 1);
        document.getElementById("hideEasy").checked = hideEasy == 1;
        document.getElementById("hideSide").checked = hideSide == 1;
    }
    table = table + "<tr height=\"100%\"><td>&nbsp;</td></tr></table>"
    document.getElementById(ingType + "IngTable").innerHTML = table;
}

function makeChoiIngTable() {
    dv = document.getElementById('choiIngDiv');
    nds = dv.childNodes;
    table = "<table class=\"list\">";
    for (i = 0; i < nds.length; i++) {
        name = "choiIngTd" + i;
        val = nds[i].value;
        pos1 = val.indexOf(":");
        pos2 = val.indexOf(":", pos1 + 1);
        pos3 = val.indexOf("-");
        subj = val.substring(0, pos1);
        min = val.substring(pos1 + 1, pos3);
        max = val.substring(pos3 + 1, val.indexOf("|"));
        document.getElementById("min").value = min;
        document.getElementById("max").value = max;
        table = table + "<tr><td id=\"" + name + "\" onclick=\"selectChoiRow('" + name + "')\">" + subj + "</td></tr>";
        j = 0;
        pos1 = val.indexOf("|");
        while (pos1 < val.lastIndexOf("|")) {
            pos2 = val.indexOf("|", pos1 + 1);
            sub = val.substring(pos1 + 1, pos2);
            sub = sub.substring(sub.indexOf("@") + 1);
            newVal = sub.substr(0, sub.indexOf("$"));
            price = sub.substr(sub.indexOf("$") + 1);
            table = table + "<tr><td id=\"" + name + "Sub" + j + "\" colspan=\"2\" style=\"padding:0 0 0 25;\" onclick=\"selectChoiRow('" + name + "Sub" + j + "')\">" + newVal + "</td><td>$<input type=\"text\" id=\"" + name + "Sub" + j + "Price\" value=\"" + price + "\" size=\"5\" style=\"text-align:right;\" onchange=\"updatePrice('" + name + "Sub" + j + "');\" /></td></tr>"

            pos1 = pos2;
            j++;
        }
    }
    table = table + "<tr height=\"100%\"><td>&nbsp;</td></tr></table>";
    document.getElementById("choiIngTable").innerHTML = table;
}

//This function makes the item look selected;
function selectRow(name) {
    elem = document.getElementById(name);
    ingType = name.substring(0, name.indexOf("Ing"));
    idx = name.substr(name.indexOf("Td") + 2);
    selectedObj = document.getElementById(ingType + "IngSelected");
    idx2 = selectedObj.getAttribute("value");
    if ( document.getElementById(ingType+"Ing"+idx) !=null) {
        val = document.getElementById(ingType+"Ing"+idx).getAttribute("value");
        hideEasy = val.substr(val.indexOf("(") + 1, 1);
        hideSide = val.substr(val.indexOf(")") + 1, 1);
        document.getElementById("hideEasy").checked = hideEasy == 1;
        document.getElementById("hideSide").checked = hideSide == 1;
    }
    if (idx2 == idx) {
        elem.style.color = "black";
        elem.style.background = "white";
        selectedObj.setAttribute("value", -1);
    }
    else {
        elem.style.color = "white";
        elem.style.background = "blue";
        if (idx2 != "-1") {
            elem2 = document.getElementById(ingType + "IngTd" + idx2);
            elem2.style.color = "black";
            elem2.style.background = "white";
        }
        selectedObj.setAttribute("value", idx);
    }
}

function selectChoiRow(name) {
    selectedObj = document.getElementById("choiIngSelected");
    elem = document.getElementById(name);
    idx1 = 0;
    if (name.indexOf("Sub") < 0) {
        idx1 = name.substr(name.indexOf("Td") + 2);
    }
    else {
        idx1 = name.substring(name.indexOf("Td") + 2, name.indexOf("Sub"));
    }
    if (elem.style.color == "white") {
        elem.style.color = "black";
        elem.style.background = "white";
        selectedObj.setAttribute("value", "-1");
    }
    else {
        elem.style.color = "white";
        elem.style.background = "blue";
        val = selectedObj.getAttribute("value");
        if (val != "-1") {
            if (val.indexOf(".") > 0) {
                elem2 = document.getElementById("choiIngTd" + val.charAt(0) + "Sub" + val.charAt(2));
                elem2.style.color = "black";
                elem2.style.background = "white";
            }
            else {
                elem2 = document.getElementById("choiIngTd" + val.charAt(0));
                elem2.style.color = "black";
                elem2.style.background = "white";
            }
        }
        if (name.indexOf("Sub") > 0) {
            idx2 = name.substr(name.indexOf("Sub") + 3);
            selectedObj.setAttribute("value", idx1 + "." + idx2);
            document.getElementById("minMaxDiv").style.display = "none";
        }
        else {
            selectedObj.setAttribute("value", idx1);
            document.getElementById("minMaxDiv").style.display = "inline";
            //here we populate the min/max values
            choiElem = document.getElementById("choiIng" + idx1);
            val = choiElem.value;
            min = val.substring(val.indexOf(":") + 1, val.indexOf("-"));
            max = val.substring(val.indexOf("-") + 1, val.indexOf("|"));
            document.getElementById("min").value = min;
            document.getElementById("max").value = max;
        }
    }
}

function add(ingType, input) {

    if (input.length > 0) {
        selectedObj = document.getElementById(ingType + "IngSelected");
        selectedVal = selectedObj.getAttribute("value");
        nodes = document.getElementById(ingType + "IngDiv").childNodes;
        count = nodes.length;
        ing = document.createElement('INPUT');
        ing.type = "hidden";
        ing.value = "-1~"+input;
        if (ingType == "opt") {
            ing.value = ing.value + "$0.00";
        }
        if (ingType == "def") {
            ing.value = ing.value + "(0)0";
        }
        ing.id = ingType + "Ing" + count;
        ing.name = ingType + "Ing";
        document.getElementById(ingType + "IngDiv").appendChild(ing);
        if (selectedVal >= 0) {
            selectedVal++;
            for (i = count; i > selectedVal; i--) {
                val = nodes[i].getAttribute("value");
                val2 = nodes[i - 1].getAttribute("value");
                nodes[i].setAttribute("value", val2);
                nodes[i - 1].setAttribute("value", val);
            }
            count = selectedVal;
        }
        makeIngTable(ingType);
        selectRow(ingType + "IngTd" + count++);
    }
}

function addChoiHead(input) {
    if (input.length > 0) {
        count = document.getElementById("choiIngDiv").childNodes.length;
        ing = document.createElement('INPUT');
        ing.type = "hidden";
        ing.value = input + ":1-1" + "|";
        ing.id = "choiIng" + count;
        ing.name = "choiIng";
        document.getElementById("choiIngDiv").appendChild(ing);
        //alert(ing.toSource());
        makeChoiIngTable();
        selectChoiRow("choiIngTd" + count++);
    }
}

function addChoiSub(input) {
    if (input.length > 0) {
        idx1 = document.getElementById("choiIngDiv").childNodes.length;
        idx1--;
        idx2 = 0;
        selectedObj = document.getElementById("choiIngSelected");
        selectedVal = selectedObj.getAttribute("value");
        if (selectedVal >= 0) {
            idx1 = selectedVal.charAt("0");
            elem = document.getElementById("choiIng" + idx1);
            val = elem.getAttribute("value");

            //if Sub is selected
            if (selectedVal.indexOf(".") > 0) {
                idx2 = selectedVal.charAt("2");
                idx2++;
                pos = val.indexOf("|");
                for (i = 0; i < idx2; i++) {
                    pos = val.indexOf("|", pos + 1);
                }
                val = val.substring(0, pos) + "|" + "-1~"+ input + "$0.00" + val.substring(pos);
            }
                //if Head is selected
            else {
                val = elem.getAttribute("value");
                val = val +"-1~"+ input + "$0.00" + "|";
                for (i = 0; i < val.length; i++) {
                    if (val.charAt(i) == "|") {
                        idx2++;
                    }
                }
                idx2 = idx2 - 2;
            }
            elem.setAttribute("value", val);
        }
        else {
            elem = document.getElementById("choiIng" + idx1);
            val = elem.getAttribute("value");
            val = val + "-1~"+ input + "$0.00" + "|";
            elem.setAttribute("value", val);
            cnt = 0;
            for (i = 0; i < val.length; i++) {
                if (val.charAt(i) == "|") {
                    cnt++;
                }
            }
            idx2 = cnt - 2;
        }
    }
    makeChoiIngTable();
    selectChoiRow("choiIngTd" + idx1 + "Sub" + idx2);
}

function deleteSelected(ingType) {

    selectedObj = document.getElementById(ingType + "IngSelected")
    selectedValue = selectedObj.getAttribute("value");
    if (selectedValue >= 0) {
        ingDiv = document.getElementById(ingType + "IngDiv");
        nodes = ingDiv.childNodes;
        ingDiv.removeChild(nodes[selectedValue]);
        makeIngTable(ingType);
        selectedObj.setAttribute("value", "-1");
    }
}

function deleteChoiSelected() {

    selectedObj = document.getElementById("choiIngSelected")
    selectedValue = selectedObj.getAttribute("value");
    if (selectedValue >= 0) {
        ingDiv = document.getElementById("choiIngDiv");
        nodes = ingDiv.childNodes;
        if (selectedValue.indexOf(".") < 0) {
            ingDiv.removeChild(nodes[selectedValue]);
            for (i = selectedValue; i < nodes.length; i++) {
                id = nodes[i].getAttribute("id");
                idx = id.substr(id.indexOf("Ing") + 3);
                nodes[i].setAttribute("id", "choiIng" + (idx - 1));
            }
            makeChoiIngTable();
            selectedObj.setAttribute("value", "-1");
        }
        else {
            idx1 = selectedValue.substring(0, selectedValue.indexOf("."));
            idx2 = selectedValue.substr(2);
            elem = nodes[idx1];
            val = elem.getAttribute("value");
            pos = val.indexOf("|");
            for (i = 0; i < idx2; i++) {
                pos = val.indexOf("|", pos + 1);
            }
            pos2 = val.indexOf("|", pos + 1);
            newVal = val.substring(0, pos);
            newVal = newVal + val.substr(pos2);
            elem.setAttribute("value", newVal);
            makeChoiIngTable();
            selectedObj.setAttribute("value", "-1");
        }
    }
}

function moveUp(ingType) {

    selectedObj = document.getElementById(ingType + "IngSelected");
    selectedIdx = selectedObj.getAttribute("value");
    replaceIdx = selectedIdx;
    replaceIdx--;

    if (selectedIdx > 0) {
        dv = document.getElementById(ingType + "IngDiv")
        nds = dv.childNodes;
        val1 = nds[selectedIdx].getAttribute("value");
        val2 = nds[replaceIdx].getAttribute("value");
        nds[selectedIdx].setAttribute("value", val2);
        nds[replaceIdx].setAttribute("value", val1);
        makeIngTable(ingType);
        selectRow(ingType + "IngTd" + replaceIdx);
    }
}

function moveDown(ingType) {

    selectedObj = document.getElementById(ingType + "IngSelected");
    selectedIdx = selectedObj.getAttribute("value");
    replaceIdx = selectedIdx;
    replaceIdx++;
    dv = document.getElementById(ingType + "IngDiv")
    nds = dv.childNodes;

    if (selectedIdx >= 0 && selectedIdx < dv.childNodes.length - 1) {
        val1 = nds[selectedIdx].getAttribute("value");
        val2 = nds[replaceIdx].getAttribute("value");
        nds[selectedIdx].setAttribute("value", val2);
        nds[replaceIdx].setAttribute("value", val1);
        makeIngTable(ingType);
        selectRow(ingType + "IngTd" + replaceIdx);
    }
}

function moveChoiUp() {

    selectedObj = document.getElementById("choiIngSelected");
    selectedVal = selectedObj.getAttribute("value");
    if (selectedVal > 0) {
        if (selectedVal.indexOf(".") < 0) {
            replaceIdx = selectedVal;
            replaceIdx--;
            dv = document.getElementById("choiIngDiv")
            nds = dv.childNodes;
            val1 = nds[selectedVal].getAttribute("value");
            val2 = nds[replaceIdx].getAttribute("value");
            nds[selectedVal].setAttribute("value", val2);
            nds[replaceIdx].setAttribute("value", val1);
            makeChoiIngTable();
            selectChoiRow("choiIngTd" + replaceIdx);
        }
        else {
            if (selectedVal.substr(2) > 0) {
                idx1 = selectedVal.charAt(0);
                idx2 = selectedVal.charAt(2);
                elem = document.getElementById("choiIng" + idx1);
                val = elem.getAttribute("value");
                pos1 = val.indexOf("|");
                for (i = 0; i < idx2 - 1; i++) {
                    pos1 = val.indexOf("|", pos1 + 1);
                }
                pos2 = val.indexOf("|", pos1 + 1);
                pos3 = val.indexOf("|", pos2 + 1);
                newVal = val.substring(0, pos1);
                newVal = newVal + val.substring(pos2, pos3);
                newVal = newVal + val.substring(pos1, pos2);
                newVal = newVal + val.substr(pos3);
                elem.setAttribute("value", newVal);
                makeChoiIngTable();
                selectChoiRow("choiIngTd" + idx1 + "Sub" + --idx2);
            }
        }
    }
}

function moveChoiDown() {

    selectedObj = document.getElementById("choiIngSelected");
    selectedVal = selectedObj.getAttribute("value");
    if (selectedVal >= 0) {
        if (selectedVal.indexOf(".") < 0) {
            replaceIdx = selectedVal;
            replaceIdx++;
            dv = document.getElementById("choiIngDiv")
            nds = dv.childNodes;
            if (selectedVal < nds.length - 1) {
                val1 = nds[selectedVal].getAttribute("value");
                val2 = nds[replaceIdx].getAttribute("value");
                nds[selectedVal].setAttribute("value", val2);
                nds[replaceIdx].setAttribute("value", val1);
                makeChoiIngTable();
                selectChoiRow("choiIngTd" + replaceIdx);
            }
        }
        else {
            elem = document.getElementById("choiIng" + idx1);
            val = elem.getAttribute("value");
            subs = 0;
            for (i = 0; i < val.length; i++) {
                if (val.charAt(i) == "|") {
                    subs++;
                }
            }
            subs--;
            if (selectedVal.substr(2) < subs - 1) {
                idx1 = selectedVal.charAt(0);
                idx2 = selectedVal.charAt(2);
                pos1 = val.indexOf("|");
                for (i = 0; i < idx2; i++) {
                    pos1 = val.indexOf("|", pos1 + 1);
                }
                pos2 = val.indexOf("|", pos1 + 1);
                pos3 = val.indexOf("|", pos2 + 1);
                newVal = val.substring(0, pos1);
                newVal = newVal + val.substring(pos2, pos3);
                newVal = newVal + val.substring(pos1, pos2);
                newVal = newVal + val.substr(pos3);
                elem.setAttribute("value", newVal);
                makeChoiIngTable();
                selectChoiRow("choiIngTd" + idx1 + "Sub" + ++idx2);
            }
        }
    }
}

function getSelectedId(ingType) {

    selectedObj = document.getElementById(ingType + "IngSelected");
    selectedIdx = selectedObj.getAttribute("value");

    return ingType + "Ing" + selectedIdx;
}

function getSelectedValue(ingType) {

    selectedObj = document.getElementById(ingType + "IngSelected");
    selectedIdx = selectedObj.getAttribute("value");
    if (selectedIdx >= 0) {
        nds = document.getElementById(ingType + "IngDiv").childNodes;
        val = nds[selectedIdx].getAttribute("value");
        return val;
    }
    else
        return "";
}

function clearSelected(ingType) {
    count = document.getElementById(ingType + "IngDiv").childNodes.length;
    for (i = 0; i < count; i++) {
        row = document.getElementById(ingType + "IngTd" + i);
        row.style.background = "white";
        row.style.color = "black";
    }
    selectedObj = document.getElementById(ingType + "IngSelected");
    selectedIdx = selectedObj.setAttribute("value", "-1");
}

function updatePrice(name) {
    name2 = name.substring(0, name.indexOf("Td")) + name.substring(name.indexOf("Td") + 2, name.indexOf("Sub"));
    //head name
    name3 = name.substring(0, name.indexOf("Ing"));
    index = name.substring(name.indexOf("Sub") + 3);
    if (name2.indexOf('opt') == 0) {
        name2 = name.substring(0, name.indexOf("Td")) + name.substr(name.indexOf("Td") + 2);
    }
    elem = document.getElementById(name2);
    elem2 = document.getElementById(name + "Price");
    price = elem2.getAttribute("value");
    if (isNaN(Number(price))) {
        val = elem.getAttribute("value");
        price = val.substring(val.indexOf("$") + 1);
    }
    if (price.indexOf(".") >= 0) {
        if ((price.length - price.indexOf(".")) == 1) {
            price = price + "00";
        }
        if ((price.length - price.indexOf(".")) == 2) {
            price = price + "0";
        }
        if ((price.length - price.indexOf(".")) > 3) {
            price = price.substring(0, price.indexOf(".") + 3);
        }
        if (price.indexOf(".") == 0) {
            price = "0" + price;
        }
    }
    else {
        if (price.length == 0) {
            price = "0.00";
        }
        else {
            price = price + ".00";
        }
    }
    val = elem.getAttribute("value");

    pos = val.indexOf("|", 0);
    for (i = 0; i < index; i++) {
        pos = val.indexOf("|", pos + 1);
    }
    pos = val.indexOf("$", pos + 1);
    newVal = val.substring(0, pos + 1) + price + val.substring(val.indexOf("|", pos + 1));

    elem.setAttribute("value", newVal);
    if (name2.indexOf('opt') == 0) {
        val = elem.getAttribute("value");
        newVal = val.substring(0, val.indexOf("$") + 1) + price;
        elem.setAttribute("value", newVal);
        makeIngTable(name3);
    } else {
        makeChoiIngTable(name3);
    }
    return;
}

function updateMaxMin() {

    elem = document.getElementById("choiIng" + document.getElementById("choiIngSelected").value.substring(0, 1));
    min = document.getElementById("min").getAttribute("value");
    max = document.getElementById("max").getAttribute("value");
    val = elem.getAttribute("value");
    if (isNaN(Number(max)) || isNaN(Number(min))) {
        val = elem.getAttribute("value");
        max = val.substring(val.indexOf(":") + 1, val.indexOf("|"));
    }
    newVal = val.substring(0, val.indexOf(":") + 1) + min + "-" + max;
    newVal = newVal + val.substr(val.indexOf("|"));
    elem.setAttribute("value", newVal);
    //makeChoiIngTable();
    return;
}
function updateHideEasy() {

    elem = document.getElementById("defIng" + document.getElementById("defIngSelected").value.substring(0, 1));
    hideEasy = document.getElementById("hideEasy").checked
    hideSide = document.getElementById("hideSide").checked
    val = elem.getAttribute("value");
    newVal = val.substring(0, val.indexOf("^")) + "^" + (hideEasy ? 1 : 0) + (hideSide ? 1 : 0);
    elem.setAttribute("value", newVal);
    //makeChoiIngTable();
    return;
}