var InlineFieldEditInfo=null;
var PreviousInlineEditValue=null;


function inline_field_edit(edit_tag,submit_url,options)
    {
    edit_tag=$(edit_tag);    //make sure mootools hooks the edit tag
    if (!options) options={};
    //Options:
    //  options.value       intitial value for text box - otherwise taken from edit_tag.innerHTML
    //  options.max_length  sets MAXLENGTH on the input field
    //read the current value and unescape HTML stuff
    v=options.value ? options.value : edit_tag.innerHTML;
    v=v.replace(/&lt;/gi,"<");
    v=v.replace(/&gt;/gi,">");

    //info
    var edit_tag_size=edit_tag.getSize().size;

    //create single-field edit div    var edit_window_tag = document.createElement('div');
    //Create edit_window_tag
    var edit_window_tag=$(document.createElement('div'));
    edit_window_tag.className="edit_field_div";
    edit_window_tag.id="edit_window_tag_id";
    border_size=2;
    edit_window_tag.style.top=(edit_tag.getPosition().y-border_size)+"px";
    edit_window_tag.style.left=(edit_tag.getPosition().x-border_size)+"px";
    edit_window_tag.style.width=edit_tag.getSize().size.x+"px";
    edit_window_tag.style.height=edit_tag.getSize().size.y+"px";

    //Create form_tag
    var form_tag=$(document.createElement("form"));
    var input_tag=$(document.createElement("input"));
    form_tag.setAttribute("action",submit_url);
    form_tag.setAttribute("method","post");
    form_tag.addEvent('submit',function(e)
        {
        //prevent the submit event
        new Event(e).stop();

        //ajax submit
        form_tag.commit_inline_edit();
        });
    form_tag.edit_window_tag=edit_window_tag;
    form_tag.edit_tag=edit_tag;
    form_tag.cancel_inline_field_edit=function()
        {
        edit_window_tag.parentNode.removeChild(edit_window_tag);
        };
    form_tag.previousValue=edit_tag.innerHTML;
    form_tag.committed=false;
    form_tag.commit_inline_edit=function()
        {
        if (!form_tag.committed && form_tag.previousValue!=input_tag.value)
            {
            form_tag.committed=true;
            this.send
                ({
                onComplete: function(response)
                    {
                    json_response=eval('(' + response + ')');
                    if (json_response.success)
                        {
                        v=json_response.value;
                        v=v.replace(/</g,"&lt;");
                        v=v.replace(/>/g,"&gt;");
                        edit_tag.innerHTML=v;
                        form_tag.cancel_inline_field_edit();
                        }
                    else if (json_response.validation_error)
                        {
                        options.value=input_tag.value;
                        form_tag.cancel_inline_field_edit();
                        if (confirm(json_response.validation_error+"\n\nContinue Editing?"))
                            {
                            inline_field_edit(edit_tag,submit_url,options);
                            }
                        }
                    else
                        {
                        alert("Error: "+json_response.error);
                        form_tag.cancel_inline_field_edit();
                        }
                    }
                });
            }
        else
            form_tag.cancel_inline_field_edit();
        };

    //Create input_tag
    input_tag.className="edit_field_input";
    input_tag.setAttribute("type","text");
    input_tag.setAttribute("value",v);
    input_tag.setAttribute("name","value");
    input_tag.setAttribute("bob","!@#$%");
    input_tag.setStyle("border","0px none");
    input_tag.addEvent("blur",function(){this.parentNode.commit_inline_edit();});
    input_tag.setStyle("font-size",edit_tag.getStyle("font-size"));
    input_tag.setStyle("font-face",edit_tag.getStyle("font-face"));
    input_tag.setStyle("font-style",edit_tag.getStyle("font-style"));
    input_tag.setAttribute("id","my_input");
    if (options.max_length) input_tag.setAttribute("maxlength",options.max_length);

    var h=edit_tag_size.y;
    if (window.ie) h-=1;
    input_tag.setStyle("width",edit_tag_size.x+"px");
    input_tag.setStyle("height",h+"px");

    //combine tags
    form_tag.appendChild(input_tag);
    edit_window_tag.appendChild(form_tag);
    document.body.appendChild(edit_window_tag);

    input_tag.focus();
    input_tag.select();


    //note tags
    InlineFieldEditInfo={submit_url:submit_url,edit_window_tag:edit_window_tag,edit_tag:edit_tag,form_tag:form_tag,input_tag:input_tag};
    };
