/* Copyright 2011 Unternehmen Online GmbH & Co. KG */
/* Author: Christian Drengenberg */

(function($) {
        
    $.fn.uoImageRotation = function(options) {
        
        var defaultOptions = { rotationSpeed : 5000, effectSpeed : 900,  progressClass : 'uo-rotation-progress',
            itemsContainerClass : 'uo-items', itemsClass: 'uo-rotation-item' };
        
        options = $.extend(defaultOptions, options);
        
        var $parent = $(this);
        var $progress;
        var progressLength = 0;
        
        if($parent.length > 1) {
            $parent.each(function() { $(this).uoImageRotation(options); })
        }
        else {
            $progress = $('.' + options.progressClass, $parent);
            progressLength = $progress.length;
            
            var $itemsContainer = $('.' + options.itemsContainerClass, $parent);
            var $items = $('.' + options.itemsClass, $parent);
            var interval;
            
            if(progressLength > 1)
            {
                interval = setInterval(__rotate, options.rotationSpeed);
                
                $itemsContainer.append($($items.get(0)));
                $items = $('.' + options.itemsClass, $parent);
                  
                $items.mouseenter(function() { clearInterval(interval); });
                $items.mouseleave(function() { interval = setInterval(__rotate, options.rotationSpeed / 2); });
            }
        }
        
        function __rotate() {
            var $cur = $($items.get(0));
            var $next = $cur.next();
                        
            $cur.hide(function() {
                var $curProg = $($progress.get(progressLength-1));
                
                $progress.parent().prepend($curProg);
                $progress = $('.' + options.progressClass, $parent);
                
                $itemsContainer.append($cur);
                $items = $('.' + options.itemsClass, $parent);
                $items.fadeIn(options.effectSpeed);
            });
        }
    }
    
})(jQuery);

(function ($) {

    $.fn.uoBildRotation = function (options) {

        var defaultOptions = { rotationSpeed: 5000, effectSpeed: 500, progressClass: 'uo-rotation-progress',
            itemsContainerClass: 'uo-items', itemsClass: 'uo-rotation-item', activeClass: 'on'
        };

        options = $.extend(defaultOptions, options);

        $('.' + options.itemsClass).hide();
        $('.' + options.itemsClass).first().show();

        var $parent = $(this);
        var $progress;
        var progressLength = 0;

        $progress = $('.' + options.progressClass, $parent);
        $progress.click(function () {
            clearInterval(interval);
            if ($(this).attr('class') != options.progressClass + ' illu ' + options.activeClass) {
                $progress.removeClass(options.activeClass);
                $(this).addClass(options.activeClass);
                var active = $('.' + options.activeClass + ' a', $parent).attr('rel');
                $('.' + options.itemsClass, $parent).fadeOut('slow');
                $('div[name=' + active + ']', $parent).fadeIn(options.effectSpeed);
            }
        });

        progressLength = $progress.length;

        var $itemsContainer = $('.' + options.itemsContainerClass, $parent);
        var $items = $('.' + options.itemsClass, $parent);
        var interval;

        $('.' + options.progressClass + ' a').each(function (i) {
            $(this).attr('rel', options.itemsClass + ++i);
        });

        $items.each(function (i) {
            $(this).attr('name', options.itemsClass + ++i);
        })

        if (progressLength > 1) {
            interval = setInterval(__rotate, options.rotationSpeed);

            $items.mouseenter(function () { clearInterval(interval); });
            $items.mouseleave(function () { clearInterval(interval); interval = setInterval(__rotate, options.rotationSpeed); });
        }
        

        function __rotate() {

            var active = $('.' + options.activeClass + ' a', $parent).attr('rel');
            var next = $('div[name=' + active + ']', $parent).next().attr('name');

            if (!next)
                next = $('.' + options.progressClass +' a').first().attr('rel');

            $('a[rel=' + active + ']').parent().removeClass(options.activeClass);
            $('a[rel=' + next + ']').parent().addClass(options.activeClass);
            $('.' + options.itemsClass, $parent).fadeOut('slow');
            $('div[name=' + next + ']', $parent).fadeIn(options.effectSpeed);

        }
    }

})(jQuery);

