$(document).ready(function() {
	$(':radio').addClass('radio');
	$(':checkbox').addClass('checkbox');
	$(':disabled').addClass('disabled');
	
	$('#main-form a.description').each(function(key, item) {
		$(this).bind("mouseover", function(e) {
			$(this).find('span').show();
		}).bind("mouseout", function(e) {
			$(this).find('span').hide();
		});
	});
	
	// validering
	$("#main-form").validate({debug: false, submitHandler: function(form) {
			var error = new Array();
			
			var jointstock = 0; // antal aktieandelar måste vara 500
			var boardmembers = $('input.boardmember:checked').length; // antal styrelseledamöter
			var deputydirectors = $('input.deputydirector:checked').length; // antal styrelsesuppleanter
			var chairmen = $('input.chairman:checked').length; // antal styrelseordföranden (ska bara vara en)
			
			var accountant_firstname = $('#input-accountant1-firstname').val();			
			var accountant_lastname = $('#input-accountant1-lastname').val();
			
			var warrant = $('#input-warrant-pin').val();
			if(warrant != "" && !warrant.match(/^\d{6}-\d{4}$/))
				error.push('- Ange personnummer i formatet xxxxxx-xxxx för generalfullmakt 1.');
				
			var warrant = $('#input-warrant-pin2').val();
			if(warrant != "" && !warrant.match(/^\d{6}-\d{4}$/))
				error.push('- Ange personnummer i formatet xxxxxx-xxxx för generalfullmakt 2.');
			
			// styrelse / aktieägare
			for(var s = 1; s <= 5; s++) {
				if($('#input-stock'+ s +'-jointstock').attr('value') != "" && !isNaN(parseInt($('#input-stock'+ s +'-jointstock').attr('value'))))
					jointstock += parseInt($('#input-stock'+ s +'-jointstock').attr('value'));
				
				// styrelsesuppleant kan inte vara styrelseordförande
				if($('#checkbox-stock'+ s +'-deputydirector').is(':checked') && $('#checkbox-stock'+ s +'-chairman').is(':checked'))
					error.push('- Person '+ s +' kan inte vara Styrelsesuppleant och Styrelseordförande.');
				
				// styrelsesuppleant kan inte vara styrelseledamot
				if($('#checkbox-stock'+ s +'-deputydirector').is(':checked') && $('#checkbox-stock'+ s +'-boardmember').is(':checked'))
					error.push('- Person '+ s +' kan inte vara Styrelsesuppleant och Styrelseledamot.');
					
				var pin = $('#input-stock'+ s +'-pin').val();
				if(pin != "" && !pin.match(/^\d{6}-\d{4}$/))
					error.push('- Ange personnummer i formatet xxxxxx-xxxx för person '+ s +'.');
			}
			
			// övriga aktieägare
			for(var s = 1; s <= 2; s++) {
				if($('#input-stockother'+ s +'-jointstock').attr('value') != "" && !isNaN(parseInt($('#input-stockother'+ s +'-jointstock').attr('value'))))
					jointstock += parseInt($('#input-stockother'+ s +'-jointstock').attr('value'));
			
				var pin = $('#input-stockother'+ s +'-pin').val();
				if(pin != "" && !pin.match(/^\d{6}-\d{4}$/))
					error.push('- Ange personnummer i formatet xxxxxx-xxxx för övrig aktieägare '+ s +'.');
			}
			
			// revisorer
			for(var s = 1; s <= 2; s++) {
				var pin = $('#input-accountant'+ s +'-pin').val();
				if(pin != "" && !pin.match(/^\d{6}-\d{4}$/))
					error.push('- Ange personnummer i formatet xxxxxx-xxxx för revisor '+ s +'.');
			}
			
			// om det är fler än en styrelseledamot så måste det också finnas en styrelseordförande
			if(boardmembers > 1 && chairmen == 0)
				error.push('- Du måste välja en styrelseordförande.');
			
			// om det är fler än en styrelseledamot så måste det finnas en suppleang
			if(boardmembers < 3 && deputydirectors == 0)
				error.push('- Har du två eller färre styrelseledamöter så måste du välja en styrelsesuppleant.');
			
			// man måste alltid ange minst en styrelseledamot
			if(boardmembers == 0)
				error.push('- Du måste alltid ange minst en styrelseledamot.');
			
			if(jointstock != 500)
				error.push('- Antal aktieandelar måste vara 500 ('+ jointstock +').');
			
			// vd och styrelseordförande får endast kryssas i på ett ställe
			if($('input.vd:checked').length > 1)
				error.push('- Du kan endast välja en VD.');
			
			if(chairmen > 1)
				error.push('- Du kan endast välja en Styrelseordförande.');
			
			// accountants?
			if($('#checkbox-accountant-1').is(':checked') && (accountant_firstname == "" || accountant_lastname == ""))
				error.push('- Du måste fylla i revisorns tilltals- och efternamn');
			
			if(error.length == 0) {			
				form.submit();
			}
			else {
				error = error.join('\n');
				
				alert('Följande fel hittades:\n'+ error);
			}
		}
	});
});

function toggleFields(id, display) {
	var opposite = (display) ? false : true;

	$(id).each(function(i) {
		if($(this).hasClass('hide'))
			if(display)
				$(this).show();
			else
				$(this).hide();
		else
			if(opposite)
				$(this).show();
			else
				$(this).hide();
	});
}

function show_fields(select, tableclass, total, start) {
	var fields = $(select).find(':selected').val();

	for(var i = start; i <= total; i++)
		$(tableclass + i).addClass('hide');
	
	var x = start;
	while(x <= fields) {
		$(tableclass + x).removeClass('hide');
		x++;
	}
}
