
if('jQuery' in window)
{
    (function($) {
        $.fn.galleryNavigation = function(options)
        {
            var settings = {
                inDuration: 800,
                outDuration: this.inDuration,
                startPos: 0,
                movingBlock: 'a',
                movement: 'horizontal', // horizontal ou vertical
                start: 'left' // left ou right si movement = horizontal ; top ou bottom si movement = vertical
            };

            $.extend(settings, options);
			
            //alert(jQuery(this).selector)
			
            return this.each(function(){
                var jQItem = jQuery(this);
                var itemHeight = jQItem.height();
                var itemWidth = jQItem.width();
				
                if(!('endPos' in settings))
                {
                    if(settings.movement == 'vertical')
                    {
                        settings.endPos = itemHeight;
                    }
                    else
                    {
                        settings.endPos = itemWidth;
                    }
                }
				
                var horizontalValue = -settings.endPos;
                var verticalValue = 0;
                var animatedValue = 'left';
                if(settings.movement == 'vertical')
                {
                    horizontalValue = 0;
                    verticalValue = -settings.endPos;
                    animatedValue = 'top';
                }
				
                jQuery(settings.movingBlock,this).css('left',horizontalValue+'px');
                jQuery(settings.movingBlock,this).css('top',verticalValue+'px');
                jQuery(settings.movingBlock,this).css('width',itemWidth+'px');
                jQuery(settings.movingBlock,this).css('height',itemHeight+'px');
                //,easein: easeInOutElastic
                jQuery(this).hover(function()
                {
                    var animatedObject = {};
                    animatedObject[animatedValue] = settings.startPos+'px';
                    jQuery(settings.movingBlock,this).stop().animate(animatedObject,{
                        duration: settings.inDuration
                    });
                },
                function()
                {
                    var animatedObject = {};
                    animatedObject[animatedValue] = (-settings.endPos)+'px';
                    jQuery(settings.movingBlock,this).stop().animate(animatedObject,{
                        duration: settings.outDuration
                    });
                }
                );

            });
        }
    })(jQuery);
	
    /* Affichage d’un popin au chargement de la page
	
	config : {
				popinInitClass: 'init-popin', // classe de l’élément affiché
				layerInitClass: 'init-layer' // classe du calque couvrant la page
			};
	
	si layerInitClass = '' dans config, affichage du popin sans layer derrière
	*/
    
    function Popin(options)
    {
        var settings = {
            popinInitClass: 'init-popin',
            popinClass: 'popin',
            popinActiveClass: 'active-popin',
            layerClass: 'layer',
            layerInitClass: 'init-layer',
            layerActiveClass: 'active-layer',
            closeText: 'Fermer',
            closeButton: true,
            closeZone: null,
            addContainer: false,
            content: '',
            url: '',
            element: null
        };
        
        if(!!options)
        {
            jQuery.extend(settings, options);
        }
        
        var iPop;
        
        /* Méthodes privées début */
        
        function movePopin()
        {
            if((iLayer != null) && iLayer.hasClass(settings.layerActiveClass))
            {
                var viewportWidth = jQuery(window).width();
                var viewportHeight = jQuery(window).height();
                
                iPop.css({
                    'left': (viewportWidth-iPop.width())/2+jQuery(document).scrollLeft(),
                    'top': (viewportHeight-iPop.height())/2+jQuery(document).scrollTop()
                },100);
            }
        }
        
        function closePopin(ev)
        {
            if(iLayer != null)
            {
                iLayer.removeClass(settings.layerActiveClass);
            }
            iPop.removeClass(settings.popinActiveClass);
            if(jQuery.browser.msie)
            {
                jQuery('select').show();
            }
            ev.preventDefault();
        }
        
        function setLayerDimension()
        {
            if(iLayer != null)
            {
                var viewportWidth = jQuery(window).width();
                var viewportHeight = jQuery(window).height();
                
                var documentWidth = jQuery(document).width();
                var documentHeight = jQuery(document).height();
                
                var layerWidth = documentWidth < viewportWidth ? viewportWidth : documentWidth;
                var layerHeight = documentHeight < viewportHeight ? viewportHeight : documentHeight;
                
                iLayer.width(layerWidth);
                iLayer.height(layerHeight);
            }
        }
        
        function updateLayer()
        {
            if(iLayer != null)
            {
                setLayerDimension();
            }
            movePopin();
        }
        
        /* Méthodes privées fin */
        
        if(settings.element == null)
        {
            iPop = jQuery('.'+settings.popinClass);
        
            if((settings.url != '') || (settings.addContainer && (iPop.length == 0)))
            {
                jQuery('body').append('<div class="'+settings.popinClass+'"/>');
            }
            iPop = jQuery('.'+settings.popinClass);
        }
        else
        {
            iPop = settings.element;
        }
        
        if(!!iPop && (iPop.length > 0))
        {
            var iLayer = null;
            if(settings.layerInitClass != '')
            {
                iLayer = jQuery('.'+settings.layerClass);
                if(iLayer.length == 0)
                {
                    jQuery('body').append('<div class="'+settings.layerClass+' '+settings.layerInitClass+'"/>');
                }
            }
            
            if(settings.content != '')
            {
                iPop.html(settings.content);
            }
            
            if(settings.url != '')
            {
                var iFr = jQuery('iframe',iPop);
                
                if(iFr.length == 0)
                {
                    iPop.append('<iframe src="'+settings.url+'" frameborder="0"/>');
                    updateLayer();
                }
            }
            
            iPop.addClass(settings.popinActiveClass);
            
            if(iLayer != null)
            {
                if(jQuery.browser.msie)
                {
                    jQuery('select').hide();
                }
				
                iLayer = jQuery('.'+settings.layerClass);
                iLayer.addClass(settings.layerActiveClass);
                
                iPop.css({
                    'z-index': iLayer.css('z-index')+1
                });
            }
            
            movePopin();
            
            if(iLayer != null)
            {
                setLayerDimension();
            }
            
            if(settings.closeZone == null)
            {
                if(settings.closeButton)
                {
                    var closeZone = jQuery('.close',iPop);
                    if(closeZone.length == 0)
                    {
                        iPop.append('<span class="close" title="'+settings.closeText+'">'+settings.closeText+'</span>');
                        jQuery('.close',iPop).click(closePopin);
                    }
                }
            }
            else
            {
                if(settings.closeZone.constructor == jQuery)
                {
                    settings.closeZone.click(closePopin);
                }
            }
            
            if(iLayer != null)
            {
                iLayer.click(closePopin);
            }
            
            jQuery(window).scroll(movePopin);
            jQuery(window).resize(updateLayer);
        }
    }
    
    (function()
    {
        var _pColl = {};
        
        window.PopinCollection = {
            createPopin: function(pId)
            {
                var conf = arguments[1] || {};
                _pColl[pId] = new Popin(conf);
            }
        };
    })();

    /* 
	(function($) {
		$.fn.onLoadPopin = function()
		{
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('loadPopin',{});
            }
		};
	})(jQuery);
	 */
    
    
    /* Affichage/masquage d’un panneau en cliquant sur un lien
	
	le panneau doit avoir un id
	le lien un href pointant vers l’id
	
	config: {
				activeLinkText: 'Repliez', // texte du lien cliqué global (par défaut) 
				activeLinkClass: 'active-link', // classe du lien cliqué
				activePanelClass: 'active-panel' // classe du panneau ouvert (associé au lien cliqué)
			}
		
		si les liens on un attribut "data-text" (HTML5), on peut fournir un texte de lien cliqué, pour chaque lien
	*/
    (function($) {
        $.fn.optionPanel = function(options)
        {
            var settings = {
                activeLinkText: 'Repliez',
                activeLinkClass: 'active-link',
                activePanelClass: 'active-panel'
            };

            $.extend(settings, options);
			
            jQuery(jQuery(this).selector).click(function(ev)
            {
                var currentLink = jQuery(this);
				
                var lnk = currentLink.attr('href');
                if(!currentLink.data('defaultText'))
                {
                    currentLink.data('defaultText',currentLink.text());
                }
                var activeText = currentLink.attr('data-text');
                if(!!activeText)
                {
                    currentLink.data('activeText',activeText);
                }
                else
                {
                    currentLink.data('activeText',settings.activeLinkText);
                }
				
                jQuery(lnk).toggleClass(settings.activePanelClass);
				
                if(currentLink.hasClass(settings.activeLinkClass))
                {
                    currentLink.removeClass(settings.activeLinkClass);
                    currentLink.text(currentLink.data('defaultText'));
                }
                else
                {
                    currentLink.addClass(settings.activeLinkClass);
                    currentLink.text(currentLink.data('activeText'));
                }
				
                ev.preventDefault();
            });
        }
    })(jQuery);
			
    jQuery(document).ready(function()
    {
        /* Tous les champs dotés de la classe clear sont effacés automatiquement quand on clique dedans */
        jQuery('input.clear').focus(function(ev)
        {
            if(this.value == this.defaultValue)
            {
                this.value = '';
            }
        });
        
        jQuery('.actionSearch input[type="text"]').focus(function(ev)
        {
            jQuery(this).addClass('focus');
        });
        
        //jQuery('.resume ul li').append('<span class="delete" title="Supprimer ce critère"/>');
        jQuery('.resume ul').addClass('ui-init');
        
        jQuery('.resume ul li .delete').click(function(ev)
        {
            /* Suppression d'un tag du résumé de recherche : Exécution à définir */
            ev.preventDefault();
        });
        
        /* 	var iElem = document.createElement('input');
	alert(typeof iElem.placeholder) */
	
	
        /*var _config = {'activeClass': 'active'};
		
		var currentElement = null;
		var aE = jQuery('.secondary-nav > ul > li.'+_config.activeClass);
		if(aE.length > 0)
		{
			currentElement = aE;
		}
		
		
		
		jQuery('.secondary-nav > ul > li > h4').click(function(ev)
		{
			var clickElement = jQuery(this).parent('li');
			
			clickElement.addClass(_config.activeClass);
			
			if(currentElement != null)
			{
				currentElement.removeClass(_config.activeClass);
			}
			
			currentElement = clickElement;
			ev.preventDefault();
		});*/
		
        jQuery('body').addClass('ui-state-init');
		
        jQuery('.secondary-nav > ul li').each(function()
        {
            //alert(arguments.toSource())
            var subMenu = jQuery(this).find('ul');
            if(subMenu.length != 0)
            {
                jQuery(this).addClass('submenu');
            }
        });
		
        /* Gestion du menu de gauche début */
        var menuL = jQuery('.secondary-nav > ul');
        if(menuL.length > 0)
        {
            var menuActiveItem = menuL.attr('data-active-entry');
			
            if(!!menuActiveItem)
            {
                var activeV = 0;
                var numI = parseInt(menuActiveItem);
                if(!isNaN(numI))
                {
                    activeV = numI;
                }
				
                jQuery('.secondary-nav > ul').accordion({
                    autoHeight: false,
                    active: activeV
                });
			
                jQuery('.secondary-nav > ul li').each(function()
                {
                    jQuery(this).find('span.ui-icon').remove();
                });
            }
			
			
        }
		
        /* Gestion du menu de gauche fin */
		
        jQuery('aside .fnaim-widget-container').each(function()
        {
            if(jQuery(this).find('.fnaim-widget').length > 1)
            {
                jQuery(this).accordion();
            }
        });
		
        // jQuery('.secondary-nav .option-panels').accordion({header: 'h4',autoHeight: false});
		
        jQuery('div.content nav.top-menu > ul').addClass('ui-state-init');
        jQuery('div.content nav.top-menu > ul > li').each(function()
        {
            /* On ajoute un span (petite flèche) uniquement si l'élément contient un sous-menu */
            if(jQuery(this).find('ul').length > 0)
            {
                jQuery(this).find('h3').append('<span class="arrow"/>');
            }
        });
        jQuery('div.content nav.top-menu > ul > li').hover(function()
        {
            jQuery(this).addClass('active');
        },
        function()
        {
            jQuery(this).removeClass('active');
        });
		
        // Menus déroulant
        var activeNavElem = null;
        var activeClassName = 'ui-state-active';
		
        jQuery('ul.action > li').hover(function()
        {
            jQuery(this).addClass(activeClassName);
        },
        function()
        {
            jQuery(this).removeClass(activeClassName);
        });
		
        //jQuery.fn.onLoadPopin();
		
        jQuery('a.panel-command').optionPanel();
        
        jQuery('.lang ul a').click(function(ev)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('clickPopin',{
                    popinClass: 'langPopin',
                    addContainer: true,
                    content: 'Under Construction'
                });
            }
            
            ev.preventDefault();
        });
		
        jQuery('.ident .connect').click(function(ev)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('connectPopin',{
                    popinClass: 'connectPopin'
                });
            }
            
            ev.preventDefault();
        });
		
        var cOk = jQuery('.createOkPopin');
        if(cOk.length > 0)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('createOkPopin',{
                    popinClass: 'createOkPopin',
                    closeZone: jQuery('.createOkPopin p.continuer a')
                });
            }
        }
		
        jQuery('#delete-account').click(function(ev)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('deleteAccountPopin',{
                    popinClass: 'deleteAccountPopin',
                    closeZone: jQuery('.deleteAccountPopin input')
                });
            }
			
            ev.preventDefault();
        });
        
        jQuery('.creer-alerte input').click(function(ev)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('createAlertMailPopin',{
                    popinClass: 'createAlertMailPopin'
                });
            //,closeZone: jQuery('.createAlertMailPopin input.cancel')
            }
			
            ev.preventDefault();
        });

        jQuery('.calculette').click(function(ev)
        {
            var pUrl = jQuery(this).attr('rel');
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('calculettePopin',{
                    popinClass: 'calculettePopin',
                    url: pUrl
                });
            //,closeZone: jQuery('.createAlertMailPopin input.cancel')
            }

            ev.preventDefault();
        });
        function contactAction(ev)
        {
            var selJObj = jQuery(this);
            var selObj = selJObj.get(0);

            var selJW = jQuery('select#who');
            var selWObj = selJW.get(0);

            if(selWObj.selectedIndex > 0)
            {
                var sWVal = selWObj.options[selWObj.selectedIndex].value;
                if(('contactOptions' in window) && (sWVal in contactOptions))
                {
                    var sVal = selObj.options[selObj.selectedIndex].value;

                    if(sVal in contactOptions[sWVal].options)
                    {
                        var actionDatas = contactOptions[sWVal].options[sVal];

                        //alert(mailFld.length+'\n'+actionDatas.mail)

                        if('mail' in actionDatas)
                        {
                            var mailFld = jQuery('input[name=contactMail]',selObj.form);

                            if(mailFld.length == 0)
                            {
                                jQuery(selObj.form).append('<input type="hidden" name="contactMail" value="'+actionDatas.mail+'"/>');
                            }
                            else
                            {
                                mailFld.val(actionDatas.mail);
                            }
                        }
                    }
                }
            }
        }
        /*
		
		//Popin multi localité
		
		var cOk = jQuery('.multilocalitePopin');
		if(cOk.length > 0)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('multilocalitePopin',{popinClass: 'multilocalitePopin'});
            }
        } 
		voir listing-bien.html
		
		//Popin attente loader
		
		var cOk = jQuery('.attentePopin');
		if(cOk.length > 0)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('attentePopin',{popinClass: 'attentePopin'});
            }
        }
		
		voir listing-bien.html
		
		*/
		
		
		
		
        /* Fonctionnalités de test : À désactiver en ligne !!! */
		
        jQuery('#info-email').click(function(ev)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('errorMailPopin',{
                    popinClass: 'errorMailPopin'
                });
            }
			
            ev.preventDefault();
        });
		
        jQuery('#info-pass').click(function(ev)
        {
            if('PopinCollection' in window)
            {
                PopinCollection.createPopin('errorPassPopin',{
                    popinClass: 'errorPassPopin'
                });
            }
			
            ev.preventDefault();
        });


        jQuery('select#who').change(function(ev)
        {
            var selJObj = jQuery(this);
            var selObj = selJObj.get(0);

            var selJS = jQuery('select#souhait');

            selJS.empty();
            jQuery('input[name=contactMail]',selObj.form).remove();

            if(selObj.selectedIndex > 0)
            {
                var sVal = selObj.options[selObj.selectedIndex].value;

                if(('contactOptions' in window) && (sVal in contactOptions))
                {
                    selJS.append('<option value="0">Choisissez un thème</option>');

                    for(var i in contactOptions[sVal].options)
                    {
                        var cElem = contactOptions[sVal].options[i];
                        selJS.append('<option value="'+i+'">'+cElem.text+'</option>');
                    }
                }
            }

            selJS.change(contactAction);

        //ev.preventDefault();
        });

        /* Fonctionnalités de test : À désactiver en ligne !!! */
		
        if('scrollFollow' in jQuery)
        {
            jQuery('#moving').scrollFollow({
                offset: 10
            });
        }
        //alert(jQuery.fn.tooltip)
        if('tooltip' in jQuery.fn)
        {
            jQuery('.help').tooltip({
                offset: [26,10],
                tip: 'div.tooltip',
                position: 'top right'
            });
        }
        

    });
}


String.prototype.removeDiacritics = function() {

    var s = this.toString();

    var diacritics =[
    /[\300-\306]/g, /[\340-\346]/g, // A, a
    /[\310-\313]/g, /[\350-\353]/g, // E, e
    /[\314-\317]/g, /[\354-\357]/g, // I, i
    /[\322-\330]/g, /[\362-\370]/g, // O, o
    /[\331-\334]/g, /[\371-\374]/g,  // U, u
    /[\321]/g, /[\361]/g, // N, n
    /[\307]/g, /[\347]/g, // C, c
    /[\047]/g, // apostrophe
    ];

    var chars = ['A','a','E','e','I','i','O','o','U','u','N','n','C','c',' '];

    for (var i = 0; i < diacritics.length; i++)
    {
        s = s.replace(diacritics[i],chars[i]);
    }
    return s;
}
