var USER_DATA = {
    Browser: {
        KHTML: /Konqueror|KHTML/.test(navigator.userAgent) &&
                !/Apple/.test(navigator.userAgent),
        Safari: /KHTML/.test(navigator.userAgent) &&
                /Apple/.test(navigator.userAgent),
        Opera: !!window.opera,
        MSIE: !!(window.attachEvent && !window.opera),
        Gecko: /Gecko/.test(navigator.userAgent) &&
                !/Konqueror|KHTML/.test(navigator.userAgent)
    },

    OS: {
        Windows: navigator.platform.indexOf("Win") > -1,
        Mac: navigator.platform.indexOf("Mac") > -1,
        Linux: navigator.platform.indexOf("Linux") > -1
    }
}
//-----------------
var struct_site = 0;
var path = '';
var ajax_label_id = new Object ();
var ajax_data = new Object ();
var ajaxEventStart = 0;
var ajaxEventComplete = 0;

function init_data(struct, struct_path)
{
	struct_site = struct;
	path = struct_path;
}

function ajax_indication (elem_id)
{
	var elem = $("#"+elem_id).get(0);

	if (typeof(elem) == 'undefined')
		return;

	$('body').append ("<div id='ajax_indicator'></div>");
	
	$(document).ajaxStart(function(){
			$("#ajax_indicator").css('left', $(elem).offset().left);
			$("#ajax_indicator").css('top', $(elem).offset().top);

			$("#ajax_indicator").css('width', $(elem).width());
			$("#ajax_indicator").css('height', $(elem).height());
	});
	
	$("#ajax_indicator").ajaxStop(function(){
		$('#ajax_indicator').remove();
	});
}

function end_ajax_indication ()
{
}

//Добавление информации о событии ajax в ajax_data
function aj (ajax_event, ajax_data_type, ajax_data_key, ajax_data_value)
{
	if (ajax_data_value == null)
		ajax_data_value = ajax_data_key;

	if (ajax_data[ajax_event] == null)
	{
		ajax_data[ajax_event] = new Object();
		ajax_data[ajax_event]['reload'] = new Object();
		ajax_data[ajax_event]['context'] = new Object();
		ajax_data[ajax_event]['variable'] = new Object();
		ajax_data[ajax_event]['request'] = new Object();
		ajax_data[ajax_event]['indicator'] = new Object();
	}

	ajax_data[ajax_event][ajax_data_type][ajax_data_key] = ajax_data_value;
}

function get_elem_value(elem_id)
{
	var elem = $("#"+elem_id).get(0);
		
	var tag = elem.tagName;
	var tag_type = elem.type;
	
	if (tag == "SPAN")
	{	
		var val = $('#'+elem_id).text();
	//	if (!val) val = 1;
		return val;
	}
	else if (tag == "INPUT" && (tag_type == "checkbox" || tag_type == "radio"))
	{
		if (elem.checked)
			return elem.value;
	}
	else
		return elem.value;

	return false;
}

function get_ajax_event_var_data(ajax_event)
{
	if (!ajax_event)
		return;

 	if (!ajax_data[ajax_event])
		ajax_data[ajax_event] = new Object();

	var_elem = ajax_data[ajax_event]['variable'];
	request_var = ajax_data[ajax_event]['request'];

	result = new Object();
	for (i in var_elem)
	{
		if (i.substring(0,6) == 'tag_id')
		{
			result[var_elem[i]] = request_var[i];
		}
		else 
		{
			result['ajax_label_'+var_elem[i]+'_0'] = request_var[i];
		}
	}

	return result;
}


