$(document).ready( function() {
	
	var i = 1000;
	
	recalculate();
	$('.listCheckbox').live('click',  function(e) {
		
		var el = $(e.target).parent();
		
		if (el.hasClass('list_undone')) {
			el.removeClass('list_undone');
			el.addClass('list_done');
			el.children().attr('src','/images/checkbox-1.png');
		} else {
			el.removeClass('list_done');
			el.addClass('list_undone');
			el.children().attr('src','/images/checkbox-0.png');
		}
		recalculate();
		e.preventDefault();
	});
	
	function cashFocus(e)
	{
		
		var el = $(e.target);
		
		if (el.val() == '0,00') {
			el.val('');
		}
	}
	
	function cashBlur(e)
	{
		
		var el = $(e.target);
		var val = parseFloat(el.val().replace(',','.'))
		if (el.val() == '' || isNaN(val)) {
			el.val('0,00');
		} else {
			el.val(Math.round(val*Math.pow(10,2))/Math.pow(10,2));
			el.val(el.val().replace('.', ','));
			recalculate();
		}
	}
	
	$('.cashInput').focus(cashFocus);
	$('.cashInput').blur(cashBlur);
	
	$('#erasePricesLink').click( function(e) {
		
		e.preventDefault();
		
		$('.cashInput').each( function(i, el) {
			var pr = $(el);
			pr.val('0,00');
		});
		$('#calculatorPlan').val('0');
		recalculate();
	});
	
	$('#calculatorPlan').blur( function(){
		
		el = $('#calculatorPlan');
		var val = parseFloat(el.val().replace(',','.'))
		if (el.val() == '' || isNaN(val)) {
			el.val('0,00');
		} else {
			el.val(Math.round(val*Math.pow(10,2))/Math.pow(10,2));
			el.val(el.val().replace('.', ','));
			recalculate();
		}
		
	});
	
	function recalculate()
	{
		
		var cashSum = 0;
		var cashEndSum = 0;
		var cashRemainSum = 0;
		
		$('.cashInput').each( function(i, el) {
			var pr = $(el);
			
			cashSum += parseFloat(pr.val().replace(",", "."));
			cashSum = Math.round(cashSum*Math.pow(10,2))/Math.pow(10,2);
			if (pr.parent().next().find('.listCheckbox').hasClass('list_done')) {
				cashEndSum += parseFloat(pr.val().replace(",", "."));
				cashEndSum = Math.round(cashEndSum*Math.pow(10,2))/Math.pow(10,2);
			}else if (pr.parent().next().find('.listCheckbox').hasClass('list_undone')) {
				cashRemainSum += parseFloat(pr.val().replace(",", "."));
				cashRemainSum = Math.round(cashRemainSum*Math.pow(10,2))/Math.pow(10,2);
			}
		});
		
		cashRemainSum = $('#calculatorPlan').val().replace(',', '.') - cashEndSum;
		cashRemainSum = Math.round(cashRemainSum*Math.pow(10,2))/Math.pow(10,2);
		$('#calculatorRemain').val(cashRemainSum.toString().replace('.', ','));
		$('#calculatorAll').val(cashSum.toString().replace('.', ','));
		$('#calculatorEnd').val(cashEndSum.toString().replace('.', ','));
	}
	
	$('.cashInput').blur( function() {
		
		recalculate();
	});

	$('.noteActivationLink').live('click', function(e) {
	
		var el = $(e.target);
		
	}
	);
	
	$('.tdol_col0').live('click', function(e) {
		
		var el = $(e.target);
		var idChange = el.parents('.listingBox').attr('id').split('-');
		idChange = idChange[1];
		el.parent().parent().remove();
		
		recalculate();
		rebuild(idChange);
	});
	
	function doUpdatebale(e) {
		
		var el = $(e.target);
		el.unbind('click');
		el.unbind('mouseover');
		var text = el.text();
		var box = el.parents('.bxRow').find('.boxNote').val();
		
		el.html('<input type="hidden" name="" class="updateHidden" value="' + text +'"/><input type="text" name="" class="updateValue" value="' + text +'"/>Okres: <select name="updatePeriod" class="updatePeriod">'
				+ '<option value="0">zmień okres</option>'
				+ '<option value="1">12-10 miesięcy</option>'
				+ '<option value="2">9-6 miesięcy</option>'
				+ '<option value="3">5-4 miesięcy</option>'
				+ '<option value="4">3-2 miesiące</option>'
				+ '<option value="5">2-1 miesiąc</option>'
				+ '<option value="6">4-3 tygodnie</option>'
				+ '<option value="7">2-1 tydzień</option>'
				+ '<option value="8">1 dzień przed</option>'
				+ '<option value="9">W dniu ślubu</option>'
				+ '<option value="10">Po ślubie</option>'
	     		+ '</select><br/><textarea class="updateNote">' + box+ '</textarea><br/><input type="button" value="Zapisz" class="saveButton"/><input type="button" value="Anuluj" class="cancelButton"/>');
	}

	function rebuild(id)
	{
	
		var i = 0;
		$('#listing-' + id + ' > table tr').each ( function(iDi, el) {
			
			if ( i > 0) {
				
				if ( i %2 == 0) {
					$(el).addClass('odd');
				} else {
					$(el).removeClass('odd');
				}
			}
			
			i++;
		});
	}
		
	$('.tdol_col1').click( doUpdatebale );
	
	$('.saveButton').live('click', function(e) {
		
		var el = $(e.target);
		
		if (el.prevAll('.updateValue').val() == '') {
			el.prevAll('.updateValue').addClass('inputError');
			return;
		}
		
		if (0 != el.prevAll('.updatePeriod').val()) {
			
			var idChange = el.parents('.listingBox').attr('id').split('-');
			idChange = idChange[1];

			var id = el.prevAll('.updatePeriod').val();
			$('#listing-' + id + ' > table').append(el.parent().parent());
			
			var odd = $('#listing-' + id + ' > table tr').size() - 1;
			
		
			if ( odd % 2 == 0) {
				el.parent().parent().addClass('odd');
			} else {
				el.parent().parent().removeClass('odd');
			}
			
			
			rebuild(idChange);
		}
		
		var about = el.prevAll('.updateNote').val();
		el.parents('.bxRow').find('.boxNote').val(about);
		
		if (about == '') {
			el.parents('.bxRow').find('.noteActivationLink').hide();
		} else {
			el.parents('.bxRow').find('.noteActivationLink').show();
			bindTooltip(el.parents('.bxRow').find('.noteActivationLink'));
		}
		
		el.parent().html(el.prevAll('.updateValue').val());

		
		$('.tdol_col1').click( doUpdatebale );
	});
	
	$('.cancelButton').live('click', function(e) {
		
		var el = $(e.target);
		el.parent().html(el.prevAll('.updateHidden').val());
		$('.tdol_col1').click( doUpdatebale );
	});
	
	$('#addElementLink').click( function(e) {
		
		$('#listAdd').toggle();
		$('#listAddName').removeClass('inputError');
		e.preventDefault();
	});
	
	function resetAdd()
	{
		$('#listAddName').val('');
		$('#listAddPeriod').val(1)
	}
	
	$('#listAddCancel').click( function() {
		
		resetAdd();
		$('#listAdd').toggle();
		$('#listAddName').removeClass('inputError');
		
	});
	
	$('#listAddAdd').click( function(e) {
		
		if ($('#listAddName').val() == '') {
			$('#listAddName').addClass('inputError');
			return;
		}
		
		var id = $('#listAddPeriod').val();
		
		i++;
		var oddClass = 'class="bxRow ';
		
		var odd = $('#listing-' + id + ' > table tr').size() - 1;
		
	
		if ( odd % 2 == 1) {
			oddClass = oddClass + ' odd" ';
		}
		
		oddClass = oddClass + '"';
		
		$('#listing-' + id + ' > table').append('<tr ' + oddClass + ' id="row-' + i +'"><td class="tdol_col0">&nbsp;<img src="/images/btn-remove.png"/><input type="hidden" value="" class="boxNote"/></td>'
				+ '<td class="tdol_col1">'+ $('#listAddName').val() +'</td>'
				+ '<td class="tdol_col4"><span style="display:none;" class="noteActivationLink">pokaż</span></td>'
		        + '<td class="tdol_col2"><input type="text" value="0,00" class="cashInput"/></td>'
		        + '<td class="tdol_col3"><a href="#" class="listCheckbox list_undone"><img  src="/images/checkbox-0.png" alt="Niezrobione" /></a></td></tr>');
	
		resetAdd();
		
		$('.tdol_col1').click( doUpdatebale );
		
		$('.cashInput').focus(cashFocus);
		$('.cashInput').blur(cashBlur);
		$('#listAddName').removeClass('inputError');
	});
	
	function bindTooltip(el) {
		  var value = $(el).parents('.bxRow').find('.boxNote').val();
		  value = value.replace(/\n/g, "<br/>");
		  
	      $(el).qtip(
	      {
	         content: {
	    	  	text: value,
	            title: {
	               text: 'Notatka', 
	               button: 'Zamknij'
	            }
	         },
	         position: {
	            corner: {
	               target: 'bottomMiddle', 
	               tooltip: 'topMiddle'
	            },
	            adjust: {
	               screen: true 
	            }
	         },
	         show: { 
	            when : 'click',
	            solo: true 
	         },
	         hide: 'unfocus',
	         style: {
	            tip: true, 
	            border: {
	               width: 0,
	               radius: 4
	            },
	            name: 'light', 
	            width: 570 
	         }
	      })
	}
	
	$('.noteActivationLink:visible').each(function(i, el)
	{
	  
		bindTooltip(el);
  	});
	
});

