var pricesKPM = new Array;
pricesKPM[1] = new Array;
pricesKPM[2] = new Array;
var pricesYC = new Array;
// oplaty za kpm, bez znizki
pricesKPM[1][0] = 480.0;
pricesKPM[2][0] = 550.0;
// oplaty za kpm, czlonek od 2007
pricesKPM[1][1] = 310.0;
pricesKPM[2][1] = 330.0;
// oplaty za kpm, nowy czlonek
pricesKPM[1][2] = 410.0;
pricesKPM[2][2] = 430.0;
// oplaty za kpm, student
pricesKPM[1][3] = 410.0;
pricesKPM[2][3] = 430.0;
// oplaty za yc, bez zniki
pricesYC[0] = 100.0;
// oplaty za yc, czlonek od 2007
pricesYC[1] = 70.0;
// oplaty za yc, nowy czlonek
pricesYC[2] = 80.0;
// oplaty za yc, student
pricesYC[3] = 80.0;

var priceKPM = 0.0;
var priceHotel = 0.0;
var priceSum = 0.0;

var pokojTypHTML = $('[name=pokoj_typ]').html();

function calculatePricesKPM()
{
	var kpmOption = $('[name=udzial_kpm]:checked').attr('value');
	var ycOption = $('[name=udzial_yc]').attr('checked') ? 1 : 0;
	var znizkaOption = $('[name=znizka]:checked').attr('value');
	if (znizkaOption == 4)
		znizkaOption = 1;
	priceKPM = 0.0;
	if (kpmOption > 0)
		priceKPM = parseFloat(pricesKPM[kpmOption][znizkaOption]);
	if (ycOption > 0)
		priceKPM += parseFloat(pricesYC[znizkaOption]);
	priceSum = parseFloat(1.22*priceKPM) + parseFloat(priceHotel);
	$('#priceKPM').text(priceKPM);
	$('#priceSum').text(addZeroesToPrecision(roundToPrecision(priceSum,2),2));
}

function calculatePricesHotel()
{
	$('[name=data_przyj]').triggerHandler('click');
	var hotelOption = $('[name=hotel_id] option:selected').attr('value');
	var dataPrzyj = $('[name=data_przyj] option:selected').attr('value');
	var dataWyj = $('[name=data_wyj] option:selected').attr('value');
	var pokojTyp = $('[name=pokoj_typ] option:selected').attr('value');
	var days = parseInt(dataWyj.substr(8,2)) - parseInt(dataPrzyj.substr(8,2));

	if (pokojTyp == 2)
		pokojTyp = 1;
				
	priceHotel = 0.0;
	if (hotelOption > 0)
		priceHotel = parseFloat(days * pricesHotel[hotelOption][pokojTyp]);
	priceSum = parseFloat(1.22*priceKPM) + parseFloat(priceHotel);
	$('#priceHotel').text(priceHotel);
	$('#priceSum').text(addZeroesToPrecision(roundToPrecision(priceSum,2),2));
}

function nextStep()
{
	$(this).parent().parent('div.step').slideUp('slow');
	$(this).parent().parent('div.step').prev('h2').find('img').show();
	$(this).parent().parent('div.step').next().next().slideDown('slow');
	$(this).parent().parent('div.step').next().next().prev('h2').find('img').hide();	
}

function prevStep()
{
	$(this).parent().parent('div.step').slideUp('slow');
	$(this).parent().parent('div.step').prev('h2').find('img').show();
	$(this).parent().parent('div.step').prev().prev().slideDown('slow');
	$(this).parent().parent('div.step').prev().prev().prev('h2').find('img').hide();	
}

function relatedOn()
{
	var names = $(this).attr('rel').split(',');
	for (i=0; i<names.length; i++)
	{
		name = names[i];
		$('[name='+name+']').removeAttr('disabled').removeClass('disabled');
	}
}

function relatedOff()
{
	var names = $(this).attr('rel').split(',');
	for (i=0; i<names.length; i++)
	{
		name = names[i];
		$('[name='+name+']').attr('disabled','disabled').addClass('disabled');
	}
}

function relatedChange()
{
	var names = $(this).attr('rel').split(',');
	var tag = this.tagName.toLowerCase();
	switch (tag)
	{
		case 'select':
			for (i=0; i<names.length; i++)
			{
				name = names[i];
				if ($(this).children('option:selected').hasClass('relation_on'))
					$('[name='+name+']').removeAttr('disabled').removeClass('disabled');
				else
					$('[name='+name+']').attr('disabled','disabled').addClass('disabled');
			}
			break;
		case 'input':
			for (i=0; i<names.length; i++)
			{
				name = names[i];
				if ($(this).attr('checked'))
					$('[name='+name+']').removeAttr('disabled').removeClass('disabled');
				else
					$('[name='+name+']').attr('disabled','disabled').addClass('disabled');
			}
			break;
	}
}

