function trace()
{
    try
    {
        if (console && console.log)
        {
            console.log(arguments);
        }
    }catch(e){
	
    }
}

function headerSlider(){
    var topNav=$jq('#header-nav');
    var nav=$jq('ul',topNav);
    var navChildren=nav.children();
    var viewMoreRight=$jq('.view-more', topNav);
    var viewLeft=$jq('.slider-left-menu', topNav);
    var visibleSlide=topNav.width()-viewMoreRight.width()-viewLeft.width()+parseInt(nav.css('padding-left'));
    var childPositions=[];
    var totalOffset=0;
    var offsetStep=200;
    childPositions.width=0;
    navChildren.each(function(){
        var child=$jq(this);
        var w=child.width();
        childPositions.push(childPositions.width+w);
        childPositions.width+=w;
    });
    nav.width(childPositions.width);
    var maxSlide=childPositions.width-visibleSlide;

    viewMoreRight.click(function(){
        totalOffset-=offsetStep;
        if (totalOffset<-maxSlide)totalOffset=-maxSlide;
        nav.animate({
            left:totalOffset
        },{
            queue:false
        });
        return false;
    });
    viewLeft.click(function(){
        totalOffset+=offsetStep;
        if (totalOffset>0)totalOffset=0;
        nav.animate({
            left:totalOffset
        },{
            queue:false
        });
        return false;
    });
	
	topNav.bind('offsetChange', function(e, data){
		totalOffset=data;
	});
}

function bodySlider(){
	var slider=$jq('#page_container .slider');
    if (slider.length != 0 && !slider.hasClass('prevent-init-slider'))
       slider.createSlider({autoSlide:true,circle:true});
	   
}

