function AjaxGlobalAppear(area_indicator, area_appear, area_show, area_hide, url, url_parameter)
{
	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);

				var str = request.responseText;
				var area_a = $(area_appear);

				area_a.innerHTML = str;
				Effect.BlindDown(area_a);

				if(area_show != '')
					Element.show($(area_show));
				if(area_hide != '')
					Element.hide($(area_hide));
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true,
			method:'get'
		}
	);
	return true;
}

function AjaxGlobalGetJS(area_indicator, url, url_parameter)
{
	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true,
			method:'get'
		}
	);
	return true;
}

function AjaxGlobalSwitch(area_indicator, area_switch_show, area_switch_hide, area_status, url, url_parameter)
{
	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);

				var str = request.responseText;
				var area_1 = $(area_switch_show);
				var area_2 = $(area_switch_hide);
				var area_s = $(area_status);

				area_s.innerHTML = str;
				Element.show(area_s);
				Effect.Pulsate(area_s);

				Element.show(area_1);
				Element.hide(area_2);
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true,
			method:'get'
		}
	);
	return true;
}

function AjaxGlobalRemove(area_indicator, area_remove, area_status, url, url_parameter)
{
	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);

				var str = request.responseText;
				var area_r = $(area_remove);
				var area_s = $(area_status);

				area_s.innerHTML = str;
				Element.show(area_s);
				Effect.Pulsate(area_s);

				Element.hide(area_remove);
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true
		}
	);
	return true;
}

function AjaxGlobalReplace(area_indicator, area_replace_1, area_replace_2, url, url_parameter)
{
	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);

				var str = request.responseText;

				if(area_replace_2 != '')
				{
					var area_2 = $(area_replace_2);
					var pos = str.indexOf('^');
					area_2.innerHTML = str.substring(pos + 1);
					str = str.substring(0, pos);
				}
				var area_1 = $(area_replace_1);
				area_1.innerHTML = str;
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true,
			method:'get'
		}
	);
	return true;
}

// used in image module
function AjaxGlobalLoading(area_indicator, area_loading, area_replace, area_append, url, url_parameter)
{
	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				//Element.hide(area_indicator);

				var str = request.responseText;

				var pos_percent = str.indexOf('^');
				var percent = str.substring(0, pos_percent);
				str = str.substring(pos_percent + 1);

				var pos_eval = str.indexOf('^');
				var str_eval = str.substring(0, pos_eval);
				str = str.substring(pos_eval + 1);

				$(area_loading).style.paddingLeft=(percent * 207 + 6) + 'px';
				if(area_append != '')
				{
					var area_2 = $(area_append);
					var pos = str.indexOf('^');
					area_2.innerHTML = str.substring(pos + 1) + area_2.innerHTML;
					str = str.substring(0, pos);
				}
				var area_1 = $(area_replace);
				area_1.innerHTML = str;

				if(percent < 1)
					eval(str_eval);
				else
				{
					Element.hide(area_indicator);
					Element.hide(area_loading);
					Element.hide(area_replace);
				}
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true
		}
	);
	return true;
}

function AjaxGlobalUpdate(check_fields, area_indicator, area_false, area_true, url, url_parameter)
{
	for(akt in check_fields)
	{
		var tmp = $(check_fields[akt]);
		if(tmp && tmp.value == '')
		{
			new Effect.Shake(tmp);
			return false;
		}
	}

	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);

				var str = request.responseText;
				var area_f = $(area_false);
				var area_t = $(area_true);

				if(str.indexOf('ERROR:') != -1)
				{
					area_f.innerHTML = str.substring(7);
					Element.show(area_f);
					Effect.Pulsate(area_f);
				}
				else
				{
					area_f.innerHTML = '';
					Element.hide(area_f);

					new Insertion.Top(area_t, str);
					Element.show(area_t);

					for(akt in check_fields)
						$(check_fields[akt]).value = '';
				}
			},
			parameters:url_parameter,
			asynchronous:true,
			evalScripts:true
		}
	);
	return true;
}

