/****
 * (c) Digitale Offensive GmbH
 *
 */

/**** custom sort function ****/
(function($) {
  $.fn.sorted = function(customOptions) {
    var options = {
      reversed: false,
      by: function(a) { return a.text(); }
    };
    $.extend(options, customOptions);
    $data = $(this);
    arr = $data.get();
    arr.sort(function(a, b) {
      var valA = options.by($(a));
      var valB = options.by($(b));

      if (options.reversed) {
        return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;
      } else {
        return (valA < valB) ? -1 : (valA > valB) ? 1 : 0;
      }
    });
    return $(arr);
  };
})(jQuery);
$.fn.pngFix = function() {
  if (!$.browser.msie || $.browser.version >= 9) { return $(this); }

  return $(this).each(function() {
    var img = $(this),
        src = img.attr('src');
    var w = img.width();
    var h = img.height();

    img.attr('src', '/clear.gif').css('filter', "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='crop',src='/" + src + "')").css({width: w, height: h});
  });
};
$(document).ready(function(){

	$('.team img.portrait').wrap('<div class="wrap-img-portrait" />').pngFix();

	$('input.my-checkbox').checkbox({
		cls:'do-checkbox',
		empty: '/fileadmin/templates/empty.png'
	});

    $(window).resize(function() {
        var width = $(window).width();

        if (width < 540) {
          $('body').removeClass('size1 size2 size3').addClass('size1');
        } else if (width > 540 && width < 800) {
          $('body').removeClass('size1 size2 size3').addClass('size2');
        } else if (width > 800 && width < 1070) {
          $('body').removeClass('size1 size2 size3').addClass('size3');
        } else if (width > 1070) {
          $('body').removeClass('size1 size2 size3');
        }
    });
    $(window).resize();

    $('#footer .right #link_footer_empfehlen').colorbox({
        close: false,
        iframe: true,
        innerWidth: 800,
        innerHeight: 452
    });
    $('a.erstberatung').colorbox({
        close: false,
        iframe: true,
        innerWidth: 800,
        innerHeight: 725
    });

    $('#main .do-slider-cnt').css({
        position: 'absolute',
        right: '-2000px',
        top: 0
    });

    // SHOW "TOP LINK" ON PAGE END
    $(function () {
            var $win = $(window);
            $win.scroll(function () {
                if ($win.scrollTop() == 0) {

                }
                else if ($win.height() + $win.scrollTop() > $(document).height()-1) {
                    $(".footer_toplink").stop().animate({"height": "20"}, 200);
                }
                else if ($win.height() + $win.scrollTop() < $(document).height() - 80) {
                    $(".footer_toplink").stop().animate({"height": "0"}, 100);
                }
            });
    });

    $('#backToTopLink').click( function() {
        $('html, body').animate({scrollTop:0}, 500, 'easeInOutQuad');
    }).hover(function(){
        $(this).stop().fadeTo(300, 0);
    }, function(){
        $(this).stop().fadeTo(200, 1);
    }).clone().appendTo($('#backToTopLink').parent()).css({top: 4, position: 'absolute', zIndex: 1}).attr('src', 'fileadmin/templates/images/nach-oben-aktiv.png');


    if($('#main .slider img').size() <= 0)
    {
        $('#main .slider').css('background', 'none');
    }
    else
    {
        $("#main div.slider").css({height: $('#main .slider img:first-child').height()});
    }

    $('.projects img').each(function(){
        if(!this.complete)
        {
            $(this).parents('li').hide();
            $(this).bind('load', function(){
                $(this).parents('li').stop().fadeIn(800);
            });
        }
    });

    $('.news-list-container img').each(function(){
        if(!this.complete)
        {
            $(this).hide();
            $(this).bind('load', function(){
                $(this).stop().fadeIn(800);
            });
        }
    });

    $('.news-single-img img').each(function(){
        if(!this.complete)
        {
            $(this).hide();
            $(this).bind('load', function(){
                $(this).stop().fadeIn(800);
            });
        }
    });

    if($('.news-single-item').size() > 0)
    {
        var num = 0;
        function loadNews ()
        {
            $.ajax('/blog/', {
                dataType: 'html',
                data: {
                    type: 4700,
                    from: num
                },
                success: function(data){
                    if(data != "")
                    {
                        $('.news-single-item .right .items').append(data);
                        $('.news-single-item .right .items div:not(.loaded)').hide().fadeIn(400, function(){
                            $(this).addClass('loaded');
                        });

                        if((data.split('class="news-item"').length-1) == 5)
                            $('.news-single-item .loadmore').click(__loadmoreClick);
                        else
                        {
                            $('.news-single-item .loadmore').fadeOut(400, function(){
                                $('.news-single-item .loadmore').html('Keine weiteren Beiträge mehr ...').css('background', '#ffffff').fadeIn(200);
                            });
                        }
                        num += 5;
                    }
                    else
                    {
                        $('.news-single-item .loadmore').fadeOut(400, function(){
                            $('.news-single-item .loadmore').html('Keine weiteren Beiträge mehr ...').css('background', '#ffffff').fadeIn(200);
                        });
                    }
                },
                error: function(xhr, status){
                    console.log(status);
                }
            });
        }
        function __loadmoreClick()
        {
//            $(this).css('background', '#ffffff url(../images/loading.gif) no-repeat 50% 50%;')
            loadNews(num);
            $('.news-single-item .loadmore').unbind();
        }
        loadNews();
    }

    /**** init startseiten news teaser ****/
    if($('.start-twoCol .right > .mc-content > .csc-default').length)
    {
		var $news = $('.start-twoCol .right > .mc-content > .csc-default').addClass("js-ctrl");
		$news.slice(1).each(function(){
			$(this).addClass("inactive");
		});
		$news.find('h5').click(function(){
			var _this = this;
			if($(_this).parent().parent().hasClass("inactive"))
			{
				$('.start-twoCol .right > .mc-content > .csc-default:not(.inactive) .news-latest-container').fadeOut(100, function(){
					$('.start-twoCol .right > .mc-content > .csc-default:not(.inactive)').addClass('inactive');
					$(_this).parent().parent().removeClass('inactive');
					$(_this).parent().next('.news-latest-container').fadeIn();
				});
			}
		});
	}

    /**** init content slider ****/
    var _c = $("#main .do-container");
    if(_c.size() > 0)
    {
         var _left = _c.offset().left;
//         _c.css({
//             width: $(window).width(),
//             position: 'absolute',
//             left: '-'+_left+'px'
//         });

        //---| settings
        var _speed1 = 800;
        var _speed2 = 800;

        /**** animations ****/
        var animateShow = function(cnt)
        {
            $(cnt).css({
                right: '-2000px',
                opacity: 0
            }).stop().animate({
                right: 0
            }, {queue: false, duration: _speed1, complete: function(){
                if($(cnt).attr('id') == 'googlemap')
                    $(".do-slider-gradient-right").stop().fadeOut("fast");
            }}).animate({opacity: 1}, _speed2);

            $("img.icon", cnt).css('right', '724px').stop().animate({right: '55px'}, _speed1);
            $(".wrap-img-portrait", cnt).css('right', '2000px').css('opacity', 0).css('z-index', 10000).stop().animate({right: '0', opacity: 1}, _speed1);
            if($(cnt).attr('id') == 'googlemap')
            {
                $(".do-slider-gradient-left").stop().fadeOut("fast");
            }
        };
        var animateHide = function(cnt)
        {
            $(cnt).stop().animate({
                right: '2000px'
            }, {queue: false, duration: _speed2,complete: function(){
                if($(cnt).attr('id') == 'googlemap')
                    $(".do-slider-gradient-right").stop().fadeIn("fast");
            }}).animate({opacity: 0}, _speed1);
            $("img.icon", cnt).stop().animate({right: '1000px'}, _speed2);
			$(".wrap-img-portrait", cnt).css('z-index', 10).stop().animate({right: '-2000px', opacity: 1}, _speed1, function(){
				$(this).css('right', 0);
			});
            if($(cnt).attr('id') == 'googlemap')
            {
                $(".do-slider-gradient-left").stop().fadeIn("fast");
            }
        };
        var _animateShow = function(cnt)
        {
            $(cnt).css({
                right: '950px',
                opacity: 0
            }).stop().animate({
                right: 0
            }, {queue: false, duration: _speed1, complete: function(){
                if($(cnt).attr('id') == 'googlemap')
                    $(".do-slider-gradient-right").stop().fadeOut("fast");
            }}).animate({opacity: 1}, _speed2);

            $("img.icon", cnt).css('right', '724px').stop().animate({right: '55px'}, _speed1);
            $(".wrap-img-portrait", cnt).css('right', '-950px').css('opacity', 0).css('z-index', 10000).stop().animate({right: '0', opacity: 1}, _speed1);
            if($(cnt).attr('id') == 'googlemap')
            {
                $(".do-slider-gradient-left").stop().fadeOut("fast");
            }
        };
        var _animateHide = function(cnt)
        {
            $(cnt).stop().animate({
                right: '-2000px'
            }, {queue: false, duration: _speed2/4,complete: function(){
                if($(cnt).attr('id') == 'googlemap')
                    $(".do-slider-gradient-right").stop().fadeIn("fast");
            }}).animate({opacity: 0}, _speed1/4);
            $("img.icon", cnt).stop().animate({right: '1000px'}, _speed2/4);
			$(".wrap-img-portrait", cnt).css('z-index', 10).stop().animate({right: '2000px', opacity: 1}, _speed2/4, function(){
				$(this).css('right', 0);
			});
            if($(cnt).attr('id') == 'googlemap')
            {
                $(".do-slider-gradient-left").stop().fadeIn("fast");
            }
        };


        var _slider = $("#main .do-slider");
        if(_slider.size() > 0)
        {
            animateShow($('#'+$('li.active a', _slider).attr('href').split('#')[1])[0]);
        }


        $('li a', _slider).click(function(e){
            if(!$(this).parent('li').hasClass('active'))
            {
                var _cActive = $('li.active', _slider);
                var _nelem = $(this).parent('li');
                var _cI = $('li', _slider).index(_cActive);
                var _nI = $('li', _slider).index(_nelem);

                if((_nI-_cI) > 0)
                {
                    animateHide($('#'+$('li.active a', _slider).attr('href').split('#')[1])[0]);
                    $('li.active', _slider).removeClass('active');
                    animateShow($('#'+$(this).attr('href').split('#')[1])[0]);
                }
                else
                {
                    _animateHide($('#'+$('li.active a', _slider).attr('href').split('#')[1])[0]);
                    $('li.active', _slider).removeClass('active');
                    _animateShow($('#'+$(this).attr('href').split('#')[1])[0]);
                }
                $(this).parent('li').addClass('active');
            }
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
        });
    }

    /**** init projekt hover ****/
    if($("#main .projects").size()>0)
    {
        var $projects = $('#main .projects');
        var $normal = $projects.clone();
        var $data = $projects.clone();
        var $filteredData = $data.find('li');


        /**** add navigation ****/
        $("#main").prepend('<div class="projects-nav"><span class="button chrono active">chronologisch</span><span class="button alph">alphabetisch</span></div>');


        var _hover = function()
        {
			if($("#main .projects li a").children('.overlay').size())
				var $overlay = $("#main .projects li a");
			else
				var $overlay = $("#main .projects li a").append('<div class="overlay"></div><span class="goto">&raquo;</span>');
            $overlay.hover(function(){
                $(".overlay", this).stop().fadeOut(180);
                $(".goto", this).stop().fadeTo(100, 0.5);
            }, function(){
                $(".overlay", this).stop().fadeTo(100, 0.1);
                $(".goto", this).stop().fadeOut(180);
            }).mouseleave();
        }
        _hover();

        $(".projects-nav span.chrono").click(function(){

            /**** sort by id ****/
            if(!$(this).hasClass('active'))
            {
                $(".projects-nav span").removeClass('active');
                $(this).addClass('active');
                var $sortedData = $filteredData.sorted({
                    by: function(v) {
                        return parseInt($(v).attr('data-id'));
                    }
                });
                $projects.quicksand($sortedData, {
                    duration: 620,
                    useScaling: false
                }, _hover);
            }
        });

        $(".projects-nav span.alph").click(function(){
            $projects = $('#main .projects');
            $normal = $projects.clone();
            $data = $projects.clone();
            $filteredData = $data.find('li');
            /**** sort by name ****/
            if(!$(this).hasClass('active'))
            {
                $(".projects-nav span").removeClass('active');
                $(this).addClass('active');

                var $sortedData = $filteredData.sorted({
                    by: function(v) {
                        return $('a', v).text().toLowerCase();
                    }
                });

                $projects.quicksand($sortedData, {
                    duration: 620,
                    useScaling: false
                }, _hover);
            }
        });
    }

    /**** kundenmeinungen ****/
    if(($('#main .opinions').size() > 0) && ($('#main .opinions').parents('.mc-content').size() <= 0))
    {
        $("#main .coda-slider").codaSlider({
            dynamicTabs: false,
            crossLinking: false,
            firstPanelToLoad: 1,
            dynamicArrowLeftText: '<img src="./fileadmin/templates/images/arrow-big-left.png" alt="vorherige Meinung" />',
            dynamicArrowRightText: '<img src="./fileadmin/templates/images/arrow-big-right.png" alt="vorherige Meinung" />'
        });
        $("#main .opinions .coda-nav-left, #main .opinions .coda-nav-right").hover(function(){
            $(this).stop().fadeTo(200, 1);
        }, function(){
            $(this).stop().fadeTo(100, 0.5);
        });
        $('#main .opinions .trigger').click(function(){
            if($(this).hasClass('triggered'))
            {
                $(this).removeClass('triggered');
                $("#main .opinions").animate({height: '36px'}, 400, 'easeInOutQuad');
            }
            else
            {
                $(this).addClass('triggered')
                $("#main .opinions").animate({height: '220px'}, 400, 'easeInOutQuad');
            }
        });
    }

    if($('.landing-typo3 .opinions').size() > 0)
    {
        $("#main .coda-slider").codaSlider({
            dynamicArrows: false,
            crossLinking: false,
            firstPanelToLoad: 1,
            dynamicTabsPosition: 'bottom',
            autoHeight: false,
            autoSlide: false
        });
	}


    /**** init sliders ****/
    $('#main div.fullslider img').slice(0, 1).load(function(){
        $('#main div.fullslider img').attr('title', '');

        $('#main div.fullslider').nivoSlider({
            effect: 'fade',
            slices: 1,
            animSpeed: 500,
            pauseTime: 4000,
            startSlide: 0,
            directionNav: false, // Next & Prev navigation
            directionNavHide: true, // Only show on hover
            controlNav: true,
            controlNavThumbs: false, // Use thumbnails for Control Nav

            keyboardNav: true,
            pauseOnHover: true,
            manualAdvance: false,
            captionOpacity :0.8,
//             beforeChange: function()
//             {
//                 var fade = $("#main .slideinfo");
//                 if(fade.is(':animated'))
//                     fade.stop().fadeTo(400, 0);
//                 else
//                     fade.fadeOut(400);
//             },
//             afterChange: function()
//             {
//                 var slide = $("#main .fullslider").data('nivo:vars').currentSlide;
//                 $("#main .slideinfo").html($($('#main  div.fullslider-contents')[slide]).children('div.cnt').html());
//             },
             afterLoad: function()
             {
				 if($('#main div.fullslider img').size() <= 1)
				{
					$('#main div.fullslider .nivo-controlNav, #main div.fullslider .nivo-directionNav').hide();
				}
                $("#main .fullslider").hide().fadeIn(500);
                 //$("#main .slideinfo").html($($('#main  div.fullslider-contents')[0]).children('div.cnt').html());
             }
        });

//         $("#main .fullslider, #main .slideinfo").hover(function(e){
//             $('#main  div.fullslider').data('nivoslider').stop();
//             var fade = $("#main .slideinfo");
//             fade.html();
//             if(fade.is(':animated'))
//                 fade.stop().fadeTo(400, 0.8);
//             else
//                 fade.fadeIn(400);
//         }, function(e){
//             $('#main  div.fullslider').data('nivoslider').start();
//             var fade = $("#main .slideinfo");
//             if(fade.is(':animated'))
//                 fade.stop().fadeTo(400, 0);
//             else
//                 fade.fadeOut(400);
//         });
        /**** nav hover bug fix ****/
        $("#main .nivo-controlNav").hover(function(e){
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
        }, function(e){
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
        });
    });
    if($('#main div.fullslider img').size())
		window.setTimeout(function(){
			if($('#main div.fullslider img')[0].complete)
				$('#main div.fullslider img').slice(0, 1).load();
		}, 100);

    /****
     * project slider
     **/
    $('#main .slider img').slice(0, 1).load(function(){
        $('#main .slider img').attr('title', '');

        $('#main div.slider').nivoSlider({
            effect: 'fade',
            slices: 1,
            animSpeed: 200,
            pauseTime: 4000,
            startSlide: 0,
            directionNav: true, // Next & Prev navigation
            prevText: "zurück",
            nextText: "vor",
            directionNavHide: false, // Only show on hover
            controlNav: true,
            controlNavThumbs: false, // Use thumbnails for Control Nav

            keyboardNav: true,
            pauseOnHover: true,
            manualAdvance: true,
            captionOpacity: 0.8,
            afterLoad: function()
            {
				if($('#main div.slider img').size() <= 1)
				{
					$('#main div.slider .nivo-controlNav, #main div.slider .nivo-directionNav').hide();
				}
                $("#main .slider").hide().fadeIn(500);
                $("#main div.slider").css({height: $('#main .slider img:first-child').height()*($("#main div.slider").width()/725)});
            },
            afterChange: function(){
                var slide = $("#main div.slider").data('nivo:vars').currentSlide;
    //             slide++;
    //             slide = $('#main div.slider img').size() > slide ? slide : 0;
                $("#main div.slider").animate({height: $($('#main div.slider img')[slide]).height()*($("#main div.slider").width()/725)}, 400, 'easeInOutQuad');
            }
        });
    });
    if($('#main .slider img').size())
		window.setTimeout(function(){
			if($('#main .slider img')[0].complete)
				$('#main .slider img').slice(0, 1).load();
		}, 100);

    $('.csc-default.collapsible p').slice(1).add('.csc-default.collapsible .csc-textpic-below .csc-textpic-imagewrap').hide();
    $('.csc-default.collapsible p').first().css('margin-bottom', '0px').append(' <a href="#more" class="more">mehr...</a>');
    $('.csc-default.collapsible p').first().children('a.more').click(function(){
        if(!$(this).hasClass('active'))
            $(this).addClass('active').text('[weniger ...]');
        else
            $(this).text('mehr ...').removeClass('active');

        $('.csc-default.collapsible p').slice(1).add('.csc-default.collapsible .csc-textpic-below .csc-textpic-imagewrap').slideToggle(900, 'easeInOutExpo');

        return false;
    });

    $('form[name="tt_address_form"]').live('submit', function(){
		var $data = $(this).serialize();

		$(this).parents('#c1608').stop().fadeTo(200, 0).load($(this).attr('action')+' #c1608 > *', $data, function(){
           $('#c1608').stop().fadeTo(300, 1);
        });
		return false;
	});
});

