﻿
var HOMEPAGE_MAX_CASE_STUDIES = 9;
var arrHomepageCaseStudies = new Array();

function clsHomepageCaseStudy(image, smImage, title, caption, url) {
    this.Image = image;
    this.SmallImage = smImage;
    this.Title = title;
    this.Caption = caption;
    this.Url = url;

    this.NewsItems = new Array();
}

function clsHomepageCaseStudyNewsItem(image, title, caption, url) {
    this.Image = image;
    this.Title = title;
    this.Caption = caption;
    this.Url = url;

    this.RemoveHtml = function removeHTMLTags(strInputCode) {
        /* 
        This line is optional, it replaces escaped brackets with real ones, 
        i.e. < is replaced with < and > is replaced with >
        */
        strInputCode = strInputCode.replace(/&(lt|gt);/g, function (strMatch, p1) {
            return (p1 == "lt") ? "<" : ">";
        });
        var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
        return strTagStrippedText;
    }

}

var m_HomepageCaseStudyCurrentIndex = 0;
var m_HomepageCaseStudyAnimationSpeed = 12000;
function startHomepageCaseStudyAnimation() {
    jqry("#homepage-case-anim").everyTime(m_HomepageCaseStudyAnimationSpeed, "homepageCaseStudyAnim", function () {
        if (m_HomepageCaseStudyCurrentIndex >= arrHomepageCaseStudies.length - 1 || m_HomepageCaseStudyCurrentIndex >= HOMEPAGE_MAX_CASE_STUDIES - 1)
            m_HomepageCaseStudyCurrentIndex = -1;
        DisplayHomepageCaseStudy(++m_HomepageCaseStudyCurrentIndex);
    });
}

function stopHomepageCaseStudyAnimation() {
    jqry("#homepage-case-anim").stopTime("homepageCaseStudyAnim");
}

function DisplayHomepageCaseStudyCallback(index) {
    var objHomepageCaseStudy = arrHomepageCaseStudies[index];
    jqry("#casestudy-title").html(objHomepageCaseStudy.Title);

    var strCaption = objHomepageCaseStudy.Caption + " <a href='" + objHomepageCaseStudy.Url + "'>more</a>";

    jqry("#casestudy-caption").html(strCaption);

    if (objHomepageCaseStudy.SmallImage == null || objHomepageCaseStudy.SmallImage.length <= 0)
        jqry("#casestudy-smimage").hide();
    else {
        jqry("#casestudy-smimage").attr("src", objHomepageCaseStudy.SmallImage);
        jqry("#casestudy-smimage").show();
    }

    jqry("#casestudy-image").attr("src", objHomepageCaseStudy.Image);

    jqry("#casestudy-mainnewsitemimage").attr("src", objHomepageCaseStudy.NewsItems[0].Image);
    jqry("#casestudy-mainnewsitemtitle").html(objHomepageCaseStudy.NewsItems[0].Title);
    jqry("#casestudy-mainnewsitemcaption").html(objHomepageCaseStudy.NewsItems[0].Caption);

    var strNewsItemsHtml = "";
    for (var i = 1; i < objHomepageCaseStudy.NewsItems.length; i++) {
        var NewsItem = objHomepageCaseStudy.NewsItems[i];
        strNewsItemsHtml += "<div>" + NewsItem.Title + "</div><div style='color:#d69f58;'>" + NewsItem.RemoveHtml(NewsItem.Caption) + "</div><br/>";
    }
    jqry("#casestudy-newsitems").html(strNewsItemsHtml);

    if (!isInternetExplorer()) {
        jqry("#homepage-casestudy-detailed-anim").fadeIn("fast");
    }
    else {
        jqry("#homepage-casestudy-detailed-anim").show();
    }

    highlightHomepageCaseStudyLink(index);
}

function DisplayHomepageCaseStudyMouseClick(index) {
    DisplayHomepageCaseStudy(index);
    stopHomepageCaseStudyAnimation();
}

function DisplayHomepageCaseStudy(index) {
    if (!isInternetExplorer()) {
        jqry("#homepage-casestudy-detailed-anim").fadeOut('fast', function () { DisplayHomepageCaseStudyCallback(index) });
    }
    else {
        jqry("#homepage-casestudy-detailed-anim").hide();
        DisplayHomepageCaseStudyCallback(index);
    }
}

