if(!YAHOO.Mevia){ YAHOO.namespace("Mevia"); }
if(window.transactions==null)
{
	window.transactions=[];
}

Request = function(url,staticparams,dynamicparams,onsuccess,onfailure, method)
{
	this.url=url;
	this.params=staticparams;
	this.indynamicparams=dynamicparams;
	this.outdynamicparams='';
	this.onsuccess=onsuccess;
	this.onfailure=onfailure;
	this.successhandler=Request_SuccessHandler;
	this.failurehandler=Request_FailureHandler;	
	this.callback={'success':this.successhandler,
					'failure':this.failurehandler,
					onsuccess:this.onsuccess,
					onfailure:this.onfailure};
	this.collectParams=Request_collectparams;
	this.send = Request_send;
	this.formatGetUrl=Request_formatGetUrl;
	this.formatGetParams=Request_formatGetParams;
	this.formatPostUrl=Request_formatPostUrl;
	this.formatPostParams=Request_formatPostParams;
	this.setStaticParams=Request_setStaticParams;
	this.setStaticParam=Request_setStaticParam;
	this.setOnSuccess = Request_SetOnSuccess;
		
	this.loading_img = document.getElementById('ajax_loader')
	
	this.urlmethod='GET';
	if (method == 'POST')
	{
		this.urlmethod = 'POST';
	}
};


Request_SetOnSuccess = function(fun){
	this.callback.onsuccess = fun;
}

Request_SuccessHandler=function(o)
{
		// delete window.transactions[o.tId];
		YAHOO.Mevia.current_transaction = null;
		if(this.onsuccess!==null)
		{
			this.onsuccess(o);
		}
		if(document.getElementById('ajax_loader')){
			document.getElementById('ajax_loader').style.display = 'none';
		}
}

Request_FailureHandler=function(o)
{
		YAHOO.Mevia.current_transaction = null;
		// delete window.transactions[o.tId];
		if(this.onfailure!==null)
		{
			this.onfailure(o);
		}
		if(document.getElementById('ajax_loader')){
			document.getElementById('ajax_loader').style.display = 'none';
		}
}

Request_collectparams=function()
{
	this.outdynamicparams=getDynamicParamList(this.indynamicparams);
};

Request_setStaticParams=function(params)
{
	this.params = params;
};

Request_setStaticParam=function(paramname,paramval)
{
	this.params=setUrlEncodedKey(paramname,paramval,this.params);
}

Request_formatGetUrl=function()
{
    var url=this.url;
    this.collectParams();
    var sep=(this.url.indexOf('?')>-1?'&':'?');
    if(this.params !== '')
    {
        url+=sep+this.params;
        sep='&';
    }
    if(this.outdynamicparams!=='')
    {
        url+=sep+this.outdynamicparams;
    }
    return url;
};

Request_formatGetParams = function()
{
	return null;
};

Request_formatPostUrl = function()
{
	return this.url;
};

Request_formatPostParams = function()
{
	postparams = '';
	sep='';
	if(this.params !== '')
	{
		postparams = this.params;
		sep='&';
	}
	if (this.outdynamicparams !== '')
	{
		postparams += sep+this.outdynamicparams;
		sep='&';
	}
	if(window.scriptcache)
	{
		postparams+=sep+'scriptcache='+window.scriptcache;
	}
	if (postparams.length === 0)
	{
		postparams=null;
	}
	
	return postparams;
};

Request_send = function()
{
	// show loader
	if(this.loading_img){
		this.loading_img.style.display = 'block';
	}
	
	var postparams = null;
	this.collectParams();
	var url=null;
	if (this.urlmethod == 'GET')
	{
		url = this.formatGetUrl();
		postparams = this.formatGetParams();
	}
	else // Mode POST
	{
		url = this.formatPostUrl();
		postparams = this.formatPostParams();
	}
	// var transaction = YAHOO.util.Connect.asyncRequest(this.urlmethod, url, this.callback, postparams);
	if(!YAHOO.Mevia.current_transaction){		
		YAHOO.Mevia.current_transaction = YAHOO.util.Connect.asyncRequest(this.urlmethod, url, this.callback, postparams);
	}
	// window.transactions[transaction.tId]=transaction;
};