/*jsl:option explicit*/
/*jsl:import trackviewer.js*/

function modalSlideshow(start_index, data, options) {
    var modalizer, slideshowElement, slideshow, scrolled_before_open;
    
    scrolled_before_open = window.getScroll().y;
    window.scrollTo(0, 0);
    
    options.slide = start_index;
    options.resize = "fit";
    
    modalizer = new Modalizer();
    slideshow = new Slideshow('show', data, options);
    
    slideshowContainer = $('show-container');
    slideshowElement   = $('show');
    
    modalizer.modalShow({
        onModalHide: function () {
            slideshow.destroy();
            slideshowElement.empty();
            slideshowContainer.set('styles', {'z-index': '-2'});
            window.scrollTo(0, scrolled_before_open);
        }
    });
    
    slideshowContainer.addEvent('click', function (event) {
        modalizer.modalHide();
    });
    
    slideshowElement.addEvent('click', function (event) {
        event.stopPropagation();
    });
    
    modalizer.setModalStyle({
        'z-index': '500',
        'background-color': '#000',
        'opacity': '0.9'
    });
    
    slideshowContainer.set('styles', {'z-index': '501'});
}

function modalTrackPresentation(trackName, pages) {
    var modalizer, trackviewer, trackViewerElement;
    
    modalizer   = new Modalizer();
    trackviewer = new TrackViewer(trackName, null, pages);
    
    trackViewerElement = $('trackviewer-div');
    
    modalizer.modalShow({
        onModalHide: function () {
            trackviewer.stop();
            trackViewerElement.set('styles', {'z-index': '-3'});
        }
    });
    
    modalizer.setModalStyle({
        'z-index': '500',
        'background-color': '#000',
        'opacity': '0.9'
    });
    
    trackViewerElement.set('styles', {'z-index': '501'});
    
    trackViewerElement.addEvent('click', function () {
        modalizer.modalHide();
    });
    
    //$('trackviewer-thumbnails-toolbar').addEvent('click', function (event) {
    //    event.stopPropagation();
    //});
    
    trackviewer.start();
}

//tal:attributes="onClick string:javascript:modalSlideshow(${picture/index}, ${view/slideshow_data_param_string}, ${view/slideshow_options_param_string});"

window.addEvent('domready', function () {
    $$(".mini_thumbnail").addEvent('click', function (event) {
        var index, dataJSON, data, optionsJSON, options;
        
        event.stop();
        
        index   = event.target.getProperty('index');
        
        dataJSON = event.target.getProperty('data').replace(/'/g, '"');
        data     = JSON.decode(dataJSON, true);
        
        optionsJSON = event.target.getProperty('options').replace(/'/g, '"');
        options     = JSON.decode(optionsJSON, true);
        
        modalSlideshow(index, data, options);
    });
    
    $$(".track_image").addEvent('click', function (event) {
        var pagesJSON, pages;
        
        event.stop();
        
        trackid = event.target.getProperty('track_id');
        
        pagesJSON = event.target.getProperty('pages').replace(/'/g, '"');
        pages     = JSON.decode(pagesJSON, true);
        
        modalTrackPresentation(trackid, pages);
    });

    $$(".track_header").addEvent('click', function (event) {
        var pagesJSON, pages;
        
        event.stop();
        
        trackid = event.target.getProperty('track_id');
        
        pagesJSON = event.target.getProperty('pages').replace(/'/g, '"');
        pages     = JSON.decode(pagesJSON, true);
        
        modalTrackPresentation(trackid, pages);
    });
	
	var load_more_func = function (event) {
		var last_entry_id, num_items_to_load, spinner;
		
		num_items_to_load = 5;
		
		last_entry_id = event.target.getPrevious().get('item_id');
		
		spinner = new Element('div', {'class' : 'progress_spinner'});
		spinner.replaces(event.target);
		
		(new Request.JSON({
			'method' : 'get',
			'url'    : application_url + "/feedItems",
			'data'   : {
				'start_at_id' : last_entry_id,
				'n_items'     : num_items_to_load + 1
			},
			
			'onSuccess' : function (data) {
				var dummy_div;
				
				data.items.shift(); // Ditch first item, as it's the same as the last in the feed
				
				data.items.each(function (feed_item) {
					dummy_div = new Element('div', { 'html' : feed_item.listwidget_html });
					dummy_div.getChildren().each(function (element) {
						element.inject(spinner, 'before');
					});
				});
				
				if (data.more_items === true) {
					event.target.replaces(spinner);
				}
				else {
					spinner.dispose();
				}
			},
			
			'onFailure' : function () {
				alert('JSON request to ' + application_url + '/feedItems failed!')
			}
		}).send());
	};

	$$(".load_more").addEvent('click', load_more_func);
    
    new OverText($('ftp_username'));
    new OverText($('ftp_password'));
});

function log(str){
  var log = document.getElementById("log")
  if (log){ // let's be safe...
	 log.innerHTML += str + "<br/>";
  }
}

