$( document ).ready( function( )
{
	/* akcje wykonane przy wciśnięciu przycisku */
	$( 'input.oplata, input#ksiega, input.vat_cena_nieruchomosci, input.naliczanie_prowizji' ).click( function()
	{
		if ( /^[0-9]+(.)*$/.test( $( 'input#cena_nieruchomosci' ).val() ) && /^[0-9]+(.)*(%)*$/.test( $( 'input#prowizja_agencji_procent' ).val() ) )
		{
			$( this ).przelicz();
		}
	});
	
	/* akcje wykonane po wpisaniu tekstu */
	$( 'input#cena_nieruchomosci, input#prowizja_agencji_procent' ).keyup( function()
	{
		if ( /^[0-9]+(.)*$/.test( $( 'input#cena_nieruchomosci' ).val() ) && /^[0-9]+(.)*(%)*$/.test( $( 'input#prowizja_agencji_procent' ).val() ) )
		{
			$( this ).przelicz();
		}
	});	
	
	/* główna funkcja */
	jQuery.fn.przelicz = function()
	{		
		/* wyzerowanie wartości */
		var cena = 0.00;
		var suma = 0;
		var oplaty_dodatkowe = 0;
		var prowizja = 0.00;
		var prowizja_procent = 0.00;
		var vat_od_prowizji = 0;
		var taksa_notarialna = 0
		var oplata_skarbowa = 0;
		var oplata_sadowa = 0;
		var vat_od_taksy = 0;
		
		/* wartości stałe */
		var wypis_aktu = 6;
		var waluta = 1;

		/* ustalenie danych podstawowych */
		cena = $( 'input#cena_nieruchomosci' ).val();
		wartosc = cena;
		cena_netto = cena;
		
		/* sprawdzenie poprawności ceny */
		if ( ( wartosc.length == 1 ) && ( wartosc == 0 ) ) $( 'input#cena_nieruchomosci' ).val( wartosc.toFixed( 2 ) );
		cena = parseFloat( wartosc ) * parseFloat( waluta );
		if ( wartosc.length == 0 ) cena = 0;
 	
	 	cena = parseFloat( $( 'input#cena_nieruchomosci' ).val() );
	 	 		 	
		/* jeśli doliczony jest VAT do ceny nieruchomosci to nie ma opłaty skarbowej */
		if ( $( 'input.vat_cena_nieruchomosci:checked' ).val() > 0 )
		{
			oplata_skarbowa = 0;
			$( 'input#oplata_skarbowa' ).val( 'nie ma' );
		}
		else
		{
			/* sprawdzenie poprawności i wyświetlenie opłaty skarbowej */
			oplata_skarbowa = cena * 0.02;
			oplata_skarbowa = ( Math.round( oplata_skarbowa * 100 ) ) / 100;
			if ( !isNaN( oplata_skarbowa ) ) $( 'input#oplata_skarbowa' ).val( oplata_skarbowa.toFixed( 2 ) );
 		}

		/* sprawdzenie poprawności taksy notarialnej */
		if ( ( cena > 0 ) && ( cena <= 3000 ) ) taksa_notarialna = 100;
		if ( ( cena > 3000 ) && ( cena <= 10000 ) )	taksa_notarialna = ( 100 + ( ( cena - 3000 ) * 0.03 ) );
		if ( ( cena > 10000 ) && ( cena <= 30000 ) ) taksa_notarialna = ( 310 + ( ( cena - 10000 ) * 0.02 ) );
		if ( ( cena > 30000 ) && ( cena <= 60000 ) ) taksa_notarialna = ( 710 + ( ( cena - 30000 ) * 0.01 ) );
		if ( ( cena > 60000 ) && ( cena <= 1000000 ) ) taksa_notarialna = ( 1010 + ( ( cena - 60000 ) * 0.005 ) );
		if ( cena > 1000000 ) taksa_notarialna = ( 5710 + ( ( cena - 1000000 ) * 0.0025 ) );
  		
  		/* jeśli wybrano "opłatę 1" */
  		if ( $( 'input.oplata:checked' ).val() == 'oplata1' )
  		{
  			taksa_notarialna = ( Math.round( taksa_notarialna * 100 ) / 2 ) / 100;
  		}
  		/* jesli wybrano "opłatę 2" */
  		else if ( $( 'inputoplata:checked' ).val() == 'oplata2' )
  		{
  			taksa_notarialna = ( Math.round( taksa_notarialna * 100 ) ) / 100;
  		}
  		  		
		if ( !isNaN( taksa_notarialna ) ) $( 'input#taksa_notarialna' ).val( taksa_notarialna.toFixed( 2 ) );
  		
		/* sprawdzenie poprawności i wyświetlenie vat-u od taksy */
		vat_od_taksy = taksa_notarialna * 0.22;
		vat_od_taksy = ( Math.round( vat_od_taksy * 100 ) ) / 100;
		
		if ( !isNaN( vat_od_taksy ) )
		{
			$( 'input#vat_od_taksy' ).val( vat_od_taksy.toFixed( 2 ) );
		}

		/* sprawdzenie poprawności i wyświetlenie procent prowizji */
		prowizja_procent = $( 'input#prowizja_agencji_procent' ).val();
						
		if ( prowizja_procent == '' || prowizja_procent == 0 )
		{
			prowizja_procent = 0;
		}
		else
		{
			/* jeżeli podano w procentach */
			if ( ( /^([0-9])+(%){1}$/i.test( prowizja_procent ) ) )
			{
				var ulamek = prowizja_procent.replace( '%', '' );
				prowizja_procent = ( ulamek * cena ) / 100;				
			}
			else
			{
				prowizja_procent = prowizja_procent;
			}
						
			prowizja_procent = parseFloat( prowizja_procent );			
		}
						
		if ( prowizja_procent.length == 0 ) prowizja_procent = 0;
														
		/* wyliczanie prowizji */
		prowizja = cena * prowizja_procent;
		prowizja = prowizja_procent;
											
		if ( !isNaN( prowizja ) ) $( 'input#prowizja_agencji' ).val( prowizja.toFixed( 2 ) );

		/* sprawdzenie poprawności i wyświetlenie vat-u od prowizji agencji */
		vat_od_prowizji = prowizja * 0.22;
		
		if ( !isNaN( vat_od_prowizji ) ) $( 'input#vat_prowizja_agencji' ).val( vat_od_prowizji.toFixed( 2 ) );

		/* sprawdzenie poprawności i wyświetlenie opłaty sądowej */
		if ( $( 'input.oplata:checked' ).val() == 'oplata1' && $( 'input#ksiega:checked' ).val() != 1 )
		{
			oplata_sadowa = 0;			
			$( 'input#oplata_sadowa' ).val( 'nie ma');
		}
		else if ( $( 'input.oplata:checked' ).val() == 'oplata2' || $( 'input#ksiega:checked' ).val() == 1 )
		{
			oplata_sadowa = 200;	
			oplata_sadowa = ( Math.round( oplata_sadowa * 100 ) ) / 100;
			if ( !isNaN( oplata_sadowa ) )
			{
				$( 'input#oplata_sadowa' ).val( oplata_sadowa.toFixed( 2 ) );
			}
			else
			{
				$( 'input#oplata_sadowa' ).val( '' );
			}
		}
		
		if ( ( $( 'input.oplata:checked' ).val() == 'oplata1' && $( 'input#ksiega:checked' ).val() == 1 )
			 || $( 'input.oplata:checked' ).val() == 'oplata2' )
		{
			oplata_za_wniosek = 60;
			$( 'input#oplata_za_wniosek' ).val( oplata_za_wniosek.toFixed( 2 ) );
  		}
		else
		{
			oplata_za_wniosek = 0;
			$( 'input#oplata_za_wniosek' ).val( 'nie ma' );
		}
		
		$( 'input#wypis_aktu' ).val( wypis_aktu.toFixed( 2 ) );
  
		/* sprawdzenie poprawności i wyświetlenie opłat dodatkowych */
		oplaty_dodatkowe = taksa_notarialna + oplata_skarbowa + vat_od_taksy + oplata_sadowa + prowizja + oplata_za_wniosek + vat_od_prowizji;
		
		oplaty_dodatkowe = ( Math.round( oplaty_dodatkowe * 100 ) ) / 100;
		
		oplaty_dodatkowe = parseFloat( oplaty_dodatkowe );
		
		if ( !isNaN( oplaty_dodatkowe ) )
		{
			$( 'input#oplaty_dodatkowe' ).val( oplaty_dodatkowe.toFixed( 2 ) );
		}

		/* sprawdzenie poprawności i wyświetlenie sumy */
		suma = cena + oplaty_dodatkowe;
		suma = ( Math.round( suma * 100 ) ) / 100;
		if ( !isNaN( suma ) ) $( 'input#suma_oplat' ).val( suma.toFixed( 2 ) );
 	}
});
