// JavaScript Document

<!--cufon-->
Cufon.replace(['.sub-links', 'h3', 'h2', '.intro p', '#mainNavContent > #mainNavWrapper > DIV > ul > li > a'], {fontFamily:'GothamMedium', hover:true});
Cufon.replace(['h1', '.end-note', '.sm_head a', '.page-sub-menu a'], {fontFamily:'NewCenturySchlbk', hover:true});
Cufon.replace(['.copyLinks a', '.maps-link'], {fontFamily:'NewCenturySchlbk', hover:true});
Cufon.replace(['.copyLinks2 a'], {fontFamily:'NewCenturySchlbk', hover:true});
Cufon.replace(['.sub-list a', '.intro p'], {fontFamily:'GothamBook'});
Cufon.replace(['.sub-list a.selected'], {fontFamily:'GothamMedium'});
Cufon.replace(['.paraLinks a > b > i > u'], {fontFamily:'NewCenturySchlbk', hover:true});

var _search = {};
var _menu = {maxHeight:0};
var _browsers = {iniLogoPosY:0};
var _banner = {interval:0, current:1, max:0, loaded:[], timer:7000};

/* document ready */
$().ready(function() {
	//$('.copyLinks a').children().wrap('<em />');
	$("div.col_holder div:last-child").css("margin-right", "0px");
	$("div.column_two_equal td:last-child").css("padding-right", "0px");
	$("div.row:first").css("padding-top", "0px");
	
	/*$('.copyLinks a').children().wrap('<strong><em></em></strong');*/
	
	Cufon.now();
	
	/* Search */
	$("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li.search > #form1 > input").focusin(_search.onHandler);
	$("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li.search > #form1 > input").focusout(_search.onHandler);
	
	/* MENU */
	_menu.homePosX = $("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li:first > a").position().left;
    $("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li").each(_menu.position);
	$("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li[class!='subscribe'] > a").mouseenter(_menu.mouseenter);

    $("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li[class='subscribe'] > a").mouseover(_menu.subscribeHandler);
    $("#header > .nav-mainlinks > .nav-holder > .main-nav > ul > li[class='subscribe'] > a").mouseout(_menu.subscribeHandler);

    $("#banner").mouseenter(_menu.mouseLeave);
    // $("#banner > #bannerWrapper").mouseenter(_menu.mouseLeave);
	
	var array = [];
	
	$("#banner > #bannerWrapper > #bannerNav > #bannerButtons > a").each(function() {
        array.push($(this).attr('rel'));
        _banner.max++;
    });
    
    $(this).bind("IMAGEPRELOADER_LOADED", _banner.imagesLoaded);
    $(this).imagePreloader($("#container"), array);
	
	var img = $("#content > DIV.col-logo img");
	_browsers.iniLogoPosY = img.position().top;
	
	if($("#content > DIV.col-logo > DIV").length == 0) {
		$("#content > DIV.col-logo").append("<div style='display:block; width:240px; height:110px;'></div>");
	}
	
	img.css("position", 'absolute');
	img.css("top", _browsers.iniLogoPosY+'px');
	
	_browsers.img = img;
	
	_browsers.fixElements();
	$(window).scroll(_browsers.onscroll);
});

_search.onHandler = function(e) {
	var target = $(e.currentTarget).parent().find("> button");
	switch(e.type) {
		case "focusin":
			target.css("visibility", "visible");
			break;
		case "focusout":
			if($(e.currentTarget).val().length == 0)
				target.css("visibility", "hidden");
			break;
	}
}

/**
 * Menu related JS
 **/
_menu.mouseenter = function() { 
    var className = ($(this).parent().attr('class'));
 
    var mnc = $("#mainNavContent");

	var n = mnc.find("#mainNavWrapper > DIV."+className).children().length;
	
    var o = mnc.find("> #mainNavWrapper > DIV > ul[class='selectedSubMenu']");
    var ommenu = $("#header .nav-mainlinks .nav-holder .main-nav ul li a[class='selectedMenu']");

    ommenu.removeClass('selectedMenu');
	
	if(n == 0) {
	    mnc.stop();
	    mnc.animate({'top': '-155' }, 1000, 'easeOutExpo' );
	
		return;
	}
	
    var t = mnc.find("> #mainNavWrapper > DIV."+className+" > ul");

    var mmenu = $("#header .nav-mainlinks .nav-holder .main-nav ul li."+className+" a");

    mnc.stop();
    mnc.css("visibility", "visible");
    mnc.animate({'top': '0'}, 550, 'easeOutExpo');

    if(o.parent().hasClass(className) && t.parent().hasClass(className))
        return false;
    
    if(o && o.hasClass('selectedSubMenu'))
        o.animate({'opacity': '0'}, 0, 'easeInCubic', function() {o.removeClass('selectedSubMenu')});

    t.addClass('selectedSubMenu');
    mmenu.addClass('selectedMenu');
    t.animate({'opacity': '1'}, 150, 'easeInExpo');
};

