/*
Script: ScrollLink.class.js
	Contains <TopLink>
 
Author:
	Olivier Gasc, <jahjah@mibhouse.org>
 
License:
	MIT-style license.
 
*/
 
/*
Class: ScrollLink, simple scroll link
 
Arguments:
	id : the div id to apply
*/

var ScrollLink = new Class ({
	options: {
		id	: 'scrollLink'
	},	

	initialize: function(options){
		this.setOptions(options);
		
		// Vire la div si elle existe déja
		if ($(this.options.id))
			$(this.options.id).remove();
		
		// Construit les div
		this.setDiv();

		// Replace la div en bas a gauche périodiquement
		  this.setDivPosition.periodical(30, this);
    },
    
    setDiv: function()
    {
    	// Crée la première div
    	var oDiv = new Element('div', {
    		'id': 		this.options.id,
    		'name': 	'scrollDiv',
    		'class': 	this.options.id.capitalize()
    	});
    	document.body.appendChild(oDiv);

    	// Crée le lien
    	var oA = new Element('a', {
    		'id'	: this.options.id + 'Link',
    		'name'	: 'scrollLink',
    		'href'	: '#scrollLinkTop',
    		'class'	: this.options.id.capitalize()
    	}).setText('Revenir en haut de la page').injectInside(this.options.id);
    	
    	// Insere l'ancre en premier dans la page
    	var oFirstChild = oDiv.getParent().getFirst();

    	if (!oFirstChild.getProperty('id')) {
    		oFirstChild.setProperty('id', 'FIRST_ELEMENT');
    		var sIdFirst = 'FIRST_ELEMENT';
    	} else
    		var sIdFirst = oFirstChild.getProperty('id');
    	
    	var oAnchor = new Element('a', {
    		'id'	: this.options.id + 'Link',
    		'name'	: 'scrollLinkTop'
    	}).injectBefore(sIdFirst);

    	if (oFirstChild.getProperty('id') == 'FIRST_ELEMENT')
    		oFirstChild.removeProperty('id');
	},
	
	setDivPosition: function()
	{
		if ($(this.options.id)) {
			var oWindowSize = window.getSize();
			var oDivSize	= $(this.options.id).getSize();

			// Place la div en bas a gauche
			$(this.options.id).setStyles({
				'top' 		: oWindowSize.scroll.y + oWindowSize.size.y - oDivSize.size.y - 6,
				'left'		: oWindowSize.scroll.x + oWindowSize.size.x - oDivSize.size.x - 4
			});

			// Si le scroll dépasse les 200px
			if (oWindowSize.scroll.y > 200) {
				// Affiche la div
				$(this.options.id).setStyles({
					'display' 	: 'inline'
				});
			} else {
				// Sinon masque la div
				$(this.options.id).setStyles({
					'display' 	: 'none'
				});
			}
		}
	}
});

ScrollLink.implement(new Options);
