var i = 0;

function contact_form_show(link, redirect, tags) {
    i++;

    $(link).after($("<div class='formbox' id='add_contact_div_"+i+"'></div>").hide());

    if(!redirect) { redirect = ""; }
    if(!tags) { tags = []; }

    $("#add_contact_div_"+i).load("/ajax/add_contact_form/", 
                                  {"redirect":redirect, "tags":tags},
                                  function() {
                                      $("#add_contact_div_"+i).slideDown("fast");
                                      $("#add_contact_div_"+i+" form").before("<a class='closeThisForm' href='#' onclick='close_this_form(this)'>&times;</a>");

                                      $("#add_contact_div_"+i+" .focusme").focus();
                                  });

    return false;
}

function close_this_form(link) {
    $(link).parents("div.formbox").slideUp();
    return false;
}

function edit_this_form(link) {
    var box = $(link).parents("div.formbox").get(0);
    //$(box).text("editable "+box.id);
    $(box).load("/ajax/edit_contact_form/"+box.id+"/", {},
                function() {
                    $(box).find("form").bind("submit", ajaxy_form_submit);
                });
    return false;
}

function ajaxy_form_submit(event) {
    var formdata = {"TAG":[]};

    for (var attr in this) {

        if(attr=="NAME" || attr.substr(0,2)=="f_" || attr=="tag_name") {
            formdata[attr] = this[attr].value;

        } else if(attr=="TAG") {
            // if there's only one TAG input element, this is an input element.
            // otherwise, it's a NodeList
            if(this.TAG.value) {
                formdata["TAG"] = [ this.TAG.value ];

            } else {

                var tags = [];
                for(var i = 0; i < this.TAG.length; i++) {
                    tags.push(this.TAG[i].value);
                }
                formdata["TAG"] = tags;
            }
        }
    }

    $(this).parents("div.formbox").load(this.getAttribute("action"), formdata);
    return false;
}

function cancel_this_edit(link) {
    var box = $(link).parents("div.formbox").get(0);
    $(box).load("/ajax/display_contact/"+box.id+"/")
    return false;
}



function addfield(link) {
    var fieldsdiv = $(link).parents("form.peepform").find("div.fields").append("<p>w00t</p>");

    return false;
}

function promptForNewTag(opt) {
    var tagname = prompt("Enter a name for the tag:");
    
    if(tagname) {
        var select = $(opt).parents("select");
        var newopt = document.createElement("option");
        $(newopt).text(tagname);
        newopt.setAttribute("value", tagname);
        select.prepend(newopt);
        select.get(0).value = tagname;
    }

    return false;
}


function tag_add(link) {
    var form = $(link).parents("form.peepform").get(0);
    alert(form);

    return false;
}

function tag_delete(link) {
    $(link).parent("div").remove();
    return false;
}


function add_tag_input_keypress(e) {
    if(e.keyCode == 13) { //enter
        var tag_name = e.target.value;

        $("#taglist").append($("<div class='tag'>").load("/ajax/get_tag_display_html/", {"tag_name":tag_name}));

        e.target.value = "";
        return false;
    }

    return true;
}

function layout_move(link, direction) {
    //alert(link + " " + direction);

    var field_keyname = $(link).parents("tr.field").get(0).id;

    $("#peepform_layout_container").load("/ajax/form_layout/", 
                                         { "field": field_keyname,
                                                 "move":  direction });

    return false;
}

function layout_addfield(link, fieldkn) {
    $("#peepform_layout_container").load("/ajax/form_layout/", 
                                         { "field": fieldkn,
                                                 "add": 1 });
    return false;
}

function layout_remove(link) {
    var field_keyname = $(link).parents("tr.field").get(0).id;

    $("#peepform_layout_container").load("/ajax/form_layout/", 
                                         { "field": field_keyname,
                                                 "remove":1 });

    return false;
}
