$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
  while(x<c.length){var m=r.exec(c.substr(x));
    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
  while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){b=parseInt(m[1].substr(1),16);
  t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});


function Ajax_Execute(url, method, params, successCallback, failedCallback, noCache)
{   
	params["AjaxRequest"] = method;
	var serviceUrl = Tools_GetUrl(url, params);
	
	return $.ajax({
	
		url: serviceUrl,
		cache: noCache ? false : true,
		success: function(json)
		{
			var indexOfTrace = json.indexOf('<div id="__asptrace">');
			if (indexOfTrace != -1)
				json = json.substring(0, indexOfTrace);
			
			eval("var values = (" + json + ");");
			if (values && !values.error)
			{
				if (successCallback)
					successCallback(values);
			}
			else if (failedCallback)
				failedCallback(values);
		},
		error: function()
		{
			if (failedCallback)
				failedCallback({ error: "Unknown Ajax error!" });
		}
	});
}



