﻿var BultexPlusJs = function () {
    this._current = null;
};

BultexPlusJs.prototype = {
    initialize: function () {
        if ($('.pictogrammes').length > 0) {
            var carrousels = $('.carrousel');
            carrousels.each(function (ceq) {
                var pictos = $(this).find('.items li a');
                var fulls = $(this).find('.full');
                pictos.each(function (eq) {
                    $(this).hover(function (e) {
                        pictos.removeClass('on');
                        $(this).addClass('on');
                        fulls.fadeOut().eq(eq).fadeIn();
                    }, function (e) {
                        fulls.fadeOut();
                        pictos.removeClass('on')
                    }).click(function () { return false; });
                });
            });
        }
        if (this.isCurrentPage('details')) {
            $('.detail .zoom a').click(function () {
                $(this).parents('.detail').find('.zoombig').show();
            });
            $('.detail .zoombig a').click(function () {
                $(this).parents('.detail').find('.zoombig').hide();
            });
        }
        if (this.isCurrentPage('points-vente')) {
            var result = $('#result');
            var codesubmit = $('#codesubmit');
            result.find('div').hide();
            codesubmit.click(function (e) {
                e.preventDefault();
                result.find('div').hide();
                var cp = $('#codepostal').val();
                if (BultexPlus.isValidCodepostal(cp)) {
                    var results = result.find('dd,dt').hide().filter('dd[class^=zip' + cp + ']').show().prev('dd').show().prev('dt').show().parents('div:eq(0)').show();
                    if (results.length > 0) {
                        $('#no-result').hide();
                    } else {
                        if (cp.length > 2) {
                            $('#in-town').show();
                            $('#in-department').hide();
                        } else {
                            $('#in-town').hide();
                            $('#in-department').show();
                        }
                        $('#no-result').show();
                        $('div[class*=dpt' + cp.substring(0, 2) + ']').show().find('*').show();
                    }
                }
            });
            $('#codepostal').keypress(function (e) {
                code = e.keyCode ? e.keyCode : e.which;
                if (code.toString() == 13 && $(this).val() != '') {
                    codesubmit.click();
                }
            });
        }
        if (this.isCurrentPage('plan')) {
            $('.sitemap-toggler').click(function () {
                var nextul = $(this).parent('li').children('ul');
                var isvisible = nextul.is(':visible');
                nextul.slideToggle('fast');
                $(this).attr('src', !isvisible ? '/images/minus.gif' : '/images/plus.gif');
            });
        }
        if (this.isCurrentPage('details')) {
            $('.detail dt img').draggable({
                drag: function (event, ui) {
                    var left_limit = ($(this).width() - 300);
                    var top_limit = ($(this).height() - 100);
                    if (ui.position.left < -left_limit) {
                        ui.position.left = (-left_limit) + 'px';
                    }
                    if (ui.position.left > 0) ui.position.left = 0;
                    if (ui.position.top < -top_limit) {
                        ui.position.top = (-top_limit) + 'px';
                    }
                    if (ui.position.top > 0) ui.position.top = 0;
                }
            });
        }
        if (this.isCurrentPage('contact-form')) {
            $('input[type=submit]').click(function () {
                var needed_fields = $('.needed-field');
                var isvalidform = true;
                var msg = 'Un ou plusieurs champs requis n\'ont pas été saisis ou ne sont pas valides : ';
                var missing_fields_names = new Array();
                needed_fields.each(function () {
                    var val = $(this).val();
                    var isvalidfield = true;
                    var fieldname = $(this).prev('label').text();
                    if (BultexPlus.trim(val) == '') {
                        isvalidfield = false;
                    }
                    if ($(this).hasClass('needed-email') && !BultexPlus.isValidEmail(val)) {
                        isvalidfield = false;
                    }
                    if (!isvalidfield) {
                        missing_fields_names.push(fieldname.substring(0, fieldname.length - 2));
                        isvalidform = false;
                        $(this).addClass('field-error');
                    } else {
                        $(this).removeClass('field-error');
                    }
                });
                if (!isvalidform) {
                    msg += missing_fields_names.join(', ');
                    var error_message = $('.error-message');
                    if (error_message.length == 0) {
                        error_message = $('<div class="error-message" id="ErrorMessage"></div>').insertBefore('fieldset');
                    }
                    error_message.html(msg);
                }
                return isvalidform;
            });
        }
        if (this.isCurrentPage('home')) {
            var gamme = $('#gamme');
            var items = gamme.children('.items');
            var item_width = items.find('li:last-child').width() - 0;
            var items_width = items.children('li').length * item_width;
            var gamme_width = gamme.width();
            items.width(items_width);
            gamme.scrollLeft((item_width * (items.find('li').length - 4)) / 2);
            gamme.mousemove(function (e) {
                var new_left = (e.pageX - gamme.offset().left) * (items_width - gamme_width) / gamme_width;
                gamme.scrollLeft(new_left);
            });
        }
        if (this.isCurrentPage('relax-matelas')) {
            var items = $('.matelas-nav li a');
            items.each(function (eq) {
                $(this).click(function () {
                    if (!$(this).hasClass('on')) {
                        items.removeClass('on');
                        $(this).addClass('on');
                        if ($.browser.msie) {
                            items.find('img').css('opacity', 0.6);
                            $(this).find('img').css('opacity', 1);
                        }
                        $('.mattress').hide().eq(eq).show();
                        $('.sidebar-content').hide().eq(eq).show();
                    } else {
                        items.removeClass('on');
                        if ($.browser.msie) {
                            items.find('img').css('opacity', 0.6);
                        }
                        $('.mattress').hide();
                        $('.sidebar-content').hide();
                    }
                });
                if ($.browser.msie) {
                    var img = $(this).find('img');
                    img.fadeTo('fast', 0.6);
                    $(this).hover(function () {
                        items.filter(':not(.on)').find('img').css('opacity', 0.6);
                        img.css('opacity', 1);
                    }, function () {
                        if (!$(this).hasClass('on'))
                            img.css('opacity', 0.6);
                    });
                }
            });
            $('#sidebar').css({ marginTop: $('#some-mattress').offset().top - $('#main').offset().top + 27 });
        }
        this.correctLayoutIssues();
    },
    correctLayoutIssues: function () {
        $('#nav1 #sec1-2').click(function () {
            window.location.href = $(this).find('a:eq(0)').attr('href');
        });

    },
    isCurrentPage: function (page_class) {
        if (!this.isDefined(this._current)) {
            var classes = $('#content').attr('class').split(' ');
            if (classes.length == 1) this._current = '';
            else this._current = classes[1];
        }
        return this._current == page_class;
    },
    askItinerary: function (toLocation) {
        var fromLocation = prompt('Veuillez saisir votre point de départ' + "\n" + '(exemple : 27 rue du Colonel Pierre Avia, 75015)');
        if (fromLocation) {
            window.open('http://maps.google.fr/maps?f=d&hl=fr&saddr=' + fromLocation + '&daddr=' + toLocation + '&ie=UTF8&z=12&om=1', '_blank');
        }
    },
    isDefined: function (val) {
        return val != null && val != 'undefined';
    },
    isInt: function (val) {
        return ((parseFloat(value) == parseInt(value)) && !isNaN(parseInt(value)));
    },
    trim: function (str) {
        return str.replace(/^\s+/g, '').replace(/\s+$/g, '')
    },
    withoutPx: function (str) {
        var indexofpx = str.indexOf('px');
        if (indexofpx == -1) return str;
        return str.substring(0, indexofpx);
    },
    isValidEmail: function (str) {
        var atSym = str.lastIndexOf("@");
        if (atSym < 1) { return false; }
        if (atSym == str.length - 1) { return false; }
        if (atSym > 64) { return false; }
        if (str.length - atSym > 255) { return false; }
        var lastDot = str.lastIndexOf(".");
        if (lastDot > atSym + 1 && lastDot < str.length - 1) { return true; }
        if (str.charAt(atSym + 1) == '[' && str.charAt(str.length - 1) == ']') { return true; }
        return false;
    },
    isValidCodepostal: function (str) {
        return str.match(/^\d{2,5}$/);
    }

};

var BultexPlus = new BultexPlusJs();
$(document).ready(function () {
    BultexPlus.initialize();
});
