jQuery.noConflict();



String.prototype.endsWith = function(str)

{

    var lastIndex = this.lastIndexOf(str);

    return (lastIndex != -1) && (lastIndex + str.length == this.length);

}



function objectify(arr) {

    var obj = {};

    for(var i = 0; i < arr.length; i++) {

        obj[arr[i]] = arr[i];

    }

    return obj;

}



// Drop down menus

var menu = {

    timeout: 0,

    timeoutValue: 400,

    

    menuOffsetTop: 31,





    

    menus: ['about', 'support', 'library', 'events', 'rentalsleasing'],

    

    _support: [

        { href: 'javascript:(function() { jQuery(\'#live-chat-handle\').trigger(\'click\'); return; })();', innerHTMLen: 'LIVE SUPPORT', innerHTMLfr: 'SOUTENIR' },

        { href: 'calibration-services-%lang', innerHTMLen: 'CALIBRATION SERVICES', innerHTMLfr: 'SERVICE DE GARANTIE ET D\'&#201;TALONNAGE' },

        { href: 'technical-services-%lang', innerHTMLen: 'TECHNICAL SERVICES', innerHTMLfr: 'SERVICES TECHNIQUES' }

    ],

    

    _library: [

        { href: 'product-solution-guides-%lang', innerHTMLen: 'PRODUCT SOLUTION GUIDES', innerHTMLfr: 'GUIDES PRODUIT' },

        { href: 'newsletters-%lang', innerHTMLen: 'NEWSLETTERS', innerHTMLfr: 'BULLETIN &#201;LECTRONIQUE' },

        { href: 'application-notes-%lang', innerHTMLen: 'APPLICATION NOTES', innerHTMLfr: 'NOTE D\'APPLICATION'  }

    ],

    

    _events: [

        { href: 'trade-shows-%lang', innerHTMLen: 'TRADE SHOWS', innerHTMLfr: 'EXPOSITION' },

        { href: 'webinars-%lang', innerHTMLen: 'WEBINARS', innerHTMLfr: 'EV&#201;N&#201;MENTS' },

        { href: 'seminars-%lang', innerHTMLen: 'SEMINARS', innerHTMLfr: 'S&#201;MINAIRES' }

    ],

    

    _rentalsleasing: [

        { href: 'rentals-leasing-%lang', innerHTMLen: 'RENTALS &amp; LEASING', innerHTMLfr: 'LOCATION ET CR&#201;DIT-BAIL' },

        { href: 'used-equipment-%lang', innerHTMLen: 'USED EQUIPMENT', innerHTMLfr: 'MAT&#201;RIEL D\'OCCASION' }

    ],



    _about: [

        { href: 'company-%lang', innerHTMLen: 'COMPANY', innerHTMLfr: 'AU SUJET DE TESTFORCE' },

        { href: 'headlines-%lang', innerHTMLen: 'HEADLINES', innerHTMLfr: 'PRESSE' },

        { href: 'careers-%lang', innerHTMLen: 'CAREERS', innerHTMLfr: 'EMPLOIE' }

    ],

    

    init: function() {

        menu.build();

        menu.bind();

    },

    

    build: function() {

        var langMenu = LANG.replace('-us', ''); // consolidate en and en-us

        

        for (var mId in objectify(this.menus)) { // this is iterative an array

            menuId = '_' + mId; // _about

                                

            var $dd = jQuery('<div />').attr('class', 'menu-dd').attr('data-handle', menuId).css('z-index', 999);

            

            // hack

            if (menuId == '_support' && LANG == 'fr')

                $dd.css('width', '300px');

                    

            var d = menu[menuId];

                                

            for(var i = 0; i < d.length; i++) {

                var item = d[i];

                $dd.append(

                    jQuery('<a href="' + item.href.replace('%lang', langMenu) + '">' + item['innerHTML' + langMenu] + '</a>')

                );

            }

            

            //console.log($dd);      

                  

            jQuery(document.body).append($dd);

        }

    },

    

    bind: function() {

        jQuery('.menu-dd').each(function() {

            var $menu = jQuery(this);

            var handleClass = $menu.attr('data-handle');

            var $handle = jQuery('.' + handleClass);

            

            $handle.mouseover(function() {

                var $handle = jQuery(this);

                $menu.css('display', 'block').css('left', $handle.offset().left + 'px').css('top', ( $handle.offset().top + menu.menuOffsetTop ) + 'px');

                clearTimeout(menu.timeout);

                

                // hide all active menus and deactive hovers

                jQuery('.menu-dd').not($menu).css('display', 'none');

                jQuery('.cms-nav a').not($handle).css('background', 'none').children('img').remove();

            })

            .mouseout(function() {

                var self = this;

                menu.timeout = setTimeout(function() {

                    $menu.css('display', 'none');

                    jQuery(self).css('background', 'none').children('img').remove();

                }, menu.timeoutValue);

            });

            

            $menu.mouseover(function() {

                clearTimeout(menu.timeout);

            })

            .mouseout(function() {

                $handle.trigger('mouseout');

            });

        });

    }

}



jQuery(function() {

    menu.init();

    

    // left nav

    jQuery('#nav-left-root .head')

        .disableTextSelect()

        .click(function() {

            var isArrowDown = jQuery(this).children('div').hasClass('down');

            

            isArrowDown && jQuery(this).children('div').removeClass('down');

            (false == isArrowDown) && jQuery(this).children('div').addClass('down');

            

            var isFilterContainer = jQuery(this).next('.container').is('.filter');

            

            var visibleHeight = isFilterContainer ? 180 : 190;

           

            jQuery(this)

                .next(':visible')

                    .animate({

                        height: 0

                    }, 500, function() {

                        jQuery(this)

                            .css('display', 'none');

                    })

                    .end()

                .next(':hidden')

                    .css('display', 'block')

                    .animate({

                        height: visibleHeight + 'px'

                    }, 500);

        });

    

    // nav hover

    jQuery('.cms-nav a')

        .mouseover(function() {

            // background

            jQuery(this)

                .css('background', 'url(skin/frontend/default/tfskin/images/nav-hover-bg.png) repeat-x')

                .append('<img src="skin/frontend/default/tfskin/images/nav-hover-right.png" style="position: absolute; right: 0; top: 0;"/>');

        })

        .mouseout(function() {

            // for non-menu cases

            var linkClass = jQuery(this).attr('class');

            if (0 == jQuery('.menu-dd[data-handle=' + linkClass + ']').length) // doesn't has menu

                jQuery(this).css('background', 'none').find('img').remove();

        });

    

    // login form

    var focusVal;

    jQuery('form.login').find('input:text, input:password')

    .focus(function() {

        focusVal = jQuery(this).val();

        

        jQuery(this).val('');

    })

    .blur(function() {

        

        if ('' == jQuery(this).val()) {

            jQuery(this).val(focusVal);

            return;

        }

    });

});



function priceFormatUS(price) {

    var pieces = price.split('.');

    

    var cents = pieces[1];

    cents = cents.substr(0, 2);

    

    var dollars = pieces[0];

    

    if (dollars.length > 3) {

        var thousands = dollars.substr(0, dollars.length-3);

        var hundreds = dollars.substr(dollars.length-3);

        

        dollars = thousands + ',' + hundreds;

    }

    

    return dollars + '.' + cents;

}









// contact language

jQuery(function() {

    jQuery('._contact').attr('href', function() {

        return jQuery(this).attr('href') + '-' + LANG;    

    });

});