(function($) {
        
    $.fn.uoFoldTeaser = function(options) {
        
        var defaultOptions = { effectSpeed : 250,  collapsedItemClass : 'uo-fold-teaser-collapsed', visibleItemClass: 'uo-fold-teaser-visible',
            headItemClass : 'uo-fold-teaser-head', itemClass : 'uo-fold-teaser', activeClass : 'clicked'};
        
        options = $.extend(defaultOptions, options);
        
        var $parent = $(this);
        
        if($parent.length > 1) {
            $parent.each(function() { $(this).uoFoldTeaser(options); })
        }
        else {
           var $collapsedItem = $('.' + options.collapsedItemClass, $parent);
           var $visibleItem = $('.' + options.visibleItemClass, $parent);
           var $headItem = $('.' + options.headItemClass, $parent);
           
           //$visibleItem.hide();
           
           $headItem.click(function() {
                $(this).addClass(options.activeClass);
                
                $('.' + options.itemClass).each(function() {
                    var $activeItem = $('.' + options.activeClass, $(this));
                    
                    if($activeItem.length > 0)
                    {
                        $activeItem.removeClass(options.activeClass);
                    }
                    else
                    {
                        $('.' + options.visibleItemClass).not($visibleItem).slideUp(options.effectSpeed, function() {
                            $('.' + options.collapsedItemClass).not($collapsedItem).show();
                        });
                    }
                });
                
                $collapsedItem.toggle();
                $visibleItem.slideToggle(options.effectSpeed);
                //$headItem.click(function() { $visibleItem.slideUp(options.effectSpeed); $collapsedItem.show(options.effectSpeed); });
           });
        }
    }
    
})(jQuery);

$(document).ready(function() {
    var parent = $('.uo-fold-teaser')[0];
    var collapsedItem = $('.uo-fold-teaser-collapsed', parent);
    var visibleItem = $('.uo-fold-teaser-visible', parent);
    
    collapsedItem.toggle();
    visibleItem.toggle();
});

(function($) {
        
    $.fn.uoFlyoutNavigation = function(options) {
        
        var defaultOptions = { effectSpeed : 250,  level1Class : 'uo-navigation-01', level2Class: 'uo-navigation-02', level3Class: 'uo-navigation-03',
            itemOnClass : 'on', lockedClass : 'uo-locked', usePositioning : true };
        
        options = $.extend(defaultOptions, options);
                
        var $parent = $(this);
        var hideTimer;
        
        if($parent.length > 1) {
            $parent.each(function() { $(this).uoFoldTeaser(options); })
        }
        else {
           $level1Items = $('.' + options.level1Class, $parent).children();
           $level2Items = $('.' + options.level2Class, $parent);
           $level2Items.hide();
           
           var level1ItemsLength = $level1Items.length;
           var $firstItem = $level1Items.eq(0);
           
           var firstPosition = $firstItem.position();
           var firstSize = { width : $firstItem.width(), height : $firstItem.height() };
           var level2Pos = { left : firstPosition.left, top : firstSize.height };
           
           $parent.mouseleave(function() {
                $level1Items.filter('.' + options.lockedClass).addClass(options.itemOnClass);
           })
                      
           $(window).resize(function() {
                firstPosition = $firstItem.position();
                level2Pos = { left : firstPosition.left, top : firstSize.height };
            });
                      
           $level1Items.mouseenter(function() {
                $level1Items.removeClass(options.itemOnClass);
                $(this).addClass(options.itemOnClass);
                
                $level2Items.hide();
                $level2ItemsLocal = $(this).find('.' + options.level2Class);
                $level2ItemsLocal.css({ position : 'absolute', left : level2Pos.left, top : level2Pos.top + $(this).position().top, 'z-index' : 100000 });
                $level2ItemsLocal.show();
           });
           
           $level1Items.mouseleave(function() {
                $(this).removeClass(options.itemOnClass);
                $level2Items.hide();
           });
        }
    }
    
})(jQuery);

