| 
					
				 | 
			
			
				@@ -15,22 +15,54 @@ import * as DowhiletruesManagement from './commands/dowhiletrue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as SwitchesManagement from './commands/switch'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as FunctioncallsManagement from './commands/functioncall'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as VariableValueMenuManagement from './commands/variable_value_menu'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as BreaksManagement from './commands/break'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var has_element_created_draged = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var which_element_is_draged = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export function removeCommand (command, function_obj, dom_obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log('debugging removeCommand'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log('command'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log(command); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log('function_obj'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log(function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log('dom_obj'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log(dom_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (function_obj.commands.indexOf(command) > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		function_obj.commands.splice(function_obj.commands.indexOf(command), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Utilize dois parantNode, pois o primeiro é o div de comandos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if ($(dom_obj[0].parentNode.parentNode).data('command').commands_block.indexOf(command) > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		$(dom_obj[0].parentNode.parentNode).data('command').commands_block.splice 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		($(dom_obj[0].parentNode.parentNode).data('command').commands_block.indexOf(command), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (dom_obj.parent().parent().data('command').commands_block.indexOf(command) > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			dom_obj.parent().parent().data('command').commands_block.splice 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			(dom_obj.parent().parent().data('command').commands_block.indexOf(command), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} catch (err) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (dom_obj.parent().parent().data('command').type == Models.COMMAND_TYPES.iftrue) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (dom_obj.parent().parent().data('command').commands_else.indexOf(command) > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				dom_obj.parent().parent().data('command').commands_else.splice 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(dom_obj.parent().parent().data('command').commands_else.indexOf(command), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} catch (err) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log('veja: '); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	console.log(dom_obj.parent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (dom_obj.parent().data('switchcase')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		console.log("o que encontrei: "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		console.log(dom_obj.parent().data('switchcase')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		dom_obj.parent().data('switchcase').commands_block.splice(dom_obj.parent().data('switchcase').commands_block.indexOf(command), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,6 +70,10 @@ export function createFloatingCommand (function_obj, function_container, command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var floatingObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	switch (command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case Models.COMMAND_TYPES.break: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			floatingObject = BreaksManagement.createFloatingCommand(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case Models.COMMAND_TYPES.comment: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			floatingObject = CommentsManagement.createFloatingCommand(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,6 +137,10 @@ export function renderCommand (command, element_reference, before_after_inside, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			createdElement = CommentsManagement.renderCommand(command, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case Models.COMMAND_TYPES.break: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			createdElement = BreaksManagement.renderCommand(command, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case Models.COMMAND_TYPES.reader: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			createdElement = ReadersManagement.renderCommand(command, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -158,6 +198,10 @@ export function renderCommand (command, element_reference, before_after_inside, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export function genericCreateCommand (command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	switch (command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case Models.COMMAND_TYPES.break: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Models.Break(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case Models.COMMAND_TYPES.comment: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return new Models.Comment(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_value, LocalizedStrings.getUI('text_comment'), null, null, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -179,7 +223,8 @@ export function genericCreateCommand (command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case Models.COMMAND_TYPES.repeatNtimes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return new Models.RepeatNTimes(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-												null, new Models.ConditionalExpression(null), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										     null, new Models.ConditionalExpression(null), null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case Models.COMMAND_TYPES.whiletrue: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return new Models.WhileTrue(new Models.ConditionalExpression(null), null); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -188,7 +233,10 @@ export function genericCreateCommand (command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return new Models.DoWhileTrue(new Models.ConditionalExpression(null), null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		case Models.COMMAND_TYPES.switch: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return new Models.Switch(null, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var sc = [new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true))]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return new Models.Switch(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true), sc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -203,6 +251,7 @@ function manageCommand (function_obj, function_container, event, command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.log(el); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.log(el.data('fun')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Primeiro verificar se ele soltou no espaço da função correta: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var hier = el.parentsUntil(".all_functions"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var esta_correto = false; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -274,6 +323,30 @@ function manageCommand (function_obj, function_container, event, command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			console.log(hierarquia_bottom_up[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Se for do tipo break, verificar se está no contexto correto:  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Caso não esteja no contexto, apenas retorna sem dar continuidade: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var is_correct_context = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (command_type == Models.COMMAND_TYPES.break) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (var i = 0; i < hierarquia_bottom_up.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if ((hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.repeatNtimes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.whiletrue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.dowhiletrue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.switch)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					is_correct_context = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!is_correct_context) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				console.error("Context not allowed to insert BREAK COMMAND!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// se a hierarquia possuir apenas um elemento, então está na raiz dos comandos:  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (hierarquia_bottom_up.length == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			console.log('QQ1'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -348,8 +421,7 @@ function insertCommandInBlockHierar (el, event, function_obj, command_type, hier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// QUANDO FOR BLOCO DO TIPO IF OU SWITCH/CASE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			console.log("que situação foi essa? quando o if no qual ele soltou, já está em outro bloco de comandos"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			addCommandToSwitchCase(event, function_obj, command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -415,23 +487,36 @@ function findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, comm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var el_jq = $(el); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var command_parent = $(el.parentNode.parentNode).data('command'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var command_target = el_jq.data('command'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var temp_parent = $(el.parentNode.parentNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var is_in_else = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (!command_parent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		command_parent = el_jq.data('command'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		temp_parent = el_jq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var hier = el_jq.parentsUntil(".command_container"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		for (var i = 0; i < hier.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			var temp = $(hier[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (typeof temp.data('else') !== 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (typeof temp.data('else') != 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				is_in_else = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (typeof temp.data('command') !== 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (typeof temp.data('command') != 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				command_parent = temp.data('command'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				temp_parent = temp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var hier = el_jq.parentsUntil(".command_container"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for (var i = 0; i < hier.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var temp = $(hier[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (typeof temp.data('else') != 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			is_in_else = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (command_parent == command_target) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var hier = el_jq.parentsUntil(".command_container"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -444,6 +529,21 @@ function findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, comm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ((command_parent.type != Models.COMMAND_TYPES.iftrue) && (command_parent.type != Models.COMMAND_TYPES.switch)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var hier = temp_parent.parentsUntil(".all_cases_div"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		console.log("vou procurar!!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (var i = 0; i < hier.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.log("estou vasculhando..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var temp = $(hier[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (typeof temp.data('switchcase') !== 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				console.log("encontrei"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				command_parent = temp.data('switchcase'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				is_in_else = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.log('debugging:'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.log('el_jq'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	console.log(el_jq); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -484,9 +584,9 @@ function findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, comm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					var recentComand = genericCreateCommand(command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					command_parent.commands_else.push(recentComand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					renderCommand(recentComand, el_jq.find('.commands_else'), 3, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					renderCommand(recentComand, el_jq, 3, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} else { // Se já tem algum comando no bloco: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					findInBlockCorrectPlace(el_jq.find('.commands_else'), event, function_obj, command_type, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					findInBlockCorrectPlace(el_jq, event, function_obj, command_type, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -668,7 +768,87 @@ function insertCommandInBlock (el, event, function_obj, command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} else { // é do tipo switch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		console.log("está tentando inserir em um switch que está na raiz!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		addCommandToSwitchCase(event, function_obj, command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function addCommandToSwitchCase (event, function_obj, command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var el = $(document.elementFromPoint(event.clientX, event.clientY)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var which_case = el.data('switchcase'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var case_div = el; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!which_case) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var hier_find = el.parentsUntil(".all_cases_div"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (var i = 0; i < hier_find.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (typeof $(hier_find[i]).data('switchcase') !== 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				which_case = $(hier_find[i]).data('switchcase'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case_div = $(hier_find[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (which_case.commands_block == null || which_case.commands_block.length < 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		which_case.commands_block = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var recentComand = genericCreateCommand(command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		which_case.commands_block.push(recentComand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		renderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		findInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, function_obj, command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function findInBlockCorrectPlaceInSwitchCase (which_case, case_div, event, function_obj, command_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var all_sub = case_div.find('div.command_container'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var menor_distancia = 999999999; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var elemento_menor_distancia = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var antes = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var t_bot; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var t_top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Descobrindo o elemento mais próximo: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for (var i = 0; i < all_sub.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t_top = all_sub[i].getBoundingClientRect().top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ((t_top - event.clientY) < menor_distancia) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			menor_distancia = event.clientY - t_top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			elemento_menor_distancia = all_sub[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Está mais próximo da borda de baixo, ou seja.. inserir por último: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ((borda_inferior - event.clientY) < menor_distancia) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var recentComand = genericCreateCommand(command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		which_case.commands_block.push(recentComand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		renderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var recentComand = genericCreateCommand(command_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var index = which_case.commands_block.indexOf($(elemento_menor_distancia).data('command')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (index > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    which_case.commands_block.splice(index, 0, recentComand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    renderCommand(recentComand, elemento_menor_distancia, 1, function_obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |