$(function() {
    //FONT REPLACEMENT
    
    Cufon('.ads-categ', {hover: {color: '#f3bb00'}});
    Cufon.replace(['h1', 'h2', 'h3', '.primary-menu span', 'label.optional', 'label.required', 'fieldset legend', 'div.info', '.conduit', '#map-search label']); 
    Cufon.replace('h3', {hover: 'true'});
    
    $('.btn_lotus').nicyform({type:"button", shape:"btn-normal"});
    $('.btn_lotus_white').nicyform({type:"button", shape:"btn-normal", bgcolor:"white"});
    $('.btn_lotus_delete').nicyform({type:"button", shape:"btn-normal", icon:"cross"});
    
    // placeholder
    $('#homeloginform input[type=text],#homeloginform input[type=password]').each(function() { 
        var self = $(this);
        var placeholder = self.attr('value');
        self.bind({
            focus: function () {
                if (self.val() === placeholder) {
                    self.val('');
                }
            },
            blur: function () {
                if (self.val() === '') {
                    self.val(placeholder);
                }
            }
        });
    }); 
    
    // events filter
    $('.events-filter').each(function() { 
        $$ = $(this);
        $btn = $$.find(".btn").hide();
        $$.bind("change", function(){ 
            $btn.click();
        });
    });
    
    $('.events .event').bind({
        mouseenter: function() {
            $(this).addClass("hover");
            $("body").css("cursor", "pointer");
        },
        mouseleave: function() {
            $(this).removeClass("hover"); 
            $("body").css("cursor", "auto");
        },
        click: function() {
            var linkUrl = $('a',this).attr('href');
            window.location = linkUrl;
        }
    })
    
   /* Plugin carousel */   
    $.fn.carousel = function(options) {   
        var defaults = {
            group: 1,
            speed: 400,
            auto: true,
            transition: 'slide',
            loop: true,
            nextprev: true
        };   

        var opts = $.extend(defaults, options);
        
        return this.each(function() {
            
            /* init */
            var $$ = $(this);
            var elCount = Math.ceil($$.find('.carousel-view li').length);
            var slideCount = Math.ceil(elCount / opts.group);
            var slideCurrent = 1;
            var easing = (opts.easing) ? opts.easing : '';
            var elWidth = $$.find('.carousel-view li').outerWidth(true);
            var slideWidth = elWidth * opts.group;
            var leftPosition = 0;
            var leftPositionMax = (elCount > 1) ? (slideCount-1) * (-slideWidth) : 0;
            var leftPositionCloned = (elCount > 1) ? (slideCount) * (-slideWidth) : 0;
            if(opts.group>1) {
                var modulo = elCount%opts.group;
                if(modulo) {
                    var elOldMargin = parseInt($$.find('.carousel-view ul li:first').css('margin-right'));
                    var elNewMargin = (opts.group - modulo) * elWidth + elOldMargin;
                    $$.find('.carousel-view ul li:last').css('margin-right', elNewMargin);
                }
            }
            /* generate html code */
            $$.find('.carousel-view').css('overflow', 'hidden');
            $$.find('.carousel-view ul').css('width', (slideCount+1) * slideWidth);
            $$.find('.carousel-view ul li:lt('+opts.group+')').clone().appendTo($$.find('.carousel-view ul'));

            var listDiv = $('<div/>',{'class':'carousel-list'}).insertAfter($$.find('>.carousel-view'));
            
            if(opts.nextprev && slideCount>1) {
                var flagMoving = 0;
                var nextprevList = $('<ul/>', { 'class':'carousel-prev-next'});
                var nextprevPrev = $('<li/>', {
                        'class': 'carousel-prev',
                        html: '<a href="#" class="icon">Previous</a>'
                    }).bind('click', function() {
                        if (flagMoving == 0) {
                            flagMoving = 1;
                            if (leftPosition != 0) {
                                leftPosition = leftPosition + slideWidth;
                                $$.find('.carousel-view ul').animate({
                                    left: leftPosition
                                }, opts.speed, function(){
                                    flagMoving = 0;
                                });
                                slideCurrent -= 1;
                            }
                            else {
                                $$.find('.carousel-view ul').css('left', leftPositionCloned);
                                leftPosition = leftPositionMax;
                                $$.find('.carousel-view ul').animate({
                                    left: leftPosition
                                }, opts.speed, function(){
                                    flagMoving = 0;
                                });
                                slideCurrent = slideCount;
                            }
                        }
                        $$.find('ul.items li').removeClass('active');
                        $$.find('ul.items li.item-'+slideCurrent).addClass('active');
                        return false;
                    }).appendTo(nextprevList);
                    
                var nextprevNext = $('<li/>', {
                        'class': 'carousel-next',
                        html: '<a href="#" class="icon">Next</a>'
                    }).bind('click', function() {
                        if (flagMoving == 0) {
                            flagMoving = 1;
                            if (leftPosition > leftPositionMax) {
                                leftPosition = leftPosition - slideWidth;
                                $$.find('.carousel-view ul').animate({
                                    left: leftPosition
                                }, opts.speed, function(){
                                    flagMoving = 0;
                                });
                                slideCurrent += 1;
                            }
                            else {
                                leftPosition = leftPositionCloned;
                                $$.find('.carousel-view ul').animate({
                                    left: leftPosition
                                }, opts.speed, function(){
                                    $$.find('.carousel-view ul').css('left', 0);
                                    flagMoving = 0;
                                });
                                leftPosition = 0;
                                slideCurrent = 1;
                            }
                        }
                        $$.find('ul.items li').removeClass('active');
                        $$.find('ul.items li.item-'+(slideCurrent)).addClass('active');
                        return false;
                    }).appendTo(nextprevList);
                nextprevList.appendTo(listDiv);
                
                if(opts.auto) {
                    function diaporama() {
                        nextprevNext.click()
                    }
                    diaporama = setInterval(diaporama, 10000); 
                }
            }
        });
    }

    /*end plugin carousel*/
   $('.carousel-home').carousel();
   
   
   //FancyBox (oneAds)
   if($('.img-list').length == 1) {
       var options = {
            'transitionIn'  :   'fade',
            'transitionOut' :   'fade',
            'speedIn'       :   200, 
            'speedOut'      :   200, 
            'overlayShow'   :   true,
            'cyclic'        :   true,
            'titlePosition':   'inside'
        };
        
        $(".img-list a").fancybox(options);
        $(".infos a.more-yellow").fancybox(options);
   }
   
    
    
    // Autocompletion of tracks
    $('#track-search').each(function() {
        var city = $(this).find('#track-text');
        var placeholder = city.attr('value');
        var country = $(this).find('#country');
        var region = $(this).find('#region').hide();
        country.bind("change",function(){
            countryId = $(this).val();
            if(countryId == 0) {
                $('.tracks a').show();
                region.val("0").hide();
            } else {
                if(countryId=="fr") {
                    region.show();
                } else {
                    region.val("0").hide()
                }
                $('.tracks a').hide();
                $('.tracks a.country-'+countryId).show();
            }
            city.val('');
        });
        region.bind("change",function(){
            regionId = $(this).val();
            if (regionId == 0) {
                $('.tracks a').hide();
                $('.tracks a.country-fr').show();
            } else {
                $('.tracks a').hide();
                $('.tracks a.region-'+regionId).show();
            }
            city.val('');
        });
        city.bind({
            focus: function () {
                if (city.val() === placeholder) {
                    city.val('');
                }
            },
            blur: function () {
                if (city.val() === '') {
                    city.val(placeholder);
                }
            },
            keyup: function() {
                var input = $(this);
                $('.tracks a').hide();
                if(region.val()!=0) {
                    $('.tracks a.region-'+region.val()).show();
                } else if(country.val()!=0) {
                    $('.tracks a.country-'+country.val()).show();
                } else {
                    $('.tracks a').show();
                }
                var rows = $('.tracks').children('a:visible'), cache = rows.map(function(){
                    return $(this).text().toLowerCase();
                });
                var term = $.trim(input.val().toLowerCase()), scores = [];
                if (!term) {
                    rows.show();
                }
                else {
                    rows.hide();
                    cache.each(function(i){
                        if (this.indexOf(term) > -1) {
                            scores.push(i);
                        }
                    });
                    $.each(scores, function(){
                        $(rows[this]).show();
                    });
                }
                if ($('.track:visible').length == 0) {
                    if ($('#track-error').length) {
                        $('#track-error').show();
                    }
                    else {
                        $('<p id="track-error">Aucun circuit trouvé.</p>').appendTo('.tracks');
                    }
                }
                else {
                    $('#track-error').hide();
                }
            }
        });
    });
    
    
    /* Gmaps for contact */
    if ($('.gmaps-ads').length) {
        $('.contact-menu a').live('click', function(event) {
            
            event.preventDefault();
            if(!$(this).hasClass('no-results')) {
                var index = $(this).parent('li').index(),
                    target = $('.seller').find('ul>li:eq('+index+')');
                $(this).closest('ul').find('li').removeClass('active');
                $(this).closest('li').addClass('active');
                
                if(target.hasClass('hide')) {
                    $('.seller>ul>li').addClass('hide');
                    target.removeClass('hide');
                }
            }
        });
        
        
        function createMap() {
            //Maps creation
            var latlng = new google.maps.LatLng(47, 2.5);
            var myOptions = {
                zoom: 4,
                center: latlng,
                disableDefaultUI: true,
                zoomControl: false,
                panControl:false,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById("gmaps-ads"),
                myOptions);
            
            //Image definition
            var image = new google.maps.MarkerImage('/layout/clf/images/pin-gmaps.png',
                new google.maps.Size(30,44),
                new google.maps.Point(0,0),
                new google.maps.Point(14,37)
            );
            
            var geoCoder,
                europeRect,
                geoCoderRequest;
            
            var zip = $(".infos .zip").text(),
                town = $(".infos .city").text();
            
            geoCoder = new google.maps.Geocoder();
            europeRect = new google.maps.LatLngBounds(new google.maps.LatLng(36.0, -17.5), new google.maps.LatLng(59.6, 32.3));
            geoCoderRequest = {
                address          : town,
                bounds           : europeRect,
                region           : zip
            };
            
            geoCoder.geocode(geoCoderRequest, function(results, status) {
                if (status == 'OK') {
                    var location = results[0].geometry.location
                    var markerlatlng = new google.maps.LatLng(location.lat(), location.lng());
                    var marker = new google.maps.Marker({
                        position: markerlatlng, 
                        map: map,
                        icon: image
                    });
                    map.setCenter(markerlatlng);
                    google.maps.event.addListener(marker, 'click', function () {
                        map.panTo(this.position);
                    });
                }
                else {
                    $('.contact-menu').find('li:eq(1) a').addClass('no-results')
                }
            });
            //Hiding map with jquery
            //
        }
        $('#gmaps-ads').closest('li').addClass('hide');
        createMap();
        
    }
});
