//Dynamic Slideshow

jQuery.fn.dynamicSlideshow = function(attr) {
 attr = attr || {};
 attr.duration = attr.duration || 3000;
 function initSlider(container, img) {
   var curr = 1;
   setInterval( function(){
     if (curr == img.length) {
       curr = 0;
     }
     var i = new Image();
     $(i).load(function(){
       $(container).append(this);
       $(container).find('img:first').css({'z-index': 1});
       $(this).css({opacity: 0.0, 'z-index': 2}).animate({opacity: 1.0}, 1000, function() {
           $(container).find('img:first').remove();
         })
     }).attr('src', img[curr++]).css({position:'absolute',top:0,left:0,'z-index':8});
   }, attr.duration );
 };

 $(this).each(function(){
   var img = [];
   $(this).find("a").each(function(){
     img.push($(this).attr("href"));   
   });
   var j = new Image();
   var container = this;
   $(this).empty();
   $(j).attr('src', img[0]).css({position:'absolute',top:0,left:0,'z-index':0}).load(function(){
     $(container).append(this);
     initSlider(container, img);
   });
 });
}


function smartColumns() { //Create a function that calculates the smart columns

        //Reset column size to a 100% once view port has been adjusted
  $("ul.column").css({ 'width' : "100%"});

  var colWrap = $("ul.column").width(); //Get the width of row
  var colNum = Math.floor(colWrap / 200); //Find how many columns of 200px can fit per row / then round it down to a whole number
  var colFixed = Math.floor(colWrap / colNum); //Get the width of the row and divide it by the number of columns it can fit / then round it down to a whole number. This value will be the exact width of the re-adjusted column

  $("ul.column").css({ 'width' : colWrap}); //Set exact width of row in pixels instead of using % - Prevents cross-browser bugs that appear in certain view port resolutions.
  $("ul.column li").css({ 'width' : colFixed}); //Set exact width of the re-adjusted column 

} 



$(window).resize(function () { //Each time the viewport is adjusted/resized, execute the function
  smartColumns();
});

function mainmenu(){
$(" #nav ul ").css({display: "none"}); // Opera Fix
$(" #nav li").hover(function(){
    $(this).find('ul:first').css({visibility: "visible",display: "none"}).show(100);
    },function(){
    $(this).find('ul:first').css({visibility: "hidden"});
    });
}
function sectionmenu(){
$("  ul.section ul ").css({display: "none"}); // Opera Fix
$(" ul.section li").hover(function(){
    $(this).find('ul:first').css({visibility: "visible",display: "none"}).show(100);
    },function(){
    $(this).find('ul:first').css({visibility: "hidden"});
    });
}

 
 
 $(document).ready(function(){          
  mainmenu();
  sectionmenu();
  smartColumns();
  
  //Execute the function when page loads
  
  
  // Add rounded corners
  // $('.rounded').corners("12px transparent");
  // $('ul#sportnav li a').corners("6px top transparent");
  // $('ul#sportnav li').corners("6px top transparent");

  
  //implement equal heights for all subcolumns
  $('.equalize').equalHeights();
  
});


(function ($) {
$.fn.vAlign = function() {
  return this.each(function(i){
  var h = $(this).height();
  var oh = $(this).outerHeight();
  var mt = (h + (oh - h)) / 2;  
  $(this).css("margin-top", "-" + mt + "px"); 
  $(this).css("top", "50%");
  $(this).css("position", "absolute");  
  }); 
};
})(jQuery);

(function ($) {
$.fn.hAlign = function() {
  return this.each(function(i){
  var w = $(this).width();
  var ow = $(this).outerWidth();  
  var ml = (w + (ow - w)) / 2;  
  $(this).css("margin-left", "-" + ml + "px");
  $(this).css("left", "50%");
  $(this).css("position", "absolute");
  });
};
})(jQuery);


