
var select_start = 0;
var select_end = 0;

function select(obj)
{
    //var style = document.defaultView.getComputedStyle(obj, null);
    if (obj.style.backgroundColor != "white" && obj.style.backgroundColor != "") {
        obj.style.backgroundColor = "white";
    } else {
        obj.style.backgroundColor = "#f9f585";
    }
}

function select_begin(obj)
{
    if (select_end != 0)
        return;

    if (select_start != 0)
        return select_finish(obj);

    select(obj);
    select_start = Number(obj.id.substr(1));

    /*
    var lines = document.getElementsByName("srcline");
    for (var i = 1; i <= lines.length; i++) {
        var e = document.getElementById(i);
        e.onclick = select_finish;
    }
    */
}

function textareachange(obj, rows)
{
    //alert(obj.value);
    //alert(obj.value.match(/[\n]/g).length);
    //alert(rows);

    var newlines = obj.value.match(/[\n]/g).length;
    if (newlines >= rows) {
        /*
        var warn = document.createElement("b");
        warn.value = "warning here";
        obj.parentNode.insertBefore(warn, null);
        */
        obj.style.borderColor = "red";
    } else {
        obj.style.borderColor = "inherit";
    }
}

function submit_note(obj)
{
    var textbox = document.getElementById("textarea");
    var note = textbox.parentNode;
    var text = textbox.value
    alert(text);

    for (i = select_start; i <= select_end; i++) {
        select(document.getElementById("s" + String(i)));
    }

    while (note.hasChildNodes()) {
        note.removeChild(note.firstChild);
    }

    note.innerHTML = text;

    select_start = 0;
    select_end = 0;
}

function select_finish(obj)
{
    select_end = Number(obj.id.substr(1));

    // select lines in between
    if (select_start != select_end) {
        var lines = document.getElementsByName("srcline");
        for (var i = select_end; 
                i < lines.length && i >= 0 && i != select_start;
                i = (select_end > select_start) ? i - 1 : i + 1) {
            select(document.getElementById("s" + String(i)));
        }
    }

    // switch order if necessary
    if (select_start > select_end) {
        var temp = select_end;
        select_end = select_start;
        select_start = temp;
    }

    //alert("here's where we do funky stuff with lines " + select_start + " to " + select_end + "...");

    var style = document.defaultView.getComputedStyle(obj,null);
    //var padding = Number(style.paddingTop.split(/[a-zA-Z]/, 1)[0]) + Number(style.paddingBottom.split(/[a-zA-Z]/, 1)[0]);
    var lineheightnum = style.height.split(/[a-zA-Z]/, 1)[0];
    var lineheightunit = style.height.substr(lineheightnum.length);
    var newheight = String((select_end - select_start + 1) * Number(lineheightnum)) + lineheightunit;

    var note = document.getElementById("n" + String(select_start));

    /* an idea to make a multi-row spanning element...
    var newnote = document.createElement("td");
    alert(newnote.rowSpan);
    newnote.rowSpan = (select_end - select_start + 1);
    alert(newnote.rowSpan);
    note.innerHTML = "<textarea wrap=\"off\" id=\"textarea\" style=\"overflow:auto;padding:0px;width:325px;height:100%\"></textarea>";
    note.parentNode.insertBefore(newnote, note);
    alert(newnote.rowSpan);
    */
    note.innerHTML = "<textarea wrap=\"off\" id=\"textarea\" style=\"overflow:auto;position:absolute;padding:0px;height:"+newheight+";width:325px\"></textarea>";

    //note.innerHTML = "<textarea wrap=\"off\" rows=\"" + String(select_end - select_start + 1) + "\" style=\"overflow:auto;padding:0px;\"></textarea>";
    var textarea = note.firstChild;
    var submit = document.createElement("input");
    submit.value = "Submit";
    submit.type = "submit";
    submit.style.position = "relative";
    submit.style.left = "330px";
    submit.onclick = submit_note;
    textarea.parentNode.appendChild(submit);
    var func = eval("function() { textareachange(this, "+String(select_end - select_start + 1) + "); }");
    textarea.onchange = func;
    textarea.onkeydown = func;
    //note.innerHTML = "<textarea style=\"position:absolute;margin-top:-7pt;padding:0px\" rows=\""+String(select_end - select_start + 1)+"\"></textarea>";

    // deselect
    /*
    for (i = select_start; i <= select_end; i++) {
        select(document.getElementById("s" + String(i)));
    }
    */
}

function select_range(from, to)
{
    for (i = from; i < to; i++) {
        select(document.getElementById("s" + String(i)));
    }
}

