// JavaScript Document


const appHeight = () => {
    const doc = document.documentElement

    var vh = $(window).innerHeight();
    var vw = $(window).innerWidth();

    if(vw > 768 && vh < 900){
     vh = 900;
    }

    doc.style.setProperty('--app-height', vh+'px')
}
window.addEventListener('resize', appHeight);
appHeight();


var infiniteNR = 0;
function extOnLoad(){
    
    
    if($('#agency_mode').length > 0){
		var homeClass = $('#agency_mode').attr("class");
		$('#theBody').addClass(homeClass);
		if(homeClass == 'extendedmenu'){
            hihiMenuQuick();
            menuState = 1;
            menuToggle.play();
		}
	}
    
	if($('#models_container').length > 0){
		initModelList();
	}
	if($('#detail-model').length > 0){
		initModelDetail();
	}
	if($('.page-block.quote').length > 0){
        scrollInAnimation('.page-block.quote .link-image','');
	}
	if($('#team').length > 0){
        scrollInAnimation('.block.team','');
	}
	if($('#news-full').length > 0){
        
        var $grid = $('#infiniteNews').masonry({
            itemSelector: '.block',
            columnWidth: '.grid-sizer',
            percentPosition: true,
            transitionDuration: 0/*,
            horizontalOrder: true*/
        });
        
        
        scrollInAnimation('#blog-full .block','');
        
        $('#infiniteNews').infiniteScroll({
          path: '.pagination__next',
          append: '.block',
          history: false,
        });
        
        buildHoverVideos();
        
        
        
        $('#infiniteNews .block').addClass('loaded');
        
        $('#infiniteNews').on( 'append.infiniteScroll', function( event, response, path, items ) {
            
            $grid.append( items )
            .masonry( 'appended', items );
            
            $grid.imagesLoaded().progress( function() {
                $grid.masonry('layout');
                $('#infiniteNews .block').addClass('loaded');
            });
            
            //console.log( 'Loaded: ' + event );
            //console.log( 'Loaded: ' + response );
            //console.log( 'Loaded: ' + path );
            infiniteNR++;
            //console.log( '.blocksIn'+infiniteNR+' .block-image');
            //scrollInAnimation('.blocksIn'+infiniteNR+'.block','');
            buildHoverVideos();
            

        });/**/

	}
    
    buildPlayers('');
    
    page.base('');
	page('/:b/deck/:c/:d/:e/', initDeck);
	page('/news/:c/:d/:e/', initNews);
	page('/:c/:b/name/:n/', initNameSearch);
	page('/:b/name/:n/', initNameSearch);
	page('/:b/name/:n/', initNameSearch);
	page();
    
    
    document.onkeydown = function(e) {
    switch(e.which) {
        case 40: // down
        case 37: // left
            if(lightBox == 'on'){
                $("#lightboxCarousel").carousel('prev');
            }else if(SlideShowPopupOpen != ''){
                $(SlideShowPopupOpen).carousel('prev');
            }
        break;
            
        case 38: // up
        case 39: // right
            if(lightBox == 'on'){
                $("#lightboxCarousel").carousel('next');
            }else if(SlideShowPopupOpen != ''){
                $(SlideShowPopupOpen).carousel('next');
            }
        break;
            
        case 27: // esc
            console.log(1);
            if(lightBox == 'on'){
                closeLightBoxModal();
            }
        break;
            
        default: return; // exit this handler for other keys
    }
    e.preventDefault(); // prevent the default action (scroll / move caret)
    };
    
}


var currrrr;
                 

var letterDragger;
function initModelList(){
    
        
    if($('#models_container').length > 0){

        let letterBlocks = gsap.utils.toArray(".letterblock"), currentSection = letterBlocks[0];

        letterBlocks.forEach((letterBlock,index) => {
            let tl = gsap.timeline({
            // yes, we can add it to an entire timeline!
            scrollTrigger: {
              trigger: letterBlock,
                 onEnter: () => setActiveLetter(letterBlock.id,index) ,
                 onEnterBack: () => setActiveLetter(letterBlock.id,index) ,
                 onLeaveBack: () => setActiveLetter(letterBlocks[index-1].id,index) ,
              start: "top top+=200"
            }
          });
        });

        scrollInAnimationSubtle('#models_container .block.models','');

    }
}

function scrollInAnimationSubtle(target,scroller){
    
    if(scroller == ''){
        scroller = '#theBody';
    }
     
    var imageitems = gsap.utils.toArray(target);

    imageitems.forEach((imageitem) => {

        gsap.from(imageitem, { autoAlpha: 0.5,
        scrollTrigger: {
            scroller:scroller,
            trigger:imageitem,
            start: 'top bottom-=150px',
            onEnter() {
                gsap.fromTo(imageitem, {opacity: 0.5, top: 15}, {duration: 0.6, opacity: 1, top: 0});
            },
            onEnterBack() {
                //gsap.fromTo(imageitem, {opacity: 0, top: 90}, {duration: 0.6, opacity: 1, top: 0});
            },
            onLeave() {
                //gsap.fromTo(imageitem, {opacity: 1, top: 0}, {duration: 0.6, opacity: 0, top: 90});
            },
            onLeaveBack() {
                gsap.fromTo(imageitem, {opacity: 1, top: 0}, {duration: 0.6, opacity: 0.5, top: 15});
            }
        }
        })

    });
    
}