function slidingContainers()
{
    $jq('.item').each(function(){
        var item=$jq(this);
        var textBottoms=$jq('.text-bottom', item);
        var container=textBottoms.not('.large');
        var itemParent=item.parent();
        var parentWidth=itemParent.width();
        var gridX=parseInt(itemParent.attr('gridX')) || 0;
        var gridY=parseInt(itemParent.attr('gridY')) || 0;
		
        var large=$jq('.large', item);
        large.hide();
        var long=$jq('.long',container);

        var short=$jq('.short',container);
        long.hide();
		
        var readMore=$jq('.loadToMain',item);
		
        var hSpacing=15;
        var vSpacing=15;
        parentWidth+=hSpacing;
        var slideable=(readMore.length>0);
        if (slideable)
        {
            var cssObj={
                'margin':'0 '+hSpacing+'px '+vSpacing+'px 0', 
                'float':'none',
                'position':'absolute',
                'top':gridY,
                'left':gridX,
                'z-index':0
            };
            item.css(cssObj);
		
            var itemSizeX=item.width()+hSpacing;
            var itemSizeY=item.height()+vSpacing;
            item.attr('defaultX',gridX);
            item.attr('defaultY',gridY);
            gridX+=itemSizeX;
            if (gridX+itemSizeX>=parentWidth)
            {
                gridX=0;
                gridY+=itemSizeY;
            }
            itemParent.attr('gridX',gridX);
            itemParent.attr('gridY',gridY);
            itemParent.css('height', gridY+itemSizeY);
        }
		
        var shortFaded=false;
        var longFaded=true;
        var show=false;
        var containerW;
		
        container.height(short.outerHeight());
        containerW=container.width();
		
        long.css({
            'top':short.outerHeight()
        });
		
        /*$jq('.three-dots', container).each(function(){
			var td=$jq(this);
			var maxlines=parseInt(td.attr('maxlines'));
			td.width(containerW);
			console.log(td.width(),container.width(),td.css('line-height'),maxlines);
			td.ThreeDots({max_rows: maxlines});
		});*/
		
        var slideTime=250;
        var fadeTime=300;
		
        function over()
        {
            if (expanded)return;
            if (!show)
            {
                var height = short.outerHeight()+long.outerHeight();
                container.animate({
                    'height': height
                },{
                    queue:false, 
                    duration:slideTime
                });
            }

            show=true;
            long.stop();
            if (longFaded)
            {
                /*short.fadeOut(300, function(){
					shortFaded=true;
					if (show)
					{
						longFaded=false;
						long.fadeIn(200);
					}
				});*/
                shortFaded=true;
                longFaded=false;
                long.fadeTo(fadeTime,1);
            }
            else
            {
                longFaded=false;
                long.fadeTo(fadeTime,1);
            }
        }
		
        function out()
        {
            if (expanded)return;
            if (show)
            {
                container.animate({
                    'height':short.outerHeight()
                },{
                    queue:false, 
                    duration:slideTime
                });
            }
            show=false;
            long.stop();
            if (shortFaded)
            {
                long.fadeTo(fadeTime,0,function(){
                    if (!show)
                    {
                        longFaded=true;
                        shortFaded=false;
                    //short.fadeIn(200);
                    }
                });
            }
            else
            {
                shortFaded=false;
            //short.fadeIn(300);
            }
        }

        if (!item.hasClass('no-slide'))
        {
            item.hover(over,out);
        }
		
        //find read more link
		
        var expanded=false;
        var expandClass='expanded';
        var name=short.children('h4').text().replace(" ", "-").replace(".", "").toLowerCase();
		
        function onExpandClick()
        {
            $jq('.toExpand').trigger('unexpand');
			
            var currentExpanded=$jq('.'+expandClass);
            if (currentExpanded.length)
            {
                item.addClass('toExpand');
                item.bind('unexpand', onUnexpand);
                currentExpanded.trigger('collapse');
                currentExpanded.bind('collapsed', onCollapsed);
            }
            else
            {
                onCollapsed();
            }
            function onUnexpand()
            {
                currentExpanded.unbind('collapsed', onCollapsed);
                item.unbind('unexpand', onUnexpand);
            }
            function onCollapsed()
            {
                onUnexpand();
                item.removeClass('toExpand');
                item.trigger('expand');
            }
			
            return false;
        }
		
        if (readMore.length)
        {
            $jq('.close', item).click(function(){
                item.trigger('collapse');
            });
            readMore.click(onExpandClick);
            $jq('.small',item).filter('img').css({
                'cursor':'pointer'
            }).click(onExpandClick)
			
            var hash=window.location.hash;
            if (hash)hash=hash.substr(1);
            if (hash && hash==name)
            {
                setTimeout(function(){
                    item.trigger('expand')
                }, 0);
            }
        }
		
        item.bind('expand', function(){
            window.location.hash = "#" + name;
			
            expanded=true;
            show=true;
            longFaded=true;
            shortFaded=false;
            item.css('z-index',1);
			
            var currentWidth=item.width();
            var currentHeight=item.height();
            item.width('');
            item.height('');
			
            item.removeClass('min');
            item.addClass('max');
            var expandWidth=item.width();
            var expandHeight=item.height();
            item.removeClass('max');
			
            var items=$jq('.item', itemParent);
            var gx=0;
            var gy=0;
            var gsx=1;
            var gsy=1;
            var itemGx=0;
            var itemGy=0;
            var grid={};
            var itemPos={
                top:parseInt(item.attr('defaultY')), 
                left:parseInt(item.attr('defaultX'))
            };
            var maxGridX=Math.floor(parentWidth/itemSizeX);
            itemGx=Math.floor(itemPos.left/itemSizeX);
            itemGy=Math.floor(itemPos.top/itemSizeY);
            gsx=Math.ceil((expandWidth+hSpacing)/itemSizeX);
            gsy=Math.ceil((expandHeight+vSpacing)/itemSizeY);
            itemGx=Math.min(itemGx,maxGridX-gsx);
            fillGrid(itemGx,itemGy,gsx,gsy);
			
            function fillGrid(x,y,width,height)
            {
                width+=x;
                height+=y;
				
                for(;y<height;y++)
                {
                    for(var initx=x;initx<width;initx++)
                    {
                        grid[initx+':'+y]=1;
                    }
                }
            }
            function findGrid()
            {
                for(var j=0;;j++)
                {
                    for(var i=0;i<maxGridX;i++)
                    {
                        if (!grid[i+':'+j])
                        {
                            return {
                                x:i,
                                y:j
                            };
                        }
                    }
                }
            }
			
            var maxH=0;
            items.each(function(){
                var it=$jq(this);
                if (it.get(0)!=item.get(0))
                {
                    var grid=findGrid();
                    fillGrid(grid.x,grid.y,1,1);
                    //console.log('test');	               
                    it.animate({
                        'top':grid.y*itemSizeY,
                        'left':grid.x*itemSizeX
                    },{
                        queue:false,
                        delay:200,
                        duration:400
                    });
                    maxH=Math.max(maxH,(grid.y+1)*itemSizeY);
                }
            });
            maxH=Math.max(maxH,(itemGy+gsy)*itemSizeY);
            itemParent.height(maxH);
			
            item.width(currentWidth);
            item.height(currentHeight);
			
            item.addClass('min');
            item.addClass('expanding');
            container.animate({
                height:0
            },{
                queue:false,
                duration:200,
                complete:function(){
                    var smalls=$jq('.small', item);
                    var smallImg=smalls.filter('img');
                    var imageWidth=smallImg.width();
                    var imageHeight=smallImg.height();
                    var imageScale=Math.max(expandWidth/imageWidth, expandHeight/imageHeight);
                    smallImg.animate({
                        width:imageWidth*imageScale, 
                        height:imageHeight*imageScale
                    }, {
                        queue:false, 
                        duration:300
                    });
					
					var large=$jq('.large', item);
                    var largeImg=large.filter('img');
					var lImageWidth=largeImg.width();
					var lImageHeight=largeImg.height();
					var lImageScale=Math.max(expandWidth/lImageWidth, expandHeight/lImageHeight);
					largeImg.animate({
						width:lImageWidth*lImageScale, 
                        height:lImageHeight*lImageScale
					}, {
                        queue:false, 
                        duration:300
                    });
					largeImg.width(expandWidth);
					largeImg.height(expandHeight);
					large.fadeOut(0);
					large.fadeTo(300, 1, function(){
						smalls.hide();
					});
				
                    item.animate({
                        top:itemGy*itemSizeY , 
                        left:itemGx*itemSizeX, 
                        width:expandWidth, 
                        height:expandHeight
                    },{
                        queue:false, 
                        duration:300, 
                        complete:function(){
                            item.removeClass('min');
                            item.addClass('max');
							
                            /*var large=$jq('.large', item);
                            var largeImg=large.filter('img');
                            largeImg.width(expandWidth);
                            largeImg.height(expandHeight);
                            large.fadeOut(0);
                            large.fadeTo(400, 1, function(){
                                smalls.hide();
                            });*/
							
                            var textBottom=large.filter('.text-bottom');
                            var largeLong=$jq('.long', textBottom);
                            textBottom.animate({
                                height:largeLong.height()
                            }, {
                                queue:false, 
                                duration:300
                            });
					
                            item.removeClass('expanding');
                            item.trigger('expanded');
                        }
                    });
                }
            });
            item.addClass(expandClass);
        });
        item.bind('collapse', function(){
            if (item.hasClass('expanding'))
            {
                item.bind('expanded', onExpanded);
            }
            else
            {
                onExpanded();
            }
			
            function onExpanded()
            {
                item.unbind('expanded', onExpanded);
				
                var currentWidth=item.width();
                var currentHeight=item.height();
                item.width('');
                item.height('');
                item.removeClass('max');
                item.addClass('min');
				
                var minWidth=item.width();
                var minHeight=item.height();
				
                var items=$jq('.item', itemParent);
                var maxH=0;
                items.each(function(){
                    var it=$jq(this);
                    if (it.get(0)!=item.get(0))
                    {                        
                        it.animate({
                            'top':it.attr('defaultY'),
                            'left':it.attr('defaultX')
                        },{
                            queue:false,
                            duration:300
                        });
                    }
                    maxH=Math.max(maxH, parseInt(it.attr('defaultY'))+itemSizeY);
                });
                itemParent.height(maxH);
				
                item.width(currentWidth);
                item.height(currentHeight);
				
                item.removeClass('min');
                item.addClass('max');
				
                var large=$jq('.large', item);
                var largeText=large.filter('.text-bottom');
                var smalls=$jq('.small', item);
				
                item.addClass('collapsing');
                largeText.animate({
                    height:0
                }, {
                    queue:false, 
                    duration:300, 
                    complete:function(){
                        var largeImg=large.filter('img');
                        var imageWidth=largeImg.width();
                        var imageHeight=largeImg.height();
                        var imageScale=Math.max(minWidth/imageWidth, minHeight/imageHeight);
                        largeImg.animate({
                            width:imageWidth*imageScale, 
                            height:imageHeight*imageScale
                        }, {
                            queue:300
                        });
                        //                        console.log('test');	
                        item.animate({
                            'top':item.attr('defaultY'),
                            'left':item.attr('defaultX'),
                            width:minWidth, 
                            height:minHeight
                        },{
                            queue:false, 
                            duration:300, 
                            complete:function(){
                                expanded=false;
                                item.css('z-index',0);
                                item.removeClass('max');
                                item.addClass('min');
                                var smallImg=smalls.filter('img');
                                smallImg.width(minWidth);
                                smallImg.height(minHeight);
                                smalls.show();
                                large.fadeTo(400, 0, function(){
                                    large.hide();
                                });
                                out();
                                item.removeClass('collapsing');
                                item.removeClass(expandClass);
                                item.trigger('collapsed');
                            }
                        });
                    }
                });
            }
        });
    });
}