/*-------------------------------------------------------------------- 
 * JQuery Plugin: "EqualHeights" & "EqualWidths"
 * by:  Scott Jehl, Todd Parker, Maggie Costello Wachs (http://www.filamentgroup.com)
 *
 * Copyright (c) 2007 Filament Group
 * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
 *
 * Description: Compares the heights or widths of the top-level children of a provided element 
    and sets their min-height to the tallest height (or width to widest width). Sets in em units 
    by default if pxToEm() method is available.
 * Dependencies: jQuery library, pxToEm method  (article: http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/)                
 * Usage Example: $(element).equalHeights();
                    Optional: to set min-height in px, pass a true argument: $(element).equalHeights(true);
 * Version: 2.0, 07.24.2008
 * Changelog:
 *  08.02.2007 initial Version 1.0
 *  07.24.2008 v 2.0 - added support for widths
--------------------------------------------------------------------*/

$.fn.equalHeights = function(px) {
  $(this).each(function(){
    var currentTallest = 0;
    $(this).children().children().each(function(i){
      if ($(this).height() > currentTallest) { currentTallest = $(this).height(); }
    });
    if (!px || !Number.prototype.pxToEm) currentTallest = currentTallest.pxToEm(); //use ems unless px is specified
    // for ie6, set height since min-height isn't supported
    if ($.browser.msie && $.browser.version == 6.0) { $(this).children().children().css({'height': currentTallest}); }
    $(this).children().children().css({'min-height': currentTallest}); 
  });
  return this;
};

// just in case you need it...
$.fn.equalWidths = function(px) {
  $(this).each(function(){
    var currentWidest = 0;
    $(this).children().children().each(function(i){
        if($(this).width() > currentWidest) { currentWidest = $(this).width(); }
    });
    if(!px || !Number.prototype.pxToEm) currentWidest = currentWidest.pxToEm(); //use ems unless px is specified
    // for ie6, set width since min-width isn't supported
    if ($.browser.msie && $.browser.version == 6.0) { $(this).children().children().css({'width': currentWidest}); }
    $(this).children().children().css({'min-width': currentWidest}); 
  });
  return this;
};

/*-------------------------------------------------------------------- 
 * javascript method: "pxToEm"
 * by:
   Scott Jehl (scott@filamentgroup.com) 
   Maggie Wachs (maggie@filamentgroup.com)
   http://www.filamentgroup.com
 *
 * Copyright (c) 2008 Filament Group
 * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
 *
 * Description: Extends the native Number and String objects with pxToEm method. pxToEm converts a pixel value to ems depending on inherited font size.  
 * Article: http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/
 * Demo: http://www.filamentgroup.com/examples/pxToEm/    
 *              
 * Options:                   
    scope: string or jQuery selector for font-size scoping
    reverse: Boolean, true reverses the conversion to em-px
 * Dependencies: jQuery library             
 * Usage Example: myPixelValue.pxToEm(); or myPixelValue.pxToEm({'scope':'#navigation', reverse: true});
 *
 * Version: 2.0, 08.01.2008 
 * Changelog:
 *    08.02.2007 initial Version 1.0
 *    08.01.2008 - fixed font-size calculation for IE
--------------------------------------------------------------------*/

Number.prototype.pxToEm = String.prototype.pxToEm = function(settings){
  //set defaults
  settings = jQuery.extend({
    scope: 'body',
    reverse: false
  }, settings);
  
  var pxVal = (this == '') ? 0 : parseFloat(this);
  var scopeVal;
  var getWindowWidth = function(){
    var de = document.documentElement;
    return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
  };  
  
  /* When a percentage-based font-size is set on the body, IE returns that percent of the window width as the font-size. 
    For example, if the body font-size is 62.5% and the window width is 1000px, IE will return 625px as the font-size.  
    When this happens, we calculate the correct body font-size (%) and multiply it by 16 (the standard browser font size) 
    to get an accurate em value. */
        
  if (settings.scope == 'body' && $.browser.msie && (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(1) > 0.0) {
    var calcFontSize = function(){    
      return (parseFloat($('body').css('font-size'))/getWindowWidth()).toFixed(3) * 16;
    };
    scopeVal = calcFontSize();
  }
  else { scopeVal = parseFloat(jQuery(settings.scope).css("font-size")); };
      
  var result = (settings.reverse == true) ? (pxVal * scopeVal).toFixed(2) + 'px' : (pxVal / scopeVal).toFixed(2) + 'em';
  return result;
};
