/* 
 This file was generated by Dashcode.  
 You may edit this file to customize your widget or web page 
 according to the license.txt file included in the project.
 */

var database = null;                        // The client-side database
var DB_tableName = "SimpleKeyValueTable";   // database name
var __for_iPhone = false;

//
// Function: initDB()
// Init and create the local database, if possible
//
function initDB(foriPhone)
{
    __for_iPhone = foriPhone;
    
    try {
        if (window.openDatabase) {
            database = openDatabase("Message", "1.0", "Message Database", 1000);
            if (database) {
                database.transaction(function(tx) {
                    tx.executeSql("SELECT COUNT(*) FROM " + DB_tableName, [],
                        function(tx, result) {
                            var obj = result.rows.item(0);
                            var rows = obj["COUNT(*)"];
                            
                            if (!rows){
                                initContent();
                            }else if((rows == 1) && foriPhone) {
                                initContent();
                            } else if ((rows == 4) && !foriPhone) {
                                initContent();
                            }
                            loadContent();
                        },
                        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) {
                                    initContent();
                                    loadContent();
                                });
                        });
                });
            }
        }
    } catch(e) {
        database = null;
    }
    
    return database;
}

//
// Function: cleanTable()
// Utility function to clean table. It can be used to test table re-creation
//
function cleanTable()
{
    try {
        if (window.openDatabase) {
            database = openDatabase("Content", "1.0", "Content Database");
            if (database) {
                database.transaction(function(tx) {
                    tx.executeSql("DROP TABLE " + DB_tableName, []);
                });
            }
        }
    } catch(e) { 
    }
}

//
// Function: clearSettings()
// Reset settings to default
//
function clearSettings(event)
{
    if (database) {
        var deleteStatement = "DELETE FROM " + DB_tableName + " WHERE id ";
        
        if (__for_iPhone) {
            deleteStatement += "< ?";
        } else {
            deleteStatement += "= ?";
        }
        
        database.transaction(function(tx) {
            tx.executeSql(deleteStatement, [4],
                function(tx, result) {
                    initContent();
                    loadContent();
                },
                function (tx, error) {
                    showError("Can't reset database");
                });
        });
    }
    else {
        initContent();
        loadContent();
    }
}

//
// Function: retrieveStoredInfo(callbackFunction)
// Retrieve stored information from the database for an element
//
function retrieveStoredInfo(callbackFunction)
{
    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'];

                        callbackFunction(key, value);
                    }
                },
                function(tx, error) {
                    showError('Failed to retrieve stored information from database - ' + error.message);
                });
            });
        return true;
    }
    else {
        // Load defaults
        return false;
    }
}

//
// Function: insertValue(id, key, value)
// Insert value for key into the database
//
function insertValue(id, key, value)
{
    if (database) {
        database.transaction(function (tx) {
            tx.executeSql("INSERT INTO " + DB_tableName + " (id, key, value) VALUES (?, ?, ?)", [id, key, value]);
        });
    }
}

//
// Function: updateValue(id, key, value)
// Update value for key into the database
//
function updateValue(id, key, value)
{
    if (database) {
        database.transaction(function (tx) {
            tx.executeSql("UPDATE " + DB_tableName + " SET key = ?, value = ? WHERE id = " + id, [key,value]);
        });
    }
}
