﻿$(document).ready(function() {


    if ($.browser.msie && $.browser.version < 7) {
        $(window).scroll(function() {
            $('ul.newsItemListing li div.newsItemImage div.newsItemImageCorner').css({ 'position': 'absolute', 'right': '-1px', 'bottom': '-2px' });
            $('div.mapItem div.mapItemImage div.mapItemCorner').css({ 'position': 'absolute', 'right': '-1px', 'bottom': '-1px' });
            $('div.timelineContainer div.timelineContent div.timelineContentImage div.timelineContentImageCorner').css({ 'position': 'absolute', 'right': '0', 'bottom': '-1px' });
        });
        $('div.timelineContainer div.timelineYears ul li a,div.timelineContainer div.timelineButtons a').click(function() {
            fixCorner = setTimeout(function fxCrnr() {
                $('div.timelineContainer div.timelineContent div.timelineContentImage div.timelineContentImageCorner').css({ 'position': 'absolute', 'right': '0', 'bottom': '-1px' });
            }, 100)
        })
    }
    // the banner rotator click action
    $('#bannerImageNav li input').click(function(e) {
        e.preventDefault();
        // stop the auto function
        $('#bannerImageSlides').stopTime('rotatorTimer');
        //navigation
        $('#bannerImageNav li input').removeClass('active');
        $(this).addClass('active');
        // get image
        var showImage = $(this).attr('title');
        // if its not already active
        if ($('#bannerImageSlides li').length > 1) {
            if (!$('#' + showImage).hasClass('active')) {
                // add trigger to current active & background
                $('#bannerImageSlides li.active').addClass('remove');
                $('.largeBanner.active').addClass('remove');
                //show image / add class
                $('#' + showImage).animate({ opacity: 1.0 }, 1000).removeClass('hidden').addClass('active');
                //fade in background
                $('#' + showImage + 'Large').animate({ opacity: 1.0 }, 1000).addClass('active');
                // fade out old image & background / remove class & trigger
                $('#bannerImageSlides li.remove').animate({ opacity: 0.0 }, 1000).removeClass('active').removeClass('remove');
                $('.largeBanner.remove').animate({ opacity: 0.0 }, 1000).removeClass('active').removeClass('remove');
            }
            //Call the rotator function to run the slideshow, 6000 = change to next image after 6 seconds
            $('#bannerImageSlides').everyTime(5000, 'rotatorTimer', rotate);
        }

        return false;
    });

    // checkbox click swap out
    CrownAgents.setupCheckboxes();

    // error checkbox version
    $('div.checkError').click(function() {
        $(this).toggleClass('checked');
    });

    // maps
    $('a.officeTab').click(function(e) {
        e.preventDefault();
        $('.mapContainer .selected').removeClass('selected');
        $('.mapContainer .projectTabSelected').removeClass('projectTabSelected');
        $('.mapContainer .officeTabSelected').removeClass('officeTabSelected');
        $(this).addClass('officeTabSelected');
        $('.officeTabContent').addClass('selected');
    });

    $('a.projectTab').click(function(e) {
        e.preventDefault();
        $('.mapContainer .selected').removeClass('selected');
        $('.mapContainer .projectTabSelected').removeClass('projectTabSelected');
        $('.mapContainer .officeTabSelected').removeClass('officeTabSelected');
        $(this).addClass('projectTabSelected');
        $('.projectTabContent').addClass('selected');
    });

    // search filter
    $('.filterButton').click(function(e) {
        e.preventDefault();
        if ($.browser.msie && $.browser.version < 7) {
            if ($(this).hasClass('minimise')) {
                $('#regionSelect').show(); // this needs changing to match .net id, used for ie6 and faster than class.
                $('div.searchFilterSlider').hide();
                $('.paginationBar.displayItemsPerPage .paginationSubtitle select').css("visibility", "visible")
            } else {
                $('#regionSelect').hide(); // this needs changing to match .net id, used for ie6 and faster than class.
                $('div.searchFilterSlider').show();
                $('.paginationBar.displayItemsPerPage .paginationSubtitle select').css("visibility", "hidden")
            }
        } else {
            if ($(this).hasClass('minimise')) $('div.searchFilterSlider').slideUp();
            else $('div.searchFilterSlider').slideDown();
        }
        $(this).toggleClass('minimise').toggleClass('maximise');
    });

    // contact listing
    $('li.continent a').click(function(event) {
        event.preventDefault();
    });

    $('li.continent').click(function() {
        var clicked = $(this);
        clicked.children('a.contactlistingButton').toggleClass('minimise');

        if (clicked.children('a.contactlistingButton').hasClass('minimise')) {
            clicked.next('li.regionList').children('ul').show();
        }
        clicked.next('li.regionList').slideToggle(function() {
            if (!clicked.children('a.contactlistingButton').hasClass('minimise')) {
                clicked.next('li.regionList').children('ul').hide();
            }
        });
    });

    $('div.contactDetailsListing ul li.regionList, div.contactDetailsListing ul li.regionList ul li div.details').hide();

    $('div.contactDetailsListing ul li.regionList ul li a.panelButton').click(function(e) {
        e.preventDefault();
        $(this).next('div.details').slideToggle('slow');
        $(this).toggleClass('expanded');
    });


    // Show Bookmark and Print links
    CrownAgents.showBottomOptions();

    // add a "rel" attrib if Opera 7+
    if (window.opera) {
        if ($("a.jqbookmark").attr("rel") == "") { // don't overwrite the rel attrib if already set
            $("a.jqbookmark").attr("rel", "sidebar");
        }
    }

    $("a.jqbookmark").click(function(event) {
        event.preventDefault(); // prevent the anchor tag from sending the user off to the link
        var url = window.location;
        var title = window.title;

        if (window.sidebar) { // Mozilla Firefox Bookmark
            window.sidebar.addPanel(title, url, "");
        } else if (window.external) { // IE Favorite
            window.external.AddFavorite(url, title);
        } else if (window.opera) { // Opera 7+
            return true; // do nothing - the rel="sidebar" should do the trick
        } else { // for Safari, Konq etc - browsers who do not support bookmarking scripts (that i could find anyway)
            alert('Unfortunately, this browser does not support the requested action,'
			 + ' please bookmark this page manually.');
        }

    });

    $('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_chkPrivacy').addClass('hidden');

    CrownAgents.setupTimeline();

    // Show Google maps when js is on
    $('.mapContainer').removeClass('hidden');

    // Hide update button on book course form
    $('div.formContainer ul li input.updateButton').addClass('hidden');
    $('div.formContainer ul li select.courseName').css('width', '379px')

    // Hide pagination drop down
    $('div.paginationSubtitle').show();

    // Show Captivate link
    $('#hlnkCaptivate').removeClass('tripsHidden');

    // Supply chain
    $('.supply_chain a').click(function(e) {
        e.preventDefault();
        var linkID = $(this).attr('id');
        var count = linkID.substring(linkID.length - 1);
        CrownAgents.supplyChainOverlay(count);
        return false;
    });
    fakeSelectBox();

});


