var delay = 100; // Maximum delay for matrix animation between member photos
var minimumTime = 0; // Minimum time before animation starts

var timer = new Date();
var originalNumbers = new Array();
var randomNumbers = new Array();
var X = {
   addEvent: function(type,element,func,phase){
       if(document.all){
           element.attachEvent("on"+type, func);
       }else{
           var __phase = (phase===false) ? false : true;
           element.addEventListener(type,func,__phase);
       }
   },
   removeEvent: function(type,element,func,phase){
       if(document.all){
           element.detachEvent("on"+type, func);
       }else{
           var __phase = (phase===false) ? false : true;
           element.removeEventListener(type,func,__phase);
       }
   },
   source: function(object){ return (document.all) ? event.srcElement : object },
   stop: function(e){
       if(document.all){
           event.cancelBubble = true;
       }else{
           e.stopPropagation();
       }
   },
   stopDefault: function(e){
       if(document.all){
           event.returnValue = false;
       }else{
           e.preventDefault();
       }
   }
}
var matrix = {
   canvas: null,
   active: null,
   show: function(current){
      if(slideshow.active==null){
          this.hide();
          this.active = current.parentNode;
          this.active.style.zIndex = "1";
          this.active.firstChild.style.visibility = "visible";
      }
   },
   hide: function(){
       if(this.active!=null){
          this.active.firstChild.style.visibility = "hidden";
          this.active.style.zIndex = "";
          this.active = null;
       }
   }
};
var slideshow = {
   canvas: null,
   slides: [],
   active: null,
   deactive: null,
  
   show: function(current, e){
       matrix.hide();
       if(this.active==null){
           this.canvas.style.visibility = "visible";
       }else{
           slideshow.deactive = slideshow.active;
           slideshow.slides[slideshow.deactive].style.visibility = "hidden";
       }
       if(e) X.stop(e);
       X.addEvent("click", document, slideshow.hide, false);
       slideshow.active = current;
       slideshow.slides[slideshow.active].style.visibility = "visible";
   },
   hide: function(e){
       X.stopDefault(e);
       if(slideshow.active!=null){
           slideshow.canvas.style.visibility = "hidden";
           slideshow.slides[slideshow.active].style.visibility = "hidden";
           slideshow.active = null;
           X.removeEvent("click", document, slideshow.hide, false);
       }
   },
   catchEvent: function(e){
       X.stop(e);
   }
};


for(var i=0; i<sourceMatrix.length; i++) originalNumbers.push(i);
while(originalNumbers.length){
    var __tmpNum__ = Math.round(Math.random()*(originalNumbers.length-1))
    var __tmpArr__ = [];
    randomNumbers[randomNumbers.length] = originalNumbers[__tmpNum__];
    for(var i=0, x=0; i< originalNumbers.length; i++)
        if(i!=__tmpNum__) __tmpArr__[x++] = originalNumbers[i]
    originalNumbers = __tmpArr__;
    //randomNumbers.push(originalNumbers.splice(Math.round(Math.random()*(originalNumbers.length-1)),1));
}
//alert()

onload = function(){
   var timeSinceStart = new Date() - timer;
   if(timeSinceStart<minimumTime){
       setTimeout(start, minimumTime-timeSinceStart);
   }else{
       start();
   }
}

function start(){
  matrix.canvas = document.getElementById("matrix");
  slideshow.canvas = document.getElementById("slideshow");
  X.addEvent("click", slideshow.canvas, slideshow.catchEvent, false);
  
  for(var i=0; i<sourceMatrix.length; i++){
      var thumb = matrix.canvas.appendChild(document.createElement("DIV"));
      var zoom = matrix.canvas.appendChild(document.createElement("DIV"));
      slideshow.slides.push(slideshow.canvas.appendChild(document.createElement("DIV")));
      thumb.appendChild(zoom);
  }
  var imageMatrix = new Array();
  for(var i=0; i<sourceMatrix.length; i++){
      imageMatrix[i] = {thumb: document.createElement("img"), zoom: document.createElement("img")};
  }
  var i=0;
  function load(){
      var current = matrix.canvas.childNodes[randomNumbers[i]];
      var currentThumb = imageMatrix[randomNumbers[i]].thumb;
      var currentZoom = imageMatrix[randomNumbers[i]].zoom;
      currentThumb.src = baseURL+sourceMatrix[randomNumbers[i]].thumb;
      currentZoom.src = baseURL+sourceMatrix[randomNumbers[i]].zoom;
      currentThumb.id = randomNumbers[i];
      currentZoom.id = randomNumbers[i];
      X.addEvent("mouseover", currentThumb, function(){ matrix.show(X.source(this)) })
      X.addEvent("mouseout", currentZoom, function(){ matrix.hide() });
      X.addEvent("click", currentThumb, function(e){ slideshow.show(X.source(this).id,e) });
      X.addEvent("click", currentZoom, function(e){ slideshow.show(X.source(this).id,e) });
      current.firstChild.appendChild(imageMatrix[randomNumbers[i]].zoom);
      current.appendChild(imageMatrix[randomNumbers[i++]].thumb);
      
      function show(){
          if(current.lastChild.width>0&&current.firstChild.firstChild.width>0){
              current.style.zIndex = "1";
              current.firstChild.style.visibility = "visible";
              function pop(){
                  current.firstChild.style.visibility = "hidden";
                  current.style.visibility = "visible";
                  current.firstChild.style.borderWidth = "3px";
                  current.style.zIndex = "";
              }
              setTimeout(pop, 30);
              if(i<sourceMatrix.length)
                  setTimeout(load, Math.random()*delay);
          }else{
              delay -= 20;
              setTimeout(show, 20);
          }
      }
      show();
      if(i==sourceMatrix.length){
          for(i=0; i<sourceMatrix.length; i++){
              var title = document.createElement("H1");
              var titleLink = document.createElement("a");
              titleLink.appendChild(document.createTextNode(sourceMatrix[i].title));
              titleLink.href = sourceMatrix[i].uri;
              title.appendChild(titleLink);
              var shirt = document.createElement("span");
              shirt.appendChild(document.createTextNode("Squad Number: " + sourceMatrix[i].shirt));
              var link = document.createElement("a");
              link.appendChild(document.createTextNode("View Stats & Profile"));
              link.href = sourceMatrix[i].uri;
              var imageLink = document.createElement("a");
              imageLink.href = sourceMatrix[i].uri;
              slideshow.slides[i].appendChild(title);
              slideshow.slides[i].appendChild(shirt);
              slideshow.slides[i].appendChild(link);
          }
      }
  }
  load();
}