// JavaScript Document

var jQT = $.jQTouch({
	icon: 'kilo.png',
	statusBar: 'black'
});

var db;

$(document).ready(function() {
	$('#createEntry form').submit(createEntry);
	$('#accounts li a').click(function() {
		sessionStorage.currentAccount = this.id;
		
		alert('currentAccount was ' + sessionStorage.currentAccount + ')');
		
		refreshEntries();
	});
	var shortName = 'BookkeeperBible';
	var version = '1.0';
	var displayName = 'Bookkeeper\'s Bible';
	var maxSize = 65536;
	db = openDatabase(shortName, version, displayName, maxSize);
	db.transaction(function(transaction){
		transaction.executeSql('CREATE TABLE IF NOT EXISTS journals (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, account TEXT NOT NULL, journal TEXT NOT NULL, debit TEXT NOT NULL, credit TEXT NOT NULL, description TEXT NOT NULL);');
	});
});

function refreshEntries() {
	var currentAccount = sessionStorage.currentAccount;
	$('#account h1').text(currentAccount);
	$('#account ul li:gt(0)').remove();
	db.transaction(function(transaction) {
		transaction.executeSql('SELECT * FROM journals WHERE account = ? ORDER BY journal;', [account], function(transaction, result) {
			for (var i = 0; i <result.rows.length; i++) {
				var row = result.rows.item(i);
				var newEntryRow = $('#entryTemplate').clone();
				newEntryRow.removeAttr('id');
				newEntryRow.removeAttr('style');
				newEntryRow.data('entryId', row.id);
				newEntryRow.appendTo('#account ul');
//				newEntryRow.find('.account').text(row.account);
				newEntryRow.find('.journal').text(row.journal);
//				newEntryRow.find('.debit').text(row.debit);
//				newEntryRow.find('.credit').text(row.credit);
//				newEntryRow.find('.desc').text(row.description);
				newEntryRow.find('.delete').click(function() {
					var clickedEntry = $(this).parent();
					var clickedEntryId = clickedEntry.data('entryID');
					deleteEntryById(clickedEntryId);
					clickedEntry.slideUp();
				});
			}
		}, errorHandler);
	});
}

function deleteEntryById(id) {
	db.transaction(function(transaction) {
		transaction.executeSql('DELETE FROM journals WHERE id = ?;', [id], null, errorHandler);
	});
}

function createEntry() {
	var account = $('#account').val();
	
	alert('currentAccount was ' + account);
	
	var journal = $('#journal').val();
	
	alert('currentAccount was ' + account);
	alert('currentAccount was ' + journal);
	
	var debit = $('#debit').val();
	
	alert('currentAccount was ' + debit);
	
	var credit = $('#credit').val();
	
	alert('currentAccount was ' + credit);
	
	var desc = $('#desc').val();
	
	alert('currentAccount was ' + desc);
	
	db.transaction(function(transaction) {
		transaction.executeSql('INSERT INTO journals (account, journal, debit, credit, description) VALUES (?, ?, ?, ?, ?);', [account, journal, debit, credit, desc], function(){
			refreshEntries();
			jQT.goBack();
		}, errorHandler);
	}
	);
	return false;
}

function errorHandler(transaction, error) {
	alert('Oops. Error was ' + error.message + ' (Code ' + error.code + ')');
	transaction.executeSql('INSERT INTO errors (code, message) VALUES (?, ?);', [error.code, error.message]);
	return true;
}
