//starting click time in millis
int startTime;

//top and bottom of hourglass
int TP = 20;
int BT = TP+240;

//degree of angle spin for button box
float spin;

//set size seed timer 
void setup(){
  size(200,300);
  startTime = millis() ;//- (70*1000);
}

void loop(){
    //get difference in time from start in seconds
    int sec = (millis() - startTime ) / 1000;
    //next line for debugging end behavior
    //sec += 57;
     sec--;
     
     //usually grey, but we flash white 3 times after...
     if(sec < 60 - 1) {
       background(128);
        stroke(255);
     } else {
       if(sec < 64 && sec %2 == 1 ){
         background(255);
          stroke(128);
       } else {
       background(128);
        stroke(255);
       }
     }
      
     for(int i = 0; i < 60; i++){
     //for hourglass "bend in"
      int sideoffset = 3 * constrain((i/2) - 15,0,60);
      
      if(i > sec){ //draw at top -- grain not down yet
          int baseline = TP+((i/2) *4);         
         
           if(i % 2 == 0){
          line(50 + sideoffset,baseline,98,baseline); 
          line(50 + sideoffset,baseline+1,98,baseline+1); 
        } else {
          line(150  - sideoffset,baseline,102,baseline); 
          line(150  - sideoffset,baseline+1,102,baseline+1);
        }
        
      } else { //draw at bottom
          int baseline = BT-((i/2) *4);         
          
                if(i % 2 == 1){

          line(50 + sideoffset,baseline,98,baseline); 
          line(50 + sideoffset,baseline+1,98,baseline+1); 
        } else {
          line(150  - sideoffset,baseline,102,baseline); 
          line(150  - sideoffset,baseline+1,102,baseline+1);
        }
    
      }
    }
    //do wireframe button box
    noFill();
    translate(180,280);    
    rotateX(spin);
      rotateY(spin);
        rotateZ(spin);
    
    box(10);
    //spin box if time is up, just for fun...
     if(sec >= 60 - 1) {spin += .01;}
    
}


void mouseReleased(){
//fudge to see if mouse was clicked in lower corner (where button box is...)
 // if(mouseX > 165 && mouseY > 265){
  startTime = millis();
 // }
}