AI
Animation
CGI
Compression
Console
Database
Debug
Dialects
Dialogs
Editor
Email
Encryption
Extension
External Library
File
File Handling
Files
Financial
FTP
Game
Games
Graphics
GUI
HTML
HTTP
Internet
LDC
Markup
Math
Module
Network
Networking
None
Other - Net
Parse
Patch
Printing
Protocol
Rebol
Scheme
Scientific
SDK
Security
Shell
Sound
SQL
TCP
Testing
Text
Text Processing
UI
User Interface
Util
Utility
VID
Visualization
Web
Win API
X-File
XML
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


            
            
        
Copyright © 2018 Rebol Software Foundation