This is my old Gaiaonline Class. I believe it should work. Python 3.1.

Feel free to translate to other languages.

Code:
#!/usr/bin/env python

#Gaiaonline Class
#Author: Riddle
#E-mail: NONE

#General Gaiaonline Functions

import General
import HTTP
import time
import random
import urllib.parse

class Gaiaonline:
    def __init__(self, Session):
        """Gaiaonline Class:
            Login(User, Pass): Logs into Gaiaonline with username and password
            Encrypt_Password(): Used by Login()
            Get_Username(): Returns Username for Session
            Get_Password(): Returns Password for Session
            Get_HTTP(): Returns HTTP Wrapper session
        """
        self.HTTP = Session

        self.User = None
        self.Pass = None

        self.PASS_SALT = "Go-Gaia-XD-72squared"
    
    def Login(self, User, Pass):
        """Login to Gaiaonline
            Returns True on success"""

        self.User = User
        self.Pass = Pass

        if self.User.find(" "):
            TmpUser = self.User.replace(' ', '+')
            
        TmpPass = self.Encrypt_Password() #Obtain salted password...
    
        #URL to Post to
        URL = "http://www.gaiaonline.com/chat/gsi/gateway.php"
    
        randTime = str(int(time.time())) + str(random.randrange(100, 999))
        #Post data
        pData = 'X=;' + randTime + '&v=phpobject&m=' + 'a:1:{i:0;a:2:{i:0;s:3:"108";i:1;a:2:{i:0;s:' + str(len(TmpUser)) + ':"' + TmpUser + '";i:1;s:32:"' + TmpPass +'";}}}'

        #Set the referer in the HTTP Headers
        self.HTTP.Set_Referer("http://s2.cdn.gaiaonline.com/images/Gaia_Flash/FISHING/bassken_game4.15.swf")
    
        #Send the HTTP Request
        HTML = self.HTTP.GET(URL, pData)

        if HTML != "__ERROR__":
            #HTML = str(HTML, 'utf-8')
            HTML = urllib.parse.unquote_plus(HTML)
        
            if HTML.find('b:1;i:2') > 0:   #Logged in
                return True

            else:
                return False
        
        return False

    def Encrypt_Password(self):
        """Returns Salted MD5"""
        g = General.General()
        a = g.md5Digest(self.Pass)
        Enc_Password = g.md5Digest(a+self.PASS_SALT)    
        return Enc_Password

    def Get_Password(self):
        return self.Pass

    def Get_Username(self):
        return self.User

    def Get_HTTP(self):
        return self.HTTP

    def New_HTTP(self):
        self.HTTP.Clear_Cookies()

    def Get_Nonce(self, HTML):
        pattern = 'name="nonce" value="(.*)">'
        nonce = General.General().Find_All(pattern, HTML)
        return nonce[0]