// function waits untill all elements inc images are loaded before executing
$(window).load(function() {

    // load background home banners
    var i = 2;
    $('div.homepageBannerBg').children('div').each(function() {
        $(this).append('<img id="image' + i + 'Large" class="largeBanner" src="' + $(this).attr('title') + '" alt="LargeBanner" />');
        $(this).children('img').load(function() {
            $(this).oneTime(1000, function() { $(this).pixastic("blurfast", { amount: 0.8 }); });
        });
        i++;
    });
    // load the content banners
    $('div.contentBannerBg div').each(function() {
        $(this).append('<img id="image' + i + 'Large" class="contentBanner" src="' + $(this).attr('title') + '" alt="contentBanner" />');
        $(this).children('img').load(function() {
            $(this).oneTime(1000, function() { $(this).pixastic("blurfast", { amount: 0.8 }); });
        });
    });

    // blur the default
    $("#image1Large").pixastic("blurfast", { amount: 0.8 });
    $(".contentBannerSp").pixastic("blurfast", { amount: 0.8 })

    // the banner rotator default function & timer
    theRotator();

});

// the banner rotator defaults
function theRotator() {
    if ($('#bannerImageSlides li').length > 1) {
        //Set the opacity of all images to 0
        $('#bannerImageSlides li').css({ opacity: 0.0 });
        $('.largeBanner').css({ opacity: 0.0 });
        //Get the first image and display it (gets set to full opacity)
        $('#bannerImageSlides li:first').css({ opacity: 1.0 });
        $('.largeBanner.active').css({ opacity: 1.0 });
        //Call the rotator function to run the slideshow, 6000 = change to next image after 6 seconds
        $('#bannerImageSlides').everyTime(5000, 'rotatorTimer', rotate);
    }
};

// the banner rotator
function rotate() {
    // Get the first image
    var current = ($('#bannerImageSlides li.active') ? $('#bannerImageSlides li.active') : $('#bannerImageSlides li:first'));
    // Get next image, when it reaches the end, rotate it back to the first image
    var next = ((current.next().length) ? ((current.next().hasClass('active')) ? $('#bannerImageSlides li:first') : current.next()) : $('#bannerImageSlides li:first'));
    // Set the fade in effect for the next image, the active class has higher z-index
    next.css({ opacity: 0.0 }).addClass('active').removeClass('hidden').animate({ opacity: 1.0 }, 0);
    // Hide the current image
    current.animate({ opacity: 0.0 }, 0).removeClass('active');
    // get images
    var showImage = next.attr('id');
    var hideImage = current.attr('id');
    // update the navigation
    $('#bannerImageNav li input').removeClass('active');
    $('#bannerImageNav li input[title=' + showImage + ']').addClass('active');
    // update bg image
    $('#' + showImage + 'Large').animate({ opacity: 1.0 }, 0).addClass('active');
    $('#' + hideImage + 'Large').animate({ opacity: 0.0 }, 0).removeClass('active');
};


