$(init);

function init()
{
	initSlidingInfo();
	initBoardDialog();
	initColorbox();
}

function initColorbox()
{
	$("#board-list a.preview-logo").colorbox();
}

/*Sliding Board Entries*/
function initSlidingInfo()
{
	var links = $('.item .col2 .refer-link');
	
	links.click(toggleSlideInfo);

	initSlidingAll();
	showActiveEntry();
	
	function showActiveEntry()
	{
		var hash = location.hash;
		if( hash && hash.length > 1)
		{
			var entryId	= '#entry-' + hash.substr(1);
			$(entryId).click();
		}
	}
	
	function initSlidingAll()
	{
		$(".show-all").click(showAll);
		$(".hide-all").click(hideAll);
	}
	
	function showAll()
	{
		$('.bordered .col2 .refer-link').click();
	}

	function hideAll()
	{
		$('.active .col2 .refer-link').click();
	}
	
	function toggleSlideInfo()
	{
		var visible = $(this).data('visible');
		if(visible === undefined)
		{
			visible = true;
		}
		else
		{
			visible = !visible;
		}
	  $(this).data('visible', visible);
		
	  var selfCont = $(this).parent().parent();
	  var textCont = selfCont.next('.board-text');
	  
		if(visible)
		{
			textCont.fadeIn('fast');
		  selfCont.toggleClass('bordered');
		  selfCont.toggleClass('active');
		  textCont.toggleClass('bordered');
		}
		else
		{
			textCont.fadeOut('fast', function(){
				selfCont.toggleClass('bordered');
				selfCont.toggleClass('active');
		  	textCont.toggleClass('bordered');
			});
		}
	}
}

/*Board Dialog*/
function initBoardDialog()
{
	var boardDialog = createBoardDialog();
	var tmp = '';
	var url;
	$(".icon-edit-board").click(onClickEditBoard);

	function onClickEditBoard()
	{
		boardDialog.show();
		var nativeUrl = $(this).attr('href');
		var substrPos = nativeUrl.indexOf('#');

		var boardId = parseInt(nativeUrl.substr(substrPos + 1));
		boardDialog.setBoardId(boardId);
		
		if(url === undefined)
		{
			var url = nativeUrl.substr(0, substrPos);
			boardDialog.setUrl(url);
		}
		return false;
	}
}

function createBoardDialog()
{
	var self = this;	
	var boardId;
	var urlEditBoard;
	var contForm;
	var form;
	var show;
	var urlAjaxLogin;
	
	construct();
	
	function construct()
	{
		nativeForm = $('#owner-login-dialog');
		$('#owner-password').keypress(function(e){
			if(e.which == 13)
			{
				enterLogin();
			}
		});
		
		contForm = nativeForm.clone(true);
		nativeForm.replaceWith('');
		form = $('form', contForm);
		//form.submit(enterLogin);
		form.submit(function(){return false;});
		
		contForm.dialog({
				autoOpen:  false,			
		    position:  'center',
		    width:     420,
		    height:    220,
		    resizable: false,
		    modal:     true,
		    close: 		 closeDialog,
		    overlay:
		    {
		        backgroundColor: '#000',
		        opacity: 0.5
		    },
		    buttons:
		    {
		        'Войти': enterLogin
		    }
		});
		
		urlAjaxLogin = form.attr('action');
		
		/*public methods*/
		self.show = show;
		self.setBoardId = setBoardId;
		self.setUrl = setUrl;
	}
	
	function show()
	{
		contForm.dialog('open');
		contForm.show();
	}
	
	function enterLogin()
	{
		var password = $.trim( $('#owner-password').val() );
		
		if ( !password )
		{
			showAlert('Пустое поле', 'Введите пароль');
		}
		else
		{
			contForm.dialog('disable');
			login(password);
		}
		return false;
	}

	function closeDialog() 
	{
		form.get(0).reset();
	}
	
	function setBoardId(bid)
	{
		boardId = bid;
	}
	
	function setUrl(url)
	{
		if(urlEditBoard === undefined)
		{
			urlEditBoard = url;
		}
	}
	
	function login(password)
	{
		if( boardId !== undefined )
		{
			$.ajax({
				type:  "GET",
				url:   urlAjaxLogin,
				cache: false,
				data:  {
					'password': password,
					'board_id': boardId
				},
				success: function(data, textStatus){
					if(urlEditBoard !== undefined)
					{
		    		document.location = urlEditBoard;
					}
				},
				error: function(XMLHttpRequest, textStatus, errorThrown){
			    showAlert('Неверный пароль', 'Пароль не был подтвержден');
			    contForm.dialog('enable');
	  	  }
			});
		}
	}
	
	return self;
}
