//
// global flags
//

var dirtyFlag = false;

// function available to dialogs that want to refresh the parent page
function refreshContent() {
    if (dirtyFlag) return;
    if (typeof(refreshURL) != 'undefined') {
        document.location.href = refreshURL;
    } else {
        document.location.reload();
    }
}

//
// inline editing support
//

function beginEdit(div) {
    var textdiv = document.getElementById(div);
    var formdiv = document.getElementById(div + '_edit');
    var formta  = document.getElementById(div + '_textarea');
    var w = parseInt(textdiv.scrollWidth, 10);
    var h = parseInt(textdiv.scrollHeight, 10);
    
    // if w < 10 we're probably already editing
    if (w < 10) return;
    
    if (h < 100) h = 100;
    with (formdiv.style) {
        display = 'block';
        width   = w + 'px';
        height  = h + 'px';
    }
    with (formta.style) {
        width   = (w - 5) + 'px';
        height  = (h - 22) + 'px';
    }
    textdiv.style.display = 'none';
}

function endEdit(div, save) {
    var textdiv = document.getElementById(div);
    var formdiv = document.getElementById(div + '_edit');
    var formta  = document.getElementById(div + '_textarea');
    
    if (save) {
        textdiv.innerHTML = formta.value.replace(/\n/mg, "<br/>");
    }
    
    textdiv.style.display = 'block';
    formdiv.style.display = 'none';
}

//
// useful functions
//
var imgArray = new Array();

function imgOn(img) {
    var oldsrc = document.images[img].src;
    var newsrc = oldsrc.substring(0, oldsrc.lastIndexOf('.')) + '_on.gif';
    document.images[img].oldsrc = oldsrc;
    if (!imgArray[img]) {
        imgArray[img] = new Image();
        imgArray[img].src = newsrc;
    }
    document.images[img].src = newsrc;
}

function imgOff(img) {
    document.images[img].src = document.images[img].oldsrc;
}

function toggleDisplay(el, show) {
    if (typeof(el) != 'undefined' && el.style) {
        el.style.display = show ? '' : 'none';
    }
}

//
// enhancements to js builtins
//

String.prototype.trim = function() { return this.replace(/^\s+/,'').replace(/\s+$/,''); }

Array.prototype.clear = function() { while (this.length > 0) this.pop(); }
Array.prototype.contains = function(obj) {
    return this.indexOf(obj) != -1;
}
Array.prototype.indexOf = function(obj) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == obj) return i;
    }
    return -1;
}
Array.prototype.lastIndexOf = function(obj) {
    for (var i = this.length - 1; i >= 0; i--) {
        if (this[i] == obj) return i;
    }
    return -1;
}

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}
