(function ($) {
    $(document).ready(function () {
        var ua = $.browser;

        // Homepage slideshow
        if ($(".homepage-feature").length > 0) {
            //$('#header').css('background', 'none'); // turn off dotted background in header
            var interval;
            if ($('#home-slider-interval').length > 0) {
                interval = $('#home-slider-interval').val();
            }
            else {
                interval = 5000;
            }
            $(".homepage-feature .navi").tabs(".items > div", { effect: 'fade', fadeInSpeed: "slow", rotate: true }).slideshow({ autoplay: true, /*autopause: false,*/interval: interval });
        };

        //main navigation calculations
        if ($('#site-nav').length > 0) {
            var _navItems = $('#site-nav #nav-main-ul > li').length; //get nav items
            var _navWidth = 0;
            var _navContainerWidth = 830;
            $('#site-nav #nav-main-ul > li').each(function () {
                _navWidth += $(this).outerWidth(true); //get nav items total width;
            });

            var _d = _navContainerWidth - _navWidth; // get difference in space
            var _p = (_d / _navItems) / 2; //get padding (remaining space per item) and half form horizontal padding;

            if (ua.version.slice(0, 1) == '9' && ua.msie) {
                _p = _p - 0.5; //ie9 font rendering patch
            };

            //apply padding to nav items
            $('#site-nav #nav-main-ul > li').each(function () {
                $(this).css({
                    'padding-left': _p,
                    'padding-right': _p
                });
            });

            //check if there is any space difference after padding and if true, add remainder to last item width to fill gap;
            _navWidth = 0;
            $('#site-nav #nav-main-ul > li').each(function () {
                _navWidth += $(this).outerWidth(true); //get nav items total width;
            });

            _d = _navContainerWidth - _navWidth;

            if (ua.version.slice(0, 1) == '9' && ua.msie) {
                _d = _d - 1; //ie9 font rendering patch
            };

            if (_d > 0) {
                var last = $('#site-nav #nav-main-ul > li:last-child');
                last.width(last.width() + _d);
            }

        };

        //sub navigation
        $('.sub-nav li:last-child').addClass('last');

        $('#site-nav #nav-main-ul > li').hover(function () {
            $(this).addClass('active');
            $('.sub-nav', this).show();
            if ($('.scroll-menu', this).length > 0) {
            }
        },
        function () {
            $(this).removeClass('active');
            $('.sub-nav', this).hide();
        }
        );

        if (ua.version.slice(0, 1) == '9' && ua.msie) {
            $('.sub-nav').mouseleave(function () {
                $(this).hide();
                $(this).parentsUntil('selected').removeClass('active');
            });
        }

        $('.sub-nav-wrap').each(function () {
            if (ua.version.slice(0, 1) == '9' && ua.msie) {
                navScroll($(this), $('.sub-nav', this), 10); //ie9
            }
            else {
                navScroll($(this), $('.sub-nav', this), 0);
            }
        });

        //$('.sub-nav').hide(); //hide after dimensions are taken.
        $('#site-nav .sub-nav').hide(); //not ipad

        // Homepage slider
        if ($('#home-slider').length > 0) {
            $('#home-slider li:first-child').addClass('first'); //ie6
            $('#home-slider li:last-child').addClass('last'); //ie6
            scrollItemsH($('#home-slider'), $('#home-slider > ul'), 0);
        };
        $('#slide-right').click(function () {
            slideLeft($('#home-slider'), "+=140", 100);
        });
        $('#slide-left').click(function () {
            slideLeft($('#home-slider'), "-=140", 100);
        });

        function slideLeft(selector, value, duration) {
            selector.animate({ scrollLeft: value }, duration);
        }

        function slideTop(selector, value, duration) {
            selector.animate({ scrollTop: value }, duration);
        }

        // based on: http://valums.com/scroll-menu-jquery/
        // wrapper - container div
        // ul - ul of scrollable items
        // wrapperPadding - total horizontal padding on container div e.g. padding:0 5px; = 10;
        function scrollItemsH(wrapper, ul, wrapperPadding) {
            var wrapperWidth = wrapper.outerWidth();
            wrapper.css('overflow', 'hidden');
            var ulWidth = 0;
            $('li', ul).each(function () { ulWidth += $(this).outerWidth(true); });
            ulWidth = ulWidth + wrapperPadding;
            wrapper.mousemove(function (e) {
                var left = (e.pageX - wrapper.offset().left) * (ulWidth - wrapperWidth) / wrapperWidth;
                wrapper.scrollLeft(left);
            });
        };

        //vertical scroll
        function scrollItemsV(wrapper, ul, wrapperPadding) {
            var wrapperHeight = wrapper.outerHeight();
            wrapper.css('overflow', 'hidden');
            var ulHeight = 0;
            $('li', ul).each(function () { ulHeight += $(this).outerHeight(true); });
            ulHeight = ulHeight + wrapperPadding;
            ul.css('height', ulHeight);
            wrapper.mousemove(function (e) {
                var top = (e.pageY - wrapper.offset().top) * (ulHeight - wrapperHeight) / wrapperHeight;
                wrapper.scrollTop(top);
            });
        };

        //sub navigation scroll
        function navScroll(wrapper, ul, wrapperPadding) {
            var wrapperWidth = wrapper.outerWidth();
            var ulWidth = 0;
            $('li', ul).each(function () { ulWidth += $(this).outerWidth(true); });
            wrapper.css('overflow', 'hidden');
            ulWidth = ulWidth + wrapperPadding;
            ul.css('width', ulWidth);
            if (ulWidth > 830) {
                wrapper.addClass('scroll-menu');
                navPosition(wrapper, ulWidth);
                wrapperWidth = wrapper.width();
            }
            else {
                navPosition(wrapper, ulWidth); //postion subnav menu (ul)
                wrapper.css({ 'width': ulWidth });
                ul.css('width', ulWidth);
            };
            if (ulWidth > 830) {
                wrapper.mousemove(function (e) {
                    var leftOffset = (e.pageX - wrapper.offset().left) * (ulWidth - wrapperWidth) / wrapperWidth;
                    wrapper.scrollLeft(leftOffset);
                });
            };
        };

        //subnav left positioning
        function navPosition(wrapper, subnavWidth) {
            var width = 830; // width of page/nav wrapper
            var leftPosition = 0;
            var offsetLeft = wrapper.parents().position().left; // current submenu parent offset left
            var offsetRight = offsetLeft + subnavWidth; // current submenu offset right
            if (subnavWidth > width) {
                if (offsetRight > width) {
                    leftPosition = -offsetLeft;
                    wrapper.css('left', leftPosition);
                }
            }
            else {
                if (subnavWidth + offsetLeft > width) {
                    leftPosition = (subnavWidth + offsetLeft) - width;
                    wrapper.css('left', -leftPosition);
                }
                else {
                    wrapper.css('left', -offsetLeft);
                }
            }
        };

        //home slider hover animation
        $('#home-slider li').hover(function () {
            $(this).css('z-index', '10');
            $(this).stop().animate({ width: '120', height: '78', marginTop: '1' }, 50);
            $(this).find('img').stop().animate({ width: '120', height: '78' }, 50);
        }, function () {
            $(this).css('z-index', '0');
            $(this).stop().animate({ width: '108', height: '70', marginTop: '5' }, 100);
            $(this).find('img').stop().animate({ width: '108', height: '70' }, 100);
        });

        /*homepage imagelink hover class*/
        $('#homepage-imagelinks li:last-child').addClass('last');
        $('#homepage-imagelinks li').hover(function () {
            $(this).toggleClass('hover');
        });

        /* flag dropdown */
        $('#worldwide-locations').hover(function () {
            $('ul', this).toggle();
        });

        /* Handle search */
        $(".search a").click(function () {
            var searchTerm = $.trim($(".search input").val());
            if (searchTerm.length > 0 && searchTerm != 'Search for...') {
                search();
            }
            return false;
        });

        $(".search input").focus(function () {
            $(this).keydown(function (e) {
                if (e.which == 13) {
                    $(".search input").blur();
                    search();
                    return false;
                }
            });
        });

        function search() {

            var searchTerm = $.trim($(".search input").val());
            if (searchTerm.length > 0 && searchTerm != 'Search for...') {
                var query = "/search?q=" + urlencode(searchTerm);
                window.location.replace(query);
            }
            else
                alert("Search is empty");
        }

        function urlencode(str) {
            return escape(str).replace(/\+/g, '%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
        }

        /* end search */

        /* Worldwide locations */
        if ($('#site-nav').length > 0) //not ipad
        {
            scrollItemsV($('#location-list-wrap'), $('#location-list-wrap ul'), 10);
            slideTop($('#location-list-wrap'), "+=200px", 50); //start list at base so UK is visible on start
        }

        $('#world-map li a').hover(function () {
            swapImage($(this), $('#map-image'));
        });

        function swapImage(selector, imgWrapper) {
            var imgUrl = selector.attr('id');
            $('img', imgWrapper).attr('src', imgUrl);
        }

        // Life @ Celerant
        scrollItemsV($('#celerant-life-list dd'), $('#celerant-life-list ul'), 20);

        /* ArticleBodyInlineStyles */
        function dottedBorder(item) {
            item.each(function () {
                item.wrapInner('<span class="cnt"/>');
                item.prepend('<span class="top"><!-- --></span>');
                item.append('<span class="bottom"><!-- --></span>');
            });

            //check if its an image, if not remove dotted spans (e.g. for a video in this slot)
            if (!$('.cnt', item).find('object')) {
                $('.top', item).remove();
                $('.bottom', item).remove();
            }
        };

        //bluecallout box
        if ($('.bluecallout').length > 0) {
            dottedBorder($('.bluecallout'));
        };

        //graycallout box
        if ($('.graycallout').length > 0) {
            dottedBorder($('.graycallout'));
        };

        /*In action matrix*/
        if ($('.hover-info').length > 0) {
            $('.hover-info').hide();
            $('.info-wrap').hover(function () {
                $(this).find('.hover-info').toggle();
            });
        };

        //content feature tabs
        if ($('.content-feature').length > 0) {

            $(".content-feature .tabs").tabs("div.panes > div", { event: 'mouseover' });
            $(".content-feature").each(function () {
                var items = $('div.panes > div', this).length;
                //set class
                if (!$(this).hasClass('leadership')) {
                    if (items == 2)
                        $(this).addClass('items-two');
                    if (items == 3)
                        $(this).addClass('items-three');
                    if (items == 4)
                        $(this).addClass('items-four');
                    if (items == 5)
                        $(this).addClass('items-five');
                    if (items == 6)
                        $(this).addClass('items-six');
                }
            });
        };

        if ($('.leadership').length > 0) {
            $('.leadership dl').each(function () {
                var items = $('dd', this).length;
                if (items > 2) {
                    $('dd:last-child', this).addClass('last');
                }
            });
        };

        if ($('.performance').length > 0) {
            $('.performance .panes').css('height', $('.performance .tabs').height());
        }

        /* LargeHoverListArticle7 */

        // hide-show panes onHover
        $("#largehoverlist ul.tabs").tabs("#largehoverlist div.panes > div", { event: 'mouseover' });


        /* Widgets */


        /* Image links onhover */
        $('.linkimagecontainer').hover(function () {
            $('.imagemaskwrapper').css('visibility', 'visible');
        },
            function () {
                $('.imagemaskwrapper').css('visibility', 'hidden');
            }
	    );

        /* featured content blocks (template 5) */
        if ($('#featured-block').length > 0 && $('#featured-blue').length > 0) {

            var left = $('#featured-block');
            var leftheight = left.outerHeight();
            var right = $('#featured-blue');
            var rightheight = right.outerHeight();

            if (leftheight > rightheight) {
                right.css('height', leftheight);
            }

            if (rightheight > leftheight) {
                left.css('height', rightheight);
            }
        };


        /* Multi-select dropdown */

        $('#service').multiSelect({
        //select_all_min:5,  
        //no_selection: "Please select a few items!",  
        //selected_text: " clicked"  
    });

    $('#location').multiSelect({
    //select_all_min:5,  
    //no_selection: "Please select a few items!",  
    //selected_text: " clicked"  
});

$('#industry').multiSelect({
//select_all_min:5,  
//no_selection: "Please select a few items!",  
//selected_text: " clicked"  
});


//QueryString parser
function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return decodeURIComponent(results[1].replace(/\+/g, " "));
}

/* Google maps */

var contactBarHeight = $('#bdcontentright .contactSidebar').outerHeight();
$('#bdcontentleft #map').css('height', contactBarHeight);

/*watermarking */
//populate watermark text with title attribute
$('.watermark').each(function () {
    $(this).val($(this).attr('title'));
});
$('.watermark').focus(function () {
    if ($(this).val() == $(this).attr('title')) {
        $(this).val("").removeClass('watermark');
    }
});
$('.watermark').blur(function () {
    if ($(this).val() == "") {
        $(this).val($(this).attr('title')).addClass('watermark');
    }
});

//Date and Time
if ($('#date-time').length > 0) {
    getDateTime();
}

/*modal form*/
var modalform = $('#modal-form-wrap .scfForm');
var form = $('.scfForm');

if (form.length > 0) {

    if (modalform.length > 0) {
        setUpModal();
        form.append('<a class="modal-close png_bg" title="Close" href="#">close</a>'); //add close button
    }

    form.find('input[type=submit]').parent().addClass('scfSubmitWrap'); //add class to submit container
    $('.scfSubmitWrap').append('<div class="summary">* Mandatory Fields</div>');

    // validation styling on submit
    form.find('input[type=submit]').click(function () {
        if ($('.scfValidatorRequired:visible')) {
            $('.scfValidatorRequired:visible').parent().addClass('valError');
            $('.scfValidationSummary').hide();
            $('.summary', form).html($('.scfValidationSummary').html());
        }
    });

    // remove or add error styling on textbox blur
    form.find('input[type=text]').blur(function () {
        if ($(this).parents('.scfSingleLineTextBorder').find('.scfValidatorRequired').is(':visible')) {
            $(this).parents('.scfSingleLineTextBorder').addClass('valError');
        }
        else {
            $(this).parents('.scfSingleLineTextBorder').removeClass('valError');
        }
    });

    //Close button
    $('.scfForm .modal-close').click(function () {
        form.parent().hide();
        $('#modal-mask').hide();
        return false;
    });

    /* Show form*/
    $('.modal-form-show').click(function () {
        $('#modal-mask').show();
        form.parent().show();
        center(form.parent());
        return false;
    });

    /* Thank you form*/
    if ($('fieldset', form).length == 0) {
        form.addClass('scfFormComplete');
    };
};

// Our people
if ($('#people-list li').length > 0) {
    setUpModal();
    $('.modal-person').append('<a class="modal-close png_bg" title="Close" href="#">close</a>'); //add close button
    $('#people-list li').eq(2).addClass('last');
    $('#people-list li').eq(5).addClass('last');

    $('#people-list li').hover(function () {
        $(this).toggleClass('selected');
    });

    $('#people-list li').click(function () {
        $(this).css({ 'border': '3px solid #19417b' });
        $('#modal-mask').show();
        center($('.modal-person', this));
        $('.modal-person', this).show();
    });

    $('.modal-person').hover(function () {
        return false;
    });

    $('.modal-person').click(function () {
        return false;
    });

    $('.modal-person .modal-close').click(function () {
        $(this).parent().hide();
        $(this).parents('li').attr('style', '3px solid #eee');
        $('#modal-mask').hide();
    });
}

function setUpModal() {
    $('body > form').prepend('<div id="modal-mask"><!-- --></div>'); // add mask
    $('#modal-mask').css({              //create mask size to fill document
        'height': $(document).height(),
        'width': $(document).width()
    });
}

//RHS Slider
if ($('.rhs-slider').length > 0) {
    $('#rhs-list-wrap li:last-child').addClass('last');
    var vp = $(window).height();                    //viewport height
    var co = $('#bd-content-wrap').offset().top;    //content area offset top
    var ch = $('.rhs-slider').outerHeight();        //control height
    var sh = $('#rhs-list-wrap').outerHeight();     //slider height
    var ol = (co + ch) - vp;                        //page overlap
    var h = sh - ol;                                //new height
    var li = $('.rhs-slider li').outerHeight();     //list item height
    var ls = $('.rhs-slider li').size();            //list item number

    if ((vp - co) < ch) {

        if (ls > 2) { //only check if necessary to scroll if more that 2 items are present
            if (h < (li * 2)) {
                $('#rhs-list-wrap').height((li * 2));       //min height of two items should be set if 'h' smaller than 2 item(s) items
                $('#rhs-list-wrap').css('overflow', 'hidden');
            }
            else {
                $('#rhs-list-wrap').height(h);              //set new height
                if ($('#rhs-list-wrap.slrhs-wrap').length > 0) { $('#rhs-list-wrap.slrhs-wrap').height(h - 18); }; // [temp]
                $('#rhs-list-wrap').css('overflow', 'hidden');
            }

            //add scroll triggers
            $('.rhs-slider').prepend('<a href="" class="png_bg" id="scrollUp" title="Scroll Up">scroll up</a>');
            $('.rhs-slider').prepend('<a href="" class="png_bg" id="scrollDown" title="Scroll Down">scroll down</a>');

            //check scroll position on start up and set arrow classes
            checkScroll($('#rhs-list-wrap'));

            //if slrhs
            $('.rhs-slider').removeClass('slrhs-slider');

            //scroll trigger functions
            $('#scrollUp').click(function () {
                slideTop($('#rhs-list-wrap'), "-=" + li, 150);
                return false;
            });
            $('#scrollDown').click(function () {
                slideTop($('#rhs-list-wrap'), "+=" + li, 150);
                return false;
            });
        }
    }
};

$('#rhs-list-wrap').scroll(function () {
    checkScroll($(this));
});

function checkScroll(scroller) {
    if (scroller.scrollTop() == 0) {
        $('#scrollUp').removeClass('active');
    }
    else {
        $('#scrollUp').addClass('active');
    }

    if (scroller.scrollTop() == ($('ul', scroller).height() - $(scroller).height())) {
        $('#scrollDown').removeClass('active');
    }
    else {
        $('#scrollDown').addClass('active');
    }
};


// Content tabs e.g. Industry content
if ($('#content-tabs').length > 0) {
    var ul = $('#content-tabs > ul');
    var ulW = ul.width();
    var size = $('li', ul).size();
    var liW = ulW / size;
    var margin = $('#content-tabs > ul li').css('margin-right').replace('px', '');
    $('li', ul).each(function () {
        $(this).width(liW - margin);
    });
    $('li:last-child', ul).addClass('last');
    $('.videtmb:even').addClass('alt-video');
};

$('#c-at-glance-list-wrap li:last-child').addClass('last');



//vimeo player
$(".btnPlay").click(function () {
    var src = $(this).parent().parent().find("iframe").attr("src");
    if (src.length > 0 && src.indexOf("autoplay") == -1) {
        src = src + "&autoplay=1";
        $(this).parent().parent().find("iframe").attr("src", src);
    }

    return false;
});


}); // document ready

})(jQuery);

