$(function () {

    $('body').addClass('js');

    if ($('#grid').length) {
        grid.init();
    }

    language.init();

    if ($('#home').length) {
        /* call window size on page load */
        windowSize();

        /* call windoSize when page is resized */
        $(window).resize(function () {
            windowSize();
        });
    }

    /* on click show and hide our key business areas */
    $('#hide').click(function () {
        toggleBusiness();
        return false;
    });

    $('#intro').bind(function () {
        sendToActionScript("visible");
    });

    //Immediacy formbuilder fix  
    $('input:text, textarea')
    	.each(function () { $(this).data('default', $(this).val()); })
		.bind({
		    focus: function () {
		        if ($(this).val() == $(this).data('default'))
		            $(this).val('');
		    },
		    blur: function () {
		        if ($(this).val() == '')
		            $(this).val($(this).data('default'));
		    }
		});

    if ($('#standard').length) {
        $("a.iframe").fancybox({
            'height': 630,
            'width': 700,
            'centerOnScroll': true,
            'hideOnContentClick': false,
            'type': 'iframe'
        });
    }

    if ($('#testimonial').length) {
        testimonials.init();
    }

    if ($('.row1').length) {
        equalHeights.init('.row1');
    }

    if ($('.row2').length) {
        equalHeights.init('.row2');
    }

    $('.question').click(function () {
        $(this).next('.answer').slideToggle();
    });

});

/*********************************************** 
			IE6 PNG fix
***********************************************/

if($.browser.msie && $.browser.version.substr(0,1) == "6") {
	DD_belatedPNG.fix('#logo img, #main #intro .find img, #content #grid li .bottom-left-corner, #content #grid li .bottom-right-corner, #mapVignette, #content #side-nav li.active, #content #side-nav li.active a, #content #side-nav li.active ul, #main, #content #side-nav li ul li#current, #content #side-nav li ul li#current a, #content #horizontal-nav li a, #content #horizontal-nav li a, #content #grid li .trans, #header #main-nav li li.active, #header #main-nav li li.active a, #newsLandingBtm .feature .feature-inner .feature-trans, #ProboTimeline ul ul ul, .btn-wrapper');
}	

/*********************************************** 
			Immediacy Change Language script
***********************************************/

function changeLanguage(lang, name){
	var sep="&";
	var url=window.location.href;
	
	if(url.indexOf("lang=")>-1){ url=url.substring(0, url.indexOf("lang=")-1); }
	
	if(url.substring(url.length, url.length-5)==".aspx"){ sep="?"; }
	
	if(url.substring(url.length, url.length-1)=="/"){ sep="default.aspx?"; }
	
	url=url+sep+"lang="+lang;
	window.location.href=url;
} 

/********************************************************** 
	function to hide the key business area at the bottom 
**********************************************************/

function toggleBusiness() {
	if($('#hide-wrapper').hasClass('hidden')) {
		$('#key-business-wrapper').height(216);
		$('#intro').addClass('hidden');
		toggleIntro();
		sendToActionScript("visible");
		if($.browser.msie && $.browser.version.substr(0,1) == "6") 
			$('#hide-wrapper').css('bottom', -2).removeClass('hidden');
		else 
			$('#hide-wrapper').animate({ bottom: 0 }, 500).removeClass('hidden');
		
	}
	else {
		if($.browser.msie && $.browser.version.substr(0,1) == "6") 
			$('#hide-wrapper').css('bottom', -148).addClass('hidden');
		else 
			$('#hide-wrapper').animate({ bottom: -148 }, 500, function() { $('#key-business-wrapper').height(67); }).addClass('hidden');
	}
}

/********************************************************** 
	function to hide the intro text 
**********************************************************/

function toggleIntro() {
	if($.browser.msie) 
		$('#intro').hide().addClass('hidden');
	else
		$('#intro').animate({ opacity: 0 }, 500, function() { $(this).hide() }).addClass('hidden');
}

/**********************************************************************
	function sets minimum window height and aligns intro text
**********************************************************************/

function windowSize() {
	var winheight = $(window).height();
	if(winheight < 720) winheight = 720;
	if(winheight > 880) winheight = 880;
	$('#home').css('min-height', 0).css('height', winheight);
	$('#home #intro').css('top', (winheight / 2)-180);
}

/**************************************************************************************
	 when the globe is clicked (from flash) hide the text and scroll the slider
**************************************************************************************/

function globeActive() {
	toggleIntro();
}


/**************************************************************************************
	Send message to flash from js to tell it to hide controls
**************************************************************************************/

function thisMovie(movieName) {
	return document[movieName];
}

function sendToActionScript(value) {
	thisMovie("GeoGlobe").sendToActionScript(value);
	return true;
}

function thisMovie(movieName) {
	return document[movieName];
}

/**************************************************************************************
	Our business section
**************************************************************************************/

