Error executing template "Designs/BioLegend/eCom/Product/productDetail.cshtml"
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Dynamicweb.Frontend.UrlProviders.Handler.GetUrlFromQueryString(String queryStringParameter, String parameterValue, String alternateKey)
   at Dynamicweb.Frontend.UrlProviders.Handler.HandleModuleUrl(String& url, String& querystring, String alternatekey)
   at Dynamicweb.Frontend.SearchEngineFriendlyURLs.ResolveQueryString(String fullQueryString, Int32 pageid, String alternatekey)
   at Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(String internalLink)
   at CompiledRazorTemplates.Dynamic.RazorEngine_6f600267480d484cb6764dcc4d68750f.Execute() in f:\Domains\Sites\www.biolegend.com\Files\Templates\Designs\BioLegend\eCom\Product\productDetail.cshtml:line 4754
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits RazorTemplateBase<RazorTemplateModel<Template>> 2 @using System 3 @using System.Collections.Generic 4 @using Dynamicweb.Rendering; 5 @using System.Collections.Specialized; 6 @using System.Text; 7 @using System.IO; 8 @using System.Web; 9 @using System.Text.RegularExpressions; 10 @using System.Data; 11 @using BioLegend.Ecommerce.LiveIntegration; 12 @using System.Globalization; 13 @using System.Linq 14 @using System 15 @functions { 16 17 public double ConvertPrice(double price, Dynamicweb.Ecommerce.International.Currency fromCurrency, Dynamicweb.Ecommerce.International.Currency toCurrency, bool roundPrice = false) 18 { 19 if (price.Equals(0.0d)) 20 { 21 return price; 22 } 23 if (fromCurrency is null || toCurrency is null || (fromCurrency.Code ?? "") == (toCurrency.Code ?? "")) 24 { 25 return price; 26 } 27 else 28 { 29 var convertedPrice =fromCurrency.Rate / toCurrency.Rate * price; 30 return roundPrice ? Math.Ceiling(convertedPrice) : convertedPrice; 31 } 32 } 33 34 string RoundPrice(double price, bool isPriceInterestPointValue = true, bool roundPrice = true, bool showDecimals = false) 35 { 36 var priceDouble = price; 37 if(isPriceInterestPointValue) { 38 priceDouble = price * 0.01; 39 } 40 var isCurrencyJp = Dynamicweb.Ecommerce.Common.Context.Currency.CultureInfo == "ja-JP"; 41 /*var roundPriceDouble = Math.Round(priceDouble, 0, MidpointRounding.AwayFromZero);*/ 42 var roundPriceDouble = Math.Ceiling(priceDouble); 43 var roundedPrice = isCurrencyJp ? price.ToString("#,##") : (roundPrice ? roundPriceDouble.ToString() : priceDouble.ToString()); 44 if(showDecimals){ 45 roundedPrice = isCurrencyJp ? price.ToString("#,##") : (roundPrice ? roundPriceDouble.ToString("0.00") : priceDouble.ToString("0.00")); 46 } 47 48 var priceWithSymbol = string.Empty; 49 var currencySymbol = Dynamicweb.Ecommerce.Common.Context.Currency.Symbol; 50 var positivePattern = Dynamicweb.Ecommerce.Common.Context.Currency.PositivePattern; 51 var symbolPlace = Dynamicweb.Ecommerce.Common.Context.Currency.SymbolPlace; 52 53 if (positivePattern == 3) 54 { 55 priceWithSymbol = String.Format("{0} {1}", currencySymbol, roundedPrice); 56 } 57 else if (positivePattern == 1) 58 { 59 priceWithSymbol = String.Format("{0} {1}", roundedPrice, currencySymbol); 60 } 61 else if (symbolPlace == 0 || positivePattern == 2) { 62 priceWithSymbol = String.Format("{0}{1}", currencySymbol, roundedPrice); 63 } 64 else 65 { 66 priceWithSymbol = String.Format("{0}{1}", roundedPrice, currencySymbol); 67 } 68 69 return priceWithSymbol; 70 } 71 72 string RoundPriceToCurrentCurrency(double price, bool roundPrice = false) 73 { 74 var defaultCurrency = Dynamicweb.Ecommerce.Common.Application.DefaultCurrency; 75 var currentCurrency = Dynamicweb.Ecommerce.Common.Context.Currency; 76 var convertedPrice = ConvertPrice(price, defaultCurrency, currentCurrency, roundPrice); 77 return FormatPrice(convertedPrice); 78 } 79 80 string FormatPrice(double price) 81 { 82 var formattedPrice = (new Dynamicweb.Ecommerce.International.CurrencyService()).FormatCurrency(Dynamicweb.Ecommerce.Common.Context.Currency, price, true); 83 return formattedPrice; 84 } 85 } 86 @using System.Collections.Specialized; 87 @using System.Linq 88 @functions { 89 90 public string LocalizeLinksHTML (string HtmlContent){ 91 int areaID = Pageview.Area.ID; 92 var area = Dynamicweb.Services.Areas.GetArea(areaID); 93 string areaCulture = area.Culture.ToLower(); 94 if(!string.IsNullOrEmpty(HtmlContent)){ 95 if(HtmlContent.IndexOf("dwcountry") > -1){ 96 return HtmlContent.Replace("dwcountry",areaCulture); 97 } else{ 98 return HtmlContent; 99 } 100 101 } else { 102 return HtmlContent; 103 } 104 105 } 106 107 public string LocalizeLinks (string HtmlContent){ 108 int areaID = Pageview.Area.ID; 109 var area = Dynamicweb.Services.Areas.GetArea(areaID); 110 string areaCulture = area.Culture.ToLower(); 111 if(!string.IsNullOrEmpty(HtmlContent)){ 112 if(HtmlContent.IndexOf("dwcountry") > -1){ 113 return HtmlContent.Replace("dwcountry",areaCulture); 114 } else if (HtmlContent.IndexOf("?ID=") > -1) { 115 //do something 116 string baseHref = String.Format("https://{0}",GetGlobalValue("Global:Request.Host")); 117 HtmlContent = HtmlContent.Contains("http") ? HtmlContent : baseHref + "/" + HtmlContent; 118 var uri = new Uri(HtmlContent,UriKind.RelativeOrAbsolute); 119 var parsedQuery = HttpUtility.ParseQueryString(uri.Query); 120 var pageID = parsedQuery.Get("ID"); 121 122 string pageVersionID = pageID; 123 string localizedLink = HtmlContent; 124 if (!string.IsNullOrEmpty(pageID)){ 125 var pageService = new Dynamicweb.Content.PageService(); 126 var linkPage = pageService.GetPagesByAreaID(areaID).FirstOrDefault(x => x.MasterPageId == int.Parse(pageID)); 127 pageVersionID = linkPage != null ? linkPage.ID.ToString() : pageID ; 128 129 localizedLink = ModifyQueryStringValue(HtmlContent,"ID",pageVersionID); 130 } 131 //return string.Join(",", parsedQuery.AllKeys); 132 //return string.Join(HtmlContent,"-",pageVersionID); 133 return localizedLink; 134 } else { 135 return HtmlContent; 136 } 137 }else { 138 return HtmlContent; 139 } 140 141 } 142 143 private string ModifyQueryStringValue(string p_query, string p_Name, string p_NewValue) 144 { 145 Uri uri = new Uri(p_query,UriKind.RelativeOrAbsolute); 146 //if(p_query.Contains("http")) 147 //{ 148 //uri = new Uri(p_query); 149 //} else { 150 //uri = new Uri(p_query, UriKind.Relative); 151 //} 152 //uri = new Uri(p_query); 153 154 155 156 var nameValues = HttpUtility.ParseQueryString(uri.Query); 157 nameValues.Set(p_Name, p_NewValue); 158 string url = uri.AbsolutePath + "?" + nameValues.ToString(); 159 return url; 160 } 161 } 162 @using System; 163 @using System.Collections.Generic; 164 @using System.Web.Script.Serialization; 165 @{ 166 @* Get secondary user ID *@ 167 bool bol_userLogged = Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn(); 168 int? userID = null; 169 if(bol_userLogged){ 170 userID = Pageview.User.ID; 171 if(Pageview.User.CurrentSecondaryUser != null && Pageview.User.CurrentSecondaryUser.ID != 0) { 172 userID = Pageview.User.CurrentSecondaryUser.ID; 173 } 174 } 175 string str_productLanguageId = GetString("Ecom:Product.LanguageID"); 176 string str_productID = GetString("Ecom:Product.ID"); 177 List<LoopItem> obj_loopVariantCombinations = GetLoop("VariantCombinations"); 178 Dictionary<string, Dictionary<string, Dictionary<string, string>>> dic_product = new Dictionary<string, Dictionary<string, Dictionary<string, string>>>(); 179 Dictionary<string, Dictionary<string, string>> dic_variants = new Dictionary<string, Dictionary<string, string>>(); 180 string str_productJSON = ""; 181 string str_productFavoritesUrl = string.Format("Default.aspx?ID={0}", GetPageFromAreaSetting("FavoritesProcess", Pageview)); 182 183 if(obj_loopVariantCombinations.Any()){ 184 foreach (LoopItem variant in obj_loopVariantCombinations){ 185 string str_variantHref = "/"+ variant.GetValue("Ecom:VariantCombination.Link.Clean") + "?PID=" + Dynamicweb.Frontend.PageView.Current().CurrentParagraph.ID.ToString(); 186 string str_articleNum = variant.GetString("Ecom:Product.Number"); 187 string str_price = variant.GetString("Ecom:Product.Price"); 188 string str_stock = variant.GetString("Ecom:Product.AvailableAmount"); 189 string str_smallImage = variant.GetString("Ecom:Product.ImageSmall.Clean"); 190 string str_id = variant.GetString("Ecom:VariantCombination.VariantID"); 191 string str_variantName = variant.GetString("Ecom:VariantCombination.VariantText"); 192 string str_variantShortDescription = variant.GetString("Ecom:VariantCombination.VariantText"); 193 Dictionary<string, string> dic_variant = new Dictionary<string, string>(); 194 195 dic_variant.Add("name", str_variantName); 196 dic_variant.Add("id", str_id); 197 dic_variant.Add("number", str_articleNum); 198 dic_variant.Add("price", str_price); 199 dic_variant.Add("stock", str_stock); 200 dic_variant.Add("smallImage", str_smallImage); 201 // dic_variant.Add("productIsFavorite", variant.GetString("Ecom:Product.IsProductInFavoriteList")); 202 203 try{ 204 var favoriteListProducts = Dynamicweb.Ecommerce.CustomerCenter.CustomerProductList.GetListByCustomerId(int.Parse(userID.ToString())); 205 if (favoriteListProducts.Any()) 206 { 207 var favoriteProducts = favoriteListProducts.FirstOrDefault().Products; 208 bool isFavorite = favoriteProducts.Where(x => x.ProductVariantId == str_id).Any() && favoriteProducts.Where(x => x.ProductId == str_productID).Any(); 209 dic_variant.Add("productIsFavorite", isFavorite.ToString()); 210 } 211 }catch{} 212 213 string str_productAddToList = string.Format("{0}&favoriteID={1}&languageID={2}&variantID={3}&favoriteAction=add", str_productFavoritesUrl, str_productID, str_productLanguageId, str_id); 214 string str_productRemoveFromList = string.Format("{0}&favoriteID={1}&languageID={2}&variantID={3}&favoriteAction=remove", str_productFavoritesUrl, str_productID, str_productLanguageId, str_id); 215 dic_variant.Add("addToList", str_productAddToList); 216 dic_variant.Add("removeFromList", str_productRemoveFromList); 217 218 219 dic_variants.Add(str_id, dic_variant); 220 221 } 222 dic_product.Add("product", dic_variants); 223 } 224 str_productJSON = new JavaScriptSerializer().Serialize(dic_product); 225 226 } 227 228 @functions{ 229 public static string GetPageFromAreaSetting(string key, dynamic pageview) 230 { 231 string pageID = pageview.Page.ID.ToString(); 232 var area = pageview.Area.Item; 233 234 if( area[key] != null && !String.IsNullOrEmpty(area[key].ToString())) 235 { 236 pageID = area[key].ToString(); 237 } 238 239 return pageID; 240 } 241 } 242 243 @using System 244 @using System.Collections.Generic 245 @using System.Linq 246 @using Dynamicweb.Caching 247 @functions{ 248 249 public static List<Dictionary<string, string>> GetCloneData() 250 { 251 var productCloneData = (List<Dictionary<string, string>>) Cache.Current.Get("AllProductsCloneDataCache"); 252 253 if (productCloneData == null) 254 { 255 productCloneData = new List<Dictionary<string, string>>(); 256 257 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 258 { 259 using (var command = connection.CreateCommand()) 260 { 261 command.CommandText = @"SELECT Clone, ProductId, ProductName, AppAbrv, ProductImageSmall, ProductImageMedium, ProductImageLarge, Image1Description,Image1Title,Image2Description,Image2Title,Image3Description,Image3Title,Image4Description,Image4Title,Image4Path,Image5Description,Image5Title,Image5Path,Image6Description,Image6Title,Image6Path 262 FROM EcomProducts 263 WHERE Clone != '' 264 AND (ProductStatus = 0 OR ProductStatus = 2 OR ProductStatus = 3 OR ProductStatus = 4) 265 AND ProductVariantId = '' 266 AND ProductActive = 'True' 267 AND ProductLanguageID = 'LANG1'"; 268 269 using (var reader = command.ExecuteReader()) 270 { 271 if (reader != null) 272 { 273 while (reader.Read()) 274 { 275 var dict = new Dictionary<string, string>(); 276 for( int i = 0 ; i < reader.FieldCount ; i++ ) { 277 dict.Add(reader.GetName(i), Dynamicweb.Core.Converter.ToString(reader.GetValue(i))); 278 } 279 280 productCloneData.Add(dict); 281 } 282 } 283 } 284 } 285 } 286 287 Cache.Current.Set("AllProductsCloneDataCache", productCloneData, CacheItemPolicy.DefaultStoragePolicy); 288 } 289 290 return productCloneData; 291 } 292 } 293 294 295 @{ 296 var isPdf = Convert.ToBoolean(Dynamicweb.Context.Current.Request.Params["pdf"]); 297 var productClone = Regex.Replace(GetString("Ecom:Product:Field.Clone.Value"), "<!.*?>", String.Empty , RegexOptions.Singleline).Trim(); 298 var str_productId = GetString("Ecom:Product.ID"); 299 var detailPageId = GetPageIdByNavigationTag("ProductDetail"); 300 var searchResultsPage = GetPageIdByNavigationTag("SearchResultsPage"); 301 var isDetailPage = (detailPageId == Pageview.Page.ID || searchResultsPage == Pageview.Page.ID); 302 303 List<Dictionary<string, string>> cloneData = GetCloneData(); 304 var otherFormats = cloneData != null ? cloneData.Where(x => x["Clone"].Equals(productClone,StringComparison.InvariantCultureIgnoreCase)).ToList() : new List<Dictionary<string, string>>(); 305 306 @helper RenderParentEcomNav(Dynamicweb.Ecommerce.Products.Group group,string searchPageID) { 307 308 List<string> notShowGroups = new List<string>(); 309 notShowGroups.Add("GROUP2"); //Cell Function/Viability Kits 310 notShowGroups.Add("GROUP10"); 311 notShowGroups.Add("GROUP18"); 312 notShowGroups.Add("GROUP19"); 313 notShowGroups.Add("GROUP20"); //Mouse Immunology Antibodies 314 notShowGroups.Add("GROUP21"); //ELISA MAX/LEGEND MAX 315 notShowGroups.Add("GROUP22"); //Buffers/Solutions/Chemicals 316 notShowGroups.Add("GROUP23"); //Secondary Reagents 317 notShowGroups.Add("GROUP24"); //Cytokine/Chemokine Antibodies 318 notShowGroups.Add("GROUP25"); //LEGENDplex 319 notShowGroups.Add("GROUP26"); //Cell Biology Antibodies 320 notShowGroups.Add("GROUP27"); //Rat Immunology Antibodies 321 notShowGroups.Add("GROUP28"); //Human Immunology Antibodies 322 notShowGroups.Add("GROUP29"); //Isotype Controls 323 notShowGroups.Add("GROUP30"); //Recombinant Proteins 324 notShowGroups.Add("GROUP31"); //LEGENDScreen 325 notShowGroups.Add("GROUP32"); //Neuroscience Products 326 notShowGroups.Add("GROUP33"); //Marmoset Immunology Antibodies 327 notShowGroups.Add("GROUP34"); //Virus Immunology Antibodies 328 notShowGroups.Add("GROUP35"); // 329 notShowGroups.Add("GROUP36"); //Epitope Tag Products 330 notShowGroups.Add("GROUP37"); //Flex-T 331 notShowGroups.Add("GROUP50"); //Cell Separation 332 notShowGroups.Add("GROUP51"); //Non-Antibody Chemical Probes 333 notShowGroups.Add("ImportedGROUP1"); 334 335 if (group.ParentGroupsDefaultLanguage != null && group.ParentGroupsDefaultLanguage.Any()) { 336 string parent_id = group.ParentGroupsDefaultLanguage[0].Id; 337 Dynamicweb.Ecommerce.Products.Group parent = Dynamicweb.Ecommerce.Products.Group.GetGroupById(parent_id); 338 339 if (parent != null && !notShowGroups.Contains(group.Id)) { 340 <text>@RenderParentEcomNav(parent,searchPageID)</text> 341 } 342 } 343 344 if(!notShowGroups.Contains(group.Id) && group.NavigationShowInSiteMap) 345 { 346 <li data-groupID="@group.Id"> 347 <a href="/Default.aspx?ID=@searchPageID&GroupID=@group.Id"> 348 @group.Name 349 </a> 350 </li> 351 } 352 } 353 354 @helper RenderBiologyArea(string biologyArea) 355 { 356 string baText = ""; 357 Dictionary<string, string> baDict = new Dictionary<string, string>(){ 358 {"adaptive_immunity","Adaptive Immunity"}, 359 {"angiogenesis","Angiogenesis"}, 360 {"apoptosis_tumor_suppressors_cell_death","Apoptosis/Tumor Suppressors/Cell Death"}, 361 {"bacterial_proteins_toxins","Bacterial proteins and Toxins"}, 362 {"cancer_biomarkers","Cancer Biomarkers"}, 363 {"cardiovascular_biology","Cardiovascular Biology"}, 364 {"cell_adhesion","Cell Adhesion"}, 365 {"cell_biology","Cell Biology"}, 366 {"cell_cycle_dna_replication","Cell Cycle/DNA Replication"}, 367 {"cell_death","Cell Death"}, 368 {"cell_motility_cytoskeleton_structure","Cell Motility/Cytoskeleton/Structure"}, 369 {"cell_proliferation_viability","Cell Proliferation and Viability"}, 370 {"cell_structure","Cell Structure"}, 371 {"chromatin_remodeling_epigenetics","Chromatin Remodeling/Epigenetics"}, 372 {"complement","Complement"}, 373 {"costimulatory_molecules","Costimulatory Molecules"}, 374 {"covid19","COVID-19"}, 375 {"dna_repair_replication","DNA Repair/Replication"}, 376 {"immuno_oncology","Immuno-Oncology"}, 377 {"immunology","Immunology"}, 378 {"inhibitory_molecules","Inhibitory Molecules"}, 379 {"innate_immunity","Innate Immunity"}, 380 {"mitochondrial_function","Mitochondrial Function"}, 381 {"neurodegeneration","Neurodegeneration"}, 382 {"neuroinflammation","Neuroinflammation"}, 383 {"neuroscience","Neuroscience"}, 384 {"neuroscience_cell_markers","Neuroscience Cell Markers"}, 385 {"protein_misfolding_aggregation","Protein Misfolding and Aggregation"}, 386 {"protein_purification","Protein Purification"}, 387 {"protein_synthesis","Protein Synthesis"}, 388 {"protein_trafficking_clearance","Protein Trafficking and Clearance"}, 389 {"signal_transduction","Signal Transduction"}, 390 {"stem_cell","Stem Cells"}, 391 {"synaptic_biology","Synaptic Biology"}, 392 {"transcription_factors","Transcription Factors"}, 393 {"ubiquitin_protein_degradation","Ubiquitin/Protein Degradation"}, 394 {"western_blot_controls","Western Blot Controls"} 395 }; 396 if(!string.IsNullOrWhiteSpace(biologyArea)) 397 { 398 string[] biologyAreas = biologyArea.Split(','); 399 foreach (string thisArea in biologyAreas) 400 { 401 baText += baDict[thisArea] + ", "; 402 } 403 404 405 baText = baText.Remove(baText.Length-2); 406 <dt class="col-xs-3 noPaddingLeft"> 407 @Translate("BiologyArea","Biology Area") 408 </dt> 409 <dd class="col-xs-9"> 410 @baText 411 </dd> 412 } 413 } 414 415 @helper RenderMolecularFamily(string molecularFamily) 416 { 417 string mfText = ""; 418 Dictionary<string, string> mfDict = new Dictionary<string, string>(){ 419 {"a_synuclein","&alpha;-Synuclein"}, 420 {"adaptor_proteins","Adaptor Proteins"}, 421 {"adhesion_molecules","Adhesion Molecules"}, 422 {"aldehyde_dehydrogenases","Aldehyde Dehydrogenases"}, 423 {"app_b_amyloid","APP/&beta;-Amyloid"}, 424 {"app_ab_degradation","APP/A&beta; Degradation"}, 425 {"apolipoproteins","Apolipoproteins"}, 426 {"autophagosome_markers","Autophagosome Markers"}, 427 {"blood_group_markers","Blood Group Markers"}, 428 {"carrier_proteins","Carrier Proteins"}, 429 {"cd_molecules","CD Molecules"}, 430 {"cytokine_chemokine_receptors","Cytokine/Chemokine Receptors"}, 431 {"cytokines_chemokines","Cytokines/Chemokines"}, 432 {"cytoskeletal_proteins","Cytoskeletal Proteins"}, 433 {"endoplasmic_reticulum_markers","Endoplasmic Reticulum Markers"}, 434 {"endosomal_markers","Endosomal Markers"}, 435 {"enzymes_regulators","Enzymes and Regulators"}, 436 {"exosome_markers","Exosome Markers"}, 437 {"fc_receptors","Fc Receptors"}, 438 {"gap_junction_proteins","Gap Junction Proteins"}, 439 {"golgi_markers","Golgi Markers"}, 440 {"gpcr","GPCR"}, 441 {"growth_factors","Growth Factors"}, 442 {"gtpases","GTPases"}, 443 {"heat_shock_proteins","Heat Shock Proteins"}, 444 {"hormones","Hormones"}, 445 {"immune_checkpoint_receptors","Immune Checkpoint Receptors"}, 446 {"innate_immune_signaling","Innate Immune Signaling"}, 447 {"intermediate_filaments","Intermediate Filaments"}, 448 {"ions_channels","Ion Channels"}, 449 {"ligases","Ligases"}, 450 {"lysosomal_markers","Lysosomal Markers"}, 451 {"mhc_antigens","MHC Antigens"}, 452 {"microfilaments","Microfilaments"}, 453 {"microtubules","Microtubules"}, 454 {"mitochondrial_markers","Mitochondrial Markers"}, 455 {"neurotransmitter_receptor_trafficking_endocytosis","Neurotransmitter Receptor Trafficking/Endocytosis"}, 456 {"neurotransmitter_receptors","Neurotransmitter Receptors"}, 457 {"neurotrophic_factors","Neurotrophic Factors"}, 458 {"nuclear_markers","Nuclear Markers"}, 459 {"organelle_markers","Organelle Markers"}, 460 {"postsynaptic_proteins","Postsynaptic proteins"}, 461 {"phospho_proteins","Phospho-Proteins"}, 462 {"presynaptic_proteins","Presynaptic proteins"}, 463 {"prion_cd230","Prion (CD230)"}, 464 {"proteases","Proteases"}, 465 {"protein_kinases_phosphatase","Protein Kinases/Phosphatase"}, 466 {"protein_modifiers","Protein Modifiers"}, 467 {"purinergic_receptors","Purinergic Receptors"}, 468 {"scaffold_proteins","Scaffold Proteins"}, 469 {"secretases","Secretases"}, 470 {"semaphorin_receptors","Semaphorin Receptors"}, 471 {"siglec_molecules","Siglec Molecules"}, 472 {"soluble_receptors","Soluble Receptors"}, 473 {"steroid_receptors_nuclear_receptors","Steroid Receptors/Nuclear Receptors"}, 474 {"synaptic_vesicle_trafficking_endocytosis","Synaptic Vesicle Trafficking/Endocytosis"}, 475 {"tau","Tau"}, 476 {"tcrs","TCRs"}, 477 {"tdp43","TDP43"}, 478 {"toll_like_receptors","Toll Like Receptors"}, 479 {"tumor_suppressors","Tumor Suppressors"} 480 }; 481 if(!string.IsNullOrWhiteSpace(molecularFamily)) 482 { 483 string[] molecularFamilies = molecularFamily.Split(','); 484 foreach (string thisArea in molecularFamilies) 485 { 486 mfText += mfDict[thisArea] + ", "; 487 } 488 489 490 mfText = mfText.Remove(mfText.Length-2); 491 <dt class="col-xs-3 noPaddingLeft"> 492 @Translate("MolecularFamily","Molecular Family") 493 </dt> 494 <dd class="col-xs-9"> 495 @mfText 496 </dd> 497 } 498 } 499 500 @helper RenderCellType(string cellType) 501 { 502 string ctText = ""; 503 Dictionary<string, string> ctDict = new Dictionary<string, string>(){ 504 {"Antigenpresentingcells","Antigen-presenting cells"}, 505 {"Astrocytes","Astrocytes"}, 506 {"Bcells","B cells"}, 507 {"Basophils","Basophils"}, 508 {"Dendriticcells","Dendritic cells"}, 509 {"DopaminergicNeurons","Dopaminergic Neurons"}, 510 {"EmbryonicStemCells","Embryonic Stem Cells"}, 511 {"Endothelialcells","Endothelial cells"}, 512 {"Eosinophils","Eosinophils"}, 513 {"Epithelialcells","Epithelial cells"}, 514 {"Erythrocytes","Erythrocytes"}, 515 {"Fibroblasts","Fibroblasts"}, 516 {"GABAergicNeurons","GABAergic Neurons"}, 517 {"GlutamatergicNeurons","Glutamatergic Neurons"}, 518 {"Granulocytes","Granulocytes"}, 519 {"Hematopoieticstemandprogenitors","Hematopoietic stem and progenitors"}, 520 {"Langerhanscells","Langerhans cells"}, 521 {"Leukemia","Leukemia"}, 522 {"Leukocytes","Leukocytes"}, 523 {"Lymphocytes","Lymphocytes"}, 524 {"Macrophages","Macrophages"}, 525 {"Mastcells","Mast cells"}, 526 {"MatureNeurons","Mature Neurons"}, 527 {"Megakaryocytes","Megakaryocytes"}, 528 {"Mesenchymalcells","Mesenchymal cells"}, 529 {"MesenchymalStemCells","Mesenchymal Stem Cells"}, 530 {"Microglia","Microglia"}, 531 {"Monocytes","Monocytes"}, 532 {"NeuralStemCells","Neural Stem Cells"}, 533 {"Neurons","Neurons"}, 534 {"Neutrophils","Neutrophils"}, 535 {"NKcells","NK cells"}, 536 {"NKTcells","NKT cells"}, 537 {"Oligodendrocytes","Oligodendrocytes"}, 538 {"Osteoblasts","Osteoblasts"}, 539 {"Osteoclasts","Osteoclasts"}, 540 {"Plasmacells","Plasma cells"}, 541 {"Platelets","Platelets"}, 542 {"Schwanncells","Schwann Cells"}, 543 {"Tcells","T cells"}, 544 {"Tfh","Tfh"}, 545 {"Th1","Th1"}, 546 {"Th2","Th2"}, 547 {"Th17","Th17"}, 548 {"Thymocytes","Thymocytes"}, 549 {"Tregs","Tregs"} 550 }; 551 if(!string.IsNullOrWhiteSpace(cellType)) 552 { 553 string[] cellTypes = cellType.Split(','); 554 foreach (string thisType in cellTypes) 555 { 556 ctText += ctDict[thisType] + ", "; 557 } 558 559 560 ctText = ctText.Remove(ctText.Length-2); 561 <dt class="col-xs-3 noPaddingLeft"> 562 @Translate("CellType","Cell Type") 563 </dt> 564 <dd class="col-xs-9"> 565 @ctText 566 </dd> 567 } 568 } 569 570 @helper RenderIsoype(string isotype) 571 { 572 string ctText = ""; 573 Dictionary<string, string> ctDict = new Dictionary<string, string>(){ 574 {"","N/A"}, 575 {"01","Armenian Hamster IgG"}, 576 {"02","Armenian Hamster IgG1"}, 577 {"03","Armenian Hamster IgG1, κ"}, 578 {"04","Armenian Hamster IgG2, κ"}, 579 {"05","Armenian Hamster IgM"}, 580 {"06","Donkey Polyclonal Ig"}, 581 {"07","Goat Ig"}, 582 {"08","Goat IgG"}, 583 {"09","Goat Polyclonal Ig"}, 584 {"09_5","Goat Polyclonal IgG"}, 585 {"10","Hamster IgG"}, 586 {"11","Mouse (A.SW) IgG2a, κ"}, 587 {"12","Mouse (BALB/c) IgE, κ"}, 588 {"13","Mouse (BALB/c) IgG1, κ"}, 589 {"14","Mouse (BALB/c) IgG2a, κ"}, 590 {"15","Mouse (BALB/c) IgG2b, κ"}, 591 {"16","Mouse (C3H.SW) IgG2a, κ"}, 592 {"17","Mouse (C3H.SW) IgG3, κ"}, 593 {"18","Mouse (C3H) IgG2a, κ"}, 594 {"19","Mouse (C57BL/6) IgE, κ"}, 595 {"20","Mouse (C57BL/6) IgG1, κ"}, 596 {"21","Mouse (CWB) IgG2a, κ"}, 597 {"22","Mouse (SJL) IgG2a, κ"}, 598 {"23","Mouse (SJL) IgG2b, κ"}, 599 {"24","Mouse IgA, κ"}, 600 {"24_1","Mouse IgA"}, 601 {"25","Mouse IgG"}, 602 {"26","Mouse IgG, κ"}, 603 {"27","Mouse IgG1"}, 604 {"28","Mouse IgG1 (all clones)"}, 605 {"29","Mouse IgG1/Mouse IgG2a"}, 606 {"29_1","Mouse IgG1, κ/Mouse IgG2a, κ/Mouse IgG2b, κ"}, 607 {"29_2","Mouse IgG1/Mouse IgM"}, 608 {"31","Mouse IgG1, κ"}, 609 {"31_1","Mouse IgG1, κ/Mouse IgG2a, κ"}, 610 {"31_2","Mouse IgG1, κ/Rat IgG2b, κ"}, 611 {"32","Mouse IgG1, κ (all clones)"}, 612 {"32_2","Mouse IgG1, λ"}, 613 {"33","Mouse IgG1/Mouse IgG2b"}, 614 {"34","Mouse IgG2a"}, 615 {"35","Mouse IgG2a, κ"}, 616 {"36","Mouse (A.TL) IgG2a, κ"}, 617 {"37","Mouse (C3H.KBR) IgG2a, κ"}, 618 {"38","Mouse IgG2a, λ"}, 619 {"39","Mouse IgG2b"}, 620 {"40","Mouse IgG2b, κ"}, 621 {"41","Mouse IgG2b, λ"}, 622 {"41_2","Mouse IgG2c"}, 623 {"41_5","Mouse IgG3"}, 624 {"42","Mouse IgG3, κ"}, 625 {"43","Mouse IgM"}, 626 {"44","Mouse IgM, κ"}, 627 {"45","Mouse IgM, λ"}, 628 {"46","Mouse (C3H/HeJ) IgG2a, κ"}, 629 {"46_5","Mouse Polyclonal"}, 630 {"47","Rabbit IgG"}, 631 {"47_1","Rabbit Ig"}, 632 {"48","Rabbit Polyclonal IgG"}, 633 {"48_5","Rabbit Polyclonal"}, 634 {"49","Rat (SD) IgG2b, λ"}, 635 {"49_5","Rat Polyclonal IgG"}, 636 {"50","Rat IgG"}, 637 {"51","Rat IgG, κ"}, 638 {"52","Rat IgG1"}, 639 {"53","Rat IgG1, κ"}, 640 {"54","Rat IgG1, λ"}, 641 {"55","Rat IgG2a"}, 642 {"56","Rat IgG2a, κ"}, 643 {"57","Rat IgG2a, λ"}, 644 {"58","Rat IgG2a/Rat IgG1"}, 645 {"59","Rat IgG2a/Rat IgG2b"}, 646 {"59_1","Rat IgG2a, κ/Rat IgG2b, κ"}, 647 {"59_2","Armenian Hamster IgG/Rat IgG2a/Rat IgG2b"}, 648 {"59_3","Rat IgG2a, κ/Rat IgG2b, κ/Rat IgG2c, κ"}, 649 {"60","Rat IgG2b"}, 650 {"61","Rat IgG2b, κ"}, 651 {"62","Rat IgG2b, λ"}, 652 {"62_5","Rat IgG2c"}, 653 {"64","Rat IgG2c, κ"}, 654 {"64_5","Rat IgM"}, 655 {"65","Rat IgM, κ"}, 656 {"66","Syrian Hamster IgG"}, 657 {"67","Armenian Hamster IgG1, λ"}, 658 {"68","Chicken Polyclonal IgY"}, 659 {"69","Sheep Polyclonal"}, 660 {"70","Guinea Pig Polyclonal"}, 661 {"81","Human IgG1"}, 662 {"81_5","Human IgG1, κ"}, 663 {"82","Human IgG2"}, 664 {"82_5","Human IgG2, κ"}, 665 {"83","Human IgG3"}, 666 {"83_5","Human IgG3, κ"}, 667 {"84","Human IgG4"}, 668 {"84_5","Human IgG4, κ"}, 669 {"99","TBD"}, 670 {"47_5","Rabbit Polyclonal Ig"}, 671 {"41_3","Mouse IgG2c, κ"}, 672 {"67_9","Chicken IgY"}, 673 {"40_1","Mouse IgG2b, κ/Mouse IgM, κ"}, 674 {"33_1","Mouse IgG1, κ/Mouse IgG2b, κ"}, 675 {"71","Llama VH Ig"} 676 }; 677 if(!string.IsNullOrWhiteSpace(isotype)) 678 { 679 string[] isotypes = isotype.Split(','); 680 foreach (string thisType in isotypes) 681 { 682 ctText += ctDict[thisType] + ", "; 683 } 684 685 686 ctText = ctText.Remove(ctText.Length-2); 687 <dt class="col-xs-3 noPaddingLeft"> 688 @Translate("IsotypeLabel","Isotype") 689 </dt> 690 <dd class="col-xs-9"> 691 @ctText 692 </dd> 693 } 694 } 695 696 @helper RenderLaser(string laser) 697 { 698 string laserText = ""; 699 string violetLaser = Translate("violetLaser","Violet Laser (405 nm)"); 700 string blueLaser = Translate("blueLaser","Blue Laser (488 nm)"); 701 string greenLaser = Translate("greenLaser","Green Laser (532 nm)/Yellow-Green Laser (561 nm)"); 702 string redLaser = Translate("redLaser","Red Laser (633 nm)"); 703 string ultravioletLaser = Translate("ultravioletLaser","Ultraviolet Laser (355 nm)"); 704 string[] lasers = laser.Split(','); 705 foreach (string thisLaser in lasers) 706 { 707 if(thisLaser == "violetLaser"){ 708 laserText += violetLaser + "<br />"; 709 } 710 if(thisLaser == "blueLaser"){ 711 laserText += blueLaser + "<br />"; 712 } 713 if(thisLaser == "greenLaser"){ 714 laserText += greenLaser + "<br />"; 715 } 716 if(thisLaser == "redLaser"){ 717 laserText += redLaser + "<br />"; 718 } 719 if(thisLaser == "ultravioletLaser"){ 720 laserText += ultravioletLaser + "<br />"; 721 } 722 } 723 724 if(!string.IsNullOrWhiteSpace(laserText)) 725 { 726 <dt class="col-xs-3 noPaddingLeft"> 727 @Translate("ExcitationLaser","Excitation Laser") 728 </dt> 729 <dd class="col-xs-9"> 730 @laserText 731 </dd> 732 } 733 } 734 735 @helper RenderSpectralData(string format = "", string productID = "") 736 { 737 string variable = ""; 738 string textAnchor = ""; 739 740 if(format == "A488") 741 { 742 variable = "AF488"; 743 textAnchor = "Alexa Fluor&reg; 488"; 744 } 745 else if(format == "A555") 746 { 747 variable = "AF555"; 748 textAnchor = "Alexa Fluor&reg; 555"; 749 } 750 else if(format == "A594") 751 { 752 variable = "AF594"; 753 textAnchor = "Alexa Fluor&reg; 594"; 754 } 755 else if(format == "A647") 756 { 757 variable = "AF647"; 758 textAnchor = "Alexa Fluor&reg; 647"; 759 } 760 else if(format == "A660") 761 { 762 variable = "AF660"; 763 textAnchor = "Alexa Fluor&reg; 660"; 764 } 765 else if(format == "A700") 766 { 767 variable = "AF700"; 768 textAnchor = "Alexa Fluor&reg; 700"; 769 } 770 else if(format == "APC") 771 { 772 variable = "APC"; 773 textAnchor = "APC"; 774 } 775 else if(format == "APC_CY5.5") 776 { 777 variable = "APCCY55"; 778 textAnchor = "APC/Cy5.5"; 779 } 780 else if(format == "APC_CYANINE7") 781 { 782 variable = "APCCYANINE7"; 783 textAnchor = "APC/Cyanine7"; 784 } 785 else if(format == "APC_F750") 786 { 787 variable = "APCF750"; 788 textAnchor = "APC/Fire&trade; 750"; 789 } 790 else if(format == "BV421") 791 { 792 variable = "BV421"; 793 textAnchor = "Brilliant Violet 421&trade;"; 794 } 795 else if(format == "BV510") 796 { 797 variable = "BV510"; 798 textAnchor = "Brilliant Violet 510&trade;"; 799 } 800 else if(format == "BV570") 801 { 802 variable = "BV570"; 803 textAnchor = "Brilliant Violet 570&trade;"; 804 } 805 else if(format == "BV605") 806 { 807 variable = "BV605"; 808 textAnchor = "Brilliant Violet 605&trade;"; 809 } 810 else if(format == "BV650") 811 { 812 variable = "BV650"; 813 textAnchor = "Brilliant Violet 650&trade;"; 814 } 815 else if(format == "BV711") 816 { 817 variable = "BV711"; 818 textAnchor = "Brilliant Violet 711&trade;"; 819 } 820 else if(format == "BV750") 821 { 822 variable = "BV750"; 823 textAnchor = "Brilliant Violet 750&trade;"; 824 } 825 else if(format == "BV785") 826 { 827 variable = "BV785"; 828 textAnchor = "Brilliant Violet 785&trade;"; 829 } 830 else if(format == "CYANINE3") 831 { 832 variable = "CYANINE3"; 833 textAnchor = "Cyanine3"; 834 } 835 else if(format == "CYANINE5") 836 { 837 variable = "CYANINE5"; 838 textAnchor = "Cyanine5"; 839 } 840 else if(format == "FITC") 841 { 842 variable = "FITC"; 843 textAnchor = "FITC"; 844 } 845 else if(format == "PB") 846 { 847 variable = "PB"; 848 textAnchor = "Pacific Blue&trade;"; 849 } 850 else if(format == "PE") 851 { 852 variable = "PE"; 853 textAnchor = "PE"; 854 } 855 else if(format == "PE_CYANINE5") 856 { 857 variable = "PECYANINE5"; 858 textAnchor = "PE/Cyanine5"; 859 } 860 else if(format == "PE_CY5.5") 861 { 862 variable = "PECY55"; 863 textAnchor = "PE/Cy5.5"; 864 } 865 else if(format == "PE_CYANINE7") 866 { 867 variable = "PECYANINE7"; 868 textAnchor = "PE/Cyanine7"; 869 } 870 else if(format == "PE_DZL594") 871 { 872 variable = "PEDZL594"; 873 textAnchor = "PE/Dazzle&trade; 594"; 874 } 875 else if(format == "PERCP") 876 { 877 variable = "PERCP"; 878 textAnchor = "PerCP"; 879 } 880 else if(format == "PERCP_CY55") 881 { 882 variable = "PERCPCYANINE55"; 883 textAnchor = "PerCP/Cyanine5.5"; 884 } 885 //PerCP/Cyanine5.5 886 else if(format == "PERCP_CYANINE5.5") 887 { 888 variable = "PERCPCYANINE55"; 889 textAnchor = "PerCP/Cyanine5.5"; 890 } 891 //Flash Phalloidin NIR 647 892 else if(productID == "13240") 893 { 894 variable = "FPNIR647"; 895 textAnchor = "Flash Phalloidin&trade; NIR 647"; 896 } 897 //Flash Phalloidin Red 594 898 else if(productID == "13203") 899 { 900 variable = "FPR594"; 901 textAnchor = "Flash Phalloidin&trade; Red 594"; 902 } 903 //Flash Phalloidin Green 488 904 else if(productID == "13950") 905 { 906 variable = "FPG488"; 907 textAnchor = "Flash Phalloidin&trade; Green 488"; 908 } 909 //DAPI 910 else if(productID == "8108") 911 { 912 variable = "DAPI"; 913 textAnchor = "DAPI (4',6-Diamidino-2-Phenylindole, Dilactate)"; 914 } 915 //PI 916 else if(productID == "2651") 917 { 918 variable = "PI"; 919 textAnchor = "Propidium Iodide"; 920 } 921 //7AAD 922 else if(productID == "1649") 923 { 924 variable = "7AAD"; 925 textAnchor = "7-AAD"; 926 } 927 /* zombie Aqua */ 928 else if(productID == "8444") 929 { 930 variable = "ZA"; 931 textAnchor = "Zombie Aqua&trade;"; 932 } 933 /* zombie Green */ 934 else if(productID == "9340") 935 { 936 variable = "ZG"; 937 textAnchor = "Zombie Green&trade;"; 938 } 939 /* zombie NIR */ 940 else if(productID == "8657") 941 { 942 variable = "ZNIR"; 943 textAnchor = "Zombie NIR&trade;"; 944 } 945 /* zombie Red */ 946 else if(productID == "9338") 947 { 948 variable = "ZR"; 949 textAnchor = "Zombie Red&trade;"; 950 } 951 /* zombie Ultraviolet */ 952 else if(productID == "9336") 953 { 954 variable = "ZUV"; 955 textAnchor = "Zombie UV&trade;"; 956 } 957 /* zombie Violet */ 958 else if(productID == "9341") 959 { 960 variable = "ZV"; 961 textAnchor = "Zombie Violet&trade;"; 962 } 963 /* zombie Yellow */ 964 else if(productID == "8514") 965 { 966 variable = "ZY"; 967 textAnchor = "Zombie Yellow&trade;"; 968 } 969 /* zombie B550 */ 970 else if(productID == "23629") 971 { 972 variable = "ZB550"; 973 textAnchor = "Zombie B550&trade;"; 974 } 975 /* zombie Zombie YG581 */ 976 else if(productID == "23631") 977 { 978 variable = "ZYG581"; 979 textAnchor = "Zombie YG581&trade;"; 980 } 981 /* zombie R685 */ 982 else if(productID == "23628") 983 { 984 variable = "ZR685"; 985 textAnchor = "Zombie R685&trade;"; 986 } 987 /* zombie R718 */ 988 else if(productID == "23630") 989 { 990 variable = "ZR718"; 991 textAnchor = "Zombie R718&trade;"; 992 } 993 /* CFSE */ 994 else if(productID == "8053") 995 { 996 variable = "CFSE"; 997 textAnchor = "CFSE"; 998 } 999 /* DRAQ7 */ 1000 else if(productID == "9628") 1001 { 1002 variable = "DRAQ7"; 1003 textAnchor = "DRAQ7&trade;"; 1004 } 1005 /* DRAQ5 */ 1006 else if(productID == "9674") 1007 { 1008 variable = "DRAQ5"; 1009 textAnchor = "DRAQ5&trade;"; 1010 } 1011 1012 /* Helix NP NIR */ 1013 else if(productID == "13421") 1014 { 1015 variable = "HNPNIR"; 1016 textAnchor = "Helix NP&trade; NIR"; 1017 } 1018 1019 /* Cytophase Violet */ 1020 else if (productID == "13786") 1021 { 1022 variable = "CV"; 1023 textAnchor = "Cytophase&trade; Violet"; 1024 } 1025 1026 /* PE Fire 640 */ 1027 else if(format == "PE_F640") 1028 { 1029 variable = "PEFIRE640"; 1030 textAnchor = "PE/Fire&trade; 640"; 1031 } 1032 1033 /* PE Fire 700 */ 1034 else if(format == "PE_F700") 1035 { 1036 variable = "PEFIRE700"; 1037 textAnchor = "PE/Fire&trade; 700"; 1038 } 1039 1040 /* PE Fire 744 */ 1041 else if(format == "PE_F744") 1042 { 1043 variable = "PEFIRE744"; 1044 textAnchor = "PE/Fire&trade; 744"; 1045 } 1046 1047 /* PE Fire 780 */ 1048 else if(format == "PE_F780") 1049 { 1050 variable = "PEFIRE780"; 1051 textAnchor = "PE/Fire&trade; 780"; 1052 } 1053 1054 /* PE Fire 810 */ 1055 else if(format == "PE_F810") 1056 { 1057 variable = "PEFIRE810"; 1058 textAnchor = "PE/Fire&trade; 810"; 1059 } 1060 1061 /* DyLight 649 */ 1062 else if(format == "D649") 1063 { 1064 variable = "DYLIGHT649"; 1065 textAnchor = "DyLight&reg; 649"; 1066 } 1067 1068 /* Karavia 520 */ 1069 else if(format == "KB520") 1070 { 1071 variable = "KB520"; 1072 textAnchor = "KIRAVIA Blue 520&trade;"; 1073 } 1074 1075 /* Apotracker Green */ 1076 else if (productID == "18527") 1077 { 1078 variable = "APOTRACKERGREEN"; 1079 textAnchor = "Apotracker&trade; Green"; 1080 } 1081 1082 /* Calcein Red-AM */ 1083 else if (productID == "18901") 1084 { 1085 variable = "CRAM"; 1086 textAnchor = "Calcein Red-AM"; 1087 } 1088 1089 /* Spark YG 570 */ 1090 else if(format == "SPKYG_570") 1091 { 1092 variable = "SPARKYG570"; 1093 textAnchor = "Spark YG&trade; 570"; 1094 } 1095 1096 /* Spark Violet 538 */ 1097 else if(format == "SPKVL_538") 1098 { 1099 variable = "SPKV538"; 1100 textAnchor = "Spark Violet&trade; 538"; 1101 } 1102 1103 /* Spark YG 581 */ 1104 else if(format == "SPKYG_581") 1105 { 1106 variable = "SPKYG581"; 1107 textAnchor = "Spark YG&trade; 581"; 1108 } 1109 1110 /* Spark Blue 574 */ 1111 else if(format == "SPKBL_574") 1112 { 1113 variable = "SPARKB574"; 1114 textAnchor = "Spark Blue&trade; 574"; 1115 } 1116 1117 /* Spark Violet 423 */ 1118 else if(format == "SPKVL_423") 1119 { 1120 variable = "SPKV423"; 1121 textAnchor = "Spark Violet&trade; 423"; 1122 } 1123 1124 /* Spark UV 387 */ 1125 else if(format == "SPKUV_387") 1126 { 1127 variable = "SPARKUV387"; 1128 textAnchor = "Spark UV&trade; 387"; 1129 } 1130 1131 /* Spark Violet 500 */ 1132 else if(format == "SPKVL_500") 1133 { 1134 variable = "SPARKV500"; 1135 textAnchor = "Spark Violet&trade; 500"; 1136 } 1137 1138 /* PerCP/Fire 780 */ 1139 else if(format == "PERCP_F780") 1140 { 1141 variable = "PERCPF780"; 1142 textAnchor = "PerCP/Fire&trade; 780"; 1143 } 1144 1145 /* PerCP/Fire 806 */ 1146 else if(format == "PERCP_F806") 1147 { 1148 variable = "PERCPF806"; 1149 textAnchor = "PerCP/Fire&trade; 806"; 1150 } 1151 1152 /* Spark Blue 515 */ 1153 else if(format == "SPKBL_515") 1154 { 1155 variable = "SPKBL_515"; 1156 textAnchor = "Spark Blue&trade; 515"; 1157 } 1158 1159 /* Lysosome Probe Deep Red */ 1160 else if(productID == "23745") 1161 { 1162 variable = "LPDR"; 1163 textAnchor = "Lysosome Probe Deep Red"; 1164 } 1165 1166 /* Lysosome Probe Green */ 1167 else if(productID == "23741") 1168 { 1169 variable = "LPG"; 1170 textAnchor = "Lysosome Probe Green"; 1171 } 1172 1173 /* Lysosome Probe NIR */ 1174 else if(productID == "23744") 1175 { 1176 variable = "LPNIR"; 1177 textAnchor = "Lysosome Probe NIR"; 1178 } 1179 1180 /* Lysosome Probe Orange */ 1181 else if(productID == "23742") 1182 { 1183 variable = "LPO"; 1184 textAnchor = "Lysosome Probe Orange"; 1185 } 1186 1187 /* Lysosome Probe Red */ 1188 else if(productID == "23743") 1189 { 1190 variable = "LPR"; 1191 textAnchor = "Lysosome Probe Red"; 1192 } 1193 1194 /* JC-10 Mitochondrial Membrane Potential Kit */ 1195 else if(productID == "23092") 1196 { 1197 variable = "JC10MMPK"; 1198 textAnchor = "JC-10 Mitochondrial Membrane Potential Kit"; 1199 } 1200 1201 /* Spark PLUS UV 395 */ 1202 else if(format == "SPKPLUSUV_395") 1203 { 1204 variable = "SPKPLUSUV_395"; 1205 textAnchor = "Spark PLUS UV&trade; 395"; 1206 } 1207 1208 1209 1210 1211 1212 1213 /* APC/Fire 810 */ 1214 else if(format == "APC_F810") 1215 { 1216 variable = "APCF810"; 1217 textAnchor = "APC/Fire&trade; 810"; 1218 } 1219 1220 /* Spark Blue 550 */ 1221 else if(format == "SPKBL_550") 1222 { 1223 variable = "SPKB550"; 1224 textAnchor = "Spark Blue&trade; 550"; 1225 } 1226 1227 /* Spark PLUS B550 */ 1228 else if(format == "SPKPLUSB_550") 1229 { 1230 variable = "SPKPLUSB_550"; 1231 textAnchor = "Spark PLUS B550&trade;"; 1232 } 1233 1234 /* Spark NIR 685 */ 1235 else if(format == "SPKNIR_685") 1236 { 1237 variable = "SPKNIR685"; 1238 textAnchor = "Spark NIR&trade; 685"; 1239 } 1240 1241 /* Spark Red 718 */ 1242 else if(format == "SPKR_718") 1243 { 1244 variable = "SPKR718"; 1245 textAnchor = "Spark Red&trade; 718"; 1246 } 1247 1248 /* Spark YG 593 */ 1249 else if(format == "SPKYG_593") 1250 { 1251 variable = "SPKYG593"; 1252 textAnchor = "Spark YG&trade; 593"; 1253 } 1254 1255 /* GMP Alexa Fluor® 488 */ 1256 else if(format == "GMP_A488") 1257 { 1258 variable = "AF488"; 1259 textAnchor = "GMP Alexa Fluor&reg; 488"; 1260 } 1261 1262 /* GMP Alexa Fluor® 647 */ 1263 else if(format == "GMP_A647") 1264 { 1265 variable = "AF647"; 1266 textAnchor = "GMP Alexa Fluor&reg; 647"; 1267 } 1268 1269 /* GMP Alexa Fluor® 700 */ 1270 else if(format == "GMP_A700") 1271 { 1272 variable = "AF700"; 1273 textAnchor = "GMP Alexa Fluor&reg; 700"; 1274 } 1275 1276 /* GMP APC */ 1277 else if(format == "GMP_APC") 1278 { 1279 variable = "APC"; 1280 textAnchor = "GMP APC"; 1281 } 1282 1283 /* GMP APC/Cyanine7 */ 1284 else if(format == "GMP_APC_CYANINE7") 1285 { 1286 variable = "APCCYANINE7"; 1287 textAnchor = "GMP APC/Cyanine7"; 1288 } 1289 1290 /* GMP APC/Fire 750 */ 1291 else if(format == "GMP_APC_F750") 1292 { 1293 variable = "APCF750"; 1294 textAnchor = "GMP APC/Fire&trade; 750"; 1295 } 1296 1297 /* GMP FITC */ 1298 else if(format == "GMP_FITC") 1299 { 1300 variable = "FITC"; 1301 textAnchor = "GMP FITC"; 1302 } 1303 1304 /* GMP Pacific Blue */ 1305 else if(format == "GMP_PB") 1306 { 1307 variable = "PB"; 1308 textAnchor = "GMP Pacific Blue&trade;"; 1309 } 1310 1311 /* GMP PE */ 1312 else if(format == "GMP_PE") 1313 { 1314 variable = "PE"; 1315 textAnchor = "GMP PE"; 1316 } 1317 1318 /* GMP PE/Cyanine5 */ 1319 else if(format == "GMP_PE_CYANINE5") 1320 { 1321 variable = "PECYANINE5"; 1322 textAnchor = "GMP PE/Cyanine5"; 1323 } 1324 1325 /* GMP PE/Cyanine7 */ 1326 else if(format == "GMP_PE_CYANINE7") 1327 { 1328 variable = "PECYANINE7"; 1329 textAnchor = "GMP PE/Cyanine7"; 1330 } 1331 1332 /* GMP PE/Dazzle 594 */ 1333 else if(format == "GMP_PE_DZL594") 1334 { 1335 variable = "PEDZL594"; 1336 textAnchor = "GMP PE/Dazzle&trade; 594"; 1337 } 1338 1339 /* GMP PerCP */ 1340 else if(format == "GMP_PERCP") 1341 { 1342 variable = "PERCP"; 1343 textAnchor = "GMP PerCP"; 1344 } 1345 1346 /* GMP PerCP/Cyanine5.5 */ 1347 else if(format == "GMP_PERCP_CYANINE5.5") 1348 { 1349 variable = "PERCPCYANINE55"; 1350 textAnchor = "GMP PerCP/Cyanine5.5"; 1351 } 1352 1353 /* GMP Spark Violet 423 */ 1354 else if(format == "GMP_SPKVL_423") 1355 { 1356 variable = "SPKV423"; 1357 textAnchor = "GMP Spark Violet&trade; 423"; 1358 } 1359 1360 /* GMP Spark Violet 538 */ 1361 else if(format == "GMP_SPKVL_538") 1362 { 1363 variable = "SPKV538"; 1364 textAnchor = "GMP Spark Violet&trade; 538"; 1365 } 1366 1367 1368 if (!string.IsNullOrWhiteSpace(variable)) 1369 { 1370 string spectraImage = "/Files/Images/media_assets/fluorophore_equivalency/data/"+variable+".png"; 1371 bool fileExists = File.Exists(HttpContext.Current.Server.MapPath(spectraImage)); 1372 1373 if(fileExists) 1374 { 1375 <a id="spectralDataLink" class="col-xs-9" href='javascript:loadSpectra("@variable");'> 1376 <i class="bl bl-iconLink"></i> 1377 @Translate("seeSpectralData","See {{Format}} spectral data").Replace("{{Format}}", textAnchor) 1378 </a> 1379 } 1380 } 1381 } 1382 1383 @helper RenderMaterialDataSheet(string MSDS_Type = "", string MSDS_File = "", string MSDS_Options = "", string Regulatory_Status = "", string productID = "", string techSupportID = "", string translateAnchor = "", string translateAnchorCommingSoon = "",string translateAnchorNATechSupport = ""){ 1384 1385 string msdsLink = ""; 1386 1387 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); //CUSTOM CODE 1388 1389 if(MSDS_Type.Equals("LEAF")) 1390 { 1391 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/LEAF_NC_EN_CLP_2015-07-01.pdf"; 1392 } 1393 else if(MSDS_Type.Equals("ELISAMAXStandard")) 1394 { 1395 msdsLink = "/dwcountry/sdsoptions-4416"; 1396 } 1397 else if(MSDS_Type.Equals("ELISAMAXDeluxe")) 1398 { 1399 msdsLink = "/dwcountry/sdsoptions-4417"; 1400 } 1401 else if(MSDS_Type.Equals("LEGENDMAX")) 1402 { 1403 msdsLink = "/dwcountry/sdsoptions-4419"; 1404 } 1405 else if(MSDS_Type.Equals("LEGENDplex")) 1406 { 1407 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/LEGENDplex_COMP_SDS_2015-05-07_Revised.pdf"; 1408 } 1409 else if(MSDS_Type.Equals("MojoSort")) 1410 { 1411 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/MojoSort_NC_EN_CLP2015-07-01.pdf"; 1412 } 1413 else if(MSDS_Type.Equals("Streptavidin and Avidin")) 1414 { 1415 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/Streptavidin_and_Avidin_NC_EN_CLP_2015-11-20.pdf"; 1416 } 1417 else if(MSDS_Type.Equals("ASR")) 1418 { 1419 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/Diagnostic_Pure_and_Conjugated_Antibodies RSD_United_States-3.pdf"; 1420 } 1421 else if(MSDS_Type.Equals("7AAD")) 1422 { 1423 msdsLink = "/dwcountry/sdsoptions-28"; 1424 } 1425 else if(MSDS_Type.Equals("IVD A")) 1426 { 1427 msdsLink = "/dwcountry/sdsoptions-4109"; 1428 } 1429 else if(MSDS_Type.Equals("IVD B")) 1430 { 1431 msdsLink = "/dwcountry/sdsoptions-4110"; 1432 } 1433 else if(MSDS_Type.Equals("Veri-Cells")){ 1434 msdsLink = "/dwcountry/sdsoptions-4000"; 1435 } 1436 else if(MSDS_Type.Equals("Flow Kit")) 1437 { 1438 msdsLink = "/dwcountry/sds"; 1439 } 1440 else if(MSDS_Type.Equals("Zombie Dye")) 1441 { 1442 msdsLink = "/dwcountry/sdsoptions-4210"; 1443 } 1444 else if(MSDS_Type.Equals("Calcein AM")) 1445 { 1446 msdsLink = "/dwcountry/sdsoptions-4209"; 1447 } 1448 else if(MSDS_Type.Equals("Mitospy")) 1449 { 1450 msdsLink = "/dwcountry/sdsoptions-4208"; 1451 } 1452 else if(MSDS_Type.Equals("LPXKit1")) 1453 { 1454 msdsLink = "/dwcountry/sdsoptions-4965"; 1455 } 1456 else if(MSDS_Type.Equals("LPXKit2")) 1457 { 1458 msdsLink = "/dwcountry/sdsoptions-4966"; 1459 } 1460 else if(MSDS_Type.Equals("LPXKit3")) 1461 { 1462 msdsLink = "/dwcountry/sdsoptions-4967"; 1463 } 1464 else if(MSDS_Type.Equals("LPXKit4")) 1465 { 1466 msdsLink = "/dwcountry/sdsoptions-4968"; 1467 } 1468 else if(MSDS_Type.Equals("LPXKit5")) 1469 { 1470 msdsLink = "/dwcountry/sdsoptions-4969"; 1471 } 1472 else if(MSDS_Type.Equals("LPXKit7")) 1473 { 1474 msdsLink = "/dwcountry/sdsoptions-4971"; 1475 } 1476 else if(MSDS_Type.Equals("LPXCaptureBead")) 1477 { 1478 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/Non_Hazardous_Statement_LegendPlex_Capture_Beads.pdf"; 1479 } 1480 else if(MSDS_Type.Equals("LPXLyophStandard")) 1481 { 1482 msdsLink = cdnStaticDomain + "/Files/Images/BioLegend/support_sheet/Non_Hazardous_Statement_LegendPlex_Lyo_Formula_B.pdf"; 1483 } 1484 else if(MSDS_Type.Equals("LPXLyophStandardSoloFormulationA")) 1485 { 1486 msdsLink = "/dwcountry/sdsoptions-4964"; 1487 } 1488 else if(MSDS_Type.Equals("LyophilizedAntibodieswithAzide")) 1489 { 1490 msdsLink = "/dwcountry/sdsoptions-4494"; 1491 } 1492 else if(MSDS_Type.Equals("RecProtein1")) 1493 { 1494 msdsLink = "/dwcountry/sdsoptions-4975"; 1495 } 1496 else if(MSDS_Type.Equals("RecProtein2")) 1497 { 1498 msdsLink = "/dwcountry/sdsoptions-4973"; 1499 } 1500 else if(MSDS_Type.Equals("RecProtein3")) 1501 { 1502 msdsLink = "/dwcountry/sdsoptions-4974"; 1503 } 1504 else if(MSDS_Type.Equals("RecProtein4")) 1505 { 1506 msdsLink = "/dwcountry/sdsoptions-4976"; 1507 } 1508 else if(MSDS_Type.Equals("RecProtein5")) 1509 { 1510 msdsLink = "/dwcountry/sdsoptions-4972"; 1511 } 1512 else if(MSDS_Type.Equals("ELISAKIT1")) 1513 { 1514 msdsLink = "/dwcountry/sdsoptions-4978"; 1515 } 1516 else if(MSDS_Type.Equals("ELISAKIT2")) 1517 { 1518 msdsLink = "/dwcountry/sdsoptions-4979"; 1519 } 1520 else if(MSDS_Type.Equals("ELISAKIT3")) 1521 { 1522 msdsLink = "/dwcountry/sdsoptions-4981"; 1523 } 1524 else if(MSDS_Type.Equals("ELISAKIT5")) 1525 { 1526 msdsLink = "/dwcountry/sdsoptions-4987"; 1527 } 1528 else if(MSDS_Type.Equals("ELISAKIT7")) 1529 { 1530 msdsLink = "/dwcountry/sdsoptions-4986"; 1531 } 1532 else if(MSDS_Type.Equals("ELISAKIT8")) 1533 { 1534 msdsLink = "/dwcountry/sdsoptions-4982"; 1535 } 1536 else if(MSDS_Type.Equals("ELISAKIT9")) 1537 { 1538 msdsLink = "/dwcountry/sdsoptions-4984"; 1539 } 1540 else if(MSDS_Type.Equals("ELISAKIT10")) 1541 { 1542 msdsLink = "/dwcountry/sdsoptions-4983"; 1543 } 1544 else if(MSDS_Type.Equals("ELISAKIT11")) 1545 { 1546 msdsLink = "/dwcountry/sdsoptions-4988"; 1547 } 1548 else if(MSDS_Type.Equals("ELISAKIT13")) 1549 { 1550 msdsLink = "/dwcountry/sdsoptions-4991"; 1551 } 1552 else if(MSDS_Type.Equals("RAPIDMAXKIT1")) 1553 { 1554 msdsLink = "/dwcountry/sdsoptions-4997"; 1555 } 1556 else if(MSDS_Type.Equals("Custom") && !string.IsNullOrWhiteSpace(MSDS_Options)) 1557 { 1558 msdsLink = "/dwcountry/sdsoptions-"+MSDS_Options; 1559 } 1560 else if(MSDS_Type.Equals("Custom") && !string.IsNullOrWhiteSpace(MSDS_File)) 1561 { 1562 msdsLink = MSDS_File; 1563 } 1564 else{ 1565 msdsLink = "/dwcountry/sdsoptions-22"; 1566 } 1567 1568 if(msdsLink.Contains("sds-options")) 1569 { 1570 <a href='@LocalizeLinksHTML(msdsLink)' target="_blank" title=""><i class="bl bl-dataIcon"></i>@translateAnchor</a> 1571 } 1572 else 1573 { 1574 <a href='javascript:openPopup("@LocalizeLinksHTML(msdsLink)","@translateAnchor")'><i class="bl bl-dataIcon"></i>@translateAnchor</a> 1575 } 1576 } 1577 1578 @helper RenderCustomField( string productFieldType, string customField, string translate, LoopItem productObj = null){ 1579 string productTag; 1580 if (productObj != null) 1581 { 1582 productTag = productObj.GetString("Ecom:Product.CategoryField." + productFieldType + "." + customField + ".Value.Clean"); 1583 } 1584 else 1585 { 1586 productTag = GetString("Ecom:Product.CategoryField." + productFieldType + "." + customField + ".Value.Clean"); 1587 } 1588 1589 if(!string.IsNullOrWhiteSpace(productTag)) 1590 { 1591 <dt class="col-xs-3 noPaddingLeft"> 1592 @translate 1593 </dt> 1594 <dd class="col-xs-9"> 1595 @productTag 1596 </dd> 1597 } 1598 } 1599 1600 @helper RenderABType( string productField, string translate, string productID = "", string str_productRegulatoryStatus = "", string catalogFirstLetter = "0", string str_productFormat = "", string productFieldType = "", string str_productName = "", LoopItem productObj = null){ 1601 string productTag; 1602 if (productObj != null) 1603 { 1604 productTag = productObj.GetString("Ecom:Product:Field." + productField + ".Value"); 1605 } 1606 else 1607 { 1608 productTag = GetString("Ecom:Product:Field." + productField + ".Value"); 1609 } 1610 1611 if(!string.IsNullOrWhiteSpace(productTag) && !productTag.Equals("N/A") ) 1612 { 1613 <dt class="col-xs-3 noPaddingLeft"> 1614 @translate 1615 </dt> 1616 <dd class="col-xs-9"> 1617 @productTag 1618 </dd> 1619 } 1620 } 1621 1622 @helper RenderProductField( string productField, string translate, string productID = "", string str_productRegulatoryStatus = "", string catalogFirstLetter = "0", string str_productFormat = "", string productFieldType = "", string str_productName = "", LoopItem productObj = null, bool isCommaSeparatedList = false){ 1623 1624 var isPdf = Convert.ToBoolean(Dynamicweb.Context.Current.Request.Params["pdf"]); 1625 string appNotesID = ""; 1626 string productTag = ""; 1627 1628 1629 if (productObj != null) 1630 { 1631 productTag = productObj.GetString("Ecom:Product:Field." + productField + ".Value"); 1632 } 1633 else 1634 { 1635 productTag = GetString("Ecom:Product:Field." + productField + ".Value"); 1636 } 1637 1638 if(isCommaSeparatedList){ 1639 1640 productTag = productTag.Replace(",",", "); 1641 1642 } 1643 1644 if(productField.Equals("Reactivity") && productFieldType.Equals("RecombinantProteins")){} 1645 else if(!string.IsNullOrWhiteSpace(productTag)) 1646 { 1647 <dt class="col-xs-3 noPaddingLeft"> 1648 @translate 1649 </dt> 1650 1651 <dd class="col-xs-9"> 1652 @if(productField.Equals("Usage") && !str_productRegulatoryStatus.Equals("ASR")){ 1653 @UsageProductExceptions(productTag, str_productFormat, catalogFirstLetter, productFieldType, str_productName, productID) 1654 } 1655 else if(productField.Equals("Disclaimer") && str_productRegulatoryStatus.Equals("ASR")){ 1656 string replace = ""; 1657 if(str_productFormat.Equals("PB") || str_productFormat.Equals("A488") || str_productFormat.Equals("A555") || str_productFormat.Equals("A594") || str_productFormat.Equals("A647") || str_productFormat.Equals("A660") || str_productFormat.Equals("A700") || str_productFormat.Equals("A488_COCKTAIL") || str_productFormat.Equals("A647_COCKTAIL") || str_productFormat.Equals("A700_COCKTAIL")) 1658 { 1659 var termsLink = "/dwcountry/terms"; 1660 replace = "<br />Alexa Fluor&reg; and Pacific Blue&trade; are trademarks of Life Technologies Corporation.<br /><br /><a href='"+@LocalizeLinksHTML(termsLink)+"' target=\"_blank\" title=\"Label License\">View full statement regarding label licenses</a>"; 1661 productTag += replace; 1662 } 1663 1664 if (isPdf) 1665 { 1666 @(productTag) 1667 } 1668 else 1669 { 1670 @LocalizeLinksHTML(productTag) 1671 } 1672 } 1673 else 1674 { 1675 if (isPdf) 1676 { 1677 @(productTag) 1678 } 1679 else 1680 { 1681 @LocalizeLinksHTML(productTag) 1682 } 1683 } 1684 @AddShelfLifeException(productField,productID) 1685 @AddActivationBundleException(productField,productID) 1686 </dd> 1687 } 1688 } 1689 1690 @helper RenderLongDescription(string productField, string productID = "", bool isPdf = false) 1691 { 1692 string replace = ""; 1693 1694 if (productID.Equals("8309") || productID.Equals("14141")) 1695 { 1696 replace = "<br /><br /><a href=\"/legendscreen\" title=\"LEGENDScreen™ Antibody Panels\">Learn more about LEGENDScreen™ Antibody Panels and view plate maps.</a>"; 1697 productField += replace; 1698 } 1699 1700 if (isPdf) 1701 { 1702 @System.Web.HttpUtility.HtmlDecode(productField) 1703 } 1704 else 1705 { 1706 @System.Web.HttpUtility.HtmlDecode(LocalizeLinksHTML(productField)) 1707 } 1708 } 1709 1710 @helper RenderCustomConjugationButton( string catalogFirstTwoNumbers = "00", string catalogFirstThreeNumbers = "000", string formRequestConjugation = ""){ 1711 if(catalogFirstTwoNumbers == "42" || catalogFirstTwoNumbers == "43" || catalogFirstTwoNumbers == "44" || catalogFirstTwoNumbers == "48" || catalogFirstTwoNumbers == "55" || catalogFirstTwoNumbers == "56" || catalogFirstTwoNumbers == "57" || catalogFirstTwoNumbers == "58" || catalogFirstTwoNumbers == "59" || catalogFirstTwoNumbers == "70" || catalogFirstTwoNumbers == "71" || catalogFirstTwoNumbers == "74" || catalogFirstTwoNumbers == "75" || catalogFirstTwoNumbers == "76" || catalogFirstThreeNumbers == "401" || catalogFirstThreeNumbers == "402" || catalogFirstThreeNumbers == "403" || catalogFirstThreeNumbers == "404" || catalogFirstThreeNumbers == "842" || catalogFirstThreeNumbers == "843" ) 1712 {} 1713 else{ 1714 var customConjugationFormLink = @LocalizeLinksHTML("/dwcountry/custom-solutions/custom-requests-form"); 1715 <a class="btn btn-default" href="@customConjugationFormLink"> 1716 @Translate("requestCustomConjugation","Request Custom Conjugation") 1717 </a> 1718 } 1719 } 1720 1721 @helper UsageProductExceptions(string productField, string str_productFormat, string catalogFirstLetter = "0", string productFieldType = "", string str_productName = "", string productID = "") 1722 { 1723 string str = "Each lot of this antibody is quality control tested by immunofluorescent staining with flow cytometric analysis"; 1724 string replace = ""; 1725 1726 if ( productField.Contains(str)) 1727 { 1728 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/cell-surface-flow-cytometry-staining-protocol/4283/\" target=\"_blank\" title=\"View Protocol\"&gt;immunofluorescent staining with flow cytometric analysis&lt;/a&gt;"); 1729 } 1730 1731 str = "Each lot of these antibodies is quality control tested by immunofluorescent staining with flow cytometric analysis"; 1732 if ( productField.Contains(str)) 1733 { 1734 productField = productField.Replace(str,"Each lot of these antibodies is quality control tested by &lt;a href=\"/protocols/cell-surface-flow-cytometry-staining-protocol/4283/\" target=\"_blank\" title=\"View Protocol\"&gt;immunofluorescent staining with flow cytometric analysis&lt;/a&gt;"); 1735 } 1736 1737 str = "Each lot of this antibody is quality control tested by cell surface immunofluorescent staining with flow cytometric analysis as negative control."; 1738 if ( productField.Contains(str)) 1739 { 1740 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/cell-surface-flow-cytometry-staining-protocol/4283/\" target=\"_blank\" title=\"View Protocol\"&gt;cell surface immunofluorescent staining&lt;/a&gt; with flow cytometric analysis as negative control."); 1741 } 1742 1743 str = "Each lot of this antibody is quality control tested by intracellular immunofluorescent staining with flow cytometric analysis as negative control."; 1744 if ( productField.Contains(str)) 1745 { 1746 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/intracellular-flow-cytometry-staining-protocol/4260/\" target=\"_blank\" title=\"View Protocol\"&gt;intracellular immunofluorescence staining&lt;/a&gt; with flow cytometric analysis as negative control."); 1747 } 1748 1749 str = "Each lot of this antibody is quality control tested by Western blotting."; 1750 if ( productField.Contains(str)) 1751 { 1752 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/western-blotting-protocol/4269/\" target=\"_blank\" title=\"View Protocol\"&gt;Western blotting&lt;/a&gt;."); 1753 } 1754 1755 str = "Each lot of this antibody is quality control tested by ELISA assay."; 1756 if ( productField.Contains(str)) 1757 { 1758 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/sandwich-elisa-protocol/4268/\" target=\"_blank\" title=\"View Protocol\"&gt;ELISA assay&lt;/a&gt;."); 1759 } 1760 1761 str = "Each lot of this antibody is quality control tested by intracellular immunofluorescent staining with flow cytometric analysis."; 1762 if ( productField.Contains(str)) 1763 { 1764 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/intracellular-flow-cytometry-staining-protocol/4260/\" target=\"_blank\" title=\"View Protocol\"&gt;intracellular immunofluorescent staining with flow cytometric analysis&lt;/a&gt;."); 1765 } 1766 1767 str = "Each lot of this protein is quality control tested by ELISA assay."; 1768 if ( productField.Contains(str)) 1769 { 1770 productField = productField.Replace(str,"Each lot of this protein is quality control tested by &lt;a href=\"/protocols/sandwich-elisa-protocol/4268/\" target=\"_blank\" title=\"View Protocol\"&gt;ELISA assay&lt;/a&gt;."); 1771 } 1772 1773 str = "Each lot of this antibody is quality control tested by Immunofluorescence staining."; 1774 if ( productField.Contains(str)) 1775 { 1776 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by &lt;a href=\"/protocols/immunofluorescence-microscopy-protocol/4275/\" target=\"_blank\" title=\"View Protocol\"&gt;immunofluorescence staining&lt;/a&gt;."); 1777 } 1778 1779 str = "Each lot of this antibody is quality control tested by intracellular flow cytometry using our True-Phos™ Perm Buffer in Cell Suspensions Protocol."; 1780 if ( productField.Contains(str)) 1781 { 1782 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by intracellular flow cytometry using our &lt;a href=\"/protocols/intracellular-staining-with-true-phos-perm-buffer-in-cell-suspensions-protocol/4262/\" target=\"_blank\" title=\"View Protocol\"&gt;True-Phos&trade; Perm Buffer in Cell Suspensions Protocol&lt;/a&gt;."); 1783 } 1784 1785 str = "Each lot of this antibody is quality control tested by intracellular flow cytometry using our True-Phos™ Perm Buffer in Whole Blood Protocol."; 1786 if ( productField.Contains(str)) 1787 { 1788 productField = productField.Replace(str,"Each lot of this antibody is quality control tested by intracellular flow cytometry using our &lt;a href=\"/protocols/intracellular-staining-with-true-phos-perm-buffer-in-whole-blood/4261/\" target=\"_blank\" title=\"View Protocol\"&gt;True-Phos&trade; Perm Buffer in Whole Blood Protocol&lt;/a&gt;."); 1789 } 1790 1791 1792 if(str_productFormat.Equals("PB") || str_productFormat.Equals("GMP_PB") || str_productFormat.Equals("A488") || str_productFormat.Equals("A555") || str_productFormat.Equals("A594") || str_productFormat.Equals("A647") || str_productFormat.Equals("A660") || str_productFormat.Equals("A700") || str_productFormat.Equals("A488_COCKTAIL") || str_productFormat.Equals("A647_COCKTAIL") || str_productFormat.Equals("A700_COCKTAIL") || str_productFormat.Equals("GMP_A488") || str_productFormat.Equals("GMP_A647") || str_productFormat.Equals("GMP_A700")) 1793 { 1794 var termsLink = "/dwcountry/terms"; 1795 replace = "<br />Alexa Fluor&reg; and Pacific Blue&trade; are trademarks of Life Technologies Corporation.<br /><br /><a href='"+@LocalizeLinksHTML(termsLink)+"' target=\"_blank\" title=\"Label License\">View full statement regarding label licenses</a>"; 1796 productField += replace; 1797 } 1798 1799 if (productID == "9340") 1800 { 1801 replace = "<br />This product is provided under an intellectual property license from Life Technologies Corporation.<br /><br /><a href=\"/Files/Images/media_assets/support_resource/Limited_Use_Label_License_For_Licensee_Products_Sold_in_the_Research_Field.pdf\" target=\"_blank\" title=\"Label License\">View full statement regarding label licenses</a>"; 1802 productField += replace; 1803 } 1804 1805 str = "* PerCP/Cyanine5.5 has a maximum absorption of 482 nm and 564 nm and a maximum emission of 690 nm."; 1806 if ( productField.Contains(str)) 1807 { 1808 productField = productField.Replace(str,"* PerCP/Cyanine5.5 has a maximum absorption of 482 nm and a maximum emission of 690 nm."); 1809 } 1810 1811 str = "* PerCP has a maximum absorption of 482 nm and 564 nm and a maximum emission of 675 nm."; 1812 if ( productField.Contains(str)) 1813 { 1814 productField = productField.Replace(str,"* PerCP has a maximum absorption of 482 nm and a maximum emission of 675 nm."); 1815 } 1816 1817 if ( str_productFormat.Equals("KB520")) 1818 { 1819 replace = "<br />KIRAVIA Blue&trade; 520 is a trademark of Sony. This product is subject to proprietary rights of Sony and is made and sold under license from Sony Corporation. This product is covered by U.S. Patent(s), pending patent applications and foreign equivalents.<br /><br />Sony and the Sony logo are registered trademarks of Sony Corporation."; 1820 productField += replace; 1821 } 1822 1823 if ( str_productFormat.Equals("APC_F810")) 1824 { 1825 var fireLink = "/dwcountry/fire-dyes"; 1826 replace = "<br />Excessive exposure to light, and commonly used fixation, permeabilization buffers can affect APC/Fire™ 810 fluorescence signal intensity and spread. Please keep conjugates protected from light exposure. For more information and representative data, visit our <a href=\""+@LocalizeLinksHTML(fireLink)+"\">Fire Dyes</a> page."; 1827 productField += replace; 1828 } 1829 1830 if ( str_productFormat.Equals("PE_F810")) 1831 { 1832 var fireLink = "/dwcountry/fire-dyes"; 1833 replace = "<br />Excessive exposure to light, and commonly used fixation, permeabilization buffers can affect PE/Fire™ 810 fluorescence signal intensity and spread. Please keep conjugates protected from light exposure. For more information and representative data, visit our <a href=\""+@LocalizeLinksHTML(fireLink)+"\">Fire Dyes</a> page."; 1834 productField += replace; 1835 } 1836 1837 if ( str_productName.Contains("Brilliant")) 1838 { 1839 var bvLink = "/dwcountry/brilliant-violet"; 1840 replace = "<br /><a href=\""+@LocalizeLinksHTML(bvLink)+"\" title=\"Brilliant Violet&trade;\">Learn more about Brilliant Violet&trade;</a>. <br /><br />This product is subject to proprietary rights of Sirigen Inc. and is made and sold under license from Sirigen Inc. The purchase of this product conveys to the buyer a non-transferable right to use the purchased product for research purposes only. This product may not be resold or incorporated in any manner into another product for resale. Any use for therapeutics or diagnostics is strictly prohibited. This product is covered by U.S. Patent(s), pending patent applications and foreign equivalents."; 1841 productField += replace; 1842 } 1843 1844 if ( str_productName.Contains("TotalSeq")) 1845 { 1846 replace = "<br />Buyer is solely responsible for determining whether Buyer has all intellectual property rights that are necessary for Buyer&apos;s intended uses of the BioLegend TotalSeq&trade; products. For example, for any technology platform Buyer uses with TotalSeq&trade;, it is Buyer&apos;s sole responsibility to determine whether it has all necessary third party intellectual property rights to use that platform and TotalSeq&trade; with that platform."; 1847 productField += replace; 1848 } 1849 1850 @System.Web.HttpUtility.HtmlDecode(productField) 1851 } 1852 1853 @helper AddActivationBundleException(string productField, string productID = "") 1854 { 1855 if(productField.Equals("Usage") && !string.IsNullOrWhiteSpace(productID)) 1856 { 1857 Dictionary<string, string> lstNumbers = new Dictionary<string, string>(); 1858 lstNumbers.Add("24","24"); 1859 lstNumbers.Add("114","114"); 1860 lstNumbers.Add("4526","4526"); 1861 lstNumbers.Add("6479","6479"); 1862 lstNumbers.Add("892","892"); 1863 lstNumbers.Add("7236","7236"); 1864 lstNumbers.Add("5833","5833"); 1865 lstNumbers.Add("996","996"); 1866 lstNumbers.Add("5469","5469"); 1867 lstNumbers.Add("6959","6959"); 1868 1869 if(lstNumbers.ContainsKey(productID)) 1870 { 1871 <text> 1872 <br/> 1873 </text> 1874 @Translate("ActivationBundle","This product is included in our Activation Bundles. <a href=\"/activation_bundles\" title=\"Activation Bundles\">Learn more...</a>") 1875 } 1876 1877 } 1878 } 1879 1880 @helper CalculateFooterDisclaimer(string footerDisclaimer, string regulatoryStatus, string format) 1881 { 1882 1883 var licenceLink = LocalizeLinksHTML("/dwcountry/ordering#license"); 1884 var termsLink = LocalizeLinksHTML("/dwcountry/terms"); 1885 1886 var customFooterDisclaimer = footerDisclaimer + "<p>&nbsp;</p>"; 1887 1888 var ASRDisclaimer = "<p>Analyte Specific Reagent. Analytical and performance characteristics are not established.</p><p>&nbsp;</p><p>This product is supplied subject to the terms and conditions, including the limited license, located at <a href=\"/dwcountry/terms\">www.biolegend.com/terms</a> (\"Terms\") and may be used only as provided in the Terms. Without limiting the foregoing, BioLegend products may not be used for any Commercial Purpose as defined in the Terms, resold in any form, used in manufacturing, or reverse engineered, sequenced, or otherwise studied or used to learn its design or composition without express written approval of BioLegend. Regardless of the information given in this document, user is solely responsible for determining any license requirements necessary for user’s intended use and assumes all risk and liability arising from use of the product. BioLegend is not responsible for patent infringement or any other risks or liabilities whatsoever resulting from the use of its products.</p><p>&nbsp;</p><p>BioLegend, the BioLegend logo, and all other trademarks are property of BioLegend, Inc. or their respective owners, and all rights are reserved.</p><p>&nbsp;</p>"; 1889 1890 var IVDDisclaimer = "<p>For In Vitro Diagnostic Use. Not for therapeutic use.</p><p>&nbsp;</p><p>This product is supplied subject to the terms and conditions, including the limited license, located at <a href=\"/dwcountry/terms\">www.biolegend.com/terms</a> (\"Terms\") and may be used only as provided in the Terms. Without limiting the foregoing, BioLegend products may not be used for any Commercial Purpose as defined in the Terms, resold in any form, used in manufacturing, or reverse engineered, sequenced, or otherwise studied or used to learn its design or composition without express written approval of BioLegend. Regardless of the information given in this document, user is solely responsible for determining any license requirements necessary for user’s intended use and assumes all risk and liability arising from use of the product. BioLegend is not responsible for patent infringement or any other risks or liabilities whatsoever resulting from the use of its products.</p><p>&nbsp;</p><p>BioLegend, the BioLegend logo, and all other trademarks are property of BioLegend, Inc. or their respective owners, and all rights are reserved.</p><p>&nbsp;</p>"; 1891 1892 var GMPRUODisclaimer = "<p>For Research Use Only. Suitable for <em>ex vivo</em> cell processing. Not for injection or diagnostic or therapeutic use. </p><p>&nbsp;</p><p>This product is supplied subject to the terms and conditions, including the limited license, located at <a href=\"/dwcountry/terms\">www.biolegend.com/terms</a> (\"Terms\") and may be used only as provided in the Terms. Without limiting the foregoing, BioLegend products may not be used for any Commercial Purpose as defined in the Terms, resold in any form, used in manufacturing, or reverse engineered, sequenced, or otherwise studied or used to learn its design or composition without express written approval of BioLegend. Regardless of the information given in this document, user is solely responsible for determining any license requirements necessary for user’s intended use and assumes all risk and liability arising from use of the product. BioLegend is not responsible for patent infringement or any other risks or liabilities whatsoever resulting from the use of its products. </p><p>&nbsp;</p><p>BioLegend, the BioLegend logo, and all other trademarks are property of BioLegend, Inc. or their respective owners, and all rights are reserved.</p><p>&nbsp;</p>"; 1893 1894 var RUODisclaimer = "<p>For Research Use Only. Not for diagnostic or therapeutic use.</p><p>&nbsp;</p><p>This product is supplied subject to the terms and conditions, including the limited license, located at <a href=\"/dwcountry/terms\">www.biolegend.com/terms</a>) (\"Terms\") and may be used only as provided in the Terms. Without limiting the foregoing, BioLegend products may not be used for any Commercial Purpose as defined in the Terms, resold in any form, used in manufacturing, or reverse engineered, sequenced, or otherwise studied or used to learn its design or composition without express written approval of BioLegend. Regardless of the information given in this document, user is solely responsible for determining any license requirements necessary for user’s intended use and assumes all risk and liability arising from use of the product. BioLegend is not responsible for patent infringement or any other risks or liabilities whatsoever resulting from the use of its products.</p><p>&nbsp;</p><p>BioLegend, the BioLegend logo, and all other trademarks are property of BioLegend, Inc. or their respective owners, and all rights are reserved.</p><p>&nbsp;</p>"; 1895 1896 if ( !String.IsNullOrEmpty(footerDisclaimer) && footerDisclaimer != "" ) 1897 { 1898 @customFooterDisclaimer 1899 } 1900 else if( regulatoryStatus.Equals("ASR") ) 1901 { 1902 @LocalizeLinksHTML(ASRDisclaimer) 1903 } 1904 else if( regulatoryStatus.Equals("IVD") ){ 1905 @LocalizeLinksHTML(IVDDisclaimer) 1906 } 1907 else if ( regulatoryStatus.Equals("GMP-RUO") ) 1908 { 1909 @LocalizeLinksHTML(GMPRUODisclaimer) 1910 } 1911 else{ 1912 @LocalizeLinksHTML(RUODisclaimer) 1913 } 1914 } 1915 1916 @helper CalculateCloneString(string clone, string otherFormats, bool asrCheck, string searchID, bool isPdf = false) 1917 { 1918 if (!string.IsNullOrEmpty(clone)) 1919 { 1920 <text> 1921 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 1922 @GetString("Ecom:Product:Field.Clone.Name") 1923 </dt> 1924 </text> 1925 if (asrCheck) 1926 { 1927 <dd>@clone</dd> 1928 } 1929 else 1930 { 1931 if (clone.Contains(";")) 1932 { 1933 if (isPdf) 1934 { 1935 <dd>@clone</dd> 1936 } 1937 else{ 1938 string[] clones = (clone).Replace(" ", "").Split(';'); 1939 <dd> 1940 @foreach (var x in clones) 1941 { 1942 string cloneHTML = System.Web.HttpUtility.HtmlDecode(x); 1943 string cloneTag = "; "; 1944 if (!isPdf) 1945 { 1946 <a href="/Default.aspx?ID=@searchID&amp;Clone=@cloneHTML">@x</a>@cloneTag 1947 } 1948 1949 } 1950 </dd> 1951 } 1952 } 1953 else 1954 { 1955 if (isPdf) 1956 { 1957 <dd>@clone</dd> 1958 } 1959 else 1960 { 1961 <dd><a href="/Default.aspx?ID=@searchID&amp;Clone=@(System.Web.HttpUtility.HtmlDecode(clone))">@clone</a> (<a href="@otherFormats">@Translate("SeeOtherAvailableFormats", "See other available formats")</a>)</dd> 1962 } 1963 } 1964 } 1965 } 1966 } 1967 1968 @helper AddShelfLifeException(string productField, string productID = "") 1969 { 1970 if(productField.Equals("Storage") && !string.IsNullOrWhiteSpace(productID)) 1971 { 1972 Dictionary<string, string> lstNumbersUse = new Dictionary<string, string>(); 1973 lstNumbersUse.Add("1395","1395"); 1974 lstNumbersUse.Add("1396","1396"); 1975 lstNumbersUse.Add("1474","1474"); 1976 lstNumbersUse.Add("2264","2264"); 1977 lstNumbersUse.Add("2507","2507"); 1978 1979 Dictionary<string, string> lstNumbers = new Dictionary<string, string>(); 1980 lstNumbers.Add("2508","2508"); 1981 lstNumbers.Add("2915","2915"); 1982 lstNumbers.Add("2939","2939"); 1983 lstNumbers.Add("2988","2988"); 1984 lstNumbers.Add("2989","2989"); 1985 lstNumbers.Add("3071","3071"); 1986 lstNumbers.Add("3177","3177"); 1987 lstNumbers.Add("3180","3180"); 1988 lstNumbers.Add("3194","3194"); 1989 lstNumbers.Add("3195","3195"); 1990 lstNumbers.Add("3843","3843"); 1991 lstNumbers.Add("4347","4347"); 1992 lstNumbers.Add("4664","4664"); 1993 lstNumbers.Add("5654","5654"); 1994 lstNumbers.Add("5660","5660"); 1995 lstNumbers.Add("6373","6373"); 1996 lstNumbers.Add("6398","6398"); 1997 lstNumbers.Add("6646","6646"); 1998 lstNumbers.Add("8053","8053"); 1999 lstNumbers.Add("8135","8135"); 2000 lstNumbers.Add("9539","9539"); 2001 2002 if(lstNumbersUse.ContainsKey(productID)) 2003 { 2004 <text> 2005 <br/> 2006 <br/> 2007 </text> 2008 @Translate("LookUpConcentrationLookUpStorage","This product has a shelf-life of 12 months or less. Please use our <a href=\"/concentrationlookup\" target=\"_blank\">Expiration Lookup Tool</a> to verify the expiration date of your lot of product") 2009 }else if(lstNumbers.ContainsKey(productID)) 2010 { 2011 <text> 2012 <br/> 2013 <br/> 2014 </text> 2015 @Translate("LookUpConcentrationLookUpStorageContact","This product has a shelf-life of 12 months or less. Please contact our <a href=\"/contact_technical_service\" target=\"_blank\">technical support</a> team for lot specific CoA and expiration date inquiries of this product.") 2016 } 2017 2018 } 2019 } 2020 2021 @helper RenderTDS(bool htmlStructType, string dataSheetFile, string dataSheet, string printPage, string productType = "", string productID = "", string productName = "", string regulatoryStatus = "", string techSupportPage = "", string translateTechnicalSupport = "", string appAbbreviation = "", string pdfUrl = "", string productUpdated = "") 2022 { 2023 TDS techinicalDataSheet = new TDS(dataSheetFile, dataSheet, printPage, productType, productID, productName, regulatoryStatus, techSupportPage, translateTechnicalSupport, Translate("ViewCurrentManual", "View Current Manual (pdf)"), Translate("InstructionsForUseA", "Instructions for Use - English (PDF)"), Translate("TechnicalDataSheet", "Technical Data Sheet (pdf)"), Translate("InstrumentSoftwareManual", "Instrument and Software Manual"), appAbbreviation, pdfUrl); 2024 2025 var cdnPdfDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("DynamicallyCreated_PDFFiles", "DynamicallyCreated_PDF_Files_Domain"); //CUSTOM CODE 2026 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); // CUSTOM CODE 2027 var pdfCdn = techinicalDataSheet.link.EndsWith(".pdf") ? cdnStaticDomain : cdnPdfDomain; 2028 var version = (techinicalDataSheet.link.Contains("?") ? "&v=" : "?v=") + productUpdated; 2029 2030 if (htmlStructType) 2031 { 2032 // Is for the product link 2033 <a @techinicalDataSheet.target data-regulatory="@regulatoryStatus" data-datasheet="@dataSheet" data-datasheetFile="@dataSheetFile" href="@pdfCdn@techinicalDataSheet.link@version" class="btn btn-default techincalDataSheet"> 2034 <i class="fa fa-file-pdf-o"></i> @techinicalDataSheet.text 2035 </a> 2036 } 2037 else 2038 { 2039 // Is for the product navigation 2040 <a @techinicalDataSheet.target data-regulatory="@regulatoryStatus" data-datasheet="@dataSheet" data-datasheetFile="@dataSheetFile" href="@pdfCdn@techinicalDataSheet.link@version"> 2041 <i class="fa fa-file-pdf-o"></i>@techinicalDataSheet.text 2042 </a> 2043 } 2044 } 2045 2046 2047 2048 @helper RenderTDSForPreview(bool htmlStructType, string dataSheetFile, string dataSheet, string productID = "", string productName = "", string regulatoryStatus = "", string pdfUrl = "", string productUpdated = "") 2049 { 2050 previewTDS techinicalDataSheet = new previewTDS(productID, productName, Translate("TechnicalDataSheet", "Technical Data Sheet (pdf)"), pdfUrl); 2051 2052 //NOTE - Customer requested for Cdn not to be applied here 2053 var version = (techinicalDataSheet.link.Contains("?") ? "&v=" : "?v=") + productUpdated; 2054 2055 if (htmlStructType) 2056 { 2057 // Is for the product link 2058 <a target="_blank" data-regulatory="@regulatoryStatus" data-datasheet="@dataSheet" data-datasheetFile="@dataSheetFile" href="@techinicalDataSheet.link@version" class="btn btn-default techincalDataSheet"> 2059 <i class="fa fa-file-pdf-o"></i> @techinicalDataSheet.text 2060 </a> 2061 } 2062 else 2063 { 2064 // Is for the product navigation 2065 <a target="_blank" data-regulatory="@regulatoryStatus" data-datasheet="@dataSheet" data-datasheetFile="@dataSheetFile" href="@techinicalDataSheet.link@version"> 2066 <i class="fa fa-file-pdf-o"></i>@techinicalDataSheet.text 2067 </a> 2068 } 2069 } 2070 2071 @helper RenderInternationalGMPQualityStatement(string country = "", string regStatus = "", string format = "") 2072 { 2073 bool b = false; 2074 if ( format.Equals("GMP_APC") || format.Equals("GMP_APC_F750") || format.Equals("GMP_FITC") || format.Equals("GMP_PB") || format.Equals("GMP_PE") || format.Equals("GMP_PE_CYANINE5") || format.Equals("GMP_PE_CYANINE7") || format.Equals("GMP_PE_DZL594") || format.Equals("GMP_PERCP") || format.Equals("GMP_PERCP_CYANINE5.5") || format.Equals("GMP_A488") || format.Equals("GMP_A647") || format.Equals("GMP_A700") || format.Equals("GMP_APC_CYANINE7") || format.Equals("GMP_SPKVL_423") || format.Equals("GMP_SPKVL_538") ){ 2075 b = true; 2076 } 2077 if(!country.Equals("en-US") && !country.Equals("ja-JP") && regStatus.Equals("GMP-RUO") && b){ 2078 <div class="introDescription col-xs-12 noPaddingLeft"> 2079 <span class="title">Quality Statement</span> 2080 This BioLegend’s GMP-RUO reagent is a fluorochrome-labeled monoclonal antibody single reagent for Research Use Only. Suitable for use in laboratory-developed multicolor flow cytometry tests. Single GMP-RUO products can be used in various multicolor flow cytometry combinations. Laboratory need to establish the GMP-RUO performance characteristics in combination with other reagents in normal and pathological samples. 2081 </div> 2082 } 2083 2084 2085 } 2086 2087 @functions { 2088 2089 public static string StripSpecialCharacters(string input) 2090 { 2091 return System.Text.RegularExpressions.Regex.Replace(input, "[^0-9a-zA-Z -]+", ""); 2092 } 2093 2094 public class TDS 2095 { 2096 public TDS() 2097 { 2098 2099 } 2100 2101 public string link { get; set; } 2102 public string text { get; set; } 2103 public string target { get; set; } 2104 2105 public TDS(string dataSheetFile, string dataSheet, string printPage, string productType = "", string productID = "", string productName = "", string regulatoryStatus = "", string techSupportPage = "", string translateTechnicalSupport = "", string viewCurrentManual = "", string instructionsForUse = "", string technicalDataSheet = "", string instrumentSoftwareManual = "", string appAbbreviation = "", string pdfUrl = "") 2106 { 2107 var linkPrint = pdfUrl + "&ProductID=" + productID + "&leftRightMargin=15&topBottomMargin=15&filename=" + productName + ".pdf"; 2108 var translate = ""; 2109 var block = ""; 2110 var urlTarget = "target=\"_blank\""; 2111 2112 var p = Dynamicweb.Ecommerce.Services.Products.GetProductById(productID, "", true); 2113 2114 if (!string.IsNullOrWhiteSpace(dataSheet) && !dataSheet.Equals("Standard") && !dataSheet.Equals("Recombinant")) 2115 { 2116 linkPrint = dataSheetFile; 2117 block = "1"; 2118 } 2119 2120 if (productType.Equals("ELISA") || productID.Equals("10801")) 2121 { 2122 linkPrint = dataSheetFile; 2123 block = "2"; 2124 } 2125 2126 if (productType.Equals("LEGENDplex") && !productName.Contains("Buffer") && !productName.Contains("Carboxyl") && !productName.Contains("SA-PE") && !productID.Equals("12677") && !productID.Equals("12678") && appAbbreviation.Contains("Multiplex - Panel")) 2127 { 2128 linkPrint = dataSheetFile; 2129 translate = viewCurrentManual; 2130 block = "3"; 2131 } 2132 else if (regulatoryStatus.Equals("IVD")) 2133 { 2134 if (dataSheet.Equals("Standard") || dataSheet.Equals("Recombinant") || (dataSheet.Equals("Custom") && string.IsNullOrWhiteSpace(dataSheetFile)) || string.IsNullOrWhiteSpace(dataSheet)) 2135 { 2136 linkPrint = string.Format("javascript:confirmRedirection('{0}','{1}')", HttpUtility.JavaScriptStringEncode(translateTechnicalSupport), techSupportPage); 2137 urlTarget = string.Empty; 2138 block = "4"; 2139 } 2140 else 2141 { 2142 linkPrint = dataSheetFile; 2143 block = "5"; 2144 } 2145 2146 translate = instructionsForUse; 2147 block = "6"; 2148 } 2149 //ASR PDF Datasheet Override 2150 else if (regulatoryStatus.Equals("ASR")) 2151 { 2152 if (dataSheet.Equals("Standard") || dataSheet.Equals("Recombinant") || (dataSheet.Equals("Custom") && string.IsNullOrWhiteSpace(dataSheetFile)) || string.IsNullOrWhiteSpace(dataSheet)) 2153 { 2154 linkPrint = string.Format("javascript:confirmRedirection('{0}','{1}')", HttpUtility.JavaScriptStringEncode(translateTechnicalSupport), techSupportPage); 2155 urlTarget = string.Empty; 2156 block = "7"; 2157 } 2158 else 2159 { 2160 linkPrint = dataSheetFile; 2161 block = "8"; 2162 } 2163 2164 translate = technicalDataSheet; 2165 block = "9"; 2166 } 2167 else if (!string.IsNullOrWhiteSpace(dataSheetFile)) 2168 { 2169 linkPrint = dataSheetFile; 2170 translate = technicalDataSheet; 2171 block = "10"; 2172 } 2173 else 2174 { 2175 linkPrint = pdfUrl + "&ProductID=" + productID + "&leftRightMargin=15&topBottomMargin=15&filename=" + productName + ".pdf"; 2176 translate = technicalDataSheet; 2177 block = "11"; 2178 } 2179 2180 link = linkPrint; 2181 text = translate; 2182 target = urlTarget; 2183 } 2184 } 2185 2186 public class previewTDS 2187 { 2188 public previewTDS() 2189 { 2190 2191 } 2192 2193 public string link { get; set; } 2194 public string text { get; set; } 2195 2196 public previewTDS(string productID = "", string productName = "", string technicalDataSheet = "", string pdfUrl = "") 2197 { 2198 var linkPrint = pdfUrl + "&ProductID=" + productID + "&leftRightMargin=15&topBottomMargin=15&filename=" + productName + ".pdf"; 2199 var translate = technicalDataSheet; 2200 2201 link = linkPrint; 2202 text = translate; 2203 } 2204 } 2205 2206 } 2207 2208 @functions{ 2209 public static string GetImage(string str_source, int num_width, int num_height, int num_widthTablet = 0, int num_heightTablet = 0, int num_widthMobile = 0, int num_heightMobile = 0, string str_format = "jpg", int num_compression = 75, int num_crop = 5) 2210 { 2211 Dynamicweb.Frontend.PageView obj_currentPageview = Dynamicweb.Frontend.PageView.Current(); 2212 string str_currDevice = obj_currentPageview.Device.ToString(); 2213 string str_alternativeImage = obj_currentPageview.Area.Item["NoImage"] != null ? obj_currentPageview.Area.Item["NoImage"].ToString() : "/Files/Templates/Designs/Lorenz/images/alternativeImage.jpg"; 2214 2215 string str_width = ""; 2216 string str_height = ""; 2217 int num_getImageWidth = num_width != 0 ? num_width : 0; 2218 int num_getImageHeight = num_height != 0 ? num_height : 0; 2219 string str_getImageFormat = str_format != "jpg" ? "&amp;Format=" + str_format : ""; 2220 string str_getImageCompression = num_compression != 75 ? "&amp;Compression=" + num_compression : ""; 2221 2222 var cdnImageHandleDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Image_Handler", "Image_Handler_Domain"); //CUSTOM CODE 2223 2224 if (str_currDevice == Dynamicweb.Frontend.Devices.DeviceType.Tablet.ToString()) 2225 { 2226 num_getImageWidth = num_widthTablet != 0 ? num_widthTablet : num_getImageWidth; 2227 num_getImageHeight = num_heightTablet != 0 ? num_heightTablet : num_getImageHeight; 2228 } 2229 else if (str_currDevice == Dynamicweb.Frontend.Devices.DeviceType.Mobile.ToString()) 2230 { 2231 num_getImageWidth = num_widthMobile != 0 ? num_widthMobile : num_getImageWidth; 2232 num_getImageHeight = num_heightMobile != 0 ? num_heightMobile : num_getImageHeight; 2233 } 2234 2235 if (num_getImageWidth != 0) 2236 { 2237 str_width = "&amp;Width=" + num_getImageWidth; 2238 } 2239 if (num_getImageHeight != 0) 2240 { 2241 str_height = "&amp;Height=" + num_getImageHeight; 2242 } 2243 2244 string str_output = cdnImageHandleDomain + "/Admin/Public/GetImage.ashx?Image=" + str_source + str_width + str_height + "&amp;altFmImage_path=" + str_alternativeImage + str_getImageFormat + str_getImageCompression + "&amp;Crop=" + num_crop; 2245 return str_output; 2246 } 2247 } 2248 2249 var itemArea = Pageview.Area.Item; 2250 var googleTagManagerId = itemArea["TagManager"]?.ToString(); 2251 2252 //START CUSTOM CODE 2253 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); 2254 var cdnJsCssDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("CSS_JS", "CSS_JS_Domain"); 2255 //END CUSTOM CODE 2256 2257 var productStatus = GetInteger("Ecom:Product:Field.ProductStatus.Value.Clean"); 2258 var cdnPdfDomain = itemArea["CdnPdfsDomain"]?.ToString(); 2259 2260 // Variant loops 2261 var loop_variantCombinations = !isDetailPage ? GetLoop("VariantCombinations") : GetLoop("VariantCombinations").Where(x => x.GetBoolean("Ecom:Product.IsActive")); 2262 var loop_variantsWithDCSoon = loop_variantCombinations.Where(x => x.GetInteger("Ecom:Product:Field.ProductStatus.Value.Clean").Equals(4)); 2263 var loop_variantsWithDC = loop_variantCombinations.Where(x => x.GetInteger("Ecom:Product:Field.ProductStatus.Value.Clean").Equals(1)); 2264 2265 var productDiscontinuedText = (itemArea["ProductDiscontinued"] ?? "").ToString(); 2266 2267 if(isDetailPage && loop_variantCombinations.Count() == loop_variantsWithDC.Count()) 2268 { 2269 var dcTextProductField = LocalizeLinksHTML(GetString("Ecom:Product:Field.DiscontinuedText")); 2270 2271 <span class="productDiscontinuedSoon col-xs-12 noPadding"> 2272 @(!string.IsNullOrEmpty(dcTextProductField) ? dcTextProductField : productDiscontinuedText) 2273 </span> 2274 } 2275 else 2276 { 2277 @* page item values *@ 2278 var repositoryPageID = itemArea["RepositoryPageId"] != null ? Convert.ToInt32(itemArea["RepositoryPageId"].ToString()) : 0; 2279 var addToCartFormAction = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + (itemArea["AddToCart"] ?? Pageview.Page.ID).ToString()); 2280 var searchPageID = itemArea["SearchResults"].ToString(); 2281 var formRequestConjugation = itemArea["FormRequestConjugation"].ToString(); 2282 var printPage = itemArea["PrintPage"].ToString(); 2283 var coaPage = itemArea["CertificateAnalysisPage"].ToString(); 2284 var techSupportPageID = itemArea["FormTechSupport"].ToString(); 2285 var productListJson = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(itemArea["ProductListJson"].ToString()); 2286 string pubLibraryURL = LocalizeLinksHTML("/dwcountry/publications-library"); 2287 string reviewsSubmissionFormURL = LocalizeLinksHTML("/dwcountry/reviews-submission-form"); 2288 string requestBulk = LocalizeLinksHTML("/dwcountry/bulk-request"); 2289 string legendplexURL = LocalizeLinksHTML("/dwcountry/legendplex"); 2290 string localrepURL = LocalizeLinksHTML("/dwcountry/contact-local-rep"); 2291 string contactTechLink = LocalizeLinksHTML("/dwcountry/contact-technical-service"); 2292 string mixmatchURL = LocalizeLinksHTML("/dwcountry/legendplex?tab=mixandmatch"); 2293 string softwareURL = LocalizeLinksHTML("/dwcountry/legendplex?tab=software"); 2294 var cartDisabled = Convert.ToBoolean(itemArea["DisableAddToCart"].ToString()); 2295 var orderContext = itemArea["OrderContext"] != null ? itemArea["OrderContext"].ToString() : ""; 2296 var navEnvironment = itemArea["NavEnvironment"] != null ? itemArea["NavEnvironment"].ToString() : ""; 2297 var userAvailableStartMsg = Translate("userAvailableStartMsg", "The entered quantity of"); 2298 var userOrdersMoreThanAvailable = Translate("userOrdersMoreThanAvailable", "is unavailable. Replenishment is currently underway. You will be notified by BioLegend&apos;s Customer Service of the ETA if we are unable to deliver the full quantity."); 2299 var userOrdersLessThanAvailable = Translate("userOrdersLessThanAvailable", "is available and will be scheduled for shipment ASAP."); 2300 2301 @* Http Request params *@ 2302 2303 @* Page and user info *@ 2304 var str_currentPageId = Pageview.Page.ID.ToString(); 2305 2306 var siteCurrency = Dynamicweb.Frontend.PageView.Current().Area.EcomCurrencyId; 2307 var userCurrency = bol_userLogged ? Dynamicweb.Security.UserManagement.User.GetCurrentUser().Currency : siteCurrency; 2308 2309 var RRIDLists = new Dictionary<string,string>(); 2310 2311 @* Standard product info *@ 2312 var str_variantDefaultId = GetString("Ecom:Product.DefaultVariantComboID"); 2313 var str_variantCurrentId = GetString("Ecom:Product.VariantID"); 2314 var str_variantId = (!String.IsNullOrEmpty(str_variantCurrentId)) ? str_variantCurrentId : str_variantDefaultId; 2315 var str_productName = GetString("Ecom:Product.Name"); 2316 var str_productDescription = GetString("Ecom:Product.LongDescription"); 2317 var str_productOtherNames = GetString("Ecom:Product:Field.OtherNames.Value"); 2318 var str_productDataSheet = GetString("Ecom:Product:Field.Datasheet.Value.Clean"); 2319 var str_productDataSheetFile = GetString("Ecom:Product:Field.DatasheetFile.Clean"); 2320 var str_productMSDSType = GetString("Ecom:Product:Field.MSDSType.Value"); 2321 var str_productMSDSCFile = GetString("Ecom:Product:Field.MSDSFile.Clean"); 2322 var str_productMSDSOptions = GetString("Ecom:Product:Field.MSDSOptions.Value"); 2323 var str_productImage = GetString("Ecom:Product.ImageSmall.Clean"); 2324 var str_productImageMedium = GetString("Ecom:Product.ImageMedium.Clean"); 2325 var str_productImageLarge = GetString("Ecom:Product.ImageLarge.Clean"); 2326 var str_productImage4 = GetString("Ecom:Product:Field.Image4Path.Clean").Replace("/Files/Images/Images/","/Files/Images/"); 2327 var str_image1Description = GetString("Ecom:Product:Field.Image1Description.Value"); 2328 var str_image2Description = GetString("Ecom:Product:Field.Image2Description.Value"); 2329 var str_image3Description = GetString("Ecom:Product:Field.Image3Description.Value"); 2330 var str_image4Description = GetString("Ecom:Product:Field.Image4Description.Value"); 2331 var str_image1Title = GetString("Ecom:Product:Field.Image1Title.Value"); 2332 var str_image2Title = GetString("Ecom:Product:Field.Image2Title.Value"); 2333 var str_image3Title = GetString("Ecom:Product:Field.Image3Title.Value"); 2334 var str_image4Title = GetString("Ecom:Product:Field.Image4Title.Value"); 2335 var str_Image1EnableZoom = GetString("Ecom:Product:Field.Image1EnableZoom.Value.Clean"); 2336 var str_Image2EnableZoom = GetString("Ecom:Product:Field.Image2EnableZoom.Value.Clean"); 2337 var str_Image3EnableZoom = GetString("Ecom:Product:Field.Image3EnableZoom.Value.Clean"); 2338 var str_Image4EnableZoom = GetString("Ecom:Product:Field.Image4EnableZoom.Value.Clean"); 2339 var str_Image5EnableZoom = GetString("Ecom:Product:Field.Image5EnableZoom.Value.Clean"); 2340 var str_Image6EnableZoom = GetString("Ecom:Product:Field.Image6EnableZoom.Value.Clean"); 2341 var lst_images = new List<Tuple<string,string,string, string>>(); 2342 2343 var str_productImage5 = GetString("Ecom:Product:Field.Image5Path.Clean").Replace("/Files/Images/Images/","/Files/Images/"); 2344 var str_image5Description = GetString("Ecom:Product:Field.Image5Description.Value"); 2345 var str_image5Title = GetString("Ecom:Product:Field.Image5Title.Value"); 2346 2347 var str_productImage6 = GetString("Ecom:Product:Field.Image6Path.Clean").Replace("/Files/Images/Images/","/Files/Images/"); 2348 var str_image6Description = GetString("Ecom:Product:Field.Image6Description.Value"); 2349 var str_image6Title = GetString("Ecom:Product:Field.Image6Title.Value"); 2350 2351 var str_starClass = ""; 2352 var str_halfStar = ""; 2353 2354 var productUpdated = GetDate("Ecom:Product.Updated").ToString("yyyyMMddhhmmss"); //CUSTOM CODE 2355 2356 @* Product Custom Fields *@ 2357 var productType = GetString("Ecom:Product:Field.CMProductType.Value"); 2358 var productSpecificity = GetString("Ecom:Product:Field.Specificity.Value"); 2359 var productSpecificityAlt = GetString("Ecom:Product:Field.SpecificityAlt.Value"); 2360 var str_productFormat = GetString("Ecom:Product:Field.Format.Value"); 2361 var str_productLaser = GetString("Ecom:Product:Field.ExcitationLaser.Value"); 2362 var str_productRegulatoryStatus = GetString("Ecom:Product:Field.RegulatoryStatus.Value"); 2363 var str_productAppAbrv = GetString("Ecom:Product:Field.AppAbrv.Value"); 2364 var str_moreDataTitle = GetString("Ecom:Product:Field.MoreDataTitle.Value"); 2365 var str_moreData = GetString("Ecom:Product:Field.MoreData.Clean"); 2366 var geneList = GetString("Ecom:Product:Field.GeneID.Value").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); 2367 var str_biologyArea = GetString("Ecom:Product:Field.BiologyArea.Value"); 2368 var str_molecularFamily = GetString("Ecom:Product:Field.MolecularFamily.Value"); 2369 var str_cellType = GetString("Ecom:Product:Field.CellType.Value"); 2370 var productFieldType = ""; 2371 var longLang = (string)GetGlobalValue("Global:Area.LongLang"); 2372 var versionDate = GetDate("Ecom:Product:Field.VersionDate.Value.Clean"); 2373 var dateTimeVersionDate = DateTime.Now; 2374 var productIsUg = ""; 2375 var productIsUl = ""; 2376 var str_promoText = LocalizeLinksHTML(GetString("Ecom:Product:Field.PromoText.Value")); 2377 var requestQuote = GetBoolean("Ecom:Product:Field.RequestQuote"); 2378 var notifyMe = GetString("Ecom:Product:Field.NotifyMe.Value"); 2379 var str_ProductNameNormalized = GetString("Ecom:Product:Field.ProductNameNormalized.Value"); 2380 var str_TotalseqSequence = GetString("Ecom:Product:Field.TotalseqSequence.Value"); 2381 var str_IsotypeForFilter = GetString("Ecom:Product:Field.IsotypeFilter.Value"); 2382 var str_footerDisclaimer = GetString("Ecom:Product:Field.FooterDisclaimer.Value"); 2383 var str_qualityStatement = GetString("Ecom:Product:Field.QualityStatement.Value"); 2384 var str_productIFUFrenchFile = GetString("Ecom:Product:Field.IFU_French.Clean"); 2385 var str_productIFUGermanFile = GetString("Ecom:Product:Field.IFU_German.Clean"); 2386 var str_productIFUItalianFile = GetString("Ecom:Product:Field.IFU_Italian.Clean"); 2387 var str_productIFUPortugueseFile = GetString("Ecom:Product:Field.IFU_Portuguese.Clean"); 2388 var str_productIFUSpanishFile = GetString("Ecom:Product:Field.IFU_Spanish.Clean"); 2389 2390 if(versionDate != null) 2391 { 2392 dateTimeVersionDate = versionDate; 2393 } 2394 2395 @* Product Loops *@ 2396 var loopComments = GetLoop("Comments.Newfirst"); 2397 2398 if(!String.IsNullOrEmpty(str_productImage)) { lst_images.Add(new Tuple<string, string, string, string>(str_productImage,str_image1Title,str_image1Description,str_Image1EnableZoom)); } 2399 if(!String.IsNullOrEmpty(str_productImageMedium)) { lst_images.Add(new Tuple<string, string, string, string>(str_productImageMedium,str_image2Title,str_image2Description,str_Image2EnableZoom)); } 2400 if(!String.IsNullOrEmpty(str_productImageLarge)) { lst_images.Add(new Tuple<string, string, string, string>(str_productImageLarge,str_image3Title,str_image3Description,str_Image3EnableZoom)); } 2401 if(!String.IsNullOrEmpty(str_productImage4)) { lst_images.Add(new Tuple<string, string ,string, string>(str_productImage4,str_image4Title,str_image4Description,str_Image4EnableZoom)); } 2402 if(!String.IsNullOrEmpty(str_productImage5)) { lst_images.Add(new Tuple<string, string ,string, string>(str_productImage5,str_image5Title,str_image5Description,str_Image5EnableZoom)); } 2403 if(!String.IsNullOrEmpty(str_productImage6)) { lst_images.Add(new Tuple<string, string ,string, string>(str_productImage6,str_image6Title,str_image6Description,str_Image6EnableZoom)); } 2404 2405 var productTypes = new Dictionary<string, string>(); 2406 productTypes.Add("AncillaryProducts", "Ancillary"); 2407 productTypes.Add("BuffersSolutionsChemicals", "Ancillary"); 2408 productTypes.Add("CellBiologyAntibodies", "PrimaryAntibodies"); 2409 productTypes.Add("CellSeparation", "MojoSort"); 2410 productTypes.Add("CytokineChemokineAntibodies", "PrimaryAntibodies"); 2411 productTypes.Add("ELISAMAXLEGENDMAX", "ELISA"); 2412 productTypes.Add("EpitopeTagProducts", "PrimaryAntibodies"); 2413 productTypes.Add("HumanImmunologyAntibodies", "PrimaryAntibodies"); 2414 productTypes.Add("IsotypeControls", "IsotypeControls"); 2415 productTypes.Add("LEGENDplex", "LEGENDplex"); 2416 productTypes.Add("LEGENDScreen", "LEGENDScreen"); 2417 productTypes.Add("MarmosetImmunologyAntibodies", "PrimaryAntibodies"); 2418 productTypes.Add("MouseImmunologyAntibodies", "PrimaryAntibodies"); 2419 productTypes.Add("NeuroscienceProducts", "PrimaryAntibodies"); 2420 productTypes.Add("RatImmunologyAntibodies", "PrimaryAntibodies"); 2421 productTypes.Add("RecombinantProteins", "Recombinant"); 2422 productTypes.Add("SecondaryReagents", "SecondaryReagents"); 2423 productTypes.Add("VirusImmunologyAntibodies", "PrimaryAntibodies"); 2424 productTypes.Add("EnzymeAssays", "EnzymeAssays"); 2425 productTypes.Add("FlexT", "FlexT"); 2426 productTypes.Add("NonAntibodyChemicalProbes", "NonAntibodyChemicalProbes"); 2427 productTypes.Add("CellFunction", "CellFunction"); 2428 productTypes.Add("PorcineImmunologyAntibodies", "PrimaryAntibodies"); 2429 productTypes.Add("FlexiFluor", "PrimaryAntibodies"); 2430 2431 if (productTypes.ContainsKey(productType)) 2432 { 2433 productFieldType = productTypes[productType]; 2434 } 2435 2436 @* TODO - Try to get the subgrous from the parent group *@ 2437 var notShowCategories = new List<string>(); 2438 notShowCategories.Add("GROUP20"); 2439 notShowCategories.Add("GROUP21"); 2440 notShowCategories.Add("GROUP22"); 2441 notShowCategories.Add("GROUP23"); 2442 notShowCategories.Add("GROUP24"); 2443 notShowCategories.Add("GROUP25"); 2444 notShowCategories.Add("GROUP26"); 2445 notShowCategories.Add("GROUP27"); 2446 notShowCategories.Add("GROUP28"); 2447 notShowCategories.Add("GROUP29"); 2448 notShowCategories.Add("GROUP30"); 2449 notShowCategories.Add("GROUP31"); 2450 notShowCategories.Add("GROUP32"); 2451 notShowCategories.Add("GROUP33"); 2452 notShowCategories.Add("GROUP34"); 2453 notShowCategories.Add("GROUP35"); 2454 notShowCategories.Add("GROUP36"); 2455 notShowCategories.Add("GROUP37"); 2456 2457 @functions { 2458 public string CalculateProductName(string prodName, string prodType, string prodFormat, bool excludeAntibody) 2459 { 2460 string cleanName = prodName; 2461 if(prodType.Equals("PrimaryAntibodies") && !prodName.Contains(" Antibody") && !prodName.Contains("Buffer") && !prodName.Contains("Annexin") && !prodName.Contains("Solution") && !prodName.Contains("Diluent") && !prodName.Contains("Substrate Reagent") && !prodName.Contains("ecombinant") && !prodName.Contains("Panel") && !prodName.Contains("Elisa Max") && !prodName.Contains("Cocktail") && !prodName.Contains("Isotype Control") && !prodName.Contains("Avidin") && !prodName.Contains("Normal Serum Block") && !prodName.Contains("Detection Kit") && !prodName.Contains("Affinity") && !prodName.Contains("ELISA Kit") && !prodName.Contains("Phase-Flow") && !prodName.Contains("Treg Flow") && !prodFormat.Equals("Peptide") && (!excludeAntibody)){ 2462 cleanName += " Antibody"; 2463 } 2464 2465 if(prodType.Equals("SecondaryReagents") && !prodName.Contains(" Antibody") && !prodName.Contains("Streptavidin") && !prodName.Contains("Avidin") && (!excludeAntibody)){ 2466 cleanName += " Antibody"; 2467 } 2468 2469 if(prodType.Equals("IsotypeControls") && !prodName.Contains(" Antibody") && !prodName.Contains("Lineage Cocktail") && (!excludeAntibody)){ 2470 cleanName += " Antibody"; 2471 } 2472 2473 return cleanName; 2474 } 2475 } 2476 str_productName = str_ProductNameNormalized; 2477 2478 var productCatalogNumbers = loop_variantCombinations.Where(x => !string.IsNullOrWhiteSpace(x.GetString("Ecom:Product.Number"))).Select(x => x.GetString("Ecom:Product.Number")); 2479 var catalogFirstLetter = "0"; 2480 var catalogSecondLetter = "0"; 2481 var catalogThirdLetter = "0"; 2482 var str_workshop = GetString("Ecom:Product.CategoryField." + productFieldType + ".Workshop.Value.Clean"); 2483 2484 if(productCatalogNumbers.Any()) 2485 { 2486 foreach(var xx in productCatalogNumbers) 2487 { 2488 catalogFirstLetter = xx.ToCharArray()[0].ToString(); 2489 catalogSecondLetter = xx.ToCharArray()[1].ToString(); 2490 catalogThirdLetter = xx.ToCharArray()[2].ToString(); 2491 } 2492 } 2493 2494 var catalogFirstTwoNumbers = catalogFirstLetter + catalogSecondLetter; 2495 var catalogFirstThreeNumbers = catalogFirstTwoNumbers + catalogThirdLetter; 2496 2497 @* ********************************* Get Previous Company info ********************************* *@ 2498 var previousCompany = new Dictionary<string,string>(); 2499 var previouslyConcatName = ""; 2500 2501 var catalogOldField = Regex.Split(GetString("Ecom:Product:Field.CatalogOld.Value.Clean"), "\r\n|\r|\n"); 2502 2503 foreach (var line in catalogOldField) 2504 { 2505 var lineSplit = line.Split('|'); 2506 2507 if(lineSplit.Count() == 2 ){ 2508 if(lineSplit[0] == "Covance") 2509 { 2510 previouslyConcatName = String.Format("{0} {1}", Translate("previouslyCovanceCatalog","Previously Covance catalog#"), lineSplit[1]); 2511 } 2512 previousCompany.Add(lineSplit[1],lineSplit[0]); 2513 } 2514 } 2515 2516 @* ********************************* Variant encoding ********************************* *@ 2517 var variantTypes = new Dictionary<string, string>(); 2518 variantTypes.Add("microg", " &micro;g"); 2519 variantTypes.Add("mug", " &mu;g"); 2520 variantTypes.Add("mul", " &mu;l"); 2521 variantTypes.Add("microl", " &micro;l"); 2522 variantTypes.Add("ug", " &mmicro;g"); 2523 2524 var readerPathwaysCount = 0; 2525 var countRelatedPages = 0; 2526 2527 var isMixMatch = (str_productName.Contains("Capture Bead") || (str_productName.Contains("LEGENDplex") && (str_productName.Contains("Standard") || str_productName.Contains("Detection Antibodies") || str_productName.Contains("Detection Abs") || str_productName.Contains("Buffer Set")))); 2528 var isLPPanel = ( !isMixMatch && str_productName.Contains("LEGENDplex") && str_productName.Contains("Panel") ); 2529 var isCustomFlexT = (str_productName.Contains("Flex-T") && str_productName.Contains("Custom")); 2530 var isASR = str_productRegulatoryStatus.Equals("ASR"); 2531 var isIVD = str_productRegulatoryStatus.Equals("IVD"); 2532 var isGMPRUO = str_productRegulatoryStatus.Equals("GMP-RUO"); 2533 var isGMPRUOException = ( str_productFormat.Equals("GMP_RECOM") || str_productFormat.Equals("SOLUTION") || str_productFormat.Equals("GMP_ULEAF") ); 2534 var isRUO = str_productRegulatoryStatus.Equals("RUO"); 2535 var isFlexiFluor = productType.Equals("FlexiFluor"); 2536 var otherForms = Pageview.SearchFriendlyUrl.ToString(); 2537 var otherFormsHash = otherForms + "#productOtherFormats"; 2538 2539 if(str_currentPageId == @printPage || str_currentPageId == coaPage) 2540 { 2541 @SnippetStart("forcePrint") 2542 <link rel="stylesheet" type="text/css" href="@cdnJsCssDomain/Files/Templates/Designs/BioLegend/css/exceptions/print.css" /> 2543 <style> 2544 .container{ 2545 max-width: 700px!important; 2546 } 2547 </style> 2548 @SnippetEnd("forcePrint") 2549 } 2550 2551 if(!string.IsNullOrWhiteSpace(GetString("Ecom:Product:Field.VersionDate.Value.Clean")) && !string.IsNullOrWhiteSpace(GetString("Ecom:Product:Field.VersionNumber.Value.Clean"))) 2552 { 2553 @SnippetStart("forcePrintVersion") 2554 <span class="versionDatePrint hidden-sm hidden-md hidden-lg col-xs-12 col-sm-9 pull-right"> 2555 @Translate("version","Version")<text>:</text> @GetString("Ecom:Product:Field.VersionNumber.Value.Clean") &nbsp;&nbsp; @Translate("revisionDate","Revision Date")<text>:</text> @dateTimeVersionDate.ToString("MM/dd/yyyy") 2556 </span> 2557 @SnippetEnd("forcePrintVersion") 2558 } 2559 2560 <div data-productType="@productType" data-regulatoryStatus="@str_productRegulatoryStatus" data-productName="@str_productName" id="product-container" data-format="@str_productFormat" data-productSpecificity="@productSpecificity" data-ajaxPage="@productListJson" data-productType="@productFieldType" class="noPadding" data-productClone="@productClone" data-pageId="@str_currentPageId" data-productId="@str_productId" data-variantId="@str_variantId" data-smallImage="@str_productImage" data-errorCombination1='@Translate("Combination not available")' > 2561 <article id="product-description" class="col-xs-12 noPaddingLeft-old"> 2562 <div id="product-navigation" class="col-xs-12 col-sm-3 noPadding"> 2563 <ul> 2564 <li class="activeItem"> 2565 <a class="anchor_1" href="@Pageview.SearchFriendlyUrl.ToString()#productInfo">@Translate("PricingAvailability","Pricing & Availability")</a> 2566 </li> 2567 2568 @if(!string.IsNullOrWhiteSpace(GetString("Ecom:Product.CategoryField."+productFieldType+".KitContents.Value")) && !isASR) 2569 { 2570 <li> 2571 <a class="anchor_22" href="@Pageview.SearchFriendlyUrl.ToString()#kitContents">@Translate("KitContents","Kit Contents")</a> 2572 </li> 2573 } 2574 2575 <li> 2576 <a class="anchor_2" href="@Pageview.SearchFriendlyUrl.ToString()#productDetails">@Translate("ProductDetails","Product Details")</a> 2577 </li> 2578 2579 @RenderSnippet("navigationAnchors") 2580 @SnippetStart("navigationAnchors") @SnippetEnd("navigationAnchors") 2581 2582 </ul> 2583 </div> 2584 2585 <div id="productInfo" class="col-xs-12 col-sm-9 noPadding"> 2586 <a href="@Pageview.SearchFriendlyUrl.ToString()#productInfo" name="1" class="text-hide">@Translate("PricingAvailability","Pricing & Availability")</a> 2587 2588 @if(isASR) 2589 { 2590 <p class="col-xs-6 noPadding asrWarning"> 2591 <b>@Translate("ASRwarnMessage","Analyte Specific Reagent. Analytical and performance characteristics are not established.")</b> 2592 </p> 2593 } 2594 2595 <dl class="col-xs-8 noPaddingLeft"> 2596 @if (isPdf) 2597 { 2598 if (loop_variantCombinations.Any() && !((longLang.Equals("ja-JP") && isIVD) || (longLang.Equals("ja-JP") && str_productID.Equals("11573")))) 2599 { 2600 <dt class="col-xs-3 noPaddingLeft"> 2601 @Translate("Catalog#Size", "Catalog# / Size") 2602 </dt> 2603 <dd class="col-xs-9" id="catalogSize"> 2604 @foreach (var productVariant in loop_variantCombinations.Where(x => !x.GetInteger("Ecom:Product:Field.ProductStatus.Value.Clean").Equals(1)).OrderBy(pv => pv.GetDouble("Ecom:Product.Price.Price"))) 2605 { 2606 if (!string.IsNullOrWhiteSpace(productVariant.GetString("Ecom:Product:Field.RRID.Value.Clean"))) 2607 { 2608 RRIDLists.Add(productVariant.GetString("Ecom:Product.Number"), productVariant.GetString("Ecom:Product:Field.RRID.Value.Clean")); 2609 } 2610 var variantName = productVariant.GetString("Ecom:VariantCombination.VariantText"); 2611 if (variantName.Contains("&micro;g")) 2612 { 2613 productIsUg += "Yes"; 2614 } 2615 if (variantName.Contains("&micro;l")) 2616 { 2617 productIsUl += "Yes"; 2618 } 2619 @String.Format("{0} / {1}", productVariant.GetString("Ecom:Product.Number"), productVariant.GetString("Ecom:VariantCombination.VariantText")) 2620 <br/> 2621 } 2622 </dd> 2623 } 2624 } 2625 2626 @CalculateCloneString(productClone, otherFormsHash, isASR, searchPageID, isPdf) 2627 2628 @{ 2629 var showRegulatoryStatus = isRUO || (!isPdf && isIVD) || (isPdf && isRUO); 2630 } 2631 @if (showRegulatoryStatus) 2632 { 2633 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2634 @Translate("RegulatoryStatus","Regulatory Status") 2635 </dt> 2636 <dd class="col-xs-8 col-sm-9 noPadding"> 2637 @str_productRegulatoryStatus 2638 </dd> 2639 } 2640 2641 @if(!string.IsNullOrEmpty(str_workshop)) 2642 { 2643 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2644 @Translate("WorkshopName","Workshop") 2645 </dt> 2646 <dd class="col-xs-8 col-sm-9 noPadding"> 2647 @str_workshop 2648 </dd> 2649 } 2650 2651 @{ 2652 var pattern = @"\<[^>]*\>"; 2653 Regex rgx = new Regex(pattern); 2654 string otherNamesValue = rgx.Replace(GetString("Ecom:Product:Field.OtherNames.Value"), String.Empty); 2655 } 2656 @if (!string.IsNullOrWhiteSpace(otherNamesValue) && !isIVD ) 2657 { 2658 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2659 @GetString("Ecom:Product:Field.OtherNames.Name") 2660 </dt> 2661 <dd class="col-xs-8 col-sm-9 noPadding"> 2662 @otherNamesValue 2663 </dd> 2664 } 2665 2666 @if(previousCompany.Any() && !isIVD) 2667 { 2668 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2669 @Translate("Previously","Previously") 2670 </dt> 2671 <dd class="col-xs-8 col-sm-9 noPaddingLeft"> 2672 <div> 2673 @foreach(var x in previousCompany) 2674 { 2675 @String.Format("{1} Catalog# {0}<br/>",x.Key.ToString(),x.Value.ToString()) 2676 } 2677 </div> 2678 </dd> 2679 } 2680 2681 @RenderIsoype(str_IsotypeForFilter) 2682 2683 2684 @if (!string.IsNullOrEmpty(str_TotalseqSequence)) 2685 { 2686 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2687 @Translate("Barcode Sequence") 2688 </dt> 2689 <dd> 2690 @str_TotalseqSequence 2691 </dd> 2692 } 2693 @if (!isPdf) 2694 { 2695 if (!isASR && !isIVD) 2696 { 2697 if (GetDouble("Comments.TotalCount") > 0) 2698 { 2699 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2700 @Translate("AvegRating", "Ave. Rating") 2701 </dt> 2702 <dd class="col-xs-8 col-sm-9 noPaddingLeft"> 2703 <ul class="rating"> 2704 @for (var s = 5; s > 0; s--) 2705 { 2706 if (s == Math.Ceiling(GetDouble("Comments.Rating"))) 2707 { 2708 str_starClass = "class='star'"; 2709 str_halfStar = !(GetDouble("Comments.Rating") - Math.Round(GetDouble("Comments.Rating")) == 0) ? "fa-star-half" : "fa-star"; 2710 } 2711 else if (s > Math.Ceiling(GetDouble("Comments.Rating"))) 2712 { 2713 str_halfStar = "fa-star"; 2714 } 2715 else 2716 { 2717 str_starClass = ""; 2718 str_halfStar = "fa-star"; 2719 } 2720 2721 <li data-star="@s" @str_starClass><i class="fa @str_halfStar"></i></li> 2722 } 2723 </ul> 2724 <a id="totalReviews" class="anchor_10" href="@Pageview.SearchFriendlyUrl.ToString()#productReviews">@GetDouble("Comments.TotalCount") @Translate("reviews", "reviews")</a> 2725 <span class="rating-desc" itemscope="" itemtype="http://schema.org/Product" style="display:none;"> 2726 <span itemprop="name">@str_productName</span> 2727 <span itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating"> Rated <span itemprop="ratingValue">@GetDouble("Comments.Rating")</span> / 5 based on <span itemprop="reviewCount">@GetDouble("Comments.TotalCount")</span> reviews. | <a class="ratings" href="@reviewsSubmissionFormURL">Review Me</a> </span> 2728 </span> 2729 </dd> 2730 } 2731 else 2732 { 2733 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 2734 @Translate("AvegRating", "Ave. Rating") 2735 </dt> 2736 <dd> 2737 <a href="@reviewsSubmissionFormURL">@Translate("submitAReview", "Submit a Review")</a> 2738 </dd> 2739 } 2740 } 2741 if (!isASR && !isIVD) 2742 { 2743 <dt class="col-xs-4 col-sm-3 noPaddingLeft productCitations"> 2744 @Translate("NumberOfPubs", "Product Citations") 2745 </dt> 2746 <dd class="productCitations"> 2747 <a id="totalPublications" class="anchor_10" href="@Pageview.SearchFriendlyUrl.ToString()#productCitations"><span id="totalPublicationsCT"></span> @Translate("publications", "publications")</a> 2748 </dd> 2749 } 2750 } 2751 else 2752 { 2753 if (!string.IsNullOrEmpty(str_productDescription)) 2754 { 2755 <dl class="pdfDescription col-xs-12 noPaddingLeft"> 2756 <dt class="title col-xs-3 noPaddingLeft"><strong>@Translate("Description", "Description")</strong></dt> 2757 <dd class="col-xs-9">@RenderLongDescription(str_productDescription, str_productId, isPdf)</dd> 2758 </dl> 2759 } 2760 if (!string.IsNullOrEmpty(str_qualityStatement)) 2761 { 2762 @RenderProductField("QualityStatement",@Translate("QualityStatementNameB","Quality Statement"),str_productId,str_productRegulatoryStatus,catalogFirstLetter,str_productFormat,productFieldType,str_productName) 2763 @*<dl class="pdfDescription col-xs-12 noPaddingLeft"> 2764 <dt class="title col-xs-3 noPaddingLeft"><strong>@Translate("QualityStatementName", "Quality Statement")</strong></dt> 2765 <dd class="col-xs-9">@str_qualityStatement</dd> 2766 </dl>*@ 2767 } 2768 } 2769 </dl> 2770 2771 @* Kit Contents on print page in the top section SDT 091216 *@ 2772 @if(str_currentPageId != printPage && str_currentPageId == printPage && !string.IsNullOrWhiteSpace(GetString("Ecom:Product.CategoryField."+productFieldType+".KitContents.Value")) && !isASR) 2773 { 2774 <dl class="col-xs-12 noPadding"> 2775 @RenderCustomField(productFieldType,"KitContents", @Translate("KitContents","Kit Contents")) 2776 </dl> 2777 } 2778 2779 @if (!isPdf) 2780 { 2781 <div class='@(str_productId.Equals("10801") ? "col-xs-5" : "col-xs-4") noPadding pull-right detailSlideshowContainer'> 2782 @if (lst_images.Any()) 2783 { 2784 <figure class="col-xs-12"> 2785 @if (str_currentPageId != printPage) 2786 { 2787 foreach (var image1 in lst_images.OrderBy(x => x.Item2).ToList().Take(1)) 2788 { 2789 string str_getimageImg = GetImage(image1.Item1.ToString(), 240, 300, 0, 0, 0, 0, "jpg", 90); 2790 string str_getimageBig = GetImage(image1.Item1.ToString(), 800, 600, 0, 0, 0, 0, "jpg", 90); 2791 2792 <img data-zoom="@image1.Item4.ToString()" src="@str_getimageImg" alt="@image1.Item2.ToString()" title="@image1.Item2.ToString()" data-imageBig="@str_getimageBig"/> 2793 <figcaption class="col-xs-9 noPaddingLeft"> 2794 @image1.Item3.ToString() 2795 </figcaption> 2796 } 2797 2798 <div id="imgThumbs" class="col-xs-3 noPadding pull-right"> 2799 <ul> 2800 @foreach (var image in lst_images.OrderBy(x => x.Item2).ToList()) 2801 { 2802 if (!string.IsNullOrWhiteSpace(image.Item1.ToString())) 2803 { 2804 string str_getimageImg = GetImage(image.Item1.ToString(), 0, 80, 0, 80, 0, 80, "jpg", 90, 5); 2805 string str_getimageDataImg = GetImage(image.Item1.ToString(), 240, 300, 0, 0, 0, 0, "jpg", 90); 2806 string str_getimageDataBig = GetImage(image.Item1.ToString(), 800, 600, 0, 0, 0, 0, "jpg", 90); 2807 var liClass = lst_images.IndexOf(image) == 0 ? "active" : ""; 2808 2809 <li class="@liClass"> 2810 <figure> 2811 <img data-zoom="@image.Item4.ToString()" data-imageBig="@str_getimageDataBig" data-image="@str_getimageDataImg" class="img-responsive" src="@str_getimageImg" title="@image.Item2.ToString()" alt="@image.Item2.ToString()"/> 2812 @if (!string.IsNullOrWhiteSpace(image.Item3.ToString())) 2813 { 2814 <figcaption> 2815 @image.Item3.ToString() 2816 </figcaption> 2817 } 2818 </figure> 2819 </li> 2820 } 2821 } 2822 </ul> 2823 </div> 2824 } 2825 </figure> 2826 2827 if (str_currentPageId == printPage) 2828 { 2829 foreach (var image in lst_images.OrderBy(x => x.Item2).ToList()) 2830 { 2831 if (!string.IsNullOrWhiteSpace(image.Item1.ToString())) 2832 { 2833 <figure class="col-xs-12"> 2834 <img class="img-responsive" src="@cdnStaticDomain@image.Item1" title="@image.Item2" alt="@image.Item2"/> 2835 @if (!string.IsNullOrWhiteSpace(image.Item3.ToString())) 2836 { 2837 <figcaption> 2838 @image.Item3 2839 </figcaption> 2840 } 2841 </figure> 2842 } 2843 } 2844 } 2845 } 2846 2847 @if (!string.IsNullOrEmpty(productClone) || (productSpecificity.Equals("Streptavidin") || productSpecificity.Equals("Annexin V"))) 2848 { 2849 var compareClass = otherFormats != null && otherFormats.Count > 2 ? "" : "hidden"; 2850 <a id="compareFormatsLink" class="col-xs-9 @compareClass" href="javascript:void(0)"> 2851 <i class="bl bl-iconLink"></i> @Translate("compareAllFormatsLink", "Compare all formats") 2852 </a> 2853 } 2854 2855 @RenderSpectralData(str_productFormat, str_productId) 2856 2857 @if (!string.IsNullOrWhiteSpace(str_moreDataTitle) && !str_moreDataTitle.Equals("media_assets/pro_detail/more_data")) 2858 { 2859 <a id="moreDataLink" href="@str_moreData" class="col-xs-9" target="_blank"><i class="bl bl-dataIcon"></i> @str_moreDataTitle</a> 2860 } 2861 2862 @if (str_currentPageId == printPage && isIVD) 2863 { 2864 <figure> 2865 <img src="@cdnStaticDomain/media_assets/products/ivd_ce-mark_emergo_032415.jpg"/> 2866 </figure> 2867 } 2868 2869 </div> 2870 2871 if(!string.IsNullOrWhiteSpace(notifyMe)){ 2872 2873 <div class="col-xs-12 col-sm-8 noPadding"><a href="@LocalizeLinksHTML(notifyMe)" class="btn btn-primary">Notify Me When Available</a></div> 2874 2875 } 2876 2877 if(loop_variantCombinations.Any() && !((longLang.Equals("ja-JP") && isIVD) || (longLang.Equals("ja-JP") && str_productID.Equals("11573"))) && string.IsNullOrWhiteSpace(notifyMe)) 2878 { 2879 <div class="order-now col-xs-12 col-sm-8 noPadding"> 2880 <table id="variantsContainer" class="col-xs-12 noPadding"> 2881 <thead> 2882 <tr> 2883 <th @(cartDisabled ? "class='text-center'" : "")> 2884 @Translate("CatHeader","Cat #") 2885 </th> 2886 <th @(cartDisabled ? "class='text-center'" : "")> 2887 @Translate("SizeHeader","Size") 2888 </th> 2889 <th @(cartDisabled ? "class='text-center'" : "")> 2890 @Translate("PriceHeader","Price") 2891 </th> 2892 2893 @if(!cartDisabled && !isMixMatch && !isCustomFlexT && !isLPPanel && !isFlexiFluor) 2894 { 2895 <th colspan="3"> 2896 @Translate("QuantityHeader","Quantity") 2897 <span>@Translate("CheckAvailHeader","Check Availability")</span> 2898 </th> 2899 }else if(isMixMatch || isCustomFlexT){ 2900 <th colspan="4"> 2901 &nbsp; 2902 </th> 2903 } 2904 else if(!cartDisabled && (isLPPanel || isFlexiFluor)){ 2905 <th colspan="3"> 2906 @Translate("QuantityHeader","Quantity") 2907 </th> 2908 } 2909 @if(!isMixMatch && !isCustomFlexT) 2910 { 2911 <th @(cartDisabled ? "class='text-center'" : "")> 2912 @Translate("SaveHeader","Save") 2913 </th> 2914 } 2915 </tr> 2916 </thead> 2917 <tbody> 2918 2919 @foreach(var productVariant in loop_variantCombinations.Where(x => !x.GetInteger("Ecom:Product:Field.ProductStatus.Value.Clean").Equals(1)).OrderBy(pv => pv.GetDouble("Ecom:Product.Price.Price"))){ 2920 var str_productVariantID = productVariant.GetString("Ecom:VariantCombination.VariantID"); 2921 var outputStringEncoded = new StringBuilder(productVariant.GetString("Ecom:VariantCombination.VariantText")); 2922 var bol_productIsFavorite = false; 2923 try{ 2924 var favoriteListProducts = Dynamicweb.Ecommerce.CustomerCenter.CustomerProductList.GetListByCustomerId(int.Parse(userID.ToString())); 2925 if (favoriteListProducts.Any()) 2926 { 2927 var favoriteProducts = favoriteListProducts.FirstOrDefault().Products; 2928 bol_productIsFavorite = favoriteProducts.Where(x => x.ProductVariantId == str_productVariantID).Any() && favoriteProducts.Where(x => x.ProductId == str_productId).Any(); 2929 } 2930 }catch(Exception e){ 2931 <div class="hidden">@e.Message</div> 2932 } 2933 2934 var str_productAddToList = string.Format("{0}&favoriteID={1}&languageID={2}&variantID={3}&favoriteAction=add", str_productFavoritesUrl, str_productID, str_productLanguageId, str_productVariantID); 2935 var str_productRemoveFromList = string.Format("{0}&favoriteID={1}&languageID={2}&variantID={3}&favoriteAction=remove", str_productFavoritesUrl, str_productID, str_productLanguageId, str_productVariantID); 2936 2937 var str_favoriteUrl = bol_productIsFavorite ? str_productRemoveFromList : str_productAddToList; 2938 2939 var stockFieldName = ""; 2940 switch (navEnvironment){ 2941 case "US": 2942 stockFieldName = "StockUS"; 2943 break; 2944 case "UK": 2945 stockFieldName = "StockUK"; 2946 break; 2947 case "EU": 2948 stockFieldName = "StockEU"; 2949 break; 2950 default: 2951 stockFieldName = "StockUK"; 2952 break; 2953 2954 } 2955 var stock = !string.IsNullOrWhiteSpace(productVariant.GetString(string.Format("Ecom:Product:Field.{0}.Value.Clean", stockFieldName))) ? productVariant.GetString(string.Format("Ecom:Product:Field.{0}.Value.Clean", stockFieldName)) : "0"; 2956 var stockControl = productVariant.GetString("Ecom:Product:Field.StockControl.Value.Clean"); 2957 var productSource = productVariant.GetString("Ecom:Product:Field.ProductSource.Value.Clean"); 2958 var productVariantStatus = productVariant.GetInteger("Ecom:Product:Field.ProductStatus.Value.Clean"); 2959 2960 if (!string.IsNullOrWhiteSpace(productVariant.GetString("Ecom:Product:Field.RRID.Value.Clean"))) 2961 { 2962 RRIDLists.Add(productVariant.GetString("Ecom:Product.Number"),productVariant.GetString("Ecom:Product:Field.RRID.Value.Clean")); 2963 } 2964 2965 2966 foreach (var kvp in variantTypes){ 2967 outputStringEncoded.Replace(kvp.Key, kvp.Value); 2968 } 2969 2970 var resultStringVariant = Regex.Replace(outputStringEncoded.ToString(), "(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])"," "); 2971 2972 var variantName = productVariant.GetString("Ecom:VariantCombination.VariantText"); 2973 var isComingSoon = productVariant.GetBoolean("Ecom:Product:Field.ComingSoon"); 2974 var blockAddToCart = productVariant.GetBoolean("Ecom:Product:Field.BlockAddToCart.Value"); 2975 var blockAddToCartText = productVariant.GetString("Ecom:Product:Field.BlockAddToCartText.Value"); 2976 if(variantName.Contains("&micro;g")){productIsUg += "Yes";} 2977 if(variantName.Contains("&micro;l")){productIsUl += "Yes";} 2978 2979 <tr> 2980 <td> 2981 @if (isComingSoon) 2982 { 2983 <span class="comingSoon">@Translate("comingSoon", "Coming Soon")</span> 2984 } 2985 else if (!string.IsNullOrWhiteSpace(productVariant.GetString("Ecom:Product.Number"))) 2986 { 2987 @productVariant.GetString("Ecom:Product.Number") 2988 } 2989 else 2990 { 2991 @: &nbsp; 2992 } 2993 </td> 2994 <td> 2995 @variantName 2996 </td> 2997 <td> 2998 @if(longLang.Equals("ja-JP") && str_productFormat.Contains("GOINVIVO") && !str_productVariantID.Equals("5mg")) 2999 { 3000 @Translate("PleaseContactUs","Please Contact Us") 3001 } 3002 else if(longLang.Equals("ja-JP") && blockAddToCart){ 3003 <div><p class="coming-soon">@blockAddToCartText</p></div> 3004 } 3005 else if(longLang.Equals("ja-JP") && productVariant.GetString("Ecom:Product.Number").Equals("423555")){ 3006 <span itemprop="price" data-price="@productVariant.GetDouble("Ecom:Product.Price.Price")" data-pricePIP="@productVariant.GetDouble("Ecom:Product.Price.PricePIP")">@RoundPrice(productVariant.GetDouble("Ecom:Product.Price.PricePIP"), true, false)</span> 3007 } 3008 else if(requestQuote){ 3009 <div><a href="@localrepURL" target="_blank" class="btn btn-primary">Get a Quote</a></div> 3010 } 3011 else if(str_productId.Equals("10801") && !longLang.Equals("en-US")) 3012 { 3013 @Translate("addToCartForPrice","Add to cart for price.") 3014 } 3015 else if( isCustomFlexT){ 3016 <div><img src="@cdnStaticDomain/media_assets/common/trans.gif" width="125" height="1" /></div> 3017 } 3018 else{ 3019 <span itemprop="price" data-price="@productVariant.GetDouble("Ecom:Product.Price.Price")" data-pricePIP="@productVariant.GetDouble("Ecom:Product.Price.PricePIP")">@RoundPrice(productVariant.GetDouble("Ecom:Product.Price.PricePIP"), true, false)</span> 3020 } 3021 </td> 3022 3023 @if (isComingSoon) 3024 { 3025 <td colspan="4"> 3026 &nbsp; 3027 </td> 3028 } 3029 else if(!cartDisabled && !productVariantStatus.Equals(3)) 3030 { 3031 var colspan = ((!isMixMatch && !isCustomFlexT && !isFlexiFluor) ? "3" : "4"); 3032 <td colspan="@colspan"> 3033 <form name="addToCart" class="add-to-cart col-xs-12 noPadding form-fields" action="@addToCartFormAction" method="post"> 3034 @if(bol_userLogged){ 3035 <input type="hidden" name="redirect" value="false"/> 3036 } 3037 <input type="hidden" name="cartcmd" value="add"/> 3038 <input type="hidden" name="productID" value="@str_productId"/> 3039 <input type="hidden" name="variantID" value="@str_productVariantID" /> 3040 @if(!string.IsNullOrWhiteSpace(orderContext)) 3041 { 3042 <input type="hidden" name="OrderContext" value="@orderContext" /> 3043 } 3044 3045 <table> 3046 <tr> 3047 @if(!isMixMatch && !isCustomFlexT && !isLPPanel && !isFlexiFluor) 3048 { 3049 if(!blockAddToCart) { 3050 <td> 3051 <label> 3052 <input data-reservedStock='@productVariant.GetString("Ecom:Product.AvailableAmount")' data-stockControl='@stockControl.ToLower()' data-stocktranslate='@Translate("currentStock","The current stock is")' data-stock='@stock' type="text" name="quantity" value="1" id="quantity" /> 3053 </label> 3054 </td> 3055 <td> 3056 <a class="actionCheckAvailability" href="javascript:void(0);" title="@(Translate("CheckInventory","Check Inventory"))"><i class="bl bl-availabilityIcon"></i></a> 3057 </td> 3058 } else { 3059 <td colspan="2" width="100">&nbsp;</td> 3060 } 3061 } 3062 @if(isLPPanel || isFlexiFluor) 3063 { 3064 <td> 3065 <label> 3066 <input data-reservedStock='@productVariant.GetString("Ecom:Product.AvailableAmount")' data-stockControl='@stockControl.ToLower()' data-stocktranslate='@Translate("currentStock","The current stock is")' data-stock='@stock' type="text" name="quantity" value="1" id="quantity" /> 3067 </label> 3068 </td> 3069 } 3070 <td class="noPaddingRight"> 3071 <div class="blackOverlay stockAvailability"> 3072 <div class="container"> 3073 <div class="col-xs-12 variantStock text-left"> 3074 <i class="fa fa-close fa-lg"></i> 3075 <span>@Translate("checkAvailability", "Check Availability") <i class="bl bl-availabilityIcon"></i></span> 3076 <br/> 3077 <p data-userAvailableStartMsg="@userAvailableStartMsg" data-userOrdersMoreThanAvailable="@userOrdersMoreThanAvailable" data-userOrdersLessThanAvailable="@userOrdersLessThanAvailable"></p> 3078 <br/> 3079 @Translate("NeedLargerQuantitiesThisItem","Need larger quantities of this item?") 3080 <br/> 3081 <a href="@requestBulk"> @Translate("RequestBulkQuote","Request Bulk Quote")</a> 3082 </div> 3083 </div> 3084 </div> 3085 @if(blockAddToCart) { 3086 <p class="coming-soon">@blockAddToCartText</p> 3087 } else { 3088 if(isMixMatch) 3089 { 3090 <p>To purchase, view our <a href="@mixmatchURL">LEGENDplex&trade; Mix and Match</a> page</p> 3091 } 3092 else if(isCustomFlexT) 3093 { 3094 <div><img src="@cdnStaticDomain/media_assets/common/trans.gif" width="125" height="1" /></div> 3095 } 3096 else{ 3097 if(userCurrency != siteCurrency){ 3098 <span class="inputSubmit" data-toggle="tooltip" title="@(Translate("CurrencyMissmatch","Your currency does not match the websites currency. Please navigate to the proper page."))"> 3099 <input type="submit" disabled value='@Translate("Add to Cart")' class="addToCart btn" /> 3100 </span> 3101 } 3102 else if(string.IsNullOrWhiteSpace(productSource)){ 3103 <span class="inputSubmit" data-toggle="tooltip" title="@(Translate("ProductNotAvailable","This product is not currently available."))"> 3104 <input type="submit" disabled value='@Translate("Add to Cart")' class="addToCart btn" /> 3105 </span> 3106 } 3107 else{ 3108 <input type="submit" value='@Translate("Add to cart")' class="addToCart btn btn-primary" /> 3109 } 3110 } 3111 } 3112 </td> 3113 </tr> 3114 </table> 3115 </form> 3116 </td> 3117 } 3118 3119 @if(!isMixMatch && !isCustomFlexT && !productVariantStatus.Equals(3) && !isComingSoon) 3120 { 3121 <td> 3122 @if(!blockAddToCart){ 3123 <a class='saveToFavorites @(!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn() ? "noUser": "")' data-login='@Translate("login", "Login")' data-continueAsGuest='@Translate("continueAsGuest", "Continue as a Guest")' data-guestWarning='@Translate("guestMayContinue","You may continue as a Guest with limited features")' data-guestWarningPart2='@Translate("guestLimitedFeatures","shopping cart items can only be printed, downloaded or emailed.")' data-error='@Translate("toAddProductsToYourFavorites","To add products to your Favorites list, please login if you are an existing customer. If you do not have an account, request an account after selecting Login.")' data-favorite="@bol_productIsFavorite" data-variantid="@str_productVariantID" data-user="@Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()" data-addText='@Translate("Add to Favorites")' data-removeText='@Translate("Remove from Favorites")' href="@str_favoriteUrl" title="@(Translate(bol_productIsFavorite ? "Remove from Favorites" : "Add to Favorites"))"><i class='bl @(bol_productIsFavorite ? "bl-favOn" : "bl-favOff")'></i></a> 3124 }else{ 3125 <span>&nbsp;</span> 3126 } 3127 </td> 3128 } 3129 </tr> 3130 3131 if (!string.IsNullOrEmpty(googleTagManagerId)) 3132 { 3133 var groupObject = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(GetString("Ecom:Product.PrimaryOrFirstGroupID")); 3134 3135 <script> 3136 dataLayer.push({ 3137 'event': 'productDetails', 3138 "ecommerce": { 3139 "detail": { 3140 "currencyCode": "@GetString("Ecom:Product.Price.Currency.Code")", 3141 "actionField": {},// 'detail' actions have an optional list property. 3142 "products": [{ 3143 "name": "@GetString("Ecom:Product.Name")",// Name or ID is required. 3144 "id": "@GetString("Ecom:Product.ID")", 3145 "price": "@RoundPrice(productVariant.GetDouble("Ecom:Product.Price.PricePIP"), true, false)", 3146 "brand": "@GetString("Ecom:Product:Field.brand.Value")", 3147 "category": "@(groupObject != null ? groupObject.Name : "")", 3148 "variant": "@str_productVariantID" 3149 }] 3150 } 3151 } 3152 }); 3153 </script> 3154 } 3155 } 3156 </tbody> 3157 </table> 3158 3159 @if(!string.IsNullOrEmpty(str_promoText)){ 3160 <div class="introDescription col-xs-12 noPaddingLeft"> 3161 @str_promoText 3162 </div> 3163 } 3164 3165 @if(loop_variantsWithDCSoon.Any()) 3166 { 3167 var dcSoonProductField = GetString("Ecom:Product:Field.DCSoon.Value"); 3168 var dcSoonAreaItem = (itemArea["DCSoon"] ?? "").ToString(); 3169 3170 <span class="productDiscontinuedSoon col-xs-12 noPadding"> 3171 @if(!string.IsNullOrEmpty(dcSoonProductField)){ 3172 @dcSoonProductField 3173 } 3174 else { 3175 @dcSoonAreaItem 3176 } 3177 </span> 3178 } 3179 @if(loop_variantsWithDC.Any()) 3180 { 3181 var discontinuedTextProductField = GetString("Ecom:Product:Field.DiscontinuedText"); 3182 var discontinuedTextAreaItem = (itemArea["DCProductDiscontinued"] ?? "").ToString(); 3183 3184 <span class="productDiscontinuedSoon col-xs-12 noPadding"> 3185 @if(!string.IsNullOrEmpty(discontinuedTextProductField)){ 3186 @discontinuedTextProductField 3187 } 3188 else { 3189 @discontinuedTextAreaItem 3190 } 3191 </span> 3192 } 3193 </div> 3194 3195 } 3196 3197 <div class="col-xs-12 col-sm-8 noPadding"> 3198 @*Mouse BV Products with ug and ul*@ 3199 @if(str_productFormat.ToUpper().Contains("BV") && str_productName.ToUpper().Contains("MOUSE") && productIsUg.ToUpper().Contains("YES") && productIsUl.ToUpper().Contains("YES") ){ 3200 <div class="introDescription col-xs-12 noPaddingLeft"> 3201 This product is offered in multiple sizing options (&micro;g and &micro;L/test sizes). To compare these sizing options and learn which is the best choice for you, please <a href="@contactTechLink">contact tech support</a>. 3202 </div> 3203 } 3204 3205 @if(!string.IsNullOrEmpty(str_productDescription)){ 3206 <div class="introDescription col-xs-12 noPaddingLeft"> 3207 <span class="title">@Translate("Description","Description")</span> 3208 @RenderLongDescription(str_productDescription, str_productId) 3209 @*@str_productDescription*@ 3210 <a href="@Pageview.SearchFriendlyUrl.ToString()#2">@Translate("ProductDetails","Product Details")</a> 3211 </div> 3212 } 3213 @if(!string.IsNullOrEmpty(str_qualityStatement)) 3214 { 3215 <div class="introDescription col-xs-12 noPaddingLeft"> 3216 <span class="title">@Translate("QualityStatementName","Quality Statement")</span> 3217 @str_qualityStatement 3218 </div> 3219 } 3220 @RenderInternationalGMPQualityStatement(longLang,str_productRegulatoryStatus,str_productFormat) 3221 </div> 3222 3223 if (isDetailPage) 3224 { 3225 @RenderTDS( 3226 true, 3227 str_productDataSheetFile, 3228 str_productDataSheet, 3229 printPage, 3230 productFieldType, 3231 str_productId, 3232 str_productName, 3233 str_productRegulatoryStatus, 3234 techSupportPageID, 3235 @Translate("datasheetNotAvailable","This datasheet is currently not available online. Click 'OK' to contact technical service for more information."), 3236 str_productAppAbrv, 3237 cdnPdfDomain + "/Default.aspx?ID=" + Pageview.Page.ID + "&pdf=true&displayInline=true", 3238 productUpdated 3239 ) 3240 } 3241 else 3242 { 3243 @RenderTDSForPreview( 3244 true, 3245 str_productDataSheetFile, 3246 str_productDataSheet, 3247 str_productId, 3248 str_productName, 3249 str_productRegulatoryStatus, 3250 cdnPdfDomain + "/Default.aspx?ID=" + Pageview.Page.ID + "&pdf=true&displayInline=true", 3251 productUpdated 3252 ) 3253 } 3254 } 3255 3256 @if (!string.IsNullOrWhiteSpace(str_productIFUFrenchFile)) 3257 { 3258 <a href="@str_productIFUFrenchFile" class="btn btn-default techincalDataSheet"> 3259 <i class="fa fa-file-pdf-o"></i> Instructions For Use - French (PDF) 3260 </a> 3261 } 3262 3263 @if (!string.IsNullOrWhiteSpace(str_productIFUGermanFile)) 3264 { 3265 <a href="@str_productIFUGermanFile" class="btn btn-default techincalDataSheet"> 3266 <i class="fa fa-file-pdf-o"></i> Instructions For Use - German (PDF) 3267 </a> 3268 } 3269 3270 @if (!string.IsNullOrWhiteSpace(str_productIFUItalianFile)) 3271 { 3272 <a href="@str_productIFUItalianFile" class="btn btn-default techincalDataSheet"> 3273 <i class="fa fa-file-pdf-o"></i> Instructions For Use - Italian (PDF) 3274 </a> 3275 } 3276 3277 @if (!string.IsNullOrWhiteSpace(str_productIFUPortugueseFile)) 3278 { 3279 <a href="@str_productIFUPortugueseFile" class="btn btn-default techincalDataSheet"> 3280 <i class="fa fa-file-pdf-o"></i> Instructions For Use - Portuguese (PDF) 3281 </a> 3282 } 3283 3284 @if (!string.IsNullOrWhiteSpace(str_productIFUSpanishFile)) 3285 { 3286 3287 <a href="@str_productIFUSpanishFile" class="btn btn-default techincalDataSheet"> 3288 <i class="fa fa-file-pdf-o"></i> Instructions For Use - Spanish (PDF) 3289 </a> 3290 } 3291 3292 </div> 3293 3294 @* New Kit Contents Section section SDT 091216 *@ 3295 @if(!string.IsNullOrWhiteSpace(GetString("Ecom:Product.CategoryField."+productFieldType+".KitContents.Value")) && !isASR) 3296 { 3297 <div id="kitContents" class="col-xs-12 col-sm-9 pull-right noPadding"> 3298 <h2 class="col-xs-12 noPadding"> 3299 <a href="@Pageview.SearchFriendlyUrl.ToString()#kitContents" name="22">@Translate("KitContents","Kit Contents")</a> 3300 </h2> 3301 <dl class="col-xs-12 noPadding"> 3302 @RenderCustomField(productFieldType,"KitContents", @Translate("KitContents","Kit Contents")) 3303 </dl> 3304 </div> 3305 } 3306 3307 <div id="productDetails" class="col-xs-12 col-sm-9 pull-right noPadding" data-isotypeControl='@Translate("IsotypeControl","Isotype Control")'> 3308 <h2 class="col-xs-12 noPadding"> 3309 <a href="@Pageview.SearchFriendlyUrl.ToString()#productDetails" name="2">@Translate("ProductDetails","Product Details")</a> 3310 </h2> 3311 3312 <dl class="col-xs-12 noPadding" id="ProductDetailsContainer"> 3313 3314 @if(isIVD){ 3315 @RenderProductField("ProductInfo", @Translate("ProductInformation","Product Information")); 3316 } 3317 3318 @if(isRUO){ 3319 @RenderProductField("Reactivity", @Translate("VerifiedReactivity","Verified Reactivity"), "", "", "", "", productType, "", null, true) 3320 } 3321 else{ 3322 @RenderProductField("Reactivity", @Translate("Reactivity","Reactivity"), "", "", "", "", productType) 3323 } 3324 @RenderProductField("ReportedReactivity", @Translate("ReportedReactivity","Reported Reactivity"), "", "", "", "", productType, "", null, true) 3325 @if(!isASR && !isIVD){ 3326 @RenderABType("ABType", @Translate("AntibodyType","Antibody Type")); 3327 } 3328 @if(!isASR && !isIVD){ 3329 @RenderProductField("HostSpecies", @Translate("HostSpecies","Host Species")); 3330 } 3331 @if(!isASR){ 3332 @RenderCustomField(productFieldType,"Immunogen", @Translate("Immunogen","Immunogen")); 3333 } 3334 @if(!isASR){ 3335 @RenderCustomField(productFieldType,"Derivation", @Translate("Source","Source")); 3336 } 3337 @if(!isASR){ 3338 @RenderCustomField(productFieldType,"Mass", @Translate("MolecularMass","Molecular Mass")); 3339 } 3340 @RenderProductField("NTerminalSequenceAnalysis",@Translate("NTerminalSequenceAnalysisNameA","N-terminal<br />Sequence Analysis")) 3341 @if(!isASR){ 3342 @RenderCustomField(productFieldType,"Purity", @Translate("Purity","Purity")); 3343 } 3344 @RenderProductField("Formulation",@Translate("Formulation","Formulation")) 3345 @RenderProductField("EndotoxinLevel",@Translate("EndotoxinLevelName","Endotoxin Level")) 3346 @RenderProductField("ResidualHostCellProteinContent",@Translate("ResidualHostCellProteinContentName","Residual Host Cell Protein Content")) 3347 @RenderProductField("Specifications",@Translate("SpecificationsName","Specifications")) 3348 @RenderCustomField(productFieldType,"Preparation", @Translate("Preparation","Preparation")) 3349 3350 @if(!string.IsNullOrWhiteSpace(GetString("Ecom:Product.CategoryField."+productFieldType+".Concentration.Value.Clean"))) 3351 { 3352 <dt class="col-xs-3 noPaddingLeft"> 3353 @Translate("Concentration","Concentration") 3354 </dt> 3355 <dd class="col-xs-9"> 3356 @LocalizeLinks(@GetString("Ecom:Product.CategoryField."+productFieldType+".Concentration.Value.Clean")) @GetString("Ecom:Product.CategoryField."+productFieldType+".ConcentrationUnits.Value.Clean") 3357 </dd> 3358 } 3359 3360 <div id="StorageHandlingContainer"> 3361 @RenderProductField("Storage",@Translate("StorageHandling","Storage & Handling"), str_productId) 3362 </div> 3363 3364 @if(!isASR){ 3365 @RenderCustomField(productFieldType,"Activity", @Translate("Activity","Activity")); 3366 } 3367 3368 @if(!string.IsNullOrWhiteSpace(GetString("Ecom:Product:Field.Applications.Value")) && !isIVD) 3369 { 3370 <dt class="col-xs-3 noPaddingLeft"> 3371 @Translate("Application","Application") 3372 </dt> 3373 <dd class="col-xs-9"> 3374 <a href="@LocalizeLinksHTML("dwcountry/abbreviations")" target="_blank"> 3375 @GetString("Ecom:Product:Field.Applications.Value") 3376 </a> 3377 3378 @if(productFieldType.Equals("LEGENDplex")){ 3379 <text> 3380 <br /> 3381 Learn more about LEGENDplex™ at <a href="@legendplexURL" title="LEGENDplex™">biolegend.com/legendplex</a> 3382 <br /><br /> 3383 Download the <a href="@softwareURL" title="LEGENDplex™ Software">LEGENDplex™ software here</a>. 3384 </text> 3385 } 3386 3387 </dd> 3388 } 3389 3390 @* Find ELISA documents text *@ 3391 @if(str_productFormat.Equals("ELISA") || str_productFormat.Equals("ELISA_STD") || str_productFormat.Equals("ELISA_DLX")){ 3392 <dt class="col-xs-3 noPaddingLeft">@Translate("spaceText","&nbsp;")</dt> 3393 <dd class="col-xs-9"> 3394 @Translate("elisaGreenText"," As a part of BioLegend&apos;s efforts to go green, each new lot of the ELISA MAX&trade; sets will include a summarized version of its manual. ") <a href="@Pageview.SearchFriendlyUrl.ToString()#productDocumentation">Click here</a>@Translate("elisaGreenText2"," for more information.") 3395 </dd> 3396 } 3397 3398 @if(!isASR){ 3399 @RenderProductField("Usage",@Translate("RecommendedUsage","Recommended Usage"),str_productId,str_productRegulatoryStatus,catalogFirstLetter,str_productFormat,productFieldType,str_productName); 3400 } 3401 @if(!isASR && !isIVD){ 3402 @RenderLaser(str_productLaser); 3403 } 3404 @if(!isASR && !isIVD){ 3405 @RenderProductField("AppNotes",@Translate("ApplicationNotes","Application Notes")) 3406 @RenderProductField("AdditionalProductNotes",@Translate("AdditionalProductNotesTitle","Additional Product Notes")) 3407 } 3408 3409 @if(!string.IsNullOrWhiteSpace(GetString("Ecom:Product:Field.AppReferences.Value")) && !isASR) 3410 { 3411 <dl id="ApplicationReferencesContainer"> 3412 <dt class="col-xs-3 noPaddingLeft"> 3413 @Translate("ApplicationReferences","Application References") 3414 </dt> 3415 <dd class="col-xs-9" id="applicationReferences" data-seeLess="@Translate("seeLess", "See Less")" data-seeMore="@Translate("seeMore", "See More")"> 3416 3417 @GetString("Ecom:Product:Field.AppReferences.Value") 3418 3419 </dd> 3420 </dl> 3421 } 3422 3423 @if (!isASR && !isIVD) 3424 { 3425 @SnippetStart("ProductCitations") 3426 var hasCitation = false; 3427 var lxp = 0; 3428 var itemList = Dynamicweb.Content.Items.NamedItemList.GetNamedItemListByName("Publications", Dynamicweb.Content.Items.NamedItemList.ListSourceType.Page, repositoryPageID); 3429 if (itemList != null) 3430 { 3431 foreach (var itemRelation in itemList.ItemList.Relations) 3432 { 3433 var item = Dynamicweb.Services.Items.GetItem("Publications", itemRelation.Id); 3434 var webId = item["WebID"].ToString(); 3435 3436 if (webId.Contains("p_" + str_productId + ",") || webId.Contains("p_" + str_productId + ":") || webId.Contains("p_" + str_productId + "'")) 3437 { 3438 var Authors = item["Authors"].ToString(); 3439 var Page = item["Page"].ToString(); 3440 var Pubmed = item["Pubmed"].ToString(); 3441 var Journal = item["Journal"].ToString(); 3442 var Year = item["Year"].ToString(); 3443 3444 hasCitation = true; 3445 if(isPdf && (lxp >= 12)){} 3446 else{ 3447 <li class="relatedPubFromLibrary">@string.Format("{0} {1}. {2}. {3}.", System.Web.HttpUtility.HtmlDecode(Authors), Year, Journal, Page) <a target="_blank" href="@Pubmed">@Translate("pubMed", "PubMed")</a></li> 3448 } 3449 lxp++; 3450 } 3451 } 3452 } 3453 @SnippetEnd("ProductCitations") 3454 3455 if (hasCitation) 3456 { 3457 <dl id="productCitationsContainer"> 3458 <dt id="productCitations" class="col-xs-3 noPaddingLeft">@Translate("Product Citations")</dt> 3459 <dd class="col-xs-9" id="productSpecificReferences" data-seeLess="@Translate("See Less")" data-seeMore="@Translate("See More")"> 3460 <ol> 3461 @RenderSnippet("ProductCitations") 3462 </ol> 3463 </dd> 3464 </dl> 3465 } 3466 } 3467 3468 @{ 3469 var hasAdditionalInfo = RRIDLists.ToList().Any() && ((!isPdf && !isASR && !isGMPRUO) || (isPdf && !isASR && !isIVD && !isGMPRUO)); 3470 if (hasAdditionalInfo) { 3471 <dt class="col-xs-3 noPaddingLeft">@Translate("RRID", "RRID")</dt> 3472 <dd class="col-xs-9"> 3473 @*string.Join("<br/>", RRIDLists.ToArray())*@ 3474 @foreach (var x in RRIDLists.ToList()) 3475 { 3476 @x.Value 3477 <text>(@Translate("biolegendCatNo", "BioLegend Cat. No.") @x.Key)</text> 3478 <br/> 3479 } 3480 </dd> 3481 } 3482 } 3483 @if(!isASR && !isIVD){ 3484 @RenderCustomField(productFieldType,"Sensitivity", @Translate("Sensitivity","Sensitivity")); 3485 @RenderCustomField(productFieldType,"StandardRange", @Translate("StandardRange","Standard Range")); 3486 } 3487 @if(!isASR){ 3488 @RenderCustomField(productFieldType,"MaterialsNotIncluded", @Translate("MaterialsNotIncluded","Materials Not Included")); 3489 } 3490 <dl id="DisclaimerContainer"> 3491 @RenderProductField("Disclaimer",@Translate("Disclaimer","Disclaimer"),str_productId,str_productRegulatoryStatus,catalogFirstLetter,str_productFormat,productFieldType,str_productName) 3492 </dl> 3493 </dl> 3494 </div> 3495 3496 @if (!(!isDetailPage && isPdf && isASR)){ 3497 <div id="antigenDetails" class="col-xs-12 col-sm-9 pull-right noPadding"> 3498 @SnippetStart("navigationAnchors") 3499 @if(!isIVD){ 3500 <li> 3501 <a class="anchor_3" href="@Pageview.SearchFriendlyUrl.ToString()#antigenDetails">@Translate("AntigenDetails","Antigen Details")</a> 3502 </li> 3503 } 3504 @SnippetEnd("navigationAnchors") 3505 @if(!isIVD){ 3506 <h2 class="col-xs-12 noPadding"> 3507 <a href="@Pageview.SearchFriendlyUrl.ToString()#antigenDetails" name="3">@Translate("AntigenDetails","Antigen Details")</a> 3508 </h2> 3509 } 3510 <dl class="col-xs-12 noPadding"> 3511 @if(!isASR && !isIVD){ 3512 @RenderCustomField(productFieldType,"Structure", @Translate("Structure","Structure")); 3513 } 3514 @if(!isASR && !isIVD){ 3515 @RenderCustomField(productFieldType,"Distribution", @Translate("Distribution","Distribution")); 3516 @RenderCustomField(productFieldType,"Function", @Translate("Function","Function")); 3517 @RenderCustomField(productFieldType,"Interaction", @Translate("Interaction","Interaction")); 3518 @RenderCustomField(productFieldType,"Ligand", @Translate("LigandReceptor","Ligand/Receptor")); 3519 @RenderCustomField(productFieldType,"Bioactivity", @Translate("Bioactivity","Bioactivity")); 3520 @RenderCustomField(productFieldType,"CellSources", @Translate("CellSources","Cell Sources")); 3521 @RenderCustomField(productFieldType,"CellTargets", @Translate("CellTargets","Cell Targets")); 3522 @RenderCustomField(productFieldType,"Cross", @Translate("Cross","Cross")); 3523 @RenderCustomField(productFieldType,"Modification", @Translate("Modification","Modification")); 3524 @RenderCustomField(productFieldType,"Receptors", @Translate("Receptors","Receptors")); 3525 @RenderCustomField(productFieldType,"Reconstitution", @Translate("Reconstitution","Reconstitution")); 3526 @RenderCellType(str_cellType); 3527 @RenderBiologyArea(str_biologyArea); 3528 @RenderMolecularFamily(str_molecularFamily); 3529 } 3530 3531 @if( !isIVD){ 3532 <div id="AntigenReferencesContainer"> 3533 @RenderCustomField(productFieldType,"AntigenReferences", @Translate("AntigenReferences","Antigen References")) 3534 </div> 3535 } 3536 @if(!isASR && !isIVD){ 3537 @RenderCustomField(productFieldType,"Regulation", @Translate("Regulation","Regulation")); 3538 } 3539 @if(!isASR && !isIVD){ 3540 <dt class="col-xs-3 noPaddingLeft"> 3541 @Translate("GeneID","Gene ID") 3542 </dt> 3543 <dd class="col-xs-9"> 3544 @if(geneList.Any()) 3545 { 3546 foreach(var gene in geneList) 3547 { 3548 <span class="col-xs-12 noPadding geneInformation"> 3549 <a class="geneAnchor iframeWebsite" target="_blank" data-geneID="@gene" href="https://www.ncbi.nlm.nih.gov/gene/@gene">@gene</a> <a target="_blank" class="btn btn-default" href="/Default.aspx?ID=@searchPageID&GeneID=@gene">@Translate("viewAllProductsGeneID","View all products for this Gene ID")</a> 3550 </span> 3551 } 3552 }else{ 3553 <text>NA</text> 3554 } 3555 </dd> 3556 } 3557 3558 @if (!isDetailPage && !isPdf) 3559 { 3560 if (!string.IsNullOrWhiteSpace(productSpecificity)) 3561 { 3562 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 3563 @Translate("Specificity (DOES NOT SHOW ON TDS):") 3564 </dt> 3565 <dd class="col-xs-8 col-sm-9 noPadding"> 3566 @productSpecificity 3567 </dd> 3568 } 3569 3570 if (!string.IsNullOrWhiteSpace(productSpecificityAlt)) 3571 { 3572 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 3573 Specificity Alt (DOES NOT SHOW ON TDS): 3574 </dt> 3575 <dd class="col-xs-8 col-sm-9 noPadding"> 3576 @productSpecificityAlt 3577 </dd> 3578 } 3579 if (!String.IsNullOrWhiteSpace(str_productAppAbrv)) 3580 { 3581 <dt class="col-xs-4 col-sm-3 noPaddingLeft"> 3582 App Abbreviation (DOES NOT SHOW ON TDS): 3583 </dt> 3584 <dd class="col-xs-8 col-sm-9 noPadding"> 3585 @str_productAppAbrv 3586 </dd> 3587 } 3588 } 3589 3590 @if(!string.IsNullOrWhiteSpace(productSpecificity) && !productFieldType.Equals("CellFunction") && !productFieldType.Equals("Ancillary") && !isASR && !isIVD) 3591 { 3592 if (!isPdf) 3593 { 3594 <dt class="col-xs-3 noPaddingLeft"> 3595 @Translate("UniProt", "UniProt") 3596 </dt> 3597 <dd class="col-xs-9"> 3598 <a target="_blank" class="uniProt" href="http://www.uniprot.org/uniprot/?query=@productSpecificity"> 3599 @Translate("uniProtViewInformation", "View information about") @productSpecificity @Translate("uniProtOnWebiste", "on UniProt.org") 3600 </a> 3601 </dd> 3602 } 3603 } 3604 </dl> 3605 </div> 3606 } 3607 3608 @if (!isPdf) 3609 { 3610 <div id="productDocumentation" class="col-xs-12 col-sm-9 pull-right noPadding"> 3611 <h2 class="col-xs-12 noPadding"> 3612 <a href="@Pageview.SearchFriendlyUrl.ToString()#productDocumentation" name="9">@Translate("Documentation", "Documentation")</a> 3613 </h2> 3614 3615 @SnippetStart("navigationAnchors") 3616 <li> 3617 <a class="anchor_9" href="@Pageview.SearchFriendlyUrl.ToString()#productDocumentation">@Translate("Documentation", "Documentation")</a> 3618 </li> 3619 @SnippetEnd("navigationAnchors") 3620 3621 <ul class="productDocumentation col-xs-12 noPadding"> 3622 <li> 3623 @if (isDetailPage) 3624 { 3625 @RenderTDS( 3626 false, 3627 str_productDataSheetFile, 3628 str_productDataSheet, 3629 printPage, 3630 productFieldType, 3631 str_productId, 3632 str_productName, 3633 str_productRegulatoryStatus, 3634 techSupportPageID, 3635 @Translate("datasheetNotAvailable","This datasheet is currently not available online. Click 'OK' to contact technical service for more information."), 3636 str_productAppAbrv, 3637 cdnPdfDomain + "/Default.aspx?ID=" + Pageview.Page.ID + "&pdf=true&displayInline=true", 3638 productUpdated 3639 ) 3640 } 3641 else 3642 { 3643 @RenderTDSForPreview( 3644 false, 3645 str_productDataSheetFile, 3646 str_productDataSheet, 3647 str_productId, 3648 str_productName, 3649 str_productRegulatoryStatus, 3650 cdnPdfDomain + "/Default.aspx?ID=" + Pageview.Page.ID + "&pdf=true&displayInline=true", 3651 productUpdated 3652 ) 3653 } 3654 </li> 3655 3656 <li> 3657 <a href="@Pageview.SearchFriendlyUrl.ToString()#productCertificate"><i class="bl bl-dataIcon"></i>@Translate("CertificateOfAnalysis", "Certificate of Analysis")</a> 3658 </li> 3659 @if (!string.IsNullOrWhiteSpace(str_productMSDSType)) 3660 { 3661 <li> 3662 @RenderMaterialDataSheet( 3663 str_productMSDSType, str_productMSDSCFile, str_productMSDSOptions, str_productRegulatoryStatus, str_productId, techSupportPageID, 3664 @Translate("MaterialDataSheet", "Material Safety Data Sheet"), 3665 @Translate("MSDSCommingSoon", "This MSDS is not currently available. Please check back soon!"), 3666 @Translate("MSDSnotAvailable", "This MSDS is not currently available online. Click 'OK' to contact technical service for more information")) 3667 </li> 3668 } 3669 </ul> 3670 </div> 3671 if (!isASR) 3672 { 3673 <div id="productReviews" class="col-xs-12 col-sm-9 pull-right noPadding"> 3674 <h2 class="col-xs-12 noPadding"> 3675 <a href="@Pageview.SearchFriendlyUrl.ToString()#productReviews" name="10">@Translate("Reviews", "Reviews")</a> 3676 </h2> 3677 3678 @SnippetStart("navigationAnchors") 3679 <li> 3680 <a class="anchor_10" href="@Pageview.SearchFriendlyUrl.ToString()#productReviews">@Translate("Reviews", "Reviews")</a> 3681 </li> 3682 @SnippetEnd("navigationAnchors") 3683 3684 @{ 3685 var str_articleNumber = GetString("Ecom:Product.Number"); 3686 } 3687 3688 <div id="reviewsContainer" class="col-xs-12 noPadding"> 3689 <a class="btn btn-default" href="@reviewsSubmissionFormURL">@Translate("reviewThisProduct", "Review This Product")</a> 3690 3691 @if (loopComments.Any()) 3692 { 3693 <ul id="productReviews" class="col-xs-12 noPadding"> 3694 <li> 3695 <ul> 3696 <li class="col-xs-7"> 3697 @Translate("title", "Title") 3698 </li> 3699 <li class="col-xs-3"> 3700 @Translate("rating", "Rating") 3701 </li> 3702 <li class="col-xs-2 text-center"> 3703 @Translate("date", "Date") 3704 </li> 3705 </ul> 3706 </li> 3707 @foreach (var comment in loopComments) 3708 { 3709 3710 var dat_date = comment.GetDate("CreatedDate"); 3711 var str_website = comment.GetString("Website"); 3712 str_website = LocalizeLinksHTML(str_website); 3713 if (str_website == "") 3714 { 3715 str_website = "javascript:void(0)"; 3716 } 3717 3718 if (str_website.Contains("biolegend.com")) 3719 { 3720 str_website = str_website.Replace("http://www.biolegend.com", GetGlobalValue("Global:Request.Scheme") + "://" + GetGlobalValue("Global:Request.Host")); 3721 } 3722 3723 var ratingComment = str_website.ToLower().Contains("1degreebio") ? (comment.GetDouble("Rating") - 1) : comment.GetDouble("Rating"); 3724 var ratingComments = str_website.ToLower().Contains("1degreebio") ? GetDouble("Comments.Rating") : GetDouble("Comments.Rating"); 3725 var starsNumber = str_website.ToLower().Contains("1degreebio") ? 4 : 5; 3726 3727 <li class="col-xs-12"> 3728 <div class="col-xs-7 noPadding-left titleGray"> 3729 <a href="@str_website" @(!str_website.Contains("biolegend.com") ? "target='_blank'" : "")>@comment.GetString("Text")</a> 3730 </div> 3731 <div class="col-xs-3"> 3732 <ul class="rating"> 3733 @for (var s = starsNumber; s > 0; s--) 3734 { 3735 str_starClass = ""; 3736 if (s == Math.Ceiling(ratingComment)) 3737 { 3738 str_starClass = "class='star'"; 3739 str_halfStar = !(ratingComment - Math.Round(ratingComment) == 0) ? "fa-star-half" : "fa-star"; 3740 } 3741 else 3742 { 3743 str_halfStar = "fa-star"; 3744 } 3745 3746 <li data-star="@s" @str_starClass><i class="fa @str_halfStar"></i></li> 3747 } 3748 </ul> 3749 </div> 3750 <div class="col-xs-2 text-center">@dat_date.ToString("MM/dd/yyyy")</div> 3751 </li> 3752 } 3753 </ul> 3754 } 3755 3756 </div> 3757 </div> 3758 } 3759 } 3760 3761 @using System.Collections.Generic 3762 @using Dynamicweb.Caching 3763 @{ 3764 var str_productProtocols = GetString("Ecom:Product:Field.Protocols.Value").Replace('"', ' '); 3765 var isASRProt = GetString("Ecom:Product:Field.RegulatoryStatus.Value").Equals("ASR"); 3766 var isIVDProt = GetString("Ecom:Product:Field.RegulatoryStatus.Value").Equals("IVD"); 3767 3768 if (!string.IsNullOrEmpty(str_productProtocols) && !isASRProt && !isIVDProt) 3769 { 3770 var selectedProductId = GetString("Ecom:Product.ID"); 3771 var productProtocolsResults = new List<KeyValuePair<string,string>>(); 3772 var productProtocols = Cache.Current.Get("productProtocolsCache_" + selectedProductId); 3773 3774 if (productProtocols == null) 3775 { 3776 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 3777 { 3778 using (var commandProtocols = connection.CreateCommand()) 3779 { 3780 commandProtocols.CommandText = "SELECT * FROM itemtype_protocols WHERE Id in (" + str_productProtocols + ")"; 3781 using (var readerProtocols = commandProtocols.ExecuteReader()) 3782 { 3783 if (readerProtocols != null) 3784 { 3785 if (readerProtocols.FieldCount > 0) 3786 { 3787 while (readerProtocols.Read()) 3788 { 3789 var itemName = readerProtocols["Name"].ToString(); 3790 var itemLink = readerProtocols["Protocol"].ToString().Replace("Files/Files/BioLegend/", "Files/Images/"); 3791 3792 productProtocolsResults.Add(new KeyValuePair<string, string>(itemName, itemLink)); 3793 } 3794 } 3795 } 3796 } 3797 } 3798 3799 Cache.Current.Set("productProtocolsCache_" + selectedProductId, productProtocolsResults, CacheItemPolicy.DefaultStoragePolicy); 3800 @RenderProtocols(productProtocolsResults) 3801 3802 } 3803 } 3804 else 3805 { 3806 @RenderProtocols((List<KeyValuePair<string,string>>) productProtocols) 3807 } 3808 } 3809 } 3810 3811 @helper RenderProtocols(List<KeyValuePair<string,string>> productProtocolsResults) 3812 { 3813 <div id="productRelatedProtocols" class="col-xs-12 col-sm-9 noPadding pull-right"> 3814 <h2 class="col-xs-12 noPadding"> 3815 <a href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedProtocols" name="13">@Translate("RelatedProtocols", "Related Protocols")</a> 3816 </h2> 3817 3818 @SnippetStart("navigationAnchors") 3819 <li> 3820 <a class="anchor_13" href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedProtocols">@Translate("RelatedProtocols", "Related Protocols")</a> 3821 </li> 3822 @SnippetEnd("navigationAnchors") 3823 3824 <ul class="col-xs-12 noPadding"> 3825 @foreach (var protocolPair in productProtocolsResults) 3826 { 3827 var itemName = protocolPair.Key; 3828 var itemLink = protocolPair.Value; 3829 3830 <li class="col-xs-12"> 3831 <a target="_blank" href="@itemLink" title="@itemName"> 3832 @itemName 3833 </a> 3834 </li> 3835 } 3836 </ul> 3837 </div> 3838 } 3839 3840 @if (!isPdf) 3841 { 3842 if (!isIVD && !isASR) 3843 { 3844 <div id="productRelatedGroup" class="col-xs-12 hidden col-sm-offset-3 col-sm-9 noPadding"> 3845 <h2 class="col-xs-12 noPadding"> 3846 <a href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedGroup" name="12">@Translate("RelatedProducts", "Related Products")</a> 3847 </h2> 3848 3849 @SnippetStart("navigationAnchors") 3850 <li class="hidden"> 3851 <a class="anchor_12" href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedGroup">@Translate("RelatedProducts", "Related Products")</a> 3852 </li> 3853 @SnippetEnd("navigationAnchors") 3854 3855 <table id="tableRelatedProducts" class="col-xs-12 noPadding" data> 3856 <thead> 3857 <tr> 3858 <th>@Translate("Description", "Description")</th> 3859 <th>@Translate("Clone", "Clone")</th> 3860 <th>@Translate("Applications", "Applications")</th> 3861 </tr> 3862 </thead> 3863 <tbody> 3864 3865 </tbody> 3866 </table> 3867 </div> 3868 } 3869 3870 if (str_currentPageId == @printPage && str_productId == "9340") 3871 { 3872 <text> 3873 <br/><br/>This product is provided under an intellectual property license from Life Technologies Corporation.The transfer of this product is conditioned on the buyer using the purchased product solely in research conducted by the buyer, excluding contract research or any fee for service research, and the buyer must not(1) use this product or its components for (a) diagnostic, therapeutic or prophylactic purposes; (b)testing, analysis or screening services, or information in return for compensation on a per - test basis; or(c) manufacturing or quality assurance or quality control, and / or(2) sell or transfer this product or its components for resale, whether or not resold for use in research.For information on purchasing a license to this product for purposes other than as described above, contact Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008 USA or outlicensing@lifetech.com. 3874 </text> 3875 } 3876 } 3877 @{ 3878 bool isASRProd = GetString("Ecom:Product:Field.RegulatoryStatus.Value").Equals("ASR"); 3879 bool isIVDProd = GetString("Ecom:Product:Field.RegulatoryStatus.Value").Equals("IVD"); 3880 if(!isASRProd && !isIVDProd) { 3881 @* 3882 ID Name 3883 12 Alexa Fluor&reg; 594 3884 15 Biofunctional Antibodies - LEAF&trade; and Ultra-LEAF&trade; 3885 37 Breaking Buffers 3886 10 Brilliant Violet&trade; 3887 11 Brilliant Violet&trade; Mobile Application 3888 49 CD Molecule Chart 3889 26 CD Molecules 3890 27 CD Molecules Mobile Application 3891 25 Cell Markers 3892 52 Chemokines and Chemokine Receptors 3893 6 Custom Panel Construction 3894 50 Cytokines/Chemokines Mobile Application 3895 56 Direct-Blot &trade; 3896 57 Direct-Blot &trade; 3897 35 ELISA Kits and Sets 3898 36 ELISA Mobile Application 3899 38 Flow Cytometry Buffers 3900 8 Flow Cytometry Mobile Application 3901 4 Fluorescence Spectra Analyzer 3902 9 Fluorescence Spectra Analyzer Mobile Application 3903 5 Fluorophore Brightness Index 3904 7 Fluorophore Equivalency Tool 3905 19 GoInVivo&trade; Purified Bulk Antibodies 3906 20 Immune Checkpoints 3907 54 Integrin Explorer 3908 55 Integrin Explorer Mobile Application 3909 51 Interleukin Receptors 3910 21 LEAF&trade; - Low Endotoxin Azide Free 3911 31 LEGENDplex&trade; 3912 33 LEGENDScreen&trade; 3913 39 Live Cell/Dead Cell Discrimination 3914 42 MaxPar&reg; Ready Purified Antibodies 3915 43 Microscopy 3916 44 MitoSpy&trade; Mitochrondrial Probes 3917 46 MojoSort&trade; Magnetic Cell Separation 3918 28 MojoSort&trade; Webinar 3919 3 Multicolor Panel Selector 3920 14 Multicolor Staining Guide 3921 16 PE/Dazzle&trade; 594 Conjugates 3922 34 Pipettes of Fury 3923 1 Quality Control 3924 29 Recombinant Proteins 3925 45 Streptavidin Conjugates 3926 13 Tandem Dyes 3927 32 The Ken Lau Show Episode 6 - LEGENDplex&trade; 3928 17 The Tandem 3929 18 The Tandem Mobile Application 3930 61 True-Stain Monocyte Blocker 3931 41 Zombie Apocalypse 3932 40 Zombie Dyes App 3933 3934 str_productId 3935 str_productName 3936 str_productFormat 3937 productFieldType 3938 str_productOtherNames 3939 catalogFirstLetter 3940 *@ 3941 3942 List<string> pages = new List<string>(); 3943 pages.Add("1"); 3944 3945 if(str_productFormat.Contains("BV")) { 3946 pages.Add("10"); 3947 } 3948 3949 if(str_productFormat.Contains("A594")) { 3950 pages.Add("12"); 3951 } 3952 3953 if(str_productFormat.Contains("/")) { 3954 pages.Add("13"); 3955 pages.Add("14"); 3956 } 3957 3958 if(str_productFormat.Contains("LEAF")) { 3959 pages.Add("15"); 3960 } 3961 3962 if(str_productFormat.Contains("PE_DZL594")) { 3963 pages.Add("16"); 3964 } 3965 3966 if(str_productFormat.Contains("GOINVIVO")) { 3967 pages.Add("19"); 3968 pages.Add("20"); 3969 pages.Add("15"); 3970 } 3971 3972 if(str_productFormat.Contains("MOJO")) { 3973 pages.Add("46"); 3974 pages.Add("25"); 3975 pages.Add("26"); 3976 } 3977 3978 if(str_productFormat.Contains("RECOM")) { 3979 pages.Add("29"); 3980 } 3981 3982 if (!str_productFormat.Contains("LEAF") && !str_productFormat.Equals("BIOTIN") && !str_productFormat.Equals("ELISA") && !str_productFormat.Equals("ELISA_DLX") && !str_productFormat.Equals("ELISA_STD") && !str_productFormat.Equals("HRP") && !str_productFormat.Equals("Kit") && !str_productFormat.Equals("RECOM") && !str_productFormat.Equals("LEGEND MAX") && !str_productFormat.Equals("LPLEX") && !str_productFormat.Equals("LSCREEN") && !str_productFormat.Equals("MOJO") && !str_productFormat.Equals("PURE") && !str_productFormat.Equals("SOLUTION") && !str_productFormat.Equals("GOINVIVO") && !str_productFormat.Equals("DB_HRP") && !str_productFormat.Equals("")){ 3983 pages.Add("5"); 3984 pages.Add("4"); 3985 pages.Add("14"); 3986 pages.Add("6"); 3987 pages.Add("7"); 3988 } 3989 3990 if(productType.Equals("LEGENDplex")) { 3991 pages.Add("31"); 3992 } 3993 3994 if(productType.Equals("ELISAMAXLEGENDMAX")) { 3995 pages.Add("35"); 3996 } 3997 3998 if(productType.Equals("LEGENDScreen")) { 3999 pages.Add("33"); 4000 } 4001 4002 if(productType.Equals("BuffersSolutionsChemicals")) { 4003 pages.Add("38"); 4004 } 4005 4006 if(str_productName.Contains("Zombie")) { 4007 pages.Add("39"); 4008 } 4009 4010 if(str_productName.Contains("MaxPar")) { 4011 pages.Add("42"); 4012 } 4013 4014 if(str_productName.Contains("MitoSpy")) { 4015 pages.Add("43"); 4016 pages.Add("44"); 4017 } 4018 4019 if(str_productName.Contains("Phalloidin")) { 4020 pages.Add("43"); 4021 } 4022 4023 if(str_productName.Contains("Streptavidin")) { 4024 pages.Add("45"); 4025 } 4026 4027 if(str_productFormat.Equals("BIOTIN")) { 4028 pages.Add("45"); 4029 pages.Add("46"); 4030 } 4031 4032 if(str_productName.Contains(" CD") && !str_productFormat.Contains("MOJO")) { 4033 pages.Add("49"); 4034 } 4035 4036 if(Convert.ToInt32(catalogFirstLetter) == 5) 4037 { 4038 pages.Add("51"); 4039 pages.Add("52"); 4040 } 4041 4042 if(str_productOtherNames.ToUpper().Contains("INTEGRIN")) 4043 { 4044 pages.Add("54"); 4045 } 4046 4047 if(str_productRegulatoryStatus.Equals("ASR")) 4048 { 4049 pages.Add("59"); 4050 } 4051 4052 if(str_productFormat.Equals("FLEX_T")) 4053 { 4054 pages.Add("58"); 4055 pages.Add("45"); 4056 } 4057 4058 if(str_productFormat.Equals("APC_F750")) 4059 { 4060 pages.Add("60"); 4061 } 4062 4063 if(str_productId.Equals("14598")){ 4064 pages.Add("61"); 4065 } 4066 4067 //var relatedPages = (List<Dictionary<string, string>>) Cache.Current.Get("productRelatedPagesCache_" + str_productId); 4068 /*if (relatedPages == null) 4069 {*/ 4070 var relatedPages = GetRelatedPages(pages); 4071 //Cache.Current.Set("productRelatedPagesCache_" + str_productId, relatedPages, CacheItemPolicy.DefaultStoragePolicy); 4072 /*}*/ 4073 countRelatedPages = relatedPages.Count; 4074 4075 string str_pathways = GetString("Ecom:Product:Field.Pathways.Value"); 4076 Dictionary<string, string> pathwaysDict = new Dictionary<string, string>(){ 4077 {"1","CD4 and CD8 T-Cell Lineage"}, 4078 {"2","Apoptosis Through Death Receptors"}, 4079 {"3","Gamma-Delta T cells"}, 4080 {"4","Cyclins and Cell Cycle Regulation"}, 4081 {"5","Hematopoiesis from Multipotent Stem Cell"}, 4082 {"6","Hematopoiesis from Pluripotent Stem Cell"}, 4083 {"8","TH1 Pathway (Cellular Immune Response)"}, 4084 {"9","IL-2 Pathway"}, 4085 {"10","JAK/STAT Pathway"}, 4086 {"11","p38 Signaling"}, 4087 {"12","TH17 Pathway"}, 4088 {"13","TH2 Pathway (Humoral Immune Response)"}, 4089 {"19","Agranulocyte Adhesion and Diapedesis"}, 4090 {"20","14-3-3 Induced Intracellular Signaling"}, 4091 {"21","Akt Signaling"}, 4092 {"22","ATM Pathway"}, 4093 {"23","BAFF in B-Cell Signaling"}, 4094 {"24","B-Cell Receptor Pathway"}, 4095 {"25","Caspase Cascade"}, 4096 {"26","CD28 Signaling in T-Helper Cell"}, 4097 {"27","CD40 Signaling"}, 4098 {"28","Cellular Apoptosis Pathway"}, 4099 {"29","Chemokine Signaling"}, 4100 {"30","CTLA4 Signaling"}, 4101 {"31","Cytokine Network"}, 4102 {"32","EGF Pathway"}, 4103 {"33","Embryonic Stem Cell Pluripotency in Mouse"}, 4104 {"34","ErbB Family Pathway"}, 4105 {"35","ERK Signaling"}, 4106 {"36","FAK1 Pathway"}, 4107 {"37","Fas Signaling"}, 4108 {"38","GPCR Pathway"}, 4109 {"39","GSK3 Signaling"}, 4110 {"40","Human Embryonic Stem Cell Pluripotency"}, 4111 {"41","ICos-ICosL Pathway in T-Helper Cell"}, 4112 {"42","IL-1 Pathway"}, 4113 {"43","IL-4 Pathway"}, 4114 {"44","IL-6 Pathway"}, 4115 {"45","IL-10 Pathway"}, 4116 {"46","ILK Signaling"}, 4117 {"47","Integrin Pathway"}, 4118 {"48","Interferon Pathway"}, 4119 {"49","ITK and TCR Signaling"}, 4120 {"50","JNK Pathway"}, 4121 {"51","Lymphotoxin-beta Receptor Pathway"}, 4122 {"52","MAPK Signaling"}, 4123 {"53","Mitotic Roles of Polo Like Kinase"}, 4124 {"54","mTOR Pathway"}, 4125 {"55","Nanog in Mammalian ESC Pluripotency"}, 4126 {"56","NFAT Signaling and Lymphocyte Interactions"}, 4127 {"57","NF-&kappa;B (p50/p65) Pathway"}, 4128 {"58","Oct4 in Mammalian ESC Pluripotency"}, 4129 {"59","PDGF Pathway"}, 4130 {"60","PKC-&theta; Pathway"}, 4131 {"61","PPAR Pathway"}, 4132 {"62","PTEN Pathway"}, 4133 {"63","Ras Pathway"}, 4134 {"64","SOCS Pathway"}, 4135 {"65","Sumo Pathway"}, 4136 {"66","T-Cell Receptor Signaling"}, 4137 {"67","TGF-&beta; Pathway"}, 4138 {"68","TNF Superfamily Pathway"}, 4139 {"69","Toll-Like Receptors"}, 4140 {"70","TRAIL Pathway"}, 4141 {"71","TREM1 Pathway"}, 4142 {"72","VEGF Pathway"}, 4143 {"73","WNT Signaling"}, 4144 {"74","p53 Signaling"}, 4145 {"75","T Follicular Helper Cell Pathway"}, 4146 {"76","Cancer Elimination"}, 4147 {"78","Cancer Immunology - 3Es"}, 4148 {"79","Cancer Recognition"}, 4149 {"82","Cancer Recognition & Elimination"}, 4150 {"83","MDSC-induced Immune Suppression"}, 4151 {"84","Shedding MICA/B Antigens"}, 4152 {"85","Stat3-mediated Tumor Escape"}, 4153 {"86","Tregs in Tumor Escape"}, 4154 {"88","Immunologic Networks 2011"}, 4155 {"89","B cell Development and Activation"}, 4156 {"90","Myeloid-Derived Suppressor Cells"}, 4157 {"91","Regulatory T Cells"}, 4158 {"92","Dendritic Cells"}, 4159 {"93","Stem Cells and Development"}, 4160 {"94","Cancer Immunoediting"}, 4161 {"95","Chemokine Receptor Biology"}, 4162 {"97","Th17 Biology"}, 4163 {"98","Innate Immunity"}, 4164 {"99","Mechanisims of Cell Death"}, 4165 {"100","Dendritic Cell, Monocyte, and Macrophage Biology"}, 4166 {"101","Neurodegeneration"}, 4167 {"102","Innate Immune Signaling"}, 4168 {"103","Neuroinflammation"}, 4169 {"104","Autophagy"} 4170 }; 4171 4172 string[] pathwaysList = str_pathways.Split(','); 4173 //var pathwaysData = GetPathways(productSpecificity); 4174 4175 4176 if(!string.IsNullOrWhiteSpace(str_pathways) || countRelatedPages > 0) 4177 { 4178 <div id="productRelatedPages" class="col-xs-12 col-sm-9 noPadding pull-right"> 4179 <h2 class="col-xs-12 noPadding"> 4180 <a href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedPages" name="4">@Translate("RelatedPagesPathways","Related Pages & Pathways")</a> 4181 </h2> 4182 4183 @SnippetStart("navigationAnchors") 4184 <li> 4185 <a class="anchor_4" href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedPages">@Translate("RelatedPagesPathways","Related Pages & Pathways")</a> 4186 </li> 4187 @SnippetEnd("navigationAnchors") 4188 4189 @if(!string.IsNullOrWhiteSpace(str_pathways)) 4190 { 4191 <div class="col-xs-6 noPaddingLeft"> 4192 <h3>@Translate("Pathways","Pathways")</h3> 4193 <ul class="relatedPages relatedPathways col-xs-12 noPadding"> 4194 @foreach (string thisPathway in pathwaysList) 4195 { 4196 string title = pathwaysDict[thisPathway]; 4197 string pathwayID = thisPathway; 4198 4199 <li> 4200 <a href="http://www.biolegend.com/pop_pathway.php?id=@pathwayID" target="_blank"> 4201 @title 4202 </a> 4203 </li> 4204 } 4205 </ul> 4206 </div> 4207 } 4208 4209 @if(countRelatedPages > 0) 4210 { 4211 <div class='col-xs-6 @(!string.IsNullOrWhiteSpace(str_pathways) ?"noPaddingRight":"noPaddingLeft")'> 4212 <h3>@Translate("Pages","Pages")</h3> 4213 <ul class="relatedPages col-xs-12 noPadding"> 4214 @foreach (var row in relatedPages) 4215 { 4216 string link = (!String.IsNullOrWhiteSpace(row["Page"]) ? row["Page"] : row["LinkExt"]); 4217 string target = (link.Contains("http:") ? "target='_blank'" : ""); 4218 string iconSrc = row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg"); 4219 string itemName = row["Name"]; 4220 4221 <li> 4222 <a href="@LocalizeLinksHTML(link)" @target> 4223 @if(!String.IsNullOrWhiteSpace(iconSrc)) 4224 { 4225 <figure> 4226 <img width="20" height="20" src="@iconSrc" title="@itemName" alt="@itemName" /> 4227 </figure> 4228 } 4229 @itemName 4230 </a> 4231 </li> 4232 } 4233 </ul> 4234 </div> 4235 } 4236 </div> 4237 } 4238 } 4239 4240 @functions 4241 { 4242 /* Get related pages */ 4243 public static List<Dictionary<string, string>> GetRelatedPages(List<string> pages) 4244 { 4245 List<Dictionary<string, string>> relatedPages = new List<Dictionary<string, string>>(); 4246 4247 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 4248 { 4249 using (var command = connection.CreateCommand()) 4250 { 4251 command.CommandText = string.Format("SELECT Page,LinkExt,Icon_Source,Name from itemtype_relatedPages WHERE ID IN ({0})", string.Join(", ", pages)); 4252 4253 using (var reader = command.ExecuteReader()) 4254 { 4255 if (reader != null) 4256 { 4257 while (reader.Read()) 4258 { 4259 Dictionary<string, string> relatedPagesProperties = new Dictionary<string, string>(); 4260 4261 relatedPagesProperties.Add("Page", reader["Page"].ToString()); 4262 relatedPagesProperties.Add("LinkExt", reader["LinkExt"].ToString()); 4263 relatedPagesProperties.Add("Icon_Source", reader["Icon_Source"].ToString()); 4264 relatedPagesProperties.Add("Name", reader["Name"].ToString()); 4265 relatedPages.Add(relatedPagesProperties); 4266 } 4267 } 4268 } 4269 } 4270 } 4271 4272 return relatedPages; 4273 } 4274 } 4275 } 4276 @if (!isPdf) 4277 { 4278 if (!isASR) 4279 { 4280 4281 <div id="productRelatedFaqs" class="col-xs-12 col-sm-9 pull-right noPadding"> 4282 <h2 class="col-xs-12 noPadding"> 4283 <a href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedFaqs" name="6">@Translate("RelatedFAQs", "Related FAQs")</a> 4284 </h2> 4285 4286 @SnippetStart("navigationAnchors") 4287 <li> 4288 <a class="anchor_6" href="@Pageview.SearchFriendlyUrl.ToString()#productRelatedFaqs">@Translate("RelatedFAQs", "Related FAQs")</a> 4289 </li> 4290 @SnippetEnd("navigationAnchors") 4291 4292 @using System 4293 @using System.Collections.Generic 4294 @using Dynamicweb.Caching 4295 @{ 4296 var filterFormatAndRegulatoryProducts = ""; 4297 var filterAppAbrv = ""; 4298 var filterProductName = ""; 4299 4300 int countNumberRelatedFaqs = 0; 4301 string[] productAbrev = str_productAppAbrv.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); 4302 string[] str_productNameSplitted = str_productName.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries); 4303 4304 Dictionary<string, string> productFormats = new Dictionary<string, string>(); 4305 productFormats.Add("PurifiedMaxParReady", "MaxPar Ready"); 4306 productFormats.Add("PerCPCy55", "PerCp/Cy5.5"); 4307 productFormats.Add("UltraLEAF", "Ultra-LEAF"); 4308 productFormats.Add("FlexT", "Flex-T"); 4309 productFormats.Add("BrilliantViolet421", "Brilliant Violet 421"); 4310 productFormats.Add("BrilliantViolet510", "Brilliant Violet 510"); 4311 productFormats.Add("BrilliantViolet570", "Brilliant Violet 570"); 4312 productFormats.Add("BrilliantViolet605", "Brilliant Violet 605"); 4313 productFormats.Add("BrilliantViolet650", "Brilliant Violet 650"); 4314 productFormats.Add("BrilliantViolet711", "Brilliant Violet 711"); 4315 productFormats.Add("BrilliantViolet785", "Brilliant Violet 785"); 4316 4317 string productFormatTranslation = str_productFormat; 4318 bool hasFaqs = false; 4319 4320 if (productFormats.ContainsKey(str_productFormat)) 4321 { 4322 productFormatTranslation = productFormats[productFormatTranslation]; 4323 } 4324 4325 filterFormatAndRegulatoryProducts = " OR Keywords LIKE '%|"+productFormatTranslation+"|%' OR Keywords LIKE '%|"+str_productRegulatoryStatus+"|%' "; 4326 4327 foreach(var x in productAbrev) 4328 { 4329 filterAppAbrv += " OR Keywords LIKE '%|"+x.Trim().Replace("\"","").Replace("\"","")+"|%' "; 4330 } 4331 4332 foreach(var x in str_productNameSplitted) 4333 { 4334 filterProductName += " OR Keywords LIKE '%|"+ x.Replace("(","").Replace(")","").Replace("®","").Replace("™","").Replace("&trade;","").Replace("&reg;","").Replace("ß","") + "|%' "; 4335 } 4336 4337 var productFaqsResults = new List<KeyValuePair<string,string>>(); 4338 var productFaqs = Cache.Current.Get("productFaqsCache_" + str_productId); 4339 4340 if (productFaqs == null) 4341 { 4342 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 4343 { 4344 using (var command = connection.CreateCommand()) 4345 { 4346 command.CommandText = string.Format("SELECT * FROM itemtype_faqs WHERE Keywords LIKE '|All Products|' OR Keywords LIKE '%|" + str_productId + "|%'" + (!string.IsNullOrWhiteSpace(productClone) ? " OR Keywords LIKE '%|" + productClone + "|%' " : "") + filterFormatAndRegulatoryProducts + filterAppAbrv + filterProductName + " ORDER BY Sort ASC"); 4347 4348 using (var reader = command.ExecuteReader()) 4349 { 4350 if (reader != null) 4351 { 4352 while (reader.Read()) 4353 { 4354 if (reader["ID"].ToString() != "4361" && str_productId != "10860") 4355 { 4356 hasFaqs = true; 4357 var itemQ = reader["Question"].ToString(); 4358 var itemA = reader["Answer"].ToString(); 4359 4360 productFaqsResults.Add(new KeyValuePair<string, string>(itemQ, itemA)); 4361 } 4362 } 4363 } 4364 } 4365 4366 Cache.Current.Set("productFaqsCache_" + str_productId, productFaqsResults, CacheItemPolicy.DefaultStoragePolicy); 4367 @RenderFaqs(productFaqsResults, hasFaqs) 4368 } 4369 } 4370 } 4371 else 4372 { 4373 hasFaqs = true; 4374 @RenderFaqs((List<KeyValuePair<string,string>>) productFaqs, hasFaqs) 4375 } 4376 4377 if (!hasFaqs) 4378 { 4379 @Translate("noFaqsForThisProduct","There are no FAQs for this product.") 4380 @:@SnippetStart("hideRelatedFaqs") hidden @SnippetEnd("hideRelatedFaqs") 4381 } 4382 } 4383 4384 @helper RenderFaqs(List<KeyValuePair<string,string>> productFaqsResults, bool hasFaqs) 4385 { 4386 <dl class="col-xs-12 noPadding"> 4387 @foreach (var faqPair in productFaqsResults) 4388 { 4389 hasFaqs = true; 4390 var itemQ = faqPair.Key; 4391 var itemA = faqPair.Value; 4392 4393 <dt> 4394 @itemQ 4395 </dt> 4396 <dd> 4397 @itemA 4398 </dd> 4399 } 4400 </dl> 4401 } 4402 4403 </div> 4404 } 4405 } 4406 4407 @if (otherFormats != null && otherFormats.Any() && !isASR && !isIVD) 4408 { 4409 <div id="productOtherFormats" class="col-xs-12 col-sm-9 pull-right noPadding" data-thDescription='@Translate("Description", "Description")' data-thClone='@Translate("Clone", "Clone")' data-thAppllications='@Translate("Applications", "Applications")'> 4410 <h2 class="col-xs-12 noPadding"> 4411 <a href="@Pageview.SearchFriendlyUrl.ToString()#productOtherFormats" name="11">@Translate("OtherFormats", "Other Formats")</a> 4412 </h2> 4413 4414 <a class="btn btn-default" href="/Default.aspx?ID=@searchPageID&amp;Specificity=@productSpecificity"> 4415 @Translate("viewAllReagents1", "View All") @productSpecificityAlt @Translate("viewAllReagents2", "Reagents") 4416 </a> 4417 4418 @RenderCustomConjugationButton(catalogFirstTwoNumbers, catalogFirstThreeNumbers, formRequestConjugation) 4419 4420 @if (isPdf) 4421 { 4422 var count = 0; 4423 foreach (var relatedProducts in otherFormats.GroupBy(x => x["ProductName"]).Select(x => x.First())) 4424 { 4425 @(count != 0 ? ", " : "")@relatedProducts["ProductName"] 4426 count++; 4427 } 4428 } 4429 else 4430 { 4431 <table id="tableOtherFormats" class="col-xs-12 noPadding"> 4432 <thead> 4433 <tr> 4434 <th>@Translate("Description")</th> 4435 <th>@Translate("Clone")</th> 4436 <th>@Translate("Applications")</th> 4437 </tr> 4438 </thead> 4439 @foreach (var relatedProducts in otherFormats) 4440 { 4441 var name = relatedProducts["ProductName"]; 4442 var applications = relatedProducts["AppAbrv"]; 4443 var id = relatedProducts["ProductId"]; 4444 var url = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + detailPageId + "&ProductID=" + id); 4445 4446 <tr> 4447 <td><a href="@url">@name</a></td> 4448 <td>@productClone</td> 4449 <td>@applications</td> 4450 </tr> 4451 } 4452 </table> 4453 } 4454 </div> 4455 4456 @SnippetStart("navigationAnchors") 4457 <li> 4458 <a class="anchor_11" href="@Pageview.SearchFriendlyUrl.ToString()#productOtherFormats">@Translate("OtherFormats", "Other Formats")</a> 4459 </li> 4460 @SnippetEnd("navigationAnchors") 4461 4462 } 4463 4464 <div id="productCertificate" class="col-xs-12 col-sm-9 pull-right noPadding"> 4465 <h2 class="col-xs-12 noPadding"> 4466 <a href="@Pageview.SearchFriendlyUrl.ToString()#productCertificate" name="8">@Translate("CertificateOfAnalysis","Certificate of Analysis")</a> 4467 </h2> 4468 4469 @SnippetStart("navigationAnchors") 4470 <li> 4471 <a class="anchor_8" href="@Pageview.SearchFriendlyUrl.ToString()#productCertificate">@Translate("CertificateOfAnalysis","Certificate of Analysis")</a> 4472 </li> 4473 @SnippetEnd("navigationAnchors") 4474 4475 <form id="coaRedirectForm" target="_blank" action="/Default.aspx?action=Detail&Id=@(coaPage)" method="post" class="col-xs-12 noPadding"> 4476 <fieldset class="col-xs-4 noPaddingLeft"> 4477 <label> 4478 @Translate("LotNum","Lot #"): <input type="text" value="" name="Coa.LotId" /> 4479 </label> 4480 </fieldset> 4481 <input type="hidden" name="action" value="Detail" /> 4482 <input type="submit" value="Submit" class="btn btn-primary"> 4483 </form> 4484 </div> 4485 4486 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 4487 @using System 4488 @using System.Collections.Generic 4489 @using Dynamicweb.Caching 4490 @{ 4491 var isPdfView = Convert.ToBoolean(Dynamicweb.Context.Current.Request.Params["pdf"]); 4492 4493 if (!isPdfView) 4494 { 4495 var hasProds = false; 4496 var has10Prods = false; 4497 var orderResults = new List<string>(); 4498 var orderLineProductData = Cache.Current.Get("orderLineProductDataCache_" + str_productId); 4499 4500 if (orderLineProductData == null) 4501 { 4502 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 4503 { 4504 using (var command = connection.CreateCommand()) 4505 { 4506 command.CommandText = string.Format("SELECT DISTINCT TOP 10 [OrderLineOrderID] FROM EcomOrderLines WHERE [OrderLineProductID] = '" + str_productId + "'"); 4507 4508 using (var reader = command.ExecuteReader()) 4509 { 4510 if (reader != null) 4511 { 4512 while (reader.Read()) 4513 { 4514 var thisOrder = reader["OrderLineOrderID"].ToString(); 4515 orderResults.Add(thisOrder); 4516 } 4517 } 4518 } 4519 } 4520 } 4521 4522 Cache.Current.Set("orderLineProductDataCache_" + str_productId, orderResults, CacheItemPolicy.DefaultStoragePolicy); 4523 } 4524 else 4525 { 4526 orderResults = (List<string>) orderLineProductData; 4527 } 4528 4529 if (orderResults.Count > 9) 4530 { 4531 var productData = Cache.Current.Get("productDataCache_" + str_productId); 4532 4533 if (productData == null) 4534 { 4535 var productList = new List<Dictionary<string,string>>(); 4536 4537 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 4538 { 4539 using (var command = connection.CreateCommand()) 4540 { 4541 command.CommandText = string.Format("SELECT COUNT([ProductName]) Count, [ProductName], [Clone], [OrderLineProductID], [Specificity], [ProductImageSmall] FROM EcomOrderLines INNER JOIN EcomProducts ON [ProductID] = [OrderLineProductID] WHERE [OrderLineOrderID] IN ( SELECT DISTINCT [OrderLineOrderID] FROM EcomOrderLines WHERE [OrderLineProductID] = '" + str_productId + "' ) AND [OrderLineProductID] <> '' AND [OrderLineProductID] <> '" + str_productId + "' GROUP BY [ProductName],[Clone], [OrderLineProductID], [Specificity], [ProductImageSmall] ORDER BY Count DESC"); 4542 4543 using (var reader = command.ExecuteReader()) 4544 { 4545 if (reader != null) 4546 { 4547 while (reader.Read()) 4548 { 4549 var product = new Dictionary<string, string> 4550 { 4551 {"ProductName", reader["ProductName"].ToString()}, 4552 {"Specificity", reader["Specificity"].ToString()}, 4553 {"OrderLineProductID", reader["OrderLineProductID"].ToString()}, 4554 {"Clone", reader["Clone"].ToString()}, 4555 {"ProductImageSmall", reader["ProductImageSmall"].ToString()} 4556 }; 4557 productList.Add(product); 4558 } 4559 } 4560 } 4561 } 4562 } 4563 Cache.Current.Set("productDataCache_" + str_productId, productList, CacheItemPolicy.DefaultStoragePolicy); 4564 @RenderAlsoPurchasedProducts(productList, str_currentPageId) 4565 } 4566 else 4567 { 4568 @RenderAlsoPurchasedProducts((List<Dictionary<string,string>>) productData, str_currentPageId) 4569 } 4570 } 4571 } 4572 } 4573 4574 @helper RenderAlsoPurchasedProducts(List<Dictionary<string,string>> productList, string str_currentPageId) 4575 { 4576 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); //CUSTOM CODE 4577 4578 <div id="customersAlsoPurchased" class="col-xs-12 col-sm-9 pull-right noPadding"> 4579 <div> 4580 <h2 class="col-xs-12 noPadding">Customers Also Purchased</h2></div> 4581 @{ 4582 var apCount = 0; 4583 var prevSpecificity = ""; 4584 <div class="prevViewedContainer"> 4585 @foreach(var product in productList) 4586 { 4587 if (apCount == 4) 4588 { 4589 break; 4590 } 4591 var name = product["ProductName"]; 4592 var specificity = product["Specificity"]; 4593 var prodID = product["OrderLineProductID"]; 4594 var clone = product["Clone"]; 4595 var image = "/Files/" + product["ProductImageSmall"]; 4596 var url = "/Default.aspx?ID=" + str_currentPageId + "&productid=" + prodID; 4597 var cloneSearch = LocalizeLinksHTML("/dwcountry/search-results?Clone=" + clone); 4598 var currentBG = ""; 4599 if (apCount % 2 == 0) 4600 { 4601 currentBG = " prevViewedItemContentAltBG"; 4602 } 4603 if (specificity == prevSpecificity) 4604 { 4605 } 4606 else 4607 { 4608 <text> 4609 <div class="prevViewedItem @currentBG"> 4610 <div class="prevViewedDetailContainer"> 4611 <div class="prevViewedItemContent"> 4612 <a href="@url">@name</a><br/><hr/> 4613 @if (clone == "") 4614 { 4615 <br/> 4616 <br/> 4617 } 4618 else 4619 { 4620 <span class="prevViewedItemSubheader">Clone:</span> 4621 <a href="@cloneSearch">@clone</a> 4622 <br/> 4623 } 4624 4625 </div> 4626 <div class="prevViewedItemImg"> 4627 @if (product["ProductImageSmall"] == "") 4628 { 4629 <img src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/biomantrans1024.png"/> 4630 <br/> 4631 } 4632 else 4633 { 4634 <img src="@cdnStaticDomain@image"/> 4635 <br/> 4636 } 4637 4638 </div> 4639 </div> 4640 </div> 4641 </text> 4642 apCount++; 4643 } 4644 } 4645 </div> 4646 } 4647 </div> 4648 } 4649 4650 @if(str_currentPageId == printPage && (isIVD || isASR)) 4651 { 4652 <figure> 4653 <img src="@cdnStaticDomain/Files/Images/media_assets/products/Glossary-table-draft-V2.png" /> 4654 </figure> 4655 } 4656 4657 <a class="goTop bl bl-goToTop text-hide" href="javascript:void(0);"> 4658 @Translate("goToTop","Go To Top") 4659 </a> 4660 4661 @if(versionDate != null && !string.IsNullOrWhiteSpace(GetString("Ecom:Product:Field.VersionNumber.Value.Clean"))) 4662 { 4663 <span class="versionDate col-xs-12 col-sm-9 pull-right"> 4664 @Translate("version","Version")<text>:</text> @GetString("Ecom:Product:Field.VersionNumber.Value.Clean") &nbsp;&nbsp; @Translate("revisionDate","Revision Date")<text>:</text> @dateTimeVersionDate.ToString("MM/dd/yyyy") 4665 </span> 4666 } 4667 4668 </article> 4669 4670 @if (isPdf) 4671 { 4672 var hasImages = lst_images.Any(); 4673 var glossaryClass = hasImages ? "glossary" : ""; 4674 <dl class='@(str_productId.Equals("10801") ? "col-xs-12" : "col-xs-12") noPadding pdfImagesContainer'> 4675 @if (hasImages) 4676 { 4677 <h2 class="col-xs-12 noPadding"> 4678 @Translate("ProductData", "Product Data") 4679 </h2> 4680 <div class="col-xs-12" id="productDataImage"> 4681 @foreach (var image in lst_images.OrderBy(x => x.Item2).ToList()) 4682 { 4683 if (!String.IsNullOrWhiteSpace(image.Item1.ToString())) 4684 { 4685 string str_getimageDataImg = GetImage(image.Item1.ToString(), 500, 300, 0, 0, 0, 0, "jpg", 90); 4686 <div class="col-xs-12 figure"> 4687 <dt class="col-xs-8 noPaddingLeft textCenter"> 4688 <img class="maxWidth" src="@str_getimageDataImg" title="@image.Item2" alt="@image.Item2"/> 4689 </dt> 4690 @if (!string.IsNullOrWhiteSpace(image.Item3.ToString())) 4691 { 4692 <dd class="col-xs-4 noPaddingRight"> 4693 @image.Item3 4694 </dd> 4695 } 4696 </div> 4697 } 4698 } 4699 </div> 4700 } 4701 4702 @if (isIVD || isASR) 4703 { 4704 <figure> 4705 <img class="@glossaryClass glossaryImage" src="@cdnStaticDomain/Files/Images/media_assets/products/Glossary-table-draft-V2.png"/> 4706 </figure> 4707 } 4708 </dl> 4709 } 4710 4711 <div class="footerStatement col-xs-12"> 4712 4713 @CalculateFooterDisclaimer(str_footerDisclaimer,str_productRegulatoryStatus,str_productFormat) 4714 @itemArea["ProductFooterWarning"].ToString() 4715 </div> 4716 4717 @if(!string.IsNullOrEmpty(productClone) || (productSpecificity.Equals("Streptavidin") || productSpecificity.Equals("Annexin V"))) 4718 { 4719 <div id="compareFormatsOverlay" class="blackOverlay"> 4720 <h2 class="hidden">@Translate("compareDataAcrossAllFormats","Compare Data Across All Formats")</h2> 4721 @itemArea["ProductCompareDataWarning"].ToString() 4722 4723 @if (otherFormats != null && otherFormats.Any()) 4724 { 4725 <ul class="row compareFormatsList"> 4726 @foreach (var relatedProducts in otherFormats) 4727 { 4728 var name = relatedProducts["ProductName"]; 4729 var id = relatedProducts["ProductId"]; 4730 var image1Description = TruncateString(relatedProducts["Image1Description"], 60); 4731 var image1Title = relatedProducts["Image1Title"]; 4732 var image1 = relatedProducts["ProductImageSmall"]; 4733 var image1Path = string.IsNullOrEmpty(image1) ? string.Empty : GetImage(image1, 150, 0); 4734 var image2Description = TruncateString(relatedProducts["Image2Description"], 60); 4735 var image2Title = relatedProducts["Image2Title"]; 4736 var image2 = relatedProducts["ProductImageMedium"]; 4737 var image2Path = string.IsNullOrEmpty(image2) ? string.Empty : GetImage(image2, 150, 0); 4738 var image3Description = TruncateString(relatedProducts["Image3Description"], 60); 4739 var image3Title = relatedProducts["Image3Title"]; 4740 var image3 = relatedProducts["ProductImageLarge"]; 4741 var image3Path = string.IsNullOrEmpty(image3) ? string.Empty : GetImage(image3, 150, 0); 4742 var image4Description = TruncateString(relatedProducts["Image4Description"], 60); 4743 var image4Title = relatedProducts["Image4Title"]; 4744 var image4 = relatedProducts["Image4Path"]; 4745 var image4Path = string.IsNullOrEmpty(image4) ? string.Empty : GetImage(image4.StartsWith("images",StringComparison.InvariantCultureIgnoreCase) ? image4 : "images/" + image4, 150, 0); 4746 var image5Description = TruncateString(relatedProducts["Image5Description"], 60); 4747 var image5Title = relatedProducts["Image5Title"]; 4748 var image5 = relatedProducts["Image5Path"]; 4749 var image5Path = string.IsNullOrEmpty(image5) ? string.Empty : GetImage(image5.StartsWith("images",StringComparison.InvariantCultureIgnoreCase) ? image5 : "images/" + image5, 150, 0); 4750 var image6Description = TruncateString(relatedProducts["Image6Description"], 60); 4751 var image6Title = relatedProducts["Image6Title"]; 4752 var image6 = relatedProducts["Image6Path"]; 4753 var image6Path = string.IsNullOrEmpty(image6) ? string.Empty : GetImage(image6.StartsWith("images",StringComparison.InvariantCultureIgnoreCase) ? image6 : "images/" + image6, 150, 0); 4754 var url = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + detailPageId + "&ProductID=" + id); 4755 4756 <li class="noResponsive"> 4757 <h3>@name</h3> 4758 @if (!string.IsNullOrEmpty(image1Path)) 4759 { 4760 <a href="@url"> 4761 <figure> 4762 4763 <img src="@image1Path" alt="@image1Title" title="@image1Title"/> 4764 @if (!string.IsNullOrEmpty(image1Description)) 4765 { 4766 <figcaption>@image1Description</figcaption> 4767 } 4768 </figure> 4769 </a> 4770 } 4771 @if (!string.IsNullOrEmpty(image2Path)) 4772 { 4773 <a href="@url"> 4774 <figure> 4775 <img src="@image2Path" alt="@image2Title" title="@image2Title"/> 4776 @if (!string.IsNullOrEmpty(image2Description)) 4777 { 4778 <figcaption>@image2Description</figcaption> 4779 } 4780 </figure> 4781 </a> 4782 } 4783 @if (!string.IsNullOrEmpty(image3Path)) 4784 { 4785 <a href="@url"> 4786 <figure> 4787 <img src="@image3Path" alt="@image3Title" title="@image3Title"/> 4788 @if (!string.IsNullOrEmpty(image3Description)) 4789 { 4790 <figcaption>@image3Description</figcaption> 4791 } 4792 </figure> 4793 </a> 4794 } 4795 @if (!string.IsNullOrEmpty(image4Path)) 4796 { 4797 <a href="@url"> 4798 <figure> 4799 <img src="@image4Path" alt="@image4Title" title="@image4Title"/> 4800 @if (!string.IsNullOrEmpty(image4Description)) 4801 { 4802 <figcaption>@image4Description</figcaption> 4803 } 4804 </figure> 4805 </a> 4806 } 4807 @if (!string.IsNullOrEmpty(image5Path)) 4808 { 4809 <a href="@url"> 4810 <figure> 4811 <img src="@image5Path" alt="@image5Title" title="@image5Title"/> 4812 @if (!string.IsNullOrEmpty(image5Description)) 4813 { 4814 <figcaption>@image5Description</figcaption> 4815 } 4816 </figure> 4817 </a> 4818 } 4819 @if (!string.IsNullOrEmpty(image6Path)) 4820 { 4821 <a href="@url"> 4822 <figure> 4823 <img src="@image6Path" alt="@image6Title" title="@image6Title"/> 4824 @if (!string.IsNullOrEmpty(image6Description)) 4825 { 4826 <figcaption>@image6Description</figcaption> 4827 } 4828 </figure> 4829 </a> 4830 } 4831 </li> 4832 } 4833 </ul> 4834 } 4835 </div> 4836 } 4837 4838 </div> 4839 4840 @SnippetStart("jsOnLoad") @:onLoadProductDetail({obj_product:@str_productJSON}); @SnippetEnd("jsOnLoad") 4841 @SnippetStart("metaViewport") @* <meta name="viewport" content="initial-scale=1.0, width=device-width, user-scalable=no" /> *@ @SnippetEnd("metaViewport") 4842 @SnippetStart("productName") @: @str_productName @(previousCompany.Any() && !isIVD && !isASR && !previouslyConcatName.Equals("") ? string.Format("({0})",previouslyConcatName) : "") @SnippetEnd("productName") 4843 } 4844 } 4845 4846 @functions { 4847 4848 public static string TruncateString(string input, int length) 4849 { 4850 if (input.Length <= length) 4851 { 4852 return input; 4853 } 4854 else 4855 { 4856 return input.Substring(0, length) + "..."; 4857 } 4858 } 4859 }
ProductsHere

Login / Register
Remember me
Forgot your password? Reset password?
Create an Account