/* 
Gizmo(QP) Web Framework - http://gizmojo.org/
------------------------------------------------------------------------------
Copyright (C) 2007 Mario Ruggier
Licensed under the Open Software License version 3.0
------------------------------------------------------------------------------
$Id: gizmo.js 964 2008-03-17 14:03:29Z mario $ 
*/

// generic 

function toggleVisible (elem) {
    toggleElementClass("invisible", elem); 
}
function makeVisible (elem) {
    removeElementClass(elem, "invisible");
}
function makeInvisible (elem) {
    addElementClass(elem, "invisible");
}
function isVisible (elem) {
    // getElement(elem).style.display == "none"
    return !hasElementClass(elem, "invisible");
}

// base gizmo (abstract)

function Gizmo (gizmoid) {
    this.gizmoid = gizmoid;
}
Gizmo.prototype.elem_names = []; // "exposed" DOM element names 
Gizmo.prototype.event_handlers = {};

Gizmo.prototype.onload = function () {}; 
Gizmo.prototype.get_elem_names = function () {
    return this.elem_names;
};
Gizmo.prototype.is_exposed = function (name) {
    var exposed = this.get_elem_names()
    for (var i=0; i<exposed.length; i++) { 
        if (exposed[i]==name) {
            return true; 
        }
    }
    return false;
};
Gizmo.prototype.get_id = function (name) {
    return this.gizmoid + '_' + name;
};
Gizmo.prototype.get_elem = function (name) {
    return $(this.get_id(name));
};
Gizmo.prototype.get_elem_text = function (name) {
    try {
        return scrapeText(this.get_elem(name));
    } 
    catch (e) {
        return String(e);
    }    
};
// function gizmo_set_elem_innerHTML(name, html) {}
Gizmo.prototype.set_event_handler = function (event, handler) {
    this.event_handlers[event] = bind(handler, this);
};
Gizmo.prototype.handle_event = function (event) {
    if (this.event_handlers[event] != null) {
      this.event_handlers[event](); 
    } 
};

