$(init);

function init()
{
	fillCategories();
	autoResizeTextArea();
//	initDirtyForm();
	initTariffChange();
	initStages();
}

function initStages()
{
	$("#next-stage-2").click(showStage2);
//	$("#next-stage-3").click(showStage3);
}

function showStage2()
{
	$(this).hide();
	
	$('#stage-1').hide();
	$('#stage-2').show();
}

function showStage3()
{
	$('#stage-2').hide();
	$('#stage-3').show();
}

function initTariffChange() 
{	
	$('*[name=tariff_id]').change(onTariffChange);

	var tariffs = eval(boardTariffs); 
	var titleLengthWatcher;
	var textLengthWatcher;
	var curTariff;
	var defTariffId = $('#def-tariff').val();
	
	var photoPart 	= $('.show_photo');
	var logoPart 		= $('.show_logo');
	var facadePart 	= $('.show_facade');
	var payPart 		= $('.pay-part');
	var freePart    = $('.free-part');
	
	assignLengthWatchers();
	
	function onTariffChange(e)
	{
		var tariffInp = $(e.target);
		var tariffId = tariffInp.val();
		
		curTariff = tariffs[tariffId];
		titleLengthWatcher.setLimit(curTariff['title_width']);
		textLengthWatcher.setLimit(curTariff['text_width']);
		
		showTariffParts();
	}
	
	function assignLengthWatchers()
	{
		var inputs = $('input[name=tariff_id]');
		var select = $('select[name=tariff_id] option');
		
		var tariffId;
		if(inputs.size() > 1)
		{
			var tariffInp = $(inputs).filter(':checked');
			tariffId = tariffInp.val();
		}
		else if(select.size() > 1)
		{
			var tariffInp = $(select).filter(':selected');
			tariffId = tariffInp.val();
		}
		else
		{
			tariffId = 1;
		}
		curTariff = tariffs[tariffId];

		titleLengthWatcher = $('#board-title').LengthWatch($('#title-length'), curTariff['title_width'], 'desc');
	 	textLengthWatcher = $('#board-text').LengthWatch($('#text-length'), curTariff['text_width'], 'desc');
	 	
	 	showTariffParts();
	}
	
	function showTariffParts()
	{
		( curTariff['can_show_logo'] || curTariff['can_show_facade'] ) ? photoPart.show() : photoPart.hide(); 
		
		( curTariff['can_show_logo'] ) 		? logoPart.show() 	: logoPart.hide();
		( curTariff['can_show_facade'] ) 	? facadePart.show() : facadePart.hide();

		if( !curTariff['is_need_pay'] )
		{
			payPart.hide();
			freePart.show();
		}
		else
		{
			payPart.show();
			freePart.hide();
		}
	}

	if ( $('*[name=tariff_id]:checked').length > 0 )
	{
	    onTariffChange({target: $('*[name=tariff_id]:checked')});
	}
}

function initDirtyForm()
{
	var form = $('#add-board-entry'); 	
	form.dirty_form();
	
	form.submit(function(){
		window.onbeforeunload = undefined;
	});
	
	window.onbeforeunload = onBeforeUnload;
	function onBeforeUnload()
	{
		var form = $("#add-board-entry");
    $(':input:not(:hidden,:submit,:password,:button)', form).blur();
    return form.are_dirty() ? "Введенные в форму данные не будут сохранены." : undefined;
	}
}

function autoResizeTextArea()
{
	$('textarea#board-text').autoResize();
}

function fillCategories()
{
	var categories = eval(boardCategories);
	
	var i;
	var curOpt;
	var rootCont = $("#root-category");
	rootCont.empty();
	for(i in categories)
	{
		if(!categories.hasOwnProperty(i)) continue;
		curOpt = $("<option>"+categories[i]['title']+"</option>");
		curOpt.val(categories[i]['id']);
		curOpt.data('children', categories[i]['children']);
		curOpt.appendTo(rootCont);
	}
	
	var defRootCat = $('input[name=def_root_cat]').val();
	
	if(defRootCat !== undefined)
	{
		$("option[value='"+defRootCat+"']", rootCont).attr('selected', 'selected');
	}
	else
	{
		$("option:first", rootCont).select();
	}
	rootCont.change(onSelectCategory);
	rootCont.change();
}

function onSelectCategory()
{
	var selOpt = $("option:selected", $(this))
	var children = selOpt.data('children');
	var boardCont = $("#board-category");
	var curOpt;
	boardCont.empty();
	
	var defCat = $('input[name=def_cat]').val();
	
	for(i in children)
	{
		if(!children.hasOwnProperty(i)) continue;
		curOpt = $("<option>"+children[i]['title']+"</option>");
		curOpt.val(children[i]['id'])
		curOpt.appendTo(boardCont);
	}
	if(defCat !== undefined)
	{
		$("option[value='"+defCat+"']", boardCont).attr('selected', 'selected');
	}
	else
	{
		$("option:first", boardCont).select();
	}
	if(!selOpt.val())
	{
		boardCont.attr('disabled', 'disabled');
	}
	else
	{
		boardCont.attr('disabled', '');
	}
}
