var db;

function checkDbConnect() {
	var isDbConnect = (checkWebKitDbConnect() || checkGearsDbConnect());

	if (isDbConnect) {
		isDbConnect =
			executeSql('CREATE TABLE IF NOT EXISTS history (id INTEGER PRIMARY KEY, dat TEXT, locale TEXT)');
	}

	return isDbConnect;
}

function checkWebKitDbConnect() {
	var isDbConnect = true;

	try {
		db = openDatabase('Strayed Child', '1.0', 'Strayed Child');
	}
	catch (error) {
		isDbConnect = false;
	}
	finally {
		return isDbConnect;
	}
}

function checkGearsDbConnect() {
	var isDbConnect = true;

	try {
		db = google.gears.factory.create('beta.database');
		db.open('StrayedChild');
	}
	catch (error) {
		isDbConnect = false;
	}
	finally {
		return isDbConnect;
	}
}

function executeSql(sql, params, callback, date) {
	var result = true;

	try {
		if (db.transaction != null) {
			db.transaction(
				function(transaction) {
					transaction.executeSql(sql, params,
						function(transaction, resultSet) {
							if (callback) {
								callback(resultSet, date);
							}
						}
					);
				},
				function(error) {
					result = false;
				}
			);
		}
		else {
			var resultSet = db.execute(sql, params);

			if (callback) {
				callback(resultSet, date);
			}
		}
	}
	catch (error) {
		result = false;
	}
	finally {
		return result;
	}
}