function setinitialzone() {
    d = new Date();
    m = - d.getTimezoneOffset();
    h = Math.floor(m / 60);
    zone(h);
}

function showzonepicker(show) {
    var z = document.getElementById('zonepicker');
    if (show == null) { show = z.className == "hide"; }
    z.className = show ? "show" : "hide";
}

function zonename(z) {
    if (z == 0) { return "GMT"; }
    if (z < 0)  { return "GMT" + z; }
    else        { return "GMT+" + z; }
}

function timename(t) {
    var day = "";
    if (t < 0)          { t += 24; day = " Wed."; }
    else if (t >= 24)   { t -= 24; day = " Fri."; }
    
    if (t == 0)         { t = "Mid."; }
    else if (t < 12)    { t = t + "am"; }
    else if (t == 12)   { t = "Noon"; }
    else                { t = (t - 12) + "pm"; }
    
    return t + day;
}

function nextnode(n, top) {
    var x = n.firstChild;
    if (x) { return x; }
    
    while (true) {
        x = n.nextSibling;
        if (x) { return x; }
        n = n.parentNode;
        if (!n  ||  n == top) { return null; }
    }
}

function zone(offset) {
    var zoneElem = document.getElementById('zonename');
    zoneElem.firstChild.nodeValue = zonename(offset);

    var tableElem = document.getElementById('timetable');
    for (var elem = tableElem; elem; elem = nextnode(elem, tableElem)) {
        if (elem.nodeType == 1 && elem.nodeName == "TD"
            && elem.className.substring(0,4) == "slt-")
        {
            var t = 1 * elem.className.substring(4);
            t = t + 7 + offset;
            elem.firstChild.nodeValue = timename(t);
        }    
    }

    showzonepicker(false);
}
