var ajaxLoader = Class.create();
ajaxLoader.prototype = {
	
	initialize : function(){
		this.params = new Hash();	
		this.groupIDCounter = 0;
		this.groupRequests = new Hash();
	},
	
	makeRequestAndSub : function(ajaxURL,ajaxDIV){
		var ajaxRequest = new Ajax.Request(ajaxURL, {
		method: 'get',
		parameters: this.params ,
		onComplete:function(response)
			{
				
					if($(ajaxDIV))
					{
						var testText = response.responseText;
						if(testText != "" )
						{
							$(ajaxDIV).innerHTML = testText;
							initPage();
						}
					}				
			}.bind(this)
		});		
	},
	
	requestForGroupElement : function(ajaxURL,ajaxDIV,groupID){
		var ajaxRequest = new Ajax.Request(ajaxURL, {
		method: 'get',
		parameters: this.params ,
		onComplete:function(response)
			{
				var groupInfo = this.groupRequests.get(groupID);
				groupInfo.ajax.set(ajaxDIV,response.responseText);
				groupInfo.complete++;
				if(groupInfo.complete == groupInfo.size)
				{
					this.groupSubHandler(groupID);
				}
			}.bind(this)
		});		
	},
	
	groupSubHandler : function(groupID)
	{
		var groupInfo = this.groupRequests.get(groupID);
		groupInfo.ajax.each( function(pair)
			{
				if($(pair.key))
				{
					$(pair.key).innerHTML = pair.value;
				}
			});
		initPage();
	},
	
	makeRequestAndSubGroup : function( requestArray )
	{
		if(requestArray % 2 == 1)  return -1;
		var i = 0;
		var group_id = this.getNewGroupId();
		this.groupRequests.set(group_id,{size: requestArray.length/2, complete:0, ajax: new Hash()});
		for( i = 0; i < requestArray.length; i =  i + 2)
		{
			this.requestForGroupElement(requestArray[i],requestArray[i+1],group_id);
		}	
	},
	
	getNewGroupId : function()
	{
		return this.groupIDCounter++;		
	},
	
	addParam : function(newParamID,newParamValue)
	{
		this.params.set(newParamID,newParamValue);
	},
		
	getCurrentPagesParams: function()
	{
		this.getAndSetParamsFromURL(location.href);
	},
	
	getAndSetParamsFromURL : function(url)
	{
		var params = url.split("?",2);
		if(params.length > 1)
		{
			params = params[1].split("&");
			var i = 0;
			var tempParam;
			for( i = 0; i< params.length; i++)
			{
				tempParam = params[i].split("=");
				this.addParam(tempParam[0],tempParam[1]);
			}		
		}	
	},
	
	getAndSetParamFromURL : function(url,paramId)
	{
		var params = url.split("?",2);
		if(params.length > 1)
		{
			params = params[1].split("&");
			var i = 0;
			var tempParam;
			for( i = 0; i< params.length; i++) 
			{
				tempParam = params[i].split("=");
				if(paramId == tempParam[0])
				{
					this.addParam(tempParam[0],tempParam[1]);
					return;
				}
			}		
		}	
	},
	
	clearParams: function()
	{
		this.params = new Hash();
	}
};

Event.observe(window, 'load', ajaxLoaderInit, false); 
var myAjaxLoader = null;
function ajaxLoaderInit() {
	myAjaxLoader = new ajaxLoader();
}
