var database = null; // The client-side database
var DB_tableName = "CurrencyKeyValueTable"; // database name
// Function: initDB() - Init and create the local database, if possible
function initDB()
{
try {
if (window.openDatabase) {
database = openDatabase("ExchangeRatesDB", "1.0",
"Exchange Rates Database", 1000);
if (database) {
database.transaction(function(tx) {
tx.executeSql("SELECT COUNT(*) FROM " + DB_tableName, [],
function(tx, result) {
loadRates();
},
function(tx, error) {
// Database doesn't exist. Let's create one.
tx.executeSql("CREATE TABLE " + DB_tableName +
" (id INTEGER PRIMARY KEY," +
" key TEXT," +
" value TEXT)", [], function(tx, result) {
initRates();
loadRates ();
});
});
});
}
}
} catch(e) {
database = null;
}
}
// Function: initRates() - Initialize the default exchange rates
function initRates()
{
if (database) {
database.transaction(function (tx) {
tx.executeSql("INSERT INTO " + DB_tableName +
" (id, key, value) VALUES (?, ?, ?)", [0, 'USD', 1.44]);
tx.executeSql("INSERT INTO " + DB_tableName +
" (id, key, value) VALUES (?, ?, ?)", [1, 'EUR', 2.05]);
tx.executeSql("INSERT INTO " + DB_tableName +
" (id, key, value) VALUES (?, ?, ?)", [2, 'AUS', 1.19]);
});
}
}
// Function: loadRates() - Load the currency exchange rates from DB
function loadRates()
{
var element;
var popUpElement = document.getElementById('popupConvertTo');
if (database) {
database.transaction(function(tx) {
tx.executeSql("SELECT key, value FROM " + DB_tableName, [],
function(tx, result) {
for (var i = 0; i < result.rows.length; ++i) {
var row = result.rows.item(i);
var key = row['key'];
var value = row['value'];
//---populate the pop-up menu part---
popUpElement.options[i].text = key;
popUpElement.options[i].value = value;
if (key == 'USD') {
element = document.getElementById('txtUSD');
}
else {
if (key == 'EUR') {
element = document.getElementById('txtEUR');
}
else if (key == 'AUS') {
element = document.getElementById('txtAUS');
}
}
element.value = value;
}
},
function(tx, error) {
showError('Failed to retrieve stored information from database - ' +
error.message);
});
});
}
else {
loadDefaultRates();
}
}
// Function: saveRates() - Save the currency exchange rates into DB
function saveRates()
{
if (database) {
var elementUSD = document.getElementById('txtUSD');
var elementEUR = document.getElementById('txtEUR');
var elementAUS = document.getElementById('txtAUS');
database.transaction(function (tx) {
tx.executeSql("UPDATE " + DB_tableName + " SET key = 'USD',
value = ? WHERE id = 0", [elementUSD.value]);
tx.executeSql("UPDATE " + DB_tableName + " SET key = 'EUR',
value = ? WHERE id = 1", [elementEUR.value]);
tx.executeSql("UPDATE " + DB_tableName + " SET key = 'AUS',
value = ? WHERE id = 2", [elementAUS.value]);
});
}
loadRates();
}
// Function: deleteTable() - Delete currency exchange table from DB
function deleteTable()
{
try {
if (window.openDatabase) {
database = openDatabase("ExchangeRatesDB", "1.0",
"Exchange Rates Database");
if (database) {
database.transaction(function(tx) {
tx.executeSql("DROP TABLE " + DB_tableName, []);
});
}
}
} catch(e) {
}
}
// Function: loadDefaultRates() - Load the default exchange rates
function loadDefaultRates()
{
var popUpElement = document.getElementById('popupConvertTo');
var element = document.getElementById('txtUSD');
element.value = "1.44";
popUpElement.options[0].text = "USD";
popUpElement.options[0].value = element.value;
element = document.getElementById('txtEUR');
element.value = "2.05";
popUpElement.options[1].text = "EUR";
popUpElement.options[1].value = element.value;
element = document.getElementById('txtAUS');
element.value = "1.19";
popUpElement.options[2].text = "AUS";
popUpElement.options[2].value =
}