Error executing template "Designs/PLC/eCom/Product/PLCProductDetail.cshtml"
System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting the varchar value 'NVALI' to data type int.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
   at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
   at System.Data.SqlClient.SqlDataReader.Read()
   at CompiledRazorTemplates.Dynamic.RazorEngine_74ead39d4a7d445c8a51d88b1f79ed28.Execute() in E:\www\uat.petloverscentre.co.th\Solution\Files\Templates\Designs\PLC\eCom\Product\PLCProductDetail.cshtml:line 1195
   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()
ClientConnectionId:8f325a04-006f-4885-9b0c-cfbc05727721
Error Number:245,State:1,Class:16

1 @using DWAPAC.PLC.Services 2 @{ 3 string currentAbsoluteUriString = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; 4 var userAgent = HttpContext.Current.Request.UserAgent.ToLower(); 5 Uri currentAbsoluteUri = new Uri(currentAbsoluteUriString); 6 string plcUrl = currentAbsoluteUri.Scheme + "://" + currentAbsoluteUri.Host; 7 string showHide = string.Empty; 8 string language = GetGlobalValue("Global:Area.LongLang"); 9 } 10 11 @{ 12 string promoName = ""; 13 string promoD = ""; 14 int pId= GetInteger("Ecom:Product.ID"); 15 List<string> productPromoNames=new List<string>(); 16 @*var promosqlString = "SELECT discountname, discountdescription FROM ecomdiscount WHERE DISCOUNTACTIVE='true' and discountproductsandgroups LIKE '%p:" + pId + "%'";*@ 17 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 + ",%'"; 18 using(System.Data.IDataReader promoNameReder = Dynamicweb.Data.Database.CreateDataReader(promosqlString)) 19 { 20 while (promoNameReder.Read()) 21 { 22 promoName += promoNameReder["discountname"].ToString() + "<br>" +"<div style='font-size: small; margin-top: 7px;'>" +promoNameReder["discountdescription"].ToString() +"</div>" +"<br>"; 23 //promoD += promoNameReder["discountdescription"].ToString() + "<br>"; 24 } 25 } 26 } 27 <script> 28 var canAddToCart = true; 29 </script> 30 @using System.Web 31 32 @using System.Text.RegularExpressions 33 @using System.Web 34 35 36 @functions{ 37 public class WrapMethods 38 { 39 40 41 //Gets the contrasting color 42 public static string getContrastYIQ(string hexcolor) 43 { 44 if (hexcolor != "") 45 { 46 hexcolor = Regex.Replace(hexcolor, "[^0-9a-zA-Z]+", ""); 47 48 int r = Convert.ToByte(hexcolor.Substring(0, 2), 16); 49 int g = Convert.ToByte(hexcolor.Substring(2, 2), 16); 50 int b = Convert.ToByte(hexcolor.Substring(4, 2), 16); 51 int yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 52 53 if (yiq >= 128) 54 { 55 return "black"; 56 } 57 else 58 { 59 return "white"; 60 } 61 } 62 else 63 { 64 return "black"; 65 } 66 } 67 68 69 //Truncate text 70 public static string Truncate (string value, int count, bool strip=true) 71 { 72 if (strip == true){ 73 value = StripHtmlTagByCharArray(value); 74 } 75 76 if (value.Length > count) 77 { 78 value = value.Substring(0, count - 1) + "..."; 79 } 80 81 return value; 82 } 83 84 85 //Strip text from HTML 86 public static string StripHtmlTagByCharArray(string htmlString) 87 { 88 char[] array = new char[htmlString.Length]; 89 int arrayIndex = 0; 90 bool inside = false; 91 92 for (int i = 0; i < htmlString.Length; i++) 93 { 94 char let = htmlString[i]; 95 if (let == '<') 96 { 97 inside = true; 98 continue; 99 } 100 if (let == '>') 101 { 102 inside = false; 103 continue; 104 } 105 if (!inside) 106 { 107 array[arrayIndex] = let; 108 arrayIndex++; 109 } 110 } 111 return new string(array, 0, arrayIndex); 112 } 113 114 //Make the correct count of columns 115 public static string ColumnMaker(int Col, string ScreenSize) 116 { 117 string Columns = ""; 118 119 switch (Col) 120 { 121 case 1: 122 Columns = "col-"+ScreenSize+"-12"; 123 break; 124 125 case 2: 126 Columns = "col-"+ScreenSize+"-6"; 127 break; 128 129 case 3: 130 Columns = "col-"+ScreenSize+"-4"; 131 break; 132 133 case 4: 134 Columns = "col-"+ScreenSize+"-3"; 135 break; 136 137 default: 138 Columns = "col-"+ScreenSize+"-3"; 139 break; 140 } 141 142 return Columns; 143 } 144 145 146 private string Custom(string firstoption, string secondoption) 147 { 148 if (firstoption == "custom") 149 { 150 return secondoption; 151 } 152 else 153 { 154 return firstoption; 155 } 156 } 157 } 158 } 159 @using DWAPAC.PLC.Services 160 @using Dynamicweb.Security.UserManagement.Common.CustomFields 161 162 163 <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 164 <script type="text/javascript" src="/Files/Templates/Designs/PLC/eCom/ProductList/Compare.js"></script> 165 <style> 166 .ui-dialog-titlebar, .ui-dialog-buttonset button{ 167 background:#662010; 168 color: #FFF; 169 } 170 .clearfix{ 171 margin-bottom: -10px !important; 172 } 173 174 #myBtn { 175 display: none; 176 position: fixed; 177 bottom: 55px; 178 right: 9%; 179 z-index: 99; 180 font-size: 18px; 181 border: none; 182 outline: none; 183 color: white; 184 cursor: pointer; 185 padding: 15px; 186 border-radius: 4px; 187 background-image: url(/Files/Templates/Designs/PLC/assets/images/up_arrow_icon.png); 188 background-size: 35px; 189 width: 35px; 190 height: 35px; 191 } 192 193 .product-box .prod-img img { 194 display: block; 195 margin: 0px auto; 196 } 197 .prod-pbox{ 198 height:115px; 199 } 200 /*::before { 201 padding-top:0.5em; 202 }commented out By AKS due to menu collapsing problem */ 203 input[type=number]::-webkit-inner-spin-button, 204 input[type=number]::-webkit-outer-spin-button { 205 -webkit-appearance: none; 206 -moz-appearance: none; 207 appearance: none; 208 margin: 0; 209 } 210 @if(GetInteger("Ecom:ProductList.PageProdCnt") > 0) 211 { 212 <text> 213 .btn-addto-cart { 214 margin-bottom:5px; 215 background-color: #ad2d14; 216 height:38px; 217 border-radius: 3px; 218 } 219 .btn-addto-cart:hover { 220 //background-color: #500d00; 221 } 222 .glyphicon-minus, .glyphicon-plus { 223 cursor: pointer; 224 color: #ffffff; 225 } 226 </text> 227 if(System.Web.HttpContext.Current.Request.Browser.Type.ToUpper().Contains("SAFARI")) 228 { 229 <text> 230 .btn-addto-cart div a, .btn-addto-cart a { 231 line-height: 36px; 232 } 233 #addtocartLink { 234 margin-top: 30px !important; 235 } 236 @@media screen (max-width: 340px){ 237 .btn-addto-cart div a, .btn-addto-cart a { 238 padding-top: 0px; 239 } 240 } 241 .fixsize { 242 margin-top: 120px; 243 } 244 </text> 245 } 246 else 247 { 248 249 } 250 } 251 else 252 { 253 if(System.Web.HttpContext.Current.Request.Browser.Type.ToUpper().Contains("SAFARI")) 254 { 255 <text> 256 .btn-addto-cart div a, .btn-addto-cart a { 257 line-height: 36px; 258 } 259 #addtocartLink { 260 margin-top: 30px !important; 261 } 262 @@media screen (max-width: 340px){ 263 .btn-addto-cart div a, .btn-addto-cart a { 264 padding-top: 0px; 265 } 266 } 267 </text> 268 } 269 else 270 { 271 272 } 273 } 274 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 275 .mblAddTo { 276 padding-left:30px !important; 277 } 278 } 279 @@media screen and (max-width: 700px) and (min-width: 375px) and (max-height: 700px) { 280 .mblpromologo { 281 padding-bottom:2px; 282 } 283 } 284 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 285 .mblpromologo1 { 286 padding-bottom:-5px; 287 } 288 } 289 @@media screen and (max-width: 800px) and (min-width: 768px) and (max-height: 1024px) { 290 .mblPromologoipad { 291 padding-bottom:5px; 292 } 293 } 294 @@media screen and (max-width: 1024px) and (min-width: 768px) and (max-height: 800px) { 295 .mblPromologoipad1 { 296 padding-bottom:5px; 297 } 298 } 299 @@media screen and (max-width: 800px) and (min-width: 760px) and (max-height: 1200px) { 300 .mblPromologolap { 301 padding-bottom:2px; 302 } 303 } 304 305 306 @@media screen and (max-width: 800px) and (min-width: 700px) and (max-height: 1030px) { 307 .mblAddTo { 308 padding-left:70px !important; 309 } 310 } 311 312 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 313 .btn-sale{ 314 position: absolute; 315 z-index: 10; 316 right: 10px; 317 width: 80px; 318 padding-top: 8px !important; 319 } 320 } 321 </style> 322 323 @helper GetProductList(dynamic Loop,bool birthday,string becomeAMemberPrice, int ColMD=3, int ColSM=3, int ColXS=1) 324 { 325 326 var birthday0 = false; 327 bool showBirthdayPrice = false; 328 bool userHasVIPCard = false; 329 bool userHasValidVipCard = false; 330 DateTime expDate = new DateTime(); 331 DateTime today = DateTime.Now; 332 333 if (Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 334 { 335 int i = Convert.ToInt32(GetGlobalValue("Global:Extranet.UserID")); 336 Dynamicweb.Security.UserManagement.User u = Dynamicweb.Security.UserManagement.User.GetUserByID(i); 337 338 foreach (CustomFieldValue val in u.CustomFieldValues) 339 { 340 CustomField field = val.CustomField; 341 string fieldName = field.Name; 342 343 if(fieldName == "DOB") 344 { 345 DateTime bDay = new DateTime(); 346 if(val.Value != null) 347 { 348 bDay = (DateTime)val.Value; 349 if(bDay.Month == today.Month) 350 { 351 birthday0 = true; 352 } 353 } 354 } 355 if(fieldName=="ExpryDate") 356 { 357 expDate=(DateTime)val.Value; 358 } 359 360 switch (fieldName.ToUpper()) 361 { 362 case "VIP CARD NO": 363 userHasVIPCard = !string.IsNullOrEmpty((val.Value).ToString()); 364 break; 365 case "EXPRYDATE": 366 userHasValidVipCard = expDate.Date < today.Date; 367 break; 368 default: 369 break; 370 } 371 } 372 } 373 showBirthdayPrice = birthday0 && userHasVIPCard && userHasValidVipCard; 374 375 string pathproduct="/Files/Images/plc"; 376 string imgpath="/Files/Images/Ecom/Products/"; 377 string imgpathpng=""; 378 string pidString = ""; 379 var loopCounter = 0; 380 List<string>statusList = new List<string>(); 381 382 foreach(LoopItem product1 in Loop) 383 { 384 string pid1 = product1.GetString("Ecom:Product.ID"); 385 pidString += "[" + pid1 + "],"; 386 } 387 pidString = pidString.Remove(pidString.Length - 1); 388 pidString = "{" + pidString; 389 pidString = pidString + "}"; 390 391 var response = WebServices.getProductMultiStatusAdvServiceResponse(pidString); 392 393 var responseSplit = response.Split(';'); 394 if (responseSplit[0].Contains("500")) 395 { 396 <style> 397 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 398 .mainImg{ 399 padding-left: 85px; 400 } 401 } 402 403 @@media screen and (max-width: 700px) and (min-width: 600px) and (max-height: 400px) { 404 .mainImg{ 405 padding-left: 222px; 406 } 407 } 408 </style> 409 if(Pageview.Device.ToString().ToUpper() == "MOBILE") 410 { 411 <div style="padding-left: 60px;" name="under_maintenance"> 412 <img src="/Files/Templates/Designs/PLC/assets/images/under_maintenance_icon.png" class="mainImg" alt="Under Maintenance"><br><br> 413 <span style="font-size: 20px;font-weight: 700;">Sorry, we are facing a temporary server error. Please try again later.</span> 414 </div> 415 }else if(Pageview.Device.ToString().ToUpper() == "TABLET") 416 { 417 <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> 418 }else{ 419 <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> 420 } 421 return; 422 } 423 424 425 string productResponse = responseSplit[2].Split('{')[1].Replace("}",""); 426 427 var singleProduct = productResponse.Split(','); 428 for(var i =0; i < singleProduct.Length; i++) 429 { 430 string string1 = singleProduct[i].Remove(singleProduct[i].Length-1).Remove(0,1); 431 statusList.Add(string1.Split(':')[1]); 432 } 433 if (responseSplit[0].Contains("200")) 434 { 435 foreach (LoopItem product in Loop) 436 { 437 string pid=product.GetString("Ecom:Product.ID"); 438 //Promotion 439 440 string promoName = ""; 441 string promoD = ""; 442 List<string> productPromoNames=new List<string>(); 443 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 + ",%'"; 444 using(System.Data.IDataReader promoNameReder = Dynamicweb.Data.Database.CreateDataReader(promosqlString)) 445 { 446 while (promoNameReder.Read()) 447 { 448 promoName += promoNameReder["DISCOUNTNAME"].ToString(); 449 promoD += promoNameReder["DISCOUNTDESCRIPTION"].ToString() + "<br>"; 450 } 451 } 452 string Image = product.GetString("Ecom:Product.ImageSmall.Default.Clean"); 453 string Link = product.GetString("Ecom:Product.Link.Clean"); 454 string GroupLink = product.GetString("Ecom:Product.LinkGroup.Clean"); 455 string Name = product.GetString("Ecom:Product.Name"); 456 Name = Name.Replace("\"","&#10078;"); 457 GroupLink = "Default.aspx?ID=" + GetPageIdByNavigationTag("Products") + "&ProductID=" + pid; 458 string Number = product.GetString("Ecom:Product.Number"); 459 string ProdBrand = product.GetString("Ecom:Product:Field.ProductBrand"); 460 imgpath = "/Files/Images/Ecom/Products/" + pid + ".jpg"; 461 imgpathpng = "/Files/Images/Ecom/Products/" + pid + ".png"; 462 var absolutePathjpg = System.Web.HttpContext.Current.Server.MapPath("~/"+ imgpath); 463 var absolutePathpng = System.Web.HttpContext.Current.Server.MapPath("~/"+ imgpathpng); 464 if(System.IO.File.Exists(absolutePathjpg)) 465 { 466 Image=imgpath; 467 } 468 else if(System.IO.File.Exists(absolutePathpng)) 469 { 470 Image=imgpathpng; 471 } 472 473 string Description = product.GetString("Ecom:Product.ShortDescription"); 474 string Discount = product.GetString("Ecom:Product.Discount.Price"); 475 string Price = product.GetString("Ecom:Product.Price"); 476 string CurrencyCode = product.GetString("Ecom:Product.Price.Currency.Code"); 477 //string Promotion=product.GetString("Ecom:Product.Price"); 478 string Active=product.GetString("Ecom:Product.IsActive"); 479 var Rating=product.GetDouble("Ecom:Product.Rating"); 480 481 var sellingPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSPrice"))*1000/5)/200; 482 var internetPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSInternetPrice"))*1000/5)/200; 483 var price=9.95; 484 485 if(price==product.GetDouble("Ecom:Product:Field.ProductSInternetPrice")) 486 { 487 internetPrice= product.GetDouble("Ecom:Product:Field.ProductSInternetPrice"); 488 } 489 Boolean inventoryDiscount = product.GetBoolean("Ecom:Product:Field.ProductInventoryDiscountFlag"); 490 var discountPercentage = product.GetDouble("Ecom:Product:Field.ProductInventoryDiscount"); 491 var birthdayPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSBirthdayPrice"))*1000/5)/200; 492 var memberPrice = Math.Floor((product.GetDouble("Ecom:Product:Field.ProductSMemberPrice"))*1000/5)/200; 493 var disable=product.GetBoolean("Ecom:Product:Field.Disable"); 494 var promotion=0.00; 495 var discountType=""; 496 var promoNames = ""; 497 var testingNames = ""; 498 foreach(var promoItem in product.GetLoop("AllDiscounts")) 499 { 500 promoNames += promoItem.GetString("Ecom:AllDiscounts.Discount.Name") +"<br>"; 501 } 502 foreach (LoopItem item in product.GetLoop("ProductDiscounts")) 503 { 504 505 if(item.GetString("Ecom:Product.Discount.Type")=="PERCENT") 506 { 507 discountType="PERCENT"; 508 promotion=item.GetDouble("Ecom:Product.Discount.PercentWithoutVATFormatted"); 509 } 510 else 511 { 512 discountType="AMOUNT"; 513 promotion=item.GetDouble("Ecom:Product.Discount.AmountWithoutVATFormatted"); 514 } 515 } 516 517 string sellingPriceStr = ((sellingPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", sellingPrice) : string.Format("{0:0}", sellingPrice); 518 string internetPriceStr = ((internetPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", internetPrice) : string.Format("{0:0}", internetPrice); 519 string savePriceStr = ((sellingPrice-internetPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", sellingPrice-internetPrice) : string.Format("{0:0.00}", sellingPrice-internetPrice); 520 string memberPriceStr = ((memberPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", memberPrice) : string.Format("{0:0}", memberPrice); 521 string birthdayPriceStr = ((birthdayPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", birthdayPrice) : string.Format("{0:0}", birthdayPrice); 522 523 if(pid != "PROD1" && pid !="PROD2") 524 { 525 <!--product start--> 526 if(!disable) 527 { 528 <div class="product-box col-1-3 tab-col-1-2 mobile-col-1-1" id="get_@pid"> 529 <div class="prod-img"> 530 @if(promotion != 0) 531 { 532 if(discountType == "PERCENT") 533 { 534 <div class="ribbon-P"><span>@promotion% Off</span></div> 535 } 536 else 537 { 538 <div class="ribbon-P"><span>@product.GetString("Ecom:Product.Currency.Symbol")@promotion Off</span></div> 539 } 540 } 541 else 542 { 543 //add ERP discount ribbon 544 if(inventoryDiscount) 545 { 546 if(discountPercentage != 0) 547 { 548 <div class="ribbon-D"><span>@discountPercentage% Off</span></div> 549 } 550 } 551 } 552 <a href="@GroupLink" title="@Name"> 553 <img src="/Admin/Public/Getimage.ashx?width=147&amp;compression=60&amp;Crop=5&amp;image=@Image" class="img-responsive" id="img_@pid" alt="@Name @Number" title="@Name @Number"> 554 </a> 555 </div> 556 <p class="prod-name">@ProdBrand 557 <br/> @product.GetString("Ecom:Product.Name") 558 </p> 559 560 561 @if(promoName != "") 562 { 563 <span class="top tipso_style" data-tipso='@promoName.Replace("\"", "&quot;").Replace("'","&#39;").Replace("<","&lt;").Replace(">","&gt;")'> 564 @if(GetGlobalValue("Global:Extranet.UserName")!= ""){ 565 <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> 566 567 568 } 569 else{ 570 571 <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> 572 573 } 574 </span> 575 }else{ 576 <div style="background: white; text-align: center; font-size: medium; color: white; font-weight: 600; margin-bottom: inherit; padding-bottom: 3px;"></div> 577 } 578 <div class="prod-star" style="display:none;"> 579 @if(@Rating == 0) 580 { 581 <label class = "starUnselected"></label> 582 <label class = "starUnselected"></label> 583 <label class = "starUnselected"></label> 584 <label class = "starUnselected"></label> 585 <label class = "starUnselected"></label> 586 } 587 @if(Rating % 1 != 0) 588 { 589 for(var i = 1; i < @Rating; i++) 590 { 591 <label class = "starSelected"></label> 592 } 593 <label class = "starSelected half"></label> 594 } 595 else 596 { 597 for(var i = 1; i < @Rating+1; i++) 598 { 599 <label class = "starSelected"></label> 600 } 601 } 602 603 604 </div> 605 <div class="prod-pbox"> 606 @if(inventoryDiscount) 607 { 608 if(sellingPrice != internetPrice) 609 { 610 <div class="prod-price"> 611 <p class="op">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 612 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 613 <p class="save-price">Save @product.GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 614 </div> 615 } 616 else if(sellingPrice == internetPrice) 617 { 618 <div class="prod-price"> 619 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 620 </div> 621 } 622 <div style="height:65px;">@* Add gap to fix aligment *@ 623 <div class="member-price"></div> 624 </div> 625 } 626 @*inventoryDiscount false*@ 627 else 628 { 629 if (!Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 630 { 631 @*<div class="prod-price"> 632 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 633 </div>*@ 634 635 if(sellingPrice != internetPrice) 636 { 637 <div class="prod-price"> 638 <p class="op">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 639 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 640 <p class="save-price">Save @product.GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 641 </div> 642 } 643 else if(sellingPrice == internetPrice) 644 { 645 <div class="prod-price"> 646 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 647 </div> 648 } 649 650 <div style="height:65px;"> 651 <div class="member-price"> 652 @if(memberPrice > 0) 653 { 654 <div id="proId" style="display:none"></div> 655 <div class="title" id="memberId">@Translate("VIP Member")&nbsp; 656 <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")"> 657 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 658 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 659 </div> 660 <div class="title" id="birthdayId" >@Translate("VIP Birthday")&nbsp; 661 <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")"> 662 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 663 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 664 </div> 665 666 } 667 @if(birthdayPrice > 0 && showBirthdayPrice) 668 { 669 <div class="title">@Translate("VIP Birthday")&nbsp; 670 <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")"> 671 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 672 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 673 </div> 674 } 675 </div> 676 </div> 677 } 678 else if(Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 679 { 680 @*<div class="prod-price"> 681 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 682 </div>*@ 683 684 if(sellingPrice != internetPrice) 685 { 686 <div class="prod-price"> 687 <p class="op">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 688 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 689 <p class="save-price">Save @product.GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 690 </div> 691 } 692 else if(sellingPrice == internetPrice) 693 { 694 <div class="prod-price"> 695 <p class="np">@product.GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 696 </div> 697 } 698 699 if(userHasVIPCard) 700 { 701 if(userHasValidVipCard) 702 { 703 <div id="proId" style="display:none"></div> 704 <div style="height:65px;"> 705 <div class="member-price"> 706 <div class="title" id="memberId" >@Translate("VIP Member")&nbsp; 707 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price"> 708 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 709 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 710 </div> 711 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 712 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price on your birthday month"> 713 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 714 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 715 </div> 716 </div> 717 </div> 718 } 719 720 if(!birthday) 721 { 722 if(!userHasValidVipCard) 723 { 724 <div style="height:65px;"> 725 <div class="member-price"> 726 @if(memberPrice > 0) 727 { 728 <div class="title" id="memberId">@Translate("VIP Member")&nbsp; 729 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price " > 730 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 731 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 732 </div> 733 } 734 </div> 735 </div> 736 } 737 } 738 else if (birthday) 739 { 740 if(!userHasValidVipCard) 741 { 742 <div style="height:65px;"> 743 <div class="member-price"> 744 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 745 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price on your birthday month"> 746 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon_info"></span> 747 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 748 </div> 749 </div> 750 </div> 751 } 752 } 753 } 754 else 755 { 756 if(memberPrice > 0) 757 { 758 <div id="proId" style="display:none"></div> 759 <div style="height:65px;"> 760 <div class="member-price"> 761 <div class="title" id="memberId" >@Translate("VIP Member")&nbsp; 762 <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") "> 763 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 764 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 765 </div> 766 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 767 <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")"> 768 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 769 <p class="price">@product.GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 770 </div> 771 </div> 772 </div> 773 } 774 } 775 } 776 } 777 </div> 778 <!-------------------------------------------------------End Pricing----------------------------------------------------------------------------------------------------> 779 <hr> 780 @{ 781 string tipsoMessage = "no Message Available!"; 782 tipsoMessage = statusList[loopCounter]; 783 switch (statusList[loopCounter].ToUpper()) 784 { 785 case "AVAILABLE" : 786 //tipsoMessage = "Stocks are available, with the earliest delivery within 2 working days from the date of order."; 787 tipsoMessage = Translate("Stocks are available, with the earliest delivery within 3 working days from the date of order."); 788 break; 789 case "SPECIAL ORDER" : 790 //tipsoMessage = "We will check physical stocks availability before confirming your order."; 791 //tipsoMessage = Translate("Stocks are subject to supplier's availability. For more details, please contact") + " Customer Care hotline: 02-170-7979 / Line OA : @plcthailand"; 792 tipsoMessage = Translate("SPECIAL ORDER Tooltip_Message"); 793 break; 794 case "IN STOCK" : 795 tipsoMessage = Translate("Stocks are available at our retail stores for delivery within 7 working days upon receipt of payment."); 796 break; 797 default : 798 tipsoMessage = "no Message Available!"; 799 break; 800 } 801 tipsoMessage = tipsoMessage.Replace("\'", "&#39;"); 802 <ul class="info"> 803 <li>*@Translate(statusList[loopCounter])<span class="top tipso_style" data-tipso='@tipsoMessage' style="vertical-align: text-bottom;"> 804 <img src="@pathproduct/images/icon_question_mark.png" alt="icon info" title="" style="width:10px;"> 805 </span></li> 806 </ul> 807 if(statusList[loopCounter].ToUpper() == "SPECIAL ORDER") 808 { 809 <ul class="info" style="line-height: 32.7px;"> 810 <li>*@Translate("NOT AVAILABLE ONLINE")</li> 811 </ul> 812 } 813 } 814 @if(statusList[loopCounter].ToUpper() != "SPECIAL ORDER") 815 { 816 <div class="btn-addto-cart smalldev"> 817 <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;"> 818 <span onclick='QtyControlBtn("quantityInput_@pid", "-");' type="button" data-value="-1" data-target="#spinner2" data-toggle="spinner"> 819 <span class="glyphicon glyphicon-minus"></span> 820 </span> 821 <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"> 822 <span onclick='QtyControlBtn("quantityInput_@pid", "+");' type="button" data-value="2" data-target="#spinner2" data-toggle="spinner"> 823 <span class="glyphicon glyphicon-plus"></span> 824 </span> 825 </div> 826 <div class="col-md-6 col-sm-6 col-xs-6 mblAddTo" style="padding: 1px 5px;display: table-cell;"> 827 <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;"> 828 <i class="fa fa-shopping-cart"></i> 829 @Translate("Add to cart") 830 </a> 831 </div> 832 </div> 833 } 834 else 835 { 836 <div class="btn-addto-cart" style="margin-bottom:5px; cursor:not-allowed; display:none;"> 837 <a ><i class="fa fa-shopping-cart"></i> In Store Only </a> 838 </div> 839 } 840 <!--<div class="btn-addto-cart smalldev" style="margin-bottom:5px;"> 841 <a href="@GroupLink"><i class="fa fa-search-plus"></i> View products details </a> 842 </div>--> 843 <div class="prod-compare" style="height : 35px;"> 844 @{ 845 string productname = product.GetString("Ecom:Product.Name"); 846 productname = productname.Replace("\"","&#10078;"); 847 } 848 <form> 849 <label>@Translate("Compare") 850 <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);"> 851 <span></span> 852 </label> 853 </form> 854 </div> 855 </div> 856 } 857 <!--product end--> 858 } 859 loopCounter++; 860 } 861 } 862 <div onclick="topFunction()" id="myBtn" title="Go to top"></div> 863 } 864 <script> 865 function topFunction() { 866 //document.body.scrollTop = 0; 867 //document.documentElement.scrollTop = 0; 868 $('html, body').animate({ scrollTop: 0 }, 'fast') 869 } 870 871 window.onscroll = function() {scrollFunction()}; 872 873 function scrollFunction() { 874 if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { 875 document.getElementById("myBtn").style.display = "block"; 876 } else { 877 document.getElementById("myBtn").style.display = "none"; 878 } 879 } 880 </script> 881 <style> 882 @@media only screen and (min-width: 400px) and (max-width: 700px){ 883 .breadcrumb { 884 margin-top: 280px; 885 } 886 } 887 @@media only screen and (min-width: 350px) and (max-width: 400px){ 888 .breadcrumb { 889 margin-top: 275px; 890 } 891 .whenNotiMainPg .breadcrumb { 892 margin-top: 140px !important; 893 } 894 } 895 @@media only screen and (max-width: 350px){ 896 .breadcrumb { 897 margin-top: 55px; 898 } 899 .whenNotiMainPg .breadcrumb { 900 margin-top: 55px !important; 901 } 902 } 903 @@media only screen and (device-height: 640px) and (device-width: 360px){ 904 .whenNotiMainPg .breadcrumb { 905 margin-top: 150px !important; 906 } 907 .breadcrumb { 908 margin-top: 60px !important; 909 } 910 } 911 @@media only screen and (device-height: 1138px) and (device-width: 712px){ 912 .breadcrumb { 913 margin-top: 260px !important; 914 } 915 .whenNotiMainPg .breadcrumb { 916 margin-top: 75px !important; 917 } 918 } 919 @@media only screen and (device-height: 812px) and (device-width: 375px){ 920 .breadcrumb { 921 margin-top: 280px !important; 922 } 923 .whenNotiMainPg .breadcrumb { 924 margin-top: 50px !important; 925 } 926 } 927 928 .lbl-pd-size, .lbl-pd-flavour, .lbl-pd-color, .lbl-pd-qty{ 929 padding-left: 0; 930 } 931 .selectbox-size, .selectbox-flavour, .selectbox-color, .selectbox-qty{ 932 padding: 5px; 933 width: 100%; 934 } 935 .qty-div{ 936 padding: 0; 937 } 938 .sidenavi-title { 939 margin-bottom: 30px; 940 } 941 @@media only screen and (max-width: 768px){ 942 #ImmediateAvailabilityAtDesktop_Onlinebtn { 943 display: none; 944 margin: 0; 945 width: 310px; 946 } 947 #ImmediateAvailabilityAtDesktop{ 948 display: none; 949 } 950 #ImmediateAvailabilityAtMobile_Onlinebtn { 951 display: block; 952 margin: 0; 953 954 } 955 #ImmediateAvailabilityAtMobile { 956 display: block; 957 width:100% !important !important; 958 } 959 .content-wrapper{ 960 top:0px; 961 } 962 } 963 @@media only screen and (min-width: 769px){ 964 #ImmediateAvailabilityAtDesktop_Onlinebtn { 965 display: block; 966 margin: 0; 967 //width:260px; 968 } 969 #ImmediateAvailabilityAtDesktop{ 970 display: block; 971 } 972 #ImmediateAvailabilityAtMobile_Onlinebtn { 973 display: none; 974 margin: 0; 975 width:260px; 976 } 977 #ImmediateAvailabilityAtMobile { 978 display: none; 979 } 980 } 981 .qtyboxright{ 982 float : right; 983 } 984 @@media screen and (max-width: 700px) and (min-width: 350px) and (max-height: 700px) { 985 .qtyboxright{ 986 float : unset; 987 } 988 } 989 .tab-pane { 990 display: none; 991 } 992 .active { 993 display: block; 994 } 995 #addtocartLink { 996 margin-top:10px; 997 } 998 .nav-tabs > li{ 999 margin-bottom:5px; 1000 } 1001 .spaceheight{ 1002 height:25px; 1003 } 1004 .shoplist{ 1005 max-height:400px; 1006 overflow-x:hidden; 1007 <!--overflow-y:scroll;--> 1008 margin:0px; 1009 } 1010 ul.sidenavi{ 1011 width: 230px; 1012 } 1013 1014 @@media screen and (max-width: 800px) and (min-width: 765px) and (max-height: 1200px) { 1015 .whenNotiMainPg { 1016 margin-top: 60px !important; 1017 } 1018 } 1019 </style> 1020 @using DWAPAC.PLC.Services 1021 @{ 1022 string path="/Admin/Public/Getimage.ashx?width=300&height=300&compression=60&Crop=5&image="; 1023 string imgpath="/Files/Images/Ecom/Products/"; 1024 var birthday = false; 1025 bool showBirthdayPrice = false; 1026 bool userHasVIPCard = false; 1027 bool userHasValidVipCard = false; 1028 DateTime expDate = new DateTime(); 1029 DateTime today = DateTime.Now; 1030 if (Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) 1031 { 1032 int i = Convert.ToInt32(GetGlobalValue("Global:Extranet.UserID")); 1033 Dynamicweb.Security.UserManagement.User u = Dynamicweb.Security.UserManagement.User.GetUserByID(i); 1034 1035 foreach (CustomFieldValue val in u.CustomFieldValues) 1036 { 1037 CustomField field = val.CustomField; 1038 string fieldName = field.Name; 1039 1040 if(fieldName == "DOB") 1041 { 1042 DateTime bDay = new DateTime(); 1043 if(val.Value != null) 1044 { 1045 bDay = (DateTime)val.Value; 1046 if(bDay.Month == today.Month) 1047 { 1048 birthday = true; 1049 } 1050 } 1051 } 1052 if(fieldName == "ExpryDate") 1053 { 1054 expDate = (DateTime)val.Value; 1055 } 1056 switch (fieldName.ToUpper()) 1057 { 1058 case "VIP CARD NO": 1059 userHasVIPCard = !string.IsNullOrEmpty((val.Value).ToString()); 1060 break; 1061 case "EXPRYDATE": 1062 userHasValidVipCard = expDate.Date < today.Date; 1063 break; 1064 default: 1065 break; 1066 } 1067 } 1068 } 1069 showBirthdayPrice = birthday && userHasVIPCard && userHasValidVipCard; 1070 string firstCategory = GetString("Ecom:Product:Field.FirstCategory"); 1071 string secondCategory = GetString("Ecom:Product:Field.SecondCategory"); 1072 string thirdCategory = GetString("Ecom:Product:Field.ThirdCategory"); 1073 string pid = GetString("Ecom:Product.ID"); 1074 1075 string Image = GetString("Ecom:Product.ImageMedium.Default.Clean"); 1076 string imgpathjpg = imgpath+pid+".jpg"; 1077 string imgpathpng = imgpath+pid+".png"; 1078 var absolutePathsjpg = System.Web.HttpContext.Current.Server.MapPath("~/"+ imgpathjpg); 1079 var absolutePathpng = System.Web.HttpContext.Current.Server.MapPath("~/"+ imgpathpng); 1080 if(System.IO.File.Exists(absolutePathsjpg)) 1081 { 1082 Image = imgpathjpg; 1083 } 1084 else if(System.IO.File.Exists(absolutePathpng)) 1085 { 1086 Image = imgpathpng; 1087 } 1088 1089 var ProdImgLargePath = "/Files/Images/Ecom/Products/Large/"; 1090 string ProdImgLarge = GetString("Ecom:Product.ImageLarge.Default.Clean"); 1091 ProdImgLargePath = ProdImgLargePath+pid+".jpg"; 1092 var absolutePathjpg = System.Web.HttpContext.Current.Server.MapPath("~/"+ ProdImgLargePath); 1093 if(System.IO.File.Exists(absolutePathjpg)) 1094 { 1095 ProdImgLarge=ProdImgLargePath; 1096 } 1097 1098 string ProdName = GetString("Ecom:Product.Name"); 1099 string ProdBarCode = GetString("Ecom:Product:Field.ProductBarCode"); 1100 string pathproduct = "/Files/Images/plc"; 1101 string productNumber = GetString("Ecom:Product.Number"); 1102 string pageID = GetString("Ecom:Product:Page.ID"); 1103 string skuCode = GetString("Ecom:Product:Field.SKUCode"); 1104 string productSize = GetString("Ecom:Product:Field.Size"); 1105 string productFlavour = GetString("Ecom:Product:Field.Flavour"); 1106 string productColor = GetString("Ecom:Product:Field.Color"); 1107 1108 bool hasSize = !string.IsNullOrEmpty(GetString("Ecom:Product:Field.Size")); 1109 bool hasFlavour = !string.IsNullOrEmpty(GetString("Ecom:Product:Field.Flavour")); 1110 bool hasColor = !string.IsNullOrEmpty(GetString("Ecom:Product:Field.Color")); 1111 int hasVariantCount = 0; 1112 hasVariantCount += hasSize ? 1 : 0; 1113 hasVariantCount += hasFlavour ? 1 : 0; 1114 hasVariantCount += hasColor ? 1 : 0; 1115 1116 string ProdStock = GetString("Ecom:Product.Stock"); 1117 string ProdRating = GetString("Comments.Rating.Rounded2"); 1118 string ProdLongDesc = GetString("Ecom:LongDescription"); 1119 string ProdBrand = GetString("Ecom:Product:Field.ProductBrand"); 1120 string ProdBrandEncode = System.Web.HttpUtility.UrlEncode(GetString("Ecom:Product:Field.ProductBrand")); 1121 string ProdInfo = GetString("Ecom:Product:Field.ProductInfo"); 1122 string ProdActualPrice = GetString("Ecom:Product.Price"); 1123 string ProdAvilableAmount = GetString("Ecom:Product.AvilableAmount"); 1124 string ProdDiscount = GetString("Ecom:Product.Discount.Price"); 1125 string ProdReview = GetString("Comments.TotalCount"); 1126 string ProductVideoUrl = GetString("Ecom:Product:Field.Product_Video_Url"); 1127 var ProdSMemberPrice = GetDouble("Ecom:Product:Field.ProductSMemberPrice"); 1128 var ProdBDPrice = GetDouble("Ecom:Product:Field.ProductSBirthdayPrice"); 1129 string ProdSCost = GetString("Ecom:Product:Field.ProductSCodt"); 1130 string CurrencyCode = GetString("Ecom:Product.Price.Currency.Code"); 1131 string ProdPubBrand = GetString("Ecom:Product:Field.PublicBrand"); 1132 var productDetails = GetString("Ecom:Product:Field.ProductInfo"); 1133 Boolean ProdRepackitems = GetBoolean("Ecom:Product:Field.RepackedItems"); 1134 double productWeight = GetDouble("Ecom:Product.Weight"); 1135 string repackProductId = ""; 1136 double repackPrice = 0.00; 1137 var promoItems = ""; 1138 var promoDescription = ""; 1139 var internetPrice = Math.Floor((GetDouble("Ecom:Product:Field.ProductSInternetPrice"))*1000/5)/200; 1140 var price = 9.95; 1141 1142 if(price == GetDouble("Ecom:Product:Field.ProductSInternetPrice")) 1143 { 1144 internetPrice= GetDouble("Ecom:Product:Field.ProductSInternetPrice"); 1145 } 1146 1147 var sellingPrice = Math.Floor((GetDouble("Ecom:Product:Field.ProductSPrice"))*1000/5)/200; 1148 Boolean inventoryDiscount = GetBoolean("Ecom:Product:Field.ProductInventoryDiscountFlag"); 1149 var discountPercentage = GetDouble("Ecom:Product:Field.ProductInventoryDiscount"); 1150 var birthdayPrice = Math.Floor((GetDouble("Ecom:Product:Field.ProductSBirthdayPrice"))*1000/5)/200; 1151 var memberPrice = Math.Floor((GetDouble("Ecom:Product:Field.ProductSMemberPrice"))*1000/5)/200; 1152 var promotion=0.00; 1153 var discountType=""; 1154 foreach (LoopItem item in GetLoop("ProductDiscounts")) 1155 { 1156 if(item.GetString("Ecom:Product.Discount.Type")=="PERCENT") 1157 { 1158 discountType = "PERCENT"; 1159 promotion = item.GetDouble("Ecom:Product.Discount.PercentWithoutVATFormatted"); 1160 } 1161 else 1162 { 1163 discountType = "AMOUNT"; 1164 promotion = item.GetDouble("Ecom:Product.Discount.AmountWithoutVATFormatted"); 1165 } 1166 } 1167 1168 var storeLocationId = WebServices.getProductLocationServiceResponse(pid); 1169 1170 List<string> storeNameList = new List<string>(); 1171 Dictionary<string, string> storeAddress1List = new Dictionary<string,string>(); 1172 Dictionary<string, string> storeAddress2List = new Dictionary<string,string>(); 1173 Dictionary<string, string> storePhoneNumberList = new Dictionary<string,string>(); 1174 var storeLocationList ="0"; 1175 1176 if( !string.IsNullOrWhiteSpace(storeLocationId)) 1177 { 1178 var status = storeLocationId.Split(';')[0].Split('=')[1]; 1179 if(status == "200") 1180 { 1181 storeLocationList = storeLocationId.Split(new string[] { "GetProductLocationResult=" }, StringSplitOptions.None)[1]; 1182 storeLocationList = storeLocationList.Substring(1); 1183 storeLocationList = storeLocationList.Remove(storeLocationList.Length -1).Replace("\"",""); 1184 } 1185 } 1186 1187 if(storeLocationList!="0"){ 1188 var storeLocationNoList = storeLocationList.Split(',').Distinct().ToList(); 1189 1190 1191 foreach(var storeNo in storeLocationNoList){ 1192 var sqlString = "Select * from PLCStoreLocations where Storeid='" + storeNo + "'"; 1193 using(System.Data.IDataReader myReader2 = Dynamicweb.Data.Database.CreateDataReader(sqlString)) 1194 { 1195 while (myReader2.Read()) 1196 { 1197 storeNameList.Add(myReader2["WebName"].ToString()); 1198 storeAddress1List.Add(myReader2["WebName"].ToString(),myReader2["StoreAdd1"].ToString()); 1199 storeAddress2List.Add(myReader2["WebName"].ToString(),myReader2["StoreAdd2"].ToString()); 1200 storePhoneNumberList.Add(myReader2["WebName"].ToString(),myReader2["StoreTel"].ToString()); 1201 } 1202 } 1203 } 1204 1205 storeNameList =storeNameList.OrderBy(q => q).ToList(); 1206 1207 } 1208 //Start of variant selection 1209 1210 string variantSelector = ""; 1211 1212 if(!string.IsNullOrEmpty(productSize)) 1213 { 1214 variantSelector = "size"; 1215 } 1216 if(!string.IsNullOrEmpty(productColor)) 1217 { 1218 variantSelector = "color"; 1219 } 1220 if(!string.IsNullOrEmpty(productFlavour)) 1221 { 1222 variantSelector = "flavour"; 1223 } 1224 if(!string.IsNullOrEmpty(productSize) && !string.IsNullOrEmpty(productFlavour)){ 1225 variantSelector = "flavour"; 1226 } 1227 else if(!string.IsNullOrEmpty(productSize) && !string.IsNullOrEmpty(productColor)){ 1228 variantSelector = "color"; 1229 } 1230 else if( string.IsNullOrEmpty(productColor) && string.IsNullOrEmpty(productFlavour)){ 1231 variantSelector = "size"; 1232 } 1233 1234 List<string> sizeList=new List<string>(); 1235 List<string> flavourList=new List<string>(); 1236 List<string> colorList=new List<string>(); 1237 1238 if(variantSelector == "color") 1239 { 1240 String SQL = "SELECT DISTINCT(Size) FROM EcomProducts WHERE SKUCodes IN (SELECT SkuCodes FROM EcomProducts WHERE ProductId='" + pid + "'AND ProductlanguageId='LANG2') AND Size IS NOT NULL"; 1241 using(System.Data.IDataReader myReader = Dynamicweb.Data.Database.CreateDataReader(SQL)) 1242 { 1243 while (myReader.Read()) 1244 { 1245 string size = myReader["Size"].ToString(); 1246 sizeList.Add(size); 1247 } 1248 } 1249 String SQL2 = "SELECT DISTINCT(Color) FROM EcomProducts WHERE SKUCodes = (SELECT DISTINCT(SkuCodes) FROM EcomProducts WHERE ProductId='"+pid+"'AND ProductlanguageId='LANG2') AND Size='"+productSize+"'"; 1250 using(System.Data.IDataReader myReader2 = Dynamicweb.Data.Database.CreateDataReader(SQL2)) 1251 { 1252 while (myReader2.Read()) 1253 { 1254 string color1 = myReader2["Color"].ToString(); 1255 colorList.Add(color1); 1256 } 1257 } 1258 } 1259 else if(variantSelector == "flavour") 1260 { 1261 String SQL = "SELECT DISTINCT(Size) FROM EcomProducts WHERE SKUCodes IN (SELECT SkuCodes FROM EcomProducts WHERE ProductId='"+pid+"'AND ProductlanguageId='LANG2') AND Size IS NOT NULL"; 1262 using(System.Data.IDataReader myReader = Dynamicweb.Data.Database.CreateDataReader(SQL)) 1263 { 1264 while (myReader.Read()) 1265 { 1266 string size= myReader["Size"].ToString(); 1267 sizeList.Add(size); 1268 } 1269 } 1270 1271 String SQL2 = "SELECT DISTINCT(Flavor) FROM EcomProducts WHERE SKUCodes = (SELECT DISTINCT(SkuCodes) FROM EcomProducts WHERE ProductId='"+pid+"'AND ProductlanguageId='LANG2') AND Size='"+productSize+"'"; 1272 using(System.Data.IDataReader myReader2 = Dynamicweb.Data.Database.CreateDataReader(SQL2)) 1273 { 1274 while (myReader2.Read()) 1275 { 1276 string flavour1= myReader2["flavor"].ToString(); 1277 flavourList.Add(flavour1); 1278 } 1279 } 1280 } 1281 else if(variantSelector =="size") 1282 { 1283 String SQL = "SELECT DISTINCT(Size) FROM EcomProducts WHERE SKUCodes IN (SELECT SkuCodes FROM EcomProducts WHERE ProductId='"+pid+"'AND ProductlanguageId='LANG2') AND ProductActive = 1 AND Size IS NOT NULL"; 1284 using(System.Data.IDataReader myReader = Dynamicweb.Data.Database.CreateDataReader(SQL)) 1285 { 1286 while (myReader.Read()) 1287 { 1288 string size= myReader["Size"].ToString(); 1289 sizeList.Add(size); 1290 } 1291 } 1292 } 1293 //End of Variant 1294 1295 //Start of repack 1296 if(ProdRepackitems) 1297 { 1298 if(productWeight == 0) 1299 { 1300 String SQL = "SELECT FieldValueProductId FROM EcomProductCategoryFieldValue WHERE FieldValueFieldId='Is_Default'"; 1301 using(System.Data.IDataReader myReader = Dynamicweb.Data.Database.CreateDataReader(SQL)) 1302 { 1303 while (myReader.Read()) 1304 { 1305 repackProductId=myReader["FieldValueProductId"].ToString(); 1306 } 1307 } 1308 } 1309 else 1310 { 1311 List<string> WeightList=new List<string>(); 1312 List<string> RepackProductIdList=new List<string>(); 1313 String SQL1 = "SELECT * FROM EcomProductCategoryFieldValue WHERE FieldValueFieldCategoryId='Repack' AND FieldValueFieldId='From_Weight' OR FieldValueFieldId='To_Weight' "; 1314 using(System.Data.IDataReader myReader1 = Dynamicweb.Data.Database.CreateDataReader(SQL1)) 1315 { 1316 while (myReader1.Read()) 1317 { 1318 WeightList.Add(myReader1["FieldValueValue"].ToString()); 1319 RepackProductIdList.Add(myReader1["FieldValueProductId"].ToString()); 1320 } 1321 } 1322 for(int i=0; i<WeightList.Count;i++) 1323 { 1324 if(productWeight > Double.Parse(WeightList[i])) 1325 { 1326 if(productWeight <= Double.Parse(WeightList[i+1])) 1327 { 1328 repackProductId=RepackProductIdList[i+1].ToString(); 1329 } 1330 } 1331 } 1332 } 1333 1334 string SQL4="SELECT ProductSInternetPrice FROM EcomProducts WHERE ProductId='"+repackProductId+"'"; 1335 using(System.Data.IDataReader myReader4 = Dynamicweb.Data.Database.CreateDataReader(SQL4)) 1336 { 1337 while (myReader4.Read()) 1338 { 1339 repackPrice = Double.Parse(myReader4["ProductSInternetPrice"].ToString()); 1340 } 1341 } 1342 } 1343 1344 } 1345 1346 <script> 1347 function setCookie(cname, cvalue, exdays) { 1348 var d = new Date(); 1349 d.setTime(d.getTime() + (exdays*24*60*60*1000)); 1350 var expires = "expires="+ d.toUTCString(); 1351 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 1352 } 1353 function getCookie(cname) { 1354 var name = cname + "="; 1355 var ca = document.cookie.split(';'); 1356 for(var i = 0; i <ca.length; i++) { 1357 var c = ca[i]; 1358 while (c.charAt(0)==' ') { 1359 c = c.substring(1); 1360 } 1361 if (c.indexOf(name) == 0) { 1362 return c.substring(name.length,c.length); 1363 } 1364 } 1365 return ""; 1366 } 1367 1368 </script> 1369 1370 <div hidden>hasSize: @hasSize | hasFlavour: @hasFlavour | hasColor: @hasColor | hasVariantCount: @hasVariantCount</div> 1371 1372 <div id="get_@pid"> 1373 <div id="dvLoading" style=" 1374 width: 100%; 1375 height: 100%; 1376 background: rgba(0,0,0,0.2); 1377 background-image:url('/Files/Images/plc/images/bx_loader.gif'); 1378 background-repeat:no-repeat; 1379 background-position:center; 1380 z-index:10000000; 1381 position: fixed; 1382 top: 0px; 1383 left: 0px; 1384 display: none; 1385 "> 1386 1387 </div> 1388 <div align="center" class="col-1-3" style="margin-top:15px;"> 1389 1390 <script> 1391 window.DY = window.DY || {}; 1392 DY.recommendationContext = { type : "PRODUCT" , data : ["@productNumber"] }; 1393 </script> 1394 1395 <form id="@pid" style="display:none" method="post" > 1396 1397 <input type="" name='ProductLoopCounter@(GetString("Ecom:Product.LoopCounter"))' value='@GetString("Ecom:Product.LoopCounter")' /> 1398 <input type="" name='ProductID@(GetString("Ecom:Product.LoopCounter"))' value='@GetString("Ecom:Product.ID")' /> 1399 <input type="number" name="Quantity@(GetString("Ecom:Product.LoopCounter"))" id="productFormQuantity" value="1" /> 1400 1401 <input type="" name='ProductLoopCounter2' value='2' /> 1402 <input type="" name='ProductID2' id="repackProductId" value='@repackProductId' /> 1403 <input type="number" id="repackFormQuantity" name="Quantity2" value="1" /> 1404 <input name= "EcomOrderLineFieldInput_ParentProductId2" value="@GetString("Ecom:Product.ID")"/> 1405 <button id="multiFormSubmit" type="submit" name="CartCmd" value="AddMulti" title="add to cart Repack">Add all</button> 1406 </form> 1407 <div class="product-box"> 1408 <div class="prod-img"> 1409 @if(promotion != 0){ 1410 if(discountType=="PERCENT") 1411 { 1412 <div class="ribbon-P"><span>Pro @promotion% Off</span></div> 1413 } 1414 else{ 1415 <div class="ribbon-P"><span>Pro @GetString("Ecom:Product.Currency.Symbol")@promotion Off</span></div> 1416 } 1417 1418 } 1419 else 1420 { 1421 //add ERP discount ribbon 1422 if(inventoryDiscount){ 1423 if(discountPercentage != 0) 1424 { 1425 <div class="ribbon-D"><span>@discountPercentage% Off</span></div>} 1426 } 1427 } 1428 </div> 1429 1430 1431 <img id="zoom_product" src='@path@Image' data-zoom-image="@ProdImgLarge" alt="@pid"/> 1432 1433 </div> 1434 <p align="center" class="smallText">@Translate("Rollover image to view larger image","Rollover image to view larger image")</p> 1435 @*<div class="clearfix spaceheight"><p>&nbsp;</p></div>*@ 1436 @if(GetBoolean("Ecom:Product:Field.ProductClassic.Value")) 1437 { 1438 <ul id="ImmediateAvailabilityAtDesktop" class="sidenavi"> 1439 @if(storeNameList.Count != 0) 1440 { 1441 <li class="current curSub"><a style="background: #e6e6e6;text-align: left;">@Translate("Immediate Availability At","Immediate Availability At")</a> 1442 <ul id="leftnavigation" class="sidenavi shoplist"> 1443 @foreach(var string1 in storeNameList) 1444 { 1445 <li class="text-left"> 1446 <a href="#@string1.Replace(" ","_")" data-toggle="collapse">@string1</a> 1447 <div id="@string1.Replace(" ","_")" class="collapse" style="padding-left: 35px;"> 1448 <p><i class="fa fa-map-marker"></i> @storeAddress1List[string1] @Translate(",",",") @storeAddress2List[string1] </p> 1449 <p><i class="fa fa-phone"></i> @storePhoneNumberList[string1]</p> 1450 </div> 1451 </li> 1452 } 1453 </ul> 1454 </li> 1455 } 1456 </ul> 1457 } 1458 else 1459 { 1460 if(storeNameList.Count != 0) 1461 { 1462 <!--<p>storeNameList count: @storeNameList.Count()</p>--> 1463 <ul id="ImmediateAvailabilityAtDesktop" class="sidenavi"> 1464 <li class="current curSub"><a style="background: #e6e6e6;text-align: left;">@Translate("Immediate Availability At","Immediate Availability At")</a> 1465 <ul id="leftnavigation" class="sidenavi shoplist"><div style="color:#ff8c00; text-align: left;font-weight: 600; margin: 10px;">@Translate("Please call to reserve").</div> 1466 @foreach(var string1 in storeNameList) 1467 { 1468 <li class="text-left"> 1469 <a href="#@string1.Replace(" ","_").Replace(".","")" data-toggle="collapse">@string1</a> 1470 <div id="@string1.Replace(" ","_").Replace(".","")" class="collapse" style="padding-left: 35px;"> 1471 <p><i class="fa fa-map-marker"></i> @storeAddress1List[string1] @Translate(",",",") @storeAddress2List[string1] </p> 1472 <p><i class="fa fa-phone"></i> @storePhoneNumberList[string1]</p> 1473 </div> 1474 </li> 1475 } 1476 </ul> 1477 </li> 1478 </ul> 1479 } 1480 else 1481 { 1482 <ul id="ImmediateAvailabilityAtDesktop_Onlinebtn" class="sidenavi"> 1483 <li class="current curSub"> 1484 <a style="background: #e6e6e6;text-align: center;margin: 20px -14px;padding:0;">@Translate("Currently Unavailable in Stores","Currently Unavailable in Stores")</a> 1485 </li> 1486 </ul> 1487 } 1488 } 1489 1490 </div> 1491 @foreach(var promoItem in GetLoop("AllDiscounts")) 1492 { 1493 promoItems += promoItem.GetString("Ecom:AllDiscounts.Discount.Name") + "<br>"; 1494 } 1495 1496 <div class="col-2-3"> 1497 <div class="prod-details-top col-1-1"> 1498 <p class="small-name" style="color: #808080;font-size: large;">@ProdBrand</p> 1499 <h1>@ProdName </h1> 1500 @if(promoName != "") 1501 { 1502 <div style="color:#ff8c00;font-weight: 600;font-size: medium;">@promoName</div> 1503 <!--<div style="color:#ff8c00;font-weight: 600;font-size: small;">@promoD</div>--> 1504 } 1505 <div class=""> 1506 @*<div style="padding-right:0px !important;color : #c8c8c8;" class="item col-md-3">@Translate("SKU :","SKU :") @productNumber</div>*@ 1507 <div style="color : #c8c8c8;">@Translate("SKU :","SKU :") @productNumber</div> 1508 @{ 1509 var getProductMultiStatusAdvServiceResponse = WebServices.getProductMultiStatusAdvServiceResponse("{[" + pid + "]}"); 1510 var getProductMultiStatusAdvServiceResponseSplit = getProductMultiStatusAdvServiceResponse.Split(';'); 1511 string productStockStatus = getProductMultiStatusAdvServiceResponseSplit[2].Split('{')[1].Replace("}","").Split(':')[1].Replace("]", ""); 1512 1513 string tipsoMessage = "no Message Available!"; 1514 switch (productStockStatus.ToUpper()) 1515 { 1516 case "AVAILABLE" : 1517 tipsoMessage = Translate("Stocks are available, with the earliest delivery within 3 working days from the date of order."); 1518 break; 1519 case "SPECIAL ORDER" : 1520 //tipsoMessage = "Stocks are subject to supplier’s availability. For more details, please contact Customer Care hotline: 02-170-7979 / Line OA : @plcthailand"; 1521 tipsoMessage = Translate("SPECIAL ORDER Tooltip_Message"); 1522 break; 1523 case "IN STOCK" : 1524 tipsoMessage = Translate("Stocks are available at our retail stores for delivery within 7 working days upon receipt of payment."); 1525 break; 1526 default : 1527 tipsoMessage = "no Message Available!"; 1528 break; 1529 } 1530 tipsoMessage = tipsoMessage.Replace("\'", "&#39;"); 1531 } 1532 <div> 1533 @if(!GetBoolean("Ecom:Product:Field.ProductClassic.Value")) 1534 { 1535 <br/> 1536 @Translate(productStockStatus) 1537 <span class="top tipso_style" data-tipso='@tipsoMessage' style="vertical-align: text-bottom;"> 1538 <img src="/Files/Images/plc/images/icon_question_mark.png" alt="icon info" title="" style="width:12px;"> 1539 </span> 1540 } 1541 </div> 1542 <div class="prod-star col-md-4"> 1543 <p style="margin:-7px 0px;padding:0px;float:left;display:none;" class="rating"> 1544 <input type="radio" id="star5" name="rating" value="5" /><label class = "full" for="=" title="Awesome - 5 stars"></label> 1545 <input type="radio" id="star4half" name="rating" value="4.5" /><label class="half" for="=" title="Pretty good - 4.5 stars"></label> 1546 <input type="radio" id="star4" name="rating" value="4" /><label class = "full" for="=" title="Pretty good - 4 stars"></label> 1547 <input type="radio" id="star3half" name="rating" value="3.5" /><label class="half" for="=" title="Meh - 3.5 stars"></label> 1548 <input type="radio" id="star3" name="rating" value="3" /><label class = "full" for="=" title="Meh - 3 stars"></label> 1549 <input type="radio" id="star2half" name="rating" value="2.5" /><label class="half" for="=" title="Kinda bad - 2.5 stars"></label> 1550 <input type="radio" id="star2" name="rating" value="2" /><label class = "full" for="=" title="Kinda bad - 2 stars"></label> 1551 <input type="radio" id="star1half" name="rating" value="1.5" /><label class="half" for="=" title="Meh - 1.5 stars"></label> 1552 <input type="radio" id="star1" name="rating" value="1" /><label class = "full" for="=" title="Sucks big time - 1 star"></label> 1553 <input type="radio" id="starhalf" name="rating" value="0.5" /><label class="half" for="=" title="Sucks big time - 0.5 stars"></label> 1554 </p> 1555 </div> 1556 <script> 1557 1558 1559 1560 $(document).ready(function() { 1561 $("#toggleReview").click(function() { 1562 $("#reviewButton").click(); 1563 $('body, html').animate({ 1564 scrollTop: $("#cmtContainer").offset().top 1565 }, 1000); 1566 }); 1567 $("#toggleWrite").click(function() { 1568 $("#reviewButton").click(); 1569 $('body, html').animate({ 1570 scrollTop: $(".formContact").offset().top 1571 }, 1000); 1572 }); 1573 1574 var ratingStars = document.getElementsByName('rating'); 1575 1576 for(var i = 0; i<ratingStars.length;i++){ 1577 1578 if(ratingStars[i].value == "@ProdRating"){ 1579 1580 ratingStars[i].click(); 1581 } 1582 } 1583 1584 }); 1585 1586 </script> 1587 1588 <!--<div class="clearfix upper-review"></div> 1589 <div class="review col-md-5"> 1590 @*<a id="toggleReview" href="javascript:void(0)">@Translate("Read reviews","Read reviews")</a> 1591 (@ProdReview)| 1592 <a id="toggleWrite" href="javascript:void(0)">Write review</a>*@ 1593 </div> --> 1594 1595 </div> 1596 </div> 1597 1598 <hr class="grey"> 1599 1600 <div class="prod-details-left col-5-12"> 1601 @{ 1602 string sellingPriceStr = ((sellingPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", sellingPrice) : string.Format("{0:0}", sellingPrice); 1603 string internetPriceStr = ((internetPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", internetPrice) : string.Format("{0:0}", internetPrice); 1604 string savePriceStr = ((sellingPrice-internetPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", sellingPrice-internetPrice) : string.Format("{0:0.00}", sellingPrice-internetPrice); 1605 string memberPriceStr = ((memberPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", memberPrice) : string.Format("{0:0}", memberPrice); 1606 string birthdayPriceStr = ((birthdayPrice * 100) % 100) > 0 ? string.Format("{0:0.00}", birthdayPrice) : string.Format("{0:0}", birthdayPrice); 1607 } 1608 @if(inventoryDiscount) 1609 { 1610 if(sellingPrice!=internetPrice) 1611 { 1612 <div class="prod-price"> 1613 <p class="op">@GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 1614 <p class="np">@GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 1615 <p class="save-price">Save @GetString("Ecom:Product.Currency.Symbol")@savePriceStr @*@string.Format("{0:0}", sellingPrice-internetPrice)*@</p> 1616 </div> 1617 } 1618 else if(sellingPrice == internetPrice) 1619 { 1620 <div class="prod-price"> 1621 <p class="np">@GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 1622 </div> 1623 } 1624 } 1625 else{ 1626 if (!Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))){ 1627 <div class="prod-price"> 1628 <p class="np">@GetString("Ecom:Product.Currency.Symbol")@sellingPriceStr</p> 1629 </div> 1630 <div class="member-price"> 1631 @if(memberPrice > 0) 1632 { 1633 <div id="proId" style="display:none"></div> 1634 <div class="title" id="memberId">@Translate("VIP Member")&nbsp; 1635 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and log in to your web account to enjoy this price")"> 1636 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 1637 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 1638 </div> 1639 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 1640 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and log in to your web account to enjoy this price on your birthday month")"> 1641 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 1642 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 1643 </div> 1644 } 1645 @if(birthdayPrice > 0 && showBirthdayPrice){ 1646 <div class="title">@Translate("VIP Birthday")&nbsp; 1647 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and enjoy this price on your birthday month")"> 1648 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 1649 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 1650 </div> 1651 } 1652 </div> 1653 }else if(Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))){ 1654 <div class="prod-price"> 1655 <p class="np">@GetString("Ecom:Product.Currency.Symbol")@internetPriceStr</p> 1656 </div> 1657 if(userHasVIPCard){ 1658 if(userHasValidVipCard) 1659 { 1660 <div id="proId" style="display:none"></div> 1661 <div class="member-price"> 1662 <div class="title" id="memberId" >@Translate("VIP Member")&nbsp; 1663 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and enjoy this price")"> 1664 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 1665 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 1666 </div> 1667 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 1668 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and enjoy this price on your birthday month")"> 1669 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 1670 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 1671 </div> 1672 </div> 1673 } 1674 1675 if(!birthday){ 1676 if(!userHasValidVipCard){ 1677 <div class="member-price"> 1678 @if(memberPrice > 0) 1679 { 1680 <div class="title" id="memberId">@Translate("VIP Member")&nbsp; 1681 <span class="top tipso_style" data-tipso=" As a VIP member, you get to enjoy this price"> 1682 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 1683 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 1684 </div> 1685 } 1686 </div> 1687 } 1688 } 1689 else if (birthday){ 1690 if(!userHasValidVipCard){ 1691 <div class="member-price"> 1692 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 1693 <span class="top tipso_style" data-tipso="As a VIP member, you get to enjoy this price on your birthday month"> 1694 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon_info"></span> 1695 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 1696 </div> 1697 </div> 1698 } 1699 } 1700 }else{ 1701 if(memberPrice > 0) 1702 { 1703 <div id="proId" style="display:none"></div> 1704 <div class="member-price"> 1705 <div class="title" id="memberId">@Translate("VIP Member")&nbsp; 1706 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and enjoy this price")"> 1707 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info" title=""></span> 1708 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@memberPriceStr</p> 1709 </div> 1710 <div class="title" id="birthdayId">@Translate("VIP Birthday")&nbsp; 1711 <span class="top tipso_style" data-tipso="@Translate("Become a VIP member for only") @GetString("Ecom:Product.Currency.Symbol")100 @Translate("and enjoy this price on your birthday month")"> 1712 <img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon info"></span> 1713 <p class="price">@GetString("Ecom:Product.Currency.Symbol")@birthdayPriceStr</p> 1714 </div> 1715 </div> 1716 } 1717 } 1718 } 1719 } 1720 1721 1722 </div> 1723 @if(birthday){ 1724 <div class="info-box" style="background:none;"> 1725 @*<h3>That's because it's your birthday this month!</h3>*@ 1726 </div> 1727 } 1728 @* 1729 <p><span class="bold">Spend @CurrencyCode 100, Save @CurrencyCode 20</span></p> 1730 <p><span class="bold">@Translate("Free delivery on all Online Orders","Free delivery on all Online Orders")</span></p> 1731 *@ 1732 </div> 1733 1734 @if(GetBoolean("Ecom:Product:Field.ProductClassic.Value")) 1735 { 1736 showHide = "hidden"; 1737 <div class="prod-details-right pull-right col-8-12"> 1738 <div style="padding: 10px;"> 1739 <p style="background-color: darkgray; padding: 2px 30px; width: fit-content; color: #ffffff;">Available in Store Only</p> 1740 <strong style="font-size: 16px; color: #952203;"> 1741 <label id="ctl00_ContentPlaceHolder1_ASPxLabel92">Remarks :</label> 1742 </strong> 1743 <div style="font-size: 12px; margin-left: -25px;"> 1744 <ul> 1745 <li>Clearance Sale items are limited and valid for in-store purchase only, while stocks 1746 last. 1747 </li> 1748 <li>VIP members can call respective stores to place a reservation for Clearance Sale 1749 items, limited to a maximum of 5 items and up to 3 days. 1750 </li> 1751 </ul> 1752 </div> 1753 <strong style="font-size: 16px; color: #952203;"> 1754 <label id="ctl00_ContentPlaceHolder1_ASPxLabel94">Terms &amp; Conditions :</label> 1755 </strong> 1756 <div style="font-size: 12px; padding-top: 5px;"> 1757 <span style="color: #000000;"><a href="/clearance-sales-terms-conditions"><span style="text-decoration: underline;"> 1758 Click here</span></a> to view the Clearance Sale's Terms &amp; Conditions 1759 </span> 1760 </div> 1761 </div> 1762 </div> 1763 1764 } 1765 <div class="prod-details-right col-8-12 " @showHide> 1766 <div class="detailsform" style="display: table !important;width:100% !important; "> 1767 @if(!string.IsNullOrEmpty(productSize)) 1768 { 1769 <div class="col-md-12 col-sm-12 col-xs-12" style=""> 1770 <label class="col-md-3 col-sm-12 col-xs-12 lbl-pd-size" style="margin-top: -13px;">Size:</label> 1771 <select id="sizeInput" class="col-md-12 col-sm-12 col-xs-12 selectbox-size" name="size" > 1772 @{ 1773 if(!string.IsNullOrWhiteSpace(skuCode)) 1774 { 1775 if(sizeList.Count != 0) 1776 { 1777 foreach(var item in sizeList) 1778 { 1779 if(productSize == item) 1780 { 1781 <option selected value="@item"> @item</option> 1782 } 1783 else 1784 { 1785 <option value="@item"> @item</option> 1786 } 1787 } 1788 } 1789 } 1790 else 1791 { 1792 <option value="@productSize">@productSize</option> 1793 } 1794 } 1795 </select> 1796 </div> 1797 <br><br> 1798 if(!string.IsNullOrWhiteSpace(productFlavour)) 1799 { 1800 <div class="col-md-12 col-sm-12 col-xs-12"> 1801 <label class="col-md-3 col-sm-12 col-xs-12 lbl-pd-flavour">Flavour:</label> 1802 <select id="flavourInput" class="col-md-12 col-sm-12 col-xs-12 selectbox-flavour" name="flavour"> 1803 @{ 1804 if(!string.IsNullOrWhiteSpace(skuCode)) 1805 { 1806 if(flavourList.Count != 0) 1807 { 1808 foreach(var item in flavourList) 1809 { 1810 if(productFlavour == item){ 1811 <option selected value="@item"><span style="word-wrap: break-word;">@item.Replace(" and "," & ")</span></option> 1812 } 1813 else 1814 { 1815 <option value="@item"><span style="word-wrap: break-word;">@item.Replace(" and "," & ")</span></option> 1816 } 1817 } 1818 } 1819 } 1820 else 1821 { 1822 <option value="@productFlavour">@productFlavour</option> 1823 } 1824 } 1825 </select> 1826 </div> 1827 <br><br> 1828 } 1829 if(!string.IsNullOrWhiteSpace(productColor)) 1830 { 1831 <div class="col-md-12 col-sm-12 col-xs-12"> 1832 <label class="col-md-3 col-sm-12 col-xs-12 lbl-pd-color">Color:</label> 1833 <select id="colorInput" class="col-md-12 col-sm-12 col-xs-12 selectbox-color" name="color"> 1834 @{ 1835 if(!string.IsNullOrWhiteSpace(skuCode)) 1836 { 1837 if(colorList.Count !=0) 1838 { 1839 foreach(var item in colorList) 1840 { 1841 if(productColor==item) 1842 { 1843 <option selected value="@item"> @item</option> 1844 } 1845 else 1846 { 1847 <option value="@item"> @item</option> 1848 } 1849 } 1850 } 1851 } 1852 else 1853 { 1854 <option value="@productColor">@productColor</option> 1855 } 1856 } 1857 </select> 1858 </div> 1859 <br><br> 1860 } 1861 } 1862 else if(!string.IsNullOrEmpty(productColor)) 1863 { 1864 <div class="col-md-12 col-sm-12 col-xs-12"> 1865 <label class="col-md-3 col-sm-12 col-xs-12 lbl-pd-size">Color:</label> 1866 <select id="onlycolorInput" class="col-md-12 col-sm-12 col-xs-12 selectbox-size" name="color" > 1867 @{ 1868 if(!string.IsNullOrWhiteSpace(skuCode)) 1869 { 1870 if(colorList.Count !=0) 1871 { 1872 foreach(var item in colorList) 1873 { 1874 if(productColor==item) 1875 { 1876 <option selected value="@item"> @item</option> 1877 } 1878 else 1879 { 1880 <option value="@item"> @item</option> 1881 } 1882 } 1883 } 1884 } 1885 else 1886 { 1887 <option value="@productColor">@productColor</option> 1888 } 1889 } 1890 </select> 1891 </div> 1892 } 1893 else if(!string.IsNullOrEmpty(productFlavour)) 1894 { 1895 <div class="col-md-12 col-sm-12 col-xs-12"> 1896 <label class="col-md-3 col-sm-12 col-xs-12 lbl-pd-size">Flavour:</label> 1897 <select id="onlyflavourInput" class="col-md-12 col-sm-12 col-xs-12 selectbox-size" name="flavour" > 1898 @{ 1899 if(!string.IsNullOrWhiteSpace(skuCode)) 1900 { 1901 if(flavourList.Count !=0) 1902 { 1903 foreach(var item in flavourList) 1904 { 1905 if(productFlavour==item) 1906 { 1907 <option selected value="@item"> @item</option> 1908 } 1909 else 1910 { 1911 <option value="@item"> @item</option> 1912 } 1913 } 1914 } 1915 } 1916 else 1917 { 1918 <option value="@productFlavour">@productFlavour</option> 1919 } 1920 } 1921 </select> 1922 </div> 1923 } 1924 1925 @if(!GetBoolean("Ecom:Product:Field.ProductClassic.Value")) 1926 { 1927 <div class="col-md-12 col-sm-12 col-xs-12" style="margin-top: -10px;"> 1928 <label class="col-md-3 col-sm-12 col-xs-12 lbl-pd-qty" style="margin-top: 10px;" >@Translate("Qty"):</label> 1929 <div id="customSelectElement" class="col-md-12 col-sm-12 col-xs-12 qty-div"> 1930 <div id="selectBox" style="width: 100% !important;"> 1931 <input type="number" class="col-md-12 col-sm-12 col-xs-12 selectbox-qty form-control" onkeydown='QtyKeyControl("quantityInput_@pid", "keydown");' onkeyup='QtyKeyControl("quantityInput_@pid", "keyup");' onfocusout='return QtyKeyControl("quantityInput_@pid", "focusout");' id="quantityInput_@pid" value="1" min="1" max="9999" /> 1932 </div> 1933 <div id="navigator"> 1934 </div> 1935 </div> 1936 </div> 1937 1938 <br><br><br> 1939 } 1940 1941 <div class="col-md-12 col-sm-12 col-xs-12"> 1942 @if(ProdRepackitems) 1943 { 1944 @*<div class="col-md-12 col-sm-12 col-xs-12"> 1945 <input id="requireRepack" name="" type="checkbox" value=""> @Translate("Require repacking","Require repacking") 1946 </div>*@ 1947 1948 <br><br><hr><br> 1949 1950 @*<div id="repackChoose" style="display:none;margin-top:-15px"> 1951 <p>Choose Repack Quantity</p> 1952 <input type="number" id="repackQuantity" value="1" max="1" min="1" style="width:85px" ><span style="padding-left:20px" id="repackProductPrice">@if(repackProductId=="PROD1"){<text>$2.00</text>}else{<text>$4.00</text>}</span> 1953 <input type="number" id="repackQuantity" value="1" max="1" min="1" style="width:85px" ><span style="padding-left:20px" id="repackProductPrice">@if(productWeight<1000){<text>$2.00</text>}else{<text>$4.00</text>}</span> 1954 <br><br> 1955 <p class="hide" id="repackError" style="color:red;"> repack qty cannot exceed product qty</p> 1956 </div>*@ 1957 1958 } 1959 1960 @if(!GetBoolean("Ecom:Product:Field.ProductClassic.Value")){ 1961 if(productStockStatus!="SPECIAL ORDER"){ 1962 if(@userAgent.Contains("android")) 1963 { 1964 <div class="btn-addto-cart fixsize" style="padding: 0; margin: auto;"> 1965 @*<a id="addtocartLink" onclick='AjaxAddToCart("?cartcmd=add&productid=@pid&quantity=", "@pid"); showaddedItem(" ", "@pid", $("#quantityInput_" + "@pid").val(), true);' href='javascript:void(0)' ><i class="fa fa-shopping-cart"></i> Add to cart</a>*@ 1966 <a id="addtocartLink" onclick='CheckVariantSelected();' href='javascript:void(0)' ><i class="fa fa-shopping-cart"></i> @Translate("Add to cart")</a> 1967 </div> 1968 }else{ 1969 1970 <div class="btn-addto-cart fixsize" style="padding: 0; margin: auto;"> 1971 @*<a id="addtocartLink" onclick='AjaxAddToCart("?cartcmd=add&productid=@pid&quantity=", "@pid"); showaddedItem(" ", "@pid", $("#quantityInput_" + "@pid").val(), true);' href='javascript:void(0)' ><i class="fa fa-shopping-cart"></i> Add to cart</a>*@ 1972 <a id="addtocartLink" class="txtcenter" onclick='CheckVariantSelected();' href='javascript:void(0)' ><i class="fa fa-shopping-cart"></i> @Translate("Add to cart")</a> 1973 </div> 1974 } 1975 }else{ 1976 <div class="btn-addto-cart fixsize" style="padding: 0; margin: auto;"> 1977 1978 <a id="addtocartLink" class="txtcenter" style="cursor:not-allowed;" href='javascript:void(0)' ><i class="fa fa-shopping-cart"></i> @Translate("Not Available Online")</a> 1979 </div> 1980 } 1981 } 1982 <!---------------------------------------------------------------------------------------Wishlists--------------------------------------------------------------------------------------------> 1983 <div id="wishlistSelect" class="modal fade" role="dialog"> 1984 <div class="modal-dialog"> 1985 1986 <div class="modal-content"> 1987 <div class="modal-body"> 1988 <div class="modal-header"> 1989 1990 <h2 class="modal-title">Choose wish list</h2> 1991 </div> 1992 <div class="row"> 1993 <div class="col-md-6 col-md-offset-3"> 1994 <select id="addtolists" style="width: 100%"> 1995 <option value='default'>Default Wishlist</option> 1996 @foreach (LoopItem test1 in GetLoop("CustomerCenter.Lists.Type.Wishlist")){ 1997 @test1.GetString("Ecom:CustomerCenter.List.Select.ID") 1998 1999 foreach(LoopItem test2 in test1.GetLoop("CustomerCenter.ListTypes.Lists")){ 2000 <option value='@test2.GetString("Ecom:CustomerCenter.ListTypes.List.ID")' >@test2.GetString("Ecom:CustomerCenter.ListTypes.List.Name") </option> 2001 } 2002 } 2003 </select> 2004 </div> 2005 </div> 2006 2007 <div class="modal-footer"> 2008 2009 <button id="dismissModel" type="button" class="btn btn1 pull-right" data-dismiss="modal" style="width: 100px;">Close</button> 2010 <button id="addToListButton" type="button" class="btn btn1 pull-right" style="width: 100px; margin-right: 10px;">Add to list</button> 2011 </div> 2012 </div> 2013 </div> 2014 </div> 2015 </div> 2016 @if (Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))) { 2017 if(@userAgent.Contains("android")) 2018 { 2019 // blocked with display:none, because of App 9.3.15 Add to wish list issue 2020 <div class="btn-addto-cart fixsize" style="padding: 0; margin: auto; margin-top: 20px; display:none;"> 2021 <a href='#' data-toggle="modal" data-target="#wishlistSelect"> 2022 <i class="fa fa-list-ul"></i>Add to wish list 2023 </a> 2024 <a id="wishlistLink" style="display:none" href='/Default.aspx?ID=137&productid=@GetString("Ecom:Product.ID")&CCAddToMyLists=@GetString("Ecom:Product.ID")&CCAddToListVariantID=@GetString("Ecom:Product.VariantID")&CCAddToListLanguageID=LANG2'>Link</a> 2025 </div> 2026 }else{ 2027 // blocked with display:none, because of App 9.3.15 Add to wish list issue 2028 <div class="btn-addto-cart fixsize" style="padding: 0; margin: auto; margin-top: 20px; display:none;"> 2029 <a href='#' class="txtcenter" data-toggle="modal" data-target="#wishlistSelect"> 2030 <i class="fa fa-list-ul"></i>Add to wish list 2031 </a> 2032 <a id="wishlistLink" style="display:none" href='/Default.aspx?ID=137&productid=@GetString("Ecom:Product.ID")&CCAddToMyLists=@GetString("Ecom:Product.ID")&CCAddToListVariantID=@GetString("Ecom:Product.VariantID")&CCAddToListLanguageID=LANG2'>Link</a> 2033 </div> 2034 } 2035 } 2036 </div> 2037 <script> 2038 var defaultLink = '/Default.aspx?ID=137&productid=@GetString("Ecom:Product.ID")&CCAddToMyLists=@GetString("Ecom:Product.ID")&CCAddToListVariantID=@GetString("Ecom:Product.VariantID")&CCAddToListLanguageID=LANG2'; 2039 var newLink = defaultLink; 2040 2041 $( "#addToListButton" ).click(function() { 2042 var href = document.getElementById("wishlistLink").href; 2043 AddToFavorites(href); 2044 }); 2045 2046 $( "#addtolists" ).change(function() { 2047 if(this.value!="default"){ 2048 newLink += "&CCAddToListID="+this.value+"&CCListType=Wishlist"; 2049 $( "#wishlistLink" ).attr("href", newLink ); 2050 } 2051 else{ 2052 $( "#wishlistLink" ).attr("href", defaultLink ); 2053 } 2054 }); 2055 2056 function AddToFavorites(favUrl){ 2057 $("#dvLoading").show(); 2058 $.ajax( 2059 { 2060 url: favUrl, 2061 type: 'POST', 2062 success: function (data) 2063 { 2064 document.getElementById("dismissModel").click(); 2065 $("#dvLoading").hide(); 2066 }, 2067 error: function (jqXHR, textStatus, errorThrown) 2068 { 2069 $("#dvLoading").hide(); 2070 } 2071 }); 2072 } 2073 </script> 2074 <!------------------------------------------------------------------------------------End Wishlists----------------------------------------------------------------------------------------------> 2075 2076 2077 2078 </div> 2079 2080 </div> 2081 2082 2083 <div class="col-1-1"> 2084 <div> 2085 <ul id="tabDivMain" class="nav nav-tabs"> 2086 <li><a data-toggle='tab' class="details-tab" href="#details" style="width:160px;">@Translate("Details")</a></li> 2087 <li style="display:none;"><a data-toggle='tab' class="details-tab" id="reviewButton" href="#review">@Translate("Reviews")</a></li> 2088 <!-- <li><a data-toggle='tab' class="details-tab" href="#about" style="width: 157px;">About The Brand</a></li>--> 2089 @if(ProductVideoUrl != "") 2090 { 2091 <li><a data-toggle='tab' class="details-tab" href="#videoUrl" style="width: 157px;">@Translate("Watch Video")</a></li> 2092 } 2093 </ul> 2094 2095 <div id="tabContainer" class="resp-tabs-container"> 2096 <div id="details" class="tab-pane fade active in" id="details"> 2097 <p style="margin-top:25px;">@productDetails</p> 2098 </div> 2099 <div id="about" class="tab-pane fade" id="aboutBrand"> 2100 <p>@ProdPubBrand</p> 2101 </div> 2102 @if(ProductVideoUrl != "") 2103 { 2104 <div id="videoUrl" class="tab-pane fade" style="text-align: center; padding: 20px;"> 2105 @ProductVideoUrl 2106 </div> 2107 } 2108 </div> 2109 <div id="cmtContainer" class="resp-tabs-container"> 2110 <div id="review" class="tab-pane fade" id="reviews"> 2111 <a name="Comments"></a> 2112 @if(Dynamicweb.Core.Converter.ToBoolean(GetValue("Ecom:Product.Rating"))){<text> 2113 <h3>Reviews</h3> 2114 @foreach (LoopItem i in GetLoop("Comments")){ 2115 2116 if(Dynamicweb.Core.Converter.ToBoolean(i.GetValue("Website"))){<text> 2117 <a href="@i.GetValue("Website")">@i.GetValue("Name")</a> 2118 </text>} 2119 if(!Dynamicweb.Core.Converter.ToBoolean(i.GetValue("Website"))){<text> 2120 @i.GetValue("Name") 2121 </text>} 2122 2123 <span style="color:#c5c5c5;">@i.GetValue("CreatedDate.LongDate") @i.GetValue("EditedDate.ShortTime")</span><br /> 2124 var rating = i.GetInteger("Rating"); 2125 for(var j=0;j<rating;j++){ 2126 <label class="starSelected"></label> 2127 } 2128 if(rating < 5){ 2129 for(var k = 0;k<5-rating;k++){ 2130 <label class="starUnselected"></label> 2131 } 2132 } 2133 <br /> 2134 @i.GetValue("Text") 2135 <hr /> 2136 } 2137 </text>} 2138 2139 <script type="text/javascript"> 2140 2141 function validateEmail(email) { 2142 var re = (/^[^-\0-9][+a-zA-Z0-9._-]+@@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i); 2143 return re.test(email); 2144 } 2145 2146 function comment_validate() { 2147 var radioChecked = false; 2148 var radioRatings = document.getElementsByName("Comment.Rating"); 2149 var validated = false; 2150 2151 2152 var loopCounter = 1; 2153 for(var i = 0; i < radioRatings.length;i++){ 2154 if(radioRatings[i].checked==true){ 2155 radioChecked = true; 2156 2157 } 2158 } 2159 2160 if (radioChecked == false) { 2161 console.log('please rate'); 2162 alert("Please rate the product."); 2163 return false; 2164 2165 } 2166 2167 if (document.getElementById("Comment.Name").value.length < 1) { 2168 alert("Specify your name."); 2169 document.getElementById("Comment.Name").focus(); 2170 return false; 2171 } 2172 2173 if (document.getElementById("Comment.Text").value.length < 1) { 2174 alert("Specify your comment"); 2175 document.getElementById("Comment.Text").focus(); 2176 return false; 2177 } 2178 if (document.getElementById("Comment.Email").value.length < 1) { 2179 alert("Please Enter Email"); 2180 document.getElementById("Comment.Text").focus(); 2181 return false; 2182 } 2183 2184 if(!validateEmail(document.getElementById('Comment.Email').value)) 2185 { 2186 alert("Email is invalid"); 2187 return false; 2188 } 2189 2190 2191 //document.getElementById("commentform").action = '/Default.aspx?ID=7'; 2192 document.getElementById("commentform").action = '@System.Web.HttpContext.Current.Request.Url.PathAndQuery'; 2193 2194 document.getElementById("Comment.Command").value = "create"; 2195 return true; 2196 2197 } 2198 2199 </script> 2200 <style type="text/css"> 2201 2202 @@media only screen and (max-width: 600px){ 2203 #commentform .labelComment{ 2204 width: 100% !important; 2205 } 2206 #commentform input[type=text], #commentform select, #commentform option{ 2207 width: 100% !important; 2208 } 2209 #commentform textarea{ 2210 width: 100% !important; 2211 } 2212 } 2213 2214 #commentform { margin: 15px 0 0 0; } 2215 #commentform .labelComment { position:relative; vertical-align: top; display:inline; width: 23%; padding: 11px 10px 8px; display:inline-block; margin:0 30px 0 0; font-size: 18px; font-weight: bold; color: #000; } 2216 #commentform .labelComment .bg { position: absolute; top: 0; right: -15px; height: 38px; width: 15px; display: block; } 2217 #commentform input[type=text], #commentform textarea { font:14px/14px Arial, Helvetica, sans-serif; background: #fff; border: none; border: 1px solid #d8d8d8;} 2218 #commentform input[type=text], #commentform select, #commentform option { color:#666; width: 300px; margin: 0 5px 20px 0px; padding: 10px 7px; } 2219 #commentform textarea { color:#666; width: 300px; margin: 0 5px 20px 0px; padding: 5px 7px; } 2220 #commentform input[type=submit] { margin: 15px 0 0 180px; cursor: pointer; } 2221 2222 </style> 2223 <p>&nbsp;</p> 2224 <div class="dottedBoxGrey form"> 2225 <form method="post" action="/Default.aspx?ID=7" id="commentform" onsubmit="return comment_validate()"> 2226 <div class="formContact"> 2227 <input type="hidden" name="Comment.Command" id="Comment.Command" value="" /> 2228 2229 <input type="hidden" name="Comment.ItemType" value="ecomProduct" /> 2230 2231 <input type="hidden" name="Comment.ItemID" value="@GetValue("Ecom:Product.ID")" /> 2232 <input type="hidden" name="Comment.LangID" value="@GetValue("Ecom:Product.LanguageID")" /> 2233 <div class="product-detailComment"> 2234 2235 </div> 2236 <label class="labelComment pull-left" for="Comment.Rating">Your rating</label> 2237 <div class="prod-star pull-left"> 2238 <p style="" class="ratingSubmit"> 2239 <input type="radio" id="star5a" name="Comment.Rating" value="5" /><label class = "full" for="star5a" title="Awesome - 5 stars"></label> 2240 2241 <input type="radio" id="star4a" name="Comment.Rating" value="4" /><label class = "full" for="star4a" title="Pretty good - 4 stars"></label> 2242 2243 <input type="radio" id="star3a" name="Comment.Rating" value="3" /><label class = "full" for="star3a" title="Meh - 3 stars"></label> 2244 2245 <input type="radio" id="star2a" name="Comment.Rating" value="2" /><label class = "full" for="star2a" title="Kinda bad - 2 stars"></label> 2246 2247 <input type="radio" id="star1a" name="Comment.Rating" value="1" /><label class = "full" for="star1a" title="Sucks big time - 1 star"></label> 2248 </p> 2249 </div> 2250 <div class="clearfix"></div> 2251 <label class="labelComment" for="Comment.Name">Name</label> 2252 <input type="text" name="Comment.Name" id="Comment.Name" value="" /><br /> 2253 <label class="labelComment" for="Comment.Email">E-mail</label> 2254 <input type="text" name="Comment.Email" id="Comment.Email" value="" /><br /> 2255 <label class="labelComment" for="Comment.Text">Comment</label> 2256 <textarea name="Comment.Text" id="Comment.Text" rows="10" cols="50"></textarea><br /> 2257 2258 <input type="submit" value="Send" /> 2259 </div> 2260 </form> 2261 </div> 2262 <p>&nbsp;</p> 2263 </div> 2264 </div> 2265 <ul id="ImmediateAvailabilityAtMobile" class="sidenavi"> 2266 @if(storeNameList.Count != 0) 2267 { 2268 <li class="current curSub"><a style="background: #e6e6e6;">@Translate("Immediate Availability At","Immediate Availability At")</a> 2269 <ul id="leftnavigation" class="sidenavi shoplist" style="padding-bottom: 30px;"> 2270 @foreach(var string1 in storeNameList) 2271 { 2272 <li class="text-left"> 2273 <a href="#@string1.Replace(" ","_").Replace(".","")" data-toggle="collapse" data-value="#@string1.Replace(" ","_").Replace(".","")" onclick="collapseMobile('@string1.Replace(" ","_").Replace(".","")')">@string1</a> 2274 <div id="mb_@string1.Replace(" ","_").Replace(".","")" class="collapse" style="padding-left: 35px;"> 2275 <p><i class="fa fa-map-marker"></i> @storeAddress1List[string1] @Translate(",",",") @storeAddress2List[string1] </p> 2276 <p><i class="fa fa-phone"></i> @storePhoneNumberList[string1]</p> 2277 </div> 2278 </li> 2279 } 2280 </ul> 2281 </li> 2282 } 2283 else 2284 { 2285 <ul id="ImmediateAvailabilityAtMobile_Onlinebtn" class="sidenavi"> 2286 <li class="current curSub"><a style="background: #e6e6e6; width: 100% !important;">@Translate("Currently Unavailable in Stores","Currently Unavailable in Stores")</a></li> 2287 </ul> 2288 } 2289 </ul> 2290 </div> 2291 </div> 2292 </div> 2293 </div> 2294 <div> 2295 </div> 2296 2297 <hr style="width:100%"> 2298 2299 <div align="center" class="grid"> 2300 @if (GetString("Ecom:Product.RelatedCount") != "0") 2301 { 2302 2303 foreach(LoopItem related in GetLoop("ProductRelatedGroups")) 2304 { 2305 if(related.GetString("Ecom:Product:RelatedGroup.Name")=="Similar Products") 2306 { 2307 if(related.GetLoop("RelatedProducts").Count != 0) 2308 { 2309 <div class="row-bestseller"> 2310 <div class="row-bestseller" style="margin:30px 0 70px 0;"> 2311 <h1>@Translate("Similar Products", "Similar Products")</h1> 2312 2313 <ul class="bxslider-bestseller"> 2314 @foreach(LoopItem products in related.GetLoop("RelatedProducts")) 2315 { 2316 2317 var relatedRating = products.GetDouble("Ecom:Product.Rating"); 2318 var sellingPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSPrice"); 2319 var internetPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSInternetPrice"); 2320 Boolean inventoryDiscountRelated = products.GetBoolean("Ecom:Product:Field.ProductInventoryDiscountFlag"); 2321 var discountPercentageRelated = products.GetDouble("Ecom:Product:Field.ProductInventoryDiscount"); 2322 var birthdayPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSBirthdayPrice"); 2323 var memberPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSMemberPrice"); 2324 var disableRelated=products.GetBoolean("Ecom:Product:Field.Disable"); 2325 // var promotionRelated=products.GetDouble("Ecom:Product.Discount.TotalPercentWithoutVATFormatted"); 2326 var pidrelated = products.GetString("Ecom:Product.ID"); 2327 string GroupLinkRelated = products.GetString("Ecom:Product.LinkGroup.Clean"); 2328 var promotionRelated=0.00; 2329 var discountTypeRelated=""; 2330 foreach (LoopItem item1 in products.GetLoop("ProductDiscounts")) { 2331 2332 if(item1.GetString("Ecom:Product.Discount.Type")=="PERCENT") 2333 { 2334 discountTypeRelated="PERCENT"; 2335 promotionRelated=item1.GetDouble("Ecom:Product.Discount.PercentWithoutVATFormatted"); 2336 } 2337 else{ 2338 discountTypeRelated="AMOUNT"; 2339 promotionRelated=item1.GetDouble("Ecom:Product.Discount.AmountWithoutVATFormatted"); 2340 } 2341 } 2342 <li id="get_@pidrelated"> 2343 @* @if(promotionRelated != 0){ <div class="ribbon-P"><span>Pro @promotionRelated% Off</span></div>} 2344 else 2345 { 2346 //add ERP discount ribbon 2347 if(inventoryDiscountRelated){ 2348 if(discountPercentageRelated != 0){ 2349 <div class="ribbon-D"><span>Dis @discountPercentageRelated% Off</span></div>} 2350 } 2351 } 2352 *@ 2353 @if(promotionRelated != 0){ 2354 if(discountTypeRelated=="PERCENT") 2355 { 2356 <div class="ribbon-P"><span>Pro @promotionRelated% Off</span></div> 2357 } 2358 else{ 2359 <div class="ribbon-P"><span>Pro $@promotionRelated Off</span></div> 2360 } 2361 2362 } 2363 else 2364 { 2365 //add ERP discount ribbon 2366 if(inventoryDiscount){ 2367 if(discountPercentage != 0) 2368 { 2369 <div class="ribbon-D"><span>Dis @discountPercentage% Off</span></div>} 2370 } 2371 } 2372 <a href="@GroupLinkRelated"><img src="@path@Image" alt="@Image"/></a> 2373 @if(inventoryDiscountRelated){ 2374 if(sellingPriceRelated != internetPriceRelated){ 2375 <text><p class="prod-promo2">Save @string.Format("{0:0.00}", sellingPriceRelated-internetPriceRelated)</p></text> 2376 } 2377 } 2378 else{ 2379 <text><p class="prod-promo">&nbsp;</p></text> 2380 } 2381 2382 <p class="prod-name">@products.GetString("Ecom:Product:Field.PublicBrand")</p> 2383 <p class="prod-name">@products.GetString("Ecom:Product.Name")</p> 2384 <div class="prod-star"> 2385 @if(@relatedRating == 0){ 2386 <label class = "starUnselected"></label> 2387 <label class = "starUnselected"></label> 2388 <label class = "starUnselected"></label> 2389 <label class = "starUnselected"></label> 2390 <label class = "starUnselected"></label> 2391 } 2392 @for(var i =1;i<@relatedRating;i++){ 2393 <label class = "starSelected"></label> 2394 } 2395 @if(relatedRating % 1 != 0){ 2396 <label class = "starSelected half"></label> 2397 } 2398 </div> 2399 <div class="prod-priceBox"> 2400 @if(inventoryDiscountRelated){ 2401 if(sellingPriceRelated != internetPriceRelated){ 2402 <div class="prod-price"> 2403 <p class="op">$@string.Format("{0:0.00}", sellingPriceRelated)</p> 2404 <p class="np">$@string.Format("{0:0.00}", internetPriceRelated)</p> 2405 2406 </div> 2407 <div class="member-price"></div> 2408 } 2409 else if(sellingPriceRelated == internetPriceRelated){ 2410 <div class="prod-price"> 2411 <p class="np">$@string.Format("{0:0.00}", sellingPriceRelated)</p> 2412 </div> 2413 2414 } 2415 } 2416 @*inventoryDiscount false*@ 2417 else{ 2418 if (!Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))){ 2419 <div class="prod-price"> 2420 <p class="np">$@string.Format("{0:0.00}", sellingPriceRelated)</p> 2421 </div> 2422 <div class="member-price"> 2423 <div class="title">Member&nbsp; 2424 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop"></span> 2425 <p class="price">$@string.Format("{0:0.00}", memberPriceRelated)</p> 2426 </div> 2427 2428 <div class="title">Birthday&nbsp; 2429 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop"></span> 2430 <p class="price">$@string.Format("{0:0.00}", birthdayPriceRelated)</p> 2431 </div> 2432 </div> 2433 } 2434 else if(Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))){ 2435 <div class="prod-price"> 2436 <p class="np">$@string.Format("{0:0.00}", internetPriceRelated)</p> 2437 </div> 2438 if(!birthday){ 2439 <div class="member-price"> 2440 <div class="title">Member&nbsp; 2441 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop"></span> 2442 <p class="price">$@string.Format("{0:0.00}", memberPriceRelated)</p> 2443 </div> 2444 </div> 2445 } 2446 else{ 2447 <div class="member-price"> 2448 <div class="title">Birthday&nbsp; 2449 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop"></span> 2450 <p class="price">$@string.Format("{0:0.00}", birthdayPriceRelated)</p> 2451 </div> 2452 </div> 2453 } 2454 @*<div class="prod-price"> 2455 <p class="op">$@string.Format("{0:0.00}", internetPriceRelated)</p> 2456 </div> 2457 *@ 2458 2459 2460 } 2461 } 2462 </div> 2463 <!--<div class="btn-addto-cart"> 2464 <a href="Default.aspx?ID=7&productid=@pidrelated&cartcmd=add&quantity=1"><i class="fa fa-shopping-cart"></i> Add to cart</a> 2465 </div>--> 2466 2467 2468 @if(products.GetBoolean("Ecom:Product:Field.ProductClassic.Value")) 2469 { 2470 <ul class="info"> 2471 <li>*In Store Only</li> 2472 </ul> 2473 } 2474 2475 @if(!products.GetBoolean("Ecom:Product:Field.ProductClassic.Value")){ 2476 <div class="btn-addto-cart" style="margin-bottom:5px;"> 2477 <a class="fancybox" href="javascript:showaddedItem('?productid=@pidrelated&cartcmd=add&quantity=1',@pidrelated,true)"><i class="fa fa-shopping-cart"></i> @Translate("Add to cart")</a> 2478 </div> 2479 } 2480 <!--<div class="btn-addto-cart"> 2481 <a href="@GroupLinkRelated"><i class="fa fa-search-plus"></i> View products details </a> 2482 </div>--> 2483 </li> 2484 } 2485 2486 </ul> 2487 2488 </div> 2489 </div> 2490 } 2491 2492 } 2493 } 2494 2495 } 2496 @if (GetString("Ecom:Product.RelatedCount") != "0") 2497 { 2498 2499 2500 foreach(LoopItem related in GetLoop("ProductRelatedGroups")){ 2501 2502 if(related.GetString("Ecom:Product:RelatedGroup.Name")=="Similar Brand"){ 2503 2504 if(related.GetLoop("RelatedProducts").Count != 0) 2505 { 2506 <div class="row-bestseller"> 2507 <div class="row-bestseller" style="margin:30px 0 70px 0;"> 2508 <h2>@Translate("Similar Brands", "Similar Brands")</h2> 2509 2510 <ul class="bxslider-bestseller"> 2511 @foreach(LoopItem products in related.GetLoop("RelatedProducts")) { 2512 2513 var relatedRating = products.GetDouble("Ecom:Product.Rating"); 2514 var sellingPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSPrice"); 2515 var internetPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSInternetPrice"); 2516 Boolean inventoryDiscountRelated = products.GetBoolean("Ecom:Product:Field.ProductInventoryDiscountFlag"); 2517 var discountPercentageRelated = products.GetDouble("Ecom:Product:Field.ProductInventoryDiscount"); 2518 var birthdayPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSBirthdayPrice"); 2519 var memberPriceRelated = products.GetDouble("Ecom:Product:Field.ProductSMemberPrice"); 2520 var disableRelated=products.GetBoolean("Ecom:Product:Field.Disable"); 2521 // var promotionRelated=products.GetDouble("Ecom:Product.Discount.TotalPercentWithoutVATFormatted"); 2522 var pidrelated = products.GetString("Ecom:Product.ID"); 2523 string GroupLinkRelated = products.GetString("Ecom:Product.LinkGroup.Clean"); 2524 var promotionRelated=0.00; 2525 var discountTypeRelated=""; 2526 foreach (LoopItem item1 in products.GetLoop("ProductDiscounts")) { 2527 2528 if(item1.GetString("Ecom:Product.Discount.Type")=="PERCENT") 2529 { 2530 discountTypeRelated="PERCENT"; 2531 promotionRelated=item1.GetDouble("Ecom:Product.Discount.PercentWithoutVATFormatted"); 2532 } 2533 else{ 2534 discountTypeRelated="AMOUNT"; 2535 promotionRelated=item1.GetDouble("Ecom:Product.Discount.AmountWithoutVATFormatted"); 2536 } 2537 } 2538 <li id="get_@pidrelated"> 2539 @* @if(promotionRelated != 0){ <div class="ribbon-P"><span>Pro @promotionRelated% Off</span></div>} 2540 else 2541 { 2542 //add ERP discount ribbon 2543 if(inventoryDiscountRelated){ 2544 if(discountPercentageRelated != 0){ 2545 <div class="ribbon-D"><span>Dis @discountPercentageRelated% Off</span></div>} 2546 } 2547 } 2548 *@ 2549 @if(promotionRelated != 0){ 2550 if(discountTypeRelated=="PERCENT") 2551 { 2552 <div class="ribbon-P"><span>Pro @promotionRelated% Off</span></div> 2553 } 2554 else{ 2555 <div class="ribbon-P"><span>Pro $@promotionRelated Off</span></div> 2556 } 2557 2558 } 2559 else 2560 { 2561 //add ERP discount ribbon 2562 if(inventoryDiscount){ 2563 if(discountPercentage != 0) 2564 { 2565 <div class="ribbon-D"><span>Dis @discountPercentage% Off</span></div>} 2566 } 2567 } 2568 <a href="@GroupLinkRelated"><img src="@path@Image" alt="@Image"/></a> 2569 @if(inventoryDiscountRelated){ 2570 if(sellingPriceRelated != internetPriceRelated){ 2571 <text><p class="prod-promo2">Save @string.Format("{0:0.00}", sellingPriceRelated-internetPriceRelated)</p></text> 2572 } 2573 } 2574 else{ 2575 <text><p class="prod-promo">&nbsp;</p></text> 2576 } 2577 <p class="prod-name">@products.GetString("Ecom:Product:Field.PublicBrand")</p> 2578 <p class="prod-name">@products.GetString("Ecom:Product.Name")</p> 2579 <div class="prod-star"> 2580 @if(@relatedRating == 0){ 2581 <label class = "starUnselected"></label> 2582 <label class = "starUnselected"></label> 2583 <label class = "starUnselected"></label> 2584 <label class = "starUnselected"></label> 2585 <label class = "starUnselected"></label> 2586 } 2587 @for(var i =1;i<@relatedRating;i++){ 2588 <label class = "starSelected"></label> 2589 } 2590 @if(relatedRating % 1 != 0){ 2591 <label class = "starSelected half"></label> 2592 } 2593 </div> 2594 <div class="prod-priceBox"> 2595 @if(inventoryDiscountRelated){ 2596 if(sellingPriceRelated != internetPriceRelated){ 2597 <div class="prod-price"> 2598 <p class="op">$@string.Format("{0:0.00}", sellingPriceRelated)</p> 2599 <p class="np">$@string.Format("{0:0.00}", internetPriceRelated)</p> 2600 2601 </div> 2602 <div class="member-price"></div> 2603 } 2604 else if(sellingPriceRelated == internetPriceRelated){ 2605 <div class="prod-price"> 2606 <p class="np">$@string.Format("{0:0.00}", sellingPriceRelated)</p> 2607 </div> 2608 2609 } 2610 } 2611 @*inventoryDiscount false*@ 2612 else{ 2613 if (!Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))){ 2614 <div class="prod-price"> 2615 <p class="np">$@string.Format("{0:0.00}", sellingPriceRelated)</p> 2616 </div> 2617 <div class="member-price"> 2618 <div class="title">Member&nbsp; 2619 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon"></span> 2620 <p class="price">$@string.Format("{0:0.00}", memberPriceRelated)</p> 2621 </div> 2622 2623 <div class="title">Birthday&nbsp; 2624 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon"></span> 2625 <p class="price">$@string.Format("{0:0.00}", birthdayPriceRelated)</p> 2626 </div> 2627 </div> 2628 } 2629 else if(Dynamicweb.Core.Converter.ToBoolean(GetGlobalValue("Global:Extranet.UserName"))){ 2630 <div class="prod-price"> 2631 <p class="np">$@string.Format("{0:0.00}", internetPriceRelated)</p> 2632 </div> 2633 if(!birthday){ 2634 <div class="member-price"> 2635 <div class="title">Member&nbsp; 2636 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon"></span> 2637 <p class="price">$@string.Format("{0:0.00}", memberPriceRelated)</p> 2638 </div> 2639 </div> 2640 } 2641 else{ 2642 <div class="member-price"> 2643 <div class="title">Birthday&nbsp; 2644 <span class="top tipso_style" data-tipso="Become a member for only $6 and get it for $@string.Format("{0:0.00}", memberPrice). Get it for $@string.Format("{0:0.00}", birthdayPrice) on your birthday month."><img src="@pathproduct/images/icon_info.png" width="20" align="texttop" alt="icon"></span> 2645 <p class="price">$@string.Format("{0:0.00}", birthdayPriceRelated)</p> 2646 </div> 2647 </div> 2648 } 2649 @*<div class="prod-price"> 2650 <p class="op">$@string.Format("{0:0.00}", internetPriceRelated)</p> 2651 </div> 2652 *@ 2653 2654 2655 } 2656 } 2657 </div> 2658 <!--<div class="btn-addto-cart"> 2659 <a href="Default.aspx?ID=7&productid=@pidrelated&cartcmd=add&quantity=1"><i class="fa fa-shopping-cart"></i> Add to cart</a> 2660 </div>--> 2661 2662 2663 @if(products.GetBoolean("Ecom:Product:Field.ProductClassic.Value")) 2664 { 2665 <ul class="info"> 2666 <li>*In Store Only</li> 2667 </ul> 2668 } 2669 2670 @if(!products.GetBoolean("Ecom:Product:Field.ProductClassic.Value")){ 2671 <div class="btn-addto-cart" style="margin-bottom:5px;"> 2672 <a class="fancybox" href="javascript:showaddedItem('?productid=@pidrelated&cartcmd=add&quantity=1',@pidrelated,true)"><i class="fa fa-shopping-cart"></i> @Translate("Add to cart")</a> 2673 </div> 2674 } 2675 <!--<div class="btn-addto-cart"> 2676 <a href="@GroupLinkRelated"><i class="fa fa-search-plus"></i> View products details </a> 2677 </div>--> 2678 </li> 2679 2680 } 2681 2682 </ul> 2683 2684 </div> 2685 </div> 2686 } 2687 2688 } 2689 } 2690 2691 2692 } 2693 </div> 2694 @using DWAPAC.PLC.Services.PLCPSWS; 2695 @using DWAPAC.PLC.Services; 2696 @using DWAPAC.PLC; 2697 @{ 2698 DWAPAC.PLC.Services.PLCPSWS.PS_Service service_1 = new DWAPAC.PLC.Services.PLCPSWS.PS_Service(); 2699 var productLocation_1 = service_1.GetProductLocation("dynamicweb", "{_0rfJ39sw", pid); 2700 } 2701 <script> 2702 //Start of variant selection 2703 var firstChange = ""; 2704 var secondVariant = "@variantSelector"; 2705 2706 $( "#flavourInput" ).change(function() { 2707 if(firstChange ==""){ 2708 firstChange="FLAVOUR"; 2709 } 2710 2711 if(firstChange == "SIZE") { 2712 var size = $( "#sizeInput" ).val(); 2713 var data = $(this).serialize(); 2714 2715 data+="&skuCode=@(skuCode)"; 2716 data+="&size=" + size + "&firstSelect=" + firstChange + "&secondVariant=" + secondVariant; 2717 //alert(data); 2718 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2719 $.ajax({ 2720 type : 'POST', 2721 url : '@plcUrl' + '/Default.aspx?ID=191', 2722 data : data, 2723 success : function(data) 2724 { 2725 var firstSplit = data.split('<script type="text/javascript">'); 2726 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2727 } 2728 }); 2729 return false; 2730 } 2731 else 2732 { 2733 var data = $(this).serialize(); 2734 data+="&pid=@(pid)&firstSelect="+firstChange; 2735 var options = document.getElementById('sizeInput'); 2736 while (options.hasChildNodes()) { 2737 options.removeChild(options.lastChild); 2738 } 2739 $("#sizeInput").append("<option>Please select size</option>"); 2740 $.ajax({ 2741 type : 'POST', 2742 url : '@plcUrl' + '/Default.aspx?ID=191', 2743 data : data, 2744 success : function(data) 2745 { 2746 var firstSplit = data.split('<script type="text/javascript">'); 2747 $("#sizeInput").append(firstSplit[0]); 2748 } 2749 }); 2750 return false; 2751 } 2752 }); 2753 2754 $( "#sizeInput" ).change(function() { 2755 if(firstChange ==""){ 2756 firstChange="SIZE"; 2757 } 2758 if(firstChange=="SIZE" && secondVariant != "size") { 2759 var data = $(this).serialize(); 2760 data+="&pid=@(pid)&firstSelect="+firstChange+"&secondVariant="+secondVariant; 2761 var options = document.getElementById(secondVariant+'Input'); 2762 while (options.hasChildNodes()) { 2763 options.removeChild(options.lastChild); 2764 } 2765 $("#"+secondVariant+"Input").append("<option>Please select "+secondVariant+"</option>"); 2766 $.ajax({ 2767 type : 'POST', 2768 url : '@plcUrl' + '/Default.aspx?ID=191', 2769 data : data, 2770 success : function(data) 2771 { 2772 var firstSplit = data.split('<script type="text/javascript">'); 2773 $("#"+secondVariant+"Input").append(firstSplit[0]); 2774 } 2775 }); 2776 return false; 2777 } 2778 else if(firstChange == "SIZE" && secondVariant == "size"){ 2779 var variant2 = $( "#"+secondVariant+"Input" ).val(); 2780 var data = $(this).serialize(); 2781 data += "&skuCode=@(skuCode)"; 2782 data += "&secondVariant=" + secondVariant + "&firstSelect=" + firstChange; 2783 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2784 $.ajax({ 2785 type : 'POST', 2786 url : '@plcUrl' + '/Default.aspx?ID=191', 2787 data : data, 2788 success : function(data) 2789 { 2790 var firstSplit = data.split('<script type="text/javascript">'); 2791 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2792 } 2793 }); 2794 return false; 2795 } 2796 else if(firstChange!="SIZE") { 2797 var variant2 = $( "#"+secondVariant+"Input" ).val(); 2798 var data = $(this).serialize(); 2799 data+="&skuCode=@(skuCode)"; 2800 data+="&"+secondVariant+"="+variant2+"&firstSelect="+firstChange; 2801 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2802 $.ajax({ 2803 type : 'POST', 2804 url : '@plcUrl' + '/Default.aspx?ID=191', 2805 data : data, 2806 success : function(data) 2807 { 2808 var firstSplit = data.split('<script type="text/javascript">'); 2809 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2810 } 2811 }); 2812 return false; 2813 } 2814 }); 2815 2816 $( "#onlyflavourInput" ).change(function() { 2817 if(firstChange ==""){ 2818 firstChange="FLAVOUR"; 2819 } 2820 2821 if(firstChange=="FLAVOUR" && secondVariant != "flavour"){ 2822 var data = $(this).serialize(); 2823 data+="&pid=@(pid)&firstSelect=" + firstChange + "&secondVariant=" + secondVariant; 2824 2825 var options = document.getElementById(secondVariant+'Input'); 2826 while (options.hasChildNodes()) { 2827 options.removeChild(options.lastChild); 2828 } 2829 $("#"+secondVariant+"Input").append("<option>Please select "+secondVariant+"</option>"); 2830 $.ajax({ 2831 type : 'POST', 2832 url : '@plcUrl' + '/Default.aspx?ID=191', 2833 data : data, 2834 success : function(data) 2835 { 2836 var firstSplit = data.split('<script type="text/javascript">'); 2837 $("#"+secondVariant+"Input").append(firstSplit[0]); 2838 } 2839 }); 2840 return false; 2841 } 2842 else if(firstChange=="FLAVOUR" && secondVariant == "flavour"){ 2843 var variant2 = $( "#"+secondVariant+"Input" ).val(); 2844 var data = $(this).serialize(); 2845 data += "&skuCode=@(skuCode)"; 2846 data += "&secondVariant=" + secondVariant + "&firstSelect=" + firstChange; 2847 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2848 $.ajax({ 2849 type : 'POST', 2850 url : '@plcUrl' + '/Default.aspx?ID=191', 2851 data : data, 2852 success : function(data) 2853 { 2854 var firstSplit = data.split('<script type="text/javascript">'); 2855 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2856 } 2857 }); 2858 return false; 2859 } 2860 else if(firstChange!="FLAVOUR"){ 2861 var variant2 = $( "#"+secondVariant+"Input" ).val(); 2862 var data = $(this).serialize(); 2863 data += "&skuCode=@(skuCode)"; 2864 data += "&" + secondVariant + "=" + variant2 + "&firstSelect=" + firstChange; 2865 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2866 $.ajax({ 2867 type : 'POST', 2868 url : '@plcUrl' + '/Default.aspx?ID=191', 2869 data : data, 2870 success : function(data) 2871 { 2872 var firstSplit = data.split('<script type="text/javascript">'); 2873 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2874 } 2875 }); 2876 return false; 2877 } 2878 else 2879 { 2880 var data = $(this).serialize(); 2881 data += "&pid=@(pid)&firstSelect=" + firstChange + "&secondVariant=" + secondVariant; 2882 var options = document.getElementById('sizeInput'); 2883 while (options.hasChildNodes()) { 2884 options.removeChild(options.lastChild); 2885 } 2886 $("#onlyflavourInput").append("<option>Please select flavour</option>"); 2887 $.ajax({ 2888 type : 'POST', 2889 url : '@plcUrl' + '/Default.aspx?ID=191', 2890 data : data, 2891 success : function(data) 2892 { 2893 var firstSplit = data.split('<script type="text/javascript">'); 2894 $("#onlyflavourInput").append(firstSplit[0]); 2895 } 2896 }); 2897 return false; 2898 } 2899 }); 2900 2901 $( "#onlycolorInput" ).change(function() { 2902 if(firstChange ==""){ 2903 firstChange="COLOR"; 2904 } 2905 if(firstChange=="COLOR" && secondVariant != "color"){ 2906 2907 var data = $(this).serialize(); 2908 data+="&pid=@(pid)&firstSelect="+firstChange+"&secondVariant="+secondVariant; 2909 2910 var options = document.getElementById(secondVariant+'Input'); 2911 while (options.hasChildNodes()) { 2912 options.removeChild(options.lastChild); 2913 } 2914 $("#"+secondVariant+"Input").append("<option>Please select "+secondVariant+"</option>"); 2915 $.ajax({ 2916 2917 type : 'POST', 2918 url : '@plcUrl' + '/Default.aspx?ID=191', 2919 data : data, 2920 success : function(data) 2921 { 2922 2923 var firstSplit = data.split('<script type="text/javascript">'); 2924 $("#"+secondVariant+"Input").append(firstSplit[0]); 2925 2926 } 2927 }); 2928 2929 return false; 2930 } 2931 else if(firstChange=="COLOR" && secondVariant == "color"){ 2932 var variant2 = $( "#"+secondVariant+"Input" ).val(); 2933 var data = $(this).serialize(); 2934 data+="&skuCode=@(skuCode)"; 2935 data+="&secondVariant="+secondVariant+"&firstSelect="+firstChange; 2936 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2937 $.ajax({ 2938 2939 type : 'POST', 2940 url : '@plcUrl' + '/Default.aspx?ID=191', 2941 data : data, 2942 success : function(data) 2943 { 2944 2945 var firstSplit = data.split('<script type="text/javascript">'); 2946 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2947 } 2948 }); 2949 2950 return false; 2951 } 2952 else if(firstChange!="COLOR"){ 2953 var variant2 = $( "#"+secondVariant+"Input" ).val(); 2954 var data = $(this).serialize(); 2955 data+="&skuCode=@(skuCode)"; 2956 data+="&"+secondVariant+"="+variant2+"&firstSelect="+firstChange; 2957 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 2958 $.ajax({ 2959 2960 type : 'POST', 2961 url : '@plcUrl' + '/Default.aspx?ID=191', 2962 data : data, 2963 success : function(data) 2964 { 2965 var firstSplit = data.split('<script type="text/javascript">'); 2966 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 2967 } 2968 }); 2969 2970 return false; 2971 } 2972 2973 else 2974 { 2975 var data = $(this).serialize(); 2976 data+="&pid=@(pid)&firstSelect="+firstChange+"&secondVariant="+secondVariant; 2977 var options = document.getElementById('sizeInput'); 2978 while (options.hasChildNodes()) { 2979 options.removeChild(options.lastChild); 2980 } 2981 $("#onlycolorInput").append("<option>Please select color</option>"); 2982 $.ajax({ 2983 2984 type : 'POST', 2985 url : '@plcUrl' + '/Default.aspx?ID=191', 2986 data : data, 2987 success : function(data) 2988 { 2989 var firstSplit = data.split('<script type="text/javascript">'); 2990 $("#onlycolorInput").append(firstSplit[0]); 2991 } 2992 }); 2993 2994 return false; 2995 } 2996 }); 2997 $( "#colorInput" ).change(function() { 2998 if(firstChange ==""){ 2999 firstChange="COLOR"; 3000 } 3001 if(firstChange=="SIZE"){ 3002 var size = $( "#sizeInput" ).val(); 3003 var data = $(this).serialize(); 3004 data+="&skuCode=@(skuCode)"; 3005 data+="&size="+size+"&firstSelect="+firstChange+"&secondVariant="+secondVariant; 3006 $.blockUI({message : $('#addingToCart'), css: { border: 'none', background: 'none'}}); 3007 $.ajax({ 3008 3009 type : 'POST', 3010 url : '@plcUrl' + '/Default.aspx?ID=191', 3011 data : data, 3012 success : function(data) 3013 { 3014 3015 var firstSplit = data.split('<script type="text/javascript">'); 3016 window.location = '@plcUrl' + '/default.aspx?id=@(pageID)&productid='+firstSplit[0]; 3017 } 3018 }); 3019 3020 return false; 3021 } 3022 else 3023 { 3024 var data = $(this).serialize(); 3025 data+="&pid=@(pid)&firstSelect="+firstChange+"&secondVariant="+secondVariant; 3026 var options = document.getElementById('sizeInput'); 3027 while (options.hasChildNodes()) { 3028 options.removeChild(options.lastChild); 3029 } 3030 $("#sizeInput").append("<option>Please select size</option>"); 3031 $.ajax({ 3032 3033 type : 'POST', 3034 url : '@plcUrl' + '/Default.aspx?ID=191', 3035 data : data, 3036 success : function(data) 3037 { 3038 var firstSplit = data.split('<script type="text/javascript">'); 3039 $("#sizeInput").append(firstSplit[0]); 3040 } 3041 }); 3042 3043 return false; 3044 } 3045 }); 3046 3047 //End of variant selector 3048 3049 $( "#quantityInput" ).change(function() { 3050 var repack='@ProdRepackitems'; 3051 if(repack=='True') 3052 { 3053 document.getElementById("repackQuantity").max = this.value; 3054 3055 document.getElementById("productFormQuantity").value = this.value; 3056 if(!$('#requireRepack').prop("checked")) 3057 { 3058 var linkstring = document.getElementById("addtocartLink").href.split('quantity='); 3059 var proid= document.getElementById("addtocartLink").href.split(','); 3060 var result=linkstring[0]+"quantity="+this.value+"',"+proid[1]+","+proid[2]; 3061 document.getElementById("addtocartLink").href = result; 3062 3063 } 3064 } 3065 else{ 3066 3067 var linkstring = document.getElementById("addtocartLink").href.split('quantity='); 3068 var proid= document.getElementById("addtocartLink").href.split(','); 3069 var result=linkstring[0]+"quantity="+this.value+"',"+proid[1]+","+proid[2]; 3070 document.getElementById("addtocartLink").href = result; 3071 3072 } 3073 3074 }); 3075 //Start of repack 3076 $( "#requireRepack" ).click(function() { 3077 if($('#requireRepack').prop("checked")){ 3078 document.getElementById("repackChoose").style.display="block"; 3079 document.getElementById("addtocartLink").href = 'javascript:void(0)'; 3080 document.getElementById("addtocartLink").setAttribute("onclick","submitRepack()"); 3081 }else{ 3082 document.getElementById("repackChoose").style.display="none"; 3083 document.getElementById("addtocartLink").href = '?productid=@pid&cartcmd=add&quantity='+document.getElementById("quantityInput").value; 3084 document.getElementById("addtocartLink").setAttribute("onclick",""); 3085 3086 } 3087 }); 3088 $( "#repackQuantity" ).change(function() { 3089 document.getElementById("repackFormQuantity").value = this.value; 3090 document.getElementById("repackProductPrice").innerHTML = "$"+parseInt(this.value)*parseFloat("@repackPrice")+".00"; 3091 if(parseInt($( "#quantityInput" ).val())< parseInt(this.value)) 3092 { 3093 this.value=1; 3094 $("#repackError").attr("class",""); 3095 } 3096 else{ 3097 $("#repackError").attr("class","hide"); 3098 } 3099 }); 3100 3101 function submitRepack(){ 3102 showaddedItem('?cartcmd=add&productid=@pid&quantity=' +document.getElementById("quantityInput").value, @pid, false); 3103 document.getElementById("multiFormSubmit").click(); 3104 3105 } 3106 3107 3108 $("#repackQuantity").keyup(function (event){ 3109 if(parseInt($( "#quantityInput" ).val())<parseInt(this.value)) 3110 { 3111 this.value=1; 3112 $("#repackError").attr("class",""); 3113 } 3114 else{ 3115 $("#repackError").attr("class","hide"); 3116 } 3117 }).keydown(function (event){ 3118 if ( event.which == 13 ) { 3119 event.preventDefault(); 3120 } 3121 }); 3122 //End of repack 3123 function productDetailBreadCrumb() 3124 { 3125 $('#breadcrumb').append('<li><a href="@plcUrl/@language">Home</a><li >></li></li>'); 3126 //$('#breadcrumb').append('<li><a href="@plcUrl/@GetGlobalValue("Global:Page.Name")">@GetGlobalValue("Global:Page.Name")</a><li >></li></li>'); 3127 $('#breadcrumb').append('<li><a href="@plcUrl/default.aspx?id=@pageID&firstgroup=@firstCategory.ToLower()">@firstCategory</a><li >></li></li>'); 3128 //$('#breadcrumb').append('<li><a href="default.aspx?id=@pageID&firstgroup=@firstCategory.ToLower()&secondgroup=@secondCategory.ToLower()">@secondCategory.Replace("-a-","&")</a><li >></li></li>'); 3129 //$('#breadcrumb').append('<li><a href="default.aspx?id=@pageID&firstgroup=@firstCategory.ToLower()&secondgroup=@secondCategory.ToLower()&thirdGroup=@thirdCategory.ToLower()">@thirdCategory.Replace("-a-","&")</a><li >></li></li>'); 3130 //$('#breadcrumb').append('<li><a href="@plcUrl/@GetGlobalValue("Global:Page.Name")?q=@ProdBrand">@ProdBrand</a><li >></li></li>'); 3131 $('#breadcrumb').append("<li><a href='@plcUrl/@language/@GetGlobalValue("Global:Page.Name")?brands=@ProdBrandEncode.ToLower()'>@ProdBrand</a><li >></li></li>"); 3132 $('#breadcrumb').append('<li class="active">@ProdName</li>'); 3133 } 3134 3135 productDetailBreadCrumb(); 3136 3137 $(function () { 3138 $('#tabDivMain a:first').tab('show'); 3139 }); 3140 3141 //addProductDetails(); 3142 <!------------------- Add to Cart Begin --------------> 3143 <!------- Check all variants are selected begin ----------> 3144 function CheckVariantSelected() { 3145 var returnValue = true; 3146 if(parseInt('@hasVariantCount') > 1) { 3147 if(('@hasSize').toLowerCase() == 'true') { 3148 if($("#sizeInput").val() == "" || $("#sizeInput").val().toLowerCase() == "please select size") { 3149 alert("Please select size."); 3150 returnValue = false; 3151 } 3152 } 3153 if(('@hasFlavour').toLowerCase() == 'true') { 3154 if($("#flavourInput").val() == "" || $("#flavourInput").val().toLowerCase() == "please select flavour") { 3155 alert("Please select flavour."); 3156 returnValue = false; 3157 } 3158 } 3159 if(('@hasColor').toLowerCase() == 'true') { 3160 if($("#colorInput").val() == "" || $("#colorInput").val().toLowerCase() == "please select color") { 3161 alert("Please select color."); 3162 returnValue = false; 3163 } 3164 } 3165 } 3166 if(returnValue) { 3167 //showaddedItem(" ", "@pid", "@ProdBrand", "@GetString("Ecom:Product.Name")", "@GetString("Ecom:Product.Price.PriceWithVAT")", "@GetString("Ecom:Product.Price.Currency.Symbol")", $("#quantityInput_" + "@pid").val(), true); 3168 //AjaxAddToCart("?cartcmd=add&productid=@pid&quantity=", "@pid"); 3169 3170 ShowAddedItem_Then_AjaxAddToCart(" ", "@pid", "@ProdBrand.Replace(" & ", " myAND ")", '@GetString("Ecom:Product.Name").Replace(" & ", " myAND ")', "@GetString("Ecom:Product.Price.PriceWithVAT")", "@GetString("Ecom:Product.Price.Currency.Symbol")", $("#quantityInput_" + "@pid").val(), true, "&cartcmd=add&productid=@pid&quantity=") 3171 } 3172 } 3173 <!------- Check all variants are selected end ----------> 3174 <!------------------- Add to Cart End --------------> 3175 </script> 3176 <script src='/files/Templates/Designs/PLC/js/jquery.elevatezoom.js'></script> 3177 <script> 3178 // var $j = jQuery.noConflict(); 3179 $('#zoom_product').elevateZoom({ 3180 zoomType: "inner", 3181 cursor: "crosshair", 3182 zoomWindowFadeIn: 500, 3183 zoomWindowFadeOut: 750 3184 }); 3185 </script> 3186 <script src='/files/Templates/Designs/PLC/js/jquery.bxslider.js'></script> 3187 3188 <!--Scrollbar --> 3189 3190 <!-- <link rel="stylesheet" href="/Files/Templates/Designs/PLC/assets/css/tinyscrollbar.css" type="text/css" media="screen"/> 3191 <script type="text/javascript" src="/Files/Templates/Designs/PLC/js/tinyscrollbar.js"></script> 3192 3193 <script type="text/javascript"> 3194 $(document).ready(function() 3195 { 3196 var $scrollbar = $("#scrollbar1"); 3197 3198 $scrollbar.tinyscrollbar(); 3199 }); 3200 </script> --> 3201 3202 <!-- Scrollbar --> 3203 @* ----- qty controller Begin----- *@ 3204 <script type="text/javascript" src="/Files/Templates/Designs/PLC/js/PLCAddToCartQtyController.js?v=1.3"></script> 3205 @* ----- qty controller End------- *@ 3206 <script> 3207 function collapseMobile(val){ 3208 if($("#mb_"+val)[0].classList.contains("in")){ 3209 $("#mb_"+val).removeClass("in"); 3210 }else{ 3211 $("#mb_"+val).addClass("in"); 3212 } 3213 } 3214 </script>
Cookies

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, You consent to the use of All the cookies.

เว็บไซต์ของเรามีการใช้คุกกี้ เพื่อให้คุณได้รับประสบการณ์ที่เกี่ยวข้องมากที่สุดโดยจดจำการตั้งค่าของคุณและการเยี่ยมชมซ้ำ การคลิก"ยอมรับ" แสดงว่าคุณยินยอมให้ใช้คุกกี้ทั้งหมด

Login to demo site