var editortype = "textarea";
var gets = 0;
var onSubmitEditForm = function(event) {

	var texto = '';
	var editorTiny = tinymce.get('editdi_texto');

	if (editorTiny != null)
		texto = editorTiny.getContent();
	else
		texto = $('#editdi_texto').val();

	var formData = {
		'csrfmiddlewaretoken' : $('input[name=csrfmiddlewaretoken]').val(),
		'texto'               : texto
	};

	var url = $('.csform form').attr( "action_ajax" );
	$("#message_block").css("display", "block");

	$.post(url, formData)
	.done(function(data) {

		if (typeof data == "string") {
			$('.dpt-selected').html(data);
			clearEditSelected();
			reloadFunctionClicks();
			return;
		}

		clearEditSelected();

		if (data.pk != null)
			refreshScreenFocusPk(data);
		else {
			alert('Erro na inserção!');
			flag_refresh_all = false;
		}

	}).always(function() {
		$("#message_block").css("display", "none");
	});
	if (event != null)
		event.preventDefault();
}


var clickEditDispositivo = function(event) {
	var _pk = event.currentTarget.getAttribute('pk');
	if ($('#dpt'+_pk).hasClass("dpt-selected")) {
		clearEditSelected();
		return;
	}
	clearEditSelected();
	clickUpdateDispositivo(event);
}

var clickUpdateDispositivo = function(event, __pk_refresh, __pk_edit, __action, flag_actions_vibible, flag_refresh_all) {

	var pk_refresh = __pk_refresh;
	var pk_edit = __pk_edit;
	var _action = __action;
	var _variacao = '';
	var _tipo_pk = '';
	var _perfil_pk = '';

	if (event != null) {
		pk_refresh = event.currentTarget.getAttribute('pk');
		_action = $(this).attr('action');
		_variacao = $(this).attr('variacao');
		_tipo_pk = $(this).attr('tipo_pk');
		_perfil_pk = $(this).attr('perfil_pk');
	}

	if (pk_edit == null)
		pk_edit = pk_refresh;

	var url = '';
	if (_action == '')
		return;
	else if ( _action == null) {
		url = pk_refresh+'/refresh?edit='+pk_edit;
	}
	else if (_action.startsWith('refresh')) {
		var str = _action.split(':');
		if (str.length > 1) {
			if(_action.endsWith('perfil')) {
				url = '&perfil_pk='+_perfil_pk;
				$("#message_block").css("display", "block");
			}
			else {
				editortype = str[1];
				SetCookie("editortype", editortype, 30)
			}
		}
		url = pk_refresh+'/refresh?edit='+pk_edit+url;

	}
	else if (_action.startsWith('add_')) {

		url = pk_refresh+'/actions?action='+_action;
		url += '&tipo_pk='+_tipo_pk;
		url += '&variacao='+_variacao;

		$("#message_block").css("display", "block");

	}
	else if (_action.startsWith('delete_')) {
		var r = confirm("Confirma Exclusão deste dispositivo?");
		if (r == true) {
		    x = "You pressed OK!";
		} else {
		    return
		}
		url = pk_refresh+'/actions?action='+_action;
		$("#message_block").css("display", "block");
	}

	$.get(url).done(function( data ) {
		if ( _action == null || _action.startsWith('refresh')) {

			if (flag_refresh_all) {
                if (flag_actions_vibible)
                    clearEditSelected();

				$( '#dpt' + pk_refresh ).html( data);
			}
			else {
				//console.log(pk_refresh + ' - '+pk_edit)
				if (flag_actions_vibible == null || flag_actions_vibible)
                	clearEditSelected();

				//$( '#dpt' + pk_refresh+' > .bloco' ).addClass('displaynone' );
				$( '#dpt' + pk_refresh ).prepend( data );
			}

			reloadFunctionClicks();

			var _editortype = editortype;
			if ( $('.edt-'+_editortype).length == 0) {
				_editortype = 'construct';
			}

			if ( _editortype == 'tinymce' ) {
				initTinymce();
			}
			else if (_editortype == 'textarea') {
				$('.csform form').submit(onSubmitEditForm);
			}
			else if (_editortype == 'construct') {
				$('.csform .btn-salvar').parent().addClass("displaynone");
				$('.csform .btn-salvar, .csform .fields').addClass("displaynone");
				$('#dpt'+pk_refresh).css('min-height', $('.actions_right').height()*2);
				$('.actions_inserts').removeClass('menu_flutuante');
			}
			else if (_editortype == 'detail') {
				$('.csform .btn-salvar').parent().removeClass("displaynone");
				$('.csform .btn-salvar,  .csform .fields').removeClass("displaynone");
				$('#dpt'+pk_refresh).css('min-height', $('.actions_right').height()*2);
				$('.actions_inserts').addClass('menu_flutuante');
			}

			$(".edt-"+_editortype).addClass('selected');
			//$(".container").addClass('class_color_container');

			if (flag_actions_vibible == null || flag_actions_vibible) {
				$('#dpt'+pk_edit).addClass('dpt-selected');
				$('html, body').animate({
					scrollTop: $('#dpt' + pk_edit ).offset().top - window.innerHeight / 9
				}, 0);
			}
		}

		else if (_action == 'add_next' || _action == 'add_in') {
			clearEditSelected();
			if (data.pk != null) {

				if (data.alert != null)
					alert(data.alert)

				refreshScreenFocusPk(data);
			}
			else {
				alert('Erro na inserção!');
			}
		}
		else if (_action.startsWith('delete_')) {
			$("#message_block").css("display", "block");
			clearEditSelected();
			if (data.pk != null) {
				refreshScreenFocusPk(data);
			}
			else {
				alert('Erro exclusão!');
			}
		}
		else {
			clearEditSelected();
			reloadFunctionClicks();
		}
	}).always(function() {
		$("#message_block").css("display", "none");
	});
}

function refreshScreenFocusPk(data) {

	for (var pai = 0; pai < data.pai.length; pai++)
		if (data.pai[pai] != -1) {
			clickUpdateDispositivo(null, data.pai[pai], data.pk, 'refresh', pai == 0, true);
		}
		else {
			href = location.href.split('#')[0]
			location.href = href+'#'+data.pk
			location.reload(true)
		}
}

function clearEditSelected() {
	$('.bloco' ).removeClass('displaynone' );

	$(".container").removeClass('class_color_container');
	tinymce.remove();
	$('.dpt-selected').removeClass('dpt-selected');
	$('.dpt').css('min-height', '');
	$('.csform').remove();
}

function reloadFunctionClicks() {
	$('.dpt .de, .btn-action, .btn-edit').off();

	$('.dpt .de, .btn-edit').on('click', clickEditDispositivo);

	$('.btn-action').on('click', clickUpdateDispositivo);

	$('#editdi_texto').focus();
}

$(document).ready(function() {

	editortype = ReadCookie("editortype")

	if (editortype == null || editortype == "") {
		editortype = "textarea"
		SetCookie("editortype", editortype, 30)
	}

	reloadFunctionClicks();
	$("#message_block").css("display", "none");

	href = location.href.split('#')
	if (href.length == 2) {
		clickUpdateDispositivo(null, href[1], href[1], 'refresh', true);
	}

});