function Parameters()
{
	this.index = Array();
	this.set = _createEntry;
	this.getObject = _getObj;
	this.getBool = _getBool;
	this.getInt = _getInt;
	this.getString = _getString;
	this.isset = _getBool;
	this.query = _mergeParams;
	this.clear = _purge;
}
/**
	@desc Sets value to specified key.
	@param object name Key of value.
	@param object value Value
	@param bool overwrite Overwrite existing keys? [false]
*/
function _createEntry(name,value,overwrite)
{
	if (overwrite == null) {
		// privzeta vrednost parametra.
		overwrite = false;
	}
	if (this.index[name] == null || (this.index[name] != null && overwrite == true)) {
		this.index[name] = value;
	}
}
/**
@desc Gets object from specified index. If key hasn't been set, it returns null.
@param object name Name of value to get as object
*/
function _getObj(name)
{
	return this.index[name] != null ? this.index[name] : null;
}
/**
@desc Gets boolean from specified index. If key hasn't been set, it returns false.
@param object name Name of value to get as bool.
*/
function _getBool(name)
{
	return this.index[name] != null ? new Boolean(this.index[name]) : false;
}
/**
@desc Gets int from specified index. If key hasn't been set, it returns 0.
@param object name Name of value to get as int.
*/
function _getInt(name)
{
	if (this.index[name] != null) {
		var n = new Number(this.index[name]);
		return isNaN(n) ? 0 : n;
		
	}
	else {
		return 0;
	}
}
/**
@desc Gets int from specified index. If key hasn't been set, it returns "".
@param object name Name of value to get as string.
*/
function _getString(name)
{
	return this.index[name] != null ? this.index[name].toString() : "";
}
function _mergeParams()
{
	//if (this.index.length > 0) {
		var queryString = "?";
		for (var i in this.index) {
			queryString += i + "=" + this.index[i] + "&";
		}
		return queryString.substring(1,queryString.length-1);
	//}
	//else
		//return "";
}
function _purge()
{
	this.index = null;
	this.index = Array();
}
///////////////////////////////////////////////////////////////////////////
function queryServer(serverParameters,clientParameters)
{	
	var query = serverParameters.query();
	$.ajax({
		url:	"ajax/default.html",
		data: query,
		type:	"GET",
		async:	false,
		success: clientParameters.getObject("successResponse")
	});
}
function getPage(page)
{
	var p = new Parameters();
	var s = new Parameters();
	p.set("page",page);
	p.set("type","bookstore_paging");
	s.set("successResponse",pagesReceived);
	// s.set("failedResponse",pagesFailed);
	// ...
	queryServer(p,s);
}
function pagesReceived(r)
{
	$('#search_results').html(r);
}