var AnimiationActive = false;
var ServiceHoverLocked = false;

function accordion(containerRef, animationRate, setFirstOpen) {

    var container = containerRef;
    var animRate = animationRate;
    var firstOpen;

    if (setFirstOpen == null) { firstOpen = false } else { firstOpen = setFirstOpen; }

    var accordionArray = new Array();

    $(container).each(function(evt) {
        var accordionElem = new AccordionElem($(this), animRate);
        accordionArray.push(accordionElem);
    });

    if (firstOpen) {
        accordionArray[0].setOpen();
    }

    function AccordionElem(elem, animSpeed) {
        this.target = elem;
        this.openElem = openElem;
        this.closeElem = closeElem;
        this.setOpen = setOpen;
        this.hidden = elem.find(".acc-height-set");
        this.title = elem.find("h3");
        var thisTarget = this.target;
        var thisTitle = this.title;
        var hiddenContent = this.hidden;
        var hiddenContentHeight = hiddenContent.height();
        var speed = animSpeed;

        hiddenContent.css({ "display": "none", "height": "0px" });

        (this.target).find(".accordionLink").bind("click", function(evt) {
            evt.preventDefault();
            selectElem(thisTarget);
        });

        function openElem() {
            if (!thisTitle.hasClass("open")) {
                AnimiationActive = true;
                ServiceHoverLocked = true;
                thisTitle.addClass("open")
                hiddenContent.stop();
                hiddenContent.animate({ "height": String(hiddenContentHeight + "px") }, speed, function(evt) { AnimiationActive = false; });
            }
            else {
                closeElem();
            }
        }

        function closeElem() {
            if (thisTitle.hasClass("open")) { thisTitle.removeClass("open") };
            AnimiationActive = true;
            ServiceHoverLocked = true;
            hiddenContent.stop();
            hiddenContent.animate({ "height": "0px" }, speed, function(evt) { AnimiationActive = false; });
        }

        function setOpen() {
            thisTitle.addClass("open");
            hiddenContent.css({ "display": "block", "height": String(hiddenContentHeight + "px") });
        }
    }

    function selectElem(target) {
        var targetElem = target;

        for (var i = 0; i < accordionArray.length; i++) {
            if (target == accordionArray[i].target) {
                accordionArray[i].openElem();
            }
            else {
                accordionArray[i].closeElem();
            }
        }
    }
}

function ReWriteServiceLinks(ContainerID, ContentClassName, btnContainerID, strServiceGroup, strContext) {
    var PagContainer = document.getElementById(btnContainerID);
    var ContJQSID = '#' + btnContainerID;
    var SrOverContent = '#' + ContainerID.replace("service-terms", "actpcontent");
    var SrOverContentOverlays = '#' + ContainerID + " .service-term";
    try {
        var Links = PagContainer.getElementsByTagName('a');
        for (var i = 0; i < Links.length; i++) {
            if (Links[i].getAttribute('href') != null) {
                Links[i].onmouseover = function() {
                    ServiceChange(ContainerID, ContentClassName, btnContainerID, this.rel, this.name);
                    if (this.className == "" || this.className == null) {
                        pageTracker._trackEvent(strContext, strServiceGroup, this.innerHTML);
                        this.className = 'tracked';
                    }
                }
            }
        }
        $(ContJQSID).bind("mouseleave", function() {
            ServiceChange(ContainerID, ContentClassName, btnContainerID, '', this.name);
            DisableMouse = false;
        })
        $(ContJQSID).bind("mouseenter", function() {
            if (!AnimiationActive) { ServiceHoverLocked = false; };
        })
        var targetHeight = $(SrOverContent).height() + 20;
        if (targetHeight > 20) {
            var HeightSetArray = $(SrOverContentOverlays);
            for (var i = 0; i < HeightSetArray.length; i++) {
                HeightSetArray[i].style.height = targetHeight + "px";
                HeightSetArray[i].style.top = "-" + targetHeight + "px";
            }
        }
    }
    catch (err) { }
}

// Function to change tabs
function ServiceChange(ContainerID, ContentClassName, btnContainerID, newTarget, column) {
    var ContentArray = $('#' + ContainerID + " ." + ContentClassName);
    var ButtonContainID = document.getElementById(btnContainerID);
    ButtonContainID.className = 'servicecontian';
    for (i = 0; i < ContentArray.length; i++) {
        ContentArray[i].className = ContentClassName;
    }
    if (newTarget != '' && !ServiceHoverLocked) {
        var TargetContent = document.getElementById(newTarget);
        TargetContent.className = ContentClassName + ' active';
        if (column == 'left') {
            ButtonContainID.className = 'servicecontian left-on';
        } else {
            ButtonContainID.className = 'servicecontian right-on';
        }
    }
}

$(document).ready(function() {

    $("li.bookmark a").html("&nbsp;");

    $("#share-btn").click(function() {
        if ($("li.bookmark:first").is(":hidden")) {
            $("li.bookmark").show("slow");
            $("#share-btn").css({ "color": "#fff", "background": "#9dc9ba" });
        } else {
            $("li.bookmark").hide("fast");
            $("#share-btn").css({ "color": "#666", "background": "#eeeeee" });
        }

        return false;
    });
});

// Generic re-sizing function - © 2007 The Watchmaker Project 

function colarr() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string') element = document.getElementById(element);
        if (arguments.length == 1) return element;
        elements.push(element);
    }
    return elements;
}