function scrollInAnimation(target,scroller){
    
    if(scroller == ''){
        scroller = '#theBody';
    }
     
    var imageitems = gsap.utils.toArray(target);

    imageitems.forEach((imageitem) => {

        gsap.from(imageitem, { autoAlpha: 0,
        scrollTrigger: {
            scroller:scroller,
            trigger:imageitem,
            start: 'top bottom-=150px',
            onEnter() {
                gsap.fromTo(imageitem, {opacity: 0, top: 90}, {duration: 0.6, opacity: 1, top: 0});
            },
            onEnterBack() {
                //gsap.fromTo(imageitem, {opacity: 0, top: 90}, {duration: 0.6, opacity: 1, top: 0});
            },
            onLeave() {
                //gsap.fromTo(imageitem, {opacity: 1, top: 0}, {duration: 0.6, opacity: 0, top: 90});
            },
            onLeaveBack() {
                gsap.fromTo(imageitem, {opacity: 1, top: 0}, {duration: 0.6, opacity: 0, top: 90});
            }
        }
        })

    });
    
}
var outOfViewMate;


function setViewStatus(target,status,direction){
    if( status ){
        $(target).addClass('viewMe')                
    }else{
        if(direction == 1){
            outOfViewMate.set($(target + " .gallery-ttl"), { top:0, opacity:1})
            .to($(target + " .gallery-ttl"), 0.3, {opacity:0, top:-60,ease:Linear.easeOut},0.3)
            outOfViewMate.play();
        }else{
            $(target).removeClass('viewMe') 
        }
    }
   
    /*const state = Flip.getState(target + " .gallery-ttl");
    console.log(state);
    
    if( status ){
        $(target + " .gallery-ttl").classList.toggle("full-screen");
    }else{
        $(target + " .gallery-ttl").classList.toggle("full-screen");
    }
    
        Flip.to(state, {
          duration: 1,
          ease: "power1.inOut"
        });*/
}


function setDetailHeaderStatus(target,status,direction){
    console.log(target + ' : ' + status);
    console.log(target + ' : ' + direction);
    
    if( status ){
        console.log('1x heen');
        $(target).addClass('fixMe');
        $('#modelhashnav').addClass('fixMe'); 
        $('#detail-model').addClass('fixMe');               
    }else{
        if(direction == -1){
            console.log('1x terug'); 
            $(target).removeClass('fixMe');
            $('#modelhashnav').removeClass('fixMe'); 
            $('#detail-model').removeClass('fixMe');    
        }
    }
}

function resetFolioHeader(target){
    $(target).removeClass('viewMe') 
    $(target + " .gallery-ttl").css('top',0);
    $(target + " .gallery-ttl").css('opacity',1);
}
var headerIsFixed       = false;
var headerIsFixedFolio  = false;
function setViewStatusPortfolio(target, status,direction){
    if(status == true && direction == 1 && headerIsFixedFolio == false){
        $(target + " .gallery-ttl").css('top',0);
        $(target + " .gallery-ttl").css('opacity',1);
        headerIsFixedFolio  = true;
        //
        $(target).addClass('viewMe')
        if(!headerIsFixed && target == '#portfolio'){
            headerIsFixed = true;
            console.log('fix mainfolio header');
            $('#header').addClass('fixMe');
            $('#modelhashnav').addClass('fixMe'); 
            $('#detail-model').addClass('fixMe');   
        }
    }else if(status == false && direction == -1 && headerIsFixedFolio == true){
        headerIsFixedFolio = false;
        //console.log('unfix folio header without ani');
        $(target).removeClass('viewMe') 
        if(headerIsFixed && target == '#portfolio'){
            headerIsFixed = false;
            console.log('unfix mainfolio header');
            $('header').removeClass('fixMe');
            $('#modelhashnav').removeClass('fixMe'); 
            $('#detail-model').removeClass('fixMe');  
        }
    }else if(status == false && direction == 1 && headerIsFixedFolio == true){
        headerIsFixedFolio = false;
        //console.log('unfix folio header with ani');
        outOfViewMate = gsap.timeline({paused:true,onComplete: resetFolioHeader,onCompleteParams: [target]});
        outOfViewMate.set($(target + " .gallery-ttl"), { top:0, opacity:1})
        .to($(target + " .gallery-ttl"),{opacity:0, top:-60,ease:Linear.easeOut, duration: 0.2})
        outOfViewMate.play();
    }
}
function setViewStatusHeader(target, status,direction){
    if(status == true){
        $(target).addClass('viewMe')
    }else if(status == false){
        $(target).removeClass('viewMe') 
    }
}

