var PhotoRotate =
{
    photos: [], //photo divs
    trigs: [], //link triggers to switch photos
    photoIdx: 0, // current photo showing
    anIdx: -1, // photo currently animating to
    a: null, //animation object
    st: null, // switch timer
    stl: 4000, //switch timer length
    init: function()
    {
        PhotoRotate.loadPhoto(0);
        PhotoRotate.photoIdx = PhotoRotate_StartIndex;
        PhotoRotate.photos[PhotoRotate_StartIndex].css('opacity',1.0);
        PhotoRotate.trigs[PhotoRotate_StartIndex].addClass("selected");
      
        PhotoRotate.st = setTimeout(function() { PhotoRotate.switchPhoto(); }, PhotoRotate.stl);
    },
    loadPhoto: function(i)
    {
        if ($("#photo" + i).length > 0) {
            PhotoRotate.photos[i] = $("#photo" + i);
            PhotoRotate.trigs[i] = $("#photoLink" + i);
           
      if (PhotoRotate.trigs[i].length > 0) {
                PhotoRotate.trigs[i].bind('click', i, PhotoRotate.fade);
        
        if(!PhotoRotate.trigs[i].hasClass("selected")) { // not currently selected photo
          PhotoRotate.photos[i].css('opacity', 0.0);
        } else {
          PhotoRotate.photoIdx = i;
        }
        PhotoRotate.loadPhoto(i + 1);  
      }
        }
    },
    fade: function(e, idx)
    {
        if (e) {
            idx = e.data;
        }
        if (idx == PhotoRotate.anIdx) { return; }
        if (PhotoRotate.a) { PhotoRotate.a.stop(true); }
        PhotoRotate.anIdx = idx;
        clearTimeout(PhotoRotate.st);
    PhotoRotate.trigs[PhotoRotate.photoIdx].removeClass('selected');
        PhotoRotate.trigs[idx].addClass("selected");
        PhotoRotate.photos[idx].show();
        PhotoRotate.photos[idx].animate(
        {
            'opacity': 1
        },
        {
            easing: "linear",
            duration: 1000,
            complete: function() { PhotoRotate._fadeComplete(idx); },
            step: function() { PhotoRotate._fadeTween(idx); }
        });
    return false;
    },
    _fadeTween: function(idx)
    {
        var o = 1.0 - parseFloat(PhotoRotate.photos[idx].css('opacity'));
        PhotoRotate.photos[PhotoRotate.photoIdx].css('opacity', o)
    },
    _fadeComplete: function(idx)
    {
        
        PhotoRotate.photos[PhotoRotate.photoIdx].hide()
        PhotoRotate.photoIdx = idx;
        PhotoRotate.st = setTimeout(function() { PhotoRotate.switchPhoto(); }, PhotoRotate.stl);
    },
    switchPhoto: function()
    {
        var to = PhotoRotate.photoIdx + 1;
        if (to > PhotoRotate.photos.length - 1) { to = 0; }
        PhotoRotate.fade(null, to);
    }
};
var FlyoutMenu =
{
    t: null,
    m: [], //  menus
    l: [], //  links
  h: [], //  menu heights
  i: null, // current menu index
    
    init: function()
    {
        //var l = $(".flyoutl");
        //l.mouseover(FlyoutMenu.showDelay);
    
        FlyoutMenu.l = $(".flyoutl");
        FlyoutMenu.m =  $(".flyout");
    FlyoutMenu.initMenu(0);

    },
  initMenu: function(i)
  {
     if (FlyoutMenu.l.eq(i).length > 0) {
       FlyoutMenu.l.eq(i).bind('mouseover', i, FlyoutMenu.showDelay);
      FlyoutMenu.h[i] = FlyoutMenu.m.eq(i).height();
         FlyoutMenu.initMenu(i + 1);
     }
  },
    showDelay: function(e, idx)
    {
        FlyoutMenu.hideAll();
    if (e) {
            idx = e.data;
        }
    FlyoutMenu.i =  idx;
    FlyoutMenu.t = setTimeout(FlyoutMenu.show, 250);
        FlyoutMenu.l.eq(idx).addClass("open");
    },
    show: function(e)
    {
    var idx = FlyoutMenu.i;
    //var xy = [e.pageX, e.pageY];
       // var r =
       // {
       //     left: FlyoutMenu.l.eq(idx).offset().left,
        //    right: FlyoutMenu.l.eq(idx).offset().left + FlyoutMenu.l.eq(idx).width(),
       //     top: FlyoutMenu.l.eq(idx).offset().top,
       //     bottom: FlyoutMenu.l.eq(idx).offset().top + FlyoutMenu.l.eq(idx).height()
       // };

        //if (xy[0] > r.left ||
        //    xy[0] < r.right ||
        //    xy[1] > r.top ||
        //    xy[1] < r.bottom) {
      var idx = FlyoutMenu.i;
      FlyoutMenu.m.eq(idx).show();
      var h = FlyoutMenu.h[idx];
      if (!h) {
        h = FlyoutMenu.m.eq(idx).height();
        //FlyoutMenu.m.css("top", FlyoutMenu.l.position().top + FlyoutMenu.l.height());
      }
      FlyoutMenu.m.eq(idx).css("height", "0px")
      FlyoutMenu.m.eq(idx).animate({ "height": h }, 150, 'swing', function()
      { $(document.body).mousemove(FlyoutMenu.hide); });
        
        //}
    
    
    },
  hideAll: function(e)
  {
    if (FlyoutMenu.t) { clearTimeout(FlyoutMenu.t); }
    $(document.body).unbind('mousemove', FlyoutMenu.hide);
    FlyoutMenu.m.animate({ "height": 0 }, 150, 'swing', FlyoutMenu.hideCompleteAll); 
  },
  hide: function(e)
    {
       if (FlyoutMenu.t) { clearTimeout(FlyoutMenu.t); }
       var idx = FlyoutMenu.i;
     var xy = [e.pageX, e.pageY];
        var r =
        {
            left: FlyoutMenu.m.eq(idx).offset().left,
            right: FlyoutMenu.m.eq(idx).offset().left + FlyoutMenu.m.eq(idx).width(),
            top: FlyoutMenu.l.eq(idx).offset().top,
            bottom: FlyoutMenu.m.eq(idx).offset().top + FlyoutMenu.m.eq(idx).height()
        };

        if (xy[0] < r.left ||
            xy[0] > r.right ||
            xy[1] < r.top ||
            xy[1] > r.bottom) {
            $(document.body).unbind('mousemove', FlyoutMenu.hide);
            FlyoutMenu.m.eq(idx).animate({ "height": 0 }, 150, 'swing', FlyoutMenu.hideComplete);
        }
    },
    hideComplete: function(e, d, l)
    {
        var idx = FlyoutMenu.i;
    FlyoutMenu.m.eq(idx).css("height", "0px")
        FlyoutMenu.l.eq(idx).removeClass("open");
        FlyoutMenu.m.eq(idx).hide();
    },
  hideCompleteAll: function(e, d, l)
  {
    FlyoutMenu.m.css("height", "0px")
        FlyoutMenu.l.removeClass("open");
        FlyoutMenu.m.hide();
  }
};

$(FlyoutMenu.init);
$(PhotoRotate.init);

