var MiniCalOverlay = {
    init: function () {
        MiniCalOverlay.build();
    },
    build: function () {
        this.calendar = $('minical');
        var links = this.calendar.select('a');
        this.links = [];
        for (var i = 0; i < links.length; i++) {
            if (links[i].getAttribute('rel') && links[i].getAttribute('rel') != '') {
                links[i].href = '#';
                this.links.push(links[i]);
                //links[i].observe('click', this.__linkClick.bindAsEventListener(this));
            }
        }
        this.links.invoke('observe', 'click', this.__linkClick.bindAsEventListener(this));

        this.gui = {
            timeWindow: $('date_window'),
            btn_Close: $('close'),
            h3_Head: $('win_head'),
            div_Content: $('date_content')
        }

        try {
            this.gui.timeWindow.hide();

            this.gui.btn_Close.observe('click', this.__closeClick.bindAsEventListener(this));
        } catch (e) { }
    },

    __linkClick: function (e) {
        e.stop();

        var link = e.findElement('a');
        console.log(e.element);
        var id = link.getAttribute('rel');
        var date = $('h3_' + id);
        var content = $('div_' + id);
        this.open(date.innerHTML, content.innerHTML);
    },

    __closeClick: function (e) {
        e.stop();
        this.close();
    },

    open: function (sDate, sContent) {
        // set the content
        this.gui.h3_Head.update(sDate);
        this.gui.div_Content.update(sContent);
        //this.gui.timeWindow.setStyle({visibility: 'visible'});
        this.gui.timeWindow.appear({ duration: 0.2 });
    },

    close: function () {
        this.gui.timeWindow.fade({ duration: 0.2 });

        //this.gui.timeWindow.style.visibility = 'hidden';
    }
}

// mask calendar with spinner.
var MiniCalSpinner = {
	init: function(){
		MiniCalSpinner.build();
	},
	
	build: function(){
		//this.calendar = $('minical');
		var spinner = new Element('div', {'id': 'minical_spinner', 'style': 'display:none;'});
		
		//$('minical').insert({top: spinner});
		MiniCalOverlay.calendar.insert({top : spinner});
		this.spinner = spinner;
	},
	
	beforeMiniCalXHR: function(e){
		//console.log('before fired');
		Element.clonePosition(MiniCalSpinner.spinner, MiniCalOverlay.calendar);
		
		//this.spinner.show();
		MiniCalSpinner.spinner.appear({to: 0.75, duration:0.25});

		document.fire(e.memo.preRequestEventKey, e.memo);
		
	},

	afterMiniCalXHR: function(e){
		MiniCalOverlay.build();
		MiniCalSpinner.spinner.fade({from: 0.75, duration: 0.25});
		//console.log('after fired');
	}    

}