function scrollAniDetailModel(){
    
    ScrollTrigger.create({
      trigger: "#modelheader",
      start: "top top",
      end: "bottom top",
      onToggle: (self) => setViewStatusHeader("#modelheader",self.isActive, self.direction )
    });
    ScrollTrigger.create({
      trigger: "#portfolio",
      start: "top top",
      end: "bottom top",
      onToggle: (self) => setViewStatusPortfolio("#portfolio",self.isActive, self.direction ),
      onUpdate: (self) => {
        /*console.log(
          "progress:",
          self.progress.toFixed(3),
          "direction:",
          self.direction,
          "velocity",
          self.getVelocity()
        );*/
      },
    });
    ScrollTrigger.create({
      trigger: "#pola",
      start: "top top",
      end: "bottom top",
      onToggle: (self) => setViewStatusPortfolio("#pola",self.isActive, self.direction )
    });
    ScrollTrigger.create({
      trigger: "#video",
      start: "top top",
      end: "bottom top",
      onToggle: (self) => setViewStatusPortfolio("#video",self.isActive, self.direction )
    });
    /**/
    /*ScrollTrigger.create({
      trigger: "#mmmmmmmodelheader",
      start: "bottom top",
      onToggle: (self) => setDetailHeaderStatus("#modelheader", self.isActive, self.direction )
    });*/

    
    
    
    
    /*var target = '.page-block.gallery, .detail-specs, #modelheader'
    var scroller = '#theBody';
     
    var imageitems = gsap.utils.toArray(target);

    imageitems.forEach((imageitem) => {

        gsap.from(imageitem, {
        scrollTrigger: {
            

            scroller:scroller,
            trigger:imageitem,
            start: 'top bottom-=150px',
            onEnter() {
                imageitem.classList.add('showMe');
            },
            onLeaveBack() {
                imageitem.classList.remove('showMe');
            }
        }
        })

    });*/
    /*trigger:imageitem,
            start: 'top bottom',
            scrub: true,
            end: '-=300px'*/
}

function initHoverCarousel(target){
	
	$(target). swipe({ swipe: function(event, direction, distance, duration, fingerCount, fingerData) {
        if (direction == 'left') $(this).carousel('next');
        if (direction == 'right') $(this).carousel('prev');
    }});
   /* $(target).on('slid.bs.carousel', function() {
        currentIndex = $( this ).find('div.active').index() + 1;
        $( this ).find('.carouselCurrent').html(''+currentIndex+'');
    });*/
    
    $(target).mouseleave(function(e){
        // $(target).hide();
    });
    $(target).mousemove(function(e){
        var offset = $(target).offset();
        var relativeWidth = ($(target).width());
        var relativeXPosition = (e.pageX - offset.left);
        //console.log(relativeWidth);
        //console.log(relativeXPosition);
        
        var perc = Math.round(relativeXPosition / relativeWidth * 100);
        if(perc < 33){
            $(target).carousel(0);
        }else if(perc < 66){
            $(target).carousel(1);
        }else{
            $(target).carousel(2);
        }
        
        
       /* if(e.clientY < 50){
            $( this ).find('.carousel-control-prev').addClass('hide');
            $( this ).find('.carousel-control-next').addClass('hide');
        }else{
            //console.log(this.offsetLeft);
            //console.log(this.offsetLeft);
            //console.log("<p><strong>X-Position: </strong>"+relativeXPosition+" | <strong>Y-Position: </strong>"+relativeYPosition+"</p>");

            if(e.clientX > $( window ).width() / 2){
            $( this ).find('.carousel-control-prev').addClass('hide');
            $( this ).find('.carousel-control-next').removeClass('hide');
            }else{
            $( this ).find('.carousel-control-next').addClass('hide');
            $( this ).find('.carousel-control-prev').removeClass('hide');
            }

            $( this ).find('.carousel-control-prev').css('left',relativeXPosition);
            $( this ).find('.carousel-control-prev').css('top',relativeYPosition);
            $( this ).find('.carousel-control-next').css('left',relativeXPosition);
            $( this ).find('.carousel-control-next').css('top',relativeYPosition);
        }*/
    })
}

function handleNavPosition(){
    /*let element = document.querySelector("#modelheader-simple");
    let element2 = document.querySelector("#modelhashnav");
    
    const state = Flip.getState("#modelheader-simple");
    element.classList.toggle("scrolling");
    Flip.from(state, {
        duration:0.6,
        ease: "Power4.easeOut",
        nested: true,
        absolute: false
    });
    
    
    const state2 = Flip.getState("#modelhashnav");
    element2.classList.toggle("scrolling");
    Flip.from(state2, {
        duration:0.6,
        ease: "Power4.easeOut",
        nested: true,
        absolute: false
    });
    
    $('#modelhashnav').toggleClass('scrolling');
    $('#modelheader-simple').toggleClass('scrolling');
    $('#mainsection').toggleClass('scrolling');
    */
}

var fontsize = 100;
function resize_to_fit() {
  fontsize -= 1;
  $('#modelheader-simple .page-block-name h1').css('fontSize', (fontsize));

  if ($('#modelheader-simple .page-block-name h1').height() > fontsize) {
    resize_to_fit();
  }
}
function reset_resize_to_fit() {
    
    if($('#modelhashnav_ul').length > 0){
        dragSpecs = Draggable.create('.detail-specs-container .page-block-txt', {type:"x", inertia: true, minimumMovement : 25, edgeResistance:1, bounds:'.detail-specs-container'});
    }
    
    fontsize = 100;
    resize_to_fit();
}