/**** init contact ****/
$(window).load(function(){
    /**** init kontakt ****/
    if($("#kontakt, .weiterempfehlen").size() > 0)
    {

        /**** form error handler ****/
        $("#kontakt form .error, .weiterempfehlen .error").prop("onclick", null).click(function(){
            $(this).fadeOut("fast");
            $(this).siblings('input').focus();
        });
        $("form .row input, form .row textarea").focus(function(){
            $(this).siblings('.error').fadeOut("fast");
            $(this).siblings('input').focus();
        });

        var mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

        $("#kontakt form, .weiterempfehlen form").submit(function(){
            var submit = true;

            if($("#mailformname").val().trim() == "")
            {
                submit = false;
                $("#mailformname").next('.error').fadeIn("fast");
            }
            if(!mail.test($("#mailformemail").val()))
            {
                submit = false;
                $("#mailformemail").next('.error').fadeIn("fast");
            }
            if($("#mailformnachricht").val().trim() == "")
            {
                submit = false;
                $("#mailformnachricht").next('.error').fadeIn("fast");
            }
            if($("#mailformtelefon").val().trim() == "")
            {
                submit = false;
                $("#mailformtelefon").next('.error').fadeIn("fast");
            }
//             if($("#mailformspam").val().trim() == "")
//             {
//                 submit = false;
//                 $("#mailformspam").next('.error').fadeIn("fast");
//             }
            return submit;
        });

        var map;
        var digioff = new google.maps.LatLng(52.037798, 8.561894);

        var MY_MAPTYPE_ID = 'DigitaleOffensive';

        var stylez = [
           {
              featureType:"all",
              elementType:"all",
              stylers:[
                 {
                    visibility:"off"
                 }
              ]
           },
           {
              featureType:"water",
              elementType:"geometry",
              stylers:[
                 {
                    visibility:"on"
                 },
                 {
                    saturation:-100
                 },
                 {
                    lightness:-4
                 }
              ]
           },
           {
              featureType:"administrative.country",
              elementType:"geometry",
              stylers:[
                 {
                    visibility:"on"
                 },
                 {
                    saturation:-100
                 },
                 {
                    lightness:40
                 }
              ]
           },
           {
              featureType:"landscape.natural",
              elementType:"all",
              stylers:[
                 {
                    visibility:"on"
                 },
                 {
                    saturation:-100
                 },
                 {
                    lightness:100
                 }
              ]
           }
        ];

          var mapOptions = {
            zoom: 5,
            center: digioff,
            mapTypeControl: false,
            navigationControl: true,
            navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
            mapTypeControlOptions: {
               mapTypeIds: []
            },
            mapTypeId: MY_MAPTYPE_ID
          };

          map = new google.maps.Map(document.getElementById("map_canvas"),
              mapOptions);

          var styledMapOptions = {
            name: "Digitale Offensive GmbH"
          };

          var jayzMapType = new google.maps.StyledMapType(stylez, styledMapOptions);

          var marker = new google.maps.Marker({
              position: digioff,
              map: map,
              title: "Digitale Offensive GmbH",
              icon: "http://digitale-offensive.de.dog01.virtualhosts.de/fileadmin/templates/images/digitoff-flag.png",
              click: function(){
                alert('haha');
              }
          });
            google.maps.event.addListener(marker, 'click', function() {
                /*
                   var wOpen;
                   var sOptions;

                   sOptions = 'status=yes,menubar=yes,scrollbars=yes,resizable=yes,toolbar=yes';
                   sOptions = sOptions + ',width=' + (screen.availWidth - 10).toString();
                   sOptions = sOptions + ',height=' + (screen.availHeight - 122).toString();
                   sOptions = sOptions + ',screenX=0,screenY=0,left=0,top=0';*/
                   wOpen = window.open( 'http://maps.google.com/maps?q=digitale+offensive+GmbH&hl=en&sll=52.03776,8.56205&sspn=0.006441,0.021007&t=h&z=16', '_blank');
                   /*wOpen.location = aURL;
                   wOpen.focus();
                   wOpen.moveTo( 0, 0 );
                   wOpen.resizeTo( screen.availWidth, screen.availHeight );*/
            });

          map.mapTypes.set(MY_MAPTYPE_ID, jayzMapType);
    }
});

