" elseif abs(int(rs2("optType")))=1 then optionshtml = optionshtml & "" elseif abs(int(rs2("optType")))=4 then if multipurchasecolumns="" then multipurchasecolumns=2 colwid=int(100/multipurchasecolumns) if cint(rs2("optGrpSelect"))<>0 AND NOT isdetail then hasmulti=2 optionshtml="" optionsjs="" altids = rs("pID") defimagejs=savedefimagejs optionsjs=saveoptionsjs optjsunique=saveoptjsunique opthasstock=TRUE rowcounter=UBOUND(prodoptions,2)+1 else optionshtml = optionshtml & "" end if else optionshtml = optionshtml & "" & IIfVr(noselectoptionlabel<>TRUE, "" end if end if rs2.Close optionshavestock = (optionshavestock AND opthasstock) next displayproductoptions = optionshtml sSQL = "SELECT pID,"&WSP&"pPrice,pInStock,p"&IIfVr(isdetail,"Large","")&"Image FROM products WHERE pID IN ('" & replace(altids, " ", "','") & "')" rs2.Open sSQL,cnn,0,1 do while NOT rs2.EOF pi = replace(rs2("p"&IIfVr(isdetail,"Large","")&"Image")&"","\","/") if pi="prodimages/" then pi="" pi = replace(pi, "|", "%7C") pi = replace(pi, "prodimages/", "|") pi = replace(pi, "<", "%3C") pi = replace(pi, ".gif", "<") pi = replace(pi, ">", "%3E") pi = replace(pi, ".jpg", ">") optionsjs = optionsjs & "sz('"&rs2("pID")&"'" session.LCID=1033 optionsjs = optionsjs & "," & rs2("pPrice") session.LCID=saveLCID if useStockManagement then optionsjs = optionsjs & "," & rs2("pInStock") optionsjs = optionsjs & ",'" & replace(pi, "'", "\'") & "');" ' & vbCrLf rs2.MoveNext loop rs2.Close if hasmulti<>2 then defimagejs="updateprice"&Count&"();"&defimagejs end function if enableclientlogin=TRUE OR forceclientlogin=TRUE then if SESSION("clientID")<>"" then elseif trim(request.form("checktmplogin"))<>"" AND isnumeric(trim(request.form("checktmplogin"))) then Set clientRS = Server.CreateObject("ADODB.RecordSet") Set clientCnn=Server.CreateObject("ADODB.Connection") clientCnn.open sDSN sSQL = "SELECT tmploginname FROM tmplogin WHERE tmploginid='" & escape_string(request.form("sessionid")) & "' AND tmploginchk=" & replace(trim(request.form("checktmplogin")),"'","") clientRS.Open sSQL,clientCnn,0,1 if NOT clientRS.EOF then SESSION("clientID")=replace(clientRS("tmploginname"),"'","") clientRS.Close sSQL = "SELECT clUserName,clActions,clLoginLevel,clPercentDiscount FROM customerlogin WHERE clID="&SESSION("clientID") clientRS.Open sSQL,clientCnn,0,1 if NOT clientRS.EOF then SESSION("clientUser")=clientRS("clUserName") SESSION("clientActions")=clientRS("clActions") SESSION("clientLoginLevel")=clientRS("clLoginLevel") SESSION("clientPercentDiscount")=(100.0-cDbl(clientRS("clPercentDiscount")))/100.0 end if end if clientRS.Close clientCnn.Close set clientRS = nothing set clientCnn = nothing elseif Request.Cookies("WRITECLL")<>"" then Set clientRS = Server.CreateObject("ADODB.RecordSet") Set clientCnn=Server.CreateObject("ADODB.Connection") clientCnn.open sDSN clientEmail = replace(Request.Cookies("WRITECLL"),"'","") clientPW = replace(Request.Cookies("WRITECLP"),"'","") sSQL = "SELECT clID,clUserName,clActions,clLoginLevel,clPercentDiscount FROM customerlogin WHERE (clEmail<>'' AND clEmail='"&clientEmail&"' AND clPW='"&clientPW&"') OR (clEmail='' AND clUserName='"&clientEmail&"' AND clPW='"&clientPW&"')" clientRS.Open sSQL,clientCnn,0,1 if NOT clientRS.EOF then SESSION("clientID")=clientRS("clID") SESSION("clientUser")=clientRS("clUsername") SESSION("clientActions")=clientRS("clActions") SESSION("clientLoginLevel")=clientRS("clLoginLevel") SESSION("clientPercentDiscount")=(100.0-cDbl(clientRS("clPercentDiscount")))/100.0 end if clientRS.Close clientCnn.Close set clientRS = nothing set clientCnn = nothing end if if requiredloginlevel<>"" then if SESSION("clientLoginLevel")SESSION("clientLoginLevel") then Response.redirect "cart.asp?mode=login&refurl=" & urlencode(request.servervariables("URL") & IIfVr(request.servervariables("QUERY_STRING")<>"" ,"?"&request.servervariables("QUERY_STRING"), "")) end if end if if (SESSION("clientActions") AND 2)=2 then showtaxinclusive=FALSE end if function urldecode(encodedstring) strIn = encodedstring : strOut = "" : intPos = Instr(strIn, "+") do While intPos strLeft = "" : strRight = "" if intPos > 1 then strLeft = Left(strIn, intPos - 1) if intPos < len(strIn) then strRight = Mid(strIn, intPos + 1) strIn = strLeft & " " & strRight intPos = InStr(strIn, "+") intLoop = intLoop + 1 Loop intPos = InStr(strIn, "%") do while intPos AND Len(strIn)-intPos > 2 if intPos > 1 then strOut = strOut & Left(strIn, intPos - 1) strOut = strOut & Chr(CInt("&H" & mid(strIn, intPos + 1, 2))) if intPos > (len(strIn) - 3) then strIn = "" else strIn = Mid(strIn, intPos + 3) intPos = InStr(strIn, "%") Loop urldecode = strOut & strIn end function function vrmax(a,b) if a > b then vrmax=a else vrmax=b end function function vrmin(a,b) if a < b then vrmin=a else vrmin=b end function function getsessionsql() getsessionsql = IIfVr(SESSION("clientID")<>"", "cartClientID="&replace(SESSION("clientID"),"'",""), "(cartClientID=0 AND cartSessionID='"&replace(thesessionid,"'","")&"')") end function function getordersessionsql() getordersessionsql = "ordDate>"&datedelim&VSUSDate(Date()-2)&datedelim&IIfVr(SESSION("clientID")<>"", " AND ordClientID="&replace(SESSION("clientID"),"'",""), " AND (ordClientID=0 AND ordSessionID='"&replace(thesessionid,"'","")&"')") end function function trimoldcartitems(cartitemsdel) if dateadjust="" then dateadjust=0 thetocdate = DateAdd("h",dateadjust,Now()) sSQL = "SELECT adminDelUncompleted,adminClearCart FROM admin WHERE adminID=1" rs.Open sSQL,cnn,0,1 delAfter=rs("adminDelUncompleted") delSavedCartAfter=rs("adminClearCart") rs.Close if delAfter<>0 then sSQL = "SELECT ordID FROM orders WHERE ordAuthNumber='' AND ordDate<" & datedelim & VSUSDate(thetocdate-delAfter) & datedelim & " AND ordStatus=2" rs.Open sSQL,cnn,0,1 do while NOT rs.EOF release_stock(rs("ordID")) cnn.Execute("UPDATE cart SET cartOrderID=0 WHERE cartOrderID="&rs("ordID")) cnn.Execute("DELETE FROM orders WHERE ordID="&rs("ordID")) rs.MoveNext loop rs.Close end if sSQL = "SELECT cartID,listOwner FROM cart LEFT JOIN customerlists ON cart.cartListID=customerlists.listID WHERE cartCompleted=0 AND cartOrderID=0 AND " sSQL = sSQL & "((cartClientID=0 AND cartDateAdded<"&datedelim & VSUSDateTime(cartitemsdel) & datedelim & ") " if delSavedCartAfter<>0 then sSQL = sSQL & "OR (cartDateAdded<"&datedelim & VSUSDate(thetocdate-delSavedCartAfter) & datedelim & ") " sSQL = sSQL & ")" rs.Open sSQL,cnn,0,1 if NOT rs.EOF then delOptions="" : addcomma = "" do while NOT rs.EOF if NOT isnull(rs("listOwner")) then cnn.Execute("UPDATE cart SET cartCompleted=3,cartClientID="&rs("listOwner")&" WHERE cartID="&rs("cartID")) else delOptions = delOptions & addcomma & rs("cartID") addcomma = "," end if rs.MoveNext loop if delOptions<>"" then cnn.Execute("DELETE FROM cartoptions WHERE coCartID IN ("&delOptions&")") if delOptions<>"" then cnn.Execute("DELETE FROM cart WHERE cartID IN ("&delOptions&")") end if rs.Close end function function htmlspecials(thestr) htmlspecials = replace(replace(replace(thestr,">",">"),"<","<"),"""",""") end function sub addtomailinglist(theemail,thename) theemail=trim(lcase(strip_tags2(replace(theemail,"""","")))) if instr(theemail,"@")>0 AND instr(theemail, ".")>0 then sSQL = "SELECT email,isconfirmed FROM mailinglist WHERE email='" & escape_string(theemail) & "'" rs.Open sSQL,cnn,0,1 emailexists=(NOT rs.EOF) if NOT rs.EOF then isconfirmed=(rs("isconfirmed")<>0) else isconfirmed=FALSE rs.Close if NOT emailexists then cnn.Execute("INSERT INTO mailinglist (email,mlName,isconfirmed,mlConfirmDate,mlIPAddress) VALUES ('" & escape_string(theemail) & "','" & escape_string(thename) & "'," & IIfVr(noconfirmationemail,1,0)&","&datedelim&vsusdate(date())&datedelim&",'"&left(request.servervariables("REMOTE_ADDR"), 48)&"')") if NOT isconfirmed AND NOT noconfirmationemail then warncheckspamfolder=TRUE if htmlemails=true then emlNl = "
" else emlNl=vbCrLf thelink = storeurl & "cart.asp?emailconf="&trim(theemail)&"&check="&left(calcmd5(uspsUser&upsUser&origZip&emailObject&checksumtext&":"&theemail), 10) if htmlemails=TRUE then thelink = "" & thelink & "" call DoSendEmailEO(theemail,emailAddr,"",xxMLConf,xxConfEm & emlNl & emlNl & thelink,emailObject,themailhost,theuser,thepass) end if end if end sub function unicodehtmltojs(mistr) outstr="" thelen = len(mistr) theind = 1 do while theind < thelen strmrk = instr(theind, mistr, "&#") if strmrk > 0 then outstr = outstr & mid(mistr, theind, strmrk - theind) stremrk = instr(theind+2, mistr, ";") if stremrk > 0 then decnum = mid(mistr, strmrk+2, (stremrk-strmrk)-2) if isnumeric(decnum) then hexstr = hex(decnum) outstr = outstr & "\u" & string(4-len(hexstr), "0") & hexstr theind = stremrk+1 else outstr = outstr & mid(mistr, strmrk, stremrk-strmrk) theind = stremrk end if else outstr = outstr & mid(mistr, strmrk) theind = thelen end if else outstr = outstr & mid(mistr, theind) theind = thelen end if loop unicodehtmltojs = outstr end function function jscheck(thetxt) if recodeunicodeforjs=TRUE then jscheck=replace(unicodehtmltojs(thetxt),"""","\""") else jscheck=replace(thetxt,"""","\""") end function function imageorlink(theimg, thetext, thelink, isjs) if theimg<>"" then imageorlink = "" else imageorlink = ""&thetext&"" end if end function function imageorbutton(theimg,thetext,theclass,thelink, isjs) if theimg<>"" AND theimg<>"button" then imageorbutton = ""","class="""&theclass&""" ","")&"onmouseover=""this.style.cursor='pointer';window.status='"&replace(thetext,"'","\'")&"';return true"" onmouseout=""window.status='';return true"" onclick="""&IIfVr(isjs, "", "document.location='") & thelink & IIfVr(isjs, "", "'")&""" alt="""&thetext&""" />" else imageorbutton = ""","class="""&theclass&""" ","")&"onclick="""&IIfVr(isjs, "", "document.location='") & thelink & IIfVr(isjs, "", "'")&""" />" end if end function function imageorsubmit(theimg,thetext,theclass) if theimg<>"" AND theimg<>"button" then imageorsubmit = ""","class="""&theclass&""" ","")&"/>" else imageorsubmit = ""","class="""&theclass&""" ","")&"/>" end if end function function getgcchar() getgcchar="" do while getgcchar="" OR getgcchar="O" OR getgcchar="I" OR getgcchar="Q" getgcchar = chr(Int(26 * Rnd) + 65) loop end function function getrndchar() num = Int(36 * Rnd) + 48 if num>57 then num=num+39 getrndchar = chr(num) end function function replaceemailtxt(thestr, txtsearch, txtreplace) i = instr(thestr, txtsearch) if i > 0 then t1 = instrrev(thestr, "{", i) t2 = instrrev(thestr, "}", i) t3 = instr(i, thestr, "{") t4 = instr(i, thestr, "}") end if if i=0 then replaceemailtxt = thestr elseif txtreplace="" then ' want to replace all of txtsearch OR {...txtsearch...} if t1 > 0 AND t4 > 0 AND (t2=0 OR t2 < t1) AND (t3=0 OR t3 > t4) then replaceemailtxt = mid(thestr, 1, t1-1) & mid(thestr, t4+1) else replaceemailtxt = replace(thestr, txtsearch, "") else ' Want to remove the { and } if t1 > 0 AND t4 > 0 AND (t2=0 OR t2 < t1) AND (t3=0 OR t3 > t4) then thestr = mid(thestr, 1, t1-1) & mid(thestr, t1+1, (t4-t1)-1) & mid(thestr, t4+1) replaceemailtxt = replace(thestr, txtsearch, txtreplace) end if end function function showproductreviews(disptype, classname) showproductreviews = "
" therating = cint(rs("pTotRating")/rs("pNumRatings")) for index=1 to int(therating / 2) showproductreviews = showproductreviews & "" next ratingover = therating if ratingover / 2 > int(ratingover / 2) then showproductreviews = showproductreviews & "" ratingover = ratingover + 1 end if for index=int(ratingover / 2) + 1 to 5 showproductreviews = showproductreviews & "" next showproductreviews = showproductreviews & "" if disptype=2 then showproductreviews = showproductreviews & " " & replace(xxBasRat, "%s", rs("pNumRatings")) & "" else if disptype=1 then showproductreviews = showproductreviews & " " & replace(xxBasRat, "%s", rs("pNumRatings")) & " (" & xxView & ")" showproductreviews = showproductreviews & "
" end function sub splitfirstlastname(thename, byref firstfull, byref lastname) if usefirstlastname AND instr(thename, " ")>0 then namearr = split(thename," ",2) firstfull = namearr(0) lastname = namearr(1) else firstfull=thename lastname="" end if end sub function getcatid(sid, snam) if usecategoryname AND snam<>"" then getcatid=urlencode(snam) else getcatid=sid end function function cleanupemail(theemail) theemail = strip_tags2(replace(theemail,"""","")) gotat=FALSE cleanupemail="" for i=1 to len(theemail) ch=mid(theemail,i,1) if ch<>" " AND ch<>"""" AND ch<>"'" AND ch<>"(" AND ch<>")" AND NOT (ch="@" AND gotat) then cleanupemail=cleanupemail & ch if ch="@" then gotat=TRUE next end function function parse_url(surl,comp) parse_url = replace(lcase(surl), "http://", "") parse_url = replace(parse_url, "https://", "") surlarr = split(parse_url, "?", 2) if UBOUND(surlarr) >= 0 then parse_url = surlarr(0) if comp=2 then surlarr = split(parse_url, "/", 2) : if UBOUND(surlarr) >= 0 then parse_url = surlarr(0) end function sub get_wholesaleprice_sql() if SESSION("clientUser")<>"" then if (SESSION("clientActions") AND 8)=8 then WSP = "pWholesalePrice AS " TWSP = "pWholesalePrice" if wholesaleoptionpricediff=TRUE then OWSP = "optWholesalePriceDiff AS " if nowholesalediscounts=true then nodiscounts=true end if if (SESSION("clientActions") AND 16)=16 then Session.LCID = 1033 WSP = SESSION("clientPercentDiscount") & "*"&IIfVr((SESSION("clientActions") AND 8)=8,"pWholesalePrice","pPrice")&" AS " TWSP = SESSION("clientPercentDiscount") & "*"&IIfVr((SESSION("clientActions") AND 8)=8,"pWholesalePrice","pPrice") if wholesaleoptionpricediff=TRUE then OWSP = SESSION("clientPercentDiscount") & "*"&IIfVr((SESSION("clientActions") AND 8)=8,"optWholesalePriceDiff","optPriceDiff")&" AS " if nowholesalediscounts=true then nodiscounts=true Session.LCID = saveLCID end if end if end sub function writepagebar(CurPage,iNumPages,sprev,snext,sLink,nofirstpage) Dim i, sStr, startPage, endPage startPage = vrmax(1,CInt(Int(CDbl(CurPage)/10.0)*10)) endPage = vrmin(iNumPages,CInt(Int(CDbl(CurPage)/10.0)*10)+10) if CurPage > 1 then sStr = sLink & "1"">« " & sLink & CurPage-1 & """"&IIfVs(CurPage>2," rel=""prev""")&">"&sprev&" | " else sStr = "« "&sprev&" | " end if for i=startPage to endPage if i=CurPage then sStr = sStr & "" & i & " | " else sStr = sStr & sLink & i & """>" if i=startPage AND i > 1 then sStr=sStr&"..." sStr = sStr & i if i=endPage AND i < iNumPages then sStr=sStr&"..." sStr = sStr & " | " end if next if CurPage < iNumPages then writepagebar = sStr & sLink & CurPage+1 & """ rel=""next"">"&snext&" " & sLink & iNumPages & """>»" else writepagebar = sStr & " "&snext&" »" end if if nofirstpage then writepagebar = replace(replace(writepagebar,"&pg=1""",""" rel=""start"""),"?pg=1""",""" rel=""start""") end function function addtag(tagname, strValue) addtag = "<" & tagname & ">" & Replace(Replace(strValue&"", "&", "&"), "<", "<") & "" end function function escape_string(str) escape_string = trim(replace(str&"","'","''")) if mysqlserver=TRUE then escape_string = replace(escape_string,"\","\\") end function function urlencode(str) urlencode=server.urlencode(trim(str&"")) urlencode=replace(urlencode,"%5F","_") urlencode=replace(urlencode,"%2D","-") urlencode=replace(urlencode,"%2E",".") end function function getsessionid() if persistentcart<>"" AND isnumeric(persistentcart) then if int(persistentcart)<=0 then getsessionid=Session.SessionID elseif request.cookies("ectcartcookie")<>"" then getsessionid=replace(request.cookies("ectcartcookie"),"'","") else gotunique=FALSE randomize do while NOT gotunique sequence = "" for indgsid=0 to 25 sequence=sequence&getrndchar() next sSQL = "SELECT cartSessionID FROM cart WHERE cartSessionID='" & sequence & "'" rs.Open sSQL,cnn,0,1 if rs.EOF then gotunique = TRUE rs.Close loop response.cookies("ectcartcookie")=sequence response.cookies("ectcartcookie").Expires = Date()+persistentcart if request.servervariables("HTTPS")="on" then response.cookies("ectcartcookie").secure=TRUE getsessionid=sequence end if else getsessionid=Session.SessionID end if end function function dohashpw(thepw) if trim(thepw&"")="" then dohashpw="" else dohashpw=calcmd5("ECT IS BEST"&trim(thepw)) end function sub updaterchecker() Set rs = Server.CreateObject("ADODB.RecordSet") Set cnn=Server.CreateObject("ADODB.Connection") cnn.open sDSN sSQL = "SELECT adminVersion,updLastCheck,updRecommended,updSecurity,updShouldUpd,adminStoreURL FROM admin WHERE adminID=1" rs.Open sSQL,cnn,0,1 storeVersion = rs("adminVersion") updLastCheck = rs("updLastCheck") recommendedversion = rs("updRecommended") securityrelease = rs("updSecurity") shouldupdate = rs("updShouldUpd") storeURL = rs("adminStoreURL") rs.Close checkupdates = (date()-updLastCheck>=3) cnn.Close set cnn=nothing set rs=nothing if disableupdatechecker then checkupdates=FALSE else %> <% end if ' disableupdatechecker %>
<%=replace(storeVersion, " v", "
ASP v")%>
<% if disableupdatechecker then response.write "Please contact T324 for updates.
" elseif checkupdates then response.write yyChkNew & "..." else if shouldupdate then response.write "
" & yyNewRec & ": v" & recommendedversion & "
" if securityrelease then response.write "
" & yyRUSec & "
" else response.write yyNoNew & "
" & updLastCheck & "
" end if end if %>
<% end sub if SESSION("httpreferer")="" AND request.servervariables("HTTP_REFERER")<>"" then httpreferer = left(request.servervariables("HTTP_REFERER"), 255) if len(httpreferer)>=255 then andpos = instrrev(httpreferer, "&") if andpos > 0 then httpreferer = left(httpreferer, andpos-1) end if SESSION("httpreferer")=httpreferer end if %>
<% DIM sDSN ' For help setting your database connection, please go to the following URL ' http://www.ecommercetemplates.com/help/ecommplus/faq.asp#faq8 ' These dashes at the beginning of the line mean that these lines are "comments" and are ignored. ' OLD sDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/main/boutique/fpdb/vsproducts.mdb") ' Microsoft Access 2000 using mapped path sDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/storeinfo/vsproducts.mdb") ' Microsoft Access 2000 using mapped path 'sDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\fpdb\vsproducts.mdb;" ' Microsoft Access 2000 ' Please note, for SQL Server you must have an SQL Server database available. Most people will want to use the Access database provided. 'sDSN = "driver={SQL Server};server=SERVERNAME;uid=USERNAME;pwd=PASSWORD;database=DATABASENAME" ' SQL Server %> <% Dim maintablebg,innertablebg,headeralign,maintablewidth,innertablewidth,maintablespacing,innertablespacing,maintablepadding,innertablepadding,sqlserver,nobuyorcheckout,noprice Dim mailhost,sortBy,pathtossl,taxShipping,pagebarattop,productcolumns,useproductbodyformat,usesearchbodyformat,usedetailbodyformat,useemailfriend,expireaffiliate,XXLicenseNumber ' For a description of these parameters and their useage, please open the following URL in your browser ' http://www.ecommercetemplates.com/help/ecommplus/parameters.asp 'main settings pathtossl = "https://keelausa.com/" nochecksslserver=false sqlserver=false mailhost = "mail.T324mail.com" encryptmethod="none" 'encryptmethod="aspencrypt" dumpccnumber=false currencyseparator=" " emailorderstatus=3 htmlemails=true useaspuploadforimages=TRUE htmleditor="fckeditor" defaultcatimages = "catimages/" nomarkup=true 'login enableclientlogin=true 'display - global nobuyorcheckout=true noprice=false showcategories=false pricezeromessage="Coming Soon!" noshowdiscounts=true imgbuybutton="images/buy.gif" 'display - product listing sortBy = 2 pagebarattop=1 productcolumns=3 useproductbodyformat=2 showquantonproduct=false showtaxinclusive=false showproductid=false noproductoptions=true 'display - product detail usedetailbodyformat=2 useemailfriend=true showquantondetail=true 'display - category page usecategoryformat=2 allproductsimage="" categorycolumns=1 catseparator="
 " usecategoryname=TRUE 'display - cart actionaftercart=2 nogiftcertificate=true crosssellaction="recommended" 'any or all of the following: recommended,related,alsobought,bestsellers csnobuyorcheckout=false csnoproductoptions=TRUE csnoshowdiscounts=TRUE csrecommendedtitle="Featured Product" 'csalsoboughttitle="Your also bought title" 'csrelatedtitle="Your related title" 'csbestsellerstitle="Your best seller title" allowemaildefaulton=false nomailinglist=true noconfirmationemail=true useimageincart=TRUE linkcartproducts=TRUE requirecvv=false usefirstlastname=TRUE extraorderfield1="" extraorderfield1required=false extraorderfield2="" extraorderfield2required=false 'display - other usesearchbodyformat=2 dateadjust=0 'searchbymanufacturer="Manufacturer" disableupdatechecker=TRUE 'shipping - not all possible shipping settings are listed here! taxShipping=0 upspickuptype="" commercialloc=false addshippinginsurance=0 noshipaddress=false willpickuptext="" willpickupcost=0 'misc expireaffiliate=30 overridecurrency=false orcsymbol="$ " orcemailsymbol="$ " orcdecplaces=2 orcpreamount=true termsandconditions=false invoiceheader="" invoiceaddress="" invoicefooter="" ' =================================================================== ' Please do not edit anything below this line ' =================================================================== maintablebg="" innertablebg="" maintablewidth="98%" innertablewidth="100%" maintablespacing="0" innertablespacing="0" maintablepadding="9" innertablepadding="4" headeralign="left" Session.LCID = 1033 const maxprodopts=20 ' const helpbaseurl="http://www.ecommercetemplates.com/help/ecommplus/" const helpbaseurl="http://www.T324.com/ecommerce/" Function Max(a,b) if a > b then Max=a else Max=b end if End function Function Min(a,b) if a < b then Min=a else Min=b end if End function %> <% ' WARNING : Custom changes to this file will be overwritten when you update. It's much better to simply add any modified lines to your vsadmin/includes.asp file xxManRev="This order needs to be manually reviewed by one of our operatives. We will be in contact shortly." xxShEsWi="Shipping Estimate Using" xxTranAp="This transaction has been approved." xxComOrd="For your security, please fill out the form below to complete your order." xxNoBack="Do not click the refresh or back button or this transaction may be interrupted or cancelled." xxCentl="Your card may be eligible or enrolled in Verified by Visa, MasterCard SecureCode or JCB J/Secure payer authentication programs. After clicking the ""Checkout"" button, your Card Issuer may prompt you for your payer authentication password to complete your purchase." xxVBV1="Same card, added safely online" xxVBV2="Verified by Visa is a new service that lets you shop online with added confidence." xxVBV3="Through a simple checkout process, verified by Visa confirms your identity when you make purchases in participating online stores. It's convenient and it works with your existing Visa card." xxVBV4="Plus, Verified by Visa is a snap to use. You register your card just once and create your own password. Then, when you make purchases at participating online stores, a Verified by Visa window will appear. Simply enter your password and click submit. Your identity is verified and the purchase is secure." xxVBV5="To activate Verified by Visa in your Visa card, or to learn more, contact the financial institution that issued your Visa card." xx3DSFai="Your financial institution has indicated that it could not successfully authenticate this transaction. To protect against unauthorized use, this card cannot be used to complete your purchase. You may complete the purchase by selecting another form of payment." xxPurcha="Purchasing" xxPurchd="Purchased" xxDigPro="Digital Products" xxDescr="Description" xxWhDoTo="What would you like to do today?" xxManAcc="Manage my account." xxVwPsOr="View past orders." xxCrGfRe="Create gift registry." xxVwGfRe="View gift registries." xxVwMyCa="View my cart." xxVwOrSt="View my order status." xxManAdd="Manage Addresses." xxGoShop="Go shopping." xxArVwLi="You are viewing the list" xxLogInA="Logged in as" xxVGifRe="View Gift Registries" xxRemLis="Remove From List" xxMovCar="Move to Cart" xxItmTot="Item Total" xxLisEmp="This list contains no items." xxViewMC="To view your main cart contents please" xxMyWisL="My Wish List" xxSwCart="Switch to Cart" xxCreaGR="Create Gift Registry" xxNotSel="You haven't selected any items." xxAddLis="Add To List" xxNoGRe="No gift registries have been created" xxPubAcc="Public Access" xxVieGRe="View Registry Items" xxDelGRe="Delete Gift Registry" xxLisNam="Gift Registry Name" xxGetSta="If you would like to get started browsing our store please" xxDelLis="Are you sure you want to delete this list?" xxLisCre="To create a new list, please" xxLisMan="Gift Registry Management" xxRecVie="Recently Viewed" xxUPStm="UPS, the UPS Shield Trademark, the UPS Ready Mark, the UPS OnLine Tools Mark and the color brown are trademarks of United Parcel Service of America, Inc. All Rights Reserved." xxOrCom="Or compare rates with" xxAmtNov="The amount entered is not valid." xxShpDff="If your shipping address is different from above, please click here:" xxStars="Star(s)" xxCliCon="Click to Confirm Order and View Receipt" xxFirNam="First Name" xxLasNam="Last Name" xxClkRel="Click here to reload page" xxManuf="Manufacturers" xxSryNA="Sorry, this product is not currently available." xxEdit="Edit" xxNew="New" xxDonat="Donation" xxMakDon="Make A Donation" xxView="View" xxBasRat="Based on %s ratings." xxShHaEs="Shipping and Handling Estimate" xxApply="Apply" xxGifCtc="Gift Certificate" xxGCBal="Gift certificate found with balance of " xxGCCNoF="Gift Certificate / Coupon Not Found" xxCpAlAp="Coupon Already Applied" xxCpnApd="Coupon Applied" xxGcAlAp="Gift Certificate Already Applied" xxGcApld="Gift Certificate Applied" xxFldCnt="Flood control, please try again in a few seconds" xxCpGcDl="Coupon / Gift Certificate Deleted" xxDeltng="Deleting" xxAplyng="Applying" xxAppGC="Applied Gift Certificate" xxApdCpn="Applied Coupon" xxRemove="Remove" xxOnOnCp="Only one coupon can be applied per order." xxCanApp="Cannot apply" xxGCMini="The minimum gift certificate purchase is" xxEmCNMa="Email confirmation value does not match" xxGCPurc="Purchase Gift Certificates" xxAmount="Amount" xxTo="To" xxFrom="From" xxReEmai="Recipients Email" xxCReEma="Confirm Recipients Email" xxMessag="Message" xxOnlyDec="Please enter only numbers and decimal points in this field" xxCarCha="Please note that your cart contents may have changed since being added." xxLimSto="Limited Stock" xxJusBuy="The out of stock items may have just recently been purchased." xxStkUTo="To accept the available stock levels, please " xxDigits="Please enter only digits in this field." xxEntMul="Please enter a quantity for at least one option." xxConfig="Configure" xxSelOpt="To select options for this product please" xxRevCar="Review Cart" xxInsMul="There is not enough stock to fulfill one or more of the items you have ordered. The available items have been added to your cart." xxEnlrge="Enlarge" xxOf="of" xxRvNone="No Reviews For This Product." xxRvPlsS="Please select a rating for this product" xxRvComm="Comments" xxRvHead="Heading" xxRvRati="Rating" xxRvPosb="Posted By" xxRvAvRa="Average rating" xxRvPrRe="Product Reviews" xxClkRev="Click to review this product" xxRvAreR="You are reviewing the product" xxRvRevP="Reviews for the product" xxRvBack="Back to product" xxShoAll="Show All" xxRvOld="Oldest" xxRvRece="Most Recent" xxRvWors="Worst Rated" xxRvBest="Best Rated" xxRvThks="Thank you for your comments. These will appear in a day or two after they have been reviewed." xxRvRet="You will now be returned to the product page you were viewing. If this does not happen please" xxRvLim="I'm sorry but you have reached your daily posting limit." xxYouAcc="Your Account" xxSeaAll="Search All" xxWaiCon="Awaiting Confirmation" xxSucUns="Your email address has been successfully removed from our database." xxSpmWrn="A confirmation email has been sent and before we can activate your subscription you must click on the link contained in that email. You may find this email has been diverted to your SPAM folder so please check there also." xxThkSub="Thank you for subscribing to our mailing list" xxEmNtFn="I'm sorry, your email address could not be found." xxAllSub="You have already successfully activated your subscription." xxSubAct="Your subscription has been successfully activated." xxSubNAc="Your subscription could not be activated. Please contact the store admin." xxMLConf="Mailing List Confirmation" xxConfEm="Thank you for subscribing to our mailing list. To confirm your subscription please click on the link below. If the link is not clickable then just copy and paste it into your web browser address bar." xxDeAdd="Delete Address" xxPlWtFw="Please wait while we forward you to view your cart contents." xxCrNwAc="Create Account" xxExNoMa="Existing password does not match" xxOldPwd="Old Password" xxNewPwd="New Password" xxRptPwd="Repeat New Password" xxPwdChg="Enter your old password and new password below only if you wish to change your password." xxPwdMat="Password fields do not match" xxCancel="Cancel" xxReset="Reset" xxAccDet="Account Details" xxChaAcc="To change account details or password please" xxNevDiv="(We will never divulge your email to a 3rd party)" xxAlPrEm="Allow Promotional Emails" xxAltCar="Or select an alternate shipping carrier to compare rates." xxCpnNoF="Coupon Not Found!" xxAppCpn="Apply Coupon" xxMusLog="You must be logged in to access your customer account." xxCusAcc="Customer Account" xxLogout="Logout" xxEntEm="Please enter the email address associated with this account and click ""Submit""." xxSenPw="Your login details have been sent as requested to your email address." xxSorPw="Sorry. We could not find that email address in our system." xxLosPw1="We received a request to resend your password for your account at " xxLosPw2="Your details are as follows." xxLosPw3="If you received this email in error you need take no action." xxForPas="Forgot Password?" xxNoOrd="No matching orders." xxNoAdd="No registered addresses." xxDelAdd="Are you sure you want to delete this address?" xxMisc="Miscellaneous" xxShpAdd="Shipping Address" xxBilAdd="Billing Address" xxSamAs="Same as billing address" xxEmExi="The email address you entered already exists." xxBfChk="Before proceeding with checkout, you must" xxOrdMan="Order Management" xxAddMan="Address Management" xxPCAdd="To add a new address, please" xxUpdSuc="Update Successful!" xxEdAdd="Edit Address" xxNoLogD="Could not find login details." xxNewAcc="New Account" xxRemLog="Remember login on this computer?" xxCrAc="create an account" xxToCrAc="to create an account" xxOr="or" xxNotLI="You are not currently logged in." xxTLIP="To log in please" xxTLOP="To logout please" xxLiDets="Login Details" xxYes="Yes" xxNo="No" xxGooCo="Use the new, secure Google Checkout service." xxPrint="Printable Version" xxTrackT="%s" xxTraNum="Tracking Number" xxAddToC="Add to cart" xxOpSkTx=" (%s)" xxShipHa="Shipping and Handling" xxPlsSta="Please select your ship state" xxPlsZip="Please enter your zip code" xxInStoc="In Stock" xxInsuff="Insufficient Stock Warning" xxOnlyAd="Only %s of the item you requested are available in stock and these have been added to your cart." xxWanRem="If you wish to remove this item from your cart please click below." xxGo="Go" xxPPPend="Thank you for your order!

Your order has been approved by PayPal with a status of "Pending". We will be in touch as soon as the funds have cleared." xxInsDe2="Inside Delivery" xxInsDel="Please click here if your freight shipment requires an inside delivery" xxSigRe2="Signature Release" xxSigRel="Have Signature Release Authorization Number.
(Please enter Authorization Number Below in Additional Info.)" xxCerCLo="Customer certifies shipping is to a commercial location." xxShiInI="Shipping insurance included." xxSatDeR="Saturday delivery required." xxSatDe2="Saturday Delivery" xxSatDel="Please check this box to have your products delivered on a Saturday." xxPPPBlu="Or Checkout with PayPal Express
Save time and use your PayPal account information to checkout with PayPal." xxShpEst="Shipping Estimate" xxMCShpE="Shipping Est" xxShpIns="Shipping Insurance" xxAddress2="Address Line 2" xxNoCnf="Sorry, we have not yet received payment confirmation. Please wait a minute then refresh this browser window." xxCOTxt="Checkout" xxDlPros="Download Products" xxDlPro="Download Product" xxDownl="Download" xxGuar="Delivery" xxMainWn="See main window" xxWrnChQ="If you change quantities then you have to have to click the ""Update Totals"" link for them to take effect. Please press ""OK"" to update totals or ""Cancel"" to continue without updating." xxDays="days" xxDay="day" xxCCName="Name (as it appears on card)" xxNoJS="Javascript seems to be currently disabled in your browser." xxNoCk="Cookies seem to be currently disabled in your browser." xxSecWar="This could mean that this shopping site will not function correctly. If you experience problems, please check that your browsers security settings are not set to too high a level and that you don't have a firewall blocking cookies or javascript." xxCommis="Commission" xxCCDets="Credit Card Details" xxOptOOS="I'm sorry, that particular option is currently out of stock" xxHST="HST" xxPrOpts="Options" xxValEm="Please enter a valid email address." xxLIDis="Discounts applicable to login: " xxMLLIS="Login Status" xxMLLIA="Logged in as " xxMLNLI="Not logged in" xxAutFo="You will now be forwarded automatically." xxLOSuc="You have logged out successfully !" xxLISuc="Login Successful !" xxNoLog="Sorry, your username and password were not found. Please try again." xxPlEnt="Please enter your username and password." xxSubmt="Submit" xxWrCk="Please click here to write a cookie to remember your username and password." xxLogin="Login" xxFulNam="This message will not be shown again.\nPlease be sure to enter your first and last name in the field" xxCntryTxt2="" xxCLoc="Commercial Loc" xxWtIns=" (With Insurance)" xxStaVw="View Order Status" xxStaCur="This is the current status for your order number" xxStatus="Status" xxStaErr="The following error occurred" xxStaEr1="Please enter a valid order id." xxStaEr2="Sorry, we could not find an order matching that order id and email address. Please try again." xxStaEnt="Please enter your order id and the email address used on the order." xxDate="Date" xxTime="Time" xxEFRec=" recommends this site" xxEFThk="Thank you, your recommendation has been sent." xxClkClo="Please click below to close this window." xxSend="Send" xxWantIns="Please click here to include shipping insurance." xxPlsProc="Please proceed only if you are in acceptance of our terms and conditions.\nYou must signal your acceptance by checking the box." xxTermsCo="Please click here if you are in acceptance of our terms and conditions.
To review our terms and conditions, please click here." xxComLoc="Please click here if your shipping destination is a commercial location." xxValCC="Please enter a valid credit card number." xxCCMon="Please select your credit card expiry month." xxCCYear="Please select your credit card expiry year." xxDot="" xxEFYF1="Your friend " xxEFYF2=" has recommended this site to you" xxEFYF3=", and sends you the following message:" ssIncTax="(%s Inc. Tax)" xxMCCO="Checkout" xxMCSC="Shopping cart" xxMCIIC="Product(s) in cart" xxHndlg="Handling" xxFree="Free" xxDscnts="Discounts" xxDsProd="The following discounts apply to all these products." xxDsCat="The following discounts apply in all these categories." xxDsApp="Discounts Apply !" xxAppDs="Applicable Discounts" xxTotDs="Total Discounts" xxSubTot="Sub Total" xxGifCer="Coupon Number" xxGifNum="Coupon or Discount Number" xxGifEnt="If you have a coupon or discount number, please enter it here." xxNoGfCr="The discount number you entered (%s) was not found, has expired or is not applicable. Please click here if you wish to go back and try again." xxListPrice="List Price: %s" standardship="Standard Shipping" expressship="Express Shipping" xxHomeURL="categories.asp" xxHome="Home" xxOutStok="Out of Stock" xxOutState="Outside USA" xxState="State (US)" xxAllSta="State" xxNonState="State (Non US)" xxCntryTxt="United States of America" xxPlsSel="Please Select..." xxAddOrd="has been added to your order." xxPlsWait="Please wait while we forward you to view the contents of your cart or " xxClkHere="click here" xxSrryItm="Sorry, the item" xxIsCntly="is currently" xxOutStck="out of stock." xxTemprly="temporarily" xxNotChOu=""Temporarily" means that the product has been added to someones shopping cart, but they have not checked out. If they do not complete the purchase, the product will be free in" xxChkBack=", so please check back." xxShrtWhl="a short while" xxPlease="Please" xxToRetrn="to return to the products page." xxPlsEntr="Please enter a value in the field" xxAlphaNu="Please enter only alphanumeric characters with no spaces in the field" xxShpDtls="If you set the shipping address, please complete all shipping details." xxShpDiff="Shipping Details. (If different from above)." xxNoMeth="There are no methods available for your shipping destination." xxPlsSlct="Please select a" xxName="Full Name" xxEmail="Email" xxAddress="Address" xxCity="City" xxZip="Zip" xxPhone="Phone" xxCountry="Country" xxWntRem="Do you want us to remember your customer details for the next time you visit?\n\nOk=Yes, Cancel=No." xxCstDtl="Please enter your customer details." xxAddInf="Additional Information" xxRemMe="Remember me." xxOpCook="Use this option to write a cookie to allow us to prepopulate this form the next time you visit." xxNoPay="No Payment Methods Configured." xxClkCmp="Please click below to complete your transaction." xxPlsChz="Please choose one of the payment methods below." xxShpOpt="Please select a shipping option from those below." xxSryErr="Sorry, there was an error processing your request." xxChkCmp="Check totals and proceed to process payment." xxTotGds="Total Goods" xxShippg="Shipping" xxStaTax="State Tax" xxCntTax="Country Tax" xxGndTot="Grand Total" xxCrdNum="Card Number" xxExpEnd="Expires End" xxMonth="Month" xxYear="Year" xx34code="3 or 4 digit code from back of card" xxIfPres="(if present)" xxMstClk="You must click below to complete the checkout process." xxTrnRes="Transaction Result" xxOrdNum="Order Number" xxAutCod="Authorization Code" xxSorTrn="I'm sorry, there was a problem with your transaction." xxGoBack="Go Back and Try Again" xxNoStok="One or more of your update requests could not be completed as there is not sufficient stock." xxCODets="Details" xxCOName="Name" xxCOUPri="Unit Price" xxCOSel="Select" xxQuant="Quantity" xxTotal="Total" xxDelete="Delete" xxCntShp="Continue Shopping" xxUpdTot="Update Totals" xxSryEmp="There are currently no items in your shopping cart." xxPrsChk="Press checkout to enter your customer and shipping information." xxNoCats="This category is not currently available." xxClkCat="Please click on a category to view sub categories." xxAlProd="All Products" xxAlPrCa="View all products in all categories." xxNoPrds="No products are currently available in this category." xxClkPrd="Please click on a category to view products." xxPrdEnt="Please enter a value where indicated." xxPrdChs="Please choose from the available product options." xxPrd255="Please enter a maximum of 255 chars in the field indicated." xxPrice="Price" xxPrDets="Details" xxEmFrnd="
Email Friend
" xxCusDet="Customer Details" xxShpDet="Shipping Details" xxShpMet="Shipping Method" xxPrId="Product ID" xxPrNm="Product Name" xxUnitPr="Unit Price" xxOrdTot="Order Total" xxOrdStr="Order at your store" xxTnxOrd="Thank you for your order" xxTouSoo="We will be in touch as soon as possible about your order, the details of which are as follows:" xxAff1="Your affiliate link has just generated a sale totalling" xxAff2="Please note that this is for information only as commission is only paid on cleared funds." xxAff3="Affiliate partner sale" xxThnks="Thank You." xxThkYou="
Thank you for your purchase !

We will be in contact as soon as possible.

" xxThkErr="
Sorry, there seemed to be an error !

If you need any help with your purchase, then please be sure to contact us.

" xxRecEml="You will receive a copy of this receipt by email." xxPrev="Previous" xxNext="Next" xxSrchPr="Search Products" xxSrchFr="Search For" xxSrchMx="Max Price" xxSrchTp="Search Type" xxSrchAl="All words" xxSrchAn="Any word" xxSrchEx="Exact Phrase " xxSrchCt="In Category" xxSrchAC="All Categories" xxSrchNM="Sorry, no products matched your search." xxAffPrg="Affiliate Partners Program." xxWelcom="Welcome" xxAffLog="Your login is correct. Please wait while we forward you to view your account details." xxAffDts="Please enter your affiliate details." xxAffUse="I'm sorry, that affiliate ID is already in use. Please choose another." xxForAut="If you are not forwarded automatically, please" xxInform="Please note. By checking the "inform me" option, you will receive an email notification every time your affiliate link generates a sale." xxInfMe="Inform me" xxAffLI="Login to your affiliate account" xxAffID="Affiliate ID" xxBack="Back to Account Details" xxNewAct="Open new affiliate account" xxGotAct="For those who already have an affiliate account." xxAffNo="Sorry, we could not find your affiliate login / password." xxPwd="Password" xxTotTod="Total so far today" xxTotYes="Total yesterday" xxTotMTD="Total month to date" xxTotLM="Total last month" xxEdtAff="Edit Affiliate Details" xxAffLI1="To set up your affiliate link, use any page with a .asp extension, for instance" xxAffLI2="Please note that these totals are only provisional. Commission will only be paid on cleared funds, and sometimes sales are "charged back"." xxAffLI3="The above totals are for sales generated, not commission due." xxEFNam="Your Name" xxEFEm="Your Email" xxEFFEm="Your Friends Email" xxEFCmt="Your Comments" xxClsWin="Close Window" xxEFBlr="Let your friends know all about the great deals that are on offer at this site. Just fill in the details below and click "Send"." xxSearch="Search" xxOrdId="Order ID" xxInAssc="In Association with" xxTnkStr="Thank You For Shopping at Our Store" xxTnkWit="Thank you for shopping with" xxMerRef="Merchant's Reference" xxPlsNt1="Please take note of the above information, and quote the" xxPlsNt2="if you need to contact our store for any reason." xxOrdNIs="Your order number is" xxClkBck="Please Click Here to Head Back to Our Store" ' Please make sure this line is the last line in this file %> <% 'This code is copyright (c) Internet Business Solutions SL, all rights reserved. 'The contents of this file are protected under law as the intellectual property 'of Internet Business Solutions SL. Any use, reproduction, disclosure or copying 'of any kind without the express and written permission of Internet Business 'Solutions SL is forbidden. 'Author: Vince Reid, vince@virtualred.net Dim gasaReferer,gasaThisSite,datedelim Dim splitUSZones,countryCurrency,countryNumCurrency,useEuro,storeurl,stockManage,handling,handlingchargepercent,adminCanPostUser,packtogether,origZip,shipType,adminIntShipping,saveLCID,delccafter,adminTweaks,currRate1,currSymbol1,currRate2,currSymbol2,currRate3,currSymbol3,upsUser,upsPw,adminSecret,cardinalprocessor,cardinalmerchant,cardinalpwd Dim origCountry,origCountryCode,uspsUser,uspsPw,upsAccess,upsAccount,upsnegdrates,fedexaccount,fedexmeter,adminUnits,adminlanguages,adminlangsettings,useStockManagement,adminProdsPerPage,countryTax,countryTaxRate,currLastUpdate,currConvUser,currConvPw,emailAddr,sendEmail,emailObject,themailhost,theuser,thepass,catalogroot,adminAltRates,prodfilter,prodfiltertext,dosortby,sortoptions incfunctionsdefined=true : defimagejs="" function ip2long(ip2lip) ipret = -1 iparr = split(ip2lip, ".") if isarray(iparr) then if UBOUND(iparr)=3 then if isnumeric(iparr(0)) AND isnumeric(iparr(1)) AND isnumeric(iparr(2)) AND isnumeric(iparr(3)) then ipret = (iparr(0) * 16777216) + (iparr(1) * 65536) + (iparr(2) * 256) + (iparr(3)) end if end if end if ip2long = ipret end function if trim(request.querystring("PARTNER"))<>"" OR trim(request.querystring("REFERER"))<>"" then if expireaffiliate = "" then expireaffiliate=30 if trim(request.querystring("PARTNER"))<>"" then thereferer=trim(strip_tags2(request.querystring("PARTNER"))) else thereferer=trim(strip_tags2(request.querystring("REFERER"))) response.write "" end if if mysqlserver=true then sqlserver=true if sqlserver=true then datedelim = "'" else datedelim = "#" if giftcertificateid="" then giftcertificateid="giftcertificate" if donationid="" then donationid="donation" codestr="2952710692840328509902143349209039553396765" if emailencoding="" then emailencoding="iso-8859-1" if adminencoding="" then adminencoding="iso-8859-1" if SESSION("languageid") <> "" then languageid=SESSION("languageid") if nomarkup=TRUE then sstrong="" : estrong="" else sstrong="" : estrong="" if customeraccounturl="" then customeraccounturl="clientlogin.asp" redasterix="*" function getadminsettings() if NOT alreadygotadmin then sSQL = "SELECT adminEmail,emailObject,smtpserver,emailUser,emailPass,adminEmailConfirm,adminTweaks,adminProdsPerPage,adminStoreURL,adminHandling,adminHandlingPercent,adminPacking,adminDelCC,adminUSZones,adminStockManage,adminShipping,adminIntShipping,adminCanPostUser,adminZipCode,adminUnits,adminUSPSUser,adminUSPSpw,adminUPSUser,adminUPSpw,adminUPSAccess,adminUPSAccount,adminUPSNegotiated,FedexAccountNo,FedexMeter,adminlanguages,adminlangsettings,currRate1,currSymbol1,currRate2,currSymbol2,currRate3,currSymbol3,currConvUser,currConvPw,currLastUpdate,adminSecret,countryLCID,countryCurrency,countryNumCurrency,countryName,countryCode,countryTax,cardinalProcessor,cardinalMerchant,cardinalPwd,catalogRoot,adminAltRates,prodFilter,prodFilterText,prodFilterText2,prodFilterText3,sortOrder,sortOptions FROM admin INNER JOIN countries ON admin.adminCountry=countries.countryID WHERE adminID=1" rs.Open sSQL,cnn,0,1 splitUSZones = (Int(rs("adminUSZones"))=1) if orlocale<>"" then Session.LCID = orlocale elseif rs("countryLCID")<>0 AND rs("countryLCID")<>"" then on error resume next err.number = 0 Session.LCID = cint(rs("countryLCID")) if err.number<>0 then response.write "The Locale ID (LCID) " & rs("countryLCID") & " is not available on this server. Please use the orlocale setting to override this.
" on error goto 0 end if saveLCID = Session.LCID countryCurrency = rs("countryCurrency") countryNumCurrency = rs("countryNumCurrency") if orcurrencyisosymbol<>"" then countryCurrency=orcurrencyisosymbol useEuro = (countryCurrency="EUR") storeurl = rs("adminStoreURL") stockManage = rs("adminStockManage") useStockManagement = (rs("adminStockManage")<>0) adminProdsPerPage = rs("adminProdsPerPage") countryTax=cDbl(rs("countryTax")) countryTaxRate=cDbl(rs("countryTax")) delccafter = Int(rs("adminDelCC")) handling = cDbl(rs("adminHandling")) handlingchargepercent = cDbl(rs("adminHandlingPercent")) adminCanPostUser = trim(rs("adminCanPostUser")) packtogether = Int(rs("adminPacking"))=1 origZip = rs("adminZipCode") shipType = Int(rs("adminShipping")) adminIntShipping = Int(rs("adminIntShipping")) origCountry = rs("countryName") origCountryCode = rs("countryCode") uspsUser = rs("adminUSPSUser") uspsPw = rs("adminUSPSpw") upsUser = upsdecode(rs("adminUPSUser"), "") upsPw = upsdecode(rs("adminUPSpw"), "") upsAccess = rs("adminUPSAccess") upsAccount = rs("adminUPSAccount") upsnegdrates = (cint(rs("adminUPSNegotiated"))<>0) fedexaccount = rs("FedexAccountNo") fedexmeter = rs("FedexMeter") adminUnits=Int(rs("adminUnits")) emailObject = rs("emailObject") themailhost = trim(rs("smtpserver")&"") theuser = trim(rs("emailUser")&"") thepass = trim(rs("emailPass")&"") emailAddr = rs("adminEmail") sendEmail = Int(rs("adminEmailConfirm"))=1 adminTweaks = Int(rs("adminTweaks")) adminlanguages = Int(rs("adminlanguages")) adminlangsettings = Int(rs("adminlangsettings")) currRate1=cDbl(rs("currRate1")) currSymbol1=trim(rs("currSymbol1")&"") currRate2=cDbl(rs("currRate2")) currSymbol2=trim(rs("currSymbol2")&"") currRate3=cDbl(rs("currRate3")) currSymbol3=trim(rs("currSymbol3")&"") currConvUser=rs("currConvUser") currConvPw=rs("currConvPw") currLastUpdate=rs("currLastUpdate") adminSecret=rs("adminSecret") cardinalprocessor = rs("cardinalProcessor") cardinalmerchant = rs("cardinalMerchant") cardinalpwd = rs("cardinalPwd") catalogroot = rs("catalogRoot") adminAltRates = rs("adminAltRates") dosortby = rs("sortOrder") sortoptions = rs("sortOptions") prodfilter = rs("prodFilter") prodfiltertext = rs(getlangid("prodFilterText",262144)) rs.Close end if ' Overrides if orstoreurl<>"" then storeurl=orstoreurl if (left(LCase(storeurl),7) <> "http://") AND (left(LCase(storeurl),8) <> "https://") then storeurl = "http://" & storeurl if Right(storeurl,1) <> "/" then storeurl = storeurl & "/" if oremailaddr<>"" then emailAddr=oremailaddr if adminIntShipping="" then adminIntShipping=0 ' failsafe getadminsettings=TRUE end function function strip_tags2(mistr) Set toregexp = new RegExp toregexp.pattern = "<[^>]+>" toregexp.ignorecase=TRUE toregexp.global=TRUE mistr = toregexp.replace(mistr&"","") Set toregexp = Nothing strip_tags2 = replace(mistr,"""",""") end function function replaceaccents(ByVal surl) surl = replace(surl, "", "a") surl = replace(surl, "", "a") surl = replace(surl, "", "c") surl = replace(surl, "", "e") surl = replace(surl, "", "e") surl = replace(surl, "", "e") surl = replace(surl, "", "e") surl = replace(surl, "", "i") surl = replace(surl, "", "i") surl = replace(surl, "", "o") surl = replace(surl, "", "o") surl = replace(surl, "", "o") surl = replace(surl, "", "u") surl = replace(surl, "", "u") surl = replace(surl, "", "u") replaceaccents = replace(surl, "", "n") end function function cleanforurl(ByVal surl) if isempty(urlfillerchar) then urlfillerchar="_" Set toregexp = new RegExp toregexp.pattern = "<[^>]+>" toregexp.ignorecase=TRUE toregexp.global=TRUE surl = replace(lcase(toregexp.replace(surl, ""))," ",urlfillerchar) surl = replaceaccents(surl) toregexp.pattern = "[^a-z\"&urlfillerchar&"0-9]" cleanforurl = toregexp.replace(surl, "") end function function vrxmlencode(ByVal xmlstr) xmlstr = replace(xmlstr, "&", "&") xmlstr = replace(xmlstr, "<", "<") xmlstr = replace(xmlstr, ">", ">") xmlstr = replace(xmlstr, "'", "'") vrxmlencode = replace(xmlstr, """", """) end function function xmlencodecharref(ByVal xmlstr) xmlstr = replace(xmlstr&"", "®", "") xmlstr = replace(xmlstr, "&", "&") xmlstr = replace(xmlstr, "<", "<") xmlstr = replace(xmlstr, "", "") xmlstr = replace(xmlstr, ">", ">") tmp_str="" for ii=1 to len(xmlstr) ch_code=Asc(Mid(xmlstr,ii,1)) if ch_code<=130 then tmp_str=tmp_str & Mid(xmlstr,ii,1) next xmlencodecharref = tmp_str end function function getlangid(col, bfield) if languageid="" or languageid=1 then getlangid = col else if (adminlangsettings AND bfield)<>bfield then getlangid = col else getlangid = col & languageid end if end function function upsencode(thestr, propcodestr) if propcodestr="" then localcodestr=codestr else localcodestr=propcodestr newstr="" for index=1 to Len(localcodestr) thechar = Mid(localcodestr,index,1) if NOT IsNumeric(thechar) then thechar = asc(thechar) MOD 10 end if newstr = newstr & thechar next localcodestr = newstr do while Len(localcodestr) < 40 localcodestr = localcodestr & localcodestr loop newstr="" for index=1 to Len(thestr) thechar = Mid(thestr,index,1) newstr=newstr & Chr(asc(thechar)+Int(Mid(localcodestr,index,1))) next upsencode=newstr end function function upsdecode(thestr, propcodestr) if propcodestr="" then localcodestr=codestr else localcodestr=propcodestr newstr="" for index=1 to Len(localcodestr) thechar = Mid(localcodestr,index,1) if NOT IsNumeric(thechar) then thechar = asc(thechar) MOD 10 end if newstr = newstr & thechar next localcodestr = newstr do while Len(localcodestr) < 40 localcodestr = localcodestr & localcodestr loop if IsNull(thestr) then upsdecode="" else newstr="" for index=1 to Len(thestr) thechar = Mid(thestr,index,1) newstr=newstr & Chr(asc(thechar)-Int(Mid(localcodestr,index,1))) next upsdecode=newstr end if end function function VSUSDate(thedate) if mysqlserver=true then VSUSDate = DatePart("yyyy",thedate) & "-" & DatePart("m",thedate) & "-" & DatePart("d",thedate) elseif sqlserver=true then VSUSDate = right(DatePart("yyyy",thedate),2) & IIfVr(DatePart("m",thedate)<10,"0","") & DatePart("m",thedate) & IIfVr(DatePart("d",thedate)<10,"0","") & DatePart("d",thedate) else VSUSDate = DatePart("m",thedate) & "/" & DatePart("d",thedate) & "/" & DatePart("yyyy",thedate) end if end function function VSUSDateTime(thedate) if mysqlserver=true then VSUSDateTime = DatePart("yyyy",thedate) & "-" & DatePart("m",thedate) & "-" & DatePart("d",thedate) & " " & DatePart("h",thedate) & ":" & DatePart("n",thedate) & ":" & DatePart("s",thedate) elseif sqlserver=true then VSUSDateTime = right(DatePart("yyyy",thedate),2) & IIfVr(DatePart("m",thedate)<10,"0","") & DatePart("m",thedate) & IIfVr(DatePart("d",thedate)<10,"0","") & DatePart("d",thedate) & " " & DatePart("h",thedate) & ":" & DatePart("n",thedate) & ":" & DatePart("s",thedate) else VSUSDateTime = DatePart("m",thedate) & "/" & DatePart("d",thedate) & "/" & DatePart("yyyy",thedate) & " " & DatePart("h",thedate) & ":" & DatePart("n",thedate) & ":" & DatePart("s",thedate) end if end function function FormatEuroCurrency(amount) if overridecurrency=true then if orcpreamount=true then FormatEuroCurrency = orcsymbol & FormatNumber(amount,orcdecplaces) else FormatEuroCurrency = FormatNumber(amount,orcdecplaces) & orcsymbol else if useEuro then FormatEuroCurrency = FormatNumber(amount,2) & " €" else FormatEuroCurrency = FormatCurrency(amount,-1,-2,0,-2) end if end function function FormatCurrencyZeroDP(amount) if overridecurrency=true then if orcpreamount=true then FormatCurrencyZeroDP = orcsymbol & FormatNumber(amount,0) else FormatCurrencyZeroDP = FormatNumber(amount,0) & orcsymbol else if useEuro then FormatCurrencyZeroDP = FormatNumber(amount,0) & " €" else FormatCurrencyZeroDP = FormatCurrency(amount,0,-2,0,-2) end if end function function FormatEmailEuroCurrency(amount) if overridecurrency=true then if orcpreamount=true then FormatEmailEuroCurrency = orcemailsymbol & FormatNumber(amount,orcdecplaces) else FormatEmailEuroCurrency = FormatNumber(amount,orcdecplaces) & orcemailsymbol else if useEuro then FormatEmailEuroCurrency = FormatNumber(amount,2) & " Euro" else FormatEmailEuroCurrency = FormatCurrency(amount,-1,-2,0,-2) end if end function sub do_stock_management(smOrdId) end sub sub stock_subtract(smOrdId) smOrdId = trim(smOrdId) if NOT IsNumeric(smOrdId) OR smOrdId="" then smOrdId=0 if stockManage <> 0 then sSQL="SELECT cartID,cartProdID,cartQuantity,pStockByOpts FROM cart INNER JOIN products ON cart.cartProdID=products.pID WHERE cartOrderID=" & smOrdId rs2.Open sSQL,cnn,0,1 do while NOT rs2.EOF if cint(rs2("pStockByOpts")) <> 0 then sSQL = "SELECT coOptID FROM cartoptions INNER JOIN (options INNER JOIN optiongroup ON options.optGroup=optiongroup.optGrpID) ON cartoptions.coOptID=options.optID WHERE optType IN (-4,-2,-1,1,2,4) AND coCartID=" & rs2("cartID") rs.Open sSQL,cnn,0,1 do while NOT rs.EOF sSQL = "UPDATE options SET optStock=optStock-"&rs2("cartQuantity")&" WHERE optID="&rs("coOptID") cnn.Execute(sSQL) rs.MoveNext loop rs.Close else sSQL = "UPDATE products SET pInStock=pInStock-"&rs2("cartQuantity")&" WHERE pID='"&rs2("cartProdID")&"'" cnn.Execute(sSQL) end if rs2.MoveNext loop rs2.Close end if end sub sub release_stock(smOrdId) if stockManage <> 0 then sSQL="SELECT cartID,cartProdID,cartQuantity,pStockByOpts FROM (cart LEFT JOIN orders ON cart.cartOrderID=orders.ordID) INNER JOIN products ON cart.cartProdID=products.pID WHERE ordAuthStatus<>'MODWARNOPEN' AND cartOrderID=" & smOrdId rs2.Open sSQL,cnn,0,1 do while NOT rs2.EOF if cint(rs2("pStockByOpts"))<>0 then Set clientRS = Server.CreateObject("ADODB.RecordSet") sSQL = "SELECT coOptID FROM cartoptions INNER JOIN (options INNER JOIN optiongroup ON options.optGroup=optiongroup.optGrpID) ON cartoptions.coOptID=options.optID WHERE optType IN (-4,-2,-1,1,2,4) AND coCartID=" & rs2("cartID") clientRS.Open sSQL,cnn,0,1 do while NOT clientRS.EOF sSQL = "UPDATE options SET optStock=optStock+"&rs2("cartQuantity")&" WHERE optID="&clientRS("coOptID") cnn.Execute(sSQL) clientRS.MoveNext loop clientRS.Close Set clientRS = nothing else sSQL = "UPDATE products SET pInStock=pInStock+"&rs2("cartQuantity")&" WHERE pID='"&rs2("cartProdID")&"'" cnn.Execute(sSQL) end if rs2.MoveNext loop rs2.Close end if end sub Sub productdisplayscript(doaddprodoptions,isdetail) if currSymbol1<>"" AND currFormat1="" then currFormat1="%s " & currSymbol1 & "" if currSymbol2<>"" AND currFormat2="" then currFormat2="%s " & currSymbol2 & "" if currSymbol3<>"" AND currFormat3="" then currFormat3="%s " & currSymbol3 & "" if NOT (pricecheckerisincluded=TRUE) then ' { if SESSION("clientID")<>"" AND (wishlistonproducts OR isdetail) then %> <% end if if notifybackinstock then %>
<% end if %>" /><% pricecheckerisincluded=TRUE end if ' } pricecheckerisincluded end sub sub updatepricescript(doaddprodoptions,thetax,isdetail) prodoptions="" sSQL = "SELECT poOptionGroup,optType,optFlags FROM prodoptions INNER JOIN optiongroup ON optiongroup.optGrpID=prodoptions.poOptionGroup WHERE poProdID='"&escape_string(rs("pID"))&"' AND NOT (poProdID='"&escape_string(giftcertificateid)&"' OR poProdID='"&escape_string(donationid)&"') ORDER BY poID" rs2.Open sSQL,cnn,0,1 if NOT rs2.EOF then prodoptions=rs2.getrows rs2.Close %> <% End Sub function checkDPs(currcode) if currcode="JPY" then checkDPs=0 else checkDPs=2 end function Sub checkCurrencyRates(currConvUser,currConvPw,currLastUpdate,byRef currRate1,currSymbol1,byRef currRate2,currSymbol2,byRef currRate3,currSymbol3) ccsuccess=TRUE if currConvUser<>"" AND currConvPw<>"" AND currLastUpdate < Now()-1 then sstr = "" if currSymbol1<>"" then sstr = sstr & "&curr=" & currSymbol1 if currSymbol2<>"" then sstr = sstr & "&curr=" & currSymbol2 if currSymbol3<>"" then sstr = sstr & "&curr=" & currSymbol3 if sstr="" then cnn.Execute("UPDATE admin SET currLastUpdate="&datedelim&VSUSDate(Now())&datedelim) exit sub end if sstr = "?source=" & countryCurrency & "&user=" & currConvUser & "&pw=" & currConvPw & sstr xmlDoc="xml" if callxmlfunction("http://www.ecommercetemplates.com/currencyxml.asp" & sstr, "X", xmlDoc, "", "Msxml2.ServerXMLHTTP", errormsg, FALSE) then Set t2 = xmlDoc.getElementsByTagName("currencyRates").Item(0) for j = 0 to t2.childNodes.length - 1 Set n = t2.childNodes.Item(j) if n.nodename="currError" then response.write n.firstChild.nodeValue ccsuccess=FALSE elseif n.nodename="selectedCurrency" then currRate = 0 for i = 0 To n.childNodes.length - 1 Set e = n.childNodes.Item(i) if e.nodeName="currSymbol" then currSymbol = e.firstChild.nodeValue elseif e.nodeName="currRate" then currRate = e.firstChild.nodeValue end if next saveLCID = Session.LCID Session.LCID = 1033 if currSymbol1 = currSymbol then currRate1 = cDbl(currRate) cnn.Execute("UPDATE admin SET currRate1="&currRate&" WHERE adminID=1") end if if currSymbol2 = currSymbol then currRate2 = cDbl(currRate) cnn.Execute("UPDATE admin SET currRate2="&currRate&" WHERE adminID=1") end if if currSymbol3 = currSymbol then currRate3 = cDbl(currRate) cnn.Execute("UPDATE admin SET currRate3="&currRate&" WHERE adminID=1") end if Session.LCID = saveLCID end if next if ccsuccess then cnn.Execute("UPDATE admin SET currLastUpdate="&datedelim&VSUSDate(Now())&datedelim) end if set xmlDoc = nothing end if End Sub function IIfVr(theExp,theTrue,theFalse) if theExp then IIfVr=theTrue else IIfVr=theFalse end function function IIfVs(theExp,theTrue) if theExp then IIfVs=theTrue else IIfVs="" end function function getsectionids(thesecid, delsections) getsectionids="" secarr = split(thesecid, ",") secid = "" : addcomma = "" : addcomma2 = "" for each sect in secarr if isnumeric(trim(sect)) then secid = secid & addcomma & sect : addcomma = "," next if secid="" then secid="0" iterations = 0 iteratemore=TRUE if SESSION("clientLoginLevel")<>"" then minloglevel=SESSION("clientLoginLevel") else minloglevel=0 if delsections then nodel = "" else nodel = "sectionDisabled<="&minloglevel&" AND " do while iteratemore AND iterations<10 sSQL2 = "SELECT DISTINCT sectionID,rootSection FROM sections WHERE " & nodel & "(topSection IN ("&secid&")" if iterations=0 then sSQL2=sSQL2 & " OR (sectionID IN ("&secid&") AND rootSection=1))" else sSQL2=sSQL2 & ")" secid = "" iteratemore=FALSE rs2.Open sSQL2,cnn,0,1 addcomma = "" do while NOT rs2.EOF if rs2("rootSection")=0 then iteratemore=TRUE secid = secid & addcomma & rs2("sectionID") addcomma = "," else getsectionids = getsectionids & addcomma2 & rs2("sectionID") addcomma2 = "," end if rs2.MoveNext loop rs2.Close iterations = iterations + 1 loop if getsectionids="" then getsectionids = "0" end function function callxmlfunction(cfurl, cfxml, byref res, cfcert, cxfobj, byref cferr, settimeouts) if proxyserver<>"" AND cxfobj="Msxml2.ServerXMLHTTP" then set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") objHttp.setProxy 2, proxyserver else set objHttp = Server.CreateObject(cxfobj) end if if settimeouts then if settimeouts>10 then objHttp.setTimeouts settimeouts*1000, settimeouts*1000, settimeouts*1000, settimeouts*1000 else objHttp.setTimeouts 30000, 30000, 0, 0 end if objHttp.open "POST", cfurl, false hascontenttype=FALSE if isarray(xmlfnheaders) then for each objitem in xmlfnheaders objHttp.setRequestHeader objitem(0), objitem(1) if objitem(0)="Content-Type" then hascontenttype=TRUE next end if if NOT hascontenttype then objHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" ' if cfcert<>"" then objHttp.setOption 3, "LOCAL_MACHINE\My\" & cfcert if cfcert<>"" then objHttp.SetClientCertificate("LOCAL_MACHINE\My\" & cfcert) on error resume next err.number=0 objHttp.Send cfxml errnum=err.number errdesc=err.description on error goto 0 if errnum <> 0 then cferr = "Error, couldn't connect to "&cfurl&" (" & errnum & ").
" & errdesc callxmlfunction=FALSE elseif objHttp.status <> 200 then cferr = "Error, invalid response from "&cfurl&" (" & objHttp.status & ")." callxmlfunction=FALSE else if res="xml" then set res=objHttp.responseXML else res = objHttp.responseText callxmlfunction=TRUE end If set objHttp = nothing end function function getpayprovdetails(ppid,ppdata1,ppdata2,ppdata3,ppdemo,ppmethod) if NOT isnumeric(ppid) OR ppid="" then ppid=0 sSQL = "SELECT payProvData1,payProvData2,payProvData3,payProvDemo,payProvMethod FROM payprovider WHERE payProvEnabled=1 AND payProvID=" & replace(ppid, "'", "") rs.Open sSQL,cnn,0,1 if NOT rs.EOF then ppdata1 = trim(rs("payProvData1")&"") ppdata2 = trim(rs("payProvData2")&"") ppdata3 = trim(rs("payProvData3")&"") ppdemo=(cint(rs("payProvDemo"))=1) ppmethod=Int(rs("payProvMethod")) getpayprovdetails=TRUE else getpayprovdetails=FALSE end if rs.Close end function sub writehiddenvar(hvname,hvval) response.write "" & vbCrLf end sub function whv(hvname,hvval) whv = "" & vbCrLf end function sub print(ps) response.write ps end sub sub writehiddenidvar(hvname,hvval) response.write "" & vbCrLf end sub function ppsoapheader(username, password, threetokenhash) ppsoapheader = "<" & "?xml version=""1.0"" encoding=""utf-8""?>" & IIfVr(instr(username,"@AB@")=0, "" & username & "" & password & "" & IIfVr(threetokenhash<>"",""&threetokenhash&"",""), ""&replace(username,"@AB@","")&"") & "" end function function getoptpricediff(opd, theid, theexp, pprice, ByRef pstock) getoptpricediff = cdbl(opd) if theexp<>"" AND Left(theexp,1)<>"!" then theexp = replace(theexp, "%s", theid) if InStr(theexp, " ") > 0 then ' Search and replace exparr = split(theexp, " ", 2) theid = replace(theid, exparr(0), exparr(1), 1, 1) else theid = theexp end if sSQL = "SELECT "&WSP&"pPrice,pInStock FROM products WHERE pID='"&escape_string(theid)&"'" rs3.Open sSQL,cnn,0,1 if NOT rs3.EOF then getoptpricediff = rs3("pPrice")-pprice : pstock = rs3("pInStock") rs3.Close end if end function sub addtoaltids(theexp, byref altidarr, byref altids) theexp = trim(theexp&"") if (theexp<>"") AND Left(theexp,1)<>"!" then if NOT isarray(altidarr) then altidarr = split(trim(altids)) altids = "" end if for each theid in altidarr theexpa = replace(theexp, "%s", theid) if InStr(theexpa, " ") > 0 then ' Search and replace exparr = split(theexpa, " ", 2) theid = replace(theid, exparr(0), exparr(1), 1, 1) else theid = theexpa end if altids = altids & theid & " " next end if end sub optjsunique="," sub addtooptionsjs(byref optionsjs, isdetail, origoptpricediff) if instr(optjsunique,","&rs2("optID")&",")=0 then if useStockManagement then optionsjs = optionsjs & "oS["&rs2("optID")&"]="&rs2("optStock")&";" session.LCID=1033 if (trim(rs2("optRegExp")&"")="" OR left(trim(rs2("optRegExp")&""),1)="!") AND origoptpricediff<>0 then optionsjs = optionsjs & "op["&rs2("optID")&"]="&origoptpricediff&";" session.LCID=saveLCID if trim(rs2("optRegExp")&"")<>"" AND left(trim(rs2("optRegExp")&""),1)<>"!" then optionsjs = optionsjs & "or["&rs2("optID")&"]='"&rs2("optRegExp")&"';" optionsjs = optionsjs & "ot["&rs2("optID")&"]="""&jscheck(rs2(getlangid("optName",32))&"")&""";" if trim(rs2("optAlt"&IIfVr(isdetail,"Large","")&"Image")&"")<>"" then optionsjs = optionsjs & "aIM["&rs2("optID")&"]='"&rs2("optAlt"&IIfVr(isdetail,"Large","")&"Image")&"';" optionsjs = optionsjs & vbCrLf optjsunique=optjsunique&rs2("optID")&"," end if end sub function displayproductoptions(grpnmstyle,grpnmstyleend,byRef optpricediff,thetax,isdetail, byRef hasmulti, byRef optionsjs) optionshtml="" optionsjs="" altids=rs("pID") optpricediff=0 pricediff=0 hasmulti=FALSE savedefimagejs=defimagejs saveoptionsjs=optionsjs saveoptjsunique=optjsunique for rowcounter=0 to UBOUND(prodoptions,2) opthasstock=FALSE sSQL="SELECT optID,"&getlangid("optName",32)&","&getlangid("optGrpName",16)&","&OWSP&"optPriceDiff,optType,optGrpSelect,optFlags,optStock,optPriceDiff AS optDims,optDefault,optAlt"&IIfVr(isdetail,"Large","")&"Image,optRegExp FROM options INNER JOIN optiongroup ON options.optGroup=optiongroup.optGrpID WHERE optGroup="&prodoptions(0,rowcounter)&" ORDER BY optID" rs2.Open sSQL,cnn,1,1 if NOT rs2.EOF then if abs(int(rs2("optType")))=3 then opthasstock=true fieldHeight = cInt((cDbl(rs2("optDims"))-Int(rs2("optDims")))*100.0) optionshtml = optionshtml & "
"&grpnmstyle&":"&grpnmstyleend&" " if fieldHeight<>1 then optionshtml = optionshtml & "" else optionshtml = optionshtml & "" end if optionshtml = optionshtml & "
"&grpnmstyle&rs2(getlangid("optGrpName",16))&":"&grpnmstyleend&" " index = 0 do while not rs2.EOF origoptpricediff = getoptpricediff(rs2("optPriceDiff"), rs("pID"), trim(rs2("optRegExp")&""), rs("pPrice"), stocknotused) call addtoaltids(rs2("optRegExp"), altidarr, altids) optionshtml = optionshtml & "0 then optionshtml = optionshtml & "checked=""checked"" " optionshtml = optionshtml & "value='"&rs2("optID")&"' />0 AND rs2("optStock")<=0 AND trim(rs2("optRegExp")&"")="" then optionshtml = optionshtml & " class=""oostock""" else opthasstock=true optionshtml = optionshtml & ">"&rs2(getlangid("optName",32)) if hideoptpricediffs<>true AND origoptpricediff<>0 AND trim(rs2("optRegExp")&"")="" then optionshtml = optionshtml & " (" if origoptpricediff > 0 then optionshtml = optionshtml & "+" if (rs2("optFlags") AND 1) = 1 then pricediff = (rs("pPrice")*origoptpricediff)/100.0 else pricediff = origoptpricediff if showtaxinclusive=2 AND (rs("pExemptions") AND 2)<>2 then pricediff=pricediff+(pricediff*thetax/100.0) optionshtml = optionshtml & FormatEuroCurrency(pricediff)&")" if rs2("optDefault")<>0 then optpricediff = optpricediff + pricediff end if if useStockManagement AND showinstock=TRUE AND noshowoptionsinstock<>TRUE AND cint(rs("pStockByOpts"))<>0 then optionshtml = optionshtml & replace(xxOpSkTx, "%s", rs2("optStock")) optionshtml = optionshtml & "" if (rs2("optFlags") AND 4) <> 4 then optionshtml = optionshtml & "
"&vbCrLf index = index + 1 call addtooptionsjs(optionsjs, isdetail, origoptpricediff) rs2.MoveNext loop set altidarr = nothing optionshtml = optionshtml & "
" index = 0 do while not rs2.EOF stocklevel=rs2("optStock") origoptpricediff = getoptpricediff(rs2("optPriceDiff"), rs("pID"), trim(rs2("optRegExp")&""), rs("pPrice"), stocklevel) call addtoaltids(rs2("optRegExp"), altidarr, altids) if useStockManagement AND cint(rs("pStockByOpts"))<>0 AND stocklevel<=0 AND trim(rs2("optRegExp")&"")="" then oostock=TRUE else oostock=FALSE if (index MOD multipurchasecolumns) = 0 then optionshtml = optionshtml & "" optionshtml = optionshtml & "" index = index + 1 if (index MOD multipurchasecolumns) = 0 then optionshtml = optionshtml & "" call addtooptionsjs(optionsjs, isdetail, origoptpricediff) rs2.MoveNext loop if (index MOD multipurchasecolumns) <> 0 then do while (index MOD multipurchasecolumns) <> 0 if index>=multipurchasecolumns then optionshtml = optionshtml & "" index = index + 1 loop if ((index MOD multipurchasecolumns) = 0) then optionshtml = optionshtml & "" end if hasmulti = 1 optionshtml = optionshtml & "
" if trim(rs2("optAlt"&IIfVr(isdetail,"Large","")&"Image")&"")<>"" then optionshtml = optionshtml & "  " optionshtml = optionshtml & "  " optionshtml = optionshtml & "
"&grpnmstyle&":"&grpnmstyleend&" ", "") & "
ES Exhibition
June 5, 2006

The Emergency Services Show 2006, which takes place at The Royal Horticultural Halls, London from 19–20 October, will provide visitors and exhibitors with access to a host of primary and secondary responders, agencies, independent organizations and specialist equipment suppliers from all over the UK. With access to all the latest information under one roof, operational responders and key decision makers from all Category 1, 2 and other response organizations will have a critical opportunity to share new concepts, technologies and techniques to benefit and improve theirs and others’ planning and business operations. Organized by Emergency Services (MMC) Ltd, publisher of Emergency Services Times and its sister company magazine Fire Times, The Emergency Services Show 2006 will include a high profile conference and a wide range of exhibitor stands. For more information please visit www.theemergencyservicesshow.inf.

Go to topGo to top
Award for SDP
May 9, 2006

Keela is delighted to announce that they have recently been awarded by the APPSS(Association of Police & Public Security Suppliers) “High Commendation for Innovation”, for our unique, innovative System Dual Protection.

Award“We are obviously delighted with this award and the endorsement from such a prestigious establishment. Even more so, as to our knowledge, this is the first time an outdoor clothing company has received such an honor.”
Arlene Kidd, Marketing Manager

To be considered for this award, the criteria required, is that a product must have been used successfully by the Police Force for a minimum duration of 2 years.

Several years ago South Yorkshire Police had a problem with their wet weather clothing. Condensation formed in both wet and dry conditions and despite the jackets being expensive and claiming to have ‘breathability’, there were many complaints from the wearers. After having trialed our jackets using the SDP system, they have found exceptional wearer comfort in both wet and dry weather conditions and complaints have now changed to praise.

System Dual Protection (SDP) uses two layers of waterproof, breathable fabric with an air gap in between. It is therefore not only waterproof, windproof and breathable, but also has the ability to transport sweat away from the body, working in both wet and cold conditions to keep you dry and comfortable.

System Dual Protection is now used by Police Forces throughout the UK and is the preferred choice of many specialist units including Anti-terrorist, firearms, and dog sections etc…

Photo: Award Ceremony:
Lord Mackenzie presents Arlene Kidd (Keela) and Blane Young(S Yorkshire Police) with Award.

Go to topGo to top
Queens Award for Innovation
May 9, 2006

AwardFor over 30 years, The Ardmel Group, which includes Keela, has been at the forefront of global innovation in garment construction. In April 2006, Rube Fernando, Director, on behalf of the Ardmel Group, received the Queens award for Innovation. This was awarded in recognition of the technological advancement Ardmel has made in garment construction by using sewing and fusion solutions combined with adhesive technology. In particular, the latest project, the Advanced Construction Technology (ACT), which includes Ultrasonic cutting & sewing systems, Hot Presses and Lasers.

Photo: Christine May (MP) with Keela Team

Go to topGo to top
SCHOOL OPENING: Life After The Tsunami
March 14, 2006

The tsunami which hit Asia in the early hours of the morning on Boxing Day 2004 wiped out towns and communities, claimed hundreds of thousands of lives and left millions devastated in its wake. 15 months on, Keela are able to share their success story, showing how a little can go a long way in helping towards rebuilding a community torn apart and providing hope for the future.

Thank you to donatorsEven before the true extent of the damage caused by the Asian tsunami became apparent, aid began pouring in. The world was shocked by such a tragic event and wanted to support those affected in any way possible. For the Ardmel Group including Keela, having close links with Sri Lanka meant an even greater desire to help out, and so the Ardmel/Keela Tsunami Appeal was launched.

The main aim of the Appeal was for a mid to long-term plan, helping a community to cope with the aftermath of the tsunami, even after the cameras had stopped rolling. Keela planned to be involved in all stages of this appeal from collecting, overseeing and organizing the building work. It was hoped that this would ensure aid was not wasted on unnecessary administration costs, and would enable contributors to see exactly where every penny had been spent. By dealing directly with Sri Lanka through their contacts, Keela was able to cut out much of the red tape and bureaucracy.

In the months following the tsunami Keela put a great deal of effort in to raising money through collections and charity events, with both staff and customers helping out. Local councils, Mountain Rescue Teams and schools also showed their generosity and within 12 months a staggering £80,000 had been raised. Every penny of the money collected was put into the Tsunami Appeal project and work on the first stage of building a new school was soon well underway.

After months of intensive organization and building work, and thanks to the tremendous efforts of all involved, the project finally became a reality with the completion of Midigama Primary School in Welligama on the 2nd March 2006. The original primary school was completely destroyed by the tsunami and so the pupils relocated to Midigama.

For children from the affected neighboring villages the new school will provide fantastic facilities and exciting new opportunities. Currently classrooms are bursting at the seams and pupils have to wait their turn for lessons due to shortages of space at Midigama. The new school has six large classrooms, a library, home economics room, computer room, toilet block and staff room.

By helping a small section of the community affected by the tragic events at the end of 2004, and providing a means of education for the local children to improve their outlook for the future, Ardmel have proved that a little can go a long way, and that working together can help make a difference in people’s lives. Charity at a grassroots level really does work!

 Fundraising and work for the Ardmel/Keela Tsunami Appeal will be ongoing, and Keela hope to continue with their success story long into the future.

For further information please contact Keela.

Go to topGo to top

Saraid Polar Challenge
March 7, 2006

Stefan Hopkins the Founder and Trustee of the International Disaster Response Team S.A.R.A.I.D. (Search And Rescue Assistance In Disasters) www.saraid.co.uk is attempting "The Toughest Race in the World" The 2006 Polar Challenge.

Distance: 350 miles
Temperature: - 40c
Time: Approx 14 days
A marathon every day,
Pulling a 16 stone sledge

He must be mad!!!!!

Last year alone, SARAID provided Rescue teams free of charge to Sri Lanka following the Tsunami and Pakistan following the earthquake in October.

We never know when the next disaster will strike so please be generous and support this wonderful British charity.

For further details on how to support Stefan contact:
Phone: 07721 618705
Fax: 01452 529988
Email: stefanhopkins@hotmail.com

Go to topGo to top
Outdoor Retailer Winter Market 2006

January 28-31, 2006
Salt Palace Convention Center, Salt Lake City, Utah

It’s OR time again! We’ll be there with kilts on and we’d love to see you at the booth.

This season we’ll be showcasing our newest, most lightweight dual-protection jacket yet, the Cumulus. It’s streamlined features and fit for movement cut are sure to make this our next best-selling piece. Come see what all the buzz is about.

The Comparator, our ultimate portable breathability test will also be on-hand and in-action. Find out what it means to be Real Dry inside a waterproof jacket. Bring your own jacket to test against ours. You’ll win $ if your jacket comes out drier on the inside. Come write an order and finally outwit the Storm Within with our gear!

We’re proud to announce that our brand new website, keelausa.com, will be up for the show. Once you’re home you can review the line, place an order, enjoy some stunning backcountry photography and find out more about Keela, all from your desktop. We’re partnering with backcountry photographer Brandon Andre for the images on our website, and think you’ll find the gallery of his images a real treat.

You can find us at:

Booth #86 next to the Ballroom
Salt Palace Convention Center

Please contact for appointments and information.

You can also reach us at 510 526 4065

Hope to see you there!

Go to topGo to top

News from Headquarters: Scotland
TSUNAMI APPEAL UPDATE: Foundation Stone Ceremony
September 29, 2005

Sri Lanka girlOn September 15th, 2005 we laid the foundation stones for the new school we’re sponsoring in Weligama, southern Sri Lanka. Four stones representing each of the four corners of the building were put down on the allocated auspicious day and time, as is customary in Sri Lanka. This tradition is carried out before construction of all buildings and is strictly adhered to. It was an early start to the day with the first proceedings taking place at 6:30am.

First, the boundaries of the school walls were marked out. At 7:06am the first breaking of the earth took place in the digging of a trench to prepare the area for the foundation stones. At 10:07am the four corner stones were laid. The exact time for each event is significant and is specially chosen to bring good fortune to the site and the building. Our Director, Rube Fernando, and our Marketing Manager, Arlene Kidd, as well as Ranjani Fernando and the Superintendent of Police for the Weligama area each placed a foundation stone in the dugout. The Buddhist priest for the area was also present to bless the occasion and the site for the new school, and a plaque was unveiled to mark the occasion.

Rube and Arlene were then able to meet the teachers and pupils who will be attending the new school. Our cameras mesmerized the young students, as they had never seen digital images before. This resulted in some great photos!

The construction engineers estimate the completion of building by the end of December, putting the opening ceremony for the new school, Midigama Maddiya Maha Vidialava, in January 2006. It’s great to see that the project is well and truly underway, and should be complete within a year of the initial disaster.

Many thanks again to everyone who has donated to this appeal. A plaque acknowledging all contributors will be put up once the school has been completed. Fundraising will be ongoing to help with the general upkeep of the school, extra sports facilities, and the library.

We’ll keep you posted on the progress!

If you would like to help the Ardmel Tsunami Appeal with a donation of money or time, please contact the Keela sales Team at .

Go to topGo to top

News from Headquarters: Scotland
Oldham Mountain Rescue Team
November 9, 2005

Oldham Mountain Rescue Team helped raise almost £8500 for the Ardmel Tsunami Appeal after swapping hilly slopes for the top of a tower block.

rescue teamMembers of the Uppermill based team along with 64 friends and colleagues, took the plunge in a 200ft abseil down Rochdale Council’s offices. The money raised will go towards the cost of rebuilding a school in Weligama, Sri Lanka.

In picture Arlene Kidd, Angela Parker (from Keela) Mick Nield, Barry Pelmore, Denzil Broadhurst and Peter Hyde (from Oldham Mountain Rescue)


Team website is: http://www.omrt.or

Go to topGo to top

News from Headquarters: Scotland
December 3, 2005

Three kayakers have become the first Britons to complete the circumnavigation of South Georgia in the South Atlantic.

pete brayThe team included Nigel Dennis, 50, from Holyhead, Anglesey and Jeff Allen, 43, from Penryn, Cornwall.

Team-leader Pete Bray, 48, from Pembrokeshire, said he was "ecstatic" to be part of the first British team to have completed the trip. Team member Hadas Feldman, 34, is the first woman to complete the marathon.

The team made the 420-mile trip in 13 days, just three days longer than they had originally thought.

Ex-SAS soldier Pete Bray described the trip as the "ultimate" challenge.


The team used the trip to highlight the work of two different charities, Children in Crisis and Tŷ Hafan, a children's hospice near Cardiff.

Teams from the Royal Marines and New Zealand have tried and failed the challenge in the past.

Before the trip Mr. Bray said:"To climb Everest would be easier. It will be very tough - that is why it has never been done."

This record-breaking voyage is the latest in a string of adventures for Mr. Bray. In 2000 he set out on a solo, unsupported kayak trip from Newfoundland to the UK - but his tiny craft sank, and he was rescued after 33 hours in the freezing Atlantic.

He made a second, successful attempt in 2002 and became the first person to paddle solo and unsupported across the Atlantic.

He was awarded a Royal Humane Society medal for the rescue of a fellow crewmember on-board a boat that split in two during a storm last summer - 300 miles from their destination in Falmouth, Cornwall.

Go to topGo to top

News from Headquarters: Scotland
November 28, 2005

The circumnavigation of South Georgia remains one of the greatest sea kayaking challenges of the world. South Georgia lies in the ‘furious forties’, a latitude shared with Cape Horn, and has some of the fiercest sea conditions navigable by kayak. Two previous attempts, one in 1991 and the other 1996, both had to be abandoned due to appalling conditions. The south and most exposed coast remains un-paddled by any one.


campsiteNovember 25th & 26th

26-11-05 5426.2890S,3648.493W,0M

Today, November the 25th, head winds slowed our start. We were forced to shelter for a quick carb replenish amongst aggressive fur seals. We battled on, eventually making Homestrand by about 1600hrs, then having to spent the next two hours securing a place to camp on the beach. A fitful nights sleep amongst the grunts, growls and whines of the local population. With a background song of a baby fur seal with whooping cough.


We woke to heavy snow and an audience of penguins. Throughout the day we paddled down amazing coastline, full of mountain high glaciers and lands of icebergs - visited by only by those bold enough. God must have smiled upon us by granting us a few days of perfect weather. However, both Pete and Nigel could do without mr and misses next door moaning about who is cooking breakfast in the morning.


Go to topGo to top

News from Headquarters: Scotland
Keela The Superdog
April 7, 2005

keela dogOn November 23rd, 2004, the staff at Keela were preparing to greet some very special visitors. PC Martin Grime and PC John Ellis from the South Yorkshire Police were due to arrive, and as their entrance loomed the anticipation grew. However, for once the excitement was not caused by the thought of men in uniform, but knowing that the officers were bringing their sniffer dog team with them.

Eddie, a springer spaniel, and Frankie, a border collie, came along with new recruit ‘Keela’, a 10-month-old springer spaniel, and they were the center of attention all morning. Staff at Keela International were thrilled to see that the dogs were sporting their specially made Hi-Viz coats, part of the extensive Keela range produced for police forces nationwide, and the inspiration for the newest doggy sleuth’s name.

The dogs, which command £1,000 a day for their first class skills, have worked on high-profile murder cases throughout the country, helping solve crimes both recent, and up to 25 years old. They have been trained by the two officers to use their super strength noses to pinpoint even the tiniest microscopic speck of blood, which would be undetectable to the human eye. The dogs demonstrated their skills, searching for traces planted around the factory, and a reporter from the local newspaper even turned up to see what all the fuss was about.

Go to topGo to top

News from headquarters: Scotland
March 22, 2005

rubbleFunds raised by activities our Keela staff organized and from many kind donations from our customers will be going towards our £250,000 target to help rebuild Midigama Maddiya Maha Vidialava School. The school is situated 180km from the capital city of Colombo in a town called Weligama, one of the poorest areas of the southern province of Sri Lanka. Before the disaster it accommodated 800 pupils, but now needs to be rebuilt and extended to make room for 150 new pupils relocated from Denuwala Kaniska Vidialaya School. Due to Government ruling, schools situated less than 300mtrs from the coast will not be granted permission for reconstruction, meaning Denuwala Kaniska Vidialaya’s former pupils will be joining schools like Midigama Maddiya Maha Vidialava, and are in desperate need of our help.

We still have a lot of work to do in order to meet our target, and any help is greatly appreciated. A local architect has very kindly offered to draw up the new plans for us free of charge, and rebuilding work will commence at the end of March. There will be a donator’s board presented to the school on completion, which will include the names of all the individuals and organizations that have contributed to the project. Donators are welcome to visit the school both during the reconstruction process and after completion.

For further details on this, or for information on how you can help the project, please contact Keela or the Ardmel Group directly, or visit website: www.ardmeltsunamiproject.co.uk

Go to topGo to top