###
### server-supported moods vs. custom moods
###

users will be able to use either server-supported moods or their
own custom moods.

to use a server-supported mood, clients will use metadata property:

    current_moodid   (numeric)

to use a custom mood, clients will use metadata property:

    current_mood

Or, use them both.  Why?  The current_moodid will indicte the picture to use, the current_mood will have the text to display.  Clients may decide how they'd like to do it (using neither, one, or both)

If only a current_moodid is given, the text will be from the server.    

### a list of all server-supported moods
### each mood has a parent (base) mood.  at the top of the tree would be
### "positive" or "negative", but since those are boring, maybe "happy" and "sad"

CREATE TABLE moods (
   moodid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   mood   VARCHAR(40),
   parentmood INT UNSIGNED NOT NULL DEFAULT '0'
);

### I think the moods should be displayed with a picture with ALIGN=ABSMIDDLE, a space,
### and then the mood in text.

### people will of course want to customize the images for the moods, so there
### will be mood themes

CREATE TABLE moodthemes (
   moodthemeid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ownerid INT UNSIGNED NOT NULL
   name VARCHAR(50),
   des VARCHAR(100),
   is_public ENUM('Y', 'N') NOT NULL DEFAULT 'N'
);

### users don't have to define pictures for every mood ... just certain base ones
### LiveJournal will find the picture by working up the tree until it finds one
### with a picture defined that's either gender neutral or matching gender

CREATE TABLE moodthemedata (
   moodthemeid INT UNSIGNED NOT NULL,
   KEY (moodthemeid),
   moodid   INT UNSIGNED NOT NULL,
   gender   ENUM('m', 'f', 'n') NOT NULL DEFAULT 'n',
   UNIQUE (moodthemeid, moodid, gender),
   picurl   VARCHAR(100),
   width    TINYINT UNSIGNED NOT NULL,
   height   TINYINT UNSIGNED NOT NULL
);

### how to get moods:
###

extending the "login" protocol:

if you send the request key "getmoods" with a value of the highest moodid you have
cached locally, the server will send you back the newer ones, if any:

    mood_count
    mood_n_id    -- mood ID number
    mood_n_name  -- mood text

if you're lazy, you can send getmoods=0 to get all the moods everytime, or you can
send no getmoods key at all, and not have them returned, so it doesn't slow old
clients.

#### some moods (these need to be put into a tree, showing which moods 
#### are base moods of each other..... volunteers?)

aggravated
angry
annoyed
anxious
bored
confused
depressed
exhausted
happy
lonely
pissed
sad
stressed
tired
sore
energetic
enraged
infuriated
jubilant
horny
hungry
discontent
thirsty
satisfied
thoughtful
.....

tons more needed.  if you send me some, don't just rip off another site's list... use your head and think of them independently.