(function($) {
    
    $.fn.uoAnyBox = function(options) {
        
        var defaultOptions = { fadeBackground : true };
        
        options = $.extend(defaultOptions, options);
        
        var $parent = $(this);
        
        if($parent.length > 1) {
            $parent.each(function() { $(this).uoAnyBox(options); });
        }
        else {
            var relItemClass = $parent.attr('rel');
            var $relItem = $('.' + relItemClass).hide();
            var $bg = $('<div/>').hide();
            
            $relItem.click(function() { $relItem.slideUp(500, function() { $bg.fadeOut(500); }); });
            $parent.click(function() { return __show($relItem); });
            $(window).resize(function() { if($relItem.is(':visible')) __show($relItem); }).scroll(function() { if($relItem.is(':visible')) __show($relItem); });
        }
        
        function __show($item) {
            var itemSize = { width : $item.width(), height : $item.height() };
            var position = { left : ($(window).width() - itemSize.width) / 2, top : (($(window).height() - itemSize.height) / 2) + $(window).scrollTop() };
            var css = { position : 'absolute', left : position.left, top : position.top, 'z-index' : 10000 };
            
            $bg.css({ position: 'absolute', left : 0, top : 0, background : '#000', width : '100%', height : $(document).height(), filter : 'alpha(opacity=85)',
                    '-moz-opacity' : 0.85, opacity: 0.85 });
                    
            $item.css(css);           
            
            if(!$item.is(':visible'))
            {
                $bg.appendTo('body').fadeIn(500, function() {
                    $item.slideDown(500);
                });
            }
            
            return false;
        }
    }

})(jQuery);

(function ($) {

    $.fn.uoContentSwitch = function (options) {

        var defaultOptions = {
            navItem: 'super-teaser-rotation-nav a', contentItems: 'super-teaser-content-container', currentClass: 'super-current',
            switchSpeed: 3000, autoStart: false
        };
        
        options = $.extend(defaultOptions, options);
        
        var $parent = $(this);
    
        $navItems = $('.' + options.navItem, $parent);
        $contentItems = $('.' + options.contentItems, $parent);
        
        $navItems.first().addClass(options.currentClass);
        $contentItems.first().show();
    
        var meinTimer;

        if(options.autoStart)
            meinTimer = setInterval(__switch, options.switchSpeed);

        function __switch() {
                var active = $('.' + options.currentClass, $parent).attr('rel');
                var next = $('#' + active, $parent).next().attr('id');

                if (!next)
                    next = $navItems.first().attr('rel');

                $('a[rel=' + active + ']', $parent).removeClass(options.currentClass);
                $('a[rel=' + next + ']', $parent).addClass(options.currentClass);
                $('#' + active, $parent).hide();
                $('#' + next, $parent).show();                          
        }

        $navItems.mouseover(function () {
            if ($(this).attr('class') != options.currentClass) {
                $navItems.removeClass(options.currentClass);
                $(this).addClass(options.currentClass);
                $contentItems.hide();
                $('#' + $(this).attr('rel')).show();
            }
        });

        if(options.autoStart) {
            $parent.mouseenter(function () {
                clearInterval(meinTimer);            
            });
            
            $parent.mouseleave(function () {
                clearInterval(meinTimer);
                meinTimer = setInterval(__switch, options.switchSpeed);
            });
        }
    }

})(jQuery);

