var XEPKeep20CampaignRun = 'RunKeep20Campaign';

function keepCampaign_Run (bannerId, action/*fCallback*/)
{
    setStatus("Запрос Добавления кампании в Удержание 2.0", true);
    
    var extended = jQuery('#keep_simple_' + bannerId).is(':hidden');
    
    var enable = ((action == 'start' || action == 'apply') ? 1 : 0);//$('#keep_enable_' + bannerId).is(':checked') ? 1 : 0
    
    var toggleBtn = (action == 'apply' ? false : true);

	var btnSelectorStart = '#keep_button_start_' + bannerId;
    var btnSelectorStop = '#keep_button_stop_' + bannerId;
    var btnSelectorApply = '#keep_button_apply_' + bannerId;

	var btnSelectorStartExt = '#keep_button_start_extend_' + bannerId;
    var btnSelectorStopExt = '#keep_button_stop_extend_' + bannerId;
    var btnSelectorApplyExt = '#keep_button_apply_extend_' + bannerId;

    
    if (isDisabled(btnSelectorStart)) {
    	alert('Система думает!');
    	return false;
    }

    disableButton(btnSelectorStart);
    disableButton(btnSelectorStop);
    disableButton(btnSelectorApply);
    
    disableButton(btnSelectorStartExt);
    disableButton(btnSelectorStopExt);
    disableButton(btnSelectorApplyExt);

	var rows = jQuery("#keep_extended_" + bannerId + " table tbody tr");
	
	var timeline = "";
	
	for(var i = 0; i < rows.length; i++ ) {
		var timerow = enable + ":";
		timerow += jQuery("input[name='row-value']", jQuery(rows[i])).val() + ":";
		timerow += parseInt(jQuery("*[name='keep_position_extend']", jQuery(rows[i])).val()) + ":";
		timerow += jQuery("input[name='keep_proc_extend']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("input[name='keep_price_max_extend']", jQuery(rows[i])).val() + ":";
		timeline += timerow + ";";
	}
	
	var rdef = jQuery("#keep_extended_" + bannerId + " table tfoot");
	
	if(jQuery("input[name='row-value']", rdef).val() != "") {
		var timerow = enable + ":";
		timerow += "default:";
		timerow += parseInt(jQuery("*[name='keep_position_default']", jQuery(rdef)).val()) + ":";
		timerow += jQuery("input[name='keep_proc_default']", jQuery(rdef)).val() + ":";
		timerow += jQuery("input[name='keep_price_max_default']", jQuery(rdef)).val();
		timeline += timerow + ";";
	}
	
    var request = objGetXEPRequest();
    
    request.AddPart(XEPKeep20CampaignRun, {
						"id" : bannerId,
						"position" : $('#keep_position_' + bannerId).val(),
						"price_max" : $('#keep_price_max_' + bannerId).val(),
                        "enable" : enable,
                        "extended" : extended,
                        "timeline" : timeline
                   });
                   
    request.Perform(function(response)
                        {
                            setStatus("Разбираем ответ сервера", true);
                            
                            if (response.Status == soapStatusError)
                            {
                                var errorMessage = response.StatusMessage;
                                alert(errorMessage);
                                setStatus("Ошибка! " + errorMessage + "!");
                            }
                            else
                            {
                                var theOnlyPart = response.Parts[0];
                                if (theOnlyPart !=null)
                                {
                                    if (theOnlyPart.Status == soapStatusOK)
                                    {
                                        var retArr = new Object(); // STUB эта хуита для dialogSelect
                                        for (resultIndex in theOnlyPart.Results)
                                        {
                                            var resultValue = theOnlyPart.Results[resultIndex];
                                            //retArr[resultValue["id"]] = resultValue["id"];
                                            //setStatus(resultValue["Success"]);
                                            /**
                                             * @todo Если что в resultValue["Success"] приходят тексты
                                             * success результата от SOAP-а
                                             */
                                             //alert(resultValue["Success"]);
                                        }
                                        alert('Данные по удержанию позиций изменились');
                                        setStatus('Данные по удержанию позиций изменились');
                                        /**
                                         * @todo Можно передать fCallback и вызвать как функию при success
                                         */
                                        //fCallback(retArr);
                                        
                                        if(toggleBtn) {
											jQuery(btnSelectorStart).toggle();
											jQuery(btnSelectorStop).toggle();
											jQuery(btnSelectorApply).toggle();

											jQuery(btnSelectorStartExt).toggle();
											jQuery(btnSelectorStopExt).toggle();
											jQuery(btnSelectorApplyExt).toggle();
                                        }
                                    }
                                    else
                                    {
                                        if (ProcessTypicalXEPErrors(theOnlyPart) == false)
                                        {
                                            setStatus("Ошибка Добавления в ротатор: " + theOnlyPart.StatusMessage);
                                            alert("Ошибка Добавления в ротатор: " + theOnlyPart.StatusMessage);
                                        }
                                    }
                                }
                                else
                                {
                                    setStatus("Ошибка получения нужного парта");
                                    alert("Ошибка получения нужного парта");
                                }
                            }
                            
						    unDisableButton(btnSelectorStart);
						    unDisableButton(btnSelectorStop);
						    unDisableButton(btnSelectorApply);
						    
						    unDisableButton(btnSelectorStartExt);
						    unDisableButton(btnSelectorStopExt);
						    unDisableButton(btnSelectorApplyExt);
                        },
                        function(obj, msg, exc)
                        {
                            setStatus("Ошибка запроса Добавления в ротатор");
                            alert("Не удалось включить автоудержание позиций. Пожалуйста, сообщите нам об этой ошибке и мы решим ее так быстро, как это возможно.");

						    unDisableButton(btnSelectorStart);
						    unDisableButton(btnSelectorStop);
						    unDisableButton(btnSelectorApply);
						    
						    unDisableButton(btnSelectorStartExt);
						    unDisableButton(btnSelectorStopExt);
						    unDisableButton(btnSelectorApplyExt);
                        }
                    );

}


function keepCampaign_RunBeta (bannerId, action/*fCallback*/)
{
    setStatus("Запрос Добавления кампании в Удержание 2.0", true);
    
    var extended = jQuery('#keep_simple_' + bannerId).is(':hidden');
    
    var enable = ((action == 'start' || action == 'apply') ? 1 : 0);//$('#keep_enable_' + bannerId).is(':checked') ? 1 : 0
    
    var toggleBtn = (action == 'apply' ? false : true);

	var btnSelectorStart = '#keep_button_start_' + bannerId;
    var btnSelectorStop = '#keep_button_stop_' + bannerId;
    var btnSelectorApply = '#keep_button_apply_' + bannerId;

	var btnSelectorStartExt = '#keep_button_start_extend_' + bannerId;
    var btnSelectorStopExt = '#keep_button_stop_extend_' + bannerId;
    var btnSelectorApplyExt = '#keep_button_apply_extend_' + bannerId;

    
    if (isDisabled(btnSelectorStart)) {
    	alert('Система думает!');
    	return false;
    }

    disableButton(btnSelectorStart);
    disableButton(btnSelectorStop);
    disableButton(btnSelectorApply);
    
    disableButton(btnSelectorStartExt);
    disableButton(btnSelectorStopExt);
    disableButton(btnSelectorApplyExt);

	var rows = jQuery("#keep_extended_" + bannerId + " table tbody tr");
	
	var timeline = "";
	
	for(var i = 0; i < rows.length; i++ ) {
		var timerow = enable + ":";
		timerow += jQuery("input[name='row-value']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("*[name='keep_position_extend']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("input[name='keep_proc_extend']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("input[name='keep_price_max_extend']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("*[name='keep_operation_extend']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("*[name='keep_units_extend']", jQuery(rows[i])).val();
		timeline += timerow + ";";
	}
	
	var rdef = jQuery("#keep_extended_" + bannerId + " table tfoot");
	
	if(jQuery("input[name='row-value']", rdef).val() != "") {
		var timerow = enable + ":";
		timerow += "default:";
		timerow += jQuery("*[name='keep_position_default']", jQuery(rdef)).val() + ":";
		timerow += jQuery("input[name='keep_proc_default']", jQuery(rdef)).val() + ":";
		timerow += jQuery("input[name='keep_price_max_default']", jQuery(rdef)).val() + ":";
		timerow += jQuery("*[name='keep_operation_extend']", jQuery(rdef)).val() + ":";
		timerow += jQuery("*[name='keep_units_extend']", jQuery(rdef)).val();
		timeline += timerow + ";";
	}
	
    var request = objGetXEPRequest();
    
    request.AddPart(XEPKeep20CampaignRun, {
						"id" : bannerId,
						"position" : $('#keep_position_' + bannerId).val(),
						"price_max" : $('#keep_price_max_' + bannerId).val(),
                        "enable" : enable,
                        "extended" : extended,
                        "timeline" : timeline
                   });
                   
    request.Perform(function(response)
                        {
                            setStatus("Разбираем ответ сервера", true);
                            
                            if (response.Status == soapStatusError)
                            {
                                var errorMessage = response.StatusMessage;
                                alert(errorMessage);
                                setStatus("Ошибка! " + errorMessage + "!");
                            }
                            else
                            {
                                var theOnlyPart = response.Parts[0];
                                if (theOnlyPart !=null)
                                {
                                    if (theOnlyPart.Status == soapStatusOK)
                                    {
                                        var retArr = new Object(); // STUB эта хуита для dialogSelect
                                        for (resultIndex in theOnlyPart.Results)
                                        {
                                            var resultValue = theOnlyPart.Results[resultIndex];
                                            //retArr[resultValue["id"]] = resultValue["id"];
                                            //setStatus(resultValue["Success"]);
                                            /**
                                             * @todo Если что в resultValue["Success"] приходят тексты
                                             * success результата от SOAP-а
                                             */
                                             //alert(resultValue["Success"]);
                                        }
                                        alert('Данные по удержанию позиций изменились');
                                        setStatus('Данные по удержанию позиций изменились');
                                        /**
                                         * @todo Можно передать fCallback и вызвать как функию при success
                                         */
                                        //fCallback(retArr);
                                        
                                        if(toggleBtn) {
											jQuery(btnSelectorStart).toggle();
											jQuery(btnSelectorStop).toggle();
											jQuery(btnSelectorApply).toggle();

											jQuery(btnSelectorStartExt).toggle();
											jQuery(btnSelectorStopExt).toggle();
											jQuery(btnSelectorApplyExt).toggle();
                                        }
                                    }
                                    else
                                    {
                                        if (ProcessTypicalXEPErrors(theOnlyPart) == false)
                                        {
                                            setStatus("Ошибка Добавления в ротатор: " + theOnlyPart.StatusMessage);
                                            alert("Ошибка Добавления в ротатор: " + theOnlyPart.StatusMessage);
                                        }
                                    }
                                }
                                else
                                {
                                    setStatus("Ошибка получения нужного парта");
                                    alert("Ошибка получения нужного парта");
                                }
                            }
                            
						    unDisableButton(btnSelectorStart);
						    unDisableButton(btnSelectorStop);
						    unDisableButton(btnSelectorApply);
						    
						    unDisableButton(btnSelectorStartExt);
						    unDisableButton(btnSelectorStopExt);
						    unDisableButton(btnSelectorApplyExt);
                        },
                        function(obj, msg, exc)
                        {
                            setStatus("Ошибка запроса Добавления в ротатор");
                            alert("Не удалось включить автоудержание позиций. Пожалуйста, сообщите нам об этой ошибке и мы решим ее так быстро, как это возможно.");

						    unDisableButton(btnSelectorStart);
						    unDisableButton(btnSelectorStop);
						    unDisableButton(btnSelectorApply);
						    
						    unDisableButton(btnSelectorStartExt);
						    unDisableButton(btnSelectorStopExt);
						    unDisableButton(btnSelectorApplyExt);
                        }
                    );

}





function keepCampaign_RunTest (bannerId/*fCallback*/)
{
    setStatus("Запрос Добавления кампании в Удержание 2.0", true);
    
    var extended = jQuery('#keep_simple_' + bannerId).is(':hidden');

    var btnSelector = '#keep_button_' + bannerId;
    var btnExtSelector = '#keep_button_extend_' + bannerId;
    
    if (isDisabled(btnSelector)) {
    	alert('Система думает!');
    	return false;
    }

    disableButton(btnSelector);
    disableButton(btnExtSelector);

	var rows = jQuery("#keep_extended_" + bannerId + " table tbody tr");
	
	var timeline = "";
	
	for(var i = 0; i < rows.length; i++ ) {
		var timerow = (jQuery("input[name='row-active']", jQuery(rows[i])).is(":checked") ? "1" : "0" ) + ":";
		timerow += jQuery("input[name='row-value']", jQuery(rows[i])).val() + ":";
		timerow += parseInt(jQuery("input[name='keep_position_extend']", jQuery(rows[i])).val()) + ":";
		timerow += jQuery("input[name='keep_proc_extend']", jQuery(rows[i])).val() + ":";
		timerow += jQuery("input[name='keep_price_max_extend']", jQuery(rows[i])).val();
		timeline += timerow + ";";
	}
		
    var request = objGetXEPRequest();
    
    request.AddPart(XEPKeep20CampaignRun, {
						"id" : bannerId,
						"position" : $('#keep_position_' + bannerId).val(),
						"price_max" : $('#keep_price_max_' + bannerId).val(),
                        "enable" : $('#keep_enable_' + bannerId).is(':checked') ? 1 : 0,
                        "extended" : extended,
                        "timeline" : timeline
                   });
                   
    request.Perform(function(response)
                        {
                            setStatus("Разбираем ответ сервера", true);
                            
                            if (response.Status == soapStatusError)
                            {
                                var errorMessage = response.StatusMessage;
                                alert(errorMessage);
                                setStatus("Ошибка! " + errorMessage + "!");
                            }
                            else
                            {
                                var theOnlyPart = response.Parts[0];
                                if (theOnlyPart !=null)
                                {
                                    if (theOnlyPart.Status == soapStatusOK)
                                    {
                                        var retArr = new Object(); // STUB эта хуита для dialogSelect
                                        for (resultIndex in theOnlyPart.Results)
                                        {
                                            var resultValue = theOnlyPart.Results[resultIndex];
                                            //retArr[resultValue["id"]] = resultValue["id"];
                                            //setStatus(resultValue["Success"]);
                                            /**
                                             * @todo Если что в resultValue["Success"] приходят тексты
                                             * success результата от SOAP-а
                                             */
                                             //alert(resultValue["Success"]);
                                        }
                                        alert('Данные по удержанию позиций изменились');
                                        setStatus('Данные по удержанию позиций изменились');
                                        /**
                                         * @todo Можно передать fCallback и вызвать как функию при success
                                         */
                                        //fCallback(retArr);
                                    }
                                    else
                                    {
                                        if (ProcessTypicalXEPErrors(theOnlyPart) == false)
                                        {
                                            setStatus("Ошибка Добавления в ротатор: " + theOnlyPart.StatusMessage);
                                            alert("Ошибка Добавления в ротатор: " + theOnlyPart.StatusMessage);
                                        }
                                    }
                                }
                                else
                                {
                                    setStatus("Ошибка получения нужного парта");
                                    alert("Ошибка получения нужного парта");
                                }
                            }
                            unDisableButton(btnSelector);
                            unDisableButton(btnExtSelector);
                        },
                        function(obj, msg, exc)
                        {
                            setStatus("Ошибка запроса Добавления в ротатор");
                            alert("Не удалось включить автоудержание позиций. Пожалуйста, сообщите нам об этой ошибке и мы решим ее так быстро, как это возможно.");
                            unDisableButton(btnSelector);
                            unDisableButton(btnExtSelector);
                        }
                    );

}


function isDisabled(btnSelector) {
	return $(btnSelector).hasClass('disable');
}

function disableButton(btnSelector) {
	$(btnSelector).addClass('disable');
}

function unDisableButton(btnSelector) {
	$(btnSelector).removeClass('disable');
}

function convertue(oInput, currency) {
	this.currency = 1 || currency;
	rur = parseFloat(oInput.value) || 0;
	jQuery(".rur", jQuery(oInput).parent()).text(rur * currency);
}
var tpicker = new TimePicker();
var tpicker_el = false;

function showTimePicker(el) {
	tpicker_el = el;
	
	var days = ['', '', '', '', '', '', ''];
	
	var rows = jQuery("tr", jQuery(el).parents("tbody:first"));
	
	for( var i = 0; i < rows.length; i++ ) {
		if(!jQuery("input[name='row-active']", jQuery(rows[i])).is(":checked")) {
			continue;
		}
		if(matches = jQuery("input[name='row-value']",jQuery(rows[i])).val().match(/\d\D*/ig)) {
			for(var d = 0; d < matches.length; d++) {
				days[parseInt(matches[d].slice(0,1))-1] += matches[d].slice(1);
			}
		}
	}
	
	tpicker.setUsedMask(days);
	tpicker.show( jQuery("input[name='row-value']", jQuery(el).parents("tr:first")).val() );
//	jQuery('#time_picker').css('left', jQuery(el).position().left + 20).css('top', jQuery(el).position().top + jQuery(el).outerHeight()).show();
}

function startExtKeeping(id) {
	var conflicted = getConflictedRules(jQuery("#keep_extended_"+id+" .ext-keep-table tbody tr:first"));
	
	if(conflicted.length > 0) {
		var errstr = "";
		for( var i = 0; i < conflicted.length; i++ ) {
			if(conflicted[i] != undefined && conflicted[i].length > 0) {
				errstr += (errstr.length > 0 ? ", " : "") + "№" + (i+1).toString();
			}
		}
		jAlert("Выключите или измените конфликтующие правила " + errstr + ", затем повторите попытку.");
	} else {
		keepCampaign_RunTest(id);
	}
} 

function checkRule(el) {
	var conflicted = getConflictedRules(el);
	var index = jQuery(el).parents("tr:first").prevAll().length;
	if(conflicted[index] != undefined) {
		jAlert("Это правило конфликтует с " + (index > 1 ? "правилами " : "правилом ") + conflicted[index]);
		return false;
	}
	// без конфликтов
	return true;
}

function getConflictedRules(el) {
	var rows = jQuery("tr", jQuery(el).parents("tbody:first"));
	
	var conflict_rules = [];
	
	for( var i = 0; i < rows.length; i++) {
		if(!jQuery("input[name='row-active']", jQuery(rows[i])).is(":checked")) {
			continue;
		}

		var days = ['', '', '', '', '', '', ''];
		// данные представлены в формате 1ABCD....X2ABCD..X3....7X 
		// где числа от 1 до 7 - дни недели
		// буквы от A до X - периоды по часу в одних сутках
		// разделяем сплошную строку на 7 частей \d - одно число \D* - любое количество букв
		if(matches = jQuery("input[name='row-value']",jQuery(rows[i])).val().match(/\d\D*/ig)) {
			for(var d = 0; d < matches.length; d++) {
				// записываем в каждый день(0-6) свои часы
				days[parseInt(matches[d].slice(0,1))-1] = matches[d].slice(1);
			}
		}
		// цикл из последующих за i-тым столбцов
		for( var n = i+1; n < rows.length; n++) {
			var intersection = false;
			if(!jQuery("input[name='row-active']", jQuery(rows[n])).is(":checked")) {
				continue;
			}
			if(matches = jQuery("input[name='row-value']",jQuery(rows[n])).val().match(/\d\D*/ig)) {
				for(var d = 0; d < matches.length; d++) {
					// номер дня недели
					day = parseInt(matches[d].slice(0,1))-1;
					
					if(days[day] != '') {
						// распарсили все часы в текущих сутках
						hours = matches[d].slice(1).split('');
						for(var t = 0; t < hours.length; t++) {
							if(days[day].indexOf(hours[t]) != -1) {
								// если в предыдущем правиле days на этот день days[day] уже есть такой помежуток времени
								intersection = true;
								break;
							}
						}
						
						if(intersection) {break;}
					}
				}
			}

			if(intersection) {
				if(conflict_rules[i] == undefined) {
					conflict_rules[i] = "№"+(n+1).toString();
				} else {
					conflict_rules[i] += (conflict_rules[i].length > 0 ? ", " : "") + "№"+(n+1).toString();
				}
				if(conflict_rules[n] == undefined) {
					conflict_rules[n] = "№"+(i+1).toString();
				} else {
					conflict_rules[n] += (conflict_rules[n].length > 0 ? ", " : "") + "№"+(i+1).toString();
				}
			}
		
		}
	}
	
	
	for ( var i = 0; i < rows.length; i++ ) {
		if(conflict_rules[i] != undefined) {
			jQuery(rows[i]).addClass("conflicted");
		} else {
			jQuery(rows[i]).removeClass("conflicted");
		}
	}
	
	return conflict_rules;
}

function setValueFromPicker() {
	if(tpicker_el == null || tpicker_el == undefined || !tpicker_el) {
		return;
	}
	// сохранем старое значение правила и заголовок row-title
	oldRule = jQuery("input[name='row-value']", jQuery(tpicker_el).parents("tr:first")).val();
//	oldTitleSpan = jQuery(".row-title span", jQuery(tpicker_el).parents("tr:first"));
	// записываем новое значение
	jQuery("input[name='row-value']", jQuery(tpicker_el).parents("tr:first")).val(tpicker.getValue());
	// если без конфликтов то записываем новый заголовок
	if (checkRule(tpicker_el)){
		var ttitle = tpicker.getHumanableString();
		jQuery(".row-title", jQuery(tpicker_el).parents("tr:first")).html('<span title="'+ttitle+'">'+(ttitle.length > 45 ? ttitle.slice(0, 42) + "..." : ttitle)+'</span>');		
	}
	// иначе возвращаем старое значение правила
	else {
		jQuery("input[name='row-value']", jQuery(tpicker_el).parents("tr:first")).val(oldRule);
	}
}

tpicker.onCancel = function() { };
tpicker.onOK = setValueFromPicker;

// !Table manipulation functions
var gcnt = 1;
function rebuildActions(el) {
	el = jQuery(el).is(".ext-keep-table") ? jQuery(el) : jQuery(el).parents(".ext-keep-table:first");
	var rows = jQuery("tbody tr", el);
	var allowDel = rows.length > 1 ? true : false;
	
	jQuery("tbody tr", el).each(function(i, elm){
		var actionStr = "";
		if(allowDel) {
			actionStr += '<img src="/bitrix/templates/elama/images/close_btn.gif" width="12" height="12" onclick="DelRowFromKeepTable(this);"/>';
		} else {
			actionStr += '<img src="/bitrix/templates/elama/images/blank.gif" width="12" height="12" />';
		}
		jQuery(".row-remove", elm).html(actionStr);
		
		});
}

function DelRowFromKeepTable(el) {
	tbody = jQuery(el).parents("tbody:first");
	jQuery(el).parents("tr:first").remove();
	if(jQuery("tr", tbody).length < 2) {
		jQuery("tr .row-remove", tbody).html("");
	}
	// заново проверим, потому что могли удалить конфликтующее правило
	checkRule($('tr:first', tbody));
}

function checkDefaultRule(el) {
	el = jQuery(el).is(".ext-keep-table") ? jQuery(el) : jQuery(el).parents(".ext-keep-table:first");
	
	var days = ['ABCDEFGHIJKLMNOPQRSTUVWX', 'ABCDEFGHIJKLMNOPQRSTUVWX', 'ABCDEFGHIJKLMNOPQRSTUVWX', 'ABCDEFGHIJKLMNOPQRSTUVWX', 'ABCDEFGHIJKLMNOPQRSTUVWX', 'ABCDEFGHIJKLMNOPQRSTUVWX', 'ABCDEFGHIJKLMNOPQRSTUVWX'];
	
	var rows = jQuery("tbody tr", el);
	
	for( var i = 0; i < rows.length; i++ ) {
		if(matches = jQuery("input[name='row-value']",jQuery(rows[i])).val().match(/\d\D*/ig)) {
			for(var d = 0; d < matches.length; d++) {
				for( var n = 0; n < matches[d].length; n++ ) {
					days[parseInt(matches[d].slice(0,1))-1] = days[parseInt(matches[d].slice(0,1))-1].replace(matches[d][n], "");
				}
			}
		}
	}
	
	var value = "";
	for( var i = 0; i < days.length; i++) {
		if(days[i].length > 0) {
			value += (i+1) + days[i]; 
		}
	}

	if(value.length != 25 * 7) {
		jQuery("tfoot tr.default-row input[name='row-value']", el).val(value);
	}

	if(value == "" || value.length == 25 * 7 ) {
		jQuery("tfoot tr.default-row", el).hide();
	} else {
		jQuery("tfoot tr.default-row", el).show();
	}
}

function checkFieldsVisibility(el) {
	var tr = jQuery(el).parents("tr:first");
	
	if(jQuery(el).val() == "-1") {
		jQuery("span.difference-fields", tr).hide();
		jQuery("span.max-price-field", tr).hide();
	} else if(jQuery(el).val() == "-2") {
		jQuery("span.difference-fields", tr).hide();
		jQuery("span.max-price-field", tr).show();
	} else {
		jQuery("span.difference-fields", tr).show();
		jQuery("span.max-price-field", tr).show();
	}
}

function switch_difficulty(id) {
	if( jQuery("#keep_simple_"+id).is(":hidden")) {
		$("#keep_simple_"+id).slideDown(400); // show
		//initCusel("keep_simple_"+id);
		jQuery("#keep_extended_"+id).slideUp(400); // hide extended keep
	} else {
		jQuery("#keep_simple_"+id).slideUp(400); // hide simple keep
		$("#keep_extended_"+id).slideDown(400); // show
		// init or reinit select for extended keep
		//initCusel("keep_extended_"+id);
	}
}
