﻿// JScript File

   $(window).bind('load', function() {
    		swfobject.embedSWF("timages/stopmo1.swf", "StopMo1", "336", "224", "9.0.0", "expressInstall.swf", null, { wmode: 'transparent' });
    		swfobject.embedSWF("timages/stopmo2.swf", "StopMo2", "336", "224", "9.0.0", "expressInstall.swf", null, { wmode: 'transparent' });
        $('.ui-image-matrix').each(function() {
          var visibletiles = 12;
          var tilesrunning = 0;
          var im = $(this);
          var toppadding = 13;
          
          im.css('overflow', 'hidden');
          
          var images = $('img', this);
          images.hide(); 
          
          var cellwidth = 112;  //images.width();
          var cellheight = 112; //images.height();
          var cellcolumns = 8; //Math.floor(im.width()/cellwidth);
          var cellrows = 3; //Math.floor(im.height()/cellheight);
          var numcells = cellcolumns * cellrows;
          
          var matrixstatus = [];
          for (var i = 0; i < numcells; i++) {
            matrixstatus[i] = {
              LUIteration : Math.random(),        //iteration when last used
              Position : i
            };
          }
          
          
          var imageindex = 0;
          var iteration = 0;
          
          //start anim callback
          function setupanim() {
            //initialize the visible image
            var img = $('<img src="" width="'+cellwidth+'" height="'+cellheight+'" />');
            img.appendTo(im);

            startanim(img);
          };

          function startanim(img) {
            img.attr('src', images.eq(imageindex++).attr('src'));
            if (imageindex==images.length) { imageindex=0; }
            img.css('position', 'absolute');
            
            matrixstatus.sort(function(a,b){
              if ((65536 - (a.LUIteration & 0xFFFF)) > (65536 - (b.LUIteration&0xFFFF))) {
                return -1;
              } else {
                return 1;
              }
            });
            
            var oldtiles = (numcells-tilesrunning-6); if (oldtiles <= 0) { oldtiles=1; }
            var LRUSlot = Math.floor(Math.random()*oldtiles); if (LRUSlot == oldtiles) { LRUSlot--; }
            
            var col = matrixstatus[LRUSlot].Position % cellcolumns;
            var row = Math.floor(matrixstatus[LRUSlot].Position / cellcolumns);

            var vcol, vrow;
            if ((col<3 && row<2)||(col>4 && row>0)) {
              matrixstatus.sort(function(a,b){
                if (a.Position < b.Position) {
                  return -1;
                } else {
                  return 1;
                }
              });
              if (col<3) {
                vcol=0; vrow=0
              } else {
                vcol=5; vrow=1;
              }
              iteration++;
              matrixstatus[vrow*cellcolumns+vcol].LUIteration=iteration+Math.random();
              matrixstatus[vrow*cellcolumns+vcol+1].LUIteration=iteration+Math.random();
              matrixstatus[vrow*cellcolumns+vcol+2].LUIteration=iteration+Math.random();
              matrixstatus[(vrow+1)*cellcolumns+vcol].LUIteration=iteration+Math.random();
              matrixstatus[(vrow+1)*cellcolumns+vcol+1].LUIteration=iteration+Math.random();
              matrixstatus[(vrow+1)*cellcolumns+vcol+2].LUIteration=iteration+Math.random();
            } else {
              matrixstatus[LRUSlot].LUIteration = ++iteration; 
            }
            img.css('left', col*cellwidth);
            img.css('top', row*cellheight+toppadding);
            img.css('opacity', 0.5); //0.5+(Math.random()/2));
            img.width(cellwidth);
            img.height(cellheight);

            img.animate({opacity: '1' }, 1000, function() {
              img.animate({opacity: '0'}, 1000, function() {
                startanim(img);
              });
            });
          }
          
          var starterinterval = window.setInterval(function() {
            ++tilesrunning;
            
            if (tilesrunning == visibletiles) { window.clearInterval(starterinterval); } 

            setupanim();
          }, 200);
        });
      });
