Socket.emit not working Nodejs Socket.IO

I am just trying to send a simple message from client to server on button Click.

Edit: When my index.jade loads I use the following code and for creating the socket.io object and then forward it to my Menu_Contoller which in turn assigns the socket object to the Menu_Model.Then whenever the function SendOptionSelectedToServer of Menu_Model.js is called i use the socket object to of Menu_Model.The values in this function are correct.Just don't know why it is not emitting.

index.jade

script(src = '/socket.io/socket.io.js')
script(src = '/javascripts/Menu_Controller.js')
script(src = '/javascripts/Menu_Model.js')

script

var socket = io.connect('http://localhost:3000');
socket.emit('GameType','chutia');

var Menu_Control = Object.create(Menu_Controller);

Menu_Control.Init(socket);

Menu_Controller.js

   var Menu_Controller = {

    Model : null,

    Init:function(socket)
    {
        this.Model = Object.create(Menu_Model);
        this.Model.Init(socket,this);
    },
    SendOptionSelectedToServer:function(option)    <-- called from a view menu which we don't have to care about because value in 'option' are correct.
    {
        this.Model.SendOptionSelectedToServer(option);
    }

};

Menu_Model.js

 var Menu_Model = {
    Socket     : null,
    Controller : null,

    Init:function(sock,controllerRef)
    {
        this.Socket = sock;
        this.Controller = controllerRef;
    },
    SendOptionSelectedToServer:function(option)
    {
        this.Socket.emit(option.type,option.ghostName);       <-- this line.
    }
};

And here's my complete server side code in app.js.

var express = require('express')
  , http    = require('http')
  , routes  = require('./routes')
  , io      = require('socket.io')
  , factory = require('./serverfactory.js');
var  app  = express();

var server = app.listen(3000);
io = io.listen(server);

io.sockets.on('connection',function(socket){

console.log('new user');                        <-- this is printed in the log.

socket.on('GameType',function(msg){
    console.log(msg);                           <-- but this is not.
});
});



//var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes
app.get('/', routes.index);

When a new connection occurs it writes new user in the log.But when a call is made using emit from the client side it doesn't write any msg in the console.I've already checked the params at the client side and they are correct. the option.type at the client side will contain GameType.

Why it is not calling the event on the client side ?