//centering function
function center(obj) {
    obj.css({
        'position': 'absolute',
        'z-index': '100',
        'top': (jQuery(window).height() - obj.height()) / 2 + jQuery(window).scrollTop() + "px",
        'left': (jQuery(window).width() - obj.width()) / 2 + jQuery(window).scrollLeft() + "px"
        });
    return this;
}

function getDateTime()
{
    var dateTime = new Date();
    var days = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
    var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    var mins = dateTime.getMinutes();
    var hours = dateTime.getHours();
    var ap = "am";
    if (hours > 11) { ap = "pm"; }
    if (hours > 12) { hours = hours - 12; }
    if (hours == 0) { hours = 12; }
    if (mins < 10) { mins = "0" + mins; }
    
    jQuery('#time').text(hours + ':' + mins + ap);
    jQuery('#date').html(days[dateTime.getDay()] + ' ' + dateTime.getDate() + ' ' + months[dateTime.getMonth()] + ' ' + dateTime.getFullYear());
    
    
    setTimeout("getDateTime()", 1000);
}

function removeElement(parent, child) {
    var p = document.getElementById(parent);
    var c = document.getElementById(child);
    p.removeChild(c);
}

//Business briefings list: audio playback
function addAudioPlayer(path, obj) {
    var link = document.createElement('a');
    link.setAttribute('href', path);
    link.setAttribute('id', 'audioplayer');

    var exists = document.getElementById('audioplayer');

    if (exists) {
        exists.parentNode.removeChild(exists);
    }

    obj.parentNode.appendChild(link);

    flowplayer("audioplayer", "/flowplayer/flowplayer-3.2.5.swf", {
        plugins: {
            controls: {
                fullscreen: false,
                height: 20,
                borderRadius: 10,
                autoHide: false
            }

        },
        canvas: { backgroundColor: '#FFFFFF' },

        clip: {
            onBeforeBegin: function () {
                flowplayer('audioplayer').close();
            }

        }
    });
}