function processLink(href)
{    
    if (!href)
        return;
    if ((href.charAt(0)=='#') && (href.length > 1))
    {
        $jq().scrollTo(href, 400);
        $jq(href).focus();
        return false;
    }

    return;
}

function quickLinks()
{
    var shownButton;

    var fader=$jq('#quick-links-fader');
    fader.click(function(){
        if (shownButton)shownButton.click();
    });

    var toggleButtons=$jq('.toggle-button');
    toggleButtons.each(function(){
        var button=$jq(this);
        var buttonSelected=false;
        var toggle=button.attr('toggle');
        var target=$jq('#'+toggle);
        target.hide();
        var inner=$jq('.inner',target);
        inner.css({
            'top':target.height()
        });

        button.bind('reset', function(event){
            if (buttonSelected)
            {
                button.click();
            }
        });
        button.click(function(){
            if (shownButton && shownButton!=button)
            {
                shownButton.click();
            }
            buttonSelected=!buttonSelected;
            trace('clicked');
            fader.stop();
            inner.stop();
            if (buttonSelected)
            {
                shownButton=button;
                target.show();
                fader.fadeTo(200, 0.5);
                
                inner.animate({
                    'top':0
                },{
                    queue:false,
                    duration:300
                });
                button.addClass('selected');
            }
            else
            {
                shownButton=null;
                fader.fadeTo(200, 0, function(){
                    fader.hide();
                });
                inner.animate({
                    'top':target.height()
                },{
                    queue:false,
                    duration:300,
                    complete:function(){
                        target.hide();
                    }
                });
                button.removeClass('selected');
            }

            return false;
        });
    });
}

