var initFuncs = [];

function init() {
    for (var k in initFuncs) {
        initFuncs[k]();
    }
}
window.onload = init;

////////////////////////////////////////////////////////////////
//  comment form

initFuncs.push(talkInit);

var talkState = 0;
var talkHOVER = 1;
var talkFOCUS = 2;
var talkCHANGE = 4;

function talkInit() {
    var t;
    t = document.getElementById('talk');
    if (! t) return;

    talkHide();

    t = document.getElementById('talk');
    t.onmouseover = talkOver;
    t.onmouseout = talkOut;
    //t.onchange = talkChange;      // ie6 doesn't have this
    t.onsubmit = talkValidate;

    t = document.getElementById('t-text');
    t.onfocus = talkFocus;
    t.onblur = talkBlur;

    t = document.getElementById('t-name');
    t.onfocus = talkFocus;
    t.onblur = talkBlur;

    t = document.getElementById('t-email');
    t.onfocus = talkFocus;
    t.onblur = talkBlur;

    t = document.getElementById('t-send');
    t.onfocus = talkFocus;
    t.onblur = talkBlur;
    t.onsubmit = talkValidate;
}

function talkChange() {
    talkState |= talkCHANGE;
    talkShow();
}

function talkOver() {
    talkState |= talkHOVER;
    talkShow();
}

function talkOut() {
    talkState &= ~talkHOVER;
    talkDelayHide();
}

function talkFocus(ev) {
    talkState |= talkFOCUS;
    talkShow();
    var t = evTarget(ev);
    switch (t.id) {
    case "t-text":
        talkSelect(t, "(type here)");
        break;
    case "t-name":
        talkSelect(t, "(your name)");
        break;
    case "t-email":
        talkSelect(t, "(your email)");
        break;
    }
}

function talkBlur() {
    //talkState &= ~talkFOCUS;
    //talkDelayHide();
}

function talkSelect(t, text) {
    if (t.value == text) {
        if (t.setSelectionRange) {                  // moz
            t.setSelectionRange(0, text.length);
        } else if (t.createTextRange) {             // ie6
            var r = t.createTextRange();
            r.collapse(true);
            r.moveStart('character', 0);
            r.moveEnd('character', text.length);
            r.select();
        }
    }
}

function talkShow() {
    var t;

    t = document.getElementById('talk');
    if (t) t.style.backgroundColor = '';
    if (t) t.style.borderColor = '';

    t = document.getElementById('t-text');
    if (t) t.style.backgroundColor = '';
    if (t) t.style.overflow = '';

    t = document.getElementById('t-name');
    if (t) t.style.display = '';

    t = document.getElementById('t-email');
    if (t) t.style.display = '';

    t = document.getElementById('t-send');
    if (t) t.style.display = '';
}

function talkDelayHide() {
    window.setTimeout(talkHide, 200);
}

function talkHide() {
    if (talkState != 0) return;

    var t;
    t = document.getElementById('talk');
    if (t) t.style.backgroundColor = 'transparent';
    if (t) t.style.borderColor = 'white';

    t = document.getElementById('t-text');
    if (t) t.style.backgroundColor = 'transparent';
    if (t) t.style.overflow = 'hidden';         // ie6

    t = document.getElementById('t-name');
    if (t) t.style.display = 'none';

    t = document.getElementById('t-email');
    if (t) t.style.display = 'none';

    t = document.getElementById('t-send');
    if (t) t.style.display = 'none';

}

function talkClearMessage() {
    window.clearTimeout();
    var m = document.getElementById('t-message');
    m.innerHTML = ' ';
}

function talkError(ev, t, msg) {
    var m = document.getElementById('t-message');
    m.innerHTML = msg;
    window.setTimeout(talkClearMessage, 20 * 1000);
    t.focus();
    if (! ev) ev = window.event;        // ie6
    ev.returnValue = false;
    return false;
}

function talkValidate(ev) {
    talkClearMessage();
    var t;
    t = document.getElementById('t-text');
    if (t && (t.value == "(type here)" || t.value == "")) {
        return talkError(ev, t, "Please enter some text.");
    }
    t = document.getElementById('t-name');
    if (t && t.value == "(your name)") {
        return talkError(ev, t, "Please enter your name.");
    }
    t = document.getElementById('t-email');
    if (t && t.value == "(your email)") {
        return talkError(ev, t, "Please enter your email address.");
    }
    return true;
}

function evTarget(ev) {
    if (! ev) ev = window.event;                // ie6
    if (ev.srcElement) return ev.srcElement;    // ie6
    if (ev.target) return ev.target;            // moz1
    return null;
}

