//instantiate CSP_GLOBAL if undefined
if (typeof (CSP_GLOBAL) == "undefined") {
    CSP_GLOBAL = {};

    (function($$) {
        (function() {
            var url = window.location.href;
            var key = "csp_page:"
            var keyIndex = url.indexOf(key);
            var hashIndex = url.indexOf("#");

            if (hashIndex != -1) {
                $$.parentUrl = url.substring(0, hashIndex);
            } else {
                $$.parentUrl = url;
            }
            if (keyIndex != -1) {
                if (keyIndex > hashIndex)
                    $$.initialFramePage = url.substring(keyIndex + key.length);
                else
                    $$.initialFramePage = url.substring(keyIndex + key.length, hashIndex);
            } else {
                $$.initialFramePage = "";
            }
        })();

        $$.scriptMap = {};
        $$.validateSku = {};

        //element tracking
        $$.elementCount = 0;
        $$.getNextElementNum = function() {
            $$.elementCount++;
            return $$.elementCount;
        };
        $$.inlineElementCount = 0;
        $$.getNextInlineElementNum = function() {
            $$.inlineElementCount++;
            return $$.inlineElementCount;
        };

        $$.loadScript = function(src) {
            try {
                var script = document.createElement("script");
                script.type = "text/javascript";
                script.src = src;
                document.getElementsByTagName('head')[0].appendChild(script);
            } catch (ex) {
                //document.write("<script type='text/javascript' src='"+src+"'></script>");
            }
        };

        $$.loadCss = function(href) {
            var index = href.lastIndexOf("/");
            var filename = (index != -1 ? href.substring(index + 1, href.length) : href);
            if (typeof ($$.scriptMap[filename]) == "undefined") {
                try {
                    var link = document.createElement("link");
                    link.type = "text/css";
                    link.rel = "stylesheet";
                    link.href = href;
                    document.getElementsByTagName('head')[0].appendChild(link);
                    $$.scriptMap[filename] = {};
                } catch (ex) {
                    //document.write("<script type='text/javascript' src='"+src+"'></script>");
                }
            }
        };

        $$.loadAndExecute = function(src, func) {
            $$.log("+++loadAndExecute: ");
            var index1 = src.indexOf("?");
            var index;
            if (index1 == -1)
                index = src.lastIndexOf("/");
            else
                index = src.substring(0, index1).lastIndexOf("/");
            var scriptname = (index != -1 ? src.substring(index + 1, src.length) : src);
            if (typeof ($$.scriptMap[scriptname]) == "undefined") {
                $$.scriptMap[scriptname] = {};
                $$.scriptMap[scriptname].ready = false;
                $$.scriptMap[scriptname].queue = new Array();
                $$.scriptMap[scriptname].queue.push(func);
                $$.loadScript(src);
            } else if ($$.scriptMap[scriptname].ready) {
                var retObj = $$.scriptMap[scriptname].retObj;
                func(retObj);
            } else {
                $$.scriptMap[scriptname].queue.push(func);
            }
            $$.log("---loadAndExecute: " + scriptname);
        };

        //to be called at end of loaded script
        $$.processQueue = function(scriptname) {
            $$.log("+++ processQueue: " + scriptname);
            var queue = $$.scriptMap[scriptname].queue;
            var retObj = $$.scriptMap[scriptname].retObj;
            for (var i = 0; i < queue.length; i++) {
                (function(func, retObj) {
                    try {
                        func(retObj);
                    } catch (error) {
                        $$.log(error);
                    }
                })(queue[i], retObj);
            }
            $$.log("--- processQueue");
        };

        $$.tryEval = function(str1) {
            try {
                return eval("(" + str1 + ")");
            } catch (error) {
                return null;
            }
        };

        $$.log = function(obj) {
            try {
                if (typeof (console) != "undefined")
                    console.log(obj);
                else {
                    var logdiv = document.getElementById("logdiv");
                    if (typeof (obj) == "string" && logdiv) {
                        var ndiv = document.createElement("div");
                        ndiv.innerHTML = obj;
                        logdiv.appendChild(ndiv);
                        logdiv.scrollTop = logdiv.scrollHeight;
                    }
                }
            } catch (ex) { };
        };

    })(CSP_GLOBAL);
};