function backToTopLinks() {
    $jq('.back-to-top').click(function(){
   
        $jq('html,body').stop().animate({
            'scrollTop' : 0
        }, 1200, function(){
            window.location.hash = "";
        });
        return false;
    })
}

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, " "));
}

function InitKeypeople(){
    $jq('#mainPerson').fadeOut('slow');
}

function ShowTopMenu()
{
    var offset = 0;
    
    $jq( "#header-nav div ul li" ).each(function(index){
        if ($jq(this).hasClass('active'))
            return false;
        else{
            if (index > 5)
                offset += -1 * $jq( "#header-nav div ul li" ).width();            
        }
    }    
    );
               
    if (offset < 0){
        if (offset < -700)
            offset = -700;
        
        $jq("#header-nav div ul").css('left', offset);
		$jq("#header-nav").trigger('offsetChange', offset);
    }
    
}
function FormatHomePageSections(){
    $jq('#block-views-recent_work-block_1').find('.views-row-1').children('div:first').removeClass('min').addClass('max');
    $jq('#block-views-recent_work-block_1').find('.views-row-1').children('div:first').children(".imagecache-listing_thumb_rectangle").show();
    $jq('#block-views-recent_work-block_1').find('.views-row-1').children('div:first').children(".imagecache-listing_thumb_square").hide();
    
    $jq('#block-views-recent_work-block_1').find('.views-row-5').children('div:first').removeClass('min').addClass('max');
    $jq('#block-views-recent_work-block_1').find('.views-row-5').children('div:first').children(".imagecache-listing_thumb_rectangle").show();
    $jq('#block-views-recent_work-block_1').find('.views-row-5').children('div:first').children(".imagecache-listing_thumb_square").hide();
    
   
    $jq('#information2').find('.views-row-1').children('div:first').removeClass('min').addClass('max');
    $jq('#information2').find('.views-row-1').children('div:first')./*children('div:first').*/children(".imagecache-listing_thumb_rectangle").show();
    $jq('#information2').find('.views-row-1').children('div:first')./*children('div:first').*/children(".imagecache-listing_thumb_square").hide();
    
    $jq('#homeRecentWorkBlock').click(function(){
                
        var offsethomeRecentWorkBlock = $jq('#recent-work').offset();
        //window.location = window.location + "#" + idOffice;

        $jq('html,body').stop().animate({
            'scrollTop' : offsethomeRecentWorkBlock.top
        }, 1200, function(){
            window.location.hash = $jq('#homeRecentWorkBlock').attr("href");
        });
        return false;
    });
    
    $jq('#homeBuzzBlock').click(function(){
                
        var offsethomeBuzzBlock = $jq('#buzz').offset();
        //window.location = window.location + "#" + idOffice;

        $jq('html,body').stop().animate({
            'scrollTop' : offsethomeBuzzBlock.top
        }, 1200, function(){
            window.location.hash = $jq('#homeBuzzBlock').attr("href");
        });
        return false;
    });
    
    $jq('#peopleBlock').click(function(){
                
        var offsethomeBuzzBlock = $jq('#people').offset();
        //window.location = window.location + "#" + idOffice;

        $jq('html,body').stop().animate({
            'scrollTop' : offsethomeBuzzBlock.top
        }, 1200, function(){
            window.location.hash = $jq('#peopleBlock').attr("href");
        });
        return false;
    });
   
    $jq("#header #search-theme-form input").focus(function() {
        this.value = '';
    })
}

