(function(){
  // if firefox 3.5+, hide content till load (or 3 seconds) to prevent FOUT
  var d = document, e = d.documentElement, s = d.createElement('style');
  if (e.style.MozTransform === ''){ // gecko 1.9.1 inference
    s.textContent = 'body{visibility:hidden}';
    e.firstChild.appendChild(s);
    function f(){ s.parentNode && s.parentNode.removeChild(s); }
    addEventListener('load',f,false);
    setTimeout(f,3000); 
  }
})();

(function($, window)
{
     window.makeSlideShow = function($slideShow)
     {
        var hoverNavi =  $slideShow.hasClass('no-hover') ? false : true;

        var tspeed = $slideShow.hasClass('t-slow') ? 5000 : 300;

        var tspeed = $slideShow.hasClass('t-fastest') ? 0 : 300;
        var tinterval = $slideShow.hasClass('t-fastest') ? 0.2 : 3;



        var hasPages = $slideShow.hasClass('no-navi') ? false : true;
        var slideShow = $slideShow.slideShow(
            {
                hoverNavigation: hoverNavi, // use mouse for navigation
                interval: tinterval,//false  // disable auto-slideshow
                slideSize : 
                {
                    width: $('.slides .slide', $slideShow).eq(0).width(),
                    height: $('.slides .slide', $slideShow).eq(0).outerHeight()
                },//'none' //set by css
                transition: 
                {
                    mode: 'fade',
                    speed: tspeed
                },
                pageClickTimeout: 3000
            }
        );
        if(hasPages)
        {
           var  $page = $(document.createElement('li')).addClass('page')
             .click(function()
            {
                // determine position in navigation
                var index = $(this).index();
        
                //stopAuto
                slideShow.stopAuto();
                //we need to set slideShow.options.interval to false
                //or the gotoSlide method uses slideShow.auto();
                if(slideShow.options.originalInterval === undefined)
                {
                    slideShow.options.originalInterval = slideShow.options.interval;
                }
                slideShow.options.interval = false;
            
                //if it was clicked before, clear the old timeout
                if( slideShow.pageClickTimeout )
                {
                    window.clearInterval(slideShow.pageClickTimeout);
                }
                //start auto play after 5 secconds
                slideShow.pageClickTimeout = window.setTimeout(function()
                {
                    slideShow.pageClickTimeout = false;
                    //reset
                    slideShow.options.interval = slideShow.options.originalInterval;
                    //will restart the slideshow because slideShow.gotoSlide uses slideShow.auto()
                    //and we have reset the interval value
                    slideShow.next();
                }, slideShow.options.pageClickTimeout);
                
                slideShow.gotoSlide(index);
            });
        }
        if( hoverNavi )
        {
        //when this happens we don't want the slideShow.pageClickTimeout callback to run
            $('.slides .slide',$slideShow).mouseenter(function() {
                if( slideShow.pageClickTimeout )
                {
                    window.clearInterval(slideShow.pageClickTimeout);
                    slideShow.pageClickTimeout = false;
                    slideShow.options.interval = slideShow.options.originalInterval;
                }
            });
        }
        else
        {
            $('.slides .slide', $slideShow).unbind('mouseenter');
        }
        if(hasPages)
        {
           var $navigation = $(document.createElement('ul')).addClass('navigation');
            for(var i = 0; i < $('.slides .slide', $slideShow).length; i++)
            {
                if(0 === i)
                {
                    $navigation.append
                    (
                        $page.clone(true).text('').addClass('selected')
                    );
                    continue;
                }
                $navigation.append
                (
                    $page.clone(true).text('')
                ); 
             }
             $slideShow.append($navigation);
        }
    }

})($,window)


