
domutil.events["top_html"] = 
{
  preloadcount : 0,
  onload : function()
  {
    domutil.events["top_html"].onresize();
    return;
    // alert("#top_html:onload");
    function animecmd_nop(ip, wait)
    {
      // alert("animecmd_nop");
      var animecmd = domutil.animecmd;
      var next = ip + 1;
      
      if(!wait)
        wait = animecmd[ip].wait;
      
      domutil.eventTimeoutIDs[0] = window.setTimeout(
        function(){ animecmd[next].func(next); }, wait);
    }
    
    function animecmd_scroll(ip, interval, x, y, selector, count, count_max, index)
    {
      // alert("animecmd_scroll");
      var cmd = domutil.animecmd[ip];
      if(!interval)
      {
        interval = cmd.interval;
        x = cmd.x;
        y = cmd.y;
        selector = cmd.selector;
        count = 1;
        count_max = cmd.duration / cmd.interval;
        index = domutil.eventTimeoutIDs.length;
        addStyleSheetRule(selector, "background-position: 0px 0px");
        addStyleSheetRule(selector, "visibility: visible");
        animecmd_nop(ip);
      }
      
      domutil.eventTimeoutIDs[index] = window.setTimeout(
        function()
        {
          if(count >= count_max)
            domutil.eventTimeoutIDs[index] = null;
          else
          {
            addStyleSheetRule(selector, "background-position: "
              + (x * count) + "px "
              + (y * count) + "px"
              );
            animecmd_scroll(ip, interval, x, y, selector, count + 1, count_max, index);
          }
        }, interval
        );
    }
    
    function animecmd_destroy(ip)
    {
      // alert("animecmd_destroy");
      var cmd = domutil.animecmd[ip];
      var eventTimeoutIDs = domutil.eventTimeoutIDs;
      for(var i = 1, len = eventTimeoutIDs.length; i < len; i++)
        if(eventTimeoutIDs[i] != null)
        {
          domutil.eventTimeoutIDs[0] = window.setTimeout(
            function(){ animecmd_destroy(ip) }, cmd.interval);
          return;
        }
      
      delete domutil.eventTimeoutIDs;
      
      // Delete Preloaded Image Elements
      var p = document.getElementById("preloadimages");
      if(p)p.parentNode.removeChild(p);
    }
    
    function onLoadTryFireEvent()
    {
      this.onload = null;
      
      var cevent = domutil.events["top_html"];
      
      cevent.preloadcount--;
      if(cevent.preloadcount > 0 || (typeof domutil.animecmd == "undefined"))
        return;
      
      // Reloading Preloaded Background-Images
      for(var i = 0, len = domutil.animecmd.length; i < len; i++)
      {
        var cmd = domutil.animecmd[i];
        if(!cmd.selector)
          continue;
        addStyleSheetRule(cmd.selector, "background-image: url(" + cmd.cssSrc + ")");
      }
      
      domutil.animecmd[0].func(0);  // Begin Animation
    }
    
    function classNameToFadeSrc(className)
    {
      var src = className.replace(/[-_]/g, function($0)
      {
        var table = 
        {
          "-":"/",
          "_":"."
        };
        return table[$0];
      });
      return src.replace(/\.[a-z]+$/i, function($0){ return ".fade" + $0; });
    }
    
    // Reset Current Events
    if(typeof domutil.eventTimeoutIDs != "undefined")
      for(var i = 0, len = domutil.eventTimeoutIDs.length; i < len; i++)
        window.clearTimeout(domutil.eventTimeoutIDs[i]);
    domutil.eventTimeoutIDs = [];
    
    // Define Animation-Commands
    domutil.animecmd = 
    [
      { func:animecmd_nop, wait:2000 },
      { func:animecmd_scroll, wait:2500, duration:1500, interval:150, x:0, y:-42, selector:"img.images-missionlifethatyoudesire_png" },
      { func:animecmd_scroll, wait:320, duration:320, interval:40, x:0, y:-24, selector:"img.images-missionhealth_png" },
      { func:animecmd_scroll, wait:320, duration:320, interval:40, x:0, y:-24, selector:"img.images-missionexcellence_png" },
      { func:animecmd_scroll, wait:320, duration:320, interval:40, x:0, y:-24, selector:"img.images-missionpotential_png" },
      { func:animecmd_nop, wait:1040 },
      { func:animecmd_scroll, wait:200, duration:800, interval:100, x:0, y:-18, selector:"img.images-missionnlpdreamtour_png" },
      { func:animecmd_scroll, wait:200, duration:800, interval:100, x:0, y:-18, selector:"img.images-missionseminar_png" },
      { func:animecmd_scroll, wait:200, duration:800, interval:100, x:0, y:-18, selector:"img.images-missioncounseling_png" },
      { func:animecmd_scroll, wait:800, duration:800, interval:100, x:0, y:-18, selector:"img.images-missionlecture_png" },
      { func:animecmd_destroy, interval:100 },
      { ispreload:true, src:"images/titlebackground.jpeg" } // Background Image
    ];
    
    var p = document.getElementById("preloadimages");
    if(!p)
    {
      p = createHTMLElement("p");
      p.id = "preloadimages";
      getHTMLElementsByTagName(document, "body")[0].appendChild(p);
    }
    
    // Hidden Animation-Elements, Regist Event
    var imgs = [];
    for(var i = 0, len = domutil.animecmd.length; i < len; i++)
    {
      var cmd = domutil.animecmd[i];
      if(!cmd.selector)
      {
        if(cmd.ispreload)
        {
          // Create Preload Image Elements
          var img = createHTMLElement("img");
          img.isNotAlphaImage = true;
          img.preSrc = cmd.src;
          img.onload = onLoadTryFireEvent;
          imgs[ imgs.length ] = img;
        }
        continue;
      }
      
      // Abort Loading Background-Image, Invisible
      addStyleSheetRule(cmd.selector, "background-image: none");
      addStyleSheetRule(cmd.selector, "visibility: hidden");
      
      // Get tagName and className
      var cc = cmd.selector.lastIndexOf(".");
      if(cc < 0)
        continue;
      
      var sc = cmd.selector.lastIndexOf(" ");
      if(sc < 0)sc = 0;
      else sc++;
      
      var tagName   = sc < cc ? cmd.selector.substr(sc, cc - sc) : "*";
      var className = cmd.selector.substring(cc + 1);
      
      if(tagName != "img")
        continue;
      
      // Create Preload Background-Image Elements
      var img = createHTMLElement("img");
      img.isNotAlphaImage = true;
      img.preSrc = classNameToFadeSrc(className);
      img.onload = onLoadTryFireEvent;
      imgs[ imgs.length ] = img;
      
      cmd.cssSrc = "../" + img.preSrc;
    }
    
    domutil.events["top_html"].preloadcount = imgs.length;
    
    // Preloading Background-Images
    for(var i = 0, len = imgs.length; i < len; i++)
    {
      imgs[i].src = imgs[i].preSrc;
      p.appendChild(imgs[i]);
    }
  }, // onload
  onunload : function()
  {
    return;
    // Delete Properties and Elements
    if(typeof domutil.eventTimeoutIDs != "undefined")
    {
      // Clear Current Events
      for(var i = 0, len = domutil.eventTimeoutIDs.length; i < len; i++)
        window.clearTimeout(domutil.eventTimeoutIDs[i]);
      delete domutil.eventTimeoutIDs;
    }
    if(typeof domutil.animecmd != "undefined")
      delete domutil.animecmd;
    var p = document.getElementById("preloadimages");
    if(p)p.parentNode.removeChild(p);
  }, // onunload
  onresize : function()
  {
    if(isIEVersion(0,6))
      return;
    
    var ss = loadStyleSheet("styles/top.css");
    var mbnormal = getStyleSheetRule(".youtube .movie object"
      , "margin-bottom"
      , ss
      );
    var mbhover  = getStyleSheetRule(".youtube:hover .movie object"
      , "margin-bottom"
      , ss
      );
    if(!mbnormal || !mbhover)
      return;
    
    var scale = getUARenderingScale();
    var size, unit;
    mbnormal.match("^(-?[0-9]+)(\.[0-9]+)?([a-z]*)$");
    size = parseFloat(RegExp.$1 + RegExp.$2);
    unit = RegExp.$3;
    size = Math.round(size / (scale / 100) - 1);
    
    var psclass, ssnormal, sshover;
    if(isIEVersion(7,7))
    {
      psclass = "";
      ssnormal = ss;
      sshover  = loadStyleSheet("styles/top.introvideo.mouseover.css");
    }
    else
    {
      psclass = ":hover";
      ssnormal = sshover = ss;
    }
    
    addStyleSheetRule(".youtube .movie object"
      , "margin-bottom : " + size + unit + " !important"
      , ssnormal
      );
    addStyleSheetRule(".youtube" + psclass + " .movie object"
      , "margin-bottom : " + mbhover + " !important"
      , sshover
      );
  }, // onresize
  introytplayer : 
  {
    css : { playing : null },
    alias : { waiting : "playing" },
    onstatechange : function(newState)
    {
      var player = domutil.events["top_html"].introytplayer;
      var css   = player.css;
      var alias = player.alias;
      var table = [
        "load",    // -1 : unstarted (player first loaded)
        "finish",  //  0 : ended
        "playing", //  1 : playing
        "pause",   //  2 : pause
        "waiting", //  3 : buffering
        "",        //  4 : ?
        "ready"    //  5 : video cued (and ready to play)
      ];
      var state = table[newState + 1];
      
      if(alias[state])
        state = alias[state];
      
      for(var i in css)
      {
        if(!css[i])
          css[i] = loadStyleSheet("styles/top.introvideo." + i + ".css");
        
        if(css[i])
          css[i].disabled = (i != state);
      }
    } // onstatechange
  } // introytplayer
}; // domutil.events["top_html"]


