Thatched roof surveys, Thatching talks, Thatch demonstrations

Over 40 years of thatching experience available to you without any bias as I am not looking for work myself or acting as an agent for any one, No Sales pitch, just passionate about fair standards and free information. Now semi retired, and only thatching very small items. I may however be able to assist you with thatch related questions or problems you may have, contact details are at the end of this page

Experienced in Long Straw, Combed Wheat, Norfolk Reed and Sedge and other more exotic materials working for house owners, museums, breweries, exhibitions display and local authorities in the UK and Abroad

Some of the 'thatched roof surveyors' either know little or nothing about thatch or are thinly disguised Thatch salesmen. One thatching firm will do it for you for £250 on a pre printed tick box form. They will also arrange the thatching you will be surprised to learn! Ask for a quotation for the survey before agreeing and ask if they can do the work that they will inevitably say is needed! Any advice I give is based upon what I would do if your property was mine.

  I have been thatching since 1963, Served a traditional indentured 7 year apprenticeship followed by two years as a journeyman and have continued as a master thatcher in my own right since, including training young thatchers. Attending residential courses supplied by the then CoSIRA (now the Countryside Agency) and many other seminars. I have been an executive member of both of the national bodies representing thatching. Currently the chairman of the R&LMTA and a (founder) member of the steering committee for formulation of National Vocational Qualifications with CITB and City & Guilds. I have surveyed many properties in the UK and abroad and arbitrated on disputes, so far without recourse to any expensive legal action. My approach is simple and direct, like this site

An opportunity to get an unbiased opinion of your roof, or that on a house you may be thinking of buying

Talks on thatching

Can be given in the form of a power point LCD projected presentation on my own 4 foot screen, or using your own screen or equipment.

 Plus samples of thatching materials, tools and a 1/12 scale model. A professional informative display. Approximately 1 1/2 hours duration - £20 plus 40p per mile, estate agents surveyors schools and architects among others have found this invaluable. Talks targeted to your requirements.

Thatching demonstrations and tool/materiel displays at shows and events are also undertaken - distance no object

       

Tool display in caravan awning

General view of the display left hand side

View of the working area: right hand side

A view as seen from the walk way click on the photos for full size

Even if it is a bit wet!        

Steam rallies and conservation groups among others attended, even inside events (large brush required!) Sharps are barricaded or out of reach for safety! £10,000.000 insurance coverage. Enquire early, limited dates. Usually set up Friday and go early on Monday as it takes a long time to arrange and load, I have managed to re organise so I can do it now in one trip so I can set up a display like this for 40p a mile plus £20 a show day for your event, I have to re coup my/your public indemnity insurance costs, damaged materials used demonstrating and fuel. I do not sell items other than my book and even this is very discrete, this display is for the information and entertainment of the public and is a hobby of mine, basic bee skep making, spar and ancient cord making, adze & side axe included together with thatching tools ancient & modern.. Email me your event address for a quotation with no obligation

