glMaterial & GL_LIGHT

Hello everyone,

I am trying to obtain lighting on some spheres like the one shown here using glMaterial and lighting functions:
[ATTACH=CONFIG]784[/ATTACH]

This is what I have (I am having trouble with the green and yellow spheres):
[ATTACH=CONFIG]785[/ATTACH]

Here is the code for the materials I am using (for green and yellow):

void draw_solid_sphere_green(void)
{
    // enable Light1 for this sphere
    glEnable(GL_LIGHT3);

    // create the matrix stack
    glPushMatrix();
    glTranslatef(-1.1, 0.0, 0.0);

    // create a material for this sphere
    GLfloat color[] = {0.0, 1.0, 0.0, 1.0};
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, color);

    GLfloat white[] = { 1.0f, 1.0f, 1.0f, 1.0f };
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white);
    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 80.0f);

    // draw a solid sphere
    glutSolidSphere(1.0f, 1000, 1000);

    // Remove matrix from stack
    glPopMatrix();

    // Disable the light
    glDisable(GL_LIGHT3);
}


void draw_solid_sphere_yellow(void)
{
    // enable Light1 for this sphere
    glEnable(GL_LIGHT4);

    // create the matrix stack
    glPushMatrix();
    glTranslatef(-3.4, 0.0, 0.0);

    // create a material for this sphere
    GLfloat color[] = {1.0, 1.0, 0.0, 1.0};
    glMaterialfv(GL_FRONT, GL_DIFFUSE, color);

    GLfloat ambient[] = {1.0, 1.0, 1.0, 1.0};
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient);

    GLfloat white[] = { 1.0f, 1.0f, 1.0f, 1.0f };
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white);
    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 80.0f);

    // draw a solid sphere
    glutSolidSphere(1.0f, 100, 100);

    // Remove matrix from stack
    glPopMatrix();

    // Disable the light
    glDisable(GL_LIGHT4);
}

and lastly the lighting code:

/**GL_LIGHT# FLOATS**/
    GLfloat light_ambient[] = {0.0, 0.0, 0.0, 1.0};
    GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
    GLfloat light_diffuse3[] = {0.3, 0.3, 0.3, 1.0};
    GLfloat light_position[] = {0.0, 2.0, -8.0, 0.0}; //relative
    GLfloat light_dir[] = {0.0, 0.0, 1.0, 1.0}; //relative
    GLfloat light_white[] = {1.0, 1.0, 1.0, 1.0};
    GLfloat light_position34[] = {0.0, 2.0, -2.0, 0.0}; //test
    GLfloat light_dir34[] = {0.0, -1.0, 1.0, 1.0}; //test

    /**GL_LIGHT1**/
    //glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
    glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT1, GL_POSITION, light_position);

    glLightfv(GL_LIGHT1, GL_SPECULAR, light_white);

    /**GL_LIGHT2**/
    glLightfv(GL_LIGHT2, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT2, GL_POSITION, light_position);

    /**GL_LIGHT3**/
    //glLightfv(GL_LIGHT3, GL_AMBIENT, light_ambient);
    glLightfv(GL_LIGHT3, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT3, GL_POSITION, light_position34);

    glLightfv(GL_LIGHT3, GL_SPECULAR, light_white);

    glLightfv(GL_LIGHT3, GL_SPOT_DIRECTION, light_dir34);
    glLightf(GL_LIGHT3, GL_SPOT_CUTOFF, 15.0f);
    glLightf(GL_LIGHT3, GL_SPOT_EXPONENT, 1.0f);

    /**GL_LIGHT4**/
    glLightfv(GL_LIGHT4, GL_AMBIENT, light_ambient);
    glLightfv(GL_LIGHT4, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT4, GL_POSITION, light_position34);

    glLightfv(GL_LIGHT4, GL_SPECULAR, light_white);

    glLightfv(GL_LIGHT4, GL_SPOT_DIRECTION, light_dir34);
    glLightf(GL_LIGHT4, GL_SPOT_CUTOFF, 15.0f);
    glLightf(GL_LIGHT4, GL_SPOT_EXPONENT, 30.0f);

Do you have any suggestions?

Thanks!