var controller = 'insert_ad';
var field_vars = {
	replace_element: 0,
	template_id: 0,
	html_string: "",
	current_element: {},
	method: "replace",
	actual_element: 0,
	old_option: new Array(),
	field_relates: new Array()
}

function select_related(el){
	var tag_name = el.tagName.toLowerCase();
	var element_id = $(el).attr('id');
	var splited_element_id = element_id.split("_");
	var field_id = splited_element_id[(splited_element_id.length-1)];
	if(tag_name == "select"){
		var option_id = $(el.options[el.selectedIndex]).attr('id');
		if(option_id){
			var splited_option_id = option_id.split("_");
			var related_id = splited_option_id[(splited_option_id.length-1)];
		} else {
			return false;
		}
	} else {
		return false;
		// aici vin alea pt alte tipuri de inputuri;
	}
	$.post(baseURL+controller+"/ajax_get_related_fields",{'field_id':related_id,'template_id':field_vars.template_id,"initiator":field_id},function(data){
			//console.log(data);
		if(data != ""){
			var result = eval("("+data+")");
			window.field_vars.field_relates[related_id] = result.replace_element;
			var restore_element = document.getElementById('replaced_field_'+element_id);
			if(restore_element){
				$("#field_"+result.replace_element).remove();
				$(restore_element).attr('id',"field_"+element_id);
				var current_name = $(restore_element).attr('name');
				if(current_name){
					var restore_name = current_name.replace('replaced_','');
					$(restore_element).attr('name',restore_name);
				}
			}
			if(result.replace_element == field_id){
				window.field_vars.replace_element = result.replace_element;
				window.field_vars.html_string = result.html_string;
				window.field_vars.current_element = el;
				window.field_vars.method = "add";
				window.field_vars.actual_element = result.actual_field;
				recursive_replace(result.replace_element);
			} else {
				var bogus_element = document.getElementById("replaced_field_"+field_id);
				if(bogus_element){
					$("#field_"+field_id).remove();
					$(bogus_element).attr('id','field_'+field_id);
					$(bogus_element).attr('name',$(bogus_element).attr('name').replace('replaced_',''));
					$('#related_values'+field_id).remove();
				}
				window.field_vars.method = "replace";
				recursive_replace(result.replace_element);

				$("#replaced_field_"+result.replace_element).remove();
				$('#related_values'+result.replace_element).remove();
				$("#field_"+result.replace_element).replaceWith(result.html_string);
				
				$("#field_"+result.replace_element).after('<input type="hidden" id="related_values'+result.replace_element+'" name="related_values['+result.replace_element+']" value="'+result.actual_field+'" />');
			}
			window.field_vars.old_option[field_id] = option_id;
		}
	});
}

function recursive_replace(replace_element){
	if(window.field_vars.method =="add"){
		/* asta se face aici pt ca js nu asteaota sa se termine requesturile asincron si unele sunt sanse sa se suparscrie */
		$('#related_values'+window.field_vars.replace_element).remove();
		$("#field_"+window.field_vars.replace_element).after(window.field_vars.html_string);
		$(window.field_vars.current_element).attr('name','replaced_'+$(window.field_vars.current_element).attr('name'));
		$(window.field_vars.current_element).attr('id','replaced_'+$(window.field_vars.current_element).attr('id'));
		$("#field_"+window.field_vars.replace_element).after('<input type="hidden" id="related_values'+window.field_vars.replace_element+'" name="related_values['+window.field_vars.replace_element+']" value="'+window.field_vars.actual_element+'" />');
		window.field_vars.method = "replace";


		if(window.field_vars.old_option[replace_element] != ""){
			if(window.field_vars.current_element.tagName.toLowerCase() == "select"){
				var option_id = window.field_vars.old_option[replace_element];
				if(option_id){
					window.field_vars.old_option[replace_element] = "";
					var splited_option_id = option_id.split("_");
        	        	        var related_id = splited_option_id[(splited_option_id.length-1)];
					if(window.field_vars.field_relates[related_id]){
						reset_element(window.field_vars.field_relates[related_id]);
					}
				}
			} else {
				//aici vin celelalte
			}
		}
	} else {
		var rel_element = document.getElementById("field_"+replace_element);
		if(!rel_element){
			return false;
		}
		var tag_name = rel_element.tagName.toLowerCase();
		if(tag_name == "select"){
			var rel_option = rel_element.options[rel_element.selectedIndex];
			var rel_option_id = $(rel_option).attr('id');
			if(rel_option_id){
				var splited_rel_option_id = rel_option_id.split("_");
				var rel_related_item = splited_rel_option_id[(splited_rel_option_id.length-1)];
				$.get(baseURL+controller+"/ajax_get_similar_field/"+rel_related_item,function(data){
					reset_element(data);
				});
			}
		} else {
			//aici vin celelalte
		}
	}

}

function reset_element(field_id){
	if (field_id > 0) {
		var bla = $.post(baseURL+controller+"/ajax_get_original_field",{'field_id':field_id,'template_id':window.field_vars.template_id},function(data){
			if(data != ""){
				var result = eval("("+data+")");
				$('#replaced_field_'+result.replace_element).remove();
				$('#related_values'+result.replace_element).remove();
				$('#field_'+result.replace_element).replaceWith(result.html_string);
				recursive_replace(field_id);
			}
		});
	}
}