_menu.subscribeHandler = function(e) {
    switch(e.type) {
        case 'mouseover':
            $(this).animate({'top': '-145px'}, 750, 'easeOutExpo');
            break;
        case 'mouseout':
            $(this).animate({'top': '-175px'}, 550, 'easeOutExpo');
            break;
    }
};

_menu.mouseLeave = function() {
    $("#mainNavContent").stop();

    var o = $("#mainNavContent > #mainNavWrapper > DIV > ul[class='selectedSubMenu']");
    if(o && o.hasClass('selectedSubMenu'))
        o.animate({'opacity': '0'}, 250, 'easeInCubic', function() {o.removeClass('selectedSubMenu')});
    
    $("#header .nav-mainlinks .nav-holder .main-nav ul li a[class='selectedMenu']").removeClass('selectedMenu');
    $("#mainNavContent").animate({'top': '-155'}, 350, 'easeInExpo', function() {$("#mainNavContent").css("visibility", "hidden");});
};

_menu.position = function() {
    if($(this).hasClass("search")) {
        $("#mainNavContent").css("height", _menu.maxHeight + 15);
        return;
    }

    var className = $(this).attr('class');
    var t = $("#mainNavContent > #mainNavWrapper > DIV."+className+" > ul");
    var nb = $(this).find('> a').offset().left - _menu.homePosX + (($(this).hasClass("home"))?0:8);

    _menu.maxHeight = Math.max(_menu.maxHeight, t.innerHeight() + 53);
    t.css('margin-left', nb+"px");
};

// @param e: Event object
// @param id: id of the image that was just loaded
// @param src: the source of the Image that was just loaded
// @param img: the Image object that was just loaded
// function imagesLoaded(e, id, img) {
_banner.imagesLoaded = function(e, id, src, iniSRC) {
    $("#banner").append('<img src="'+src+'" class="'+(id == 0 ? "visibleBanner": "hiddenBanner")+'" alt="'+iniSRC+'" height="345" />');

    _banner.loaded.push(id);
    
    if(_banner.loaded.length  == _banner.max) {
        var imgs = $("#banner > img[class='hiddenBanner']");
        imgs.css("opacity", "0");

        $("#banner > #bannerWrapper").mouseover(_banner.mouseover);
        $("#banner > #bannerWrapper").mouseout(_banner.mouseout);

        $("#banner > #bannerWrapper > #bannerNav > #bannerButtons a").click(_banner.onButtonClicked);

        _banner.current++;
        _banner.interval = setInterval('_banner.autoAnimate()', _banner.timer);
    }
}

_banner.mouseover = function() {
    clearInterval(_banner.interval);

    $("#banner > #bannerWrapper").stop();
    $("#banner > #bannerWrapper").animate({'top': '217px' }, 1000, 'easeOutExpo' );
};

_banner.mouseout = function() {
    clearInterval(_banner.interval);
    _banner.interval = setInterval('_banner.autoAnimate()', _banner.timer);

    $("#banner > #bannerWrapper").stop();
    $("#banner > #bannerWrapper").animate({'top': '290px' }, 1000, 'easeOutExpo' );
};

_banner.onButtonClicked = function() {
    var i = 1;
    var src = this.getAttribute("rel");

    var n = $("#banner > img[alt='"+src+"']");
    var o = $("#banner > img[class='visibleBanner']");

    $("#banner > img").each(function(id, elem) {
        if(this.getAttribute('alt') == src) {
            _banner.current = (i+1 >= _banner.max)?1: i+1;
            return false;
        }
        i++;
    });

    $("#banner > #bannerWrapper > #bannerNav > #bannerButtons > a[rel='"+o.attr('alt')+"']").removeClass("selectedButton");
    $("#banner > #bannerWrapper > #bannerNav > #bannerButtons > a[rel='"+src+"']").addClass("selectedButton");

    n.removeClass("hiddenBanner").addClass("visibleBanner");
    o.removeClass("visibleBanner").addClass("hiddenBanner");

    _banner.animate(n, o);
    
    // clearInterval(_banner.interval);
    // _banner.interval = setInterval('_banner.autoAnimate()', _banner.timer);
};

