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