var dragSpecs;
function initModelDetail(){
    
    
    
    $(window).scroll(function(e) {
        scrollAniDetailModel();
    });
    
    var waitForItPlease = setTimeout(function() {
		scrollAniDetailModel();
	},500);
    
    
     
    if($('#modelhashnav_ul').length > 0){
        var dragHashMenu = Draggable.create('#modelhashnav_ul', {type:"x", inertia: true, minimumMovement : 25, edgeResistance:1, bounds:'#modelhashnav_ulcontainer'});
        dragSpecs = Draggable.create('.detail-specs-container .page-block-txt', {type:"x", inertia: true, minimumMovement : 25, edgeResistance:1, bounds:'.detail-specs-container'});
    }
    
    $('#measLink').on('click', function(e) {
        e.preventDefault();
        $('#mainsection').toggleClass('measurements_visible');
    });
    
    

    resize_to_fit();
    window.addEventListener('resize', reset_resize_to_fit);
    
    let tl = gsap.timeline({
      scrollTrigger: {
        trigger: "#detail-model",
        start: "bottom top+=100px",
        end: "bottom top-=150000px",
        onToggle: handleNavPosition,
        onUpdate: self => {
//            /console.log("progress:", self.progress.toFixed(3), "direction:", self.direction, "velocity", self.getVelocity());
        }
      },
    });
    
   // scrollInAnimation('.image-item','');
    
}

function buildHoverVideos(){
    var videoWrapper = '.vimeoContainer';
    
    $(videoWrapper).each(function(i, obj) {
       
        var player              = new Vimeo.Player($( this ).find('iframe'));
        
        $(this).hover(function() {
            player.play();
        });

        $(this).mouseleave(function() {
            player.pause();
        });
        
    });
                         
}


function buildPlayers(extraClass){
    
    var videoWrapper = '.player';
    if(extraClass != ''){
       videoWrapper = extraClass + ' .player';
    }
    
    $(videoWrapper).each(function(i, obj) {

        var player              = $(this).get(0);
        var myVid               = player.querySelector('.player__video');
        var controlProgress     = player.querySelector('.progress');
        var progressBar         = player.querySelector('.progress__filled');
        var controlPlay         = player.querySelector('.player__toggle');
        var controlSound        = player.querySelector('.player__sound');
        var controlFullScreen   = player.querySelector('.player__fullscreen');
        
        var progression;

        function toggleVideo() {
          if (myVid.paused) {
            myVid.play();
            controlPlay.classList.toggle('playing'); 
            //updateProgress();
          } else {
            myVid.pause();
            controlPlay.classList.toggle('playing'); 
            clearInterval(progression);
          };
        }
        function toggleSound() {
          if (myVid.muted) {
            myVid.muted = false;
            controlSound.classList.toggle('muted'); 
          } else {
            myVid.muted = true;
            controlSound.classList.toggle('muted'); 
          };
        }
        
        function updateProgress() {
          var progress = myVid.currentTime / myVid.duration;
          progressBar.style.width = Math.floor(progress * 1000) / 10 + '%';
        }
        
        function goFullScreen(){
            if(myVid.webkitSupportsFullscreen) myVid.webkitEnterFullScreen();
        }
        
        
        var progression = window.setInterval(updateProgress, 200);
        controlPlay.addEventListener('click', toggleVideo);
        controlSound.addEventListener('click', toggleSound);
        controlFullScreen.addEventListener('click', goFullScreen);
        

        function scrub(e) {
            const scrubTime = (e.offsetX / controlProgress.offsetWidth) * myVid.duration;
            myVid.currentTime = scrubTime;
        }
        
        let mousedown = false;
        controlProgress.addEventListener('click', scrub);
        /*controlProgress.addEventListener('mousemove', (e) => mousedown && scrub(e));
        controlProgress.addEventListener('mousedown', () => mousedown = true);
        controlProgress.addEventListener('mouseup', () => mousedown = false);*/
        
    });
    
    
    
}
function setModelScroll(){
    $('#mainsection').addClass('scrolling');
}

function unsetModelScroll(){
    $('#mainsection').removeClass('scrolling');
}

function generatePDF(id,mode){
    var url = http_prefix + domain + 'engine/modules/models/createpdf.php?page=models&bookerID='+id+'&mode='+mode;
    ajaxLoad(url, 'pdfdownload', 'pdfdownload');
}
function getTranslate3d (el) {
    var values = el.style.transform.split(/\w+\(|\);?/);
    if (!values[1] || !values[1].length) {
        return [];
    }
    return values[1].split(/,\s?/g);
}

function setActiveLetter(letter,i){
    //$('#togglable_letters').attr('class',letter)
    var pos = 40 * ( indexInClass('.lttr',letter) );
    
    
    $('#togglable_letters').scrollLeft( pos );
   /* $('#theLettersThatMove').css({
        
        transform: "translate3d("+currentTranslate+"px, 0px, 0px)"
        
    }).delay(500);*/
    
    //var letterDraggerHelper 	= gsap.timeline({paused:true});
	//letterDraggerHelper.to($('#theLettersThatMove'), { x: pos},0.4);
    //console.log(letterDragger);
    
    //transform: translate3d(-40px, 0px, 0px);
    
    
    $('#togglable_letters .active').removeClass('active');
    $('.'+letter).addClass('active');
    
}

function indexInClass(className,uniqueClassName) {
    var foundIndex = 0;
    
    $(className).each(function(i, obj) {
        if($(this).hasClass(uniqueClassName)){
            //console.log(i);  
            foundIndex = i;
        }       
    });
    return foundIndex;    
}