_banner.autoAnimate = function() {
    var o, bo, bn;
    var n = $("#banner > #bannerWrapper > #bannerNav > #bannerButtons > a:nth-child("+(_banner.current)+")");
    var l = $("#banner > #bannerWrapper > #bannerNav > #bannerButtons > a:last-child");
    
    if(_banner.current == 1)
        o = l;
    else
        o = $("#banner > #bannerWrapper > #bannerNav > #bannerButtons > a:nth-child("+(_banner.current-1)+")");

    bn = $("#banner > img[alt='"+n.attr('rel')+"']");
    bo = $("#banner > img[alt='"+o.attr('rel')+"']");
    bn.removeClass("hiddenBanner").addClass("visibleBanner");
    bo.removeClass("visibleBanner").addClass("hiddenBanner");

	// if(!(jQuery.browser.msie && jQuery.browser.version=='7.0'))
   	o.animate({'opacity': (bo.css('opacity') != '0' ? '.75': '1')}, 1000, 'easeInCubic', function() {o.css('opacity', '1'); o.removeClass("selectedButton"); n.addClass("selectedButton")});

    _banner.current = (n.attr('rel') == l.attr("rel"))? 1: _banner.current + 1;
    _banner.animate(bn, bo);
}

_banner.animate = function(_new, _old) {
    _new.animate({'opacity': '1' }, 1000, 'easeInExpo' );
    _old.animate({'opacity': '0' }, 1000, 'easeInExpo' );
    
    var ot = $("#banner #bannerWrapper #bannerNav DIV.bannerInfo[title='"+_old.attr('alt')+"']");//.removeClass('bannerSelected');
    var nt = $("#banner #bannerWrapper #bannerNav DIV.bannerInfo[title='"+_new.attr('alt')+"']");//.addClass('bannerSelected');
    
    nt.addClass('bannerSelected');
    nt.css('opacity', '0');
    
    nt.animate({'opacity': '1' }, 1000, 'easeInExpo');
    ot.animate({'opacity': '0' }, 1000, 'easeInExpo', function() {ot.css('opacity', '1'); ot.removeClass('bannerSelected')});
}

/* fix inconsistencies */
_browsers.fixElements = function() {
	if(jQuery.browser.webkit) {
		
	} else if(jQuery.browser.opera) {
		
	} else if(jQuery.browser.msie) {
		$('#footer div.sub-links ul li').each(function() {
			if(!$(this).hasClass('icon'))
				$(this).css('top', '9px');
		});
		
		$("#header ul li.search form#form1 button").css("top", "-16px");
		
		if(jQuery.browser.version=='6.0') {
			alert("This website is not optimised for IE6.0. Please update your browser.");
		} else if(jQuery.browser.version=='7.0' || jQuery.browser.version=='8.0') {
			$("DIV.main-nav > ul").css("height", "1px");
			$("#bannerWrapper #bannerNav .bannerInfo > .bannerTitle > b").css("font-weight", 'normal');
			$("#bannerWrapper #bannerNav .bannerInfo span").css("width", '300px');
			$("#bannerWrapper").css("opacity", '.9');
			$("#mainNavContent").css("opacity", '.93');
			$("#mainNavContent > #mainNavWrapper > DIV > ul").css("opacity", '.93');
		}
	} else if(jQuery.browser.mozilla) {
	    $('#footer div.sub-links ul li').each(function() {
			if(!$(this).hasClass('icon'))
				$(this).css('top', '9px');
		});
	}
}

_browsers.onscroll = function() {

	if($(window).scrollTop() > $("#content > DIV.col-logo").position().top + 100) {
		_browsers.img.clearQueue().stop().delay(750).animate({'top': $(window).scrollTop() + 45 }, 950, 'easeOutExpo');
	} else {
		_browsers.img.clearQueue().stop().animate({'top': _browsers.iniLogoPosY+'px'}, 450, 'easeOutExpo' );
	}
	
	// _browsers.img.delay(800).
}
