(function($)
{
    $.fn.buildamc30 = function(_options)
    {
        var options = {
            backgroundImageMinimumWidth: 965,
            backgroundImageContainerId: '#sitebackground',
            beschrijvingDetailFoldedHeight: 58,
            interesseformuliermelding: "",
            projectomschrijvingh2: "",
            serviceOpen: true,
            lockFooter: false,
            fancyboxAutoScale: true,
            locationhost: "",
            locationName:"Ligging",
            backstretchImage: "",
            backstretchCenteredX: false,
            backstretchCenteredY:false
        };

        if (_options) $.extend(options, _options);

        /* melding bij interesseformulier veranderen */
        if ($('.getHouseInterest .melding').length > 0 && options.interesseformuliermelding != "") {
            $('.getHouseInterest .melding').text(options.interesseformuliermelding);
        }

        /*
         * Titel zetten in Projectomschrijving
         * Er zit geen H2 titel in de projectomschrijvin pagina vanuit Niki
         */

        if ($('.nikiWS .nikiContent').length > 0 && $('.nikiWS .nikiWsAmBlockHeader').length < 1 && options.projectomschrijvingh2 != "") {
            $('.nikiWS .nikiContent').prepend('<div class="nikiWsAmBlockHeader"><h2>' + options.projectomschrijvingh2 + '</h2></div>');

        }


        /*
         * Zet een icoontje neer in die mainMenu Items die een attribute 'icoon hebben'
         */
        if ($("#menuHolder .mainMenu").length > 0) {
            $("#menuHolder .mainMenu > ul > li").each(function()
            {
                /* title van hoofdmenu boven wijkt af van title in footer menu */
                if ($('a', this).hasClass('mainMenuItem'))
                {
                    var linktekst = $('a', this).attr('title');
                    if (linktekst && linktekst != "")
                    {
                        $('a', this).text(linktekst);
                    }
                }


            });
        }

/*
         * zet content op goede hoogte onder menu
         */
        if ($('.contentholder').length > 0 && $('#menuHolder').length>0)
        {
            var chPaddingTop = parseInt($('.contentholder').css('padding-top'));
            var shouldBeTop = parseInt($('#menuHolder').css('top'));
           /* */var testTop= $('#menuHolder .mainMenu').height();
            var cssTop=  $('#menuHolder .mainMenu').css('height');
            /*console.log("testTop : "+testTop+" - cssTop : "+cssTop);*/
            var menuHeight = parseInt( $('#menuHolder .mainMenu').css('height') );
            if(isNaN(menuHeight)) {
                menuHeight = $('#menuHolder .mainMenu').height();
            }
            shouldBeTop += menuHeight;

            $('.contentholder').css('padding-top', (shouldBeTop + 22));

            /*
             * eventueel houseDetail submenu plaatsen
             * if woningen detail mode
             */

            if ($('#houseTypeNavigation').length > 0)
            {
                $('body').append('<div id="subMenuHolder"></div>')
                $('#subMenuHolder').append($('#houseTypeNavigation'));
            }

        }


        /*
         * footer hoover
         */
        if (!options.lockFooter) {
            var slideUpBusy = false;
            if ($('#amc30-footer').length > 0)
            {

                $('#amc30-footer .footer ul li ul').css({'display':'block'});
                var h = $('#am-footer').outerHeight(true);

                $('#amc30-footer .footer').hide();
                $('#am-footer').css({'min-height':h});

                $('#am-footer').hover(
                        function()
                        {
                            if (!slideUpBusy) {
                                $('#amc30-footer .footer').slideDown('slow');
                            }

                        },
                        function()
                        {
                            slideUpBusy = true;
                            $('#amc30-footer .footer').slideUp('slow', footerReadyUp);

                        }
                        );
            }

            function footerReadyUp() {
                slideUpBusy = false;
            }
        }

        /*
         * check hoogte right container
         * Als deze hoger is dan container zet css min-height van container op die hoogte
         * zodat footer altijd onder rightcontainer valt, en de scroll verzekerd is
         *
         */
        if ($('#rightContainer').length > 0)
        {
            var rch = $('#rightContainer').outerHeight(true) + parseInt($('#rightContainer').css('top'));
            var ch = $('.container').outerHeight(true);
            if (rch > ch)
            {
                $('.container').css({'min-height':rch})
            }
        }


        if ($('#serviceMenuHolder .serviceMenu').length > 0) {
            /*
             * Het bovenste service menu moet de title van de <span id="serviceMenuTitle"><a title=""></a></span>pakken
             */
            $('#serviceMenuHolder .serviceMenu .serviceMenuTitle').text($('#serviceMenuHolder .serviceMenu .serviceMenuTitle').attr('title'));
            /*
             * Zorg dat service menu kan inschuiven
             */
            $('#serviceMenuHolder .serviceMenu .serviceMenuTitle').click(
                    function()
                    {
                        if ($(this).hasClass('closed'))
                        {
                            $(this).removeClass('closed');
                            $('#serviceMenuHolder .serviceMenu ul').slideDown();
                        }
                        else
                        {
                            $('#serviceMenuHolder .serviceMenu ul').slideUp('slow', serviceMenuClosed);
                        }

                    });
            /*
             * slideUp onComplete handler voor serviceMenu
             * achtergrond van titel krijgt rechts een schaduwtje
             */
            function serviceMenuClosed()
            {
                $('#serviceMenuHolder .serviceMenu .serviceMenuTitle').addClass('closed');
            }

            /*
             * Als options serviceOpen is false, dan serviceMenuslideUp en sluiten
             */
            if (!options.serviceOpen)
            {
                $('#serviceMenuHolder .serviceMenu ul').hide();
                $('#serviceMenuHolder .serviceMenu ul').slideUp();
                $('#serviceMenuHolder .serviceMenu .serviceMenuTitle').addClass('closed');
            }
        }



        /*
         * de iconen op de voorpagina ( mainMenu.xsl ) krijgen een gehele mouseOver
         * href van a0-tag die in icoonInfo staat wordt gebruikt
         */
        if ($('.homeIconen').length > 0) {
            $('.homeIconen .homeIcoon').each(function()
            {

                var href = $('.icoonInfo a', this).attr('href');

                if (href && href != "")
                {

                    $(this).css({'cursor':'pointer'});
                    $(this).click(function(ev)
                    {
                        ev.stopPropagation();
                        document.location.href = href;
                    });
                }
            });
        }

        /*
         social links in detail pagina openen in pop-up
         */
        $('a[rel|=popup]').click(function()
        {
            var deRel = $(this).attr('rel') ;
            var deW = deRel.split('-')[1];
            var deH = deRel.split('-')[2];

            var deId = $(this).attr('id');
            var deHref = $(this).attr('href');
            var openString = "width=" + deW + ",height=" + deH + ",resizable=true,scrollbars=true";
            //var socialwindow=window.open($(this).attr('href'), 'social', openString);
            try
            {
                _gaq.push(['_trackEvent', 'social-pop-up', deId]);
            }
            catch(err)
            {
                log("popup-async-google-error " + err);
            }

            var socialwindow = window.open(deHref, 'social', openString);
            if (window.focus)
            {
                socialwindow.focus()
            }
            return false;
        })

        $('a[rel|=externalsocial]').click(function()
        {
            var deHref = $(this).attr('href');
            var deId = $(this).attr('id');
            /*
             eerste try is voor asynchroon google teller
             als dat niet lukt try de ouderwetse Google teller.
             BVoor deze laatste is het noodzakelijk voor een goede telling
             Key mee te geven aan trigger script in root
             */
            try
            {
                _gaq.push(['_trackEvent', 'social-external', deId]);
            }
            catch(err)
            {
                log("external-async-google-error " + err);
            }
            window.open(deHref);
            return false;
        });

        $('a#facebookicon').click(function() {
            var deId = "custom-facebook-icon";//$(this).attr('id');

            try
            {
                _gaq.push(['_trackEvent', 'social-pop-up', deId]);
            }
            catch(err)
            {
                log("popup-async-google-error " + err);
            }
        })

        $('a.downloadlink').click(function(){
            var deHref = $(this).attr('href');
            var downloadTellerNaam=$(this).attr('title');
            var tellerurl=document.location.host;
            if(options.locationhost!="")tellerurl=options.locationhost;


            if(tellerurl.indexOf("am-ec")<0){
                if(window.sitestat && typeof tellerurl!="undefined" && typeof tellerurl!=null){
                    if(typeof(sitestat)=="function")sitestat("http://nl.sitestat.com/amstelland/amstelland/s?"+tellerurl+".downloads."+downloadTellerNaam);
                }
                try
                {
                    _gaq.push(['_trackEvent', 'download', downloadTellerNaam]);
                }
                catch(err)
                {
                    log("external-async-google-error " + err);
                }
                    log("download name = "+downloadTellerNaam);

            }
            window.open(deHref);
            return false;
        })

        $('.interesse-in-deze-woning a').click(function(ev){
            //ev.preventDefault();
            var typeNaam=$('.houseTypeName').text();
            try
            {
                _gaq.push(['_trackEvent', 'van-woningtype-naar-interesse', typeNaam]);
            }
            catch(err)
            {
                log("popup-async-google-error " + err);
            }

        })

        /*
         End pop up en tellen voor social's
         */

        /*
         * bewerken van ec diensten
         */
        /* links dienst ul.odd ander kleur */
        if ($('.ec_links').length > 0)
        {
            $(".ec_links ul:odd").addClass('odd');
        }

        /*
         * house detail prijs en status td odd
         */
        /* links dienst ul.odd ander kleur */
        if ($('.nikiWsAmBlockContent .AMpriceListTableHolder').length > 0)
        {
            $(".nikiWsAmBlockContent .AMpriceListTableHolder tr").each(function()
            {
                //$("td:first", this).css({'padding-left':0,'width':143});
                $("td:even", this).addClass('odd');
            })
            if ($(".nikiWsAmBlockContent .AMpriceListTableHolder td.description").length > 0) {
                $(".nikiWsAmBlockContent .AMpriceListTableHolder").css({'position':'relative'});
                $(".nikiWsAmBlockContent .AMpriceListTableHolder td.description").addClass('odd');
                $(".nikiWsAmBlockContent .AMpriceListTableHolder td.description").css({'width':'30px'});
                $(".nikiWsAmBlockContent .AMpriceListTableHolder td.description div").hide();
                $(".nikiWsAmBlockContent .AMpriceListTableHolder td.description div").css({'position':'absolute','z-index':100,'padding':'7px','background-color':'#fff','border':'1px solid #a7a7a7','left':'20px'});
                $(".nikiWsAmBlockContent .AMpriceListTableHolder td.description img").css({'margin-top':'3px','cursor':'pointer'});
                $(".nikiWsAmBlockContent .AMpriceListTableHolder td.description img").toggle(
                        function() {
                            var deP = $(this).parent();
                            var pl = $(this).position().left + 25;
                            var pt = $(this).position().top - 20;

                            $('div', deP).css({'left':pl,'top':pt});
                            $('div', deP).show();
                        },
                        function() {
                            var deP = $(this).parent();
                            $('div', deP).hide();
                        }
                        );
            }

        }

        /*
         de grootste AI in de detail pagina ( div id=houseTypeSummery class=houseTypeSummeryRight moet mooi in het midden van het vlakje staan
         Width gebruikt text-align: center
         */

        if ($('#houseTypeSummary .houseTypeSummeryRight .houseTypeAI').length > 0) {

            var h = $('#houseTypeSummary .houseTypeSummeryRight .houseTypeAI').height();
            var ih = $('#houseTypeSummary .houseTypeSummeryRight .houseTypeAI img').height();
            if (ih < h && ih > 0) {
                $('#houseTypeSummary .houseTypeSummeryRight .houseTypeAI img').css({'margin-top':(Math.floor(h - ih) / 2)});
            }

        }
        /*
         *zet actie-button in woningtypen pagina aanbod
         *
         **/
        if ($('.getNikiLotMap .houseTypes .nikiWsAmBlockContent #houseTypeOverview').length > 0)
        {
            $('.getNikiLotMap .houseTypes .nikiWsAmBlockContent #houseTypeOverview td.listingShowHouseType').each(function()
            {
                var h2Text= $('.getNikiLotMap .houseTypes .nikiWsAmBlockHeader h2').text();
                var deLink = $('.nameButton a', this).attr('href');
                var deTitle = $('.nameButton a', this).attr('title');
                var appendString = '<div class="actionButton">';
                appendString += '<a href="' + deLink + '" title="' + deTitle + '">';
                if(h2Text=="Alle kavels" || h2Text.split(" ")[0]=='Kavels'){
                  appendString += '<img src="/content/common/gfx/algemeen/toondezekavels-aanbod.png" alt="interesse button" />';  
                }else{
                  appendString += '<img src="/content/common/gfx/algemeen/toondezewoning-aanbod.png" alt="interesse button" />';
                }
                
                appendString += '</a></div>';
                $(this).append(appendString);
            })
        }

        /* lees meer trick */
        //$("#houseTypeDescription .beschrijving-detail").html();
        var originalHeight=0;
        if ($("#houseTypeDescription .beschrijving-detail").length > 0) {
            $("#houseTypeDescription .beschrijving-detail").first().css({'margin-top':0,'padding-top':0});

            var originalHeight = $("#houseTypeDescription .beschrijving-detail").height();
            if (originalHeight > options.beschrijvingDetailFoldedHeight)
            {
                if (!$("#description-leesmeer").exists())
                {
                    $("#houseTypeDescription .beschrijving-detail").after('<div id="description-leesmeer">Lees meer</div>');
                }
                $("#houseTypeDescription .beschrijving-detail").css({height:options.beschrijvingDetailFoldedHeight, overflow:'hidden'});
                $("#description-leesmeer").click(
                        function()
                        {
                            $(this).remove();
                            $("#houseTypeDescription .beschrijving-detail").animate({height:originalHeight}, 1000, function()
                            {
                                $("#houseTypeDescription .beschrijving-detail").css({height:originalHeight});
                            });
                        });
            } else {
                if ($("#description-leesmeer").exists())
                {
                    $("#description-leesmeer").remove();
                }
            }
        }

        /* we gaan fancybox gebruiken in C30 */
        /*
         Haal de slides uit de pagina en check of er geen dubble id in zit
         Deze function wordt alleen gestart als we in de detail pagina zitten
         */


        function getSlides() {
            var deTitel = "";
            if ($('#houseTypeSummary .houseTypeName').text() != "") {
                deTitel = $('#houseTypeSummary .houseTypeName').text();
            }
            var dumObject = {};
            var ids = "";
            var dumImageUrl = "";
            var num = 0;

            $('.detail-niki-slide').each(function() {
                dumObject = getImageCleanUrl($(this).attr('src'));
                dumImageUrl = dumObject.url + "?id=" + dumObject.id;
                $(this).wrap('<a href="' + dumImageUrl + '" alt="klik om deze plaat groot te bekijken" rel="fbslide" title="' + deTitel + '"/>');

            });


            $("a[rel=fbslide]").fancybox({
                'transitionIn'        : 'elastic',
                'transitionOut'        : 'elastic',
                'type'              : 'image',
                'changeFade'        : 0,
                'autoScale'        :options.fancyboxAutoScale,
                'titlePosition'   : 'over'
            });

        }

        /*
         haal image id uit url
         geef object met url en id gescheiden terug
         */

        function getImageCleanUrl(imageUrl)
        {
            var hash;
            var cleanUrl = imageUrl.split('?')[0];
            var hashes = imageUrl.split('?')[1].split('&');

            var returnId = "";
            for (var i = 0; i < hashes.length; i++)
            {
                hash = hashes[i].split('=');
                if (hash[0] == 'id') {
                    returnId = hash[1];
                    break;
                }
            }
            return {'url':cleanUrl,'id':returnId};
        }


        /*
         roep de getSlides functie aan  als we in de detail pagina zitten
         */
        if ($('.houseDetail').length) {
            /*
             load actie komt los te staan van each in getSlides. Each moet sowie so voor ini fancybox
             */
            $('.detail-niki-slide').load(function() {
                var maxHeight = 0;
                var topMargin = 0;
                if ($(this).parent().hasClass('nikiImageWrapper')) {
                    maxHeight = parseInt($(this).parent().height());
                } else {
                    maxHeight = parseInt($(this).parent().parent().height());
                }
                if ($(this).attr('height') > 0 && $(this).attr('height') < maxHeight - 2) {
                    topMargin = Math.floor((maxHeight - $(this).attr('height')) / 2);
                    $(this).css({'margin-top':topMargin});
                }
            });

            $('.detail-ai-niki-slide').load(function() {
                var maxHeight = 0;
                var topMargin = 0;
                if ($(this).parent().hasClass('houseTypeAi')) {
                    maxHeight = parseInt($(this).parent().height());
                } else {
                    maxHeight = parseInt($(this).parent().parent().height());
                }

                if ($(this).attr('height') > 0 && $(this).attr('height') < maxHeight - 2) {
                    topMargin = Math.floor((maxHeight - $(this).attr('height')) / 2);
                    $(this).css({'margin-top':topMargin});
                }
            });
            getSlides();

        }


        /* end fancybox gebruik */

        /*
         * locatie header aanpassen
         *
         */
        if ($('.locationMap h2').length > 0)
        {
            $('.locationMap h2').text(options.locationName);
            /*$('.locationMap h2 br').remove();
             $('.locationMap h2 span:last').remove();*/
        }


        /* functie schalen backgroundImage */
        /* volgende variabelen hoeven niet elke keer opnieuw uitgerekend te worden */
        var backgroundImage = $('img', options.backgroundImageContainerId);
        var backgroundImageWidth = $(backgroundImage).width();
        var backgroundImageHeight = $(backgroundImage).height();
        var imageRatio = backgroundImageWidth / backgroundImageHeight;
        /* de minimum ratio, kleiner mag de foto niet worden */
        var minimumRatio = options.backgroundImageMinimumWidth / backgroundImageWidth;
        /*
         volgende variabelen worden gebruikt in de resize functie,
         maar hoeven niet elke keer opnieuw aangemaakt te worden
         */
        var wh = $(window).height();
        var ww = $(window).width();
        var windowRatio = ww / wh;
        var scaleRatio = 1;
        // als de width hetzelfde blijft, niet resizen */
        var oldWidth = 0;
        /* resize functie zelf */
        function resizeBackgroundImage()
        {
            backgroundImageWidth = $(backgroundImage).width();
            backgroundImageHeight = $(backgroundImage).height();
            imageRatio = backgroundImageWidth / backgroundImageHeight;
            /* de minimum ratio, kleiner mag de foto niet worden */
            minimumRatio = options.backgroundImageMinimumWidth / backgroundImageWidth;
            wh = $(window).height();
            ww = $(window).width();
            var newWidth = 0;
            windowRatio = ww / wh;

            /* background Image hoeft alleen te schalen naar de breedte tot bepaald minimum */
            if (ww > options.backgroundImageMinimumWidth)
            {
                scaleRatio = ww / backgroundImageWidth;
            }
            else
            {
                scaleRatio = minimumRatio;
            }
            newWidth = Math.floor(scaleRatio * backgroundImageWidth);
            if (oldWidth != newWidth) {

                $(backgroundImage).attr('width', newWidth);
                $(backgroundImage).attr('height', Math.floor(scaleRatio * backgroundImageHeight));
            }

            oldWidth = newWidth;
        }

        /* bind resize event van window aan de resizeBackgroundImage functie */
        if(options.backstretchImage==""){

            $(window).resize(resizeBackgroundImage);
        }else{

            $.backstretch(options.backstretchImage,{centeredX: options.backstretchCenteredX, centeredY: options.backstretchCenteredY});
        }
        //


        /*$('img', options.backgroundImageContainerId).load(function()
        {
            backgroundImageWidth = $(backgroundImage).width();
            console.log("backgroundImageWidth "+backgroundImageWidth);
            backgroundImageHeight = $(backgroundImage).height();
            imageRatio = backgroundImageWidth / backgroundImageHeight;
            *//* de minimum ratio, kleiner mag de foto niet worden *//*
            minimumRatio = options.backgroundImageMinimumWidth / backgroundImageWidth;
            resizeBackgroundImage();

        })*/

        /* vul ec iconmenu uit */
        if($('.rightcolumn .iconmenu ul').length>0){
            var liLength=$('.rightcolumn .iconmenu ul li:visible').length;
            var liErBij=  3-liLength%3;
            if(liErBij<3){
                for(var i=0,j=liErBij;i<j;i++){
                   $('.rightcolumn .iconmenu ul').append('<li class="li-leeg"></li>'); 
                }
            }
        }


    };
})(jQuery);