//start
(function($$) {
    $$.log("start csp");

    var protocol = "http";
    var domain = "634082322245456770.cc.syndicate.cnetcontent.com";
    var locationId = "";
    var requestedPageId = "";
    var spanId = Math.floor(Math.random() * 100000000);

    //place anchor incase of inline element
    if (!locationId)
        document.write("<span id='SPAN_" + spanId + "' style='border:none;border-width:0;display:none'></span>");

    //define consumer properties
    var consumer = {
        "baseDomain": "634082322245456770.cc.syndicate.cnetcontent.com",
        "cid": "294",
        "cn": "MediaBlend",
        "IntegratedType": "explnointconv",
        "country": "United States",
        "lngDesc": "US-English"
    };

    //replacement text
    //callbackObj is from domain utility
    var callbackObj = {l:'1',i:'',p:'lenovo',q:'',getUrl:function(){return 'c634082322245456770'+(this.p?'-p'+this.p:'')+(this.l?'-l'+this.l:'')+(this.i?'-i'+this.i:'')+'.cc.syndicate.cnetcontent.com';}};

    $$.loadAndExecute(protocol + "://" + domain + "/js/jquery.min.js", function($) {
        var actions = {
            validate: function(options, extra) {
                var el = $(this);
                var appendpoint = el;
                var instanceId = $$.getNextInlineElementNum();
                var _callbackObj = $.extend({}, callbackObj);
                _callbackObj.q = "?csp_request_type=validate&legacy=true&spanId=" + el.attr("id") + "&t=" + options.ElementType;
                //if (options.audience) _callbackObj.q += "&audience=" + options.audience;
                if (options.banner) _callbackObj.q += "&banner=" + options.banner;
                if (options.category) {
                    if (typeof (options["project"]) != "undefined" && options.project == "microsoft") {
                        if (",84,90,91".indexOf("," + options.category) >= 0) options.category = 102;
                        else if (",87,94,95".indexOf("," + options.category) >= 0) options.category = 103;
                    }
                    _callbackObj.q += "&category=" + options.category;
                }
                _callbackObj.i = instanceId;
                _callbackObj.q += "&i=" + instanceId;
                var validateUrl = protocol + "://" + _callbackObj.getUrl() + "/CSP" + _callbackObj.q;
                //el.append("<p>" + validateUrl + "</p>");
                $$.loadAndExecute(validateUrl, function(retObj) {
                    var options = $.extend({ "elementId": "_opt" + instanceId }, retObj);
                    if (retObj.show && retObj.show == "true")
                        render.call(el[0], options);
                });
            }
        };
        var append_methods = {
            iframe: function(options) {
                var e = $(this);
                if (!e.attr("csp_state")) {
                    var path = protocol + "://" + options.url;
                    //initialFramePage: this is to setup a variable for deep linking
                    if ($$.initialFramePage) {
                        path = path.split("?")[0] + "?" + $$.initialFramePage;
                        $$.initialFramePage = "";
                    }
                    var extra = $$.tryEval(options.extra);
                    var height = extra.height;
                    var width = extra.width;
                    e.append("<iframe id='" + options.elementId + "' src='" + path + "' height='" + height + "' width='" + width + "' scrolling='auto' frameborder='0' hspace='0' vspace='0' marginheight='0' marginwidth='0' border='0'  ></iframe>");
                    e.attr("csp_state", options.elementId);
                }
            },
            //dynamic iframe --> iframed
            iframed: function(options) {
                var e = $(this);
                if (!e.attr("csp_state")) {
                    var path = protocol + "://" + options.url;
                    if ($$.initialFramePage) {
                        path = path.split("?")[0] + "?" + $$.initialFramePage;
                        $$.initialFramePage = "";
                    }
                    var extra = $$.tryEval(options.extra);
                    var height = extra.height;
                    var width = extra.width;
                    e.append("<iframe id='" + options.elementId + "' src='" + path + "' height='" + height + "' width='" + width + "' scrolling='no' frameborder='0' hspace='0' vspace='0' marginheight='0' marginwidth='0' border='0'  ></iframe>");
                    $$.loadAndExecute(protocol + "://" + domain + "/js/iframed.js", function() {
                        $().iframed("startHost");
                        $("#" + options.elementId).iframed();
                    });
                    e.attr("csp_state", options.elementId);
                }
            },
            link: function(options) {
                var e = $(this);
                if (!e.attr("csp_state")) {
                    e.append("<a id='" + options.elementId + "' href='javascript:;'>" + options.text + "</a>");
                    e.attr("csp_state", options.elementId);
                }
            },
            image: function(options) {
                var e = $(this);
                if (!e.attr("csp_state")) {
                    e.append("<img id='" + options.elementId + "' src='" + options.src + "' alt='" + options.text + "'/>");
                    e.attr("csp_state", options.elementId);
                }
            },
            search_text: function(options) {
                $$.loadAndExecute(protocol + "://" + domain + "/js/findAndReplace.js", function() {
                    $$.findAndReplace("(" + options.search + ")", "<span class='" + options.elementId + "'>$1</span>");
                    if (options.tooltip) {
                        $("." + options.elementId).each(function(i) {
                            action_methods.tooltip.call(this, options);
                        });
                    }
                });
            },
            inline: function(options) {
                $(this).append(options.text);
            },
            campaign: function(options) {
                var _this = $(this);
                if (!_this.attr("csp_state")) {
                    $$.loadAndExecute(protocol + "://" + options.url, function(retObj) {
                        if (typeof (CspCampaign) != "undefined") {
                            if (!retObj.fb) {
                                var c = CspCampaigns.Get(retObj.id);
                                var num = Math.floor(Math.random() * c.length);
                                _this.append("<img id='" + options.elementId + "' src='" + c[num]._banner + "' />");
                                //options.url = domain + "/ftp/campaign/lenovo/" + c[num]._url + "/" + retObj.l;
                                options.url = options.domain + "/ftp/campaign/lenovo/" + c[num]._url + "/" + retObj.l;
								try{
								if (c[num]._id=="Micr_AtlasSol_Dis_Part_Bus")
									options.extra = "{width:'970',height:'600'}";
								}catch(e){}
                                action_methods.lightbox.call(_this, options);
                                _this.attr("csp_state", options.elementId);
                                options.campaignReportingId = c[num]._id;
                                options.campaignBannerId = c[num]._banner;
                                options.sId = c[num]._sid;
                                options.sName = c[num]._sname;
                            }
                            else {
                                //_this.append("use fallback category");
                                var n = _this.attr("fbc");
                                if (n == undefined) n = 0;
                                if (n == 0) {
                                    if (options.category) options.category = retObj.fbId;
                                    actions.validate.call(_this, options, retObj);
                                    _this.attr("fbc", ++n);
                                }
                            }
                            createWebtrends.call(_this, options);
                        }
                    });
                }
            },
            inline_showcase: function(options) {
                var tag = $(this);
                //if (!tag.attr("id")) tag.attr("id", "_csp_inline_showcase" + options.elementId);
                if (!tag.hasClass("_csp_inline_showcase" + +options.elementId)) !tag.addClass("_csp_inline_showcase" + options.elementId)
                $$.loadAndExecute(protocol + "://" + options.url, function(content) {
                    if (content.injectLocation == "")
                        content.injectLocation = "_csp_inline_showcase" + options.elementId;
                    var l = $(content.injectLocation);
                    if (l.length == 0) l = $("#" + content.injectLocation);
                    if (l.length == 0) l = $("." + content.injectLocation);
                    if (content.inlineContent != "" && l.length > 0) {
                        l.html(content.inlineContent);
                        $$.handleRequest(l);
                        if (content.custom_parameters.Personalize_CSS_File)
                            $$.loadCss(content.custom_parameters.Personalize_CSS_File);
                        else
                            $$.loadCss(content.path + "/css/" + content.project + "/template.css");
                        $$.loadCss(content.path + "/js/ext/fancybox/jquery.fancybox-1.3.4.css");
                        $$.loadAndExecute(content.path + "/js/ext/fancybox/jquery.fancybox-1.3.4.js", function(f) {
                            var types, shows, values, id;
                            types = shows = values = "";
                            if (l.hasClass("_csp_inline_showcase" + options.elementId) && !l.attr("csp_state")) {
                                $("a.csp_image_gallery", l).each(function(index) {
                                    var tag = $(this);
                                    tag.append("<span class='zoom-icon'><img src='" + content.path + "/img/" + content.project + "/zoom.png' /></span>");
                                    tag.fancybox({ 'title': tag.attr("title") });
                                    //inlineReport.call(tag, options, "ImageGallery", tag.attr("href"));
                                    //types = types + options.SyndicationType.toLowerCase() + ";";
                                    //shows = shows + "ImageGallery;";
                                    //values = values + tag.attr("href") + ";";
                                });
                                $("a.csp_video", l).each(function() {
                                    var tag = $(this);
                                    tag.append("<span class='play-icon'><img src='" + content.path + "/img/" + content.project + "/video_overlay.png' /></span>");
                                    tag.fancybox($.extend(eval(tag.attr('cspVars')), { 'swf': { 'wmode': 'transparent', 'flashvars': "autostart=1&file=" + tag.attr("csp_video")} }));
                                    //inlineReport.call(tag, options, "Video", tag.attr("csp_video"));
                                    //types = types + options.SyndicationType.toLowerCase() + ";";
                                    //shows = shows + "Video;";
                                    //values = values + tag.attr("csp_video") + ";";
                                });
                                $(".csp_espec", l).each(function() {
                                    var tag = $(this);
                                    var target = $("#" + tag.attr("csp_espec"));
                                    if (target.length > 0) {
                                        try {
                                            var espec = eval("(" + tag.text() + ")");
                                            if (espec.Espec) {
                                                var html = "<table cellpadding='0' cellspacing='0'>";
                                                var className = "";
                                                for (var i = 0; i < espec.Espec.length; i++) {
                                                    html += "<tr><th colspan=2>" + espec.Espec[i].SN + "</th></tr>";
                                                    for (var j = 0; j < espec.Espec[i].R.length; j++) {
                                                        if (j % 2 == 0) className = "even";
                                                        else className = "odd";
                                                        html += "<tr class='" + className + "'><td>" + espec.Espec[i].R[j].HT + "</td><td>" + espec.Espec[i].R[j].BT + "</td></tr>";
                                                    }
                                                }
                                                html += "</table>";
                                                target.html(html);
                                            }
                                        } catch (e) {
                                        }
                                    }
                                }); // end of tech spec
                                //inlineReportOnLoad(options, types, shows, values);
                                l.removeClass(("_csp_inline_showcase" + options.elementId));
                                l.attr("csp_state", options.elementId);
                                //l.attr("id", l.attr("id") + "_ready");                                
                            } // check to prevent reload                            
                        }); // load lib
                    }
                });
            }
        };
        var inlineReportOnLoad = function(options, types, shows, values) {
            if (typeof ($$["wt" + options.project]) != "undefined") {
                var wt = $$["wt" + options.project];
                var savedData = new Object();
                savedData["DCSext"] = wt.DCSext;
                wt.DCSext.ConversionClick = null;
                wt.DCSext.ConversionType = types;
                wt.DCSext.ConversionShown = shows;
                wt.DCSext.ConversionContent = values;
                wt.dcsMultiTrack();
                wt.DCSext = savedData["DCSext"];
                savedData = null;
            }
        }
        var inlineReport = function(options, clickValue, contentValue) {
            var tag = this;
            if (typeof ($$["wt" + options.project]) != "undefined") {
                tag.bind("click", function() {
                    var wt = $$["wt" + options.project];
                    var savedData = new Object();
                    savedData["DCSext"] = wt.DCSext;
                    wt.DCSext.ConversionShown = null;
                    wt.DCSext.ConversionType = options.SyndicationType.toLowerCase();
                    wt.DCSext.ConversionClick = clickValue;
                    wt.DCSext.ConversionContent = contentValue;
                    wt.dcsMultiTrack();
                    //restore
                    wt.DCSext = savedData["DCSext"];
                    savedData = null;
                });
            }
        }


        var action_methods = {
            lightbox: function(options) {
                $$.log("+++lightbox: " + options.elementId);
                var path = protocol + "://" + options.url;
                var extra = $$.tryEval(options.extra);
                var parent = $(this);
                $$.loadCss(protocol + "://" + domain + "/css/csp_lightbox.css");
                $$.loadAndExecute(protocol + "://" + domain + "/js/csp_thickbox.js", function() {
                    parent.thickbox({
                        url: path,
                        width: extra.width,
                        height: extra.height
                    });

                    if ($$.initialFramePage) {
                        $.thickbox_launch({
                            url: path.split("?")[0] + "?" + $$.initialFramePage,
                            width: extra.width,
                            height: extra.height
                        });
                        $$.initialFramePage = "";
                    }
                });
            },
            tooltip: function(options) {
                var parent = $(this);
                $$.loadCss(protocol + "://" + domain + "/css/tipTip.css");
                $$.loadAndExecute(protocol + "://" + domain + "/js/jquery.tipTip.min.js", function() {
                    parent.css("color", "blue")
					.tipTip({
					    content: options.text,
					    defaultPosition: "top",
					    fadeIn: 0,
					    fadeOut: 0,
					    delay: 0,
					    maxWidth: "auto",
					    keepAlive: true
					});
                })
            },
            newwindow: function(options) {
                var extra = $$.tryEval(options.extra);
                //add 20px for scroll bar
                var width = parseInt(extra.width) + 20;
                var height = extra.height;
                var target = extra.target || "_blank";
                var path = protocol + "://" + options.url;

                $(this).click(function(event) {
                    window.open(path, target, "menubar=0,location=0,status=0,scrollbars=1,toolbar=0,width=" + width + ",height=" + height);
                }).css("cursor", "pointer");

                if ($$.initialFramePage) {
                    window.open(path.split("?")[0] + "?" + $$.initialFramePage, target, "menubar=0,location=0,status=0,scrollbars=1,toolbar=0,width=" + width + ",height=" + height);
                    $$.initialFramePage = "";
                }
            }
        };

        var createWebtrends = function(options) {
            var appendpoint = this;
            $$.loadAndExecute(protocol + "://" + domain + "/global/files/" + options.project + "/script/WebTrends.js?" + options.project, function() {
                try {
                    if (consumer.cn.match(/^test_/i)) return;
                }
                catch (e) { }
                var wttag = new WebTrends();
                wttag.dcsGetId();
                wttag.DCSext.ConversionType = options.SyndicationType.toLowerCase();
                var elementType = options.ElementType.toLowerCase();
                if (elementType == "image") elementType = "banner";
                var elementAction = options.ElementAction.toLowerCase();
                var elementDesc = (elementAction == "none" ? elementType : elementType + "/" + elementAction);
                wttag.DCSext.ConversionClick = (elementAction == "none" ? elementDesc : null);
                wttag.DCSext.ConversionShown = elementDesc;
                if (options.SyndicationType == "campaign" && typeof (options.banner) != "undefined" && options.banner) {
                    wttag.DCSext.ConversionContent = options.banner;
                    wttag.DCSext.ConversionShown = options.banner;
                }
                else if (options.SyndicationType == "inline_showcase") {
                    try {
                        var mfrsku = $(appendpoint).attr("mfrsku");
                        if (mfrsku != null)
                            wttag.DCSext.ConversionShown = wttag.DCSext.ConversionClick = mfrsku;
                    }
                    catch (e) { }
                } else
                    wttag.DCSext.ConversionContent = elementDesc;

                if (typeof (options.sId) != "undefined") {
                    wttag.DCSext.vendorName = options.sName;
                    wttag.DCSext.csp_vendorid = options.sId;
                }

                wttag.DCSext.csp_stype = "embededscript";
                wttag.DCSext.csp_companyId = consumer.cid;
                wttag.DCSext.csp_pageTitle = document.title;
                wttag.DCSext.csp_companyname = consumer.cn;
                //if (typeof (consumer.lngDesc) != "undefined") wttag.DCSext.csp_language_descr = consumer.lngDesc;
                if (typeof (consumer.lngDesc) != "undefined") wttag.DCSext.language = consumer.lngDesc;
                if (typeof (consumer.country) != "undefined") wttag.DCSext.csp_country = consumer.country;
                if (typeof (options.campaignReportingId) != "undefined")
                    wttag.DCSext.csp_sname = options.campaignReportingId;

                if (elementAction != "none" && consumer.IntegratedType) {
                    wttag.WT.si_n = consumer.IntegratedType;
                    wttag.WT.si_x = "1";
                }

                wttag.dcsCollect();
                $$["wt" + options.project] = wttag;
                //wttag.dcsMultiTrack();

                if (options.ElementAction != "none") {
                    $(appendpoint).bind("click", function(ev) {
                        try {
                            if (wttag.WT.si_n) {
                                wttag.WT.si_x = "2";
                            }
                            wttag.DCSext.ConversionShown = null;
                            wttag.DCSext.ConversionType = options.SyndicationType.toLowerCase();
                            if (options.SyndicationType == "campaign" && typeof (options.banner) != "undefined" && options.banner)
                                wttag.DCSext.ConversionClick = wttag.DCSext.ConversionContent = options.banner;
                            else
                                wttag.DCSext.ConversionClick = wttag.DCSext.ConversionContent = elementDesc;
                            wttag.dcsMultiTrack();
                        } catch (ex) {
                            $$.log(ex);
                        }
                    });
                }
            });
        };

        var render = function(options) {
            var appendpoint = this;
            if (typeof (options.ElementType) == "undefined") return;

            if (options.ElementType != "none")
                append_methods[options.ElementType].call(appendpoint, options);

            //set no element action when iframe is choosen
            if (options.ElementType == "iframe" || options.ElementType == "iframed")
                options.ElementAction = "none";

            if (options.ElementAction != "none")
                action_methods[options.ElementAction].call(appendpoint, options);

            if (options.ElementType != "campaign")
                createWebtrends.call(appendpoint, options);
            try { if (options.project == "digitalchannel") $("a.SEOLink").hide(); }
            catch (e) { }
        };

        var validate = function(url, elementId) {
            var appendpoint = this;
            $$.loadAndExecute(url, function(retObj) {
                $$.log("validated: " + url);
                var options = $.extend({ "elementId": "_opt" + elementId }, retObj);
                if (retObj.show && retObj.show == "true") {
                    render.call(appendpoint, options);
                }
            });
        };

        if (typeof ($$.handleRequest) == "undefined") {
            $$.handleRequest = function(el) {
                if (typeof (el) == "undefined") el = $(document);

                var components = ["showcase", "exploreproduct", "inline_notusereally", "csp_tooltip", "search_text_tooltip", "inline_showcase"];
                //fill out the mfrname and sku if there isnt any
                $.each(components, function(i, component) {
                    $("." + component, el).each(function(j) {
                        var mf = $(this).attr("mfrname");
                        var pn = $(this).attr("mfrsku");
                        var lng = $(this).attr("lng");
                        if (!pn || !mf) {
                            var scriptTags = document.getElementsByTagName("script");
                            for (var i = 0; i < scriptTags.length; i++) {
                                if (/\/Csp\//i.test(scriptTags[i].src) == true) {
                                    var t, m, s, l;
                                    $$.log("Found a script tag " + scriptTags[i].src);
                                    var q = scriptTags[i].src.substring(scriptTags[i].src.lastIndexOf("/")).split("&");
                                    for (var j = 0; j < q.length; j++) {
                                        var p = q[j].split("=");
                                        p[0] = p[0].substring(p[0].indexOf("?") + 1);
                                        if (p[0] == "mfrname" && p[1]) m = p[1];
                                        if (p[0] == "mfrsku" && p[1]) s = p[1];
                                        if (p[0] == "lng" && p[1]) l = p[1];
                                    }
                                    if (!mf) { mf = m; $(this).attr("mfrname", mf); }
                                    if (!pn) { pn = s; $(this).attr("mfrsku", pn); }
                                    if (!lng && l) { $(this).attr("lng", l); }
                                    break;
                                }
                            }
                        }
                    });
                });
                $.each(components, function(i, component) {
                    $("." + component, el).each(function(j) {
                        var appendpoint = this;
                        var mf = $(this).attr("mfrname");
                        var pn = $(this).attr("mfrsku");
                        var lng = $(this).attr("lng");
                        var elementId = $$.getNextElementNum();
                        var _callbackObj = $.extend({}, callbackObj);
                        if (lng) _callbackObj.l = lng;
                        _callbackObj.i = elementId;
                        _callbackObj.q = "?csp_request_type=validate&t=" + component;
                        _callbackObj.q += "&parentUrl=" + escape($$.parentUrl);
                        _callbackObj.q += "&i=" + elementId; //ensures a different scriptname
                        if (pn) _callbackObj.q += "&mfrsku=" + pn;
                        if (mf) _callbackObj.q += "&mfrname=" + mf;
                        if (mf && mf.toLowerCase() != _callbackObj.p.toLowerCase()) {
                            //resolve domain
                            $$.loadAndExecute(protocol + "://" + domain + "/CSP?csp_request_type=resolve&mfrname=" + mf, function(retObj) {
                                _callbackObj.p = retObj.mf;
                                var validateUrl = protocol + "://" + _callbackObj.getUrl() + "/CSP" + _callbackObj.q;
                                validate.call(appendpoint, validateUrl, elementId);
                            });
                        } else {
                            var validateUrl = protocol + "://" + _callbackObj.getUrl() + "/CSP" + _callbackObj.q;
                            validate.call(appendpoint, validateUrl, elementId);
                        }
                    });
                });
            }
        }



        $(document).ready(function() {
            var currentType = "";
            if (currentType == "") currentType = "showcase";
            $$.handleRequest.call();
            $$.log("*** Type: " + currentType);
            //no elements found - legacy embed
            //if ($$.elementCount == 0 || "inline_showcase".indexOf("") >= 0)
            //if ($(".showcase,.exploreproduct,.inline_showcase").length == 0)
            if (currentType == "showcase" && $(".showcase").length > 0) {
                //ignore
            }
            else {
                var options = { sku: "", t: "", mf: "Lenovo", lng: "1", locationId: "", cdsId: "", p: "", audience: "", banner: "", category: "" };
                var appendpoint = document.getElementById("SPAN_" + spanId);
                var instanceId = $$.getNextInlineElementNum();
                var _callbackObj = $.extend({}, callbackObj);
                _callbackObj.q = "?csp_request_type=validate&legacy=true&spanId=" + spanId
                if (options.sku) _callbackObj.q += "&mfrsku=" + options.sku;
                else if (options.cdsId) _callbackObj.q += "&cdsId=" + options.cdsId;
                if (options.mf) _callbackObj.q += "&mfrname=" + options.mf;
                if (options.t) _callbackObj.q += "&t=" + options.t;
                if (options.lng) _callbackObj.l = options.lng;
                if (options.locationId) _callbackObj.q += "&locationId=" + escape(options.locationId);
                if (options.p) _callbackObj.q += "&p=" + options.p;
                if (options.audience) _callbackObj.q += "&audience=" + options.audience;
                if (options.banner) _callbackObj.q += "&banner=" + options.banner;
                if (options.category) {
                    if (typeof (_callbackObj["p"]) != "undefined" && _callbackObj.p == "microsoft") {
                        if (",84,90,91".indexOf("," + options.category) >= 0) options.category = 102;
                        else if (",87,94,95".indexOf("," + options.category) >= 0) options.category = 103;
                    }
                    _callbackObj.q += "&category=" + options.category;
                }

                _callbackObj.i = instanceId;
                _callbackObj.q += "&i=" + instanceId;
                _callbackObj.q += "&parentUrl=" + escape($$.parentUrl);
                var validateUrl = protocol + "://" + _callbackObj.getUrl() + "/CSP" + _callbackObj.q;
                $$.loadAndExecute(validateUrl, function(retObj) {
                    var options = $.extend({ "elementId": "_opt" + instanceId }, retObj);
                    if (retObj.show && retObj.show == "true") {
                        if (!appendpoint) {
                            $$.log("Unable to locate append point. Use location id instead.");
                            if (options.locationId) {
                                appendpoint = $("#" + options.locationId) || $("." + options.locationId) || $(options.locationId);
                                appendpoint = appendpoint[0];
                            }
                        }
                        if (appendpoint) {
                            appendpoint.style.display = "inline";
                            render.call(appendpoint, options);
                        }
                    }
                });
            }
        }); //end of document ready
    }); //end of loadAndExecute jquery.min.js
})(CSP_GLOBAL);

