
// GENERAL FUNCTIONS
/*
function $ (obj)
{
	return document.getElementById(obj);
}
*/
function getobj (obj)
{
	return document.getElementById(obj);
}

function rm (obj_id)
{
	var obj = getobj(obj_id);
	if (obj)
	{
		obj.parentNode.removeChild(obj);
	}
}

function getElementsByClassName(class_name, obj)
{
	if(obj)
	{
		var arr = new Array();

		var elements = obj.getElementsByTagName('*');

		for(var i = 0; i<elements.length; i++)
		{
			if(elements[i].className.match(class_name))
			{
				arr.push(elements[i]);
			}
		}
		return arr;
	}
	return false;
}

function toggle_display(id)
{
	obj = getobj(id);
	
	if(obj)
	{
		obj.style.display = (obj.style.display == '' || obj.style.display == 'block') ? 'none' : 'block';
	}
}

function addEvent(obj, ev, fn)
{
  if (obj.addEventListener)
	{
		obj.addEventListener(ev, function(){eval(fn);}, false);
		return true;
  }
	else if (obj.attachEvent)
	{
		var ret = obj.attachEvent("on"+ev, function(){eval(fn);});
		return ret;
	} 
	else
	{
		return false;
	}
}

function ax(mode, url, target, func, loader, form, pstr)
{
	// TO SOLVE PROBLEM WITH SYNCHRON RUNNING REQUESTS
	var now = new Date();
	var timestamp = 'req'+now.getTime();
	
	if(!mode.match(/^GET|POST$/))
	{
		return false;
	}
	
	var post_str = null;
	var post_code = '';
	if(mode == 'POST')
	{
		if(pstr != undefined && pstr != '')
		{
			post_str = pstr;
		}
		else if(typeof form_post_str == 'function')
		{
			post_str 	= form_post_str(form);
		}
		post_code = 'window[timestamp].setRequestHeader(\'Content-Type\', \'application/x-www-form-urlencoded; charset=UTF-8\');';
	}
	
	// LOADING INDICATOR
	/*
	if(getobj(target) && loader)
	{
		getobj(target).innerHTML = '<div class="ajax_loader"><img src="http://web.ctrl.lu/_res/loader.gif"/></div>';		
	}
	*/

	// NATIVE XMLHTTPREQUEST OBJECT
	if (window.XMLHttpRequest)
	{
		window[timestamp] = new XMLHttpRequest();
		window[timestamp]._target = target;
		window[timestamp].onreadystatechange = function() { ax_done(this._target, func, timestamp); };
		window[timestamp].open(mode, host+url, true);
		eval(post_code);
		window[timestamp].send(post_str);
	}
	// IE 5.5, IE6
	else if (window.ActiveXObject)
	{
		// IE/WINDOWS ACTIVEX OBJECT
		window[timestamp] = new ActiveXObject("Microsoft.XMLHTTP");
		if (window[timestamp])
		{
			window[timestamp]._target = target;
			window[timestamp].onreadystatechange = function() { ax_done(this._target, func, timestamp); };
			window[timestamp].open(mode, host+url, true);
			eval(post_code);
			window[timestamp].setRequestHeader("Pragma", "no-cache");
			window[timestamp].setRequestHeader("Cache-Control", "must-revalidate");
			window[timestamp].send(post_str);
		}
	}
	return true;
}

function ax_done(target, func, timestamp)
{
	if(typeof target == 'string' && target != '') target = $('#' + target);
	else if(typeof target == 'object' && target)	target = $(target);
	else																					target = false;
	
	// ONLY IF WINDOW[TIMESTAMP] IS "LOADED"
	if (window[timestamp] && window[timestamp].readyState == 4)
	{
		// ONLY IF "OK"
		if (window[timestamp].status == 200)
		{
			results = window[timestamp].responseText;
			
			if(target) $(target).html(results);
			if(func != '') eval(func);
		}
		else if(target) $(target).html('<strong>Error:</strong> ' + window[timestamp].statusText);
	}
}

Array.prototype.array_search = function(str)
{
	for(var i = 0; i < this.length; i++)
	{
		if(this[i] == str)
		{
			return i;
		}
	}
	return -1;
};