var div_name = "#cubes_here";
var toload_name = "#toload_here";
var renderer_uno = '';
var pass_info_key = '';
renderer_uno = new EJS({text: cube_template_uno});
var backup_loaded = new Array();
var ids_navigate = new Array();
var selected_id = -1;

// поменять state открытости для пункта меню
function open_now(id){
	$('#closed_' + id).toggle("fast");
}

// просто открыть пункт меню
function real_open_now(id){
	$('#closed_' + id).show("fast");
}

// отобразить контент пункта и правильно указать туда-сюда и "япрочелётп" 
function show_now(id){
	temp = '';
	chb_id = '#chb_cube_' + id;
	is_read = $(chb_id).attr("rel");
	add_text = is_read != 0? "" : "<div id=\"div_make_it_read\"><a href=# onclick='mark_as_read(" + id + ");return false;'>Прочитал, понял</a></div>";
	
	// туда-сюда
	nav_class = {
		left_no: "<span class='spr'></span>",
		left_yes: "<span class='spra' onclick=\"select_prev('" + id + "');return false;\" title=\"предыдущая вводная\"></span>",
		right_no: "<span class='snx'></span>",
		right_yes: "<span class='snxa' onclick=\"select_next('" + id + "');return false;\"></span>",
        pref: "<div class='sarr'>",
        suff: "</div>",
		get_navigate: function(left, right){
			temp = "";
			
			temp = temp + this.pref;
            temp += (left == 1) ? this.left_yes : this.left_no;
			temp += (right == 1) ? this.right_yes : this.right_no;
			temp = temp + this.suff;
            
			return temp;
		}
	}
	
	add_navigate = nav_class.get_navigate(need_prev(id), need_next(id));
	
	
	if(typeof backup_loaded[id] != "undefined"){
		temp = add_navigate + backup_loaded[id] + add_text;
		$(toload_name).html(temp);

		update_selection(id);
	}else{
		$.post(prefix + "/users/js/" + id + "/", {}, function(data){
			if(data == "norights"){
				$(toload_name).html('<span class="error">Здесь рыбы нет!</span>');

				update_selection(id);
				return;
			}
			backup_loaded[id] = data;
			temp = add_navigate + backup_loaded[id] + add_text;
			$(toload_name).html(temp);

			update_selection(id);
		});
	}
}



// обновить класс пункта при смене выделения
function update_selection(id){
	if(selected_id != -1){
		mark_as_selected(selected_id, false);
	}
	mark_as_selected(id, true);
	selected_id = id;
}

// изменение класса на выделенном элементе
function mark_as_selected(id, state){
	if(state == 1){
		$('#chb_cube_' + id).addClass('item_sel');
	}else{
		$('#chb_cube_' + selected_id).removeClass('item_sel');
	}
}

// ОБРАБОТКА ТУДА-СЮДА: НАЧАЛО
function need_next(id){
	next_id = get_next(id);
	return (next_id != -1);
}

function need_prev(id){
	prev_id = get_prev(id);
	return (prev_id != -1);
}

function get_next(id){
	next_id = -1;
	for(t in ids_navigate){
		if(ids_navigate[t].id == id){
			next_id = ids_navigate[t].data.next_id;
			break;
		}
	}
	return next_id;
}

function get_prev(id){
	prev_id = -1;
	for(t in ids_navigate){
		if(ids_navigate[t].id == id){
			prev_id = ids_navigate[t].data.prev_id;
			break;
		}
	}
	return prev_id;
}

function select_next(id){
	/*next_id = -1;
	for(t in ids_navigate){
		if(ids_navigate[t].id == id){
			next_id = ids_navigate[t].data.next_id;
			break;
		}
	}*/
	next_id = get_next(id);
	if(next_id != -1)
		open_id_ex(next_id);
	else{
		// ошибка
	}
}

function select_prev(id){
	/*for(t in ids_navigate){
		if(ids_navigate[t].id == id){
			next_id = ids_navigate[t].data.prev_id;
			break;
		}
	}*/
	prev_id = get_prev(id);
	if(prev_id != -1)
		open_id_ex(prev_id);
	else{
		//ошибка
	}
}

