function $(id) {
	return document.getElementById(id);
}

function $V() {
	arg = (typeof(arguments[0]) != 'object')?
		$(arguments[0]):
		arguments[0];
	if (arg.type.indexOf('select') != -1) {
		numOption = arguments[1];
		value     = arg.options[numOption].value;
	}
	return value;
}

function $S(id) {
	selectedIndex = (typeof(id) != 'object')?
		$(id).selectedIndex:
		id.selectedIndex;
	selectedValue = $V(id, selectedIndex);
	return selectedValue;
}

var Ajax = function() {
	var _request;
	var _onComplete;
	var _id;

	var _loadURL = function(url, args) {
		var newUrl = url+'?'+args;
		_request = window.XMLHttpRequest?
			new XMLHttpRequest():
			new ActiveXObject("Microsoft.XMLHTTP");
		_request.onreadystatechange = _state;
		_request.open("GET", newUrl, true);
		_request.send(null);
	}

	var _state = function() {
		switch(_request.readyState) {
			case 4:
				if(typeof(_onComplete) != 'undefined')
					_onComplete();
				break;
		}
	}

	var _contentToHTML = function() {
		document.getElementById(_id).innerHTML = _request.responseText;
	}

	this.contentToHTML = function(url, id, args) {
		_id  = id;
		_onComplete = _contentToHTML;
		_loadURL(url, args);
	}

	this.request = function(url, args) {
		_loadURL(url, args);
	}
}

var Element = function() {
	this.show = function() {
		countElements = arguments.length;
		for(i = 0; i < countElements; i++) {
			document.getElementById(arguments[i]).style.display = 'none';
		}
	}

	this.hide = function() {
		countElements = arguments.length;
		for(i = 0; i < countElements; i++) {
			document.getElementById(arguments[i]).style.display = 'block';
		}
	}
}

var ajax    = new Ajax();
var element = new Element();