var BoxHeights = {
    maxh: 0,
    boxes: Array(),
    num: 0,
    op_test: false,
    equalise: function() {
        this.num = arguments.length;
        for (var i = 0; i < this.num; i++) if (!colarr(arguments[i])) return;
        this.boxes = arguments;
        this.maxheight();
        for (var i = 0; i < this.num; i++) colarr(arguments[i]).style.height = this.maxh + "px";
    },
    maxheight: function() {
        var heights = new Array();
        for (var i = 0; i < this.num; i++) {
            if (navigator.userAgent.toLowerCase().indexOf('opera') == -1) {
                heights.push(colarr(this.boxes[i]).scrollHeight);
            } else {
                heights.push(colarr(this.boxes[i]).offsetHeight);
            }
        }
        heights.sort(this.sortNumeric);
        this.maxh = heights[this.num - 1];
    },
    sortNumeric: function(f, s) {
        return f - s;
    }
}

function gotoAndTrack(url, googleAnalytics)
{
	switch (googleAnalytics.type)
	{
	    case "Virtual Page View":
	        //alert("url = " + url+" : analytics type = " + googleAnalytics.type + " : value = " + googleAnalytics.value);
	        pageTracker._trackPageview(url);
	        window.location = url;
	        break;
		case	"Event" :
		    //alert("url = " + url+" : analytics type = " + googleAnalytics.type + " : category = " + googleAnalytics.category + " : action = " + googleAnalytics.action + " : label = " + googleAnalytics.label);
		    pageTracker._trackEvent('Case Study', 'Exit links', url);
		    window.location = url;
			break;
	}
}

var bolDocsIncludePath = true;
var bolMailtoIncludePath = true;
var bolExternalIncludePath = true;
var rgxDocsRegex = /^.+\.((doc)|(docx)|(pdf))$/;
var rgxMailtoRegex = /^mailto\:/;
var rgxExternalRegex = /^((http\:\/\/|www\.)(?!\/)(?!\?)(?!#)(?!www\.amaze)(?!http:\/\/www\.amaze)(?!www-stage)(?!http:\/\/www-stage))/;

$(document).ready(function() {
    var pn = document.location.pathname.replace("default.aspx", "");
    var CurrentFolder = (pn != "/") ? pn : "/homepage/";
    CurrentFolder = (CurrentFolder.search(/\.(aspx)$/) > 0) ? CurrentFolder + "/" : CurrentFolder;
    $("a").click(function() {
        // documents
        var DocMatches = $(this).attr("href").match(rgxDocsRegex);
        if (DocMatches != null) // update after testing to include check that 'pageTracker' is true
        {
            var DocName = $(this).attr("href").substr($(this).attr("href").lastIndexOf("/"), $(this).attr("href").length);
            var DocVPvalue = (bolDocsIncludePath) ? CurrentFolder + "download" + DocName : "download" + DocName;
            pageTracker._trackPageview(DocVPvalue);
        }
        // Email links       
        var EmailMatches = $(this).attr("href").match(rgxMailtoRegex);
        if (EmailMatches != null) // update after testing to include check that 'pageTracker' is true
        {
            var EmailAddress = "/" + $(this).attr("href").substr($(this).attr("href").lastIndexOf("mailto:"), $(this).attr("href").length).replace("mailto:", ""); ;
            var EmailVPvalue = (bolMailtoIncludePath) ? CurrentFolder + "Email" + EmailAddress : "Email" + EmailAddress
            pageTracker._trackPageview(EmailVPvalue);
        }
        // External links
        var ExternalMatches = $(this).attr("href").match(rgxExternalRegex);
        if (ExternalMatches != null) // update after testing to include check that 'pageTracker' is true
        {
            var ExtLinkAddress = "/" + $(this).attr("href").replace("http:\/\/", "");
            var ExtLinkVPvalue = (bolMailtoIncludePath) ? CurrentFolder + "OutboundLink" + ExtLinkAddress : "OutboundLink" + ExtLinkAddress
            pageTracker._trackPageview(ExtLinkVPvalue);
        }
    });
});

function moveUp(constTop, curCount, rptCount, delayCount, bolCircular, strTweetsSel, strTweetListSel, upnlID, loopCount) {
    var loopsBeforeRefresh = 4;
    var tweets = $(strTweetsSel);
    var tweetlist = $(strTweetListSel);
    var count = tweets.length;
    if (bolCircular && curCount == (count - rptCount)) {
        loopCount++;
        tweetlist.removeAttr('style');
        if (loopCount == loopsBeforeRefresh) {
            __doPostBack(upnlID, "");
        }
        else 
        {
            moveUp(0, 0, rptCount, delayCount, bolCircular, strTweetsSel, strTweetListSel, upnlID, loopCount);
        }
    }
    else {
        if ((curCount + 1) != count) {
            var offsetItemSel = "#" + tweets[curCount].id;
            var itemHeight = $(offsetItemSel).height();
            constTop = (constTop - itemHeight) - 11;
            curCount++;
            tweetlist.animate({ "left": 0 }, delayCount);
            tweetlist.animate({ "top": String(constTop + "px") }, 700, function(evt) { moveUp(constTop, curCount, rptCount, delayCount, bolCircular, strTweetsSel, strTweetListSel, upnlID, loopCount); });
        }
        else if (!bolCircular) {
            tweetlist.animate({ "left": 0 }, delayCount);
            tweetlist.animate({ "top": 0 }, 600, function(evt) { moveUp(0, 0, rptCount, delayCount, bolCircular, strTweetsSel, strTweetListSel, upnlID, loopCount); });
        }
    }
}