(function(jQuery) {
    
    jQuery.fn.uoSlideshow  = function(options) {
        
        var defaults = {
            startWidth : 640,
            startHeight : 480,
            endWidth : 0,
            endHeight : 0,
            border : 'solid 2px #aaa',
            enableZoom : true
        };    
        
        var options = $.extend(defaults, options);        
        var $parent = this;
        var $items = $parent.find('a');        
        var $prevItems = this.find('.uo-prev-images');
        var index = 0;
        
        var backImages = { off: 'fileadmin/templates/images/zurueck_aus.gif', on: 'fileadmin/templates/images/zurueck_an.gif' };
        var nextImages = { off: 'fileadmin/templates/images/vor_aus.gif', on: 'fileadmin/templates/images/vor_an.gif' };
                
        var $backButton = $('<div style="float: left; padding: 1px 3px 0 0;"><img src="'+ backImages.off +'" /></div>');
        var $nextButton = $('<div style="float: right; padding-top: 1px"><img src="'+ nextImages.off +'" /></div>');
                
        $backButton.mouseenter(function() { $(this).find('img').attr('src', backImages.on); });
        $nextButton.mouseenter(function() { $(this).find('img').attr('src', nextImages.on); });
        
        $backButton.mouseleave(function() { $(this).find('img').attr('src', backImages.off); });
        $nextButton.mouseleave(function() { $(this).find('img').attr('src', nextImages.off); });
        
        $backButton.click(function() {
            clearInterval(interval);  
            _getNext(250);
            interval = _startSlideshow(4000);
        });
        
        $nextButton.click(function() {
            clearInterval(interval);  
            _getPreviouse(250);
            interval = _startSlideshow(4000);
        });
        
        $prevItems.append($backButton);
        $prevItems.append($nextButton);
                
        $items.each(function() {
            $prevItems.append($('<img class="uo-prev-item" style="margin: 1px 1px 1px 0;" src="'+ $(this).attr('rel') +'" title="'+ (index++) +'" />'));
        });
        
        
        $prevItems.css({ width: options.startWidth });
        
        var $prevItems = $parent.find('.uo-prev-images img.uo-prev-item');
        var $firstItem = $items.filter(':first');
        var $startPosition = $firstItem.parent().position();
        var $lastItem = $firstItem;
        var $lastPrevItem = $prevItems.filter(':first');
                
        $items.hide();
        $firstItem.show();
              
        $prevItems.parent().css({ top : options.startHeight, cursor : 'pointer' });
        $items.css({ position : 'absolute' });
        
        $prevItems.click(function() {
            var $self = $(this);
            
            clearInterval(interval);
            
            $lastItem.fadeOut();
            $lastItem = $items.filter(':eq('+ $self.attr('title') +')');
            $lastItem.fadeIn();
            
            $prevItems.parent().append($prevItems.filter(':lt('+ ($self.index()-2) +')'));
            $prevItems = $parent.find('.uo-prev-images img.uo-prev-item');
           
            $lastPrevItem = $self;
            interval = _startSlideshow(4000);
        });
        
        if(options.enableZoom)
            $items.uoSimpleZoom(options);
        
        var interval = _startSlideshow(4000);
                
        function _startSlideshow(speed) {
            
            return setInterval(function() {
                _getNext(1500);
            }, speed);
        }
        
        function _getNext(fadeSpeed) {
            var $nextPrevItem = $lastPrevItem.next();
            var $nextItem = $lastItem.next('a');
            
            $lastPrevItem.fadeOut(fadeSpeed, function() {
               $prevItems.parent().append($(this).show()); 
            });
            
            
            $lastPrevItem = $nextPrevItem;
            
            $lastItem.fadeOut(fadeSpeed);
            
            if($nextItem.length)
                $lastItem = $nextItem.fadeIn(fadeSpeed);
            else                                                                            
                $lastItem = $firstItem.fadeIn(fadeSpeed);  
        }
        
        function _getPreviouse(fadeSpeed) {
            $prevItems = $parent.find('.uo-prev-images img.uo-prev-item');
            
            var $prevPrevItem = $prevItems.last();
            var $prevItem = $lastItem.prev('a');
            
            $prevItems.first().before($prevPrevItem);
            
            $lastPrevItem = $prevPrevItem;
            $lastItem.fadeOut(fadeSpeed);
            
            if($prevItem.length)
                $lastItem = $prevItem.fadeIn(fadeSpeed);
            else                                                                            
                $lastItem = $items.last().fadeIn(fadeSpeed);  
            
            $prevItems = $parent.find('.uo-prev-images img.uo-prev-item');
        }
    }
    
})(jQuery);

