(function() {
	EYE.register(function(){
		$('.calendarField').each(
			function(){
				calendarItem = $(this).attr("id");
				Calendar.setup({
			        inputField     :    calendarItem,
			        ifFormat       :    "%d-%m-%Y",
			        showsTime      :    false
			    });
			}
		);
	}, 'init');
	
	EYE.keepSessionAlive = function(){
		$.ajax({
			type: 'POST',
			url: '/ajaxserver.php',
			data: $.param({
				plugin: 'keepSessionAlive'
			}),
			complete: function(){
			},
			success: function (responseXML) {
			}
		});
	};
	
	window.setInterval(EYE.keepSessionAlive, 240000);
	
	EYE.invoice = function(){
		var el,
			roundAmount = function(amount) {
				return Math.round(amount*100)/100;
			},
			formatVal = function(amount) {
				amount = new String(amount);
				var delimiter = "."; // replace comma if desired
				var a = amount.split('.',2);
				var d = a[1]||'00';
				var i = parseInt(a[0]);
				if(isNaN(i)) { return ''; }
				var minus = '';
				if(i < 0) { minus = '-'; }
				i = Math.abs(i);
				var n = new String(i);
				var a = [];
				while(n.length > 3)
				{
					var nn = n.substr(n.length-3);
					a.unshift(nn);
					n = n.substr(0,n.length-3);
				}
				if(n.length > 0) { a.unshift(n); }
				n = a.join(delimiter);
				if(d.length < 1) { amount = n; }
				else { amount = n + ',' + d; }
				amount = minus + amount;
				return amount;
			},
			calculateTotals = function(){
				var totalWoVAT = 0, totalVAT = 0;
				$('tbody tr', el).each(function(){
					var indx = $('#invoiceType input:last').attr('checked') ? -1 : 1;
					var inpts = $('input', this);
					var vat = parseFloat(EYE.taxRates[$('select', this).val()], 10);
					var items = roundAmount(parseFloat(inpts.eq(1).val().replace(',', '.'), 10)||0);
					var price = Math.abs(roundAmount(parseFloat(inpts.eq(2).val().replace(',','.'), 10)||0))*indx;
					var total = roundAmount(items*price);
					vat = roundAmount(total*vat/100);
					var totalVat = total + vat;
					inpts
						.eq(1).val(items).end()
						.eq(2).val(price).end()
						.eq(3).val(total).end()
						.eq(4).val(total + vat).end();
					totalWoVAT += total;
					totalVAT += vat;
				});
				$('tfoot tr td', el)
					.eq(1).html('&euro; ' + formatVal(roundAmount(totalWoVAT))).end()
					.eq(2).html('&euro; ' + formatVal(roundAmount(totalVAT))).end()
					.eq(3).html('&euro; ' + formatVal(roundAmount(totalWoVAT + totalVAT)));
			},
			evClick = function(ev) {
				var targetEl = $(ev.target);
				if (targetEl.is('img')) {
					targetEl = targetEl.parent();
				}
				if (targetEl.is('span')) {
					targetEl = targetEl.parent();
				}
				if (targetEl.is('a')) {
					if (confirm(EYE.translations.confirmInvoiceItemDelete)) {
						targetEl.parent().parent().remove();
						calculateTotals();
					}
					return false;
				}
			},
			addItem = function(ev){
				var key = 'new_'+parseInt(Math.random()*1000, 10);
				$(tmpl('invoiceItemTemplate', {key:key}))
					.find('input').bind('blur', calculateTotals).end()
					.find('select').bind('change', calculateTotals).end()
					.appendTo($('tbody', el));
				return false;
			};
		return {
			init: function(){
				if ((el = document.getElementById('tableInvoiceItems'))) {
					$(el)
						.bind('click', evClick)
						.find('input').bind('blur', calculateTotals).end()
						.find('select').bind('change', calculateTotals).end();
					$('#addInvoiceItem').bind('click', addItem);
				}
			}
		};
	}();
	EYE.register(EYE.invoice.init, 'init');
	
	EYE.localOverlay = function (){
		var inited = false;
		return {
			init: function (){
				if (inited == false) {
					inited = true;
					$('#localOverlay').css('opacity', 0.6);
				}
			},
			show: function (el) {
				var offset = $(el).offset();
				$('#localOverlay').css({
					top: offset.top,
					left: offset.left,
					width: el.offsetWidth,
					height: el.offsetHeight,
					display: 'block'
				});
			},
			hide: function (el) {
				$('#localOverlay').hide();
			}
		};
	}();
	EYE.register(EYE.localOverlay.init, 'init');
	
	EYE.filter = function(){
		var el, collapsed = false,
			expandCollapse = function(ev){
				if ((collapsed = !collapsed)) {
					$(el).find('div:last').hide().end().find('h3 a').addClass('collapsed');
				} else {
					$(el).find('div:last').show().end().find('h3 a').removeClass('collapsed');
				}
				return false;
			},
			submitFilter = function(){
				$(this).parent().parent().submit();
				return false;
			},
			resetFilter = function(){
				$(this).parent().parent()
					.find('select, input, textarea').val('')
					.submit();
				return false;
			};
		return {
			init: function(){
				if ((el = document.getElementById('filterBox'))) {
					$(el)
						.find('a:first').bind('click', expandCollapse).end()
						.find('div:last a:first').bind('click', submitFilter).end()
						.find('div:last a:last').bind('click', resetFilter).end();
				}
			}
		};
	}();
	EYE.register(EYE.filter.init, 'init');
	
	EYE.costsTotal = function(){
		var el, 
			calculate = function(){
				var inputs = $(el).find('fieldset:last input');
				var tax = (parseFloat(EYE.taxRates[$(el).find('fieldset:last select').val()], 10)||0)/100;
				var price = parseFloat(inputs.eq(0).val(), 10)||0;
				var taxval = Math.round((price * tax)*1000)/1000;
				var priceval = Math.round((price + taxval)*1000)/1000;
				inputs
					.eq(0).val(price).end()
					.eq(1).val(taxval).end()
					.eq(2).val(priceval).end();
			};
		return {
			init: function(){
				if ((el = document.getElementById('expense'))) {
					$(el)
						.find('fieldset:last')
							.find('input').bind('blur', calculate).end()
							.find('select').bind('change', calculate).end();
				}
			}
		};
	}();
	EYE.register(EYE.costsTotal.init, 'init');
	
	EYE.dahsboard = function(){
		var el,
			calculateVAT = function(e){
				this.blur();
				EYE.localOverlay.show(el);
				$.ajax({
					type: 'POST',
					url: '/ajaxserver.php',
					data: $.param({
						quarter: $('select[name=quarter]', el).val(),
						year: $('select[name=year]', el).val(),
						plugin: 'vatOverview'
					}),
					complete: function(){
						EYE.localOverlay.hide(el);
					},
					success: function (responseXML) {
						$(el).find('input')
							.eq(0).val($('incomeVat', responseXML).text()).end()
							.eq(1).val($('expenseVat', responseXML).text()).end()
							.eq(2).val($('subtotalVat', responseXML).text()).end();
					}
				});
				return false;
			};
		return {
			init: function(){
				if ((el = document.getElementById('dashboardVATOverview'))) {
					$('#dahsboardVATStats').bind('click', calculateVAT);
				}
			}
		};
	}();
	EYE.register(EYE.dahsboard.init, 'init');
})();

$(document).ready(
	function(){
	}
);

