var ga_keys = {'nl':'UA-1089562-1', 'en':'UA-25013415-1'};
var gcse_keys = {'nl':'016898149029342617703:skdixmcfb-i', 'en':'016898149029342617703:r0zg-59nnba'};

var filterLocationChange = function () {
    document.location_filter.submit();
}
var lightbox = function () {
    var holder = document.createElement('div');
    holder.className = 'lightbox';
    holder.appendChild(document.createElement('span'))
    var box = holder.appendChild(document.createElement('span'));
    box.className = 'lightbox-box';
    var content = box.appendChild(document.createElement('div'));
    content.className = 'lightbox-content';
    var close = box.appendChild(document.createElement('div'));
    close.className = 'lightbox-close';
    close.innerHTML = 'Sluiten';
    holder.style.display = 'none';
    box.onclick = function (e) {
        if (!e && window.event) {
            event.cancelBubble = true;
        }
        else {
            e.stopPropagation();
        }
    };
    var docClick;
    var hide = function () {
        document.body.onclick = docClick;
        holder.style.display = 'none';
        document.body.style.overflow = document.documentElement.style.overflow = '';
    };
    close.onclick = hide;
    window.addEvent('domready', function() {
        document.body.appendChild(holder);
        docClick = document.body.onclick || function () {};
    });
    return function (s, w, currentIdx, prev_lightbox, next_lightbox) {
        if (!s) {
            return;
        }
        w = w || 'auto';
        box.style.width = w;
        content.innerHTML = s;
        document.body.style.overflow = document.documentElement.style.overflow = 'hidden';
        holder.style.display = '';

        if (prev_lightbox) {
            var prev = content.appendChild(document.createElement('div'));
            prev.onclick = function () { prev_lightbox.onclick(); };
            prev.className = 'lightbox-prev';
            prev.innerHTML = 'Previous';
        }
        if (next_lightbox) {
            var next = content.appendChild(document.createElement('div'));
            next.onclick = function () { next_lightbox.onclick(); };
            next.className = 'lightbox-next';
            next.innerHTML = 'Next';
        }

        setTimeout(function () {
            document.body.onclick = function () {
                hide();
                docClick();
            };
        }, 10);
    };
}()

window.addEvent('domready', function() {
    var els = document.body.getElementsByTagName('img');
    var prev;
    
    
    var findNextLightbox = function (els, idx) {
        for (var i = idx + 1; i < els.length; i++) {
            var el = els[i];
            if (el.getAttribute('data-lightbox')) {
                return el;
            }
        }
        return null;
    };
    
    for (var i = 0; i < els.length; i++) {
        var el = els[i];
        if (el.getAttribute('data-lightbox')) {
            var x = el.onclick || function () {};
            (function (prev) {
                var next = findNextLightbox(els, i);
                el.onclick = function () {
                    x();
                    lightbox('<img src="' + this.getAttribute('data-lightbox') + '">' +
                        '<div><strong>' + this.getAttribute('alt') + '</strong></div>' +
                        (this.getAttribute('data-copyright') ? '<div>' + this.getAttribute('data-copyright') + '</div>' : ''), null, i, prev, next);
                };
            })(prev);
            el.style.cursor = 'pointer';
            prev = els[i];
        }
    }
    if ($('fbContainer'))
    {
        flippingBook = new FlippingBook();
        
        function wheel(event){
            var delta = 0;
            if (!event) event = window.event;
            if (event.wheelDelta) {
                delta = event.wheelDelta/120; 
                if (window.opera) delta = -delta;
            } else if (event.detail) {
                delta = -event.detail/3;
            }
            if (delta)
                flippingBook.handleWheel(delta);
                if (event.preventDefault)
                        event.preventDefault();
                event.returnValue = false;
        }

        if (window.addEventListener)
            window.addEventListener('DOMMouseScroll', wheel, false);
        window.onmousewheel = document.onmousewheel = wheel;
    }
});

function FlippingBook() {
    this.pages = [];
    this.zoomPages = [];
    this.printPages = [];
    this.contents = [];

    this.stageWidth = "100%";
    this.stageHeight = "100%";
    
    this.settings = {
            bookWidth: 640,
            bookHeight: 480,
            pagesSet: this.pages,
            zoomPagesSet: this.zoomPages,
            printPagesSet: this.printPages,
            scaleContent: true,
            preserveProportions: false,
            centerContent: true,
            hardcover: false,
            hardcoverThickness: 3,
            hardcoverEdgeColor: 0xFFFFFF,
            highlightHardcover: true,
            frameWidth: 0,
            frameColor: 0xFFFFFF,
            frameAlpha: 100,
            firstPageNumber: 1,
            autoFlipSize: 50,
            navigationFlipOffset: 30,
            flipOnClick: true,
            handOverCorner: true,
            handOverPage: true,
            alwaysOpened: false,
            staticShadowsType: "Asymmetric", // Asymmetric, Symmetric, Default
            staticShadowsDepth: 1,
            staticShadowsLightColor: 0xFFFFFF, // works for "Symmetric" shadows only
            staticShadowsDarkColor: 0x000000,
            dynamicShadowsDepth: 1,
            dynamicShadowsLightColor: 0xFFFFFF, // works for "dark" pages only
            dynamicShadowsDarkColor: 0x000000,
            moveSpeed: 2,
            closeSpeed: 3,
            gotoSpeed: 3,
            rigidPageSpeed: 5,
            flipSound: "",
            hardcoverSound: "",
            preloaderType: "Thin", // "Progress Bar", "Round", "Thin", "Dots", "Gradient Wheel", "Gear Wheel", "Line", "Animated Book", "None"
            pageBackgroundColor: 0x99CCFF,
            loadOnDemand: true,
            allowPagesUnload: true,
            showUnderlyingPages: false,
            playOnDemand: true,
            freezeOnFlip: false,
            darkPages: false,
            smoothPages: false,
            rigidPages: false,
            flipCornerStyle: "manually",// "first page only", "each page", "manually"
            flipCornerPosition: "bottom-right",// "bottom-right","top-right","bottom-left","top-left"
            flipCornerAmount: 50,
            flipCornerAngle: 20,
            flipCornerRelease: true,
            flipCornerVibrate: true,
            flipCornerPlaySound: false,
            zoomEnabled: true,
            zoomPath: "pages/large/",
            zoomImageWidth: 900,
            zoomImageHeight: 1165,
            zoomOnClick: true,
            zoomUIColor: 0x8f9ea6,
            zoomHint: "Double click for zooming.",
            zoomHintEnabled: false,
            centerBook: true,		
            useCustomCursors: true,
            dropShadowEnabled: true,
            dropShadowHideWhenFlipping: true,
            backgroundColor: 0xFFFFFF,
            backgroundImage: "/media/flippingbook/img/bookBackground.jpg",
            backgroundImagePlacement: "fit", //  "top left", "center", "fit"
            printEnabled: true,
            printTitle: "Print Pages",
            downloadURL: "",
            downloadTitle: "Download PDF",
            downloadSize: "Size: 4.7 Mb",
            downloadComplete: "Complete",
            extXML: ""
        };
        
        this.containerId = "fbContainer";
        this.forwardButtonId = "fbForwardButton";
        this.backButtonId = "fbBackButton";
        this.zoomButtonId = "fbZoomButton";
        this.printButtonId = "fbPrintButton";
        this.downloadButtonId = "fbDownloadButton";
        this.currentPagesId = "fbCurrentPages";
        this.totalPagesId = "fbTotalPages";
        this.contentsMenuId = "fbContentsMenu";		
};

FlippingBook.prototype.create = function(){
    this.settings.pagesSet = this.pages;
    this.settings.zoomPagesSet = this.zoomPages;
    this.settings.printPagesSet = this.printPages;
    
    if( location.hash.substr(1) != "" )
        this.settings.firstPageNumber = location.hash.substr(1);
    
    this.addLoadEvent( this.onWindowLoad );
    swfobject.embedSWF("/media/flash/FlippingBook.swf", this.containerId, this.stageWidth, this.stageHeight, "8.0.0", "/media/flash/expressInstall.swf", this.settings, {allowScriptAccess: "always", bgcolor:  "#" + this.settings.backgroundColor.toString( 16 ) });
}

FlippingBook.prototype.getFlippingBookReference = function() {
    return this.getObjectReference( this.containerId );
}

FlippingBook.prototype.getObjectReference = function( id ) {
    return document.getElementById( id );
}

FlippingBook.prototype.flipForward = function() {
    flippingBook.getFlippingBookReference().flipForward();
}

FlippingBook.prototype.flipBack = function() {
    flippingBook.getFlippingBookReference().flipBack();
}

FlippingBook.prototype.zoomButtonClick = function() {
    if( flippingBook.getFlippingBookReference().isZoomedIn() )
        flippingBook.zoomOut();
    else
        flippingBook.zoomIn();
}

FlippingBook.prototype.zoomIn = function() {
    this.getFlippingBookReference().zoomIn();
}

FlippingBook.prototype.zoomOut = function() {
    this.getFlippingBookReference().zoomOut();
}

FlippingBook.prototype.print = function() {	
    flippingBook.getFlippingBookReference().print();
}

FlippingBook.prototype.downloadFile = function() {	
    if( flippingBook.settings.downloadURL )
        flippingBook.getFlippingBookReference().downloadFile();
}

FlippingBook.prototype.onWindowLoad = function(){	
    var forwardButton = flippingBook.getObjectReference( flippingBook.forwardButtonId );
    if( forwardButton ){
        forwardButton.style.cursor = "pointer";
        forwardButton.onclick = flippingBook.flipForward;
    }
    
    var backButton = flippingBook.getObjectReference( flippingBook.backButtonId );
    if( backButton ){
        backButton.style.cursor = "pointer";
        backButton.onclick = flippingBook.flipBack;
    }
    
    var zoomButton = flippingBook.getObjectReference( flippingBook.zoomButtonId );
    if( zoomButton ){
        zoomButton.style.cursor = "pointer";
        zoomButton.onclick = flippingBook.zoomButtonClick;
    }
    
    var printButton = flippingBook.getObjectReference( flippingBook.printButtonId );
    if( printButton ){
        printButton.style.cursor = "pointer";
        printButton.onclick = flippingBook.print;
    }

    var downloadButton = flippingBook.getObjectReference( flippingBook.downloadButtonId );
    if( downloadButton ){
        downloadButton.style.cursor = "pointer";
        downloadButton.onclick = flippingBook.downloadFile;
    }
    
    flippingBook.buildContentsMenu();
}

FlippingBook.prototype.onPutPage = function( leftPageNumber, rightPageNumber ){
    this.updatePagination( leftPageNumber, rightPageNumber );
    this.updateContentsMenu( leftPageNumber, rightPageNumber );
}

FlippingBook.prototype.updatePagination = function( leftPageNumber, rightPageNumber ){
    var leftPageExists = ( leftPageNumber != undefined );
    var rightPageExists = ( rightPageNumber != undefined );
            
    var pageNumberString = leftPageNumber + "-" + rightPageNumber;
    if( !leftPageExists )
        pageNumberString = rightPageNumber;	
    if( !rightPageExists )
        pageNumberString = leftPageNumber;

    this.getObjectReference( this.currentPagesId ).innerHTML = pageNumberString;
    this.getObjectReference( this.totalPagesId ).innerHTML = " / " + this.getFlippingBookReference().totalPages();	
}

FlippingBook.prototype.buildContentsMenu = function(){
    var contentsSelect = this.getObjectReference( this.contentsMenuId );
    
    if( contentsSelect ){
        for( var i = 0; i < this.contents.length; i++ )
            contentsSelect.options[i] = new Option(this.contents[i][0], this.contents[i][1]);
            
        contentsSelect.onchange = this.onContentsChange;
    }
}

FlippingBook.prototype.onContentsChange = function(){
    var contentsSelect = flippingBook.getObjectReference( flippingBook.contentsMenuId );
    var pageNumber = contentsSelect.options[contentsSelect.selectedIndex].value;
    
    if( pageNumber )
        flippingBook.getFlippingBookReference().flipGotoPage( pageNumber );
}

FlippingBook.prototype.updateContentsMenu = function( leftPageNumber, rightPageNumber ){
    var contentsSelect = flippingBook.getObjectReference( flippingBook.contentsMenuId );

    if( contentsSelect ){
        for( var i = 0; i < this.contents.length - 1; i++ ){
            var minPage = contentsSelect.options[i].value;
            var maxPage = contentsSelect.options[i+1].value;
            var leftOK = false;
            var rightOK = false;
            
            if( leftPageNumber )
                leftOK = ( Number( leftPageNumber ) >=  minPage && Number( leftPageNumber ) <= maxPage );
            else
                leftOK = true;

            if( rightPageNumber )
                rightOK = ( Number( rightPageNumber ) >=  minPage && Number( rightPageNumber ) <= maxPage );
            else
                rightOK = true;
                
            if( leftOK && rightOK )	
                break;
        }	
        contentsSelect.selectedIndex = i;
    }
}

FlippingBook.prototype.getWindowHeight = function() {
    var windowHeight = 0;
    
    if (typeof(window.innerHeight) == 'number' ) {
        windowHeight=window.innerHeight;
    }
    else {
        if (document.documentElement &&	document.documentElement.clientHeight) {
                windowHeight = document.documentElement.clientHeight;
        }
        else {
            if (document.body&&document.body.clientHeight) {
                windowHeight=document.body.clientHeight;
            }
        }
    }
    
    return windowHeight;
}

FlippingBook.prototype.addLoadEvent = function ( fn ) {
    if (typeof window.addEventListener != "undefined") {
        window.addEventListener("load", fn, false);
    }
    else if (typeof document.addEventListener != "undefined") {
        document.addEventListener("load", fn, false);
    }
    else if (typeof window.attachEvent != "undefined") {
        window.attachEvent("onload", fn);
    }
    else if (typeof window.onload == "function") {
        var fnOld = window.onload;
        window.onload = function() {
            fnOld();
            fn();
        };
    }
    else {
        window.onload = fn;
    }
}

FlippingBook.prototype.handleWheel = function ( delta ){
    this.getFlippingBookReference().onWheelScroll( delta );
}

/***
 * Google search
 */
if (typeof google !== 'undefined') {


  google.load('search', '1');
  google.setOnLoadCallback( function ()
  {
    se = document.getElementById('search_box');
    var customSearchControl = new google.search.CustomSearchControl(gcse_key);
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
    //customSearchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
    customSearchControl.setSearchCompleteCallback(null,
        searchCompleteCallback(customSearchControl));
    customSearchControl.draw(se);
    // customSearchControl.execute("test");
    // customize close button
    var divs = se.getElementsByTagName('div');

    var cb;
    for (var i = 0; i < divs.length; i++) {

      if (divs[i].className === 'gsc-clear-button') {
        cb = divs[i];
      }
    }
    if(lang == 'nl'){
        $(cb).set('title', 'Wis zoekwoorden en zoekresultaten.');
    }

    // customize input field
    var si = se.getElementsByTagName('input')[0];
    si.style.backgroundImage = si.style.backgroundPosition = si.style.backgroundRepeat = '';
    if(lang == 'nl'){
        si.title = "Zoek";
    }
    si.onfocus = si.onblur = function ()
    {
      this.style.backgroundImage = '';
    };
    si.onkeyup = function (e)
    {
      if (!e && window.event) {
        e = window.event;
      }
      if (e.keyCode === 13 && si.value !== '') {
        cb.style.display = '';
      }
    };
    // customize search button
    var sb = se.getElementsByTagName('input')[1];
    if(lang == 'nl'){
        sb.value = "Zoek";
        sb.title = "Zoek";
    }
    sb.onclick = function ()
    {

      if (si.value !== '') {
        cb.style.display = '';
      }
    };
  }, true);
}
function searchCompleteCallback(customSearchControl) {

}