function open_id_ex(next_id){
	for(t in ids_navigate){
		if(ids_navigate[t].id == next_id){
			line_id = ids_navigate[t].data.line;
			cour_id = ids_navigate[t].data.cour;
			break;
		}
	}
	
	real_open_now("cour_" + cour_id);
	real_open_now("line_" + line_id);
	show_now(next_id);
}
//ОБРАБОТКА ТУДА-СЮДА: КОНЕЦ

function mark_as_read(id){
	//alert("http:/" + prefix + "/my/");
	//$.post();
	
	$.post(prefix + "/my/", {
		write: "my", 
		pass_info_key: pass_info_key,
		action: "mark_as_read",
		id: id.toString(),
		state: 1,
		retpath: prefix + "/my/mark_response/"
	}, function(data){
		id = "chb_cube_" + data;
		setup_chb(id, 1);
		$(id).attr("rel", 1);
		make_arrows();
		$("#div_make_it_read").html("");
	});
}

function change_state(id, type, uin){
	var item = $('#chb_' + uin);
	state = item.attr("rel");
	
	if(type == "cube"){
		setup_chb('#chb_' + uin, get_next_state(state));
	}else if(type == "line"){
		state = get_next_state(state);
		setup_chb('#chb_' + uin, state);
		
		arr = $('div[@id=closed_' + uin + ']').find("span");
		arr.each( function(){
			id = $(this).attr("id");
			setup_chb(id, state);
		});
	}else if(type == "cour"){
		state = get_next_state(state);
		setup_chb('#chb_' + uin, state);
		
		arr = $('div[@id=closed_' + uin + ']').find("span");
		arr.each( function(){
			id = $(this).attr("id");
			setup_chb(id, state);
		});
	}
	
	make_arrows();
}

function save_vv(){
	tmp = new Array();
	$('span[@id*=chb_cube_]').each( function(){
		if($(this).attr("rel") == 1){
			tmp[tmp.length] = $(this).attr("id");
		}
	});
	
	$.post(prefix + "/users/", {
		write: "users", 
		pass_info_key: pass_info_key,
		action: "vv_user_save",
		ids: tmp.toString(),
		user_id: user_id,
		retpath: prefix + "/users/js/test/"
	}, function(data){
		alert(data);
	});
}

function get_next_state(state){
	if(state == 0)
		state = 1;
	else if(state == 1)
		state = 0;
	else if(state = 2)
		state = 1;
	return state;
}

function setup_chb(id, type){
	if(id.substring(0,1) != "#"){
		id = "#" + id;
	}
	if(type == 0){
		$(id).attr("rel", "0").removeClass("chb_mid").removeClass("chb_on").addClass("chb_off");
	}else if(type == 1){
		$(id).attr("rel", "1").removeClass("chb_mid").removeClass("chb_off").addClass("chb_on");
	}else if(type == 2){
		$(id).attr("rel", "2").removeClass("chb_on").removeClass("chb_off").addClass("chb_mid");
	}
}

function make_arrows(){
	tmp = new Array();

	$('div[@id*=closed_line]').each( function(){
		arr = $(this).find("a");
		var state = -1;
		var ok = false;

		arr.each( function(){
			if(!ok){
				if(state == -1){
					state = $(this).attr("rel");
				}else{
					if(state != $(this).attr("rel")){
						state = 2;
						ok = true;
					}
				}
			}
		});
		
		pref = $(this).attr("rel");
		setup_chb('#chb_' + pref, state);
	
		return;
	});
	
	$('div[@id*=closed_cour]').each( function(){
		arr = $(this).find("a");
		var state = -1;
		var ok = false;

		arr.each( function(){
			if(!ok){
				if(state == -1){
					state = $(this).attr("rel");
				}else{
					if(state != $(this).attr("rel")){
						state = 2;
						ok = true;
					}
				}
			}
		});
		
		pref = $(this).attr("rel");
		setup_chb('#chb_' + pref, state);
		return;
	});
}

$().ready( function(){
	$.getJSON(prefix + "/my/js/", function(data){
		if(data.count == 0){
			$(div_name).html("Вам не назначено ни одной вводной. Обратитесь к мастеру игры.");
		}else{
			pass_info_key = data.pass_info_key;
			
			html = renderer_uno.render(data);
			$(div_name).html(html);
			
			//$('#closed_').toggle();
			make_arrows();
			open_id_ex(ids_navigate[0].id);
			show_now(ids_navigate[0].id);
			selected_id = ids_navigate[0].id;
		}
	});
});
