var inits=false;
var logics_obj=[];
var curModule=false; //name
var curLogic=false; // object
var selLogicRef='';
var logictext = 'asd';

var debug;

var LogicDialog = {
	init : function(fe) {

		if(fe.className=='imgLogic' || fe.className == 'imgLogic mceItemNoResize')
		{
			param=fe.title.substring(2,fe.title.length-2).split(",");
			inits=param;
			loadModule(param);
		}
	},
	
	close: function() {

	},
	
	insert : function() {
		if(!curModule || !curLogic)
		{
			alert("Не выбрана логика");
			return;
		}
		logictext = '<%';
		logictext += curModule;
		logictext += ',' + curLogic;
		logictext += ', {' + grubParams() + '}';
		logictext += '%>';
		var php_id = Math.ceil(Math.random()*100000000);
        GLOBAL_PHP[php_id] = logictext;
		var html='<img class="imgLogic mceItemNoResize" width="24" height="24" align="" title="'+php_id+'" src="/core/admin/templates/default/img/mylogic.png" />';
        return html;
	}
};

function grubParams() {
	$('#gsmodule_logic_params').find('input, select, textarea').each(function(){
		if(!(/^sort/.test($(this).attr('name'))) && !(/^field/.test($(this).attr('name')))) {
			if($(this).attr('type') == 'checkbox')
				selLogicRef += $(this).attr('name') + ':' + $(this).attr('checked') + '|';
			else
				selLogicRef += $(this).attr('name') + ':' + jQuery.trim($(this).val()) + '|';
		}
	});
	return selLogicRef+getSort()+getFiltrs();
}

function getSort() {
	var sort = 'SORT=';
	var i = 0;
	$('#add_sort').find('div').each(function(){
		var dv = $(this);
		var sort_field = dv.find('[name="sort['+i+'][field]"]').val();
		var sort_asc = dv.find('[name="sort['+i+'][asc]"]').val();
		var sort_public = dv.find('[name="sort['+i+'][public]"]').val();
		sort += '[FIELD:'+jQuery.trim(sort_field)+'+';
		sort += 'ASC:'+jQuery.trim(sort_asc)+'+';
		sort += 'PUBLIC:'+jQuery.trim(sort_public)+']';
		i++;
	});
	sort += "|";
	return sort;
}

function getFiltrs() {
	var sort = 'Filtrs=';
	var i = 0;
	$('#add_filtr').find('div').each(function(){
		var dv = $(this);
		var filtr_field = dv.find('[name="field['+i+'][field]"]').val();
		var filtr_act = dv.find('[name="field['+i+'][act]"]').val();
		var filtr_value = dv.find('[name="field['+i+'][val]"]').val();
		var filtr_key = dv.find('[name="field['+i+'][key]"]').val();
		sort += '[FIELD:'+jQuery.trim(filtr_field)+'+';
		sort += 'ACT:'+jQuery.trim(filtr_act)+'+';
		sort += 'KEY:'+jQuery.trim(filtr_key)+'+';
		sort += 'VALUE:'+jQuery.trim(filtr_value)+']';
		i++;
	});
	sort += "|";
	return sort;
}

/**
 * Ищет в массиве значение
 */
function search_value(arr,value)
{
	for(var i=0;i<arr.length;i++)
	{
		if(arr[i]==value)
		{
			return i;
		}
	} 
	return false;
}

function loadModule(mod_name)
{
	getLogicModule($('[module='+mod_name[0]+']')[0], mod_name[0], function() { 
		getLogicModuleParams($('[module_type='+mod_name[1]+']')[0], mod_name[0], mod_name[1], function(){
			var regex = new RegExp('[|{}]([^:]*)[:]([^|{}]*)', 'g');
			var elements = [];
			var element;
			while( element =  regex.exec(mod_name[2])){
				try {
					var elem = $('[name='+element[1]+']');
					if(elem.attr('type') == 'checkbox')
					{
						if(element[2] == 'true')
							elem.attr('checked', 'checked');
						else
							elem.attr('checked', '');
					}
					else
						elem.val(element[2]);
				} catch(err) {
				}
			}
		});
	});
}

function errLogic(code)
{
	document.getElementById('status').innerHTML='Неизвестная ошибка';
	document.getElementById('logic').innerHTML='';
}

function trim(string)
{
  return string.replace(/(^\s+)|(\s+$)/g, "");
}

function getLogicModule(obj, name, func) {
	$('.logic_module_active').removeClass('logic_module_active');
	$(obj).addClass('logic_module_active');
	curModule = name;
	$.ajax({
		 url: '/admin/ajax/logic/module',
		 data: {'module':name},
		 success: function(text) {
		 	$('#gsmodule_logic').html(text);
		 	if(typeof func == 'function')
		 		func.call();
	 	}
	 });
}

function getLogicModuleParams(obj, name, type, func) {
	$('.logic_type_active').removeClass('logic_type_active');
	$(obj).addClass('logic_type_active');
	curLogic = type;
	$.ajax({
		 url: '/admin/ajax/logic/moduleparams',
		 data: {'module':name, 'type': type},
		 success: function(text) {
		 	$('#gsmodule_logic_params').html(text);
		 	if(typeof func == 'function')
		 		func.call();
	 	}
	 });
}

function addLogicToHTML() {
}

function getCatList(val) {
	$.ajax({
		url: '/admin/ajax/DataBlock/logic/category/logic',
		data:{'db':val},
		success: function(text) {
			$('#cats').html(text);
		}
		});
}
