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