//
// Algemene hulpfuncties
//

/**
 * Maak van een id een htmlobject (tenzij het er al eentje is)
 */
function resolve(t) {
    if (t.split) { // string
        return document.getElementById(t);
    } else {
        return t;
    }
}

function show(target, after) {
    target = resolve(target);
    
    target.style.display = "block";
    if (after) {
        after();
    }
}

function hide(target, after) {
    target = resolve(target);
    
    target.style.display = "none";
    if (after) {
        after();
    }
}

function replace(target, e, after) {
    target = resolve(target);
    target.innerHTML = e.responseText;
    if (after) 
        after();
}
        
//
// Form-verstuur functies
//


function error(e) {
    document.clear();
    document.write(e.responseText);

}

function fetch(url, after) {
    var callback = { success: after, failure: error };
    var trans = YAHOO.util.Connect.asyncRequest("GET", url, callback);
}

function wijzig(target, url, after) {
    target =    resolve(target);
    fetch(url, function(e) { replace(target, e, after); });
}

function annuleer(form, target) {
    target =    resolve(target);
    fetch(form.action+"?origineel=1", function(e) { replace(target, e); });
}

function submit(form, success, failure)
{
    var callback = { success: success, upload: success, failure: failure }
    YAHOO.util.Connect.setForm(form, form.enctype == "multipart/form-data");
    var fetch = YAHOO.util.Connect.asyncRequest(form.method, form.action, callback);
}

function verstuur(form, target_success, target_error, after) {
    target_success  = resolve(target_success);
    target_error    = (target_error) ? resolve(target_error) : target_success;

    success = function(e) { replace(target_success, e, after); }
    failure = function(e) { replace(target_error, e, after); }

    submit(form, success, failure);
}

function succes(target, after) {
    target =    resolve(target);
    background = target.style.background;
    var whooo = new YAHOO.util.ColorAnim(target, { backgroundColor: { from: '#00FF00', to: "rgb(185,212,244)" } }, 1, YAHOO.util.Easing.easeOut);
    whooo.onComplete.subscribe(function() {
        target.style.background = background;
        if (after) {
            after();
        }
    });
    whooo.animate();
}

function form_clear(form) {
    for (i=0;i<form.elements.length;i++) {
        e = form.elements[i];
        if (e.type == "text") {
            e.value = '';
        } else if (e.type == "radio" || e.type == "checkbox") {
            e.checked = false;
        }
    }
}

function creeer(target, url, after) {
    target  = resolve(target);
    el      = null;
    if (target instanceof HTMLTableSectionElement) { el  = document.createElement("TR"); target.insertRow(el); }

    if (el) {
        target.appendChild(el);
        wijzig(el, url, after);
    }
}

function fold_object(e, foldable) {
    if (YAHOO.util.Dom.hasClass(foldable, 'folded')) {
        YAHOO.util.Dom.removeClass(foldable, 'folded');
    } else {
        YAHOO.util.Dom.addClass(foldable, 'folded');
    }
}

function foldable(foldable) {
    headers     = YAHOO.util.Dom.getChildrenBy(foldable, function(node) { return YAHOO.util.Dom.hasClass(node, 'header'); });
    if (headers.length == 0) {
    } else {
        header  = headers[0];
        YAHOO.util.Event.addListener(header, 'click', fold_object, foldable);
    }
}

function init_foldable() {
    foldables   = YAHOO.util.Dom.getElementsByClassName('foldable', 'div', null, foldable);
}

function autozoek(basis_id, url) {
    zoekveld    = resolve(basis_id+'_autozoek');
    container   = resolve(basis_id+'_container');
    ds = new YAHOO.widget.DS_XHR(url, ["\n", "\t"]); 
    ds.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT; 
    ds.maxCacheEntries = 60; 
    ds.queryMatchSubset = true;
    ac = new YAHOO.widget.AutoComplete(zoekveld, container, ds);

    ac.itemSelectEvent.subscribe(function(e,args) { resolve(basis_id).value = args[2][1]; });
    ac.textboxKeyEvent.subscribe(function (e,code) { resolve(basis_id).value = ''; });

}

// vim:set sts=4 sw=4 ts=4 si et:
