
var imageserver = {
    initialized: false, // will be set to True when initialized and button active
    set_url: null,
    set_id: null,
    image_size: null,
    variant: null,
    token: null,
    solr: "http://solr.toffd.de/select",
    //solr: "http://dev.solr.toffd.de/select",
    display_data: {},
    load: function() {
        imageserver.init_frame();
        $.getJSON(imageserver.set_url+imageserver.variant+".json?tmpl=showbox&token="+imageserver.token+"&callback=?",
        function(data, textStatus) {
            var imagefield_selector = "#imagefield, .imageset."+imageserver.variant;
            $(imagefield_selector).empty();
            $.each(data.images, function(idx, item) {
                $(imagefield_selector).append(item.html);
            });
            if (!data.all_copyrights) {
                $("#nocopyright").show();
            };
            imageserver.check_rightsholder();
        });
    },
    
    check_rightsholder: function() {
        var rh = $('div.rightsholder').contents();
        var all_rh = '';
        $.each(rh, function(idx, val) {
            var v = val.data;
            /*v = v.replace($('<textarea/>').html('&copy;').val(), '');
            v = $.trim(v);
            v = v+'_';*/
            all_rh = all_rh.concat(v);
        });  
        $('#all-rightholders').attr('value', all_rh);
    },
    
    init_thumb: function(elem) {
        imageserver.set_id = elem.attr("data-set");
        imageserver.set_url = elem.attr("data-baseurl")+"/sets/"+imageserver.set_id;
        var template = [
        '<div class="imagebox""> ',
        '    <div class="imageborder"> ',
        '        <a href="{{imageserver_url}}{{large}}" ',
        '            class="gallery" ',
        '            title="&copy; {{rightsholder}}" >',
        '            <img src="{{imageserver_url}}{{thumb}}" class="img imagethumb" ', 
        '                alt="&copy; {{rightsholder}}"  ',
        '            />',
        '        </a> ',
        '    </div>',
        '</div>'].join('\n');
        $.getJSON(imageserver.set_url+"/info?callback=?",
            function(data, textStatus) {
                var item = data[0];
                item['imageserver_url'] = elem.attr("data-baseurl")+"/images/";
                var html = $(Mustache.to_html(template, item));
                elem.html(html);
            }
        );
    },
    
    init_slideshow: function(did, ddata) {
        //imageserver.set_id = elem.attr("data-set");
        //imageserver.set_url = elem.attr("data-baseurl")+"/sets/"+imageserver.set_id;

        var elem = $('.imagecontainer[data-did="'+did+'"]');
        
        var template = [
        '<div class="imagebox""> ',
        '    <div class="imageborder"> ',
        '        <a href="{{large}}" ',
        '            class="gallery" ',
        '            title="&copy; {{rightsholder}}" ', 
        '            rel="group-{{rel_id}}"> ',
        '            <img src="{{slideshow}}" class="img" ', 
        '                alt="&copy; {{rightsholder}}"  ',
        '            />',
        '        </a> ',
        '        <div class="rightsholder">&copy; {{rightsholder}}</div> ',
        '    </div>',
        '</div>'].join('\n');

        var preview_elem = elem.find(".slideshow-preview");
        var full_elem = elem.find(".slideshow-full");
        var imageslider = elem.find(".imageslider");
        
        image_data = ddata.image_data;
        if (image_data.length==0) {
            return;
        }
        
        // small slider
        preview_elem.empty();
        $.each(image_data, function(idx, item) {
            // create image url with right size
            item['rel_id'] = 'preview'+did;
            var html = $(Mustache.to_html(template, item));
            preview_elem.append(html);
        });
        if (image_data.length > 1) {
            $(elem).find(".scrollable").scrollable({'keyboard': false});
            $(elem).find('.slideshownav.small').show();
        };
        
        // large slider
        full_elem.empty();
        $.each(image_data, function(idx, item) {
            item['rel_id'] = 'full'+did;
            var html = $(Mustache.to_html(template, item))
            full_elem.append(html);
        });
        
        imageslider.show();
        $("a.gallery").fancybox({'type':'image', 'titlePosition': 'inside'});
    },

    init_imagefield: function(elem) {
        imageserver.set_url = elem.attr("data-seturl");
        imageserver.token = elem.attr("data-token");
        imageserver.set_id = elem.attr("data-set");
        imageserver.variant = elem.attr("data-variant");
        
        
        if (!imageserver.variant) {
            imageserver.variant = "edited";
        }
        if (imageserver.variant==="edited") {
            $.getJSON(imageserver.set_url+"clone?method=POST&token="+imageserver.token+"&callback=?",
                function(data, textStatus) {
                    imageserver.load();
                }
            );
        } else {
            imageserver.load();
        }

    },

    // initialize the iframe which in turn will initialize the button and
    // overlay when it has finished loading
    init_frame: function() {

        // only initialze once! (it can be called again on every load)
        if (imageserver.initialized) {
            return;
        }

        $("#imagemanager").hide();
        var e = $("<iframe>")
                .attr({
                    src: imageserver.set_url+imageserver.variant+"/edit?token="+imageserver.token,
                    id: "imagecontainer_frame",
                    onLoad: '"'+imageserver.init_overlay()+'"'
                });
                // the ' ""+ ' in the onLoad-directive is due to a bug in IE7,
                // it forces IE7 to cast the whole expression as a string, otherwise it wouldn't load
        $("#frameholder").replaceWith(e);
    },

    // init the overlay and the button
    init_overlay: function() {

        // initialize the overlay (jquerytools)
        var triggers = $("#imagemanager").overlay({
            closeOnClick: false
        });

        // close button inside the popup
        $("#closebutton").click(function(e) {
            triggers.eq(0).overlay().close();
            imageserver.load();
            return e.preventDefault();
        });
        $("#imagemanager").show();
        imageserver.initialized=true;
    },

    init_difffield: function(elem) {
        imageserver.set_url = elem.attr("data-seturl");
        imageserver.token = elem.attr("data-token");
        imageserver.set_id = elem.attr("data-set");
        if (!imageserver.variant) {
            imageserver.variant = "edited";
        }
        $.getJSON(imageserver.set_url+"diff.json?tmpl=showbox&token="+imageserver.token+"&callback=?",
            function(data, textStatus) {
                var elem1 = $("#imageset1").empty();
                var elem2 = $("#imageset2").empty();
                $.each(data.public, function(idx, item) {
                    elem1.append(item.html);
                });
                $.each(data.edited, function(idx, item) {
                    elem2.append(item.html);
                });
                imageserver.init_frame();
            }
        );

    },
        
    create_slideshow: function() {
        var dids = [];
        $.each($(".imagecontainer"), function(idx, item) {
            dids.push($(item).attr('data-did'));
        });
        if (dids.length > 0) {
            var q = "id:"+dids.join("%20OR%20id:");
            $.ajax({
                type: 'GET',
                url: imageserver.solr,
                dataType: 'json',
                jsonp: 'json.wrf',
                data: "qt=standard&wt=json&fl=id,json&q=" + q,
                success: function(data){
                    denkmale = data.response.docs;
                    for (var i = 0; i < denkmale.length; i++) {
                        //imageserver.display_data[denkmale[i].id.toString()] = denkmale[i].json;
                        var did = denkmale[i].id;
                        var ddata = $.evalJSON(denkmale[i].json);
                        imageserver.init_slideshow(did, ddata);
                    }
                }
            });
        }
    },

    init: function() {
        $(document).ready(function() {

            var elem = $("#imagefield");
            
            if (elem.length) {
                imageserver.init_imagefield(elem);
            }

            var elem = $("#image-diff-field");
            if (elem.length) {
                imageserver.init_difffield(elem);
            }
            
            imageserver.create_slideshow();

        });
    }
}

imageserver.init();
toffd.init();
menu.init();


