var debug = false;

var FlashPlayerLoader = Class.create(
{
    initialize: function()
    {
        $$('.columnplayer').each(function(player, index){
            jwplayer(player.id).setup({
                'skin'       : 'http://www.michel-lafon.fr/skins/MLP/default/player/glow.zip',
                'flashplayer': 'http://www.michel-lafon.fr/flash/player.swf',
                'controlbar' : 'over',
                'controlbar.idlehide': true,
                'wmode': 'opaque'
            });
        });
    }
});

var BuyWidget = Class.create(UI.WidgetAbstract,
{
    initialize: function($super, options)
    {
        $super(options);

        this.render();

        this.activate();
    },

    onBuyLink: function(event, btn)
    {
        event.stop();

        var box     = this.box;
        var book_id = this.getBookId(btn);

        //box.updateContent('Let\'s buy it!' + this.getBookId(btn));
        box.updateContent('<div class="iframe-loader" style="width:400px;height:160px;"><iframe src="/api/buy-online/book_id/' + book_id + '" width="400" height="160"></iframe></div>');
        box.show();
        box.center();
    },

    getBookId: function(btn)
    {
        var book_id = 0;

        if(1 == btn.nodeType)
        {
            book_id = parseInt(btn.href.substring(btn.href.indexOf('/livre/') +  7, btn.href.length));
        }

        return book_id;
    },

    render: function()
    {
        this.box = new UI.ModalBox();

        this.box.updateTitle('ACHAT EN LIGNE');
    },

    activate: function()
    {
        $$('.btn-buy-widget').each(function(btn){
            btn.on('click', this.onBuyLink.bindAsEventListener(this, btn));
        }.bind(this));
    }
});

var MainNavigation = Class.create(
{
	options  : {},
	sections : [],
	panel    : null,
	rendering: false,
	selected : 0,

	utils   : {
		getPosFromId: function(id){

			var pos = parseInt(id.substring(id.lastIndexOf('-')+1, id.length))

			return pos;
		}
	},

	initialize: function(options)
	{
		this.options = Object.extend(this.options, options || {});

		this.initSections();
		this.initPanel();
		this.activate();
	},

	onTabClicked: function(event, section)
	{
		if(section.html)
		{
			event.stop();

			if(!this.rendering)
			{
				Effect.Queues.get('mainnavigation').invoke('cancel');

				var panel    = this.panel;
				var prev     = this.selected;
				var sections = this.sections;
				var selected = this.selected;

				sections[selected].tab.removeClassName('selected');

				this.selected = section.pos;

				if(panel.visible())
				{
					new Effect.BlindUp(panel, {
						duration: 0.25,
						queue   : {
							position: 'front',
							scope   : 'mainnavigation',
							limit   : 2
						},
						beforeStart: function(){
							this.rendering = true;
						}.bind(this),
						afterFinish: function(){


							if(section.pos === prev)
							{
								sections[selected].tab.removeClassName('selected');
								this.rendering = false;
							}
							else
							{
								panel.update(section.html);
							}

						}.bind(this)
					});

					if(section.pos !== prev)
					{
						section.tab.addClassName('selected');

						new Effect.BlindDown(panel, {
							duration: 0.25,
							queue   : {
								position: 'end',
								scope   : 'mainnavigation',
								limit   : 2
							},
							beforeStart: function(){
								this.rendering = true;
							}.bind(this),
							afterFinish: function(){
								this.rendering = false;
							}.bind(this)
						});
					}
				}
				else
				{
					panel.update(section.html);

					section.tab.addClassName('selected');

					new Effect.BlindDown(panel, {
						duration: 0.25,
						queue   : {
							position: 'front',
							scope   : 'mainnavigation',
							limit   : 2
						},
						beforeStart: function(){
							this.rendering = true;
						}.bind(this),
						afterFinish: function(){
							this.rendering = false;
						}.bind(this)
					});
				}
			}
		}
	},

	activate: function()
	{
		this.sections.each(function(section, pos){
			section.tab.observe('click', this.onTabClicked.bindAsEventListener(this, section));
		}.bind(this));
	},

	initPanel: function()
	{
		$('header-content-bottom').insert({
			bottom: '<div id="main-navigation-sub-container">' +
					'</div>' +
					'<div class="clearer"></div>'
		});

		this.panel = $('main-navigation-sub-container').hide();
	},

	initSections: function()
	{
		var sections        = $('main-navigation').select('li.main-navigation-section');
		var sectionTemplate = new Template('<div>' +
											   '<ul>' +
											       '#{links}' +
										 	   '</ul>' +
										   '</div>');

		sections.each(function(section, pos){

			var elements = section.childElements();
			var html     = null;
			var subNav   = elements[1];

			if(subNav)
			{
				subNav.hide();

				html = sectionTemplate.evaluate({links: subNav.innerHTML});
			}

			this.sections.push({
				pos : pos,
				tab : elements[0],
				html: html
			});

		}.bind(this));
	}
});