Outside 'pitch' minimum 30 X 20 Feet or bigger (see photo's) caravan and awning used in display, extra space for 1 car would be appreciated

 

TUITION CAN ALSO BE GIVEN ON YOUR OWN OR A COMMUNITY PROJECT, INCLUDING WORKSHOPS, THIS IS NOT AN OPPORTUNITY TO LEARN THATCHING AS A CAREER, IT IS ONLY APPLICABLE TO A PARTICULAR ROOF USING A PARTICULAR MATERIAL AND IT WOULD PROBABLY BE CHEAPER / QUICKER EMPLOYING A SKILLED THATCHER TO DO THE WORK FOR YOU RATHER THAN DOING IT YOURSELF. QUITE HAPPY TO DISCUSS YOUR NEEDS OBLIGATION FREE

Hands on help, teaching, material acquisition for your project, distance no object, Spain, France, Czech Republic, Madeira, Sweden, Slovenia, Scottish Highlands  and of course the rest of the UK covered so far. Warmer countries in our winter welcome! a full example at  http://www.hollowellsteam.com/dome.htm 

Not a project for dreamers, It can be hard and dirty and is time consuming, It may be possible however and particularly suitable for the out of the way places using strange local materials, my costs are that - at cost, as ever you will be quoted as your requirements are known in advance. I may also tell you it is impractical, thatching is not rocket science but it does have a steep learning curve. I can attend at your premise with caravan and tools, UK and close Europe.

 

Prehistory thatching reconstructionhttp://www.derventio.org/ will find this Iron Age Reconstruction of a round house, a Viking house is also being thatched, one turf roof, a cedar shingle, and shiplap one is also planned Round house thatchingThis work is being carried out after three days thatching instruction, a testament to the hard work and rapidly acquired skills of the staff
English thatch in SwedenA very determined lady! I see many roof's when surveying thatched by professionals that are not as good as this

Well done Carina !!!

 

English thatched roof roof ridge DIY in SwedenSweden, after one weeks instruction and help the lady owner who wanted an English ridge completed this job by herself, I must admit this probably is the maximum that DIY can run too!
Base for heather thatch

From this: A reconstructed Yorkshire barn : see http://www.craven-cruckbarn.co.uk/cruckbarn.htm

A spectacular building

Heather - ling - thatched roof Yorkshire

To this now (Ridge finish artists impression) in heather - ling - again all this work building and thatching is down to the owners. From hand split cruck frame, lime plaster and gathering materials to the thatching of the roof.

Thatched in water reed this 'round house' demonstrates the poured on fluidity of thatch is not created by the material but by the way it is applied. No other roofing material is capable of adapting to such shapes

The only real restrictions is the steeper the pitch the longer it will last. Thatched properly the wind will have no detrimental effect. Frequently in Holland pan tiled barn roofs have the hip ends thatched because it is more efficient even with the gales that sweep across such a flat countryside. Round houses like this have been used for thousands of years particularly in the United Kingdom

SCOTTISH CROFT Thatching a scottish croftBEFORE WORK STARTED

See http://thethatchedcroft.co.uk  for more details. This derelict croft is nearly transformed by the current owners into a Scottish Highland 'Villa'  open to rent for all from mid March.

  CROFT NEARLY FINISHED

They cannot say it but the owners of this Holiday Let have finished to property to the highest professional standard. I work all around Europe and this property is stunning, the owners delightful and the quiet local area totally unspoilt. If you are looking at Scotland for a holiday this will not disappoint. I would advise early booking as dates will not remain available for long.  These Photo's are a little out of date, see the web site opposite for more details

 

 

SURVEYS

As well as a survey of the roof, assistance with insurance claims / assessment /  planning consents and general information can also be given. If you know of a local trusted thatcher they may well be able to assist you for less or even free. This very modest outlay now may save you thousands of pounds in unforeseen or unnecessary  thatching bills, or at least set your mind at rest. For example a recent roof viewed by me involved an architect quoting to arrange thatching for £80,000, the actual cost was £20,000

Email free! most enquiries are resolved this way. If needed a site visit and verbal report will cost you £20 plus 50 pence a mile return car traveling expense plus ferry - air costs if applicable

Weekends preferred. Located centrally near the M1 M6 A14 intersection to help you with rough pricing. I will email you back an accurate firm quote with no obligation.  In addition, if a written comprehensive report/survey is required (see sample report) suitable for mortgage, planning, and insurance assessments, this can be supplied at an extra £20 plus costs as above

Full cost will be confirmed with you for any services that requires my presence before any visit and is inclusive, no hidden 'extras' any excess over my costs help keep this site independent

Initial contact is preferred by email, it is constantly monitored and also gives me a chance to be prepared Telephone Leo Wood 01858-575-782  Mobile  077-25-05-95-15 (I get poor to zero reception at home, voice messages may not be answered for days - I only use in the car) 

'Nuthatch'  16 West End, Welford, Northampton, NN6 6HJ,  Great Britain  

  Stop Spam Harvesters, Join Project Honey Pot Replace {url_of_img}

  Sorry for the strange format you will have to enter this by hand into your emailer - Fed up with spam !!!

 <%@ LANGUAGE="VBSCRIPT" %> <% ' PROJECT HONEY POT ADDRESS DISTRIBUTION SCRIPT ' For more information visit: http://www.projecthoneypot.org/ ' Copyright (C) 2004-2010, Unspam Technologies, Inc. ' ' This program is free software; you can redistribute it and/or modify ' it under the terms of the GNU General Public License as published by ' the Free Software Foundation; either version 2 of the License, or ' (at your option) any later version. ' ' This program is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU General Public License for more details. ' ' You should have received a copy of the GNU General Public License ' along with this program; if not, write to the Free Software ' Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ' 02111-1307 USA ' ' If you choose to modify or redistribute the software, you must ' completely disconnect it from the Project Honey Pot Service, as ' specified under the Terms of Service Use. These terms are available ' here: ' ' http://www.projecthoneypot.org/terms_of_service_use.php ' ' The required modification to disconnect the software from the ' Project Honey Pot Service is explained in the comments below. To find the ' instructions, search for: *** DISCONNECT INSTRUCTIONS *** ' ' Generated On: Mon, 05 Apr 2010 10:36:05 -0400 ' For Domain: www.thatch.org ' ' ' *** DISCONNECT INSTRUCTIONS *** ' ' You are free to modify or redistribute this software. However, if ' you do so you must disconnect it from the Project Honey Pot Service. ' To do this, you must delete the lines of code below located between the ' *** START CUT HERE *** and *** FINISH CUT HERE *** comments. Under the ' Terms of Service Use that you agreed to before downloading this software, ' you may not recreate the deleted lines or modify this software to access ' or otherwise connect to any Project Honey Pot server. ' ' *** START CUT HERE *** ' REQUEST_HOST = "hpr9.projecthoneypot.org" REQUEST_PORT = "80" REQUEST_SCRIPT = "/cgi/serve.php" ' ' *** FINISH CUT HERE *** ' HPOT_TAG1 = "aaf6547f93ee80f7e839b3a36de9ba77" HPOT_TAG2 = "1ba06cb928e0765870fcdffc90cda6df" HPOT_TAG3 = "e5eff424859078ea08098d130e430833" CLASS_STYLE_1 = "crog" CLASS_STYLE_2 = "duthiyarenic" DIV1 = "trep" VANITY_L1 = "MEMBER OF PROJECT HONEY POT" VANITY_L2 = "Spam Harvester Protection Network" VANITY_L3 = "provided by Unspam" DOC_TYPE1 = "\n" HEAD1 = "\n\n" HEAD2 = "http://www.thatch.org\n\n" ROBOT1 = "\n\n\n" NOCOLLECT1 = "\n" TOP1 = "\n

\n" EMAIL1A = "" EMAIL1C = "" EMAIL2A = "" EMAIL2C = "" EMAIL3A = "" EMAIL3C = "" EMAIL4A = "" EMAIL4C = "" EMAIL5A = "" EMAIL5C = ".." EMAIL6A = "" EMAIL6C = "" EMAIL7A = "" EMAIL7C = "" EMAIL8A = "" EMAIL9A = "
" EMAIL10A = "" LEGAL1 = "" LEGAL2 = "\n" STYLE1 = "\n" VANITY1 = "
@" & VANITY_L1 & "
" & VANITY_L2 & "
" & VANITY_L3 & "
\n" BOTTOM1 = "
\n\n\n" Function getLegalContent() getLegalContent = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
  o 
 
The w
to yo
other
Websi
read
agent
them.
non-t
Websi

 o  p
g
Speci
Non-H
spide
ptonguetied current staircase happyrogr
autom

Email
It is
alone
haswankys a
stora
value
stori
agree

    
 
Each
again
(""Jud
their
sucha
and p
of fe
any a
Servi
the a

 h  
 
Youdc
may a
abuse
Visit

VISIT
PARfriendly filthy tame recipe schoolTY
SUBSE
d   

ebsit
u sub
 term
te yo
them
s of
 The
ransf
te.

    

al re
uman
rs, b
ams d
atica

 addr
 reco
. You
 valu
ge, a
 of t
ng th
ment

    

party
st th
icial
egist
laws
erfor
deral
ction
ce. Y
bove

    

onsstyle foundation adenoidal gownen
ppear
. The
ors a

ORS A
kOR S
QUENT
  o 

e fro
jectf
s gov
u acc
caref
the i
acces
erabl


    

stric
Visit
ots,
esign
lly.

esses
gnize
 ackn
e not
nd/or
hesek
is We
andse

    

 agre
e oth
 Acti
ered
are a
medie
 and
 brou
oukco
agree

    

t to
 some
dIden
gree

GREE
ENDIN
iBREA
   o 

m whi
to th
ernsensation chief conceptual actors steamin
ept t
ullyelevated human subsonic striped.
ndivi
serig
e wit


SPECI

tions
ors.
index
ed to


 on t
d tha
owled
 less
 dist
addre
bsite
xpres

e   

es th
er in
onrainbow"")k
Admin
pplie
ntire
state
ght a
nsent
mendisadvantage devil tremendous backed reducedt.

    e

hsharp piffle fairyavin
where
tifie
not t

THAT
G ANY
CH OF
   t 

ch yo
etfol
g acc
hese
 Any
dual(
hts g
hout


ALgLI

 on a
Non-H
ers,
 acce


his s
t the
ge an
othan
ribencounterut
sses.
's em
sly p

    

at an
 conn
shall
istra
d toa
ly wi
 cour
gains
 to e


  f R

g you
 on t
r is
opuse

HARVE
 MESS
 THES
 fTp sassyER

u acc
lowin
esslions liquid banking collectivept
terms
Non-H
s)cwh
rante
the e


CENSE

 visi
uman
robot
ss, r


itega
se em
d agr
 USbreast telephone many cowardly overt $
ion o
 Intestaunch woman freedom brief equine
ail a
rohib

APPLI

y sui
ectio
 be g
tive
agree
thing
ts wi
t him
lectr


ECORD

r Int
his p
uniqu
 this

STING
AGE(S
E TER
MS AN

essed
g con
o the
 and
uman
oocon
d to
xpres


fREST

tor's
Visit
s, cr
eadsequential supporting hire rustic air,


retcsubjunctive illegalo
ail a
ee th
50. Y
f the
ntion
ddres
ited.

CABLE

t, ac
ntwit
ovnaked tacky chemistryern
Conta
ments
the A
thin
gin c
onicd


S OF 

ernet
age (
elypm
paddr

, GAT
) TO
MS OF
D CON

 this
ditio
 Webs
condi
Visit
trols
you u
s wri


RICTI

 lice
ors i
awler
compi


nside
ddres
at ea
ou fu
se ad
aheritage lawnl co
seseveryday duodecimal unstudied ulteriorgi


 LAW 

tion
hoor
edsby
ct (t
cbetw
dmin
the A
omovie boys shoulder balletnnec
servi


VISIT

 Prot
the ""
atche
ess f

HERIN
THE I
 SERV
DITIO

 agre
ns. T
ite.
tions
ors t
, aut
nder
ttnosy step secretive lorry adequateen


ONS F

nse t
nclud
s, ha
le or


red p
sesoa
chrise inimical em
rther
dress
llect
s rec


AND J

or pr
arisi
 the
he ""A
een A
State
dmin
tion
ce of


OR US

ocol
Ident
d to
or an

G,kST
DENTI
ICE.
NS OF

ement
hese
Bydvi
 (the
o the
hors
the T
permi


OR NO

o acc
e, bu
rvest
 gath


ropri
re pr
ail a
 agre
es su
ion,
ogniz


URISD

oceed
ng fr
law o
dmins
dmin
. You
State
with
 proc


E AND

addre
ififox regimenter
your
y rea

Owiry composer encausticRscandalous followup vat weeING
FIERg

 USE 

 (""th
terms
sitin
 ""Ter
 Webs
orvideotaped disastrous ot
ermcolleague canal career orientations
ssion


N-HUM

ess t
t are
ers,
er co


etary
ovide
ddres
egtha
bstan
harve
ed as


ICTIO

ing b
om th
f the
State
State
 cons
. You
breac
escyberspace odd folks r


 ABUS

ss re
"") if
Inter
son.

, TRA
CONST



e Web
 are
gf(icautiousn
ms of
ite s
herwi
of Se
 of t


AN VI

he We
 not
oroan
ntent


dinte
d for
ssacrilegious malicious candidate the
t the
tiall
sting
ka vi


Ni

roleading bonfire holder redundancyugh
e Ter
 stat
"") fo
fresi
ent t
 cons
hes o
egard


E 

corde
 weas
net P


NSFER
ITUTE



site""
inpad
 any
 Serv
hall
sesma
rvice
he ow


SITOR

bsite
limit
y oth
 from


llect
 huma
 Webs
 comp
y dim
, gat
olati




t by
msaof
e of
r the
dents
o the
ent t
f the
ing a




d. An
uspec
rotoc


RING
ShAN



) iso
ditio
manne
ice"")
be co
kesiu
 are
ner o


S 

 appl
ed to
er co
 the


ual p
n vis
ite c
ilati
inish
herinsergeant serpentine premium renaissance pedate
onaof




suche
 Serv
resid
 Webs
 ente
 juri
o the
se Te
ction




 etroop darkhorse lovable syllabic penaltymai
t pot
ol ad


TOsA
ACCEPmonarchy stuck



provi
n tok
r) th
. Ple
nside
se of

f the




yato
, web
mpute
Websi


roper
itors
ontai
on,
es th
g, an
 this




plack brilliant sided cylinder periodicarty
ice
ence
ite a
red i
sdict
 venu
rms o
s und




l add
entia
dtestateress


THIRD
TANCE



ded
any
e
aseunflappable
red









r
te


ty.

ns

e
d/or







of
s
ntoevasive classy
ion
e in
f
er




ress
l
.



 AND

\n
" End Function Private Const BITS_TO_A_BYTE = 8 Private Const BYTES_TO_A_WORD = 4 Private Const BITS_TO_A_WORD = 32 Private m_lOnBits(30) Private m_l2Power(30) m_lOnBits(0) = CLng(1) m_lOnBits(1) = CLng(3) m_lOnBits(2) = CLng(7) m_lOnBits(3) = CLng(15) m_lOnBits(4) = CLng(31) m_lOnBits(5) = CLng(63) m_lOnBits(6) = CLng(127) m_lOnBits(7) = CLng(255) m_lOnBits(8) = CLng(511) m_lOnBits(9) = CLng(1023) m_lOnBits(10) = CLng(2047) m_lOnBits(11) = CLng(4095) m_lOnBits(12) = CLng(8191) m_lOnBits(13) = CLng(16383) m_lOnBits(14) = CLng(32767) m_lOnBits(15) = CLng(65535) m_lOnBits(16) = CLng(131071) m_lOnBits(17) = CLng(262143) m_lOnBits(18) = CLng(524287) m_lOnBits(19) = CLng(1048575) m_lOnBits(20) = CLng(2097151) m_lOnBits(21) = CLng(4194303) m_lOnBits(22) = CLng(8388607) m_lOnBits(23) = CLng(16777215) m_lOnBits(24) = CLng(33554431) m_lOnBits(25) = CLng(67108863) m_lOnBits(26) = CLng(134217727) m_lOnBits(27) = CLng(268435455) m_lOnBits(28) = CLng(536870911) m_lOnBits(29) = CLng(1073741823) m_lOnBits(30) = CLng(2147483647) m_l2Power(0) = CLng(1) m_l2Power(1) = CLng(2) m_l2Power(2) = CLng(4) m_l2Power(3) = CLng(8) m_l2Power(4) = CLng(16) m_l2Power(5) = CLng(32) m_l2Power(6) = CLng(64) m_l2Power(7) = CLng(128) m_l2Power(8) = CLng(256) m_l2Power(9) = CLng(512) m_l2Power(10) = CLng(1024) m_l2Power(11) = CLng(2048) m_l2Power(12) = CLng(4096) m_l2Power(13) = CLng(8192) m_l2Power(14) = CLng(16384) m_l2Power(15) = CLng(32768) m_l2Power(16) = CLng(65536) m_l2Power(17) = CLng(131072) m_l2Power(18) = CLng(262144) m_l2Power(19) = CLng(524288) m_l2Power(20) = CLng(1048576) m_l2Power(21) = CLng(2097152) m_l2Power(22) = CLng(4194304) m_l2Power(23) = CLng(8388608) m_l2Power(24) = CLng(16777216) m_l2Power(25) = CLng(33554432) m_l2Power(26) = CLng(67108864) m_l2Power(27) = CLng(134217728) m_l2Power(28) = CLng(268435456) m_l2Power(29) = CLng(536870912) m_l2Power(30) = CLng(1073741824) Private Function LShift(lValue, iShiftBits) If iShiftBits = 0 Then LShift = lValue Exit Function ElseIf iShiftBits = 31 Then If lValue And 1 Then LShift = &H80000000 Else LShift = 0 End If Exit Function ElseIf iShiftBits < 0 Or iShiftBits > 31 Then Err.Raise 6 End If If (lValue And m_l2Power(31 - iShiftBits)) Then LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000 Else LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits)) End If End Function Private Function RShift(lValue, iShiftBits) If iShiftBits = 0 Then RShift = lValue Exit Function ElseIf iShiftBits = 31 Then If lValue And &H80000000 Then RShift = 1 Else RShift = 0 End If Exit Function ElseIf iShiftBits < 0 Or iShiftBits > 31 Then Err.Raise 6 End If RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits) If (lValue And &H80000000) Then RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1))) End If End Function Private Function RotateLeft(lValue, iShiftBits) RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits)) End Function Private Function AddUnsigned(lX, lY) Dim lX4 Dim lY4 Dim lX8 Dim lY8 Dim lResult lX8 = lX And &H80000000 lY8 = lY And &H80000000 lX4 = lX And &H40000000 lY4 = lY And &H40000000 lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF) If lX4 And lY4 Then lResult = lResult Xor &H80000000 Xor lX8 Xor lY8 ElseIf lX4 Or lY4 Then If lResult And &H40000000 Then lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8 Else lResult = lResult Xor &H40000000 Xor lX8 Xor lY8 End If Else lResult = lResult Xor lX8 Xor lY8 End If AddUnsigned = lResult End Function Private Function F(x, y, z) F = (x And y) Or ((Not x) And z) End Function Private Function G(x, y, z) G = (x And z) Or (y And (Not z)) End Function Private Function H(x, y, z) H = (x Xor y Xor z) End Function Private Function I(x, y, z) I = (y Xor (x Or (Not z))) End Function Private Sub FF(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub Private Sub GG(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub Private Sub HH(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub Private Sub II(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, b) End Sub Private Function ConvertToWordArray(sMessage) Dim lMessageLength Dim lNumberOfWords Dim lWordArray() Dim lBytePosition Dim lByteCount Dim lWordCount Const MODULUS_BITS = 512 Const CONGRUENT_BITS = 448 lMessageLength = Len(sMessage) lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD) ReDim lWordArray(lNumberOfWords - 1) lBytePosition = 0 lByteCount = 0 Do Until lByteCount >= lMessageLength lWordCount = lByteCount \ BYTES_TO_A_WORD lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition) lByteCount = lByteCount + 1 Loop lWordCount = lByteCount \ BYTES_TO_A_WORD lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition) lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3) lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29) ConvertToWordArray = lWordArray End Function Private Function WordToHex(lValue) Dim lByte Dim lCount For lCount = 0 To 3 lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1) WordToHex = WordToHex & Right("0" & Hex(lByte), 2) Next End Function Public Function MD5(sMessage) Dim x Dim k Dim AA Dim BB Dim CC Dim DD Dim a Dim b Dim c Dim d Const S11 = 7 Const S12 = 12 Const S13 = 17 Const S14 = 22 Const S21 = 5 Const S22 = 9 Const S23 = 14 Const S24 = 20 Const S31 = 4 Const S32 = 11 Const S33 = 16 Const S34 = 23 Const S41 = 6 Const S42 = 10 Const S43 = 15 Const S44 = 21 x = ConvertToWordArray(sMessage) a = &H67452301 b = &HEFCDAB89 c = &H98BADCFE d = &H10325476 For k = 0 To UBound(x) Step 16 AA = a BB = b CC = c DD = d FF a, b, c, d, x(k + 0), S11, &HD76AA478 FF d, a, b, c, x(k + 1), S12, &HE8C7B756 FF c, d, a, b, x(k + 2), S13, &H242070DB FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE FF a, b, c, d, x(k + 4), S11, &HF57C0FAF FF d, a, b, c, x(k + 5), S12, &H4787C62A FF c, d, a, b, x(k + 6), S13, &HA8304613 FF b, c, d, a, x(k + 7), S14, &HFD469501 FF a, b, c, d, x(k + 8), S11, &H698098D8 FF d, a, b, c, x(k + 9), S12, &H8B44F7AF FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1 FF b, c, d, a, x(k + 11), S14, &H895CD7BE FF a, b, c, d, x(k + 12), S11, &H6B901122 FF d, a, b, c, x(k + 13), S12, &HFD987193 FF c, d, a, b, x(k + 14), S13, &HA679438E FF b, c, d, a, x(k + 15), S14, &H49B40821 GG a, b, c, d, x(k + 1), S21, &HF61E2562 GG d, a, b, c, x(k + 6), S22, &HC040B340 GG c, d, a, b, x(k + 11), S23, &H265E5A51 GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA GG a, b, c, d, x(k + 5), S21, &HD62F105D GG d, a, b, c, x(k + 10), S22, &H2441453 GG c, d, a, b, x(k + 15), S23, &HD8A1E681 GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8 GG a, b, c, d, x(k + 9), S21, &H21E1CDE6 GG d, a, b, c, x(k + 14), S22, &HC33707D6 GG c, d, a, b, x(k + 3), S23, &HF4D50D87 GG b, c, d, a, x(k + 8), S24, &H455A14ED GG a, b, c, d, x(k + 13), S21, &HA9E3E905 GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8 GG c, d, a, b, x(k + 7), S23, &H676F02D9 GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A HH a, b, c, d, x(k + 5), S31, &HFFFA3942 HH d, a, b, c, x(k + 8), S32, &H8771F681 HH c, d, a, b, x(k + 11), S33, &H6D9D6122 HH b, c, d, a, x(k + 14), S34, &HFDE5380C HH a, b, c, d, x(k + 1), S31, &HA4BEEA44 HH d, a, b, c, x(k + 4), S32, &H4BDECFA9 HH c, d, a, b, x(k + 7), S33, &HF6BB4B60 HH b, c, d, a, x(k + 10), S34, &HBEBFBC70 HH a, b, c, d, x(k + 13), S31, &H289B7EC6 HH d, a, b, c, x(k + 0), S32, &HEAA127FA HH c, d, a, b, x(k + 3), S33, &HD4EF3085 HH b, c, d, a, x(k + 6), S34, &H4881D05 HH a, b, c, d, x(k + 9), S31, &HD9D4D039 HH d, a, b, c, x(k + 12), S32, &HE6DB99E5 HH c, d, a, b, x(k + 15), S33, &H1FA27CF8 HH b, c, d, a, x(k + 2), S34, &HC4AC5665 II a, b, c, d, x(k + 0), S41, &HF4292244 II d, a, b, c, x(k + 7), S42, &H432AFF97 II c, d, a, b, x(k + 14), S43, &HAB9423A7 II b, c, d, a, x(k + 5), S44, &HFC93A039 II a, b, c, d, x(k + 12), S41, &H655B59C3 II d, a, b, c, x(k + 3), S42, &H8F0CCC92 II c, d, a, b, x(k + 10), S43, &HFFEFF47D II b, c, d, a, x(k + 1), S44, &H85845DD1 II a, b, c, d, x(k + 8), S41, &H6FA87E4F II d, a, b, c, x(k + 15), S42, &HFE2CE6E0 II c, d, a, b, x(k + 6), S43, &HA3014314 II b, c, d, a, x(k + 13), S44, &H4E0811A1 II a, b, c, d, x(k + 4), S41, &HF7537E82 II d, a, b, c, x(k + 11), S42, &HBD3AF235 II c, d, a, b, x(k + 2), S43, &H2AD7D2BB II b, c, d, a, x(k + 9), S44, &HEB86D391 a = AddUnsigned(a, AA) b = AddUnsigned(b, BB) c = AddUnsigned(c, CC) d = AddUnsigned(d, DD) Next MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d)) End Function Function getFileContents(ByRef Filepath) Const ForReading = 1 Const TristateUseDefault = -2 Dim FSO set FSO = server.createObject("Scripting.FileSystemObject") if FSO.FileExists(Filepath) Then Set TextStream = FSO.OpenTextFile(Filepath, ForReading, False, TristateUseDefault) Dim Contents Contents = TextStream.ReadAll 'Response.write("
" & Contents & "
") TextStream.Close Set TextStream = nothing Else Response.Write("WARNING: File " & Filepath & " could not be read!") getFileContents = nothing exit function End If Set FSO = nothing getFileContents = Contents End Function Function getDocType() getDocType = DOC_TYPE1 End Function Function getHeadHTML1() getHeadHTML1 = HEAD1 End Function Function getRobotHTML() getRobotHTML = ROBOT1 End Function Function getNoCollectHTML() getNoCollectHTML = NOCOLLECT1 End Function Function getHeadHTML2() getHeadHTML2 = HEAD2 End Function Function getTopHTML() getTopHTML = TOP1 End Function Function getEmailHTML(Method, Email) Select Case Method Case 0: getEmailHTML = "" Case 1: getEmailHTML = EMAIL1A & Email & EMAIL1B & Email & EMAIL1C Case 2: getEmailHTML = EMAIL2A & Email & EMAIL2B & Email & EMAIL2C Case 3: getEmailHTML = EMAIL3A & Email & EMAIL3B & Email & EMAIL3C Case 4: getEmailHTML = EMAIL4A & Email & EMAIL4B & Email & EMAIL4C Case 5: getEmailHTML = EMAIL5A & Email & EMAIL5B & Email & EMAIL5C Case 6: getEmailHTML = EMAIL6A & Email & EMAIL6B & Email & EMAIL6C Case 7: getEmailHTML = EMAIL7A & Email & EMAIL7B & Email & EMAIL7C Case 8: getEmailHTML = EMAIL8A & Email & EMAIL8B & Email & EMAIL8C Case 9: getEmailHTML = EMAIL9A & Email & EMAIL9B & Email & EMAIL9C case Else: getEmailHTML = EMAIL10A & Email & EMAIL10B & Email & EMAIL10C End Select End Function Function getLegalHTML getLegalHTML = LEGAL1 & getLegalContent() & LEGAL2 End Function Function getStyleHTML getStyleHTML = STYLE1 End Function Function getVanityHTML getVanityHTML = VANITY1 End Function Function getBottomHTML getBottomHTML = BOTTOM1 End Function Function performRequest(Request) ResponseStr = "" URL = "" Set srvXmlHttp = Server.CreateObject("MICROSOFT.XMLHTTP") URL = "http://" & REQUEST_HOST & REQUEST_SCRIPT srvXmlHttp.open "POST", URL, false srvXmlHttp.setRequestHeader "Cache-Control", "no-cache" srvXmlHttp.setRequestHeader "User-Agent", "PHPot " & HPOT_TAG2 srvXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" srvXmlHttp.setRequestHeader "Connection", "close" srvXmlHttp.send Request performRequest = srvXmlHttp.responseText End Function Function prepareRequest() Set postvars = CreateObject("Scripting.Dictionary") postvars.Add "tag1", HPOT_TAG1 postvars.Add "tag2", HPOT_TAG2 postvars.Add "tag3", HPOT_TAG3 postvars.Add "tag4", md5(getFileContents(Request.ServerVariables("PATH_TRANSLATED"))) postvars.Add "ip", Server.URLEncode(Request.ServerVariables("REMOTE_ADDR")) postvars.Add "svrn", Server.URLEncode(Request.ServerVariables("SERVER_NAME")) postvars.Add "svp", Server.URLEncode(Request.ServerVariables("SERVER_PORT")) postvars.Add "svip", Server.URLEncode(Request.ServerVariables("SERVER_ADDR")) postvars.Add "rquri", Server.URLEncode(Request.ServerVariables("URL")) postvars.Add "sn", Replace(Server.URLEncode(Request.ServerVariables("SCRIPT_NAME")), " ", "%20") postvars.Add "ref", Server.URLEncode(Request.ServerVariables("HTTP_REFERER")) postvars.Add "uagnt", Server.URLEncode(Request.ServerVariables("HTTP_USER_AGENT")) Set prepareRequest = postvars End Function Function transcribeResponse(ByVal response) Set settings = CreateObject("Scripting.Dictionary") Arr = Split(URLDecode(response), Chr(10)) isParam = false For j = 0 to UBound(Arr) If Arr(j) = "" Then isParam = false If isParam Then pieces = Split(Arr(j), "=", 2) If UBound(pieces) = 1 Then settings.Add pieces(0), pieces(1) End If End If If Arr(j) = "" Then isParam = true Next If settings.Exists("directives") Then settings.Item("directives") = Split(settings.Item("directives"), ",") End If Set transcribeResponse = settings End Function Function URLDecode(ByRef str) Set re = New RegExp str = Replace(str, "+", " ") re.Pattern = "%([0-9a-fA-F]{2})" re.Global = True URLDecode = re.Replace(str, GetRef("URLDecodeHex")) End Function Function URLDecodeHex(match, hex_digits, pos, source) URLDecodeHex = chr("&H" & hex_digits) End Function Function formatHTML(ByRef str) formatHTML = Replace(str, "\n", VBCrLf) End Function Function echo(ByRef str) Response.Write(formatHTML(str)) End Function RequestText = "" ResponseText = "" Set Post = prepareRequest Items = Post.Items Keys = Post.Keys For j = 0 to Post.Count -1 RequestText = RequestText & "&" & Keys(j) & "=" & Items(j) Next RequestText = Mid(RequestText, 2) ResponseText = performRequest(RequestText) Set settings = transcribeResponse(ResponseText) directives = settings.Item("directives") email = settings.Item("email") emailmethod = settings.Item("emailmethod") Response.AddHeader "Cache-Control", "no-cache" %> <% If directives(0) And directives(0) = "1" Then echo(getDocType)%> <% If settings("injDocType") Then echo(settings("injDocTypeMsg"))%> <% If directives(1) And directives(1) = "1" Then echo(getHeadHTML1)%> <% If settings("injHead1HTML") Then echo(settings("injHead1HTMLMsg"))%> <% If directives(8) And directives(8) = "1" Then echo(getRobotHTML)%> <% If settings("injRobotHTML") Then echo(settings("injRobotHTMLMsg"))%> <% If directives(9) And directives(9) = "1" Then echo(getNoCollectHTML)%> <% If settings("injNoCollectHTML") Then echo(settings("injNoCollectHTMLMsg"))%> <% If directives(1) And directives(1) = "1" Then echo(getHeadHTML2)%> <% If settings("injHead2HTML") Then echo(settings("injHead2HTMLMsg"))%> <% If directives(2) And directives(2) = "1" Then echo(getTopHTML)%> <% If settings("injTopHTML") Then echo(settings("injTopHTMLMsg"))%> <% IF settings("actMsgOn") <> "" Then echo(settings("actMsg")) IF settings("errMsgOn") <> "" Then echo(settings("errMsg")) IF settings("customMsgOn") <> "" Then echo(settings("customMsg")) %> <% If directives(3) And directives(3) = "1" Then echo(getLegalHTML)%> <% If settings("injLegalHTML") Then echo(settings("injLegalHTMLMsg"))%> <% IF settings("altLegalOn") <> "" Then echo(settings("altLegalMsg")) %> <% If directives(4) And directives(4) = "1" Then echo(getEmailHTML(emailmethod, email))%> <% If settings("injEmailHTML") Then echo(settings("injEmailHTMLMsg"))%> <% If directives(5) And directives(5) = "1" Then echo(getStyleHTML)%> <% If settings("injStyleHTML") Then echo(settings("injStyleHTMLMsg"))%> <% If directives(6) And directives(6) = "1" Then echo(getVanityHTML)%> <% If settings("injVanityHTML") Then echo(settings("injVanityHTMLMsg"))%> <% IF settings("altVanityOn") <> "" Then echo(settings("altVanityMsg")) %> <% If directives(7) And directives(7) = "1" Then echo(getBottomHTML)%> <% If settings("injBottomHTML") Then echo(settings("injBottomHTMLMsg"))%>

________________

     Specimen Basic Estimate    Sample Report   Specification

                                                          HOME PAGE      GLOSSARY