var CrownAgents = new function () {
	var timelineRequest;
	var aborted = false;

	var GetTripsOverlayData = function (mode, id, _callback) {
		var _data = '{"ID":' + id + '}';
		var content = '';
		if (mode == 'captivate') {
			content = '\
			<div class="xStandardContent">\
				<h1>' + $('#hfCaptivateTitle').val() + '</h1>\
			</div>\
			<div class="tripsOverlayShadow captivateShadow">\
				<div class="shadowTop">\
					<div class="shadowTopLeft"></div>\
					<div class="shadowTopRight"></div>\
				</div>\
				<div class="shadowLeft">\
					<div class="shadowRight">\
						<div class="tripsOverlayCaptivateContainer">\
							<div id="CaptivateContent">&nbsp;</div>\
						</div>\
					</div>\
				</div>\
				<div class="shadowBottom">\
					<div class="shadowBottomLeft"></div>\
					<div class="shadowBottomRight"></div>\
				</div>\
				<div class="clear"></div>\
			</div>\
			<div class="tripsOverlayNav"></div>';
			_callback(content, $('#hfCaptivateURL').val());
		} else {
			$.ajax({
				type: "POST",
				url: "/Modules/Trips/Functionality.aspx/GetOverlayData",
				data: _data,
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function (_retData) {
					if (_retData.d.Success) {
						if (_retData.d.Type == 'text') {
							content = '<div class="xStandardContent"><h1>' + _retData.d.PageTitle + '</h1>' + _retData.d.Content + '</div>';
						}
						if (_retData.d.Type == 'image') {
							content = '\
						<div class="xStandardContent">\
							<h1>' + _retData.d.PageTitle + '</h1>\
						</div>\
						<div class="tripsOverlayShadow imageShadow">\
							<div class="shadowTop">\
								<div class="shadowTopLeft"></div>\
								<div class="shadowTopRight"></div>\
							</div>\
							<div class="shadowLeft">\
								<div class="shadowRight">\
									<div class="tripsOverlayImageContainer">\
										<img width="551" src="' + _retData.d.ContentURL + '" alt="' + _retData.d.Content + '" />\
										<p class="tripsOverlayCaption">' + _retData.d.Content + '</p>\
									</div>\
								</div>\
							</div>\
							<div class="shadowBottom">\
								<div class="shadowBottomLeft"></div>\
								<div class="shadowBottomRight"></div>\
							</div>\
							<div class="clear"></div>\
						</div>';
						}

						content += '\
						<div class="tripsOverlayNav">\
							<div class="tripsOverlayNavButtons">\
								<a href="#" class="tripsOverlayNavBack"></a>\
								<a href="#" class="tripsOverlayNavNext"></a>\
							</div>\
						</div>';
						_callback(content, _retData.d.ContentURL, _retData.d.Type);
					} else {
						alert(_retData.d.Content);
					}
				},
				error: function (XMLHttpRequest, textStatus, errorThrown) {
					alert(textStatus + " : " + errorThrown);
				}
			});
		}
	}

	this.ShowOverlay = function (mode, id) {
		var captivateLink;
		var content;

		GetTripsOverlayData(mode, id, function (_content, _contentURL, _retMode) {
			content = _content;
			captivateLink = _contentURL;

			var overlayClass = GetOverlayClass(_retMode);
			var overlay = GenerateOverlay('Crown Agents - trips™', content, GetOverlayWidth(mode), overlayClass);

			if (mode == 'captivate') {
				var so = new SWFObject(captivateLink, "Captivate", "801", "609", "8", "#CCCCCC");
				so.addParam("quality", "high");
				so.addParam("name", "Captivate");
				so.addParam("id", "Captivate");
				so.addParam("wmode", "window");
				so.addParam("bgcolor", "#F5F4F1");
				so.addParam("menu", "false");
				so.addVariable("variable1", "value1");
				so.setAttribute("redirectUrl", "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash");
				so.write("CaptivateContent");
				try {
					document.getElementById('Captivate').focus();
					document.Captivate.focus();
				}
				catch (e) { }
			}

			$('div.overlayContainer a.tripsOverlayNavBack').click(function (e) {
				e.preventDefault();

				var contentID;

				if ($('#funcDataLink-' + mode).parents('div.funcData-linkItem').prev('div.funcData-linkItem').length > 0) {
					contentID = $('#funcDataLink-' + mode).parents('div.funcData-linkItem').prev('div.funcData-linkItem').find('a.funcData-linkItem-link').attr('rel');
					mode = mode - 1;
				} else {
					contentID = $('#funcData').children('div.funcData-linkItem:last').find('a.funcData-linkItem-link').attr('rel');
					mode = $('#funcData').children('div.funcData-linkItem').length - 1;
				}

				UpdateOverlayContent(mode, contentID);
			});

			$('div.overlayContainer a.tripsOverlayNavNext').click(function (e) {
				e.preventDefault();

				var contentID;

				if ($('#funcDataLink-' + mode).parents('div.funcData-linkItem').next('div.funcData-linkItem').length > 0) {
					contentID = $('#funcDataLink-' + mode).parents('div.funcData-linkItem').next('div.funcData-linkItem').find('a.funcData-linkItem-link').attr('rel');
					mode = mode + 1;
				} else {
					contentID = $('#funcData').children('div.funcData-linkItem:first').find('a.funcData-linkItem-link').attr('rel');
					mode = 0;
				}

				UpdateOverlayContent(mode, contentID);
			});

			$('#overlay').show();
			$('#overlay').fadeTo('def', 0.7);
			$('#overlay').css('height', $('body').height());
			$('.overlayContainer').fadeIn();
		});

		return false;
	}

	var UpdateOverlayContent = function (mode, id) {
		GetTripsOverlayData('content', id, function (_content, _contentURL, _retMode) {
			var overlayClass = GetOverlayClass(_retMode);
			$('div.overlayContainer div.overlayContentInner').css('visibilty', 'hidden').hide(0, function () {
				$('div.overlayContainer div.overlayContent').height($('div.overlayContainer div.overlayContent').height());
				$(this).removeClass('tripsImage tripsText tripsCaptivate').addClass(overlayClass);

				$(this).css('position', 'absolute');
				$(this).html(_content);
				$(this).oneTime(30, function () {
					$('div.overlayContainer div.overlayContent').animate({
						height: $('div.overlayContainer div.overlayContentInner').outerHeight()
					}, 'def', function () {
						$('div.overlayContainer div.overlayContentInner').css('position', 'static');
						$('div.overlayContainer div.overlayContentInner').show(0, function () { $('div.overlayContainer div.overlayContentInner').css({ 'visibility': 'visible', 'filter': 'none' }) }).css({ 'visibility': 'visible', 'filter': 'none' });
					});

					$('div.overlayContainer a.tripsOverlayNavBack').click(function (e) {
						e.preventDefault();

						var contentID;

						if ($('#funcDataLink-' + mode).parents('div.funcData-linkItem').prev('div.funcData-linkItem').length > 0) {
							contentID = $('#funcDataLink-' + mode).parents('div.funcData-linkItem').prev('div.funcData-linkItem').find('a.funcData-linkItem-link').attr('rel');
							mode = mode - 1;
						} else {
							contentID = $('#funcData').children('div.funcData-linkItem:last').find('a.funcData-linkItem-link').attr('rel');
							mode = $('#funcData').children('div.funcData-linkItem').length - 1;
						}

						UpdateOverlayContent(mode, contentID);
					});

					$('div.overlayContainer a.tripsOverlayNavNext').click(function (e) {
						e.preventDefault();

						var contentID;

						if ($('#funcDataLink-' + mode).parents('div.funcData-linkItem').next('div.funcData-linkItem').length > 0) {
							contentID = $('#funcDataLink-' + mode).parents('div.funcData-linkItem').next('div.funcData-linkItem').find('a.funcData-linkItem-link').attr('rel');
							mode = mode + 1;
						} else {
							contentID = $('#funcData').children('div.funcData-linkItem:first').find('a.funcData-linkItem-link').attr('rel');
							mode = 0;
						}

						UpdateOverlayContent(mode, contentID);
					});
				});
			}).css({ 'visibility': 'visible', 'filter': 'none' });
		});
	}

	var GetOverlayWidth = function (mode) {
		var overlayWidth;
		switch (mode) {
			case 'image':
				overlayWidth = 785
				break;
			case 'captivate':
				overlayWidth = 863
				break;
			default:
				overlayWidth = 785;
		}
		return overlayWidth;
	}

	var GetOverlayClass = function (mode) {
		var overlayClass;
		switch (mode) {
			case 'image':
				overlayClass = "tripsImage"
				break;
			case 'captivate':
				overlayClass = "tripsCaptivate"
				break;
			default:
				overlayClass = "tripsText";
		}
		return overlayClass;
	}

	var GenerateOverlay = function (title, content, width, containerClass) {
		var offset = 10;
		var output = '\
		<div class="topBorder">\
			<div class="overlayBorderTopLeft"></div>\
			<div class="overlayBorderTopRight"></div>\
		</div>\
		<div class="overlayOuter">\
			<div class="overlayInner">\
				<div class="overlayHeader">\
					<div class="overlayHeaderInner">\
						<h1>' + title + '</h1>\
						<div class="close">\
							<a href="#" class="closeOverlay"></a>\
						</div>\
						<div class="clear"></div>\
					</div>\
				</div>\
				<div style="width:' + width + 'px;" class="overlayContent formContainer"><div class="overlayContentInner ' + containerClass + '">' + content + '<div class="clear"></div></div></div>\
			</div>\
		</div>\
		<div class="clear"></div>\
		<div class="bottomBorder">\
			<div class="overlayBorderBottomLeft"></div>\
			<div class="overlayBorderBottomRight"></div>\
		</div>';
		var theDiv = document.createElement('div');
		$(theDiv).addClass('overlayContainer');
		$(theDiv).attr('id', 'IE6Overlay');
		$(theDiv).css('width', width + offset);
		$(theDiv).append(output);

		theDiv.Center = function () {
			var offsetLeft = ($(window).width() - (width + offset)) / 2;
			$(theDiv).css('left', offsetLeft);
		}

		theDiv.Center();

		$('body').append(theDiv);

		$(theDiv).find('a.closeOverlay').click(function (e) {
			e.preventDefault();
			$('#overlay').fadeTo('def', 0, function () {
				$('#overlay').hide();
			});
			$(theDiv).fadeOut('def', function () {
				$(this).remove();
			});
		});

		return theDiv;
	}

	this.showBottomOptions = function () {
		// Show Bookmark and Print links
		$('#liBookmark').removeClass('hidden');
		$('#liPrintPage').removeClass('hidden');
	}

	this.validateEmail = function (s) {
		var str = s;

		var atPos = str.indexOf("@")
		var stopPos = str.lastIndexOf(".")

		if (atPos == -1 || stopPos == -1 || (stopPos < atPos) || (stopPos - atPos == 1)) {
			return false;
		}
		else {
			return true;
		}
	}

	this.clearForm = function () {
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtTitle').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtFirstName').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtFirstName').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtSurname').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtSurname').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtJobTitle').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtJobTitle').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEmail').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEmail').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCountry').val('-1');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCountry').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPhone').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPhone').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtOrgName').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtOrgName').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEnquiry').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEnquiry').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtHear').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtHear').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtCaptchaInput').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtCaptchaInput').removeClass('error');

		$('.checkError').addClass('checkBox');
		$('.checkBox').removeClass('checkError')
		$('.checkBox').removeClass('checked');
		$(".checkError").removeClass('checked');
		$(".check").attr('checked', '');

		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').addClass('hidden');
		return false;
	}

	this.getValidationMsg = function () {
		var message = "";

		// First Name
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtFirstName'))
			message += "<li>" + SiteLabel.TXT1016 + "</li>";

		// Surname
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtSurname'))
			message += "<li>" + SiteLabel.TXT1017 + "</li>";

		// Job title
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtJobTitle'))
			message += "<li>" + SiteLabel.TXT1018 + "</li>";

		// Email
		// Check there is one
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEmail')) {
			message += "<li>" + SiteLabel.TXT1019 + "</li>";
		}
		else {
			// Check it's valid
			if (!CrownAgents.validateEmail($('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEmail').val())) {
				$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtEmail').addClass('error');
				message += "<li>" + SiteLabel.TXT1020 + "</li>";
			}
		}

		// Country
		if (!CrownAgents.validateDropDown('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCountry', '-1'))
			message += "<li>" + SiteLabel.TXT1021 + "</li>";

		// Phone
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPhone'))
			message += "<li>" + SiteLabel.TXT1022 + "</li>";

		// Organisation
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtOrgName'))
			message += "<li>" + SiteLabel.TXT1023 + "</li>";

		// Captcha code
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtCaptchaInput'))
			message += "<li>" + SiteLabel.TXT1042 + "</li>";

		// Privacy Statement
		if (!$('.chkMandatory').hasClass('checked')) {
			$('.chkMandatory').addClass('checkError');
			message += "<li>" + SiteLabel.TXT1044 + "</li>";
		}
		else {
			$('.chkMandatory').removeClass('checkError');
		}

		return message;
	}

	// Check the mandatory fields have been entered and if not, show error styling.
	this.validateContactForm = function () {
		var message = CrownAgents.getValidationMsg();

		if (message == "") {
			// No errors
			return true;
		}
		else {
			// Display panel at top of page with list of errors
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').html("<p>" + SiteLabel.TXT1014 + "</p>\n<ul>" + message + "</ul>");
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').removeClass('hidden');
			return false;
		}
	}

	this.validateSubscribeForm = function () {
		var message = CrownAgents.getValidationMsg();

		// Extra fields for this form
		// Address
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1'))
			message += "<li>" + SiteLabel.TXT1062 + "</li>";

		// Postcode
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode'))
			message += "<li>" + SiteLabel.TXT1063 + "</li>";

		// Organisation Type
		if (!CrownAgents.validateDropDown('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlOrgType', '-1'))
			message += "<li>" + SiteLabel.TXT1064 + "</li>";

		if (message == "") {
			// No errors
			$('.submitButton').css('visibility', 'hidden');
			return true;
		}
		else {
			// Display panel at top of page with list of errors
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').html("<p>" + SiteLabel.TXT1014 + "</p>\n<ul>" + message + "</ul>");
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').removeClass('hidden');
			return false;
		}
	}

	this.validateSupplierForm = function () {
		var message = "";

		// Grant
		if (!CrownAgents.validateDropDown('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlGrantReg', '-1'))
			message += "<li>" + SiteLabel.TXT1121 + "</li>";

		// Supplier Type
		if (!CrownAgents.validateDropDown('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlSupplierType', '-1'))
			message += "<li>" + SiteLabel.TXT1120 + "</li>";

		message += CrownAgents.getValidationMsg();

		// Extra fields for this form
		// Address
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1'))
			message += "<li>" + SiteLabel.TXT1062 + "</li>";

		// Postcode
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode'))
			message += "<li>" + SiteLabel.TXT1063 + "</li>";



		if (message == "") {
			// No errors
			return true;
		}
		else {
			// Display panel at top of page with list of errors
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').html("<p>" + SiteLabel.TXT1014 + "</p>\n<ul>" + message + "</ul>");
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').removeClass('hidden');
			return false;
		}
	}

	this.validateBookingForm = function () {
		var message = CrownAgents.getValidationMsg();

		// Extra fields for this form
		// Course Name
		if (!CrownAgents.validateDropDown('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCourse', '-1'))
			message += "<li>" + SiteLabel.TXT1076 + "</li>";

		// Address
		if (!CrownAgents.validateTextBox('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1'))
			message += "<li>" + SiteLabel.TXT1062 + "</li>";

		// Terms and Conditions
		if (!$('.chkMandatoryTerms').hasClass('checked')) {
			$('.chkMandatoryTerms').addClass('checkError');
			$('.chkMandatoryTerms').removeClass('checkBox');
			message += "<li>" + SiteLabel.TXT1077 + "</li>";
		}
		else {
			$('.chkMandatoryTerms').addClass('checkBox');
			$('.chkMandatoryTerms').removeClass('checkError')
		}

		if (message == "") {
			// No errors
			return true;
		}
		else {
			// Display panel at top of page with list of errors
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').html("<p>" + SiteLabel.TXT1014 + "</p>\n<ul>" + message + "</ul>");
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlErrors').removeClass('hidden');
			return false;
		}
	}

	this.clearSubscribeForm = function () {
		CrownAgents.clearForm();

		// Subscribe form specific fields

		// Address
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress2').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress3').val('');

		// Postcode
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode').removeClass('error');

		// Contact numbers
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtMobile').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtFax').val('');

		// Org Type
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlOrgType').val('-1');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlOrgType').removeClass('error');

		return false;
	}

	this.clearSupplierForm = function () {
		CrownAgents.clearForm();

		// Subscribe form specific fields

		// Address
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress2').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress3').val('');

		// Postcode
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPostcode').removeClass('error');

		// Contact numbers
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtMobile').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtFax').val('');

		// Grant
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlGrantReg').val('-1');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlGrantReg').removeClass('error');

		// Supplier Type
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlSupplierType').val('-1');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlSupplierType').removeClass('error');

		return false;
	}

	this.clearBookingForm = function () {
		CrownAgents.clearForm();

		// Booking form specific fields
		// Course Details
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCourse').val('-1');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_ddlCourse').removeClass('error');
		$('#liVenue').html("<label id=\"lblVenue\" for=\"txtHear\">" + SiteLabel.TXT642 + "</label><div class=\"clear\"></div>");
		$('#liDate').html("<label id=\"lblDate\" for=\"txtHear\">" + SiteLabel.TXT143 + "</label><div class=\"clear\"></div>");

		// Address
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress1').removeClass('error');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress2').val('');
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtAddress3').val('');

		// Additional info
		$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_txtPromo').val('');

		return false;
	}

	this.validateTextBox = function (id) {
		if ($(id).val() == "") {
			$(id).addClass('error');
			$(id).focus();
			return false;
		}
		else {
			$(id).removeClass('error');
			return true;
		}
	}

	this.validateDropDown = function (id, value) {
		if ($(id).val() == value) {
			$(id).addClass('error');
			return false;
		}
		else {
			$(id).removeClass('error');
			return true;
		}
	}

	this.updateCourseDetails = function (courseID) {

		var siteID = $('#hfSiteID').val();

		PageMethods.UpdateCourseDetails(courseID, siteID, CrownAgents.onCallUpdateCourseDetailsComplete, CrownAgents.onCallError, '');
	}

	this.onCallUpdateCourseDetailsComplete = function (result, txtResult, methodName) {
		if (result != null) {
			// Venue
			if ($('#lblVenue').next('p').length > 0) {
				$('#lblVenue').next('p').html(result[0]);
			} else {
				$('#lblVenue').after('<p class="inline">' + result[0] + '</p>');
			}

			if ($('#lblDate').next('p').length > 0) {
				$('#lblDate').next('p').html(result[1]);
			} else {
				$('#lblDate').after('<p class="inline">' + result[1] + '</p>');
			}

			// RevAppID
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_hfCourseRevAppID').val(result[2]);

			// Flag to show if this is an 'In Country' course
			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_hfInCountryCourse').val(result[3]);
		}
	}

	this.prevEvent = function (siteID) {
		CrownAgents.abortTimelineRequest();

		var selectedDate = $('.dateSelected');
		var newSelectedDate;
		var contentID;
		var siteID = $('#hfSiteID').val();

		if ($(selectedDate).parent('li').prev('li').children('a').length > 0) {
			// Select the previous link
			newSelectedDate = $(selectedDate).parent('li').prev('li').children('a');
		}
		else {
			// We're on the first year, so we want to go to the last one
			newSelectedDate = $('.timelineDates ul li').last().children('a');
		}

		// Get the contentID of the selected item
		contentID = $(newSelectedDate).parent('li').attr('id').replace('liYr', '');

		// Get the content for the selected year
		timelineRequest = PageMethods._staticInstance.GetYearContent(contentID, siteID, CrownAgents.onCallGetYearContentComplete, CrownAgents.onCallError, newSelectedDate)

		return false;
	}

	this.nextEvent = function (siteID) {
		CrownAgents.abortTimelineRequest();

		var selectedDate = $('.dateSelected');
		var newSelectedDate;
		var contentID;
		var siteID = $('#hfSiteID').val();

		if ($(selectedDate).parent('li').next('li').children('a').length > 0) {
			// Select the previous link
			newSelectedDate = $(selectedDate).parent('li').next('li').children('a');
		}
		else {
			// We're on the first year, so we want to go to the last one
			newSelectedDate = $('.timelineDates ul li').first().children('a');
		}

		// Get the contentID of the selected item
		contentID = $(newSelectedDate).parent('li').attr('id').replace('liYr', '');

		// Get the content for the selected year
		timelineRequest = PageMethods._staticInstance.GetYearContent(contentID, siteID, CrownAgents.onCallGetYearContentComplete, CrownAgents.onCallError, newSelectedDate)

		return false;
	}

	this.onCallGetYearContentComplete = function (result, newSelectedDate, methodName) {

		var selectedDate = $('.dateSelected');
		var siteID = $('#hfSiteID').val();

		if (result != null) {
			// Swap out the image and the html
			if (result.ImageTag == "" || result.ImageTag == null) {
				$('.timelineContentImage').addClass('hidden');
				$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlTimelineContent').addClass('timelineContentDetailWide');
				$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlTimelineContent').removeClass('timelineContentDetail');
			}
			else {
				$('.timelineContentImage').removeClass('hidden');
				$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlTimelineContent').removeClass('timelineContentDetailWide');
				$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlTimelineContent').addClass('timelineContentDetail');
				$('.timelineContentImage').removeClass('hidden');
				$('.timelineContentImage').html(result.ImageTag + '\n<div class="timelineContentImageCorner"></div>');
			}

			$('#ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_pnlTimelineContent').html(result.ContentHtml);

			$(newSelectedDate).addClass('dateSelected');
			$(selectedDate).removeClass('dateSelected');
		}
	}



	this.onCallGetTimelinePanelContentComplete = function (result, newSelectedPeriod, methodName) {
		var selectedPeriod = $('.yearSelected');
		var siteID = $('#hfSiteID').val();

		if (result != null) {
			// Swap out the years, image and html
			$('.timelineDates ul').html(result.YearsHtml);

			if (result.ImageTag == "" || result.ImageTag == null) {
				$('.timelineContentImage').addClass('hidden');
				$('.timelineContentDetail').addClass('timelineContentDetailWide').removeClass('timelineContentDetail');
				$('.timelineContentDetailWide').html(result.ContentHtml);
			}
			else {
				$('.timelineContentImage').removeClass('hidden');
				$('.timelineContentImage').html(result.ImageTag + '\n<div class="timelineContentImageCorner"></div>');
				$('.timelineContentDetailWide').addClass('timelineContentDetail').removeClass('timelineContentDetailWide');
				$('.timelineContentDetail').html(result.ContentHtml);
			}

			$(newSelectedPeriod).addClass('yearSelected');
			$(selectedPeriod).removeClass('yearSelected');

			CrownAgents.setupTimeline();
		}
	}

	this.setupTimeline = function () {

		// timeline years
		$('.timelineDates ul li a').unbind('click');
		$('.timelineDates ul li a').click(function (event) {
			event.preventDefault();
			CrownAgents.abortTimelineRequest();

			var contentID = $(this).parent('li').attr('id').replace('liYr', '');
			var siteID = $('#hfSiteID').val();

			timelineRequest = PageMethods._staticInstance.GetYearContent(contentID, siteID, CrownAgents.onCallGetYearContentComplete, CrownAgents.onCallError, this)
		});

		// timeline periods
		$('.timelineYears ul li a').unbind('click');
		$('.timelineYears ul li a').click(function (event) {
			event.preventDefault();
			CrownAgents.abortTimelineRequest();

			var panelID = $(this).parent('li').attr('id').replace('liPnl', '');
			var siteID = $('#hfSiteID').val();
			var contentID = $('#hfContentID').val();

			timelineRequest = PageMethods._staticInstance.GetTimelinePanelContent(panelID, siteID, contentID, CrownAgents.onCallGetTimelinePanelContentComplete, CrownAgents.onCallError, this)
		});
	}

	this.abortTimelineRequest = function () {
		if (timelineRequest != null) {
			var executor = timelineRequest.get_executor();

			if (executor.get_started()) {
				aborted = true;
				executor.abort();
				timelineRequest = null;
			}
		}
	}

	this.setupCheckboxes = function () {
		$('input.check').each(function () {
			if ($(this).is(':checked')) {
				$(this).next('div.checkBox').addClass('checked');
			}
			$(this).hide();
			var checkbox = $(this);
			$(this).next('div.checkBox').css('display', 'inline-block');
			$(this).next('div.checkBox').click(function () {
				if ($(this).hasClass('checked')) {
					$(this).removeClass('checked');
					checkbox.attr('checked', '');
				} else {
					$(this).addClass('checked');
					checkbox.attr('checked', 'checked');
				}
			});
		});
	}

	this.OnCallError = function (error, userContext, methodName) {
		if (aborted == true) {
			aborted = false;
			return;
		}
		else {
			if (error !== null) {
				alert(error.get_message());
			}
		}
	}

	this.supplyChainOverlay = function (count) {
		$('#overlay').css({ 'height': $(document).height(), 'opacity': '0.7' }).fadeIn('normal', function () {
			$('.overlaySupply').css({ 'top': ($(window).scrollTop() + 30), 'left': ($(window).width() / 2) - ((parseInt($('.overlaySupply').css('width'))) / 2) }).show();

			var obj = arrSupply[count];

			// Get the html
			$('.supplyContentHolder').removeAttr('id');
			$('.supplyContentHolder').attr('id', obj["className"]);
			$('.supplyContent').removeClass().addClass(obj["className"]).addClass('xStandardContent supplyContent');
			$('.supplyContent h1').html(obj["title"]);
			$('.supplyContentInner').html(obj["description"]);

			// Do close button
			$('.overlayCloseSupply').click(function () {
				$(this).parents('.overlaySupply').hide()
				$('#overlay').fadeOut();
			});

			// Next button
			$('.nextButton').unbind('click').click(function (e) {
				e.preventDefault();
				if (count == arrSupply.length - 1)
					CrownAgents.supplyChainOverlay(0);
				else
					CrownAgents.supplyChainOverlay(parseInt(count) + 1);
			});

			// Previous button
			$('.prevButton').unbind('click').click(function (e) {
				e.preventDefault();
				if (count == 0)
					CrownAgents.supplyChainOverlay(arrSupply.length - 1);
				else
					CrownAgents.supplyChainOverlay(parseInt(count) - 1);
			});
		});
		return false;
	}
}

var fakeSelectBox = function() {
    $('.selectList').hide();
    $('html').click(function() {
        $('.selectList').hide();
    });
    $('.selectBox').hover(function(e) {
        e.stopPropagation();
        el = $(this);
        $(this).next('ul').show();
    }, function() {
        delay = setTimeout(function() {
            el.next('ul').hide();
        }, 200);
        el.next('ul').hover(function() {
            clearTimeout(delay);
            $(this).show();
        }, function() {
            $(this).hide();
        });

    });

    if ($.browser.msie && $.browser.version == 6) {
        $('div.headerHolder div.rightHeader div.languageOptions').show();
        $('.languageOptions.hidden').hide();
        $('.ie6Go').hide();
    }
};