function setLetter(s){
   // letterDragger[0].disable();
    var nodes = Array.prototype.slice.call( $('#theLettersThatMove').children() );
    //console.log(nodes);
    var index     = $('.letter'+s)[0];
    
    setActiveLetter('letter'+s,index);
    
	if($( "#theBody" ).hasClass( "search-open" )){
		//toggleSearch();
	}
    console.log('letter : '+s);
    goToHash($('#letter'+s));
   // letterDragger[0].enable();
   // letterDragger[0].update(); 
}

function toggleLetters(){
    $('#togglable_letters').toggleClass('visible');
    $('.fixed-letters-toggler').toggleClass('visible');
    $('.fixed-letters-toggler-off').toggleClass('visible');
}

function toggleListSocialReach(){
    $('#models_container').toggleClass('social-reach');
    $('#SocialReachLink').toggleClass('active');
	var url			= http_prefix + domain + 'engine/modules/models/toggleSocialReachMode.php';
	ajaxLoad(url, 'SocialReachLink', 'SocialReachLink');
    
}

function setLanguageNotation(lan){
    $('.detail-specs-container').removeClass('language-setting-1');
    $('.detail-specs-container').removeClass('language-setting-2');
    $('.detail-specs-container').addClass('language-setting-'+lan);
    $('.detail-specs-container').removeClass('metrics-setting-1');
    $('.detail-specs-container').removeClass('metrics-setting-2');
    $('.detail-specs-container').removeClass('metrics-setting-3');
    $('.detail-specs-container').addClass('metrics-setting-'+lan);
    var url			= http_prefix + domain + 'engine/modules/models/toggleMeasurementsOutput.php?setting=language&value='+lan;
	ajaxLoad(url, 'models_container', 'models_container');
}

function setMetricsNotation(metric){
    $('.detail-specs-container').removeClass('metrics-setting-1');
    $('.detail-specs-container').removeClass('metrics-setting-2');
    $('.detail-specs-container').removeClass('metrics-setting-3');
    $('.detail-specs-container').addClass('metrics-setting-'+metric);
    var url			= http_prefix + domain + 'engine/modules/models/toggleMeasurementsOutput.php?setting=metrics&value='+metric;
	ajaxLoad(url, 'models_container', 'models_container');
}

var active_model = 0;
function addFavsFromList(id){
	active_model = id;
	var url = http_prefix + domain+"engine/modules/models/control-favs.php?action=add&FromList=1&model="+id;
	handleFav(url);
}

function removeFavsFromList(id){
	active_model = id;
	var url = http_prefix + domain+"engine/modules/models/control-favs.php?action=remove&FromList=1&model="+id;
	handleFav(url);
}

function handleFav(url){
	ajaxShowLoader();
	
	if (window.XMLHttpRequest) {
		xmlhttp=new XMLHttpRequest();
	} else {
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
  
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
	  		obj = JSON.parse(xmlhttp.responseText);
			
			var c = (obj.count);
			var m = (obj.message);
			
			if(c == 0 && active_model == 1000){
				$("#Favs1").addClass('d-none');
				$("#Favs2").addClass('d-none');
				$("#UserFavsCount").html(c);
				$("#UserFavsCount").html(c);
				$("#models_container").html(m);
			}else{
				
				$("#Favs1").removeClass('hidden');
				$("#Favs2").removeClass('hidden');
				$("#UserFavsCount").html(c);
				$("#UserFavsCount").html(c);
				
				if($("#actionFavs").length > 0){
					$("#actionFavs").html(m);
					$("#actionFavs").addClass('updated');
				}else if($("#actionFavs"+active_model).length > 0){
					$("#actionFavs"+active_model).html(m);
				}
				
				
			}
			
			active_model = 0;
			ajaxKillLoader();
			
		}
	};

	xmlhttp.open("GET",url,true);
	xmlhttp.send();
	
}

var measurementsState = 0;
function toggleFixedSpecs(){
    if(measurementsState == 0){
        measurementsState = 1;
        $('#detail-model').addClass('visible');
    }else{
        measurementsState = 0;
        $('#detail-model').removeClass('visible');
    }
}

function initNews(ctx, next){
	var newsID 	    = ctx.params.d;
	var newsTTL 	= ctx.params.c;
	var newsPage 	= ctx.params.e;
    var url         = http_prefix + domain+"engine/modules/newsbooker/detail.php?news="+newsID+"&name="+newsTTL+"&newsPage="+newsPage;
    handleRequest(url,newsID);
}

function initDeck(ctx, next){
	//'/:d/:s/search/:a/:l/'
	var deckID 	    = ctx.params.c;
	var category 	= ctx.params.d;
	var parentID 	= ctx.params.e;
    var url         = http_prefix + domain+"engine/modules/decks/detail.php?deck="+deckID+"&parent="+parentID+"&category="+category;
    handleRequest(url,deckID);
}
function openDeck(deckID,category,parentID){
    var url         = http_prefix + domain+"engine/modules/decks/detail.php?deck="+deckID+"&parent="+parentID+"&category="+category;
    handleRequest(url,deckID);
}
function openNews(newsID,newsTTL){
    var url         = http_prefix + domain+"engine/modules/newsbooker/detail.php?news="+newsID+"&name="+newsTTL;
    handleRequest(url,newsID);
}


