Reset the board automatically

Thank you, will try that

any thoughts on why this is necessary. The arduino script is very simple and I dont understand why it requires the reset to work

the script:

/*
isadora triggering arduino
 in isadora the key watches will sent 1-4 to the arduino, and the arduino will blink accordingly
 
 
 created by r. holsopple
 http://31down.org
 2009
 */


int ledPin = 12; //the LED on the arduino board
byte incoming_byte;  // raw user input  


void setup()
{
  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);  //set isadora serial out to this speed under communications, make sure serial port is enabled
  Serial.println("isadora control of arduino"); 
  Serial.println(" do it manually with the keyboard");   
  
  // blink twice on startup
   digitalWrite(ledPin, HIGH); // blink twice
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); 
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);


}

void loop()
{ 
  if (Serial.available() > 0) {  
    // read the incoming byte:  
    incoming_byte = Serial.read();  
    Serial.println(incoming_byte);

    switch (incoming_byte) {
    case 49://ascii 49 is the '1' key on the keyboard
      Serial.println(" received a '1'");   
      digitalWrite(ledPin, HIGH); // blink once
      delay(500); //pause for 100 milliseconds
      digitalWrite(ledPin, LOW);

      break;
      // break is optional
    case 50://ascii 50 is the '2' key on the keyboard 
      Serial.println(" received a '2'");   
      digitalWrite(ledPin, HIGH); // blink twice
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); 
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);


      break;
      //********for all dousers      
    case 51://ascii 51 is the '3' key on the keyboard
      Serial.println(" received a '3'");   
      digitalWrite(ledPin, HIGH); // blink three times
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); 
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); 
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);

      break;
      // break is optional
    case 52://ascii 52 is the '4' key on the keyboard
      Serial.println(" received a '4'");   
      digitalWrite(ledPin, HIGH); // blink four times
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); 
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); 
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, HIGH); \
       delay(500); //pause for 500 milliseconds
      digitalWrite(ledPin, LOW);
      break;





    default: 
      // if nothing else matches, do the default
      // default is optional
      Serial.println("not for arduino");



    }
  }


}

this seems to be what I am looking for

 void(* resetFunc) (void) = 0; //declare reset function @ address 0
...
resetFunc();  //call reset
...

how would I implement that in the above code?

alternatively the manufacturer recommends this:
http://support.atmel.no/bin/customer?=&action=viewKbEntry&id=21

both solutions are a bit above my head...

thank you