var grid = {

	settings : {
    	nsize : 310,
    	ssize : 174,
    	lsize : 581,
    	container : '#grid',
    	newHeight: 155,
    	baseHeight: 30
    },
    
    init : function() {
    
    	var grid = this,
			settings = this.settings;
			
		var $links = $(settings.container).find("li:not(.business-nav li)");
		
		function getRow(hover) {
			var classes = $(hover).attr('class').split(' '),
				row = '.' + classes[1];
			return row;
		}
		
		function getHeight(hover) {
			return $('p', hover).height() + 38;
		}
		
		var title = null;
		
		$($links).each(function(){
			if($(this).find('.business-nav').length) {
				$(this).addClass('links').find('p').width(287);
			}
		});
		
		$($links).mouseenter(function(){
			$(this)
				.stop()
				.animate({width: settings.lsize}, {duration: 500, queue: false })
				.addClass('large')
				.find('.trans')
				.animate({height: settings.newHeight }, {duration: 500, queue: false })
				.parent()
				.siblings(getRow(this))
				.animate({width: settings.ssize}, {duration: 500, queue: false })
			if($(this).find('.business-nav').length) {
				$(this).find('.business-nav').animate({right: 0 }, {duration: 500, queue: false })
			}
		}).mouseleave(function() {
			$(this)
				.stop()
				.animate({width: settings.nsize}, {duration: 500, queue: false })
				.removeClass('large')
				.find('.trans')
				.animate({height: settings.baseHeight}, {duration: 500, queue: false })
				.parent()
				.siblings(getRow(this))
				.animate({width: settings.nsize}, {duration: 500, queue: false })
			if($(this).find('.business-nav').length) {
				$(this).find('.business-nav').animate({right: -274 }, {duration: 500, queue: false })
			}
		});
		
		$($links).click(function() {
			window.location = $(this).find('.trans h2 a').attr('href');
		});
				    
    }

}

/**************************************************************************************
	Language Selector
**************************************************************************************/

var language = {

	settings : {
		insertTo: "#header",
    	wrapper : "<dl id='language-nav'><dt class='active-lang'></dt><dd><ul></ul></dd></dl>",
    	container : "#language-nav",
    	itemContainer : ' ul',
    	item : "li",
    	active : '.active-lang',
    	selectContainer : "#languageSelector"
    },
    
    init : function() {
    	
    	var language = this,
			settings = this.settings;
					
		$("select, input", settings.selectContainer).hide(); //hide the select list and button
		$(settings.insertTo).append(settings.wrapper); //append the html markup
		$(settings.active).html($("select option:selected", settings.selectContainer).html()); //set the active state from the selected option
		
		//grab all non selected items from the select list and append to our new html list
		$("select option:not(:selected)", settings.selectContainer).each(function(){
			$(settings.container + ' ' + settings.itemContainer)
				.append("<" + settings.item + "><a rel='" + $(this).val() + "'>" + $(this).html() + "</a></" + settings.item + ">");
		})
		
		//when a link in my new menu is clicked, update the hidden select and simulate click on button
		$(settings.container + ' ' + settings.item + ' a').click(function () {
			$("select", settings.selectContainer).val($(this).attr('rel'));
			$("input", settings.selectContainer).click();
		}); 
		
    }

}

/*********************************************** 
				Probo Timeline
***********************************************/

var ProboTimeline = {

    settings: {
        container: '#ProboTimeline',
        active: '.active a',
        highlightBar: '.pointer',
        colors: {
            white: '#FFF',
            grey: '#736C66'
        }
    },

    init: function () {

        var timeline = this,
			settings = this.settings,
			colors = settings.colors;

        // Setup variables and elements
        var $container = $(settings.container),
			$links = $('ul li', $container),
			$bar = $('<div class="bar"/>').appendTo($container),
			listPos = $('ul', $container).position().top,
			topPadding = parseInt($bar.css("padding-top").replace("px",""));

        // Setup initial bar & panel viewstate	  
        $bar.hide();
        
        // Setup link events
        $links.hover(
            function () {
                $el = $(this);
                $bar.show();
                
                // Move highlight bar
                topPos = $el.position().top + listPos - topPadding;

                timeline.moveBar($bar, $el, topPos);

            },
	        function () {
	            $el = $(this);
	        }
        )
        
        $links.click(function()
        {
            $(this).find('a').trigger('click');
        });
        
        $container.mouseleave(function(){ $bar.hide(); });
    },

    textCol: function (elm, col) 
    {
        $(elm).css('color', col);
    },

    moveBar: function ($elm, $target, pos) 
    {
        $elm.stop().animate({
           top: pos,
           height: $target.height()
        }, 200)
    }
};

/*********************************************** 
Testimonials
***********************************************/

var testimonials = {

    settings: {
        container: '#testimonial',
        interval: 8000
    },

    init: function() {

        var settings = this.settings;

        setInterval("testimonials.slideSwitch()", settings.interval);

    },

    slideSwitch: function() {

        var settings = this.settings,
            $container = $(settings.container);
        
        var $active = $container.find('li.active'),
            $next = $active.next().length ? $active.next() : $container.find('li:first');
       
        $active.animate({opacity: 0.0}, 1000, function() {
            $(this).removeClass('active last-active')
            $next.css('opacity', 0).addClass('active').animate({ opacity: 1.0 }, 2000);
        });

    }

}

/*********************************************** 
Equal Heights
***********************************************/

var equalHeights = {
	
	init: function(item) {
		
		var tallest = 0;
		
		$(item).each(function(){
			$item = $(this);
			if($item.height() > tallest) {
				tallest = $item.height();
			}
		});
		
		if ($.browser.msie && $.browser.version.substr(0,1) < 7) {
			$(item).height(tallest);
		}
		else {
			$(item).css('min-height', tallest);
		}
		
		
		
	}
	
}