var SlideShowPopupOpen = '';
function handleRequest(url,id){
    ajaxShowLoader();
	
	if (window.XMLHttpRequest) {
		xmlhttp=new XMLHttpRequest();
	} else {
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
  
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
	  		var response =(xmlhttp.responseText);
            
            
            $('#theBody').append(response);
//            /$('#theBody').addClass('noscroll');
            $('#theBody').ready(function(){
                
                if($("#pageBlockCarousel"+id).length > 0){
                    $("#pageBlockCarousel"+id).swipe({ swipe: function(event, direction, distance, duration, fingerCount, fingerData) {
                        if (direction == 'left') $(this).carousel('next');
                        if (direction == 'right') $(this).carousel('prev');
                        if (direction == 'down') closeDeck("deck"+id);
                    }});

                    if($('.carousel-item').length == 1){
                        $( this ).find('.carousel-control-prev').addClass('hide');
                        $( this ).find('.carousel-control-next').addClass('hide');
                    }else{
                        $("#pageBlockCarousel"+id).mousemove(function(e){
                            var relativeXPosition = (e.pageX - this.offsetLeft); //offset -> method allows you to retrieve the current position of an element 'relative' to the document
                            var relativeYPosition = (e.clientY - this.offsetTop);

                            SlideShowPopupOpen    = "#pageBlockCarousel"+id;

                            $('.carousel').on('slid.bs.carousel', function() {
                                currentIndex = $( this ).find('div.active').index() + 1;
                                $( this ).find('.carouselCurrent').html(''+currentIndex+'');
                            });



                            if(e.clientY < 50){
                                $( this ).find('.carousel-control-prev').addClass('hide');
                                $( this ).find('.carousel-control-next').addClass('hide');

                            }else{
                                //console.log(this.offsetLeft);
                                //console.log(this.offsetLeft);
                                //console.log("<p><strong>X-Position: </strong>"+relativeXPosition+" | <strong>Y-Position: </strong>"+relativeYPosition+"</p>");




                                if(e.clientX > $( window ).width() / 2){
                                    $( this ).find('.carousel-control-prev').addClass('hide');
                                    $( this ).find('.carousel-control-next').removeClass('hide');
                                }else{
                                    $( this ).find('.carousel-control-next').addClass('hide');
                                    $( this ).find('.carousel-control-prev').removeClass('hide');
                                }

                                $( this ).find('.carousel-control-prev').css('left',relativeXPosition);
                                $( this ).find('.carousel-control-prev').css('top',relativeYPosition);
                                $( this ).find('.carousel-control-next').css('left',relativeXPosition);
                                $( this ).find('.carousel-control-next').css('top',relativeYPosition);
                            }
                        })
                    }    
                
                }
                
                if($('#grapWrapper'+id).length > 0){
                    if($('#grapWrapper'+id+' .grapListing').length > 0){
                        var dd = Draggable.create('#grapWrapper'+id+' .grapListing', {type:"x", inertia: true, minimumMovement : 25, edgeResistance:1, bounds:'#grapWrapper'+id,
                        
                        onDragStart: function() {
                            $('#grapWrapper'+id+' .grapListing').addClass('dragging');
                        },
                        onDragEnd: function() {
                            $('#grapWrapper'+id+' .grapListing').removeClass('dragging');
                        }});
                        
                        
                        $("#grapWrapper"+id).swipe({ swipe: function(event, direction, distance, duration, fingerCount, fingerData) {
                            if (direction == 'down') closeDeck("deck"+id);
                        }});
                    } 
                }
                
                if($('.deckDetail.bookerNews').length > 0){
                    $('.deckInformation').on('click', function(event) {
                        $('.deckInformation').toggleClass('showMe');
                    });
                
                }
                
                
                if($('.closeDeck').length > 0){
                    
                    /*const menuLinks         = gsap.utils.toArray('.closeDeck'); //, #modelhashnav_ul li a .part2
                    const menuLinksSplits   = SplitText.create(menuLinks, {type:"chars", tag:"span", charsClass:"baseChar"});
    
                    
                    
                    $('.closeDeck').mouseenter(function() {
                        $(this).width($(this).width());

                        var els = $(this).children();
                        HoverOn(els);
                    });
                    $('.closeDeck').mouseleave(function() {
                        var els = $(this).children();
                        HoverOff(els);
                    });*/

                
                }

                
                var lightBoxToggle 	= gsap.timeline({paused:true});
                
                lightBoxToggle.to($('.deckDetail'),  {top: '0', left: '0', ease:Power4.easeInOut, duration: 0.7},0)
                lightBoxToggle.eventCallback("onComplete", function() {
                    //console.log('on');
                    if($('.deckDetail.changemakers').length > 0){
                        
                        
                        
                        
                        $('.deckDetail.changemakers').addClass('loaded');
                        /*if($('.deckInformation').length > 0){
                            $('.deckInformation').css('position','fixed');
                            $('.closeDeck').css('position','fixed');
                        }*/
                    }

                    if($('.deckDetail').length > 0){
                        $('#theBody').addClass('noscroll');
                    }
                    /*if($('.deckDetail.shows').length > 0){
                        $('#theBody').addClass('noscroll');
                    }
                    if($('.deckDetail.bookerNews').length > 0){
                        $('#theBody').addClass('noscroll');
                    }*/
                    
//			        /ajaxKillLoader();
	                $('#basicloadercontainer').addClass('loaded');
                });	
                lightBoxToggle.play();
                
                
                buildPlayers('.deckDetail');
                scrollInAnimation('.deck-listing  .image-item','#deck'+id);
                    
            })
			
		}
	};

	xmlhttp.open("GET",url,true);
	xmlhttp.send();
}