$(function()
{   
    var $slideShow = $('.slideShow');
    for(var i in $slideShow)
    {
         makeSlideShow($slideShow.eq(i));
    }


    /* Menu stuff */
    var menuIn = function()
    {
        $('.level-2', this).fadeIn(20, function()
        {
            $(this).css({'display' : 'block'});
        });
    }
    var menuOut = function()
    {
        
        $('.level-2', this).fadeOut(200, function()
        {
            $(this).css({'display':'none'});
        });
    }
    var nothing = function(){}
    var hoverIntentConfig =
    {    
        sensitivity: 4, // number = sensitivity threshold (must be 1 or higher)    
        interval: 50, // number = milliseconds for onMouseOver polling interval    
        over: menuIn, // function = onMouseOver callback (REQUIRED)    
        timeout: 75, // number = milliseconds delay before onMouseOut    
        out: menuOut // function = onMouseOut callback (REQUIRED)    
    };
    var $level1Li = $('.menu .level-1 > li');
    /*
     * var $works = $('.menu .level-1 > .works')
     * $works.hoverIntent(hoverIntentConfig);
     * $level1Li.not($works).hover(menuIn, menuOut);
     */

     $level1Li.hoverIntent(hoverIntentConfig);
     $('.level-2', $level1Li).css({'display':'none'});


    /* inserting google analytics */
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    $.getScript(gaJsHost + 'google-analytics.com/ga.js', function()
    { 
       try
       {
           var pageTracker = _gat._getTracker("UA-2281275-4");
           pageTracker._trackPageview();
       }
        catch(err)
       {
       //   console.log('analytics did not work');
       };
    });
})

function fix_flash() {
    // loop through every embed tag on the site
    var embeds = document.getElementsByTagName('embed');
    for (i = 0; i < embeds.length; i++) {
        embed = embeds[i];
        var new_embed;
        // everything but Firefox & Konqueror
        if (embed.outerHTML) {
            var html = embed.outerHTML;
            // replace an existing wmode parameter
            if (html.match(/wmode\s*=\s*('|")[a-zA-Z]+('|")/i))
                new_embed = html.replace(/wmode\s*=\s*('|")window('|")/i, "wmode='transparent'");
            // add a new wmode parameter
            else
                new_embed = html.replace(/<embed\s/i, "<embed wmode='transparent' ");
            // replace the old embed object with the fixed version
            embed.insertAdjacentHTML('beforeBegin', new_embed);
            embed.parentNode.removeChild(embed);
        } else {
            // cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
            new_embed = embed.cloneNode(true);
            if (!new_embed.getAttribute('wmode') || new_embed.getAttribute('wmode').toLowerCase() == 'window')
                new_embed.setAttribute('wmode', 'transparent');
            embed.parentNode.replaceChild(new_embed, embed);
        }
    }
    // loop through every object tag on the site
    var objects = document.getElementsByTagName('object');
    for (i = 0; i < objects.length; i++) {
        object = objects[i];
        var new_object;
        // object is an IE specific tag so we can use outerHTML here
        if (object.outerHTML) {
            var html = object.outerHTML;
            // replace an existing wmode parameter
            if (html.match(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")[a-zA-Z]+('|")\s*\/?\>/i))
                new_object = html.replace(/<param\s+name\s*=\s*('|")wmode('|")\s+value\s*=\s*('|")window('|")\s*\/?\>/i, "<param name='wmode' value='transparent' />");
            // add a new wmode parameter
            else
                new_object = html.replace(/<\/object\>/i, "<param name='wmode' value='transparent' />\n</object>");
            // loop through each of the param tags
            var children = object.childNodes;
            for (j = 0; j < children.length; j++) {
                try {
                    if (children[j] != null) {
                        var theName = children[j].getAttribute('name');
                        if (theName != null && theName.match(/flashvars/i)) {
                            new_object = new_object.replace(/<param\s+name\s*=\s*('|")flashvars('|")\s+value\s*=\s*('|")[^'"]*('|")\s*\/?\>/i, "<param name='flashvars' value='" + children[j].getAttribute('value') + "' />");
                        }
                    }
                }
                catch (err) {
                }
            }
            // replace the old embed object with the fixed versiony
            object.insertAdjacentHTML('beforeBegin', new_object);
            object.parentNode.removeChild(object);
        }
    }
}

