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

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