// Closework in action: ImageLinks audio playback
function addImageLinkAudio(id, path, thumbnail, obj) {
    var link = document.createElement('a');
    link.setAttribute('href', path);
    link.setAttribute('id', id);
    link.setAttribute('class', 'player');

    //remove hover info
    var hoverInfo = obj.parentNode;
   
    var grandParent = hoverInfo.parentNode;
    grandParent.removeChild(hoverInfo);
    grandParent.removeChild(grandParent.getElementsByTagName("div")[0]);

    //stop existing players

    pausePlayers();
    
    grandParent.appendChild(link);

    flowplayer(id, "/flowplayer/flowplayer-3.2.5.swf", {
        
        plugins: {
            controls: {
                fullscreen: false,
                height: 20,
                autoHide: false,
                scrubber: true,
                time: false
            }
        },
        canvas: { backgroundColor: '#FFFFFF' },

        clip: {
            height: 80,
            coverImage: { url: thumbnail, scaling: 'orig' },
            onBeforeBegin: function () {
                flowplayer('audioplayer').close();
            }

        }
    });
}

function pausePlayers() {
    var players = getElementsByClass("player");

    for (i = 0; i < players.length; i++) {
        var player = flowplayer(i);
        if (player != null) {
            player.pause();
        }

    }  
}

function getElementsByClass(searchClass, domNode, tagName) {
    if (domNode == null) domNode = document;
    if (tagName == null) tagName = '*';
    var el = new Array();
    var tags = domNode.getElementsByTagName(tagName);
    var tcl = " " + searchClass + " ";
    for (i = 0, j = 0; i < tags.length; i++) {
        var test = " " + tags[i].className + " ";
        if (test.indexOf(tcl) != -1)
            el[j++] = tags[i];
    }
    return el;
}

var imageCache = [];
function preLoadImages() {
    var imageCount = arguments.length;
    for (var i = imageCount; i--; ) {
        var cacheImage = document.createElement('img');
        cacheImage.src = arguments[i];
        imageCache.push(cacheImage);
    }
};






        