function AjaxCheckFieldsRemote(check_fields, area_indicator, area_status, url, url_parameter)
{
	var param = "";
	for(akt in check_fields)
	{
		var tmp = $(check_fields[akt]);
		if(tmp)
		{
			param += '&' + check_fields[akt] + '=' + tmp.value;
		}
	}

	new Ajax.Request
	(
		url,
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);
/*
				var str = request.responseText;
				var area_f = $(area_false);
				var area_t = $(area_true);

				if(str.indexOf('ERROR:') != -1)
				{
					area_f.innerHTML = str.substring(7);
					Element.show(area_f);
					Effect.Pulsate(area_f);
				}
				else
				{
					area_f.innerHTML = '';
					Element.hide(area_f);

					new Insertion.Top(area_t, str);
					Element.show(area_t);

					for(akt in check_fields)
						$(check_fields[akt]).value = '';
				}*/
			},
			parameters:url_parameter + param,
			asynchronous:true,
			evalScripts:true
		}
	);
}

function AjaxCheckFields(check_fields)//, box_to_show)
{
	var ret = true;
	//for(akt in check_fields)
	for(var akt = 0; akt < check_fields.length; akt++)
	{
		var tmp = $(check_fields[akt]);
		if(tmp)
		{
			var val = check_fields[akt];
			var chk = $("" + val + "_checkable");
			var pos = val.lastIndexOf("_");
			var parent = val.substring(0, pos);
			var chk_parent = $("" + parent + "_checkable");

			if(tmp.value == '')
			{
				//alert(val + " " + parent);
				new Effect.Shake(tmp);
				if(chk)
				{
					if(!chk.hasClassName('error'))
					{
						chk.setStyle({fontWeight:'bold'});
						chk.addClassName('error');
					}
					new Effect.Pulsate(chk);
				}
				if(chk_parent)
				{
					if(!chk_parent.hasClassName('error'))
					{
						chk_parent.setStyle({fontWeight:'bold'});
						chk_parent.addClassName('error');
					}
					new Effect.Pulsate(chk_parent);
				}
				ret = false;
			}
			else
			{
				if(chk && chk.hasClassName('error'))
				{
					chk.setStyle({fontWeight:'normal'});
					chk.removeClassName('error');
				}
				if(chk_parent && chk_parent.hasClassName('error'))
				{
					chk_parent.setStyle({fontWeight:'normal'});
					chk_parent.removeClassName('error');
				}
			}
		}
	}
/*
	var box = $(box_to_show);
	if(box)
	{
		//alert(box_to_show + ' # ' + ret);
		if(!ret)
		{
			//box.style.display = 'block';
			//Effect.Fade(box);
			Element.show(box);
		}
		else
		{
			//box.style.display = 'none';
			Effect.Fade(box);
		}
	}
*/
	return ret;
}

function AjaxResetStyle(check_fields)//, box_to_show)
{
	var ret = true;
	//for(akt in check_fields)
	for(var akt = 0; akt < check_fields.length; akt++)
	{
		var tmp = $(check_fields[akt]);
		if(tmp)
		{
			var val = check_fields[akt];
			var chk = $("" + val + "_checkable");
			var pos = val.lastIndexOf("_");
			var parent = val.substring(0, pos);
			var chk_parent = $("" + parent + "_checkable");

			if(chk && chk.hasClassName('error'))
			{
				chk.setStyle({fontWeight:'normal'});
				chk.removeClassName('error');
			}
			if(chk_parent && chk_parent.hasClassName('error'))
			{
				chk_parent.setStyle({fontWeight:'normal'});
				chk_parent.removeClassName('error');
			}
		}
	}
/*
	var box = $(box_to_show);
	if(box)
	{
		//alert(box_to_show + ' # ' + !ret);
		if(!ret)
		{
			box.style.display = 'block';
			Effect.Fade(box);
		}
		else
		{
			//box.style.display = 'none';
			Effect.Fade(box);
		}
	}
*/
	return ret;
}

function AjaxGlobalGetCaptcha(area_indicator, captcha_image, captcha_hash)
{
	new Ajax.Request
	(
		'index2.php',
		{
			onLoading:function(request)
			{
				Element.show(area_indicator);
			},
			onComplete:function(request)
			{
				Element.hide(area_indicator);

				var str = request.responseText;
				var area_img = $(captcha_image);
				var area_hsh = $(captcha_hash);

				area_img.src = "index2.php?module=global|captcha&hash=" + str;
				area_hsh.value = str;
			},
			parameters:'module=global|captcha',
			asynchronous:true,
			evalScripts:true,
			method:'get'
		}
	);
	return true;
}