(function(jQuery) {
    
    jQuery.fn.uoSimpleZoom = function(options) {
        
        var defaults = {
            startWidth : 640,
            startHeight : 480,
            endWidth : 0,
            endHeight : 0,
            border : 'solid 2px #aaa',
            animationSpeed : 500
        };    
        
        var options = $.extend(defaults, options);
        var $window = $(window);
        var $document = $(document);
        var $body = $document.find('body');
        var $parent = this;
        
        var $loader = $('<img src="fileadmin/templates/images/ajax-loader.gif" />').hide();
                
        $body.append($loader);
                        
        window.uoSimpleZoomIsActive = false;
        
        var _getPrev = function($item) {
            
            var $prev = $item.prev();
                    
            if($prev.length == 0)
                $prev = $parent.eq($parent.length - 1);
            
            return $prev;
        }
        
        var _getNext = function($item) {
            
            var $next = $item.next();
                    
            if($next.length == 0)
                $next = $parent.eq(0);
            
            return $next;
        }
                
        this.click(function(e) {
            
            if(!window.uoSimpleZoomIsActive) {
                window.uoSimpleZoomIsActive = true;
                
                var $closeButton = $('<img src="fileadmin/templates/images/quad.png" style="cursor: pointer" />').css({ opacity : 0.5 });
                $closeButton.mouseover(function() { $(this).css({ opacity : 1 }); }).mouseleave(function() { $(this).css({ opacity : 0.5 }); });
                $body.append($closeButton);
                $closeButton.hide();
                
                var $clicker = $(this).parent();
                var $next = _getNext($(this));
                var $prev = _getPrev($(this));
                var startPosition = { top : $clicker.offset().top, left : $clicker.offset().left };
                var loaderPosition = { top : startPosition.top + $(this).height() / 2 - $loader.height() / 2, left : startPosition.left + $(this).width() / 2 - $loader.width() / 2 };
                
                var backImages = { off: 'fileadmin/templates/images/backwards.png', on: 'fileadmin/templates/images/backwards.hover.png' };
                var nextImages = { off: 'fileadmin/templates/images/forwards.png', on: 'fileadmin/templates/images/forwards.hover.png' };
        
                var $arrowBack = $('<img style="display: none; cursor: pointer">').attr('src', backImages.off);
                var $arrowNext = $('<img style="display: none; cursor: pointer">').attr('src', nextImages.off);
                                
                $arrowBack.mouseover(function() { $(this).attr('src', backImages.on); }).mouseout(function() { $(this).attr('src', backImages.off); });
                $arrowNext.mouseover(function() { $(this).attr('src', nextImages.on); }).mouseout(function() { $(this).attr('src', nextImages.off); });
                
                $loader.css({ position : 'absolute', 'z-index' : 11000, left : loaderPosition.left, top : loaderPosition.top });
                $loader.show();
                                                
                var $image = $('<img src="'+  $(this).attr('href') +'" />').hide().load(function() {
                    
                    var imageSize = { width : (options.endWidth ? options.endWidth : $image.width()), height : (options.endHeight ? options.endHeight : $image.height()) };
                    var endPosition = { left : ($window.width()-imageSize.width)/2 + $document.scrollLeft(), top : ($window.height()-imageSize.height)/2 + $document.scrollTop() };
                    var arrowBackPosition = { left : endPosition.left, top : endPosition.top + imageSize.height / 2 - $arrowBack.height() / 2 };
                    var arrowNextPosition = { left : endPosition.left + imageSize.width - $arrowNext.width(), top : endPosition.top + imageSize.height / 2 - $arrowBack.height() / 2 };
                    var closeButtonPosition = { top : endPosition.top + 10, left : endPosition.left + imageSize.width - $closeButton.width() - 10};
        
                    $closeButton.css({ position : 'absolute', 'z-index' : 11000, left : closeButtonPosition.left, top : closeButtonPosition.top });
                    $closeButton.show();
        
                    $image.css({ position : 'absolute', 'z-index' : 10000, left : startPosition.left, top : startPosition.top, width : options.startWidth, height : options.startHeight });            
                    $image.show().animate({ left: endPosition.left, top : endPosition.top, width : imageSize.width, height : imageSize.height }, options.animationSpeed, function() {
                        $arrowBack.css({ position : 'absolute', 'z-index' : 11000, left : arrowBackPosition.left, top : arrowBackPosition.top }).fadeIn();
                        $arrowNext.css({ position : 'absolute', 'z-index' : 11000, left : arrowNextPosition.left, top : arrowNextPosition.top }).fadeIn();
                        $loader.hide();
                    });
                });
                
                $closeButton.click(function() { $image.trigger('click'); });
                
                var _loadImageFromArrow = function(imageUrl) {
                    var loaderPosition = { left : $image.offset().left + $image.width() / 2 - $loader.width() / 2,
                        top : $image.offset().top + $image.height() / 2 - $loader.height() / 2 };
                    
                    $loader.css({ left : loaderPosition.left, top : loaderPosition.top });
                    $loader.show();
                    
                    $image.unbind('load');
                    
                    $image.load(function() { $loader.hide(); });
                    $image.attr('src', imageUrl);
                }
                
                $arrowBack.click(function() {
                    _loadImageFromArrow($prev.attr('href'));
                    $next = _getNext($prev);                
                    $prev = _getPrev($prev);    
                });
                
                $arrowNext.click(function() {
                    _loadImageFromArrow($next.attr('href'));                    
                    $prev = _getPrev($next);
                    $next = _getNext($next);
                });
                             
                $image.css({ border : options.border, cursor : 'pointer' });
                
                $body.append($image);
                $body.append($arrowBack);
                $body.append($arrowNext);
                                                                                         
                $image.click(function() {
                    $arrowBack.remove();
                    $arrowNext.remove();
                    $closeButton.hide();
                    
                    $(this).animate({ left: startPosition.left, top : startPosition.top, width : options.startWidth, height : options.startHeight }, options.animationSpeed, function(){
                        $(this).fadeOut(function() {
                            window.uoSimpleZoomIsActive = false;
                            $(this).remove();
                        });
                    });
                });
            }
            
            return false;
        });
    }
    
})(jQuery);



