(function() {
    var doAddViewSwitcher = false,
        flashLoader = {
        globalMap: function(container, assetPathName) {
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "919", "592", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/Map.swf");
            so.addVariable("dataUrl", assetPathName + "/flash/xml/Map.xml");
            doAddViewSwitcher = true;
            return so;
        },
        partners: function(container, assetPathName) {
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "917", "490", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/Partners.swf");
            so.addVariable("dataUrl", assetPathName + "/flash/xml/Partners.xml");
            return so;
        },
        timeline: function(container, assetPathName) {
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "917", "615", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/Timeline.swf");
            so.addVariable("dataUrl", assetPathName + "/flash/xml/Timeline.xml");
            return so;
        },
        heroPromoCarousel: function(container, assetPathName) {
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "935", "285", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/Hero.swf");
            var DomUtils = com.cgo.utils.DomUtils;
            var xmlStr = DomUtils.innerHTML(document.getElementById("heroPromoCarouselContent"));
            so.addVariable("content", escape(xmlStr));
            return so;
        },
        productSliderContent: function(container, assetPathName) {
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "950", "360", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/CardSlider.swf");
            var DomUtils = com.cgo.utils.DomUtils;
            var xmlStr = DomUtils.innerHTML(document.getElementById("productSliderContent"));
            so.addVariable("content", escape(xmlStr));
            return so;
        },
        barclaycardCompare: function(container, assetPathName) {
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "922", "210", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/CardCompare.swf");
            so.addVariable("contentUrl", escape($("#barclayCardCompareXML").val()));
            so.addVariable("onFlashReady", "Barclaycard.productComparison.updateFlash");
            return so;
        },
        heroLinks: function(container, assetPathName){
            //1.using "HeroPersonalRotationAppLoader.swf" instead of usual "AppLoader.swf" to allow intro (if there is any) to replace the preloading bar.
            //2.the height of flash asset changed from 255px to 260px.
            //3."hasIntro" flashvar added to turn on/off default preloader
            //PersonalCR PCR-02.2 by Dan.Liu
            var so = new SWFObject(assetPathName + "/flash/swf/HeroPersonalRotationAppLoader.swf", "loader", "918", "260", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/HeroPersonalRotation.swf");
            so.addVariable("hasIntro", true);
            var DomUtils = com.cgo.utils.DomUtils;
            var xmlStr = DomUtils.innerHTML(document.getElementById("heroLinks"));
            so.addVariable("content", escape(xmlStr));
            return so;
        },
        hubHeroLinks: function(container, assetPathName){
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "950", "260", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/HeroPersonal.swf");
            var DomUtils = com.cgo.utils.DomUtils;
            var xmlStr = DomUtils.innerHTML(document.getElementById("hubHeroLinks"));
            so.addVariable("content", escape(xmlStr));
            return so;
        },
        protectInsureContent: function(container, assetPathName){
            var so = new SWFObject(assetPathName + "/flash/swf/AppLoader.swf", "loader", "950", "285", "9.0.0", "#ffffff");
            so.addParam("allowScriptAccess", "always");
            so.addVariable("appUrl", assetPathName + "/flash/swf/CardCarousel.swf");
            var DomUtils = com.cgo.utils.DomUtils;
            var xmlStr = DomUtils.innerHTML(document.getElementById("protectInsureContent"));
            so.addVariable("content", escape(xmlStr));
            return so;
        }
    };
    function addViewSwitcher(container) {
        //add in the links to switch view
        var viewSwitcher = "<ul class=\"switchView\">",
            top = (parseInt(container.css("top"))*-1) + 6;
        if (isNaN(top)) top = 6;
        if (/noflash/ig.test(document.location.search)) {
            viewSwitcher +=	"	<li class=\"linkLeft\"><a href=\"" + document.location.pathname + "\">Map</a></li>" +
                            "	<li>List</li>";
        } else {
            top += 15;
            viewSwitcher += "	<li>Map</li>" +
                            "<li class=\"linkRight\"><a href=\"" + document.location.pathname + "?noflash\">List</a></li>";
        }
        viewSwitcher += "</ul>";
        viewSwitcher = $(viewSwitcher);
        container.append(	viewSwitcher );
        viewSwitcher.css("top", top + "px");
    }
    function getAssetPathName(className) {
        var classes = className.split(" "),
            i = classes.length-1,
            assetPathName = "";
        for (i; i>=0; i--) {
            if (/assetPathName/.test(classes[i])) {
                assetPathName = "/" + classes[i].split("=")[1] || "";
                break;
            }
        }
        return assetPathName;
    }
    $().ready(function(){

        if (deconcept.SWFObjectUtil.getPlayerVersion().major > 8) {
            $("body").addClass("hasFlash");

            $('a.flashPopup').each(function(){
                var $item = $(this);
                var url = $item.attr('href');
                var name = "BarclaycardPopup";
                var params;
                if($item.hasClass('size968x600')){
                    params = 'width=968,height=600,scrollbars=1';
                }

                // the following inline JS codes are passed to Flash as part of XML string. Use XML entity instead of single quote or double quote
                if (params) {
                    // apply parameters to popup window
                    $item.attr("href", "javascript: Barclaycard.newWindow.openSizedWindow('" + url + "','" + name + "','" + params + "');");
                }
                else {
                    // no parameter is given, use default setting to popup window
                    $item.attr("href", "javascript: Barclaycard.newWindow.openWindow('" + url + "');");
                }
            });
        }
        else {
        	if(document.getElementById("productSliderContent") != null){
        		var product_slider_content = $("#productSliderContent");
        		product_slider_content.css('margin-top','22px');
        		product_slider_content.css('margin-left','0px');
        		product_slider_content.find(".overlay").css('display','block');
        	}
        	if(document.getElementById("protectInsureContent")!= null){
        		var protect_insure_content = $("#protectInsureContent");
        		protect_insure_content.css('margin-left','18px');
        		protect_insure_content.find(".overlay").css('display','block');
        	}
            return;
        }
        $("div.flashReplace").each(function() {
            var id = this.id,
                assetPathName = getAssetPathName(this.className);
            if (flashLoader[id]) {
                var so = flashLoader[id]($(this), assetPathName);
                if (!(/noflash/ig.test(document.location.search)) && so) {
                    so.addParam("allowScriptAccess", "always");
                    so.addParam("allowFullScreen", true);
                    so.addParam("menu", false);
                    so.addParam("wmode", "transparent");
                    so.write(id);
                }
                if (doAddViewSwitcher) addViewSwitcher( $(this) );
            }
        });

        // Load Youtube videos
        $(".videoPanel").each(function(i){
            var videoUrl = "http://www.youtube.com/v/" + this.id + "&hl&hl=en&fs=1&";
            var so = new SWFObject(videoUrl, "", "425", "344", "9.0.0", "#ffffff");
            so.addVariable("flashvars", this.id);
            so.addVariable("allowScriptAccess", "always");
            so.write(this.id);
        });


    } );
})();