function selectRadio()
{
	if ($(this).prev().attr('disabled'))
		return;
	if ($(this).prev().attr('checked') && $(this).prev().attr('type')=='checkbox')
		$(this).prev().removeAttr('checked');
	else
		$(this).prev().attr('checked','checked');
	$(this).prev().triggerHandler('click');
}

function relatedCheck()
{
	var name = $(this).attr('rel');
	$('[name='+name+']').attr('checked','checked');
}

function linkChange()
{
	var val = $(this).children('option:selected').attr('value');
	if (val == 0)
		$(this).next('a').hide();
	else
	{
		$(this).next('a').show();
		$(this).next('a').attr('href','./poznan-hotele-'+val);
	}
}

function adjustDate()
{
	var dataPrzyj = $('[name=data_przyj] option:selected').attr('value');
	var dataWyj = $('[name=data_wyj] option:selected').attr('value');
	var startDay = parseInt(dataPrzyj.substr(8,2)) + 1;
	var endDay = 29;
	$('[name=data_wyj]').empty();
	for (i=startDay; i<=endDay; i++)
	{
		$('[name=data_wyj]').append('<option value="2008-11-'+i+'">'+i+'.11.2008</option>');
	}
	if (dataWyj <= dataPrzyj)
		$('[name=data_wyj] option:enabled:first').attr('selected','selected');
	else
		$('[name=data_wyj] option[value='+dataWyj+']').attr('selected','selected');
}

function checkDrink()
{
	if ($('[name=udzial_kpm]:checked').length > 0 || $('[name=udzial_yc]:checked').length > 0)
		$('[name=udzial_drink]').removeAttr('disabled');
	else
	{
		$('[name=udzial_drink]').attr('disabled','disabled');
		$('[name=udzial_drink]').removeAttr('checked');
	}
	if ($('[name=udzial_yc]:checked').length > 0)
	{
//		$('[name=ycblok]').removeAttr('disabled');
		$('[name=ycblok]').attr('checked','checked');
	}
	else
	{
		$('[name=ycblok]').removeAttr('checked');
		$('[name=ycblok]').attr('disabled','disabled');
	}
	if ($('[name=udzial_kpm]:checked').length > 0)
	{
		$('[name^=blok]').removeAttr('disabled');
	}
	else
	{
		$('[name^=blok]').removeAttr('checked');
		$('[name^=blok]').attr('disabled','disabled');
	}
}

function checkOtherKPM()
{
	if ($(this).attr('value')==1)
	{
		if ($(this).attr('checked'))
		{
			$('[name=udzial_kpm][value=2]').attr('disabled','disabled');
			$('[name=udzial_kpm][value=2]').removeAttr('checked');
		}
		else
			$('[name=udzial_kpm][value=2]').removeAttr('disabled');
	}
	else
	{
		if ($(this).attr('checked'))
		{
			$('[name=udzial_kpm][value=1]').attr('disabled','disabled');
			$('[name=udzial_kpm][value=1]').removeAttr('checked');
		}
		else
			$('[name=udzial_kpm][value=1]').removeAttr('disabled');
	}
}

function checkPokojTyp()
{
	var sel = $('[name=pokoj_typ] option:selected').attr('value');
	$('[name=pokoj_typ]').css('visibility','hidden');
	$('[name=pokoj_typ]').html(pokojTypHTML);
	if ($('[name=hotel_id]').attr('value') == 1)
		$('[name=pokoj_typ] option[value=1], [name=pokoj_typ] option[value=2]').remove();
	if ($('[name=hotel_id]').attr('value') == 2)
		$('[name=pokoj_typ] option[value=0]').remove();
	if ($('[name=hotel_id]').attr('value') == 5)
		$('[name=pokoj_typ] option[value=0]').remove();
	if ($('[name=hotel_id]').attr('value') == 4)
		$('[name=pokoj_typ] option[value=2]').remove();
	$('[name=pokoj_typ] option[value='+sel+']').attr('selected','selected');
	calculatePricesHotel();
	$('[name=pokoj_typ]').css('visibility','');
}

//rounds the input number to the desired precision
//and returns the rounded number
function roundToPrecision(inputNum, desiredPrecision)
{
	var precisionGuide = Math.pow(10, desiredPrecision);
	return( Math.round(inputNum * precisionGuide) / precisionGuide );
}

