/**
 * @author demon
 */

$(function()
{
	document.session_id = jQuery.md5(Math.random()+'0');
});

function showDescription()
{	
	changeForm('main', 'News');
}

function showProjects()
{
	jQuery.post('server/Auth.php', { act : 1, sess_id: document.session_id },
		function(res) 
		{
			if(res.auth)
			{
				$('#projects_list').html('');
				$('#Projects #filter_tags').html('');
				
				changeForm('main', 'Projects');
				
				$('#loader').show();
				
				jQuery.post('server/Main.php', { act : 1, sess_id: document.session_id },
					function(p) 
					{
						var s = "<tr align='center'><td>Название</td><td>Автор</td><td width='10%'>Контекстов</td><td width='10%'>Компонентов</td><td width='10%'>Полей</td><td width='10%'>Действия</td></tr>";
						
						for(var i = 0; i < p.length; i++)
						{
							tags = '<img src="images/icons/tag_blue.png">';
							for(var j = 0; j < p[i].tags.length; j++)
							{
								tags += '<a href="#" onclick="return false;" style="color:red">' + p[i].tags[j] + '</a>, ';
							}
							
							s += "<tr id='project_"+p[i].p_id+"' align='center'><td align='left'><center><a href='#Project_"+p[i].p_id+"' onclick='selectProject("+p[i].p_id+");'>"+p[i].p_name+"</a></center><div id='project_tags'>"+tags+"</div></td><td>"+p[i].author+"</td><td>"+p[i].cont_count+"</td><td>"+p[i].comp_count+"</td><td>"+p[i].fields_count+"</td><td>" +
									"<img src='images/icons/database_delete.png' alt='в корзину' title='Переместить в корзину' onclick='toTrash("+p[i].p_id+")'></td></tr>";
						}
						
						$('#projects_list').html(s);
						$('#projects_list img').tooltip({showURL: false, delay: 100});
						
						$('#loader').hide();
					},
					"json"
				);
			}
			else
			{
				alert('Войдите под своим именем!');
			}
		},
		"json"
	);
}

function toTrash(id)
{
	$('#tooltip').hide(); // Скрываем всплывающую подсказку (т.к. сама она не догадывается)
	$('#projects_list #project_'+id).remove();
	jQuery.post('server/Main.php', { act : 28, id : id, sess_id: document.session_id } ); // ToTrash
}

function showProjectsFromTrash()
{
	jQuery.post('server/Auth.php', { act : 1, sess_id: document.session_id },
		function(res) 
		{
			if(res.auth)
			{				
				changeForm('main', 'Projects');
				
				$('#Projects #filter_tags').html('');
				
				jQuery.post('server/Main.php', { act : 27, sess_id: document.session_id }, // GetUserProjectsFromTrash
					function(p) 
					{
						var s = "<tr align='center'><td>Название</td><td>Автор</td><td width='10%'>Контекстов</td><td width='10%'>Компонентов</td><td width='10%'>Полей</td><td width='10%'>Действия</td></tr>";
						
						for(var i = 0; i < p.length; i++)
						{
							tags = '<img src="images/icons/tag_blue.png">';
							for(var j = 0; j < p[i].tags.length; j++)
							{
								tags += '<a href="#" onclick="return false;" style="color:red">' + p[i].tags[j] + '</a>, ';
							}
							
							s += "<tr id='project_"+p[i].p_id+"' align='center'><td align='left'><center><a href='#Project_"+p[i].p_id+"' onclick='selectProject("+p[i].p_id+");'>"+p[i].p_name+"</a></center><div id='project_tags'>"+tags+"</div></td><td>"+p[i].author+"</td><td>"+p[i].cont_count+"</td><td>"+p[i].comp_count+"</td><td>"+p[i].fields_count+"</td><td>" +
									"<img src='images/icons/delete.png' alt='удалить' title='Удалить проект' class='delete'>" +
									"<img src='images/icons/database_go.png' alt='восстановить' title='Восстановить проект' onclick='restoreFromTrash("+p[i].p_id+")'></td></tr>";	
						}
						
						$('#projects_list').html(s);
						$('#projects_list img').tooltip({showURL: false});
						
						$("#projects_list .delete").each( // Кнопки удаления проектов
							function(i)
							{
								$(this).click(
									function()
									{
										var d=$("#delete_confirm_dialog");
										d.find("#what").html("проект");
										d.find("#name").html(p[i].p_name);
										d.find("#info").html(" <u>без возможности восстановления</u>");
										
										d.find("#dcd_yes").click(
											function()
											{
												deleteProject(p[i].p_id);
												d.dialog("close");
												d.find("#dcd_yes").unbind('click'); // Нужно удалить привязки от старых контекстов 
												d.find("#dcd_no").unbind('click');
											}
										);
										
										d.find("#dcd_no").click(
											function()
											{
												d.dialog("close");
												d.find("#dcd_yes").unbind('click'); // Нужно удалить привязки от старых контекстов 
												d.find("#dcd_no").unbind('click');
											}
										);
										
										d.dialog("open");
									}
								);
							}
						);
					},
					"json"
				);
			}
			else
			{
				alert('Войдите под своим именем!');
			}
		},
		"json"
	);
}

function restoreFromTrash(id)
{
	$('#tooltip').hide(); // Скрываем всплывающую подсказку (т.к. сама она не догадывается)
	$('#projects_list #project_'+id).remove();
	jQuery.post('server/Main.php', { act : 29, id : id, sess_id: document.session_id } ); // RestoreFromTrash
}

