/*
Default Javascript
Copyright(c) 2010, Deuxeos.fr

Author : Michaël Knauer
michael@deuxeos.fr

Note :
    -
ToDo :
    -
*/

var dxsJs = {
    'version': '1.0.0',

    'encoding': 'utf-8',

    'clsActive': 'active',
    'clsDisabled': 'disabled'
};

// Namespace
dxsJs.namespace = function() {
    var i, j, split, root;
    var args = arguments;
    var obj = null;
    for (i=0; i<args.length; i++) {
        split = args[i].split('.');
        root = split[0];
        eval('if(!$defined('+ root+ ')) {'+ root +' = {};} obj = '+ root +';');
        for (j=1; j<split.length; j++) {
            obj[split[j]] = obj[split[j]] || {};
            obj = obj[split[j]];
        }
    }
};
dxsJs.namespace('dxsJs.Config', 'dxsJs.Interface', 'dxsJs.Widgets', 'dxsJs.Ui');

window.addEvent('domready', function() {
	// Target "_blank"
	$$('a[target=_blank]').each(function(lnk) {
		lnk.setProperty('rel', '_blank');
		lnk.removeProperty('target');
	});
    $$('a[rel=_blank]').each(function(lnk) {
    	lnk.addEvent('click', function(e) {
        	var e = new Event(e);
        	window.open(this.href);
        	e.stop();
        	return false;
      	});
    });

	/* Cufon */
	Cufon.replace('.quaysans', {hover: true});

	/* Nolinks */
	// Désactive les liens (<a>) non cliquables (comme les rubriques dans la toolbar / dropmenu)
	$$('a.nolink').each(function(lnk) {
		lnk.addEvent('click', function(e) {
			if($defined(e)) var e = new Event(e).stop();
		});
	});

	/* Toolbar */
	if($('toolbar')) {
		var dropdowns = $('toolbar').getElements('ul.links li');
		var timer = false;
		var lastdropdown = false;
		dropdowns.each(function(dropdown) {
			dropdown.addEvents({
				'mouseenter': function(e) {
					if(lastdropdown && lastdropdown != dropdown) lastdropdown.removeClass('hover');
					lastdropdown = dropdown;
					$clear(timer);
					dropdown.addClass('hover');
				},
				'mouseleave': function(e) {
					//timer = hideDropdown.delay(2000, dropdown);
					timer = hideDropdown.delay(0000, dropdown);
				}
			});
		});
	}

	/* Mon Espass personnel */
	if($('espassperso')) {
		$('espassperso').getElement('input.login').addEvents({
			'focus': function(e) {
				if(this.get('value') == '') this.addClass(dxsJs.clsActive);
			},
			'blur': function(e) {
				if(this.get('value') == '') this.removeClass(dxsJs.clsActive);
			}
		});

		$('espassperso').getElement('input.password').addEvents({
			'focus': function(e) {
				if(this.get('value') == '') this.addClass(dxsJs.clsActive);
			},
			'blur': function(e) {
				if(this.get('value') == '') this.removeClass(dxsJs.clsActive);
			}
		});
	}

	/* Rercherche */
	if($('recherche')) {
		var txt = 'Rechercher sur le site';
		$('recherche').getElement('input.text').addEvents({
			'focus': function(e) {
				if(this.get('value') == txt) this.set('value', '');
			},
			'blur': function(e) {
				if(this.get('value') == '') this.set('value', txt);
			}
		});
	}

	/* Dropdown sous IE6 */
	if($('menu') && Browser.Engine.trident && Browser.Engine.version < 5) {
		$('menu').getElements('dl.right').each(function(elm) {
			var pos = elm.getPrevious('a').getCoordinates();
			var drop = elm.getElement('dd');
			if(drop) drop.setStyle('right', -pos.width + 6);
		});
	}

	/* Rubriques */
	if($('rubriques')) {
		dxsJs.Interface.Rubriques = new dxsJs.Widgets.Rubriques();
	}

	/* Accordéon des Sous-Rubriques */
	if($('content')) {
		var rubs = $('content').getElements('div.accordion');
		if(rubs.length > 0) {
			var togglers = $('content').getElements('h2');
			var display = togglers.indexOf($('content').getElement('h2.'+ dxsJs.clsActive));
			var current ;

			display = (display != -1) ? display : 0;

			dxsJs.Ui.Accordion = new Fx.Accordion(togglers, rubs, {
				initialDisplayFx: false,
				display: display,
				onActive: function(toggler, area) {
					toggler.addClass(dxsJs.clsActive);

					current = toggler ;
				},
				onBackground: function(toggler, area) {
					toggler.removeClass(dxsJs.clsActive);
				},
				onComplete: function() {
					var scroll = new Fx.Scroll(window).toElement(current);
				}
			});

			if (display > 0)
			{
				var scroll = new Fx.Scroll(window).toElement(togglers[display]);
			}
		}
	}
});

function hideDropdown() {
	this.removeClass('hover');
	lastdropdown = false;
}


/**
Class: Widgets.Rubriques
*/
dxsJs.Widgets.Rubriques = new Class({
    Implements: [Options],
    options: {
		elm: 'rubriques',
		dom: {
			container: 'dl',
			toggle: 'dt',
			area: 'dd',
			content: 'div.content'
		}
    },

    initialize: function(options) {
        this.setOptions(options);
		this.dom = {};
		this.fx = {};

		// Elements
		this.elm = $(this.options.elm);
		for(var dom in this.options.dom) {
            var elms = this.elm.getElements(this.options.dom[dom]);
            this.dom[dom] = (elms && elms.length > 1) ? elms : elms[0];
        }

		// Constants
		this.index = false;

		// Fx
		this.fx = new Fx.Elements(this.dom.area, {link: 'chain', duration: 500});

		if(Browser.Engine.webkit && Browser.Engine.version <= 525) this.init.delay(50, this);
		else this.init();
    },

	init: function() {
		var active = this.elm.getElement('li.'+ dxsJs.clsActive);
		if(active) active = active.getParent(this.options.dom.area);
		var input_hidden= document.getElementById('hidden_menu_rubrique').value;
		if(document.getElementById('search_page').value > 0) 
		{
			input_hidden=1;
		}
		
		var activeIndex = 0;
		if( input_hidden == 1)
			{
				activeIndex = -1;
			}
		if (this.dom.area != undefined && this.dom.area.length != undefined) {

			this.dom.area.each(function(elm, index) {
				var height = elm.getHeight();
				elm.store('height', height);
				this.dom.content[index].setStyle('position', 'absolute');
				if(active && elm == active) activeIndex = index;
				this.dom.toggle[index].addEvent('click', function(e) {
					if($defined(e)) var e = new Event(e).stop();
					this.display(index, false);
				}.bind(this));
			}, this);
		}
		this.display(activeIndex, true);
	},

	display: function(index, noFx) {
		if(this.index === index || index == -1) return false;
		var obj = {};
		// Reset
		if (this.dom.area != undefined && this.dom.area.length != undefined) {
			this.dom.area.each(function(elm, i) {
				obj[i] = {};
				obj[i].height = 0;
				this.dom.container[i].removeClass(dxsJs.clsActive);
			}.bind(this));

			// Active
			obj[index].height = this.dom.area[index].retrieve('height');
		}
		if (this.dom.container != undefined && this.dom.container[index] != undefined) {
			this.dom.container[index].addClass(dxsJs.clsActive);
		}

		this.index = index;
		return noFx ? this.fx.set(obj) : this.fx.start(obj);
	}
});