//converts the input number into a string and adds zeroes
//until the desired precision is reached and then
//returns the new string
function addZeroesToPrecision(inputNum, desiredPrecision){
	var numString = inputNum + "";
	var afterDecimalString = numString.substring(numString.search(/\./) + 1);
	while (afterDecimalString.length < desiredPrecision) 
	{
		afterDecimalString += "0";
		numString += "0";
	}
	return(numString);
}

function secondPerson()
{
	var sel = parseInt($('[name=pokoj_typ] option:selected').attr('value'));
	if (sel == 0)
	{
		$('[name=druga_osoba]').removeAttr('checked');
		$('[name=druga_osoba]').attr('disabled','disabled');
		$('div.druga_osoba').hide();
	}
	else
	{
		$('[name=druga_osoba]').removeAttr('disabled');
	}
	
}

function secondPersonDetails()
{
	if ($('[name=druga_osoba]:checked').length)
	{
		$('div.druga_osoba').show();
		$('[name=druga_imie]').addClass('required');
	}
	else
	{
		$('[name=druga_imie]').removeClass('required');
		$('div.druga_osoba').hide();
	}
		
}

$(document).ready(function(){
	var lastStep = true;
	
	$('#step1').show();
	$('#step1 input.nextstep').click(function(){
		$("#nazwisko").text($('[name=nazwisko]').attr('value'));
		$("#imie").text($('[name=imie]').attr('value'));
	})

	$('#step2 input.nextstep').click(function(){
		$('[name=blok1]').rules('add',{
			required: function(element)
				{
					if ($('[name^=blok]:checked').length)
						return false;
					return true;
				}
		});
	})	
	
	
	$('input.prevstep').click(function(){
		if ($('.registration').valid())
			$(this).each(prevStep);
	});

	$('input.nextstep').click(function(){
		if ($('.registration').valid())
			$(this).each(nextStep);
	});
	
	$('[name=udzial_kpm]').click(checkDrink);
	$('[name=udzial_kpm]').click(checkOtherKPM);
	$('[name=udzial_yc]').click(checkDrink);
	
	$(':disabled').addClass('disabled');

	$('input.relation_on').click(relatedOn);
	$('input.relation_off').click(relatedOff);
	$('.relation_change').click(relatedChange);
	$('.relation_check').click(relatedCheck);
	$('.link_change').click(linkChange);
	
	$('.radio_select').click(selectRadio);
	
	$('[name=udzial_kpm]').click(calculatePricesKPM);
	$('[name=udzial_yc]').click(calculatePricesKPM);
	$('[name=znizka]').click(calculatePricesKPM);
	
	$('[name=hotel_id]').click(checkPokojTyp);
	
	$('[name=data_przyj]').change(calculatePricesHotel);
	$('[name=data_wyj]').change(calculatePricesHotel);
	$('[name=hotel_id]').change(calculatePricesHotel);
	$('[name=pokoj_typ]').change(calculatePricesHotel);
	$('[name=pokoj_typ]').change(secondPerson);
	$('[name=druga_osoba]').change(secondPersonDetails);

	$('[name=data_przyj]').click(adjustDate);
	
	
	calculatePricesKPM();
	calculatePricesHotel();
	
	$('.registration').validate({
		errorClass: 'error',
		highlight: function(element, errorClass) {
			$(element).addClass(errorClass);
			$(element).next("label[for=" + element.id + "]").addClass(errorClass);
		},
		unhighlight: function(element, errorClass) {
			$(element).removeClass(errorClass);
			$(element).next("label[for=" + element.id + "]").removeClass(errorClass);
		},
		groups: {
			miasto_all: "kod_pocztowy_1 kod_pocztowy_2 miasto"
		},
		errorPlacement: function(error, element) {
			if ($(element).attr('name') == "kod_pocztowy_1" || $(element).attr('name') == "kod_pocztowy_2" || $(element).attr('name') == "miasto" )
				error.insertAfter("[name=miasto]");
			else if ($(element).attr('name') == "udzial_kpm" || $(element).attr('type') == 'checkbox')
				error.insertAfter($(element).next());
			else
				error.insertAfter(element);
		},
		rules:
		{
			reprezentuje: 
			{
				required: function(element)
				{
					return parseInt($('[name=reprezentuje_radio]:checked').attr('value'));
				}
			},
			udzial_kpm:
			{
				required: function(element)
				{
					if ($('[name=udzial_yc]:checked').length)
						return false;
					return true;
				}
			},
			email_re:
			{
				equalTo: "[name=email]"
			}
		},
		onfocusout: false,
		onclick: false,
		onkeyup: false
	})
	
	$('input.endstep').click(function(){
		$('.registration').submit();
	})
	
})