/***********************************************************************************************************************
DOCUMENT: includes/javascript.js
DEVELOPED BY: Ryan Stemkoski
COMPANY: Zipline Interactive
EMAIL: ryan@gozipline.com
PHONE: 509-321-2849
DATE: 3/26/2009
UPDATED: 3/25/2010
DESCRIPTION: This is the JavaScript required to create the accordion style menu.  Requires jQuery library
NOTE: Because of a bug in jQuery with IE8 we had to add an IE stylesheet hack to get the system to work in all browsers. I hate hacks but had no choice :(.
************************************************************************************************************************/
$(document).ready(function() {
	 
	//ACCORDION BUTTON ACTION (ON CLICK DO THE FOLLOWING)
	$('.accordionButton').click(function() {

		//REMOVE THE ON CLASS FROM ALL BUTTONS
		$('.accordionButton').removeClass('accordionButton-active');
		  
		//NO MATTER WHAT WE CLOSE ALL OPEN SLIDES
	 	$('.accordionContent').slideUp('normal');
   
		//IF THE NEXT SLIDE WASN'T OPEN THEN OPEN IT
		if($(this).next().is(':hidden') == true) {
			
			//ADD THE ON CLASS TO THE BUTTON
			$(this).addClass('accordionButton-active');
			  
			//OPEN THE SLIDE
			$(this).next().slideDown('normal');
		 } 
		  
	 });
	  
	
	/*** REMOVE IF MOUSEOVER IS NOT REQUIRED ***/
	
	//ADDS THE .OVER CLASS FROM THE STYLESHEET ON MOUSEOVER 
	$('.accordionButton').mouseover(function() {
		$(this).addClass('over');
		
	//ON MOUSEOUT REMOVE THE OVER CLASS
	}).mouseout(function() {
		$(this).removeClass('over');										
	});
	
	/*** END REMOVE IF MOUSEOVER IS NOT REQUIRED ***/
	
	
	/********************************************************************************************************************
	CLOSES ALL S ON PAGE LOAD
	********************************************************************************************************************/	
	$('.accordionContent').hide();

});