function ShowAllItemPagesIfIE8(){
    if (( $jq.browser.msie ) && ( $jq.browser.version < 9)){
        
        if ($jq('#our-work') && ($jq('#our-work').length != 0)){
            if ($jq('#all-news').length != 0){                
                $jq('#all-news').trigger('click');                
            }
        
        }
    }
}
function FormatContactUsFilters(){
    $jq('.contactFilter').each(
        function(){
            $jq( this ).bind (
                "click",
                function(){

                    var officeTitle = $jq(this).text();
                    var idOffice = officeTitle.replace(" ", "-").toLowerCase();
                    var office = $('#' + idOffice);
                    var offset = office.offset();
      
                    
                    $jq('html,body').stop().animate({
                        'scrollTop' : offset.top
                    }, 1200, function(){
                        window.location.hash = idOffice;
                    });
                    $jq('#type-filter-office').trigger('reset');
                    return false;
                }
                );
        }
        );
    
}

function FormatLabs(){
    //$jq('.addthis_toolbox').hide();
    
    $jq('.comments').each(function(){
        var comment=$jq(this);
        var addthis = comment.parent().children('.addthis_toolbox');
        
        comment.hover(function() {
             addthis.fadeIn("slow");    
        });
    })
}

function FormatYoutubePlayer(){
    $jq('#media-youtube-html5-1').width('585').height('425');
}


function BindFilters(){

    var client=$jq('#our-work');
    client.dynamicContainer({
        filters:['.filter-button'],
        feedUrl:'',
        minClass:'min',
        maxClass:'max',
        resizeTime:200,
        moveTime:300,
        fadeTime:200,
        maxSkipping:3,
        vSpacing:16,
        hSpacing:16,
        minWidth:200,
        selectedFilterClass:'current',
        fitToWindow:false,
        multipleFilters:false
    });
    client.bind('filtered', function(event){
        $jq('#type-filter-client').trigger('reset');
        $jq('#type-filter-expertise').trigger('reset');
        $jq('#type-filter-office').trigger('reset');
    });
    
    $jq('#clientInfo').hide();
    if  (getParameterByName("client") != null){        
        var client = '#'+ getParameterByName("client");
        $jq(client).click();

        //$jq('#clientInfo').show();                  
    }
    
    if  (getParameterByName("type") != null){        
        var client = '#'+ getParameterByName("type");
        $jq(client).click();
    }
    
    
     
}
function LoadMainPerson()
{
//$jq('#mainPerson').fadeIn('slow');
}
//var container=readMoreLink.parent().parent().parent().parent();
// $jq('#mainPerson').html(container.contents());//container.contents();