function closeDeck(target){
    if($('.deckDetail.changemakers').length > 0){
        $('.deckDetail.changemakers').removeClass('loaded');
        /*if($('.deckInformation').length > 0){
            $('.deckInformation').css('position','fixed');
            $('.closeDeck').css('position','fixed');
        }*/
    }
    var lightBoxToggle 	= gsap.timeline({paused:true});
    lightBoxToggle.to($('#'+target),  {top: '100vh', left: '0', ease:Power4.easeInOut, duration: 0.6},0) //left must be 100vw if we want horizontal slide...
    lightBoxToggle.eventCallback("onComplete", function() {
        $('#'+target).remove();
        $('#theBody').removeClass('noscroll');
    });	
    lightBoxToggle.play();
    var comeBack = setTimeout(ajaxKillLoader,500);
}
function closeNews(target){
    var lightBoxToggle 	= gsap.timeline({paused:true});
    lightBoxToggle.to($('#'+target),  {top: '100vh', left: '0', ease:Power4.easeInOut, duration: 0.6},0)
    lightBoxToggle.eventCallback("onComplete", function() {
        $('#'+target).remove();
    });	
    lightBoxToggle.play();
    var comeBack = setTimeout(ajaxKillLoader,500);
}

function toggleSearch(){
	$('.navbar-toggle').removeClass('clicked');
	$('#mainmenu').removeClass('in');
	
	//allowKeyMonitoring = false;
	$('#theBody').toggleClass('search-open');
	$('#SearchModal').toggleClass('in');
	$('#menu-search').toggleClass('in');
	$("#searchinput").focus();
    
    /*$('html, body').animate({
      scrollTop: 0
    }, 400);*/
    
    /*if(menuState > 0){
		menuToggle.clear();
		byebyeMenu();
		menuToggle.play(0);
		menuState = 0;
	}*/
    
}


function setNameSearch(t){
    if($('#models_container').length > 0){
       setNameSearchPageResults(t);
    }else{
        var board 	    = $('#search_board_models').val();
        if(board == ''){
           board        = 'all';
        }
        var division	= $('#search_division').val();
        var name	 	= t;
        var agency		= $('#agency').val();
        var href		= '';
        var url         = '';

        if(name.length > 1){

            if(division != ''){
                url			= http_prefix + domain + 'engine/modules/models/flow-names-only.php?page=models&subpage='+division+'&board='+board+'&name='+name/*+'&agency='+model_agency*/;
            }else if(board != 'all'){
                url			= http_prefix + domain + 'engine/modules/models/flow-names-only.php?page=models&board='+board+'&name='+name/*+'&agency='+model_agency*/;
            }else{
                url			= http_prefix + domain + 'engine/modules/models/flow-names-only.php?page=models&name='+name/*+'&agency='+model_agency*/;
            }

            quickAjax = true;
            ajaxLoad(url, 'livesearch', 'livesearch');
        }  
    }
}

function setNameSearchPageResults(t){
	var board 	    = $('#search_board_models').val();
    
    if(board == ''){
       board        = 'all';
    }
	var division	= $('#search_division').val();
	var name	 	= t;
	var agency		= $('#agency').val();
	var href		= '';
	
    if(name.length > 1){
       
        if(division != ''){
            href		= '/' + agency + '/' + division + '/' + board + '/name/' + name + '/';
            href		= '/' + division + '/' + board + '/name/' + name + '/';
        }else if(board != ''){
            href		= '/' + agency + '/' + board + '/name/' + name + '/';
            href		= '/' + board + '/name/' + name + '/';
        }
        
        href			= href.replace(/,/g, '-')
        $('html, body').animate({
        scrollTop: 0
        }, 400);
        page(href);
	   
        
        if(menuState > 0){
            menuToggle.clear();
            byebyeMenu();
            menuToggle.play(0);
            menuState = 0;
        }
        
    }else{
        if(name.length == 0){
            if(division != ''){
                href		= '/' + division + '/' + board + '/';
            }else if(board != ''){
                href		= '/' + board + '/';
            }
            
            href			= href.replace(/,/g, '-')
            $('html, body').animate({
            scrollTop: 0
            }, 400);
            page(href);


            if(menuState > 0){
                menuToggle.clear();
                byebyeMenu();
                menuToggle.play(0);
                menuState = 0;
            }

        }
        
    }  
}

function setSearchBoard(i){
    
    $('.div-search-link').removeClass('selected');
    $('#searchlink-'+i).addClass('selected');
    
    $('#search_board_models').val(i);
    $('#search_division').val('');
    
    setNameSearch($('#searchinput').val()); 
    
}