var LinkWidget = Class.create(UI.WidgetAbstract,
{
   initialize: function($super, options)
   {
        $super(options);

        this.activate();
   },

   activate: function()
   {
        $$('a.new-page').each(function(btn){
            btn.on('click', function(event, link){

                event.stop();

                if('IMG' == link.nodeName)
                {
                    uri = $(link.parentNode).href;
                }
                else
                {
                    uri = link;
                }

                var win = window.open(uri, 'MLP');

                win.focus();
            });
        });

        $$('a.btn-twitter').each(function(btn){
            btn.on('click', function(event, link){

                event.stop();

                var win = window.open(link, 'MLP');

                win.focus();
            });
        });

        $$('a.btn-facebook').each(function(btn){
            btn.on('click', function(event, link){

                event.stop();

                var win = window.open(link, 'MLP');

                win.focus();
            });
        });
   }
});

var PrintWidget = Class.create(UI.WidgetAbstract,
{
    initialize: function($super, options)
    {
        $super(options);

        this.activate();
    },

    activate: function()
    {
        $$('a.btn-print').each(function(btn){
            btn.on('click', function(event){

                event.stop();

                window.print();
            });
        });
    }
});

var SendToFriendWidget = Class.create(UI.WidgetAbstract,
{
    initialize: function($super, options)
    {
        $super(options);

        this.render();

        this.activate();
    },

    onSendToFriend: function(event, btn)
    {
        event.stop();

        var box     = this.box;
        var book_id = this.getBookId(btn);

        box.updateContent('<div class="iframe-loader" style="width:326px;height:160px;"><iframe src="/api/send-to-friend/book_id/' + book_id + '" width="326" height="160"></iframe></div>');
        box.show();
        box.center();
    },

    getBookId: function(btn)
    {
        var book_id = 0;

        if(1 == btn.nodeType)
        {
            book_id = parseInt(btn.href.substring(btn.href.indexOf('/livre/') +  7, btn.href.length));
        }

        return book_id;
    },

    render: function()
    {
        this.box = new UI.ModalBox();

        this.box.updateTitle('ENVOI &Agrave; UN AMI');
    },

    activate: function()
    {
        $$('a.btn-send').each(function(btn){
            btn.on('click', this.onSendToFriend.bindAsEventListener(this, btn));
        }.bind(this));
    }
});

var TwitterSharer = Class.create(UI.WidgetAbstract,
{
    initialize: function($super, options)
    {
        $super(options);

        this.render();

        this.activate();
    },

    onSendToFriend: function(event, btn)
    {
        event.stop();

        var box = this.box;

        box.updateContent('<iframe src="' + btn + '" width="326" height="160"></iframe>');
        box.show();
        box.center();
    },

    render: function()
    {
        this.box = new UI.ModalBox();

        this.box.updateTitle('PARTAGER SUR TWITTER');
    },

    activate: function()
    {
        $$('a.btn-twitter').each(function(btn){
            btn.on('click', this.onSendToFriend.bindAsEventListener(this, btn));
        }.bind(this));
    }
});

var FacebookSharer = Class.create(UI.WidgetAbstract,
{
    initialize: function($super, options)
    {
        $super(options);

        this.render();

        this.activate();
    },

    onSendToFriend: function(event, btn)
    {
        event.stop();

        var box = this.box;

        box.updateContent('<iframe src="' + btn + '" width="326" height="160"></iframe>');
        box.show();
        box.center();
    },

    render: function()
    {
        this.box = new UI.ModalBox();

        this.box.updateTitle('PARTAGER SUR FACEBOOK');
    },

    activate: function()
    {
        $$('a.btn-facebook').each(function(btn){
            btn.on('click', this.onSendToFriend.bindAsEventListener(this, btn));
        }.bind(this));
    }
});

var AgendaWidget = Class.create(UI.TabPanel, {});

document.observe('dom:loaded', function(){

	var navigation = new MainNavigation();

    var agenda = new AgendaWidget({
        containerName: 'agenda',
        maxHeight: 400,
        minHeight: 400
    });

    var player   = new FlashPlayerLoader();

    var links    = new LinkWidget();
    var printers = new PrintWidget();
    var senders  = new SendToFriendWidget();
    //var twitter  = new TwitterSharer();
    //var facebook = new FacebookSharer();
});

Event.observe(window, 'load', function(){
    var buyer = new BuyWidget();
});