$jq(function(){

    //ShowAllItemPagesIfIE8();
    
    $jq.fn.dynamicContainer=function(options){
        var defaults={
            filters:[],
            feedUrl:'',
            minClass:'min',
            maxClass:'max',
            resizeTime:200,
            moveTime:300,
            fadeTime:200,
            maxSkipping:3,
            vSpacing:16,
            hSpacing:16,
            minWidth:200,
            fitToWindow:true,
            filterClassPrefix:'filter-',
            filterAttribute:'filter',
            filterAttributeDelimeter:',',
            selectedFilterClass:'selected-filter',
            padding:0,
            multipleFilters:true
        };
        for(var key in options)
        {
            defaults[key]=options[key];
        }
        options=defaults;

        target=$jq(this);

        var gridX;
        var w;
        var rows;
        var columns;
        var columnWidth;
        var columnPositions=[];
        var init=false;

        var filters=options.filters;
        var fl=filters.length;
        var selectedFilters={};
        var allFilters;
        for(var f=0;f<fl;f++)
        {
            var filterSelector=filters[f];
            filterSelector=$jq(filterSelector);
            if (!allFilters)
            {
                allFilters=filterSelector;
            }
            else
            {
                allFilters.add(filterSelector);
            }
            filterSelector.each(function(){
                var filterButton=$jq(this);
                var filter;
                
                if ((options.filterAttribute != null) &&
                    (filterButton.attr(options.filterAttribute) != null) &&
                    (filterButton.attr(options.filterAttribute).length != 0))
                        filter=filterButton.attr(options.filterAttribute).split(options.filterAttributeDelimeter);
                
                var selected;
                filterButton.bind('reset', function(event){
                    selected=false;
                    filterButton.removeClass(options.selectedFilterClass);
                });
                filterButton.click(function(){
                    
                    if  (getParameterByName("client") != null){
                    // window.location.href = window.location.href.split('?')[0];
                       
                    }
                    if (!options.multipleFilters)
                    {
                        var s=selected;
                        allFilters.trigger('reset');
                        selectedFilters={};
                        selected=s;
                    }

                    selected=!selected;
                    var i;
                    if (selected)
                    {
                        if (filter)
                        for(i=0;i<filter.length;i++)
                        {
                            selectedFilters[filter[i]]=true;
                        }
                        filterButton.addClass(options.selectedFilterClass);
                    }
                    else
                    {
                        for(i=0;i<filter.length;i++)
                        {
                            delete selectedFilters[filter[i]];
                        }
                        filterButton.removeClass(options.selectedFilterClass);
                    }
                    updateFilters();
                    return false;
                });
            });
        }

        function updateFilters()
        {
            var filters=[];
            for(var filter in selectedFilters)
            {
                if (filter)
                {
                    filters.push('.'+options.filterClassPrefix+filter);
                }
                else
                {
                    filters=[];
                    break;
                }
            }
            filters=filters.join(',');
            var children=target.children();
            if (filters)
            {
                filters=$jq(filters,target);
            }
            else
            {
                filters=children;
            }

            var faded=0;
            filters.css({
                'display':'block'
            });
            //target.trigger('updateSize');
            //target.bind('updateSizeAnimated', onAnimated);
            onAnimated();

            function onAnimated(){
                target.unbind('updateSizeAnimated', onAnimated);
                children=children.not(filters.toArray());
                children.fadeTo(options.fadeTime, 0, function(){
                    var jObj=$jq(this);
                    jObj.hide();
                });
                filters.stop();

                filters.fadeTo(options.fadeTime, 1, function(){
                    faded++;
                    if (faded==filters.length)
                    {
                        target.trigger('updateSize');
                        target.trigger('filtered');
                    }
                });
            }
			
        }

        target.bind('updateSize',function(event){
            w=target.width();
            columns=Math.floor((w-options.hSpacing)/(options.minWidth+options.hSpacing));
            columnWidth=(w+options.hSpacing)/columns-options.hSpacing;
            columnPositions=[];

            var index=0;
            rows=0;

            var column=0;
            var maxCounter=0;
            var children=target.children();
            var cH;

            var moveTime=options.moveTime;
            if (!init)
            {
                init=true;
                moveTime=0;
            }

            var animated=0;

            children.each(function(){
                var child=$jq(this);
                if (child.css('display')=='none')
                {
                    return;
                }

                var cW=child.width();
                cH=child.height();

                rows=Math.floor(column / columns);

                child.removeClass(options.minClass);
                child.removeClass(options.maxClass);
                child.css({
                    'position':'absolute',
                    'margin':'0'
                });

                var prevColumn=column % columns;
                var size=1;

                var canMax=options.maxSkipping>0 && (maxCounter % (options.maxSkipping+1) == 0);
                var hasMaxColumns=(prevColumn+1 < columns);
                if (hasMaxColumns && canMax)
                {
                    child.addClass(options.maxClass);
                    child.children(".imagecache-listing_thumb_rectangle").show();
                    child.children(".imagecache-listing_thumb_square").hide();
                    maxCounter++;
                    size++;
                }
                else
                {
                    child.addClass(options.minClass);
                    
                    child.children(".imagecache-listing_thumb_rectangle").hide();
                    child.children(".imagecache-listing_thumb_square").show();
                    
                    if (!canMax)
                    {
                        maxCounter++;
                    }
                }

                var scaleFactor=cW/cH;

                child.stop();

                var targetWidth=(columnWidth+options.hSpacing)*size-options.hSpacing;
                //here
                var css={
                    'top':rows*(cH+options.vSpacing),
                    'left':prevColumn*(columnWidth+options.hSpacing),
                    'width':targetWidth
                };
                var img=$jq($jq('img',child).get(0));
                child.animate(css, {
                    duration:moveTime, 
                    queue:false, 
                    complete:function(){
                        animated++;
                        if (animated==children.length)
                        {
                            target.trigger('updateSizeAnimated');
                        }
                    }, 
                    step:function(){
                        if (child.hasClass(options.maxClass)){
                            child.children(".imagecache-listing_thumb_rectangle").show();
                            child.children(".imagecache-listing_thumb_square").hide();
                    
                        }
                        else{
                            child.children(".imagecache-listing_thumb_rectangle").hide();
                            child.children(".imagecache-listing_thumb_square").show();
                    
                        }
                        img.width(child.width());
                    }
                });
                child.css(css);

                column+=size;
                index++;
            });

            target.height((rows+1)*(cH+options.vSpacing));
        });

        if (options.fitToWindow)
        {
            var windowJ=$jq(window);
            var windowWidth;
            windowJ.resize(function(){
                windowWidth=windowJ.width();
                target.width(windowWidth-2*options.padding);
                target.trigger('updateSize');
            });
            windowWidth=windowJ.width();
            target.width(windowWidth-2*options.padding);
        }
        target.trigger('updateSize');
    };
	
    $jq.fn.createSlider=function(options){
        var defaultOptions={
            fitToWindow:true,
            slideInterval:20000,
            slideTime:500,
			autoSlide:true,
			reverse:false,
			circle:false
        };
        for(var key in options)
            defaultOptions[key]=options[key];
        options=defaultOptions;
        var objects=$jq(this);
        objects.each(function(){
            var slider=$jq(this);
            var sliderContainer=$jq('.slider-container',slider);
            var children=sliderContainer.children();
            var slideInterval=options.slideInterval;
            var slideTime=options.slideTime;
            var current=0;
			var previous=0;
            var total=children.length;
            var timeout;
            var running=false;
            var first=$jq(children.get(0));
            var slideWidth=slider.width();
            var slideHeight=slider.height();
            var backgroundSlider=$jq('.background-slider', slider);
            var imageIndex=0;
            var loadedImages={};
            function onBgImgLoad()
            {
                loadedImages[-1]={
                    image:backgroundSlider,
                    width:backgroundSlider.width(),
                    height:backgroundSlider.height()
                };
                resizeImage(-1, 1);
            }
            if (backgroundSlider.get(0))
            {
                if (backgroundSlider.get(0).complete)onBgImgLoad();
                else backgroundSlider.get(0).onload=onBgImgLoad;
            }
            //backgroundSlider.load(onBgImgLoad);
            sliderContainer.css({
                'position':'relative',
                'width':slideWidth*total,
                'left':0
            });
			
			var reversed=false;
            function onSlide()
            {
				var push=false;
				var index=current;
				if (options.circle)
				{
					index++;
					if (index==total)
					{
						index=0;
						push=true;
					}
				}
				else if (!options.reverse)
				{
					index++;
					if (index==total)index=0;
				}
				else
				{
					if (!reversed)
					{
						index++;
						if (index==total)
						{
							reversed=true;
							index-=2;
						}
					}
					else
					{
						index--;
						if (index<0)
						{
							reversed=false;
							index+=2;
						}
					}
				}
                
                setSlide(index, push);
            }
            function setSlide(index, push)
            {
                currentNum.html(index+1);
				previous=current;
                current=index;
                doAnimation(push);
                running=false;
                startSlider();
            }
            function doAnimation(push)
            {
				var offset=current;
				var params={
                    queue:false,
                    duration:slideTime
                };
				var targetContainer;
				if (push)
				{
					if (current>previous)
					{
						offset=previous-1;
						targetContainer=sliderContainer.children().last();
						targetContainer.css({'left':-(total)*slideWidth,'position':'relative'});
						params.complete=function(){
							targetContainer.css({'position':'','left':''});
							sliderContainer.css({'left':-(total-1)*slideWidth});
						};
					}
					else if (current<previous)
					{
						offset=previous+1;
						targetContainer=sliderContainer.children().first();
						targetContainer.css({'left':total*slideWidth,'position':'relative'});
						params.complete=function(){
							targetContainer.css({'position':'','left':''});
							sliderContainer.css({'left':0});
						};
					}
				}
				offset=-offset*slideWidth;
                sliderContainer.animate({
                    'left':offset
                },params);
                backgroundSlider.animate({
                    'left':-(backgroundSlider.width()-slideWidth)*current/(total-1)
                },{
                    queue:false,
                    duration:slideTime
                });
            }
            function startSlider()
            {
                if (!running && !paused && options.autoSlide)
                {
                    running=true;
                    timeout=setTimeout(onSlide, slideInterval);
                }
            }
            function stopSlider()
            {
                running=false;
                window.clearTimeout(timeout);
            }
			
            var paused=false;
            var currentNum=$jq('.slide-num',slider);
            var totalNum=$jq('.slide-total',slider);
            var currentSlider=$jq('.current-slider',slider);
            var leftArr=$jq('.slide-left',slider);
            var rightArr=$jq('.slide-right',slider);
            var pause=$jq('.pause',slider);
            currentSlider.hide();
            leftArr.hide();
            rightArr.hide();
            pause.hide();
            pause.click(function(){
                paused=!paused;
                if (paused)
                {
                    slider.addClass('paused');
                    stopSlider();
                }
                else
                {
                    slider.removeClass('paused');
                    startSlider();
                }
            });
            totalNum.html(total);
            currentNum.html(1);
            if (total>1)
            {
                startSlider();
                slider.hover(
                    function(){
                        stopSlider();
                        currentSlider.fadeIn(300);
                        leftArr.fadeIn(300);
                        rightArr.fadeIn(300);
                        pause.fadeIn(300);
                    },
                    function(){
                        startSlider();
                        currentSlider.fadeOut(300);
                        leftArr.fadeOut(300);
                        rightArr.fadeOut(300);
                        pause.fadeOut(300);
                    }
                    );


                leftArr.click(function(){
                    stopSlider();
					var push=false;
					var index;
					if (current==0)
					{
						index=total-1;
						push=true;
					}
					else
					{
						index=current-1;
					}
                    setSlide(index, push);
                });
                rightArr.click(function(){
                    stopSlider();
					var push=false;
					var index;
					if (current==total-1)
					{
						index=0;
						push=true;
					}
					else
					{
						index=current+1;
					}
                    setSlide(index, push);
                });
            }
			
            children.each(function(){
                var index=imageIndex;
                var j=$jq(this);
                var image=$jq('.imagefield-field_bg_image', j);
                function onImgLoad()
                {
                    loadedImages[index]={
                        image:image,
                        width:image.width(),
                        height:image.height()
                    };
                    resizeImage(index);
                };
                if (image.get(0))
                {
                    if (image.get(0).complete)onImgLoad();
                    else image.get(0).onload=onImgLoad;
                }
                //image.load(onImgLoad);
                imageIndex++;
            });
			
            var windowJ=$jq(window);
            if (options.fitToWindow)
                windowJ.resize(onResize);
            function onResize()
            {
                slider.width(windowJ.width());
                slider.height(windowJ.height());
                slideWidth=slider.width();
                slideHeight=slider.height();
                sliderContainer.width(slideWidth*total);
                var imageIndex=0;
                children.each(function(){
                    var index=imageIndex;
                    var j=$jq(this);
                    j.width(slideWidth);
                    j.height(slideHeight);
                    var image=$jq('.imagefield-field_bg_image', j);
                    if (loadedImages[index])
                    {
                        resizeImage(index);
                    }

                    imageIndex++;
                });
                resizeImage(-1, 1);
                doAnimation();
            }
            function resizeImage(index, minScale)
            {
                var imageObj=loadedImages[index];
                if (!imageObj)return;
                var image=imageObj.image;
                if (!image)return;
                var w=imageObj.width;
                var h=imageObj.height;
                var scale=Math.max(slideWidth/w, slideHeight/h);
                if (minScale && scale<minScale)scale=minScale;
                image.width(w*scale);
                image.height(h*scale);
            }
            if (options.fitToWindow)
                onResize();
        });
    }
	
    headerSlider();
	ShowTopMenu();
    bodySlider();
    slidingContainers();
    //InitKeypeople();

    $jq('a').live('click', function(e){
        var aJ=$jq(this);
        if (aJ.attr('target')=='_blank')
            return;
        if (aJ.attr('class')=='close')
            return;
        var href=aJ.attr('href');
        var result=processLink(href);
        return result;
    });

    quickLinks();

    backToTopLinks();

    BindFilters();
   
    FormatHomePageSections();
    
    FormatContactUsFilters();
    
    FormatLabs();
    
    FormatYoutubePlayer();
});