function deleteProject(id)
{
	$('#tooltip').hide(); // Скрываем всплывающую подсказку (т.к. сама она не догадывается)
	$('#projects_list #project_'+id).remove();
	jQuery.post('server/Main.php', { act : 26, id : id, sess_id: document.session_id } ); // DeleteProject
}

function addTagToFilter()
{
	$('#Projects #filter_tags').append($('#Projects #new_filter_tag').val()+', ');	
	filterProjects($('#Projects #new_filter_tag').val());
	$('#Projects #new_filter_tag').val('');
}

function filterProjects(tag) // Нужно парсить список фильтрующих тегов, а не передавать новый в качестве параметра
{
	$('#Projects tr div:not(:contains("'+tag+'"))').parent().parent().remove(); // Переделать!
}

function selectProject(id)
{
	jQuery.ajax({ url: 'server/Main.php', async: false, data: { act : 2, id : id, sess_id: document.session_id }, // SelectProject 
		type: 'POST', 
		success: function(resp)
		{
			if(resp.name == '')
			{
				alert('Не удалось выбрать проект!');
			}
			else
			{
				$('#project_name').html(resp.name);
				$('#project_menu a').attr('href', '#Project_'+id);
				$('#project_menu').show();
				
				$('#project_menu ul a').each(
					function()
					{
						$(this).attr('href', '#'+$(this).attr('name')+'_'+id);
					}
				);
				
				document.current_project_id = id;
			}
		}
	});
}

function createProject()
{
	var new_project_name = $('#new_project_name').val();
	if(new_project_name == '')
	{
		alert('Введите название проекта!');
	}
	else
	{
		jQuery.post('server/Main.php', { act : 3, name : new_project_name, sess_id: document.session_id }, // CreateProject (Возвращает [id, activity_id])
			function(p) 
			{
				$('#new_project_name').val('');
				
				$('#new_GraphState_name').val('Основное'); // Создадим состояние графа
				createGraphState();

				window.location.hash = '#Project_'+p.id;
			},
			"json"
		);
	}
}

function locationChanged()
{
	s = window.location.hash.split('_');
	
	if(location.hash == '')
	{
		showDescription();
		return;
	}
	
	switch(s[0])
	{
		case '#Project':
		{
			if(s.length == 2)
				selectProject(s[1]);
			
			showProjectInfo();
			break;
		}
		
		case '#Projects':
		{
			showProjects();
			break;
		}
		
		case "#Trash":
		{
			showProjectsFromTrash();
			break;
		}
		
		case "#Search":
		{
			alert('Функция не реализована!');
			break;
		}
		
		case "#Help":
		{
			showHelp();
			break;
		}
		
		case '#Contexts':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');
			
			loadActivities();
			
			showContexts();
			
			break;
		}
		
		case '#ContextsSimilarity':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');
			
			loadActivities();
			
			showContextsSimilarity();
			
			break;
		}
		
		case '#Fields':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');
			$("#project_tabs").tabs('select', 3);
			
			loadActivities();
			
			showFields();
			
			break;
		}
		
		case '#Map':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');
			
			loadActivities();
			
			showMap();
			
			break;
		}
		
		case '#Graph':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');
			
			loadActivities();
			
			showGraph();
			
			break;
		}
		
		case '#Report':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');

			loadActivities();
			
			showReport();
			
			break;
		}
		
		case '#Context':
		{
			if(s.length != 3)
				alert('Неизвестный контекст!');
			else				
			{
				if(document.current_project_id != s[1])
					selectProject(s[1]);
				
				changeForm('main','Edit_Project');
				
				loadActivities();
				
				var f = function(res) 
						{ 
							if(res)
							{
								$('#prev_ctx,#next_ctx').attr('disabled', false);
								
								jQuery.post('server/Main/GetPrevNextContext.php', { prev_or_next: 3, sess_id: document.session_id }, // 3 - узнаём, какая из кнопок будет заблокирована
									function(btns)
									{
										if(!btns[0])
											$('#prev_ctx').attr('disabled', true);
										
										if(!btns[1])
											$('#next_ctx').attr('disabled', true);
									},
									'json'
								);
								
								editContext();
							}
							else
							{
								alert("Не удалось выбрать контекст! Обратитесь в тех. поддержку.");
							}
						};
								
				if($('#contexts_list tbody').html() == '')
				{
					(function(s)
					{	
						showContexts(function()
						{
							selectContext(s, f);
						})
					})(s[2]);
				}
				else
				{
					selectContext(s[2], f);
				}
			}
		
			break;
		}
		
		case '#Concordance':
		{
			if(s.length == 2 && document.current_project_id != s[1])
				selectProject(s[1]);
			
			changeForm('main','Edit_Project');
			
			loadActivities();
			
			showConcordanceConnections();
			
			break;
		}
		
		case '#ContextsFieldMap':
		{
			window.open('server/Main/GetContextsFieldsMap.php');
			break;
		}
		
		case '#ContextsList':
		{
			window.open('server/Main/GetContextsList.php?format=txt');
			break;
		}
	}
favicon.change(null, "Система графосемантического моделирования");
}

function showHelp()
{
	changeForm('main', 'Help');
}

function requestSupport()
{
	jQuery.post('server/Main/RequestSupport.php', { support_title: $('#support_title').val(), support_body: $('#support_body').val(), support_email: $('#support_email').val(), sess_id: document.session_id }, // Отправить письмо в техподдержку
		function()
		{
			alert('Письмо успешно отправлено!');
			
			$('#support_title').val('');
			$('#support_body').val('');
		}
	);
}