function ajax_reload(ajax_event, this_var_name, this_elem, index_var, index)
{
	var param_name_counter = new Object();
	
	reload_elem = ajax_data[ajax_event]['reload'];
	var_elem = ajax_data[ajax_event]['variable'];
	request_var = ajax_data[ajax_event]['request'];
	indicator = ajax_data[ajax_event]['indicator'][0];
	context = ajax_data[ajax_event]['context'];

	ajaxEventStart = ajax_event;

	for (i in reload_elem)
	{
		var ajax_filename = 'aj_' + struct_site + '_' + reload_elem[i] + '.php';
		
		if (index == -1)
		{
			var counter_reload = 0;
			var reload_elem_id = 0;
			var params = new Object();
			params['context'] = context[i];

			if (i.substring(0,6) == 'tag_id')
			{
				reload_elem_id = reload_elem[i];
				ajax_filename = 'aj_' + struct_site + '_' + i.substring(7) + '.php'
			}
			else
				reload_elem_id = reload_elem[i] + "_0";

			var indicator_elem_id = reload_elem_id;
			params['__index__'] = -1;

			if (this_var_name != null)
				if (this_elem.tagName == "INPUT" && (this_elem.type == "checkbox" || this_elem.type == "radio"))
				{
					if (this_elem.checked)
						params[this_var_name] = $(this_elem).attr("value");
				}
				else
					params[this_var_name] = $(this_elem).attr("value");
		
			for (j in var_elem)
			{
				var var_name = request_var[j];

				if (j.substring(0,6) == 'tag_id')
				{
					elem_id = var_elem[j];
					value = get_elem_value(elem_id);
		
					if (param_name_counter[var_name] == null)
						param_name_counter[var_name] = 0;
					else
						param_name_counter[var_name]++;
					
					if (var_name.charAt(var_name.length-1) == ']')
						var_name = var_name.substring(0,var_name.length-1) + param_name_counter[var_name] + ']';

// 					if (value)
					var elem  = $("#"+elem_id).get(0)
						
					if (elem.tagName == "INPUT" && (elem.type == "checkbox" || elem.type == "radio"))
					{
						if (elem.checked)
							params[var_name] = value;
					}
					else
						params[var_name] = value;
				}
				else
				{
					var counter_variable = 0;

					for (; document.getElementById(elem_id = 'ajax_label_' + var_elem[j] + '_' + counter_variable); counter_variable++)
					{
						var_name = request_var[j];
						value = get_elem_value(elem_id);
						
						if (param_name_counter[var_name] == null)
							param_name_counter[var_name] = 0;
						else
							param_name_counter[var_name]++;
					
						if (var_name.charAt(var_name.length-1) == ']')
							var_name = var_name.substring(0,var_name.length-1) + param_name_counter[var_name] + ']';


//						if (value)
						var elem  = $("#"+elem_id).get(0);

						if (elem.tagName == "INPUT" && (elem.type == "checkbox" || elem.type == "radio"))
						{
							if (elem.checked)
								params[var_name] = value;
						}else 
							params[var_name] = value;
					}
				}
			}

			if (i.substring(0,6) != 'tag_id')
			{
				reload_elem_id = 'ajax_label_' + reload_elem_id;
				indicator_elem_id = reload_elem_id;
			}

			if (indicator)
				indicator_elem_id = indicator + '_' + 0;

			ajax_indication (indicator_elem_id);

			ajax_filename = path + '__data/' + ajax_filename;

			$.post(ajax_filename, params, function (html)
				{
					ajaxEventComplete = ajax_event;
					$('#' + reload_elem_id).replaceWith(html);
				}
				, 'html');
		}
		else //if index is set
		{
			var params = new Object();
			params['__index__'] = index;
			params['__index_var__'] = index_var;
			params['context'] = context[i];

			if (this_var_name != null)
				if (this_elem.tagName == "INPUT" && (this_elem.type == "checkbox" || this_elem.type == "radio"))
				{
					if (this_elem.checked)
						params[this_var_name] = $(this_elem).attr("value");
				}else 
					params[this_var_name] = $(this_elem).attr("value");

			for (j in var_elem)
			{
				elem_id = var_elem[j];

				if(j.substring(0,6) != 'tag_id')
					elem_id = elem_id + '_' + index;

				value = get_elem_value('ajax_label_' + elem_id);
	
				var var_name = request_var[j];
				
				if (param_name_counter[var_name] == null)
					param_name_counter[var_name] = 0;
				else
					param_name_counter[var_name]++;
					
				
				if (var_name.charAt(var_name.length-1) == ']')
					var_name = var_name.substring(0,var_name.length-1) + param_name_counter[var_name] + ']';

// 				if (value)
				params[var_name] = value;
			}

			var reload_elem_id = reload_elem[i] + '_' + index;
			var indicator_elem_id = reload_elem_id;

			if (indicator)
			{
				indicator_elem_id = indicator + '_' + index;
			}

			ajax_indication ('ajax_label_' + indicator_elem_id);
			
			$.post(path + '__data/' + ajax_filename, params, function (html)
			{
				ajaxEventComplete = ajax_event;
				$('#ajax_label_'+reload_elem_id).replaceWith(html);
			}
			, 'html');
		}
	}
// 	end_ajax_indication ();
}
