Event.observe(window, 'load', init);
Event.observe(window, 'unload', Event.unloadCache);


function init()
{
	// get css class of body, excluding isJs
	var bodyClasses = document.body.classNames().reject(function(i) { return i=="isJs"});;
	// use the first one to recognize page (convention)
	currentPage = bodyClasses[0];
	debug(currentPage);

	if ($('project_filter'))
		init_project_list();

	projectLoader = new ProjectLoader();
	categoryLoader = new CategoryLoader();
	newsLoader = new NewsLoader();
	registerBodyEvents();
}

function unregisterBodyEvents()
{
	projectLoader.unregisterLinks();
	categoryLoader.unregisterLinks();
	newsLoader.unregisterLinks();
//	projectListLoader.unregisterLinks();
}

function registerBodyEvents()
{
	projectLoader.registerLinks();
	categoryLoader.registerLinks();
	newsLoader.registerLinks();
//	projectListLoader.registerLinks();
}

var lang = "de";

function getLangCallBack()
{
}

/**
 * adds isJs CSS clas to body
 */
function checkJs() 
{
	Element.extend(document.body);
	document.body.addClassName('isJs');
}

function debug(message)
{
	if (typeof console != "undefined")
		console.log(message);
}
function error(message)
{
	if (typeof console != "undefined")
		console.error(message);
}
function ajax_error(message)
{
	error("Meister Glanz: "+message);
}

function getDefaultCallback() {
	return {
		onFailure: function() { ajax_error("Transportfehler") },
		onSuccess: function(transport) { return; }
	};
}

function sendRequest2(url,callback,params)
{
	var parameters = { };
	var parameters = Object.extend(parameters, params);
	var tmp = getDefaultCallback();
	if(callback)
		var tmp = Object.extend(tmp,callback);
	var tmp = Object.extend(tmp,
		{
			method: 'post',
			parameters: parameters
		}
	);
	new Ajax.Request(url,tmp);
}

function sendRequest(action,subaction,callback,params)
{
	var parameters =
	{
		action: ""+action,
		subaction: ""+subaction
	};
	var parameters = Object.extend(parameters, params);
	var tmp = getDefaultCallback();
	if(callback)
	{
		var tmp = Object.extend(tmp, callback);
	}
	var tmp = Object.extend(tmp,
		{
			method: 'post',
			parameters: parameters
		}
	);
	new Ajax.Request('/index.rpc.php',tmp);
}


function registerEventByClassName(name, eventFunction)
{
                var links = Element.getElementsBySelector(document.body, name);
                var i = 0;
                while (i<links.length)
                {
                        debug("registerLink: "+links[i])
                        Event.observe(links[i], "click", eventFunction);
                        i++;
                }
}
function unregisterEventByClassName(name, eventFunction)
{
                var links = Element.getElementsBySelector(document.body, name);
                var i = 0;
                while (i<links.length)
                {
                        debug("unregisterLink: "+links[i])
                        Event.stopObserving(links[i], "click", eventFunction);
                        i++;
                }
}

