function SecurityToken(databaseOrSecurityToken, userName, password) {
    var self = this;
    function Encrypt(text) {
        var output = new String;
        for (var i = 0; i < text.length; i++) {
            output += String.fromCharCode(text.charCodeAt(i) ^ 0x60);
        }
        return output;
    }
    this.getRedirectHref = function(path) {
        return path + "?" + encodeURIComponent($.toJSON({
            database: self.database,
            userName: self.userName
        }));
    };
    this.applyTo = function(path) {
        sessvars.securityToken = self;
        window.location.href = self.getRedirectHref(path);
    };
    this.getLogin = function() {
        return {
            database: self.database,
            userName: self.userName,
            sessionId: self.sessionId
        };
    };
    if (databaseOrSecurityToken) {
        if (databaseOrSecurityToken.database) {
            // SecurityToken value is passed
            this.database = databaseOrSecurityToken.database;
            this.userName = databaseOrSecurityToken.userName;
            this.sessionId = databaseOrSecurityToken.sessionId;
            return;
        }
        this.database = databaseOrSecurityToken;
    }
    else {
        this.database = "";
    }
    if (userName) {
        this.userName = userName;
        if (!password) {
            this.password = "";
        }
        this.sessionId = Encrypt(new Date().getTime() + "," + location.hostname + "," + password);
    }
    else {
        this.sessionId = "";
    }
	
}
