var Application =  {
    pars: '',

    request: function (callback, params) {
        bUrl = params;
    	if ($('loading')) $('loading').style.display = 'block';

    	var myAjax = new Ajax.Request(
    		'./request.php', 
    		{
    			method: 'post', 
    			parameters: params, 
    			onComplete: eval(callback)
    		});
    },

    update: function (params) {
    	Application.pars = params;
	    var myAjax  = new Ajax.Updater(
					{ failure: 'message' }, 
					'./update.php', 
					{
						method: 'post', 
						parameters: params, 
						onFailure: updateError,
						onSuccess: updateSuccess
					});
	},

    call: function (func, callback, params) {
//    	$('loading').style.display = 'none';

    	var myAjax = new Ajax.Request(
    		'./call.php', 
    		{
    			method: 'get', 
    			parameters: 'func='+func+'&'+params, 
    			onComplete: eval(callback)
    		});
    },

    back: function (params) {
    	Application.pars = params;
	    var myAjax  = new Ajax.Updater(
					{ failure: 'message' }, 
					'./back.php', 
					{
						method: 'post', 
						parameters: params, 
						onFailure: updateError,
						onSuccess: updateSuccess
					});
	},

    insertCSS: function () {
    // http://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS
        var headID = document.getElementsByTagName("head")[0];
        var cssNode = document.createElement('link');
        cssNode.type = 'text/css';
        cssNode.rel = 'stylesheet';
        cssNode.href = 'FireFox.css';
        cssNode.media = 'screen';
        headID.appendChild(cssNode);
    },

    insertScript: function (source) {
        var headID = document.getElementsByTagName("head")[0];
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.src = source;
        headID.appendChild(newScript);
    },

    alert: function (text) {
        alert (text);
    },

    confirm: function (text) {
        return confirm (text);
    }
}

var ContentForm = {
    form: '',
    disabled: false,

    initialize: function() {
        ContentForm.form = $(ContentForm.getForm());
        if (ContentForm.form)
            ContentForm.hide ();
    },

    getNewId: function() {
        ContentForm.lastId++;
        return "window_id_" + ContentForm.lastId;
    },

    getForm: function(n,d) {
        var i,x;
        if(!d) d=document;
        // Doorzoek de formulieren!
        for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
        return i?d.forms[i-1].id:null;
    },

    setForm: function(form) {
        ContentForm.form = $(form);
    },

    toggle: function () {
        ContentForm.form.getElements().each(function(element) {
            if (element.type != 'hidden') {
                var val = (['SELECT'].include(element.tagName)) 
                    ? element.options[element.selectedIndex].text
                    : element.getValue();
                element.toggle();
                (ContentForm.disabled) 
                    ? $('readonly_' + element.name).remove()
                    : new Insertion.Before (element,'<span id="readonly_' + element.name + '">' + val + '</span>');
        }});
        ContentForm.disabled = !ContentForm.disabled;
    },

    show: function () {
        if (!ContentForm.disabled) return;
        ContentForm.form.getElements().each(function(element) {
            if (element.type != 'hidden') {
                element.show();
                $('readonly_' + element.name).remove();
        }});
        var lnk = ContentForm.form.getElementsByTagName('A');
        for (var i = 0, length = lnk.length; i < length; i++) {
            lnk[i].style.display = '';
        }
        ContentForm.disabled = !ContentForm.disabled;
    },

    hide: function () {
        if (ContentForm.disabled) return;
        ContentForm.form.getElements().each(function(element) {
            var stl = val = '';
            if (element.type != 'hidden') {
                if (['SELECT'].include(element.tagName)) {
                    var t = element.options.length;
                    var arrVal = [];
                    for (i=0;i<t;i++)
                        if (element.options[i].selected)
                            arrVal.push(element.options[i].text);

          //                  val += element.options[i].text + '<br />';
                    val = arrVal.join('<br />');
                } else if (element.type == 'checkbox') {
                    val = (element.getValue()) ? '[Ja]' : '[Nee]';
                } else if (element.tagName == 'TEXTAREA') {
                    val = element.getValue().split("\n").join('<br />');
                    stl = ' style="width:' + element.getWidth() + 'px; height:' + element.getHeight() + 'px;"';
                } else
                    val = element.getValue();
                element.hide();
                new Insertion.Before (element,'<span id="readonly_' + element.name + '"' + stl + '>' + val + '</span>');
        }});
        var lnk = ContentForm.form.getElementsByTagName('A');
        for (var i = 0, length = lnk.length; i < length; i++) {
            lnk[i].style.display = 'none';
        }
        ContentForm.disabled = !ContentForm.disabled;
    },

    send: function () {
        if (ContentForm.disabled) return false;
        var pars = ContentForm.form.serialize();
        Application.update (pars);
        return true;
    },

    remove: function (loc, confirm, params) {
        if (!ContentForm.disabled) return;
        if (!Application.confirm (confirm)) return;
        Application.update (params);
        Application.request (loc, params);
        return;
    },

    cancel: function (loc) {
        
        if (ContentForm.disabled) return;
        var pars = ContentForm.form.serialize();
        Application.request(loc, pars);
//ContentForm.form.reset ();
//ContentForm.hide ();
    }
}


function updateError(request)
{
	alert('Sorry. There was an error.');
}

function updateSuccess(request)
{
    if (request.responseText) {
//	    alert('Sorry. There was an error. '+request.responseText);
	    $('error').update(request.responseText);
	    $('error').show();
	    return false;
	} else {
//		alert('Yes, it was a succes.');
        ContentForm.hide ();
        if($('error')) $('error').hide();
//        Application.request(Application.pars);
	    return true;
    }
}

function showResponse(originalRequest)
{
	if ($('loading')) $('loading').style.display = 'none';
	$('content').update(originalRequest.responseText);
}

function showContent(originalRequest)
{
	if ($('loading')) $('loading').style.display = 'none';
	$('content').update(originalRequest.responseText);
}

function backButtonOverride()
{
  // Work around a Safari bug
  // that sometimes produces a blank page
  setTimeout("backButtonOverrideBody()", 1);

}

function backButtonOverrideBody()
{
  // Works if we backed up to get here
  try {
    // Application.request('page=400');
    history.forward();
  } catch (e) {
    // OK to ignore
  }
}

function pageBack(what) {
// alert(getQueryVariable('page') + "\n" + location.href);
 if(!what) {
// 	Application.back();
 }
}
//window.onunload = pageBack(false);


