
var me_idle = true;
var cv_elements = 0;
var cv_delay = false;
var photos_delay = false;
var contact_delay = false;
var projects_delay = false;

function startup() // {{{{
{
   moveOffset('me', 'base', 250, -38);
   //moveOffset('title', 'base', 10, -100);
   addEvent('me', "mouseover", me_mouseover);
   addEvent('me', "mousedown", me_click);

   //addEvent('cv', "mouseover", cv_mouseover);
   //addEvent('contact', "mouseover", contact_mouseover);
   //addEvent('photos', "mouseover", photos_mouseover);
   //addEvent('projects', "mouseover", projects_mouseover);

   setTimeout("me_wave()", 3000);

} // }}}

function me_mouseover(e) // {{{
{
   var x = getPosition('me')[0];
   var width = getSize('me')[0];

   var rulerx = getPosition('ruler')[0];
   var rulerwidth = getSize('ruler')[0];

   if(!e)
      e = window.event;
   
   if(e)
      if(e.pageX)
         mouseX = e.pageX;
      else if(e.clientX)
         mouseX = e.clientX
      else
         mouseX = null;
   
   if(mouseX)
      if(mouseX > (x + (width / 2)))
      {
         if(!animations['me'] || !animations['me'].started)
         {
            if(x - width > rulerx) // Don't walk off the edge!
            {
               var anime = new animation('me', 100, 5);
               anime.offsetX = 0-width * 2;
               anime.frames = ani_me_walkleft;
               anime.start();
            }
         }
      } else {
         if(!animations['me'] || !animations['me'].started)
         {
            if(x + width < rulerx + rulerwidth) // Don't walk off the edge!
            {
               var anime = new animation('me', 100, 5);
               anime.offsetX = width * 2;
               anime.frames = ani_me_walkright;
               anime.start();
            }
         }
   }
} // }}}

function me_click(e) // {{{
{
   if(me_idle)
   {
      me_say("Ouch!");
      
     switch(Math.floor(Math.random() * 3))
     {
         default:
            me_fall();
         break;
         case 1:
            me_flail();
         break;
         case 2:
            me_flail2();
         break;
     }
     me_idle = false;

  }
   
   return false; // Try not to select any text while the user is clicking.
} // }}}

function me_say(message) // {{{
{
   var speech = new animation("new:asciiart", 100, 30)
   var pos = getPosition('me');
   speech.x = pos[0];
   speech.y = pos[1] - 10;
   speech.offsetX = (Math.random() > 0.5 ? 100 : -100);
   speech.offsetY = -20;
   speech.fade = "out";
   speech.frames = new Array(message); 
   speech.start();
} // }}}

function me_wave() // {{{
{
   if(me_idle)
   {
      me_idle = false;
      var anime = new animation('me', 100, (ani_me_wave.length * 2) + 1);
      anime.frames = ani_me_wave;
      anime.callback = function () { me_idle = true;};
      anime.start();

      setTimeout("me_say(':P')", 2000);
      setTimeout("me_wave()", 10000);
   }
} // }}}

function me_fall() // {{{
{
   if(me_idle)
   {
      var anime = new animation('me', 100, ani_me_fall.length);
      anime.frames = ani_me_fall;
      anime.callback = function() { me_idle = true; }; //setTimeout('me_say("Don\'t do that!")', 200); };
      // "I don't click on you!"
      anime.start();
      me_idle = false;
   }
} // }}}

function me_flail() // {{{
{
   if(me_idle)
   {
      me_idle = false;
      var anime = new animation('me', 140, ani_me_flail1.length - 1);
      anime.frames = ani_me_flail1;
      anime.callback = function () { me_idle = true;};
      anime.start();
   }
} // }}}

function me_flail2() // {{{
{
   if(me_idle)
   {
      me_idle = false;
      var anime = new animation('me', 140, ani_me_flail2.length - 1);
      anime.frames = ani_me_flail2;
      anime.callback = function () { me_idle = true;};
      anime.start();
   }
} // }}}

function projects_mouseover(e) //{{{
{  
   if(!projects_delay)
   {
      projects_delay = true;
      setTimeout(function(){projects_delay = false;}, 300);

      var projects = new animation('new:asciiart', 100, 20);
      var pos = getPosition('projects');
      projects.x = pos[0] + (Math.random() * getSize('projects')[0]);
      projects.y = pos[1] - 30;
      projects.offsetX = (Math.random() * 60) - 60;
      projects.offsetY = -100;
      projects.obj.style.fontSize = "8px";
      projects.fade = "in-out";

      var types = new Array(
           "           \n ________|\\\n|________| |\n         |_|\n" // Hammer
//         , "  ___\n / _ \\\n| (_) |\n \\___/\n" // Nut
         , " _________\n/         \\====\n^^^^^^^^^^^\n" // Saw
         );


      projects.frames = new Array(types[parseInt(Math.random() * types.length)]);
      projects.start();
   }
} // }}}