function buildHomepageCaseStudyLinks(caseStudyCount) {
    var strLinkText = "<a style='padding:0px;font-size:12px;padding-top:2px;padding-bottom:3px;cursor:hand;display:block;' href='javascript:DisplayHomepageCaseStudyMouseClick([NUMBER]);'>[NUMBERPLUSONE]</a>";
    var strOutput = "";
    for (var i = 0; i < caseStudyCount && i < HOMEPAGE_MAX_CASE_STUDIES; i++) {
        strOutput += strLinkText.replace("[NUMBERPLUSONE]", (i + 1)).replace("[NUMBER]", i);
    }
    jqry("#casestudy-links").html(strOutput);
}

function highlightHomepageCaseStudyLink(itemIndex) {
    var array = jqry("#casestudy-links > a");
    if (array.length > itemIndex) {
        var newTop = jqry(array[itemIndex]).position().top;
        jqry("#casestudy-homepagenumberpointer").animate(
        {
            top: newTop
        });
    }
    //jqry("#casestudy-homepagenumberpointer").css("top", jqry(array[itemIndex]).position().top);
}

function isInternetExplorer() {
    return navigator.appName == "Microsoft Internet Explorer";
}

function isiPhone() {
    return ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)));
}

function modifyDisplayForIOS() {
    if (isiPhone()) {
        jqry("#casestudy-caption").css("fontSize", 11);
        jqry("#casestudy-image").css("height", 150);
    }
}

function runHomepageJavascriptAnimation() {

    jqry("#homepage-case-anim-loading").show();

    jqry.ajax({
        type: "GET",
        url: "/?device=flash",
        dataType: "xml",
        success: function (xml) {

            jqry("#homepage-case-anim-loading").fadeOut();

            var iNode = 1;

            var nodes = jqry(xml).find('nav' + iNode);
            while (nodes.length > 0) {
                jqry(nodes).each(function () {
                    var image = jqry(this).attr('image');
                    var smimage = jqry(this).attr('smimage');
                    var title = jqry(this).attr('title');
                    var caption = jqry(this).attr('caption');
                    var url = jqry(this).attr('url');
                    var objHomepageCaseStudy = new clsHomepageCaseStudy(image, smimage, title, caption, url);
                    arrHomepageCaseStudies[arrHomepageCaseStudies.length] = objHomepageCaseStudy;

                    jqry(this).find("news").each(function () {
                        var newsimage = jqry(this).attr('image');
                        var newstitle = jqry(this).attr('title');
                        var newscaption = jqry(this).attr('caption');
                        var url = jqry(this).attr('url');

                        var objNewsItem = new clsHomepageCaseStudyNewsItem(newsimage, newstitle, newscaption, url);
                        objHomepageCaseStudy.NewsItems[objHomepageCaseStudy.NewsItems.length] = objNewsItem;
                    });

                });

                iNode++;
                nodes = jqry(xml).find('nav' + iNode);
            }

            buildHomepageCaseStudyLinks(iNode);
            jqry("#homepage-case-anim-loading").hide();
            DisplayHomepageCaseStudy(0);
            jqry("#homepage-case-anim").fadeIn();
            highlightHomepageCaseStudyLink(0);
            startHomepageCaseStudyAnimation();
        }
    });
}

function noFlash(e) {
    if (typeof(e) == "undefined" || typeof(e.success) == "undefined" || typeof(e.ref) == "undefined" || !e.success) {        
        //modify display if browser is iPhone or iPod
        modifyDisplayForIOS();

        // flash is too old or we can't detect the plugin, so run the javascript based version
        runHomepageJavascriptAnimation();

        jqry("#homepage-flash").hide();
        jqry("#homepage-flash").css("visibility", "hidden");
    }
}

/*
Runs a javascript version of the case study animation if flash is not available,
or Flash if available.
*/
function runHomepageAnimation(strFlashUrl) {

    // Major version of Flash required
    var requiredMajorVersion = 8;
    // Minor version of Flash required
    var requiredMinorVersion = 0;
    // Minor version of Flash required
    var requiredRevision = 0;

    // Version check based upon the values entered above in "Globals"
    //var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
    var hasRequestedVersion = swfobject.hasFlashPlayerVersion("9.0.45")

    //TESTING ONLY
    //hasRequestedVersion = false;

    // Check to see if the version meets the requirements for playback
    if (hasRequestedVersion) {
        // if we've detected an acceptable version
        // embed the Flash Content SWF when all tests are passed
        var flashvars = {
            dataUrl: "/?device=flash"
        };
        var params = {
            wmode: "transparent",
            allowfullscreen: "false",
            width: 578,
            height: 455
        };

        var attributes = {};
        swfobject.embedSWF(strFlashUrl, "homepage-flash", "578", "455", "9.0.45", "/_assets/flash/expressInstall.swf", flashvars, params, attributes, noFlash);
        //jqry("#homepage-flash").show();
    }
    else {

        noFlash();

    }
}
