REBOL[	
	Title: "coding-mailto"
	Version: 1.0.0
	File: %coding-maito.r
	Author: "Philippe Le Goff"
	Date: 11-Sep-2004
	Email: pl--legoff--free-fr
	Copyright: {
	Philippe Le Goff-2004	
	License CeCILL
	http://www.inria.fr/valorisation/logiciels/Licence.CeCILL-V1.pdf
	http://www.inria.fr/valorisation/logiciels/Licence.CeCILL-V1_VA.pdf
	}
	Purpose: {a tool for coding the "mailto" info in a html page and avoid some spam }
	Category: []
	Library: [
		level: 'beginner
		platform: 'all
		type: [tool]
		domain: [email encryption html text ]
		Tested-under: 'win
		Support: pl--legoff--free-fr
		License: none
		
	]
	Note: { 
	This tool is just for fun. 
	Write you email in the field "mailto" and click on the button "Code it ".
	Then, copy the results in your html code.
	I suggest to create a javascript file apart, with generated code.
	}
]

;/// Functions Definitions ///

prejoin: func [  
    "Reduce and join a block of values."  
    block [block!] "Values to reduce and join"  
    /with string [ string! ]  
][  
    if empty? block: reduce block [return block]  
    if with [ block: next block forskip block 2 [ insert block string ] ]  
    block: head insert head block copy ""  
    append either series? first block [copy first block] [ form first block ] next block  
]  

;/// code  ////
to-ascii: func [ "retun ASCII code of a chars string" 
	value [ char! string! ] 
	/local value-block email-string ] [
	value-block: copy []
	email-string: ""
		if (type? value) = char! [ return to-integer value]
	count: length? value
	loop count [ append value-block to-integer pick value 1 value: next value ]
	email-string: prejoin/with  value-block ","
	return email-string
]


;/// GUI Definitions ///

my-styles: stylize [
	bout: btn  gray  center middle 85x20 font-size 11 font-name "Courrier" font-color white 
	tx-inf: text ivory font-size 10 font-name "Courrier" middle center 
	field-inf: field 200x18 ivory font-size 10 font-name "Courrier" middle center 
  vtext: text white bold right middle font-size 12 font-name "Courrier" 
  a-propos-text: text 200 white font-size 11 font-name "Courrier" font-color white  
]
; ///////////

; backdrop image
img-fond: load 64#{
R0lGODlhBAEyAPEBAFxcfeDp+O/r7PD1/SH5BAEAAAEALAAAAAAEATIAAQKHhI+p
y+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfM
pvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4
SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKylcAADs=
}

;////////////


coding-layout: func [
/local  val-text ][

val-text: to-ascii f1/text
result: rejoin [  " function NoSpmAddress() { return String.fromCharCode("  val-text  "); }" newline  "function Zap() { return String.fromCharCode(109, 97, 105, 108, 116, 111, 58) + NoSpmAddress(); }"  ]  

; here we define the layout
my-lay: layout/size [ 
	styles my-styles
	backdrop img-fond
	at 10x5
	tx-inf yellow "Code to be placed in a javascript << NoSpm.js >> file : "  
	at 15x25
	bar 400x2 yellow 
	 
	at 30x1
	str1: tx-inf 400x150 to-string result middle left 
	 
	return
	at 10x150
	tx-inf yellow "Code to be placed between the  ...  tags of your HTML pages"  
	at 15x170
	bar 400x2 yellow 
	at 30x175
	tx-inf {} middle left 
	
	return
	at 10x230
	below
	tx-inf yellow "Code to be placed in your email-contact tag of your HTML pages"  
	at 15x248
	bar 400x2 yellow 
	
	return
	at 30x255
	tx-inf 350  middle left  {Contact me ! }  
	return
	at 330x290
	bout "  Close  " 40x20 124.154.220 [unview coding-layout] 

] 430x330  ;end of my-lay 

f1/text: ""

my-lay
]   ; end of coding-layout



;//// Windows "A propos" (standard) 
aPropos: func [/local lay] [
    lay: copy [
    	styles my-styles
        across origin 0x0 space 0x0
        backdrop img-fond
        image logo.gif box 200x24 
        effect [merge gradmul 1x0 0.0.0 128.128.128] return
        pad 10x10 guide
    ]
    foreach [name value] third system/script/header [
        if not none? value [
            append lay reduce [
                'vtext mold :name 'tab 'a-propos-text form value
            ]
            switch/default type?/word value [
                string! [append lay mold [with [feel: none]]]
                email! [append/only lay compose/deep [
                        alive?: true error? try [emailer/to (value)]
                    ]]
                url! [append/only lay compose/deep [
                        error? try [browse (value)]
                    ]]
                file! [append/only lay compose/deep [
                        error? try [editor (value)]
                    ]]
            ] [append lay [with [feel: none]]]
            append lay 'return
        ]
    ]
    append lay [
        pad -10x10
        box 200x24 effect [merge gradmul 1x0 128.128.128 0.0.0]
        button "Close" black [unview/only lay] edge [size: none]
    ]
view/new/title center-face lay: layout lay join system/script/header/title system/script/header/version
]



; /////// main layout ///////
lay-main: layout/tight/size [
styles my-styles
	backtile img-fond
	box 25x50  effect [merge gradmul 0x1 0.0.0 128.128.128] 
	across
	at 30x15
	tx-inf "mailto:" 
	f1: field-inf "your.mail-address@here.com" [ result: "" ]
	at 285x15
	bout "Code it !" 50x20 0.106.5 [
		view/new/title center-face coding-layout  "Code" 
	] 
	
	at 350x15
	bout "Info" 40x20 167.17.17 [aPropos] 
	at 390x15
	bout "Quit" 40x20 124.154.220 [quit] 

]  450x50
;///////////  End GUI defs ///////////////////

;///// MAIN ////
view/new center-face lay-main
do-events