function cv_mouseover(e) //{{{
{  
   if(!cv_delay)
   {
      cv_delay = true;
      setTimeout(function(){cv_delay = false;}, 300);

      var cv = new animation('new:asciiart', 100, 20);
      var pos = getPosition('cv');
      cv.x = pos[0] + (Math.random() * getSize('cv')[0]);
      cv.y = pos[1] - 30;
      cv.offsetX = (Math.random() * 60) - 30;
      cv.offsetY = -100;
      cv.fade = "in-out";
      cv.frames = ani_page;
      cv.start();
   }
} // }}}

function contact_mouseover(e) //{{{
{
   if(!contact_delay)
   {
      contact_delay = true;
      setTimeout(function(){contact_delay = false;}, 300);

      var contact = new animation('new:asciiart', 100, 20);
      var pos = getPosition('contact');
      contact.x = pos[0] + (Math.random() * getSize('contact')[0]);
      contact.y = pos[1] - 10;
      contact.offsetX = (Math.random() * 60) - 30;
      contact.offsetY = -100;
      contact.fade = "in-out";
      contact.frames = new Array((Math.random() > 0.5 ? "yak" : "blah"));
      contact.start();
   }
} // }}}

function photos_mouseover(e) //{{{
{
   if(!photos_delay)
   {
      photos_delay = true;
      setTimeout(function(){photos_delay = false;}, 300);

      var photos = new animation('new:asciiart', 100, 20);
      var pos = getPosition('photos');
      photos.obj.style.fontSize = "10px";
      photos.x = pos[0] + (Math.random() * getSize('photos')[0]) - 30;
      photos.y = pos[1] - 60;
      photos.offsetX = (Math.random() * 60) - 60;
      photos.offsetY = -140;
      photos.fade = "in-out";
      photos.frames = ani_camera;
      photos.start();
   }
} // }}}

// Animation frames for various elements {{{

var ani_camera = Array(
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "      '\n      |\n      |\n- ----+---- -\n    |_|_|\n      |\n      .",
                       "   .     .\n    \\   /\n     \\ /\n    __*,_\n    |/O\\|\n    /   \\\n   '     '",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|",
                       "\n\n\n    __=,_\n    |_O_|"
                       );

var ani_me_walkleft  = Array(
                             " o\n/|\\\n/ \\",
                             " o\n/|\\\n/| ",
                             " o\n/|\\\n |\\",
                             " o\n/|\\\n/| ",
                             " o\n/|\\\n/ \\"
                            );

var ani_me_walkright = Array(
                             " o\n/|\\\n/ \\",
                             " o\n/|\\\n |\\",
                             " o\n/|\\\n/| ",
                             " o\n/|\\\n |\\",
                             " o\n/|\\\n/ \\"
                            );

var ani_me_wave      = Array(
                             " o\n/|\\\n/ \\",
                             " o_\n/| \n/ \\",
                             " o/\n/| \n/ \\",
                             " o_\n/| \n/ \\"
                            );

var ani_me_flail1     = Array(
                             "_o_\n | \n/ \\",

                             "/o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o\\\n | \n/ \\",
                             "|o|\n | \n/ \\",

                             "/o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o\\\n | \n/ \\",
                             "|o|\n | \n/ \\",

                             "/o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o\\\n | \n/ \\",
                             "|o|\n | \n/ \\",

                             "/o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o\\\n | \n/ \\",
                             "|o|\n | \n/ \\",

                             " o\n/|\\\n/ \\"
                            );

var ani_me_flail2     = Array(
                             "_o_\n | \n/ \\",

                            "\\o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o/\n | \n/ \\",
                             "_o_\n | \n/ \\",

                            "\\o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o/\n | \n/ \\",
                             "_o_\n | \n/ \\",

                            "\\o/\n | \n/ \\",
                             "|o|\n | \n/ \\",
                            "\\o/\n | \n/ \\",
                             "_o_\n | \n/ \\",

                             "|o|\n | \n/ \\",

                            "\\o/\n | \n/ \\",
                             "_o_\n | \n/ \\",
                             " o\n/|\\\n/ \\"
                            );

var ani_me_fall      = Array(
                             " o\n/|\\\n/ \\",
                             " o/\n/|\n/ \\",
                             " |\no^\\\n |^",
                             "\\\no-\n  \\^",
                             "\no-\n/ \\^",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no__--",
                             "\n\no^/\\",
                             "\n o^\n// \\",
                             " o\n/|\\\n/ \\"
                            );

var ani_page         = Array(
                             " __\n/  |\n|__|"
                            );

// }}}

