Is your dog scratching itself uncontrollably? Your dear pet may be suffering from a bad case of flea or tick infestation. Now, you can protect your dog with our range of flea and tick control products.
Error executing template "Designs/PLC/eCom/Productlist/PLCProductList_without_filter.cshtml" System.IndexOutOfRangeException: Index was outside the bounds of the array. at CompiledRazorTemplates.Dynamic.RazorEngine_9f41c45f6f8643e5999426b991466acb.<>c__DisplayClass1_0.b__0(TextWriter __razor_helper_writer) in E:\www\uat.petloverscentre.co.th\Solution\Files\Templates\Designs\PLC\eCom\Productlist\PLCProductList_without_filter.cshtml:line 396 at CompiledRazorTemplates.Dynamic.RazorEngine_9f41c45f6f8643e5999426b991466acb.Execute() in E:\www\uat.petloverscentre.co.th\Solution\Files\Templates\Designs\PLC\eCom\Productlist\PLCProductList_without_filter.cshtml:line 2028 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. b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System.Web 2 3 @using System.Text.RegularExpressions 4 @using System.Web 5 6 7 @functions{ 8 public class WrapMethods 9 { 10 11 12 //Gets the contrasting color 13 public static string getContrastYIQ(string hexcolor) 14 { 15 if (hexcolor != "") 16 { 17 hexcolor = Regex.Replace(hexcolor, "[^0-9a-zA-Z]+", ""); 18 19 int r = Convert.ToByte(hexcolor.Substring(0, 2), 16); 20 int g = Convert.ToByte(hexcolor.Substring(2, 2), 16); 21 int b = Convert.ToByte(hexcolor.Substring(4, 2), 16); 22 int yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 23 24 if (yiq >= 128) 25 { 26 return "black"; 27 } 28 else 29 { 30 return "white"; 31 } 32 } 33 else 34 { 35 return "black"; 36 } 37 } 38 39 40 //Truncate text 41 public static string Truncate (string value, int count, bool strip=true) 42 { 43 if (strip == true){ 44 value = StripHtmlTagByCharArray(value); 45 } 46 47 if (value.Length > count) 48 { 49 value = value.Substring(0, count - 1) + "..."; 50 } 51 52 return value; 53 } 54 55 56 //Strip text from HTML 57 public static string StripHtmlTagByCharArray(string htmlString) 58 { 59 char[] array = new char[htmlString.Length]; 60 int arrayIndex = 0; 61 bool inside = false; 62 63 for (int i = 0; i < htmlString.Length; i++) 64 { 65 char let = htmlString[i]; 66 if (let == '<') 67 { 68 inside = true; 69 continue; 70 } 71 if (let == '>') 72 { 73 inside = false; 74 continue; 75 } 76 if (!inside) 77 { 78 array[arrayIndex] = let; 79 arrayIndex++; 80 } 81 } 82 return new string(array, 0, arrayIndex); 83 } 84 85 //Make the correct count of columns 86 public static string ColumnMaker(int Col, string ScreenSize) 87 { 88 string Columns = ""; 89 90 switch (Col) 91 { 92 case 1: 93 Columns = "col-"+ScreenSize+"-12"; 94 break; 95 96 case 2: 97 Columns = "col-"+ScreenSize+"-6"; 98 break; 99 100 case 3: 101 Columns = "col-"+ScreenSize+"-4"; 102 break; 103 104 case 4: 105 Columns = "col-"+ScreenSize+"-3"; 106 break; 107 108 default: 109 Columns = "col-"+ScreenSize+"-3"; 110 break; 111 } 112 113 return Columns; 114 } 115 116 117 private string Custom(string firstoption, string secondoption) 118 { 119 if (firstoption == "custom") 120 { 121 return secondoption; 122 } 123 else 124 { 125 return firstoption; 126 } 127 } 128 } 129 } 130 @using DWAPAC.PLC.Services 131 @using Dynamicweb.Security.UserManagement.Common.CustomFields 132 133 134 <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 135 <script type="text/javascript" src="/Files/Templates/Designs/PLC/eCom/ProductList/Compare.js"></script> 136 <style> 137 .ui-dialog-titlebar, .ui-dialog-buttonset button{ 138 background:#662010; 139 color: #FFF; 140 } 141 .clearfix{ 142 margin-bottom: -10px !important; 143 } 144 145 #myBtn { 146 display: none; 147 position: fixed; 148 bottom: 55px; 149 right: 9%; 150 z-index: 99; 151 font-size: 18px; 152 border: none; 153 outline: none; 154 color: white; 155 cursor: pointer; 156 padding: 15px; 157 border-radius: 4px; 158 background-image: url(/Files/Templates/Designs/PLC/assets/images/up_arrow_icon.png); 159 background-size: 35px; 160 width: 35px; 161 height: 35px; 162 } 163 164 .product-box .prod-img img { 165 display: block; 166 margin: 0px auto; 167 } 168 .prod-pbox{ 169 height:115px; 170 } 171 /*::before { 172 padding-top:0.5em; 173 }commented out By AKS due to menu collapsing problem */ 174 input[type=number]::-webkit-inner-spin-button, 175 input[type=number]::-webkit-outer-spin-button { 176 -webkit-appearance: none; 177 -moz-appearance: none; 178 appearance: none; 179 margin: 0; 180 } 181 @if(GetInteger("Ecom:ProductList.PageProdCnt") > 0) 182 { 183 <text> 184 .btn-addto-cart { 185 margin-bottom:5px; 186 background-color: #ad2d14; 187 height:38px; 188 border-radius: 3px; 189 } 190 .btn-addto-cart:hover { 191 //background-color: #500d00; 192 } 193 .glyphicon-minus, .glyphicon-plus { 194 cursor: pointer; 195 color: #ffffff; 196 } 197 </text> 198 if(System.Web.HttpContext.Current.Request.Browser.Type.ToUpper().Contains("SAFARI")) 199 { 200 <text> 201 .btn-addto-cart div a, .btn-addto-cart a { 202 line-height: 36px; 203 } 204 #addtocartLink { 205 margin-top: 30px !important; 206 } 207 @@media screen (max-width: 340px){ 208 .btn-addto-cart div a, .btn-addto-cart a { 209 padding-top: 0px; 210 } 211 } 212 .fixsize { 213 margin-top: 120px; 214 } 215 </text> 216 } 217 else 218 { 219 220 } 221 } 222 else 223 { 224 if(System.Web.HttpContext.Current.Request.Browser.Type.ToUpper().Contains("SAFARI")) 225 { 226 <text> 227 .btn-addto-cart div a, .btn-addto-cart a { 228 line-height: 36px; 229 } 230 #addtocartLink { 231 margin-top: 30px !important; 232 } 233 @@media screen (max-width: 340px){ 234 .btn-addto-cart div a, .btn-addto-cart a { 235 padding-top: 0px; 236 } 237 } 238 </text> 239 } 240 else 241 { 242 243 } 244 } 245 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 246 .mblAddTo { 247 padding-left:30px !important; 248 } 249 } 250 @@media screen and (max-width: 700px) and (min-width: 375px) and (max-height: 700px) { 251 .mblpromologo { 252 padding-bottom:2px; 253 } 254 } 255 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 256 .mblpromologo1 { 257 padding-bottom:-5px; 258 } 259 } 260 @@media screen and (max-width: 800px) and (min-width: 768px) and (max-height: 1024px) { 261 .mblPromologoipad { 262 padding-bottom:5px; 263 } 264 } 265 @@media screen and (max-width: 1024px) and (min-width: 768px) and (max-height: 800px) { 266 .mblPromologoipad1 { 267 padding-bottom:5px; 268 } 269 } 270 @@media screen and (max-width: 800px) and (min-width: 760px) and (max-height: 1200px) { 271 .mblPromologolap { 272 padding-bottom:2px; 273 } 274 } 275 276 277 @@media screen and (max-width: 800px) and (min-width: 700px) and (max-height: 1030px) { 278 .mblAddTo { 279 padding-left:70px !important; 280 } 281 } 282 283 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 284 .btn-sale{ 285 position: absolute; 286 z-index: 10; 287 right: 10px; 288 width: 80px; 289 padding-top: 8px !important; 290 } 291 } 292 </style> 293 294 @helper GetProductList(dynamic Loop,bool birthday,string becomeAMemberPrice, int ColMD=3, int ColSM=3, int ColXS=1) 295 { 296 297 var birthday0 = false; 298 bool showBirthdayPrice = false; 299 bool userHasVIPCard = false; 300 bool userHasValidVipCard = false; 301 DateTime expDate = new DateTime(); 302 DateTime today = DateTime.Now; 303 304 if (Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 305 { 306 int i = Convert.ToInt32(GetGlobalValue("Global:Extranet.UserID")); 307 Dynamicweb.Security.UserManagement.User u = Dynamicweb.Security.UserManagement.User.GetUserByID(i); 308 309 foreach (CustomFieldValue val in u.CustomFieldValues) 310 { 311 CustomField field = val.CustomField; 312 string fieldName = field.Name; 313 314 if(fieldName == "DOB") 315 { 316 DateTime bDay = new DateTime(); 317 if(val.Value != null) 318 { 319 bDay = (DateTime)val.Value; 320 if(bDay.Month == today.Month) 321 { 322 birthday0 = true; 323 } 324 } 325 } 326 if(fieldName=="ExpryDate") 327 { 328 expDate=(DateTime)val.Value; 329 } 330 331 switch (fieldName.ToUpper()) 332 { 333 case "VIP CARD NO": 334 userHasVIPCard = !string.IsNullOrEmpty((val.Value).ToString()); 335 break; 336 case "EXPRYDATE": 337 userHasValidVipCard = expDate.Date < today.Date; 338 break; 339 default: 340 break; 341 } 342 } 343 } 344 showBirthdayPrice = birthday0 && userHasVIPCard && userHasValidVipCard; 345 346 string pathproduct="/Files/Images/plc"; 347 string imgpath="/Files/Images/Ecom/Products/"; 348 string imgpathpng=""; 349 string pidString = ""; 350 var loopCounter = 0; 351 List<string>statusList = new List<string>(); 352 353 foreach(LoopItem product1 in Loop) 354 { 355 string pid1 = product1.GetString("Ecom:Product.ID"); 356 pidString += "[" + pid1 + "],"; 357 } 358 pidString = pidString.Remove(pidString.Length - 1); 359 pidString = "{" + pidString; 360 pidString = pidString + "}"; 361 362 var response = WebServices.getProductMultiStatusAdvServiceResponse(pidString); 363 364 var responseSplit = response.Split(';'); 365 if (responseSplit[0].Contains("500")) 366 { 367 <style> 368 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 369 .mainImg{ 370 padding-left: 85px; 371 } 372 } 373 374 @@media screen and (max-width: 700px) and (min-width: 600px) and (max-height: 400px) { 375 .mainImg{ 376 padding-left: 222px; 377 } 378 } 379 </style> 380 if(Pageview.Device.ToString().ToUpper() == "MOBILE") 381 { 382 <div style="padding-left: 60px;" name="under_maintenance"> 383 <img src="/Files/Templates/Designs/PLC/assets/images/under_maintenance_icon.png" class="mainImg" alt="Under Maintenance"><br><br> 384 <span style="font-size: 20px;font-weight: 700;">Sorry, we are facing a temporary server error. Please try again later.</span> 385 </div> 386 }else if(Pageview.Device.ToString().ToUpper() == "TABLET") 387 { 388 <div name="under_maintenance"><img src="/Files/Templates/Designs/PLC/assets/images/under_maintenance_icon.png" alt="Under Maintenance"><span style="padding-left: 15px; font-size: 20px; font-weight: 700;">Sorry, we are facing a temporary server error. Please try again later.</span></div> 389 }else{ 390 <div style="padding-left: 60px;" name="under_maintenance"><img src="/Files/Templates/Designs/PLC/assets/images/under_maintenance_icon.png" alt="Under Maintenance"><span style="padding-left: 15px; font-size: 20px; font-weight: 700;">Sorry, we are facing a temporary server error. Please try again later.</span></div> 391 } 392 return; 393 } 394 395 396 string productResponse = responseSplit[2].Split('{')[1].Replace("}",""); 397 398 var singleProduct = productResponse.Split(','); 399 for(var i =0; i < singleProduct.Length; i++) 400 { 401 string string1 = singleProduct[i].Remove(singleProduct[i].Length-1).Remove(0,1); 402 statusList.Add(string1.Split(':')[1]); 403 } 404 if (responseSplit[0].Contains("200")) 405 { 406 foreach (LoopItem product in Loop) 407 { 408 string pid=product.GetString("Ecom:Product.ID"); 409 //Promotion 410 411 string promoName = ""; 412 string promoD = ""; 413 List<string> productPromoNames=new List<string>(); 414 var promosqlString = "SELECT ED.DISCOUNTNAME,ED.DISCOUNTDESCRIPTION FROM EcomDiscountExtensions EDEs INNER JOIN EcomDiscount ED ON EDEs.DISCOUNTID = ED.DISCOUNTID WHERE EDEs.DISCOUNTDISPLAYATPDP = 'True' and ED.DiscountActive = 'True' and (GetDate() BETWEEN ED.DiscountValidFrom AND ED.DiscountValidTo) and ED.DISCOUNTPRODUCTSANDGROUPS LIKE '%p:" + pid + ",%'"; 415 using(System.Data.IDataReader promoNameReder = Dynamicweb.Data.Database.CreateDataReader(promosqlString)) 416 { 417 while (promoNameReder.Read()) 418 { 419 promoName += promoNameReder["DISCOUNTNAME"].ToString(); 420 promoD += promoNameReder["DISCOUNTDESCRIPTION"].ToString() + "<br>"; 421 } 422 } 423 string Image = product.GetString("Ecom:Product.ImageSmall.Default.Clean"); 424 string Link = product.GetString("Ecom:Product.Link.Clean"); 425 string GroupLink = product.GetString("Ecom:Product.LinkGroup.Clean"); 426 string Name = product.GetString("Ecom:Product.Name"); 427 Name = Name.Replace("\"","❞"); 428 GroupLink = "Default.aspx?ID=" + GetPageIdByNavigationTag("Products") + "&ProductID=" + pid; 429 string Number = product.GetString("Ecom:Product.Number"); 430 string ProdBrand = product.GetString("Ecom:Product:Field.ProductBrand"); 431 imgpath = "/Files/Images/Ecom/Products/" + pid + ".jpg"; 432 imgpathpng = "/Files/Images/Ecom/Products/" + pid + ".png"; 433 var absolutePathjpg = System.Web.HttpContext.Current.Server.MapPath("~/"+ imgpath); 434 var absolutePathpng = System.Web.HttpContext.Current.Server.MapPath("~/"+ imgpathpng); 435 if(System.IO.File.Exists(absolutePathjpg)) 436 { 437 Image=imgpath; 438 } 439 else if(System.IO.File.Exists(absolutePathpng)) 440 { 441 Image=imgpathpng; 442 } 443 444 string Description = product.GetString("Ecom:Product.ShortDescription"); 445 string Discount = product.GetString("Ecom:Product.Discount.Price"); 446 string Price = product.GetString("Ecom:Product.Price"); 447 string CurrencyCode = product.GetString("Ecom:Product.Price.Currency.Code"); 448 //string Promotion=product.GetString("Ecom:Product.Price"); 449 string Active=product.GetString("Ecom:Product.IsActive"); 450 var Rating=product.GetDouble("Ecom:Product.Rating"); 451 452 var sellingPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSPrice"))*1000/5)/200; 453 var internetPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSInternetPrice"))*1000/5)/200; 454 var price=9.95; 455 456 if(price==product.GetDouble("Ecom:Product:Field.ProductSInternetPrice")) 457 { 458 internetPrice= product.GetDouble("Ecom:Product:Field.ProductSInternetPrice"); 459 } 460 Boolean inventoryDiscount = product.GetBoolean("Ecom:Product:Field.ProductInventoryDiscountFlag"); 461 var discountPercentage = product.GetDouble("Ecom:Product:Field.ProductInventoryDiscount"); 462 var birthdayPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSBirthdayPrice"))*1000/5)/200; 463 var memberPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSMemberPrice"))*1000/5)/200; 464 var disable=product.GetBoolean("Ecom:Product:Field.Disable"); 465 var promotion=0.00; 466 var discountType=""; 467 var promoNames = ""; 468 var testingNames = ""; 469 foreach(var promoItem in product.GetLoop("AllDiscounts")) 470 { 471 promoNames += promoItem.GetString("Ecom:AllDiscounts.Discount.Name") +"<br>"; 472 } 473 foreach (LoopItem item in product.GetLoop("ProductDiscounts")) 474 { 475 476 if(item.GetString("Ecom:Product.Discount.Type")=="PERCENT") 477 { 478 discountType="PERCENT"; 479 promotion=item.GetDouble("Ecom:Product.Discount.PercentWithoutVATFormatted"); 480 } 481 else 482 { 483 discountType="AMOUNT"; 484 promotion=item.GetDouble("Ecom:Product.Discount.AmountWithoutVATFormatted"); 485 } 486 } 487 488 string sellingPriceStr = ((sellingPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", sellingPrice) : string.Format("{0:0}", sellingPrice); 489 string internetPriceStr = ((internetPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", internetPrice) : string.Format("{0:0}", internetPrice); 490 string savePriceStr = ((sellingPrice-internetPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", sellingPrice-internetPrice) : string.Format("{0:0.00}", sellingPrice-internetPrice); 491 string memberPriceStr = ((memberPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", memberPrice) : string.Format("{0:0}", memberPrice); 492 string birthdayPriceStr = ((birthdayPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", birthdayPrice) : string.Format("{0:0}", birthdayPrice); 493 494 if(pid != "PROD1" && pid !="PROD2") 495 { 496 <!--product start--> 497 if(!disable) 498 { 499 <div class="product-box col-1-3 tab-col-1-2 mobile-col-1-1" id="get_@pid"> 500 <div class="prod-img"> 501 @if(promotion != 0) 502 { 503 if(discountType == "PERCENT") 504 { 505 <div class="ribbon-P"><span>@promotion% Off</span></div> 506 } 507 else 508 { 509 <div class="ribbon-P"><span>@product.GetString("Ecom:Product.Currency.Symbol")@promotion Off</span></div> 510 } 511 } 512 else 513 { 514 //add ERP discount ribbon 515 if(inventoryDiscount) 516 { 517 if(discountPercentage != 0) 518 { 519 <div class="ribbon-D"><span>@discountPercentage% Off</span></div> 520 } 521 } 522 } 523 <a href="@GroupLink" title="@Name"> 524 <img src="/Admin/Public/Getimage.ashx?width=147&compression=60&Crop=5&image=@Image" class="img-responsive" id="img_@pid" alt="@Name @Number" title="@Name @Number"> 525 </a> 526 </div> 527 <p class="prod-name">@ProdBrand 528 <br/> @product.GetString("Ecom:Product.Name") 529 </p> 530 531 532 @if(promoName != "") 533 { 534 <span class="top tipso_style" data-tipso='@promoName.Replace("\"", """).Replace("'","'").Replace("<","<").Replace(">",">")'> 535 @if(GetGlobalValue("Global:Extranet.UserName")!= ""){ 536 <div style="background: linear-gradient(to right, #ec5a11 , #f4a413 ); text-align: center; font-size: medium; color: white; font-weight: 600; margin-bottom: inherit;">@Translate("PROMOTION")</div> 537 538 539 } 540 else{ 541 542 <div class="mblpromologo mblpromologo1 mblPromologoipad mblPromologoipad1 mblPromologolap" style="background: linear-gradient(to right, #ec5a11 , #f4a413 ); text-align: center; font-size: medium; color: white; font-weight: 600; margin-bottom: inherit;"><img src="/Files/Templates/Designs/PLC/assets/images/login_promo.png" style="padding-bottom:2px;"> @Translate("LOGIN PROMO")</div> 543 544 } 545 </span> 546 }else{ 547 <div style="background: white; text-align: center; font-size: medium; color: white; font-weight: 600; margin-bottom: inherit; padding-bottom: 3px;"></div> 548 } 549 <div class="prod-star" style="display:none;"> 550 @if(@Rating == 0) 551 { 552 <label class = "starUnselected"></label> 553 <label class = "starUnselected"></label> 554 <label class = "starUnselected"></label> 555 <label class = "starUnselected"></label> 556 <label class = "starUnselected"></label> 557 } 558 @if(Rating % 1 != 0) 559 { 560 for(var i = 1; i < @Rating; i++) 561 { 562 <label class = "starSelected"></label> 563 } 564 <label class = "starSelected half"></label> 565 } 566 else 567 { 568 for(var i = 1; i < @Rating+1; i++) 569 { 570 <label class = "starSelected"></label> 571 } 572 } 573 574 575 </div> 576 <div class="prod-pbox"> 577 @if(inventoryDiscount) 578 { 579 if(sellingPrice != internetPrice) 580 { 581 <div class="prod-price"> 582 <p class="op">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 583 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 584 <p class="save-price">Save @product.GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 585 </div> 586 } 587 else if(sellingPrice == internetPrice) 588 { 589 <div class="prod-price"> 590 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 591 </div> 592 } 593 <div style="height:65px;">@* Add gap to fix aligment *@ 594 <div class="member-price"></div> 595 </div> 596 } 597 @*inventoryDiscount false*@ 598 else 599 { 600 if (!Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 601 { 602 @*<div class="prod-price"> 603 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 604 </div>*@ 605 606 if(sellingPrice != internetPrice) 607 { 608 <div class="prod-price"> 609 <p class="op">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 610 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 611 <p class="save-price">Save @product.GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 612 </div> 613 } 614 else if(sellingPrice == internetPrice) 615 { 616 <div class="prod-price"> 617 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 618 </div> 619 } 620 621 <div style="height:65px;"> 622 <div class="member-price"> 623 @if(memberPrice > 0) 624 { 625 <div id="proId" style="display:none"></div> 626 <div class="title" id="memberId">@Translate("VIP Member") 627 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @product.GetString("Ecom:Product.Currency.Symbol") 100 & @Translate("log in to your web account to enjoy this price")"> 628 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 629 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 630 </div> 631 <div class="title" id="birthdayId" >@Translate("VIP Birthday") 632 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @product.GetString("Ecom:Product.Currency.Symbol") 100 & @Translate("log in to your web account to enjoy this price on your birthday month")"> 633 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 634 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 635 </div> 636 637 } 638 @if(birthdayPrice > 0 && showBirthdayPrice) 639 { 640 <div class="title">@Translate("VIP Birthday") 641 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @product.GetString("Ecom:Product.Currency.Symbol") 100 & @Translate("enjoy this price on your birthday month")"> 642 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 643 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 644 </div> 645 } 646 </div> 647 </div> 648 } 649 else if(Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 650 { 651 @*<div class="prod-price"> 652 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 653 </div>*@ 654 655 if(sellingPrice != internetPrice) 656 { 657 <div class="prod-price"> 658 <p class="op">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 659 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 660 <p class="save-price">Save @product.GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 661 </div> 662 } 663 else if(sellingPrice == internetPrice) 664 { 665 <div class="prod-price"> 666 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 667 </div> 668 } 669 670 if(userHasVIPCard) 671 { 672 if(userHasValidVipCard) 673 { 674 <div id="proId" style="display:none"></div> 675 <div style="height:65px;"> 676 <div class="member-price"> 677 <div class="title" id="memberId" >@Translate("VIP Member") 678 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price"> 679 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 680 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 681 </div> 682 <div class="title" id="birthdayId">@Translate("VIP Birthday") 683 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price on your birthday month"> 684 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 685 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 686 </div> 687 </div> 688 </div> 689 } 690 691 if(!birthday) 692 { 693 if(!userHasValidVipCard) 694 { 695 <div style="height:65px;"> 696 <div class="member-price"> 697 @if(memberPrice > 0) 698 { 699 <div class="title" id="memberId">@Translate("VIP Member") 700 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price " > 701 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 702 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 703 </div> 704 } 705 </div> 706 </div> 707 } 708 } 709 else if (birthday) 710 { 711 if(!userHasValidVipCard) 712 { 713 <div style="height:65px;"> 714 <div class="member-price"> 715 <div class="title" id="birthdayId">@Translate("VIP Birthday") 716 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price on your birthday month"> 717 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon_info"></span> 718 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 719 </div> 720 </div> 721 </div> 722 } 723 } 724 } 725 else 726 { 727 if(memberPrice > 0) 728 { 729 <div id="proId" style="display:none"></div> 730 <div style="height:65px;"> 731 <div class="member-price"> 732 <div class="title" id="memberId" >@Translate("VIP Member") 733 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @product.GetString("Ecom:Product.Currency.Symbol") 100 & @Translate("log in to your web account to enjoy this price") "> 734 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 735 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 736 </div> 737 <div class="title" id="birthdayId">@Translate("VIP Birthday") 738 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @product.GetString("Ecom:Product.Currency.Symbol") 100 & @Translate("log in to your web account to enjoy this price on your birthday month")"> 739 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 740 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 741 </div> 742 </div> 743 </div> 744 } 745 } 746 } 747 } 748 </div> 749 <!-------------------------------------------------------End Pricing----------------------------------------------------------------------------------------------------> 750 <hr> 751 @{ 752 string tipsoMessage = "no Message Available!"; 753 tipsoMessage = statusList[loopCounter]; 754 switch (statusList[loopCounter].ToUpper()) 755 { 756 case "AVAILABLE" : 757 //tipsoMessage = "Stocks are available, with the earliest delivery within 2 working days from the date of order."; 758 tipsoMessage = Translate("Stocks are available, with the earliest delivery within 3 working days from the date of order."); 759 break; 760 case "SPECIAL ORDER" : 761 //tipsoMessage = "We will check physical stocks availability before confirming your order."; 762 //tipsoMessage = Translate("Stocks are subject to supplier's availability. For more details, please contact") + " Customer Care hotline: 02-170-7979 / Line OA : @plcthailand"; 763 tipsoMessage = Translate("SPECIAL ORDER Tooltip_Message"); 764 break; 765 case "IN STOCK" : 766 tipsoMessage = Translate("Stocks are available at our retail stores for delivery within 7 working days upon receipt of payment."); 767 break; 768 default : 769 tipsoMessage = "no Message Available!"; 770 break; 771 } 772 tipsoMessage = tipsoMessage.Replace("\'", "'"); 773 <ul class="info"> 774 <li>*@Translate(statusList[loopCounter])<span class="top tipso_style" data-tipso='@tipsoMessage' style="vertical-align: text-bottom;"> 775 <img src="@pathproduct/images/icon_question_mark.png" alt="icon info" title="" style="width:10px;"> 776 </span></li> 777 </ul> 778 if(statusList[loopCounter].ToUpper() == "SPECIAL ORDER") 779 { 780 <ul class="info" style="line-height: 32.7px;"> 781 <li>*@Translate("NOT AVAILABLE ONLINE")</li> 782 </ul> 783 } 784 } 785 @if(statusList[loopCounter].ToUpper() != "SPECIAL ORDER") 786 { 787 <div class="btn-addto-cart smalldev"> 788 <div class="col-md-6 col-sm-6 col-xs-6" style="padding: 5px 0px; border-radius: 3px 0px 0px 3px; text-align: center;display: table-cell;vertical-align: middle;"> 789 <span onclick='QtyControlBtn("quantityInput_@pid", "-");' type="button" data-value="-1" data-target="#spinner2" data-toggle="spinner"> 790 <span class="glyphicon glyphicon-minus"></span> 791 </span> 792 <input type="number" onkeydown='QtyKeyControl("quantityInput_@pid", "keydown");' onkeyup='QtyKeyControl("quantityInput_@pid", "keyup");' onfocusout='return QtyKeyControl("quantityInput_@pid", "focusout");' class="selectbox-qty" style="width:50px;text-align:center;" id="quantityInput_@pid" value="1" min="1" max="9999"> 793 <span onclick='QtyControlBtn("quantityInput_@pid", "+");' type="button" data-value="2" data-target="#spinner2" data-toggle="spinner"> 794 <span class="glyphicon glyphicon-plus"></span> 795 </span> 796 </div> 797 <div class="col-md-6 col-sm-6 col-xs-6 mblAddTo" style="padding: 1px 5px;display: table-cell;"> 798 <a onclick='ShowAddedItem_Then_AjaxAddToCart(" ", "@pid", "@ProdBrand.Replace(" & ", " myAND ")", "@product.GetString("Ecom:Product.Name").Replace(" & ", " myAND ").Replace("\"", "")", "@product.GetString("Ecom:Product.Price.PriceWithVAT")", "@product.GetString("Ecom:Product.Price.Currency.Symbol")", $("#quantityInput_" + "@pid").val(), true, "&cartcmd=add&productid=@pid&quantity=","@product.GetString("Ecom:Product.Number")");' href='javascript:void(0)' style="border-radius: 0px 3px 3px 0px;"> 799 <i class="fa fa-shopping-cart"></i> 800 @Translate("Add to cart") 801 </a> 802 </div> 803 </div> 804 } 805 else 806 { 807 <div class="btn-addto-cart" style="margin-bottom:5px; cursor:not-allowed; display:none;"> 808 <a ><i class="fa fa-shopping-cart"></i> In Store Only </a> 809 </div> 810 } 811 <!--<div class="btn-addto-cart smalldev" style="margin-bottom:5px;"> 812 <a href="@GroupLink"><i class="fa fa-search-plus"></i> View products details </a> 813 </div>--> 814 <div class="prod-compare" style="height : 35px;"> 815 @{ 816 string productname = product.GetString("Ecom:Product.Name"); 817 productname = productname.Replace("\"","❞"); 818 } 819 <form> 820 <label>@Translate("Compare") 821 <input type="checkbox" id='@product.GetString("Ecom:Product.CompareID")' name="compareproduct" onclick="compareProducts('@product.GetString("Ecom:Product.CompareID")', '@productname', '@product.GetString("Ecom:Product.LinkGroup.Clean")',$(this).prop('checked'));$('html, body').animate({scrollTop: $('.compare-box').offset().top}, 500);"> 822 <span></span> 823 </label> 824 </form> 825 </div> 826 </div> 827 } 828 <!--product end--> 829 } 830 loopCounter++; 831 } 832 } 833 <div onclick="topFunction()" id="myBtn" title="Go to top"></div> 834 } 835 <script> 836 function topFunction() { 837 //document.body.scrollTop = 0; 838 //document.documentElement.scrollTop = 0; 839 $('html, body').animate({ scrollTop: 0 }, 'fast') 840 } 841 842 window.onscroll = function() {scrollFunction()}; 843 844 function scrollFunction() { 845 if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { 846 document.getElementById("myBtn").style.display = "block"; 847 } else { 848 document.getElementById("myBtn").style.display = "none"; 849 } 850 } 851 </script> 852 <script type="text/javascript" src="/Files/Templates/Designs/PLC/eCom/ProductList/Compare.js"></script> 853 854 <style> 855 @@media only screen and (min-width:350px) and (max-width:700px){ 856 .content-wrapper#mainpg{ 857 margin-top:0px !important; 858 } 859 } 860 @@media only screen and (min-width:400px) and (max-width:700px){ 861 .breadcrumb { 862 margin-top: 140px; 863 } 864 .whenNotiMainPg .breadcrumb { 865 margin-top: 85px !important; 866 } 867 } 868 @@media only screen and (max-width:350px){ 869 .breadcrumb { 870 margin-top: 25px; 871 } 872 .whenNotiMainPg .breadcrumb { 873 margin-top: 25px !important; 874 } 875 } 876 @@media only screen and (device-height:727px) and (device-width:414px){ 877 .whenNotiMainPg .breadcrumb { 878 margin-top: 140px !important; 879 } 880 .breadcrumb { 881 margin-top: 140px; 882 } 883 } 884 885 @@media only screen and (device-height:812px) and (device-width:375px){ 886 .whenNotiMainPg .breadcrumb { 887 margin-top: 50px !important; 888 } 889 .breadcrumb { 890 margin-top: 20px; 891 } 892 .content-wrapper#mainpg{ 893 margin-top:0px !important; 894 } 895 } 896 @@media only screen and (device-height: 896px) and (device-width: 414px){ 897 .whenNotiMainPg .breadcrumb { 898 margin-top: 75px !important; 899 } 900 .breadcrumb { 901 margin-top: 75px; 902 } 903 } 904 @@media only screen and (min-width: 350px) and (max-width: 400px){ 905 .breadcrumb { 906 margin-top: 110px; 907 } 908 .whenNotiMainPg .breadcrumb { 909 margin-top: 110px; 910 } 911 } 912 @@media only screen and (device-height:667px) and (device-width:375px){ 913 .whenNotiMainPg .breadcrumb { 914 margin-top: 55px !important; 915 } 916 .breadcrumb { 917 margin-top: 15px; 918 } 919 } 920 @@media only screen and (device-height:640px) and (device-width:360px){ 921 .whenNotiMainPg .breadcrumb { 922 margin-top: 55px !important; 923 } 924 .breadcrumb { 925 margin-top: 25px; 926 } 927 } 928 929 @@media only screen and (device-height: 1138px) and (device-width: 712px){ 930 .breadcrumb { 931 margin-top: 40px; 932 } 933 .whenNotiMainPg .breadcrumb { 934 margin-top: 75px !important; 935 } 936 } 937 input[type=number]::-webkit-inner-spin-button, 938 input[type=number]::-webkit-outer-spin-button 939 { 940 -webkit-appearance: none; 941 -moz-appearance: none; 942 appearance: none; 943 margin: 0; 944 } 945 input[type=number] { 946 -moz-appearance:textfield; 947 } 948 @@media screen and (max-width: 780px) and (min-width: 600px){ 949 .content-wrapper#mainpg { 950 margin-top: 100px; 951 padding-left: 15px; 952 padding-right: 15px; 953 } 954 } 955 .product-box .prod-compare label{ 956 display: inline; 957 } 958 .prod-content-right { 959 width: 100% !important; 960 } 961 .category-title { 962 margin-top:0px; 963 } 964 965 .clearfix{ 966 margin-bottom: -10px; 967 } 968 969 .current1{ 970 margin-left: 217px; 971 } 972 973 .current2{ 974 margin-left: 158px; 975 } 976 977 .current3{ 978 margin-left: 131px; 979 } 980 981 .current4{ 982 margin-left: 103px; 983 } 984 985 .current5{ 986 margin-left: 75px; 987 } 988 989 .current6{ 990 margin-left: 51px; 991 } 992 993 .destopcurrent2{ 994 margin-left: 250px; 995 } 996 997 .destopcurrent3{ 998 margin-left: 220px; 999 } 1000 1001 .destopcurrent4{ 1002 margin-left: 200px; 1003 } 1004 1005 .destopcurrent5{ 1006 margin-left: 180px; 1007 } 1008 1009 .destopcurrent6{ 1010 margin-left: 180px; 1011 } 1012 1013 .commoncurrent{ 1014 margin-left: 221px; 1015 } 1016 1017 .total1{ 1018 margin-left: 163px; 1019 } 1020 1021 .total2{ 1022 margin-left: 134px; 1023 } 1024 1025 .total3{ 1026 margin-left: 106px; 1027 } 1028 1029 .total4{ 1030 margin-left: 79px; 1031 } 1032 1033 .total5{ 1034 margin-left: 79px; 1035 } 1036 1037 .commontotal{ 1038 margin-left: 51px; 1039 } 1040 1041 .currenttotal1{ 1042 margin-left: 400px; 1043 } 1044 1045 .currenttotal2{ 1046 margin-left: 304px; 1047 } 1048 1049 .currenttotal3{ 1050 margin-left: 292px; 1051 } 1052 1053 .currenttotal4{ 1054 margin-left: 278px; 1055 } 1056 1057 .currenttotal5{ 1058 margin-left: 256px; 1059 } 1060 1061 .currenttotal6{ 1062 margin-left: 238px; 1063 } 1064 1065 @@media only screen and (max-width: 850px){ 1066 .mblpagination{ 1067 margin-left: unset !important; 1068 } 1069 } 1070 @*@@media only screen and (min-width: 768px){ 1071 .clearfix{ 1072 display:none !important; 1073 } 1074 }*@ 1075 1076 @@media screen and (max-width: 1050px) and (min-width: 1000px) and (max-height: 800px) { 1077 .currenttotal1{ 1078 margin-left: 310px !important; 1079 } 1080 1081 .currenttotal2{ 1082 margin-left: 250px !important; 1083 } 1084 1085 .currenttotal3{ 1086 margin-left: 220px !important; 1087 } 1088 1089 .currenttotal4{ 1090 margin-left: 195px !important; 1091 } 1092 1093 .currenttotal5{ 1094 margin-left: 170px !important; 1095 } 1096 1097 .currenttotal6{ 1098 margin-left: 135px !important; 1099 } 1100 1101 .total6current2{ 1102 margin-left: 185px; 1103 } 1104 1105 .total6current3{ 1106 margin-left: 166px; 1107 } 1108 1109 .total6current4{ 1110 margin-left: 130px; 1111 } 1112 1113 .total6current5{ 1114 margin-left: 100px; 1115 } 1116 1117 .total6current6{ 1118 margin-left: 100px; 1119 } 1120 1121 .current1{ 1122 margin-left: 125px; 1123 } 1124 1125 .current2{ 1126 margin-left: 70px; 1127 } 1128 1129 .current3{ 1130 margin-left: 40px; 1131 } 1132 1133 .current4{ 1134 margin-left: 12px; 1135 } 1136 1137 .current5{ 1138 margin-left: -15px; 1139 } 1140 1141 .current6{ 1142 margin-left: -40px; 1143 } 1144 1145 .commoncurrent{ 1146 margin-left: 128px; 1147 } 1148 1149 .total1{ 1150 margin-left: 70px; 1151 } 1152 1153 .total2{ 1154 margin-left: 45px; 1155 } 1156 1157 .total3{ 1158 margin-left: 16px; 1159 } 1160 1161 .total4{ 1162 margin-left: -10px; 1163 } 1164 1165 .total5{ 1166 margin-left: -15px; 1167 } 1168 1169 .commontotal{ 1170 margin-left: -42px; 1171 } 1172 } 1173 </style> 1174 1175 @{ 1176 string sqlString = "SELECT BecomeAMemberPrice FROM ItemType_PLC_WebSite_Settings"; 1177 string becomeAMemberPrice = ""; 1178 using (System.Data.IDataReader myImageReader = Dynamicweb.Data.Database.CreateDataReader(sqlString.ToString())) 1179 { 1180 while (myImageReader.Read()) 1181 { 1182 becomeAMemberPrice = myImageReader["BecomeAMemberPrice"].ToString(); 1183 } 1184 } 1185 1186 var birthday = false; 1187 bool showBirthdayPrice1 = false; 1188 bool userHasVIPCard1 = false; 1189 bool userHasValidVipCard1 = false; 1190 1191 if (Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 1192 { 1193 int i = Convert.ToInt32(GetGlobalValue("Global:Extranet.UserID")); 1194 1195 Dynamicweb.Security.UserManagement.User u = Dynamicweb.Security.UserManagement.User.GetUserByID(i); 1196 1197 foreach (CustomFieldValue val in u.CustomFieldValues) 1198 { 1199 CustomField field = val.CustomField; 1200 1201 string fieldName = field.Name; 1202 1203 if(fieldName == "DOB") 1204 { 1205 DateTime today = DateTime.Now; 1206 DateTime bDay = new DateTime(); 1207 if(val.Value != null) 1208 { 1209 bDay = (DateTime)val.Value; 1210 if(bDay.Month == today.Month) 1211 { 1212 birthday = true; 1213 } 1214 } 1215 } 1216 switch (fieldName.ToUpper()) 1217 { 1218 case "VIP CARD NO": 1219 userHasVIPCard1 = !string.IsNullOrEmpty((val.Value).ToString()); 1220 break; 1221 case "EXPRYDATE": 1222 userHasValidVipCard1 = DateTime.Now.Month <= ((DateTime)val.Value).Month; 1223 break; 1224 default: 1225 break; 1226 } 1227 } 1228 } 1229 showBirthdayPrice1 = birthday && userHasVIPCard1 && userHasValidVipCard1; 1230 1231 string grouplink = ""; 1232 1233 if (!string.IsNullOrWhiteSpace(GetString("Ecom:ProductList:Page.GroupID"))) { 1234 grouplink = "/Default.aspx?ID=" + GetValue("Ecom:ProductList:Page.ID") + "&GroupID=" + GetValue("Ecom:ProductList:Page.GroupID"); 1235 } else { 1236 grouplink = "&eComQuery=" + GetValue("Ecom:ProductList:Search.Query"); 1237 } 1238 var strUrl = System.Web.HttpContext.Current.Request.RawUrl.ToString() ; 1239 string[] words = strUrl.Split('/'); 1240 var firstgroup =System.Web.HttpContext.Current.Request.Params["firstgroup"]; 1241 var secondgroup = System.Web.HttpContext.Current.Request.Params["secondgroup"]; 1242 var thirdgroup = System.Web.HttpContext.Current.Request.Params["thirdgroup"]; 1243 @*var firstgroup =words[2]; 1244 var secondgroup = words[3]; 1245 var thirdgroup = words[4];*@ 1246 var grouptext = ""; 1247 1248 if (!string.IsNullOrWhiteSpace(firstgroup) && !string.IsNullOrWhiteSpace(secondgroup) && !string.IsNullOrWhiteSpace(thirdgroup)) 1249 { 1250 grouptext = thirdgroup; 1251 } 1252 else if(!string.IsNullOrWhiteSpace(firstgroup) && !string.IsNullOrWhiteSpace(secondgroup)) 1253 { 1254 grouptext = secondgroup; 1255 } 1256 else 1257 { 1258 grouptext = firstgroup; 1259 } 1260 1261 var totalPages = GetInteger("Ecom:ProductList.TotalPages"); 1262 var currentPage = GetInteger("Ecom:ProductList.CurrentPage"); 1263 var noOfPages = 3; 1264 var currentPageLink = ""; 1265 var blankLink = ""; 1266 var otherLink = ""; 1267 if(totalPages != 0) 1268 { 1269 foreach (LoopItem page in GetLoop("Ecom:ProductList.Pages")) 1270 { 1271 if (page.GetBoolean("Ecom:ProductList.Pages.Page.IsCurrent")) 1272 { 1273 currentPageLink =page.GetString("Ecom:ProductList.Pages.Page.Url"); 1274 } 1275 } 1276 var firstSplit = currentPageLink.Split(new string[] { "PageNum=" }, StringSplitOptions.None); 1277 blankLink = firstSplit[0]; 1278 1279 if(firstSplit[1].Contains("&")) 1280 { 1281 string[] split = firstSplit[1].Split(new char[] { '&' }, 2); 1282 otherLink = "&"+split[1]; 1283 } 1284 } 1285 1286 object objShowH1Title = false; 1287 bool showH1TitleFlag = false; 1288 Dynamicweb.Frontend.PageView.Current().Page.PropertyItem.TryGetValue("Show_H1_Title", ref objShowH1Title); ///with 9.6.10 1289 //Dynamicweb.Frontend.PageView.Current().Page.PropertyItem.TryGetValue("Show_H1_Title", out objShowH1Title); ///with 9.10.17 1290 showH1TitleFlag = objShowH1Title != null ? bool.Parse(objShowH1Title.ToString()) : false; 1291 1292 1293 } 1294 1295 <script> 1296 $( document ).ready(function() { 1297 document.cookie = "sortby="; 1298 Compare.writecompare(); 1299 if(getQueryStringValue("SortBy")) 1300 { 1301 var selectedVal = getQueryStringValue("SortBy") + "&SortOrder=" + getQueryStringValue("SortOrder") 1302 $('#sortSelect').val(selectedVal); 1303 } else { 1304 //$('#sortSelect').val('PleaseSelect'); 1305 //document.cookie = "sortby="; 1306 } 1307 }); 1308 function getCookie(name) { 1309 var pattern = RegExp(name + "=.[^;]*") 1310 matched = document.cookie.match(pattern) 1311 1312 if (matched) { 1313 var cookie = matched[0].split('=') 1314 return cookie[1] 1315 } 1316 return false 1317 } 1318 </script> 1319 1320 @{string pathproduct="/Files/Images/plc/";} 1321 1322 <div style="display:none;"> 1323 <div class="col-3-12"> 1324 @SnippetStart("facetSnippet") 1325 <div class="category-title col-1-1" style="margin-bottom: 50px;"> 1326 <div class="smallText">Shop by:</div> 1327 </div> 1328 <div id="FacetFilters" class="category-box col-1-1"> 1329 <div class="smallText">@Translate("Filter by"):</div> 1330 <hr class="grey" style="margin-top: 0px; margin-bottom: 0px;"> 1331 @{ 1332 string stringGroupID = ""; 1333 if(GetString("Ecom:ProductList:Page.ID") != "298") 1334 { 1335 foreach(var productGroup in GetLoop("ProductGroups")) 1336 { 1337 stringGroupID += productGroup.GetString("Ecom:Group.ID") + ","; 1338 } 1339 } 1340 } 1341 <!------------------------- for Price Filter Begin -------------------------> 1342 1343 <!------------------------- for Price Filter End -------------------------> 1344 <div class="filter-vertical toogleContent FixedHeightContainer" > 1345 <form id="filtercontainer" name="EcomSearch" class="form-filters" method="get" > 1346 @*<input type="hidden" name="ID" value='@GetString("Ecom:ProductList:Page.ID")' />*@ 1347 @if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request["q"])) 1348 { <input type='hidden' name='q' value='@System.Web.HttpContext.Current.Request["q"]' /> } 1349 @if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request["searchsuggest"])) 1350 { <input type='hidden' name='searchsuggest' value='@System.Web.HttpContext.Current.Request["searchsuggest"]' /> } 1351 1352 <input type="submit" style="display:none;"> 1353 1354 @foreach (LoopItem facetGroup in GetLoop("FacetGroups")) 1355 { 1356 foreach (LoopItem facet in facetGroup.GetLoop("Facets")) 1357 { 1358 var facetOptions = facet.GetLoop("FacetOptions"); 1359 string facetQueryParameter = facet.GetString("Facet.QueryParameter"); 1360 1361 if (!facetOptions.Any()) 1362 { 1363 continue; 1364 } 1365 if( 1366 (facet.GetString("Facet.Name")=="SecondGroup" ) || 1367 (facet.GetString("Facet.Name")=="ThirdGroup" ) || 1368 (facet.GetString("Facet.Name")=="FirstGroup") || 1369 (facet.GetString("Facet.Name")=="Color") || 1370 //(facet.GetString("Facet.Name")=="Size") || 1371 (facet.GetString("Facet.Name")=="Weight") || 1372 (facet.GetString("Facet.Name")=="Health Consideration") || 1373 (facet.GetString("Facet.Name")=="Life Stage") || 1374 (facet.GetString("Facet.Name")=="Availability") || 1375 (facet.GetString("Facet.Name")=="productclassic") || 1376 (facet.GetString("Facet.Name")=="Nutritional Option")|| 1377 (facet.GetString("Facet.Name")=="Brands")|| 1378 (facet.GetString("Facet.Name")=="Treats Type")|| 1379 (facet.GetString("Facet.Name")=="Kibble - Bite Size")|| 1380 (facet.GetString("Facet.Name")=="Pet Type")|| 1381 (facet.GetString("Facet.Name")=="Applications Type")|| 1382 (facet.GetString("Facet.Name")=="Pet Weight Range")|| 1383 (facet.GetString("Facet.Name")=="Litter Materials")|| 1384 (facet.GetString("Facet.Name")=="Litter Features")|| 1385 (facet.GetString("Facet.Name") == "Size")|| 1386 (facet.GetString("Facet.Name") == "Weights")|| 1387 (facet.GetString("Facet.Name") == "Volume")|| 1388 (facet.GetString("Facet.Name") == "Pet Weight Ranges") 1389 ) 1390 { 1391 if((facet.GetString("Facet.Name")=="SecondGroup")||(facet.GetString("Facet.Name")=="ThirdGroup")||(facet.GetString("Facet.Name")=="FirstGroup")||(facet.GetString("Facet.Name")=="productclassic")){ 1392 1393 <!--Category--> 1394 <div style="display:none" class="panel panel-flat"> 1395 <div class="panel-heading"> 1396 @{ 1397 var str = Regex.Replace(facet.GetString("Facet.Name"), @"\s+", ""); 1398 } 1399 <h4 class="panel-title tot-accordion"> 1400 <a data-toggle="collapse" data-target='#collapse@(str)' class="accordion-section-title" style="color: #000 !important;"> 1401 <span class="pull-right hasMinus"> <i class="i-minus"></i></span> @Translate(facet.GetString("Facet.Name")) 1402 </a> 1403 </h4> 1404 </div> 1405 <div id='collapse@(str)' class="collapse in"> 1406 <div class="panel-body smoothscroll" > 1407 1408 @if (facetOptions.Count() > 0) 1409 { 1410 <ul class="list-unstyled long-list"> 1411 1412 @foreach (LoopItem option in facetOptions) 1413 { 1414 var value = option.GetValue("FacetOption.Value"); 1415 var isSelected = option.GetBoolean("FacetOption.Selected"); 1416 var label = option.GetString("FacetOption.Label"); 1417 label = label.Replace("-a-",""); 1418 1419 var count = option.GetInteger("FacetOption.Count"); 1420 var facetName = (Regex.Replace(facet.GetString("Facet.Name"), @"\s+", "")).ToLower(); 1421 1422 char[] array = label.ToCharArray(); 1423 // Handle the first letter in the string. 1424 if (array.Length >= 1) 1425 { 1426 if (char.IsLower(array[0])) 1427 { 1428 array[0] = char.ToUpper(array[0]); 1429 } 1430 } 1431 // Scan through the letters, checking for spaces. 1432 // ... Uppercase the lowercase letters following spaces. 1433 for (int i = 1; i < array.Length; i++) 1434 { 1435 if (array[i - 1] == ' ') 1436 { 1437 if (char.IsLower(array[i])) 1438 { 1439 array[i] = char.ToUpper(array[i]); 1440 } 1441 } 1442 } 1443 string label2=new string(array); 1444 <li> 1445 <div class="block-element"> 1446 <label onclick ="clickCheckbox(this);"> 1447 @*<input type="checkbox" onclick="submitform()" data-hidden="true" class="filter-option-value" id="chk@(facetName)@(count)" name="@facetName" value="@value" @if (isSelected) { <text> checked="checked" </text> } />*@ 1448 <input type="checkbox" onclick="submitform()" data-hidden="true" class="filter-option-value" id="chk@(facetName)@(count)" name="@facetQueryParameter" value="@value" @if (isSelected) { <text> checked="checked" </text> } /> 1449 @label2 1450 </label> 1451 <span class="badge">(@count)</span> 1452 </div> 1453 </li> } 1454 </ul> 1455 } 1456 </div> 1457 </div> 1458 </div> 1459 <!--/Category menu end--> 1460 1461 } 1462 else{ 1463 1464 <div id="accordion"> 1465 <!--Category--> 1466 <div class="accordion-section" > 1467 @{ 1468 var str = Regex.Replace(facet.GetString("Facet.Name"), @"\s+", ""); 1469 bool showFacetName = false; 1470 } 1471 @if(facetOptions.Count() == 1) 1472 { 1473 foreach (LoopItem option in facetOptions) 1474 { 1475 if(option.GetInteger("FacetOption.Count") > 0 && option.GetString("FacetOption.Label").ToLower().Contains("nothing select")) 1476 { 1477 showFacetName = false; 1478 } 1479 else if(option.GetInteger("FacetOption.Count") > 0) 1480 { 1481 showFacetName = true; 1482 } 1483 } 1484 } 1485 else if (facetOptions.Count() > 1) 1486 { 1487 foreach (LoopItem option in facetOptions) 1488 { 1489 if(option.GetInteger("FacetOption.Count") > 0) 1490 { 1491 showFacetName = true; 1492 } 1493 } 1494 } 1495 @if(showFacetName) 1496 { 1497 <a class="accordion-section-title" data-toggle="collapse" onclick="return disableLink();" data-target='#collapse@(str)' href="#collapse@(str)" style="padding-top: 20px;"> 1498 @Translate(facet.GetString("Facet.Name")) 1499 </a> 1500 } 1501 </div> 1502 <div name="visibleFilter" id='collapse@(str)' class="accordion-section-content collapse scrollminicart"> 1503 @if (facetOptions.Count() > 0) 1504 { 1505 foreach (LoopItem option in facetOptions) 1506 { 1507 var value = option.GetValue("FacetOption.Value"); 1508 var isSelected = option.GetBoolean("FacetOption.Selected"); 1509 1510 var count = option.GetInteger("FacetOption.Count"); 1511 var label = option.GetString("FacetOption.Label"); 1512 label = facet.GetString("Facet.Name") == "Brands" ? label.ToUpper() : System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(label.ToLower()); 1513 var displayLabel = Translate(label) + " (" + count + ")"; 1514 var labelCount = " (" + count + ")"; 1515 var facetName = (Regex.Replace(facet.GetString("Facet.Name"), @"\s+", "")).ToLower(); 1516 facetName = facetName == "kibble-bitesize" ? "bitesize" : facetName; 1517 if(count != 0 && !displayLabel.ToLower().Contains("nothing select")) 1518 { 1519 @*<input type="checkbox" onclick="submitform()" data-hidden="false" data-category="@str" class="filter-option-value" id="chk@(label)@(count)" name="@facetName" value="@value" @if (isSelected) { <text> checked="checked" </text> } />*@ 1520 <input type="checkbox" onclick="submitform()" data-hidden="false" data-category="@str" class="filter-option-value" id="chk@(label)@(count)" name="@facetQueryParameter" value="@value" @if (isSelected) { <text> checked="checked" </text> } /> 1521 @*@Translate(label) @labelCount*@ 1522 @displayLabel 1523 <br> 1524 } 1525 1526 } 1527 } 1528 </div> 1529 <!--/Category menu end--> 1530 </div>}} 1531 } 1532 1533 } 1534 @{ 1535 string currency = GetLoop("Products").Count() > 0 ? GetLoop("Products")[0].GetString("Ecom:Product.Discount.Price.Currency.Symbol") : string.Empty; 1536 } 1537 <div id="accordion"> 1538 <div id="priceFilterTitle" class="accordion-section" style="display:none;"> 1539 <a class="accordion-section-title" data-toggle="collapse" onclick="return disableLink(); return false;" data-target='#collapsePriceFilter' href="#collapsePriceFilter" style="padding-top: 20px;"> 1540 @Translate("Price Filter") 1541 </a> 1542 </div> 1543 <div name="visibleFilter" id='collapsePriceFilter' class="accordion-section-content collapse scrollminicart" style="display:none;"> 1544 <div> 1545 <label>@Translate("Price range"): @currency</label> 1546 <input class="price-filter-min" id="price-filter-min" name="minpricefilter" value="0" readonly /> 1547 ~ 1548 <input class="price-filter-max" id="price-filter-max" name="maxpricefilter" value="10000" readonly /> 1549 <input type="hidden" id="minprice" name="minprice" value="0" /> 1550 <input type="hidden" id="maxprice" name="maxprice" value="10000" /> 1551 </div> 1552 <div class="slider-range"> 1553 <div id="slider-range"></div> 1554 </div> 1555 </div> 1556 </div> 1557 1558 <div id="accordion"> 1559 <div id="wordSearchTitle" class="accordion-section"> 1560 <a class="accordion-section-title" data-toggle="collapse" onclick="return disableLink();" data-target='#collapseWordSearch' href="#collapseWordSearch" style="padding-top: 20px;"> 1561 @Translate("Search within this list") 1562 </a> 1563 </div> 1564 <div name="visibleFilter" id='collapseWordSearch' class="accordion-section-content collapse scrollminicart"> 1565 <div> 1566 <input type="text" id="wordSearch" name="wordSearch" placeholder='@Translate("Word Search")' value='@System.Web.HttpContext.Current.Request["wordSearch"]' /> 1567 <input id="applyFilters" type="submit" class="btn btn-sm btn-two" value='@Translate("Search")' style="width:60px;" /> 1568 </div> 1569 </div> 1570 </div> 1571 1572 <div style="clear:both;margin-bottom:40px;" > 1573 <input id="clearFilters" type="reset" onclick="resetForm()" class="btn btn-sm btn-two" value='@Translate("Reset Filters")' /> 1574 </div> 1575 </form> 1576 1577 1578 1579 1580 <script> 1581 function resetForm(){ 1582 var checkboxes = document.getElementById("filtercontainer").getElementsByTagName("input"); 1583 for(var i=0;i<checkboxes.length;i++){ 1584 if(checkboxes[i].checked == true && $(checkboxes[i]).data("hidden")==false){ 1585 console.log(checkboxes[i].value); 1586 $(checkboxes[i]).attr("checked",false); 1587 } 1588 } 1589 $("#wordSearch").val(""); 1590 var url = new URL(window.location); 1591 var query_string = url.search; 1592 var search_params = new URLSearchParams(query_string); 1593 search_params.set('minpricefilter', '0'); 1594 search_params.set('maxpricefilter', max_price); 1595 search_params.set('wordSearch', ''); 1596 url.search = search_params.toString(); 1597 var new_url = url.toString(); 1598 window.location.href = new_url; 1599 setTimeout(function(){document.getElementById("filtercontainer").submit();},300); 1600 } 1601 </script> 1602 @foreach (LoopItem k in GetLoop("Ecom:Search.Filters")) 1603 { 1604 1605 <!--@LoopStart("Ecom:Search.Filter.Options")--> 1606 <!--@Ecom:Search.Filter.Name--> 1607 <!--@Ecom:Search.Filter.Option.Label--> 1608 <!--@Ecom:Search.Filter.Option.Value--> 1609 <!--@LoopEnd("Ecom:Search.Filter.Options")--> 1610 } 1611 1612 </div> 1613 <script> 1614 function disableLink(){ 1615 return false; 1616 } 1617 function submitform(){ 1618 var x = document.getElementsByName('EcomSearch'); 1619 x[0].submit(); 1620 } 1621 1622 function clickCheckbox(check){ 1623 1624 } 1625 1626 function expandFacets(){ 1627 1628 var filterDiv = document.getElementsByName("visibleFilter"); 1629 1630 for(var i=0;i<filterDiv.length;i++){ 1631 1632 var checkboxes = filterDiv[i].getElementsByTagName("input"); 1633 1634 for(var j=0;j<checkboxes.length;j++){ 1635 if(checkboxes[j].checked == true){ 1636 var targetFilter = document.getElementById("collapse"+$(checkboxes[j]).data("category")); 1637 console.log("collapse"+$(checkboxes[j]).data("category")); 1638 targetFilter.setAttribute("class", "collapse in"); 1639 break; 1640 } 1641 } 1642 } 1643 } 1644 1645 $(document).ready(function() { 1646 //expandFacets(); 1647 if('@GetGlobalValue("Global:Device.IsMobile")' != "True") { 1648 $('.accordion-section-title').click(); 1649 } 1650 }); 1651 </script> 1652 <style> 1653 .price-filter-min, .price-filter-max { 1654 width: 22%; 1655 border: none; 1656 background: none; 1657 } 1658 .price-filter-min { 1659 text-align: right; 1660 } 1661 .price-filter-max { 1662 text-align: left; 1663 } 1664 .slider-range { 1665 padding: 0 10px 0 10px; 1666 } 1667 #applyFilters { 1668 margin-top: -3px; 1669 } 1670 1671 .FixedHeightContainer 1672 { 1673 height: auto; 1674 } 1675 .scrollminicart 1676 { 1677 max-height:224px; 1678 height:auto; 1679 overflow:auto; 1680 1681 } 1682 #collapsePriceFilter.collapse > div 1683 { 1684 display:none; 1685 } 1686 #collapsePriceFilter.collapse.in > div 1687 { 1688 display:block!important; 1689 } 1690 </style> 1691 <!------------------------- Price Filter Begin -------------------------> 1692 @{ 1693 int requested_Min_Price = 0; 1694 int requested_Max_Price = 0; 1695 int minPrice = 0; 1696 int maxPrice = 0; 1697 int pageNumber = 0; 1698 string getPriceUrl = string.Empty; 1699 try 1700 { 1701 requested_Min_Price = Convert.ToInt32(System.Web.HttpContext.Current.Request["minpricefilter"]); 1702 requested_Max_Price = Convert.ToInt32(System.Web.HttpContext.Current.Request["maxpricefilter"]); 1703 minPrice = Convert.ToInt32(System.Web.HttpContext.Current.Request["minprice"]); 1704 maxPrice = Convert.ToInt32(System.Web.HttpContext.Current.Request["maxprice"]); 1705 pageNumber = Convert.ToInt32(System.Web.HttpContext.Current.Request["PageNum"]); 1706 //getPriceUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri.Replace(GetString("Ecom:ProductList:Page.ID"), "3123").Replace("PageNum=" + pageNumber,"PageNum="); 1707 getPriceUrl = System.Web.HttpContext.Current.Request.Url.Scheme + "://" + System.Web.HttpContext.Current.Request.Url.Host + "/Default.aspx?ID=3123"; 1708 } 1709 catch(Exception ex) 1710 { 1711 requested_Min_Price = 0; 1712 requested_Max_Price = 0; 1713 minPrice = 0; 1714 maxPrice = 0; 1715 //getPriceUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri.Replace(GetString("Ecom:ProductList:Page.ID"), "3123"); 1716 getPriceUrl = System.Web.HttpContext.Current.Request.Url.Scheme + "://" + System.Web.HttpContext.Current.Request.Url.Host + "/Default.aspx?ID=3123"; 1717 } 1718 } 1719 1720 <link rel="stylesheet" href="/Files/Templates/Designs/PLC/assets/jQuery_Ui_Slider/jquery-ui.css" type="text/css"> 1721 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 1722 <script src="/Files/Templates/Designs/PLC/assets/jQuery_Ui_Slider/jquery.ui.touch-punch.min.js"></script> 1723 1724 <script> 1725 var priceFilterMouseDown = false; 1726 var min_price = 0; 1727 var max_price = 0; 1728 var requested_min_price = parseInt("@requested_Min_Price"); 1729 var requested_max_price = parseInt("@requested_Max_Price"); 1730 var url = "@getPriceUrl" + "&SortBy=InternetPrice&SortOrder=Desc" + "&GroupId=" + "@stringGroupID"; 1731 $.ajax( 1732 { 1733 url: url, 1734 type: 'POST', 1735 success: function (data) 1736 { 1737 if(parseInt("@minPrice") == 0 && parseInt("@maxPrice") == 0) { 1738 min_price = parseInt(data["Min_Price"]); 1739 max_price = parseInt(data["Max_Price"]) + 1; 1740 } else { 1741 min_price = parseInt("@minPrice"); 1742 max_price = parseInt("@maxPrice"); 1743 } 1744 1745 $("#minprice").val(min_price); 1746 $("#maxprice").val(max_price); 1747 1748 if(requested_min_price == 0 && requested_max_price == 0) 1749 { 1750 requested_max_price = min_price; 1751 requested_max_price = max_price; 1752 } 1753 $( function() { 1754 $( "#slider-range" ).slider({ 1755 range: true, 1756 min: min_price, 1757 max: max_price, 1758 values: [ requested_min_price, requested_max_price ], 1759 slide: function( event, ui ) { 1760 $( "#price-filter-min" ).val(ui.values[ 0 ]); 1761 $( "#price-filter-max" ).val(ui.values[ 1 ]); 1762 } 1763 }); 1764 $( "#price-filter-min" ).val( $( "#slider-range" ).slider( "values", 0 )); 1765 $( "#price-filter-max" ).val( $( "#slider-range" ).slider( "values", 1 ) ); 1766 }); 1767 $( "#priceFilterTitle" ).show(); 1768 $( "#collapsePriceFilter" ).show(); 1769 $('.ui-slider-handle ui-corner-all ui-state-default').draggable(); 1770 }, 1771 error: function (jqXHR, textStatus, errorThrown) 1772 { 1773 //console.log("jqXHR: " + jqXHR); 1774 //console.log("textStatus: " + textStatus); 1775 //console.log("errorThrown: " + errorThrown); 1776 } 1777 }); 1778 1779 $( "#slider-range" ).mousedown(function() { 1780 priceFilterMouseDown = true; 1781 }); 1782 $(document).mouseup(function() { 1783 if(priceFilterMouseDown) { 1784 $("#applyFilters").click(); 1785 } 1786 }); 1787 1788 1789 <!------------------------- Price Filter End -------------------------> 1790 1791 <!------------------------- on Form Submit Begin -------------------------> 1792 1793 $(function() 1794 { 1795 $("form").submit(function() 1796 { 1797 $('#wordSearch').val($('#wordSearch').val().toLowerCase()); 1798 <!-- Handling null value parameter --> 1799 $( 'input[value=""]' ).each(function(index) { 1800 if($( this ).val() == null || $( this ).val() == "") { 1801 $( this ).attr("disabled", "disabled"); 1802 } 1803 }); 1804 return true; // ensure form still submits 1805 }); 1806 }); 1807 <!------------------------- on Form Submit End -------------------------> 1808 </script> 1809 <style> 1810 .dw-categories > li > .M2{ 1811 background:none; 1812 } 1813 .list-open-active { 1814 background:none; 1815 } 1816 ul.dw-categories > li > ul { 1817 background:none; 1818 } 1819 .list-active { 1820 background:none; 1821 } 1822 </style> 1823 </div> 1824 @SnippetEnd("facetSnippet") 1825 </div> 1826 </div> 1827 @if(showH1TitleFlag) 1828 { 1829 <h1 style="text-align: center;">@GetString("Ecom:Group:Field.h1titletext")</h1> 1830 } 1831 <div class="prod-content-right col-12-12"> 1832 @if( !string.IsNullOrWhiteSpace(grouptext)) 1833 { 1834 <h2 style="text-transform: capitalize;">@grouptext.Replace("-a-","&")</h2> 1835 } 1836 else 1837 { 1838 <h2 style="text-transform: capitalize;">@grouptext</h2> 1839 } 1840 <div class="col-1-1 nopadding"> 1841 <div class="sort-box col-1-3 nopadding"> 1842 <form class="sort-by"> 1843 <label class="smallText bold">@Translate("Sort by:", "Sort by:") </label> 1844 <select id="sortSelect" onchange="SortProductsBy(this.value)" style="width:100px"> 1845 @*<option value="PleaseSelect">@Translate("Please select", "Please select") </option>*@ 1846 <option value="TotalAmtSold&SortOrder=Desc" > @Translate("Best Selling", "Best Selling") </option> 1847 <option value="Brand&SortOrder=Asc" >@Translate("Brand A-Z", "Brand A-Z") </option> 1848 <option value="Brand&SortOrder=Desc" > @Translate("Brand Z-A", "Brand Z-A") </option> 1849 1850 <option value="InternetPrice&SortOrder=Asc" >@Translate("Price low-high") </option> 1851 <option value="InternetPrice&SortOrder=Desc" > @Translate("Price high-low", "Price high-low") </option> 1852 1853 1854 @*<option value="BestSelling&SortOrder=Asc" >@Translate("Best Selling low-high", "Best Selling low-high") </option> 1855 <option value="BestSelling&SortOrder=Desc" > @Translate("Best Selling high-low", "Best Selling high-low") </option>*@ 1856 1857 <option value="NewArrivals&SortOrder=Desc" > @Translate("New Arrivals", "New Arrivals") </option> 1858 @*<option value="NewArrivals&SortOrder=Asc" >@Translate("New Arrivals low-high", "New Arrivals low-high") </option> 1859 <option value="NewArrivals&SortOrder=Desc" > @Translate("New Arrivals high-low", "New Arrivals high-low") </option>*@ 1860 </select> 1861 </form> 1862 </div> 1863 1864 <div class="page-no-top col-2-3"> 1865 @if(currentPage == 1) 1866 { 1867 if(totalPages == 1) 1868 { 1869 <div id="items-pages" class="items-pages currenttotal1 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1870 }else if(totalPages == 2){ 1871 <div id="items-pages" class="items-pages currenttotal2 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1872 }else if(totalPages == 3){ 1873 <div id="items-pages" class="items-pages currenttotal3 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1874 }else if(totalPages == 4){ 1875 <div id="items-pages" class="items-pages currenttotal4 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1876 }else if(totalPages == 5){ 1877 <div id="items-pages" class="items-pages currenttotal5 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1878 }else if(totalPages == 6){ 1879 <div id="items-pages" class="items-pages currenttotal6 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1880 }else{ 1881 <div id="items-pages" class="items-pages current1 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1882 } 1883 }else if(currentPage == 2) 1884 { 1885 if(totalPages <= 6) 1886 { 1887 <div id="items-pages" class="items-pages total6current2 destopcurrent2 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1888 }else{ 1889 <div id="items-pages" class="items-pages current2 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1890 } 1891 }else if(currentPage == 3) 1892 { 1893 if(totalPages <= 6) 1894 { 1895 <div id="items-pages" class="items-pages total6current3 destopcurrent3 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1896 }else{ 1897 <div id="items-pages" class="items-pages current3 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1898 } 1899 }else if(currentPage == 4) 1900 { 1901 if(totalPages <= 6) 1902 { 1903 <div id="items-pages" class="items-pages total6current4 destopcurrent4 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1904 }else{ 1905 <div id="items-pages" class="items-pages current4 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1906 } 1907 }else if(currentPage == 5) 1908 { 1909 if(totalPages <= 6) 1910 { 1911 <div id="items-pages" class="items-pages total6current5 destopcurrent5 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1912 }else{ 1913 <div id="items-pages" class="items-pages current5 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1914 } 1915 }else if(currentPage == 6) 1916 { 1917 if(totalPages <= 6) 1918 { 1919 <div id="items-pages" class="items-pages total6current6 destopcurrent6 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1920 }else{ 1921 <div id="items-pages" class="items-pages current6 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1922 } 1923 }else 1924 { 1925 if(currentPage == totalPages) 1926 { 1927 <div id="items-pages" class="items-pages commoncurrent mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1928 }else{ 1929 if(currentPage == (totalPages - 1)) 1930 { 1931 <div id="items-pages" class="items-pages total1 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1932 }else if(currentPage == (totalPages - 2)) 1933 { 1934 <div id="items-pages" class="items-pages total2 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1935 }else if(currentPage == (totalPages - 3)) 1936 { 1937 <div id="items-pages" class="items-pages total3 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1938 }else if(currentPage == (totalPages - 4)) 1939 { 1940 <div id="items-pages" class="items-pages total4 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1941 }else if(currentPage == (totalPages - 5)) 1942 { 1943 <div id="items-pages" class="items-pages total5 mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1944 }else{ 1945 <div id="items-pages" class="items-pages commontotal mblpagination">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 1946 } 1947 } 1948 } 1949 <ul class="page-prev-next top-paging-prev" style="float: left;"> 1950 @if (!string.IsNullOrWhiteSpace(GetString("Ecom:ProductList.PrevPage.Clean"))) 1951 { 1952 <li><a href="@GetString("Ecom:ProductList.PrevPage.Clean")" style="margin-top:3px;">‹</a></li> 1953 } 1954 </ul> 1955 <ul id="page-no" class="page-no"> 1956 @{ 1957 if(currentPage!=1){ 1958 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum=1"+otherLink)'><strong>1</strong></a></li> 1959 } 1960 @*...*@ 1961 if(currentPage - noOfPages > 2){ 1962 <li><a>...</a></li> 1963 } 1964 @*previous 5 pages*@ 1965 for(var i = currentPage-noOfPages; i < currentPage; i++){ 1966 if(i>1){ 1967 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum="+i+otherLink)' ><strong>@i</strong></a></li> 1968 } 1969 } 1970 @*currentpage*@ 1971 <li class="active" style="padding: 0 2px 0 2px; text-decoration: underline;"><a href="@currentPageLink"><strong>@currentPage</strong></a></li> 1972 @*forward 5 pages*@ 1973 for(var i = currentPage+1; i < currentPage+noOfPages + 1; i++){ 1974 if(i<totalPages){ 1975 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum="+i+otherLink)'><strong>@i</strong></a></li> 1976 } 1977 } 1978 @*...*@ 1979 if(currentPage + noOfPages < totalPages-2){ 1980 <li style="padding: 0 2px 0 2px;"><a>...</a></li> 1981 } 1982 1983 if(currentPage != totalPages && totalPages != 0){ 1984 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum="+totalPages+otherLink)'><strong>@totalPages</strong></a></li> 1985 } 1986 } 1987 1988 </ul> 1989 <ul class="page-prev-next" style="margin-left: 10px;"> 1990 1991 @if (!string.IsNullOrWhiteSpace(GetString("Ecom:ProductList.NextPage.Clean"))) 1992 { 1993 <li><a href="@GetString("Ecom:ProductList.NextPage.Clean")" style="margin-top: 3px;">›</a></li> 1994 } 1995 1996 </ul> 1997 </div> 1998 1999 <hr class="grey"> 2000 </div> 2001 2002 @if(birthday && showBirthdayPrice1) 2003 { 2004 <!--<div class="info-box col-1-1" style="padding-bottom: 20px;">--> 2005 <!-- <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon_info" title="">--> 2006 <!--<span style="font-size:16px;"><strong>That's because it's your birthday this month!</span>--> 2007 <!--</div>--> 2008 } 2009 <div class="clearfix"></div> 2010 <div class="clearfix"></div> 2011 2012 <div class="compare-box" id="comparebox" style="display: none;"> 2013 <div class="title"> 2014 <h3>@Translate("Compare products")</h3> 2015 <p>(@Translate("Add up to 3 products"))</p> 2016 </div> 2017 <div class="btn-box"> 2018 <div class="btn" style="background-color:#FDF2F0;"><a href='javascript:Compare.compare(@GetPageIdByNavigationTag("ProductComparison"));'>@Translate("Compare","Compare")</a></div> 2019 <p align="center" class="smallText bold"><a href="javascript:Compare.removeall();">@Translate("Clear All","Clear All")</a></p> 2020 </div> 2021 <div id ="compare" class="add-img"> 2022 <div class="btn-add-img"><a href="#">+</a></div> 2023 </div> 2024 </div> 2025 2026 <div id="addedItem"></div> 2027 <div class="col-1-1 nopadding"> 2028 @GetProductList(GetLoop("Products"),birthday,becomeAMemberPrice, 3) 2029 </div> 2030 2031 <p> </p> 2032 <hr class="grey"> 2033 2034 <div class="page-no-bottom col-1-1" style="margin-bottom:0px;"> 2035 <div id="items-pages" class="items-pages">@GetString("Ecom:ProductList.PageProdCnt") @Translate("items in list")</div> 2036 <ul class="page-prev-next"> 2037 2038 @if (!string.IsNullOrWhiteSpace(GetString("Ecom:ProductList.PrevPage.Clean"))) 2039 { 2040 <li style="padding: 0 2px 0 2px;"><a href="@GetString("Ecom:ProductList.PrevPage.Clean")">‹</a></li> 2041 } 2042 2043 </ul> 2044 <ul id="page-no" class="page-no"> 2045 2046 @{ 2047 if(currentPage!=1){ 2048 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum=1"+otherLink)'><strong>1</strong></a></li> 2049 } 2050 @*...*@ 2051 if(currentPage - noOfPages > 2){ 2052 <li><a>...</a></li> 2053 } 2054 @*previous 5 pages*@ 2055 for(var i =currentPage-noOfPages;i<currentPage;i++){ 2056 if(i>1){ 2057 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum="+i+otherLink)' ><strong>@i</strong></a></li> 2058 } 2059 } 2060 @*currentpage*@ 2061 <li class="active" style="padding: 0 2px 0 2px; text-decoration: underline;"><a href="@currentPageLink"><strong>@currentPage</strong></a></li> 2062 @*forward 5 pages*@ 2063 for(var i =currentPage+1;i<currentPage+noOfPages+1;i++){ 2064 if(i<totalPages){ 2065 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum="+i+otherLink)'><strong>@i</strong></a></li> 2066 } 2067 } 2068 @*...*@ 2069 if(currentPage + noOfPages < totalPages-2){ 2070 <li><a>...</a></li> 2071 } 2072 2073 if(currentPage != totalPages && totalPages != 0){ 2074 <li style="padding: 0 2px 0 2px;"><a href='@(blankLink+"PageNum="+totalPages+otherLink)'><strong>@totalPages</strong></a></li> 2075 } 2076 } 2077 2078 </ul> 2079 <ul class="page-prev-next" style="margin-left: 10px;"> 2080 2081 @if (!string.IsNullOrWhiteSpace(GetString("Ecom:ProductList.NextPage.Clean"))) 2082 { 2083 <li><a href="@GetString("Ecom:ProductList.NextPage.Clean")">›</a></li> 2084 } 2085 2086 </ul> 2087 </div> 2088 <!--<div class="clearfix"></div> 2089 2090 <div class="compare-box" id="comparebox" style="display: none;"> 2091 <div class="title"> 2092 <h3>@Translate("Compare products")</h3> 2093 <p>(@Translate("Add up to 3 products"))</p> 2094 </div> 2095 <div class="btn-box"> 2096 <div class="btn" style="background-color:#FDF2F0;"><a href='javascript:Compare.compare(@GetPageIdByNavigationTag("ProductComparison"));'>@Translate("Compare","Compare")</a></div> 2097 <p align="center" class="smallText bold"><a href="javascript:Compare.removeall();">@Translate("Clear All","Clear All")</a></p> 2098 </div> 2099 <div id ="compare" class="add-img"> 2100 <div class="btn-add-img"><a href="#">+</a></div> 2101 </div> 2102 </div> 2103 2104 </div>--> 2105 2106 <div id="location" style="width:100%; max-width:400px;display: none;"> 2107 <form> 2108 <h3 style="margin:0;">You have selected more than one location.</h3> 2109 <p style="margin:0 0 20px 0;">Which location would like to pick up this product from?</p> 2110 <input type="checkbox" /> Toa Payoh<br /> 2111 <input type="checkbox" /> Valley Point 2112 <div class="btn-addto-cart" style="margin-top:20px; width:200px;"> 2113 <a href="#"><i class="fa fa-shopping-cart"></i> @Translate("Add to cart") **</a> 2114 </div> 2115 </form> 2116 </div> 2117 <script> 2118 function getQueryStringValue (key) { 2119 return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1")); 2120 } 2121 2122 setSortDropDown(); 2123 function setSortDropDown(){ 2124 var pageLink = document.location.href; 2125 if(!pageLink.includes("SortBy")) { 2126 2127 } else { 2128 var sortby1 = pageLink.split('SortBy=')[1]; 2129 var sortby = sortby1.split('&SortOrder=')[0]; 2130 var sortorder = sortby1.split('&SortOrder=')[1]; 2131 var sortstring = sortby.toLowerCase() + sortorder.toLowerCase(); 2132 document.getElementById("sortSelect").value = sortstring; 2133 } 2134 } 2135 function SortProductsBy(sortcode) { 2136 var Page = "@grouplink"; 2137 var pageLink = document.location.href; 2138 var paraJoinSign = ""; 2139 if(location.href.indexOf('?') >= 0) { 2140 paraJoinSign = "&"; 2141 } else { 2142 paraJoinSign = "?"; 2143 } 2144 2145 if($("#sortSelect").val() == "PleaseSelect") { 2146 //document.cookie = "sortby="; 2147 } else { 2148 //document.cookie = "sortby=" + sortcode; 2149 } 2150 2151 if(!pageLink.includes("SortBy")){ 2152 document.location.href = location.href + paraJoinSign + "SortBy=" + sortcode; 2153 } 2154 else{ 2155 //document.location.href = pageLink.split("&SortBy")[0]+ "&SortBy=" + sortcode; 2156 var withoutParameter = window.location.href.split('?')[0]; 2157 document.location.href = withoutParameter + "?SortBy=" + sortcode; 2158 } 2159 } 2160 2161 function compareProducts(compareId,productName,productLink,checked){ 2162 if(!checked) { 2163 Compare.remove(compareId); 2164 } else { 2165 Compare.add(compareId,productName,productLink); 2166 } 2167 } 2168 </script> 2169 @* ----- qty controller Begin----- *@ 2170 <script type="text/javascript" src="/Files/Templates/Designs/PLC/js/PLCAddToCartQtyController.js?v=1.1"></script> 2171 @* ----- qty controller End------- *@