var menu_tree_top;
var menu_tree_level;
var menu_tree_loops = new Array();
var menu_showing = true;
function setHTML(div, message){
    get(div).innerHTML = message;
}
function addHTML(div, message){
    var tmp = get(div);
    if(typeof(tmp) == "object"){
        tmp.innerHTML += message;
    }
}
function get(name){
    return document.getElementById(name);
}
/*
example of setDiv:
setDiv("message", "left=>0em,width=>100%,height=>50%,vis=>visible");
*/
function setDiv(name,str){
    var settings = makeHash(str);
    var div = get(name);
    if(settings['left']) div.style.left = settings['left'];
    if(settings['right']) div.style.right = settings['right'];
    if(settings['top'])div.style.top = settings['top'];
    if(settings['bottom']) div.style.bottom = settings['bottom'];
    if(settings['width']) div.style.width = settings['width'];
    if(settings['height']) div.style.height = settings['height'];
    if(settings['vis']) div.style.visibility = settings['vis'];
    if(settings['bg']) div.style.background = settings['bg'];
}
function makeHash(str){
    var    items = str.split(",");
    var item;
    var hash = new Array();
    for(var x=0; x<items.length; x++){
        item = items[x].split("=>");
        hash[item[0]] = item[1];
    }
    return hash;
}
function print(stuff){
    document.write(stuff);
}
//new stuff
function toggleShowing(){
    menu_showing = !menu_showing;
    if(menu_showing){
        menu_divs[0][0].style.visibility = "visible";
        get("show_menu").innerHTML = "hide preview";
    }else{
        menu_divs[0][0].style.visibility = "hidden";
        get("show_menu").innerHTML = "show preview";
    }
}
function deleteItem(x,y){
    for(i=y; i<menu_array[x].size-1; i++){
        menu_array[x].name[i] = menu_array[x].name[i+1];
        menu_array[x].target[i] = menu_array[x].target[i+1];
        menu_array[x].style[i] = menu_array[x].style[i+1];
    }
    menu_array[x].name.pop();
    menu_array[x].target.pop();
    menu_array[x].style.pop();
    menu_array[x].size--;
    setEditor(x);
    get("showUpdate").style.visibility = 'visible';
}
function setName(x,y,name){
    while((i = name.indexOf(" ")) != -1){ name=name.replace(/ /,"&nbsp;"); }
    if(y == menu_array[x].name.length){
        menu_array[x].name[y] = name;
        menu_array[x].size++;
        setEditor(x);
    }else{
        menu_array[x].name[y] = name;
    }
    get("showUpdate").style.visibility = 'visible';
}
function setTarget(x,y,target){
    menu_array[x].target[y] = target;
    get("showUpdate").style.visibility = 'visible';
}
function setStyle(x,y,style){
    menu_array[x].style[y] = style;
    get("showUpdate").style.visibility = 'visible';
}
function setGlobal(x, input){
    if(typeof(menu_globals[x]) == "number"){
        menu_globals[x] = parseInt(input.value);
    }else{
        menu_globals[x] = input.value;
    }
    get("showUpdate").style.visibility = 'visible';
}
function rebuildMenu(){
    get("menu_all").innerHTML="";
    menu_addDivs(false);
    menu_setPositions();
    //get("showUpdate").style.visibility = "hidden";
}
function setEditor(num){
    //alert("size: "+menu_array[num].size+" length: "+menu_array[num].name.length);
    window.status = "setEditor("+num+")";
    html = "";
    if(num == "setup"){
        for(x in menu_globals){
            html += x+":<input size=8 name='menu_globals_"+x+"' value='"+menu_globals[x]+"' onchange=\"setGlobal('"+x+"',this)\"><br>";
        }
        setHTML("editor",html);
        addHTML("editor","<input id='showUpdate' type='submit' value='Update Preview' onclick='rebuildMenu();'>");
        makeForm("editor","make_menu");
    }else{
        for(x=0;x<menu_array[num].size+1;x++){
            html += "name:<input size=8 value='";
            if(typeof(menu_array[num].name[x]) != "undefined"){ html += menu_array[num].name[x];
            }else{ html += "newItem"; }
            html += "' onChange='setName("+num+","+x+",this.value)'>";
            html += "target:<input size=8 value='";
            if(typeof(menu_array[num].target[x]) != "undefined") html += menu_array[num].target[x];
            html += "' onChange='setTarget("+num+","+x+",this.value)'>";
            html += "style:";
            html += "<select onChange='setStyle("+num+","+x+",this.value)'>";
            for(y in menu_styles){
                html += "<option value='"+menu_styles[y]+">"+y+"</option>";
            }
            html += "</select>";
            /*<input size=8 value='";
            if(typeof(menu_array[num].style[x]) != "undefined") html += menu_array[num].style[x];
            html += "' onChange='setStyle("+num+","+x+",this.value)'>";*/
            html += "<input type='submit' value='Delete' onclick='deleteItem("+num+","+x+")'><br>";
        }
        setHTML("editor",html);
        addHTML("editor", "<input id='showUpdate' type='submit' value='Update Preview' onclick='rebuildMenu();'>");
        makeForm("editor","make_menu");
    }
}
function makeForm(div,id){
    //alert("making form...");
    if(id == "make_menu") addHTML(div,"<form id='"+id+"' method='post' action='menubuilder.php'><input id='phpFormParams' type='hidden' name='phpFormParams' value=''><input id='phpFormStyles' type='hidden' name='phpFormStyles' value=''><input id='phpFormMenus' type='hidden' name='phpFormMenus' value=''><input type='hidden' name='status' value='MAKE'><input type='submit' value='MakeMenu' onclick='submitForm(\""+id+"\");'></form>");
    //alert("done making form.");
}
function submitForm(id){
    setForm(id);
    get(id).submit();
}
function setForm(id){
    if(id == "make_menu"){
        var paramString = "";
        //for(x=0;x<paramVals.length;x++){
        var first = true;
        for(x in menu_globals){
            if(first){ paramString += "<->PARAMETER<->";
            }else first = false;
            if(isNaN(menu_globals[x])) paramString += "&qt;";
            paramString += menu_globals[x];
            if(isNaN(menu_globals[x])) paramString += "&qt;";
        }
        get("phpFormParams").value = paramString;
        var styleString = "";
        first = true;
        if(typeof(menu_styles) != "undefined"){
            for(x in menu_styles){
                if(first) styleString += "<->STYLE<->";
                else first = false;
                styleString += "&qt;"+menu_styles[x]+"&qt;";
            }
        }
        get("phpFormStyles").value = styleString;
        var menuString = "";
        for(x=0;x<menu_array.length;x++){
            menuString += "menu_array["+x+"]=new menuItem("+x+",[";
            for(y=0;y<menu_array[x].size;y++){
                if(y>0) menuString += ",";
                menuString += "&qt;"+menu_array[x].name[y]+"&qt;";
            }
            menuString += "],[";
            for(y=0;y<menu_array[x].size; y++){
                if(y>0) menuString += ",";
                if(typeof(menu_array[x].target[y]) != "undefined"){
                    if(isNaN(menu_array[x].target[y])) menuString += "&qt;";
                    menuString += menu_array[x].target[y];
                    if(isNaN(menu_array[x].target[y])) menuString += "&qt;";
                }
            }
            menuString += "],[";
            for(y=0;y<menu_array[x].size; y++){
                if(y>0) menuString += ",";
                if(typeof(menu_array[x].style[y]) != "undefined"){
                    menuString += menu_array[x].style[y];
                }
            }
            menuString += "]);\n";
        }
        alert(menuString);
        get("phpFormMenus").value = menuString;
        //addHTML('debug',"<br>Params String: "+paramString+"<br>");
        //addHTML('debug',"menu String: "+menuString);
        return true;
    }
}
function setTree(){
    setHTML("tree","<div id='setup_div' class='tree_item' style='top: 0px; left: 0px; height: 30px;' onclick=\"setEditor('setup')\" onmouseover=\"this.style.background='#ff0000'\" onmouseout=\"this.style.background='#00ff00'\">Menu Setup</div>");
    menu_tree_top = 50;
    menu_tree_left = 0;
    menu_tree_level = -1;
    setTreeElement(0, "");
}
function setTreeElement(num, prev){
    menu_tree_level++;
    var add = "<div id='tree_item"+num+"' class='tree_item' style='top: "+menu_tree_top+"px; left: "+menu_tree_level+"em;' onclick='setEditor("+num+");' onmouseover=\"this.style.background='#ff0000'\" onmouseout=\"this.style.background='#00ff00'\">"+prev+"Menu("+num+"):";
    var subs = new Array();
    var prevs = new Array();
    for(x=0;x<menu_array[num].name.length;x++){
        if(typeof(menu_array[num].target[x]) != "undefined"){
            if(!isNaN(menu_array[num].target[x])){
                subs[subs.length] = menu_array[num].target[x];
                prevs[prevs.length] = menu_array[num].name[x]+"-->";
            }
        }
        add += "["+menu_array[num].name[x]+"]";
    }
    addHTML("tree",add+"</div>");
    menu_tree_top += parseInt(get("tree_item"+num).offsetHeight);
    for(menu_tree_loops[menu_tree_level]=0;menu_tree_loops[menu_tree_level]<subs.length;menu_tree_loops[menu_tree_level]++){
        setTreeElement(subs[menu_tree_loops[menu_tree_level]], prevs[menu_tree_loops[menu_tree_level]]);
    }
    menu_tree_level--;
}
/*function setContentSize(){
    var cont = get("content");
    var body = get("body");
    var middle = get("middle");
    middle.style.height = (parseInt(middle.offsetHeight) - 11)+"px";
    cont.style.height = (parseInt(body.offsetHeight) - parseInt(cont.offsetTop) - 2)+"px";
    cont.style.width = (parseInt(cont.offsetWidth) - 5)+"px";
}*/
function setWrapper(wrapper, inner, border){
    var wrap = get(wrapper);
    var inner = get(inner);
    inner.style.left = border+"px";
    inner.style.top = border+"px";
    inner.style.height = (parseInt(wrap.offsetHeight - (2 * border)))+"px";
    inner.style.width = (parseInt(wrap.offsetWidth - (2 * border)))+"px";
}