function initNameSearch(ctx, next){
	//'/:d/:s/search/:a/:l/'
//var model_agency 	= ctx.params.a;
	var board	        = ctx.params.b;
    
	var division 	    = '';
    if(ctx.params.c){
	   division 	    = ctx.params.c;  
    }
	var name	 	= ctx.params.n;
    var url;
	
    if(division != ''){
		url			= http_prefix + domain + 'engine/modules/models/flow-names.php?page=models&subpage='+division+'&board='+board+'&name='+name/*+'&agency='+model_agency*/;
	}else if(board != 'all'){
		url			= http_prefix + domain + 'engine/modules/models/flow-names.php?page=models&board='+board+'&name='+name/*+'&agency='+model_agency*/;
	}else{
		url			= http_prefix + domain + 'engine/modules/models/flow-names.php?page=models&name='+name/*+'&agency='+model_agency*/;
    }
	
		url			= http_prefix + domain + 'engine/modules/models/flow-names.php?page=models&name='+name/*+'&agency='+model_agency*/;
	//console.log(url);
    
    quickAjax = true;
	ajaxLoad(url, 'mainsection', 'modelSearchResults');
}

function deleteFile(target){
    $('#'+target).val('');
    //after upload
    $('#'+target+'msgBox .uploadTxtMsg').remove();
    $('#'+target+'msgBox .previewImage').remove();
    
    //after refresh
    $('#'+target+'msgBox .currentFileText').remove();
    $('#'+target+'msgBox .currentFileDelete').remove();
    $('#'+target+'msgBox .uploadpreviewContainer').remove();
    $('#'+target+'msgBox .uploadpreviewContainerBackup').addClass('showMe');
    $('#dataLink'+target).remove();
    
    url			= http_prefix + domain + 'engine/modules/fancyform/uploads/deleteFile.php?target='+target;

    ajaxLoad(url, 'deleteFile', target+'msgBox');
}





/*!
 * Masonry PACKAGED v4.2.2
 * Cascading grid layout library
 * https://masonry.desandro.com
 * MIT License
 * by David DeSandro
 */

!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(t,r),delete n[r]),r.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;u>e;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var n=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?n.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),r=0;r<i.length;r++)o.push(i[r])}}),o},i.debounceMethod=function(t,e,i){i=i||100;var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,r=this;this[o]=setTimeout(function(){n.apply(r,e),delete r[o]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var o=t.console;return i.htmlInit=function(e,n){i.docReady(function(){var r=i.toDashed(n),s="data-"+r,a=document.querySelectorAll("["+s+"]"),h=document.querySelectorAll(".js-"+r),u=i.makeArray(a).concat(i.makeArray(h)),d=s+"-options",l=t.jQuery;u.forEach(function(t){var i,r=t.getAttribute(s)||t.getAttribute(d);try{i=r&&JSON.parse(r)}catch(a){return void(o&&o.error("Error parsing "+s+" on "+t.className+": "+a))}var h=new e(t,i);l&&l.data(t,n,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var r=document.documentElement.style,s="string"==typeof r.transition?"transition":"WebkitTransition",a="string"==typeof r.transform?"transform":"WebkitTransform",h={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[s],u={transform:a,transition:s,transitionDuration:s+"Duration",transitionProperty:s+"Property",transitionDelay:s+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=u[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],r=parseFloat(n),s=parseFloat(o),a=this.layout.size;-1!=n.indexOf("%")&&(r=r/100*a.width),-1!=o.indexOf("%")&&(s=s/100*a.height),r=isNaN(r)?0:r,s=isNaN(s)?0:s,r-=e?a.paddingLeft:a.paddingRight,s-=i?a.paddingTop:a.paddingBottom,this.position.x=r,this.position.y=s},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",r=i?"left":"right",s=i?"right":"left",a=this.position.x+t[o];e[r]=this.getXValue(a),e[s]="";var h=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[h];e[u]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),o&&!this.isTransitioning)return void this.layoutPosition();var r=t-i,s=e-n,a={};a.transform=this.getTranslate(r,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(h,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var c={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=c[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(h,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var f={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(f)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return s&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,r){return e(t,i,n,o,r)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function r(t,e){var i=n.getQueryElement(t);if(!i)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,c[o]=this,this._create();var r=this._getOption("initLayout");r&&this.layout()}function s(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var h=t.console,u=t.jQuery,d=function(){},l=0,c={};r.namespace="outlayer",r.Item=o,r.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=r.prototype;n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},r.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var r=e[o],s=new i(r,this);n.push(s)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map(function(t){return t.element})},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=i(this.element)},f._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},f.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},f._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},f._getContainerSize=d,f._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){s++,s==r&&i()}var o=this,r=e.length;if(!e||!r)return void i();var s=0;e.forEach(function(e){e.once(t,n)})},f.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),u)if(this.$element=this.$element||u(this.element),e){var o=u.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},f._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=d,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),r={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return r},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(r,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},f.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete c[e],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},r.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&c[e]},r.create=function(t,e){var i=s(r);return i.defaults=n.extend({},r.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},r.compatOptions),i.namespace=t,i.data=r.data,i.Item=s(o),n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i};var m={ms:1,s:1e3};return r.Item=o,r}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var n=i.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,r=o/n,s=n-o%n,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});
