AJAX and Cocoon

possumneckvegetableΛογισμικό & κατασκευή λογ/κού

4 Ιουλ 2012 (πριν από 4 χρόνια και 11 μήνες)

238 εμφανίσεις

www.
a
nyware
-
t
ech
.
c
om
A
J
A
X

a
n
d

C
o
c
o
o
n
S
y
l
v
a
i
n

W
a
l
l
e
z
Anyware Technologies, Apache Software
F
oundation
http://people.apache.
o
rg
/
~sylvain
2
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
O
v
e
r
v
i
e
w
!
W
h
a
t

i
s

Aj
a
x
?
!
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
!
H
o
w

t
o

u
s
e

i
t
!
H
o
w

i
t

w
o
r
k
s
!
A
j
a
x

g
o
o
d
i
e
s
3
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
"
W
h
a
t

i
s

A
j
a
x
?
!
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
!
H
o
w

t
o

u
s
e

i
t
!
H
o
w

i
t

w
o
r
k
s
!
A
j
a
x

g
o
o
d
i
e
s
4
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
Amsterdam's Football Club!
5
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
A
c
leaning products
b
rand!
6
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
Fire extinguishers
!
7
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
o

i
s

A
j
a
x
?
A
G
reek Hero
!
8
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
A technique to
b
uild
s
mart
web
a
pplications!
9
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
Asynchronous JavaScript And
X
ML
!
A

c
a
t
c
h
y

n
a
m
e

f
o
r

so
m
e

no
t
-
s
o
-
n
e
w

t
e
c
h
n
o
l
o
g
i
e
s
!
C
o
i
n
e
d

b
y

J
e
s
s
e

J
a
m
e
s

G
a
r
r
e
t

f
r
o
m

A
d
a
p
t
i
v
e
P
a
t
h
!
J
a
v
a
S
c
r
i
p
t
!
h
a
s

b
e
e
n

t
h
e
r
e

s
i
n
c
e

1
9
9
5
!
A
s
y
n
c
h
r
o
n
o
u
s

r
e
q
u
e
s
t
s

t
o

t
h
e

s
e
r
v
e
r
!
X
M
L
H
t
t
p
R
e
q
u
e
s
t

s
i
n
c
e

I
E

4

a
n
d

M
o
z
i
l
l
a

1
.
0
!
U
s
e

o
f

h
i
d
d
e
n

f
r
a
m
e
s

b
e
f
o
r
e
!
X
M
L

d
a
t
a

i
n

r
e
s
p
o
n
s
e
s
!
U
s
e

D
H
T
M
L

t
o

u
p
d
a
t
e

t
h
e

p
a
g
e
1
0
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
Classical
m
odel:
s
ynchronous
i
nteraction
(
f
r
o
m

w
w
w
.
a
d
a
p
t
i
v
e
p
a
t
h
.
c
o
m
)
1
1
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
W
h
a
t

i
s

A
j
a
x
?
Ajax model:
a
synchronous
i
nteraction
(
f
r
o
m

w
w
w
.
a
d
a
p
t
i
v
e
p
a
t
h
.
c
o
m
)
1
2
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
!
W
h
a
t

i
s

Aj
a
x
?
"
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
!
H
o
w

t
o

u
s
e

i
t
!
H
o
w

i
t

w
o
r
k
s
!
A
j
a
x

g
o
o
d
i
e
s
1
3
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
A must-have
f
eature
!
!
C
o
c
o
o
n

F
o
r
m
s

h
a
s

i
n
t
e
r
a
c
t
i
v
e

f
e
a
t
u
r
e
s
!
V
a
l
i
d
a
t
i
o
n

(
d
o
n
't

l
e
a
v
e

t
h
e

f
o
r
m

u
n
t
i
l

f
i
n
i
s
h
e
d
)
!
E
v
e
n
t

h
a
n
d
l
e
r
s

(
i
n
t
e
r
a
c
t
i
o
n

b
e
t
w
e
e
n

w
i
d
g
e
t
s
)
!
R
e
p
e
a
t
e
r
s

(
a
d
d
/
d
e
l
e
t
e
/
m
o
v
e

r
o
w
s
)
!
F
u
l
l

p
a
g
e

r
e
l
o
a
d
s

w
o
r
k
s

b
u
t

!
S
l
o
w

u
s
e
r

e
x
p
e
r
i
e
n
c
e
!
U
s
e
l
e
s
s

l
o
a
d

o
n

t
h
e

s
e
r
v
e
r
1
4
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
How to use Ajax in
y
our forms
?
!
T
h
a
t
'
s

a
l
l

t
h
e
r
e

i
s

t
o

d
o
!

W
e
l
l
,

m
o
s
t
l
y
.
<
h
t
m
l

x
m
l
n
s
:
f
t
=
"
h
t
t
p
:
/
/
a
p
a
c
h
e
.
o
r
g
/
c
o
c
o
o
n
/
fo
r
m
s
/
1
.
0
#
t
e
m
p
l
a
t
e
"
>


<
h
e
a
d
>




<
ti
t
l
e
>
Re
g
i
s
t
r
a
t
i
o
n

f
o
r
m
<
/
t
i
t
l
e
>


<
/
h
e
a
d
>


<
b
o
d
y
>




<
h1
>
R
e
g
i
s
t
r
a
t
i
o
n
<
/
h
1
>




<
ft
:
f
o
r
m
-
t
e
m
p
l
a
t
e

a
c
t
i
o
n
=
"c
o
n
t
i
n
u
e
.
h
t
m
l
"

m
e
t
h
o
d
=
"
P
O
S
T
"

a
j
a
x
=
"
t
r
u
e
"

>






<
f
t
:
w
i
d
g
e
t
-
l
a
b
e
l

id
=
"
n
a
m
e
"
/
>






<
f
t
:
w
i
d
g
e
t

id
=
"
n
a
m
e
"
/
>








.
.
.
/
.
.
.






<
f
t
:
w
i
d
g
e
t

id
=
"
o
k
"
/
>






<
f
t
:
c
o
n
t
i
n
u
a
t
i
o
n
-
i
d
/
>




<
/
f
t
:
f
o
r
m
-
t
e
m
p
l
a
t
e
>


<
/
b
o
d
y
>
<
/
h
t
m
l
>
1
5
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
ajax
=
"
t
rue
"
.
M
ostly
?
!
C
o
n
t
a
i
n
e
r

w
i
d
g
e
t
s

m
u
s
t

e
n
c
l
o
s
e

a

c
o
n
t
a
i
n
e
r

e
l
e
m
e
n
t
!
T
h
e

w
i
d
g
e
t
'
s

id

w
i
l
l

b
e

a
d
d
e
d

t
o

t
h
e

e
l
e
m
e
n
t
"
N
e
e
d
e
d

t
o

i
d
e
n
t
i
f
y

a
n
d

u
p
d
a
t
e

t
h
e

a
r
e
a

d
i
s
p
l
a
y
i
n
g

t
h
e
c
o
n
t
a
i
n
e
r
<
f
t
:
t
r
e
e

i
d
=
"
t
r
e
e
2
"
>


<
d
i
v
>




T
r
e
e

s
a
m
p
l
e
:




<
ft
:
t
r
e
e
-
n
o
d
e
s
>






<
d
i
v

st
y
l
e
=
"
m
a
r
g
i
n
-
l
e
f
t
:
1
5
p
x
"
>
<
t
o
g
g
l
e
-
i
c
o
n
/
>
$
{
tr
e
e
N
o
d
e
.
n
o
d
e
.
d
a
t
a
}








<
f
t
:
t
r
e
e
-
ch
i
l
d
r
e
n
/
>






<
/
d
i
v
>




<
/
f
t
:
t
r
e
e
-
n
o
d
e
s
>


<
/
d
i
v
>
<
/
f
t
:
tr
e
e
>
1
6
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
ajax
=
"
t
rue
"
.
M
ostly
?
!
U
s
e

t
h
e

n
e
w

<
ft
:
r
e
p
e
a
t
e
r
>

i
n
s
t
r
u
c
t
i
o
n
"
B
e
c
a
u
s
e

<
f
t
:
r
e
p
e
a
t
e
r
-
w
i
d
g
e
t
>

i
t
e
r
a
t
e
s

o
n

r
o
w
s

a
n
d
t
h
u
s

d
o
e
s
n
't

d
i
s
t
i
n
g
u
i
s
h

t
h
e

r
e
p
e
a
t
e
r

f
r
o
m

i
t
s

r
o
w
s
<
f
t
:
r
e
p
e
a
t
e
r

i
d
=
"
c
o
n
t
a
c
t
s
"
>


<
t
a
b
l
e
>




<
tr
>






<
t
h
>
<
ft
:
r
e
p
e
a
t
e
r
-
wi
d
g
e
t
-l
a
b
e
l

w
i
d
g
e
t
-
i
d
=
"
fi
r
s
t
n
a
m
e
"
/
>
<
/
t
h
>






<
t
h
>
<
ft
:
r
e
p
e
a
t
e
r
-
wi
d
g
e
t
-l
a
b
e
l

w
i
d
g
e
t
-
i
d
=
"
la
s
t
n
a
m
e
"
/
>
<
/
t
h
>






<
t
h
>
<
ft
:
r
e
p
e
a
t
e
r
-
wi
d
g
e
t
-l
a
b
e
l

w
i
d
g
e
t
-
i
d
=
"
I
D
"
/
>
<
/
t
h
>






<
t
h
>
<
ft
:
r
e
p
e
a
t
e
r
-
wi
d
g
e
t
-l
a
b
e
l

w
i
d
g
e
t
-
i
d
=
"
s
e
l
e
c
t
"
/
>
<
/
t
h
>




<
/
t
r
>




<
ft
:
r
e
p
e
a
t
e
r
-
ro
w
s
>






<
t
r

c
l
a
s
s
=
"
fo
r
m
s
-
ro
w
-
$
{
re
p
e
a
t
e
r
L
o
o
p
.i
n
d
e
x

%

2
}
"
>








<
t
d
><
f
t
:
w
i
d
g
e
t

id
=
"
f
i
r
s
t
n
a
m
e
"
/
>
<
/
td
>








<
t
d
><
f
t
:
w
i
d
g
e
t

id
=
"
l
a
s
t
n
a
m
e
"
/
>
<
/
t
d
>








<
t
d
><
f
t
:
w
i
d
g
e
t

id
=
"
I
D
"
/
>
<
/
t
d
>








<
t
d
><
f
t
:
w
i
d
g
e
t

id
=
"
s
e
l
e
c
t
"
/
>
<
/
t
d
>






<
/
t
r
>




<
ft
:
r
e
p
e
a
t
e
r
-
ro
w
s
>


<
/
t
a
b
l
e
>
<
/
f
t
:
re
p
e
a
t
e
r
>
R
e
p
e
a
t
e
r
c
o
n
t
a
i
n
e
r
R
o
w
s
c
o
n
t
a
i
n
e
r
J
X
T
e
m
p
l
a
t
e
i
t
e
r
a
t
o
r
1
7
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
ajax
=
"
t
rue
"
.
M
ostly
?
!
Y
o
u

m
u
s
t

u
s
e

t
h
e

J
X
T
e
m
p
l
a
t
e
G
e
n
e
r
a
t
o
r

m
a
c
r
o
s
"
A
j
a
x

n
o
t

y
e
t

s
u
p
p
o
r
t
e
d

b
y

t
h
e

F
o
r
m
s
T
r
a
n
s
f
o
r
m
e
r
!
I
n

a
g
g
r
e
g
a
t
i
o
n
s

(
p
o
r
t
a
l
)
,

u
s
e

"
a
j
a
x
-a
c
t
i
o
n
"
"
P
o
s
t
s

t
o

t
h
e

a
c
t
u
a
l

p
i
p
e
l
i
n
e
,

n
o
t

t
h
e

p
o
r
t
a
l
<
h
t
m
l

x
m
l
n
s
:
f
t
=
"
h
t
t
p
:
/
/
a
p
a
c
h
e
.
o
r
g
/
c
o
c
o
o
n
/
fo
r
m
s
/
1
.
0
#
t
e
m
p
l
a
t
e
"






x
m
l
n
s
:
j
x
=
"
h
t
t
p
:
/
/
a
p
a
c
h
e
.
o
r
g
/
c
o
c
o
o
n
/
te
m
p
l
a
t
e
s
/
j
x
/1
.
0
"
>


<
j
x
:i
m
p
o
r
t

u
r
i
=
"
r
e
s
o
u
r
c
e
:
/
/
or
g
/
a
p
a
c
h
e
/
c
o
c
o
o
n
/
fo
r
m
s
/
ge
n
e
r
a
t
i
o
n
/
j
x
-
m
a
c
r
o
s
.
x
m
l
"
/
>


.
.
.
/
.
.
.
<
/
h
t
m
l
>
<
f
t
:
f
o
r
m
-
t
e
m
p
l
a
t
e

a
c
t
i
o
n
=
"
/
p
o
r
t
a
l
"

aj
a
x
-
a
c
t
i
o
n
=
"/
c
o
p
l
e
t
s
/
a
p
p
/
c
o
n
t
i
n
u
e
"


















m
e
t
h
o
d
=
"
P
O
S
T
"

a
j
a
x
=
"
t
r
u
e
"
>


.
.
.
/
.
.
.
<
/
f
t
:
fo
r
m
-
t
e
m
p
l
a
t
e
>
1
8
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
ajax
=
"
t
rue
"
.
M
ostly
?
!
A
n
d

t
h
a
t
'
s

al
l
.
!
R
e
a
l
l
y
.
!
S
o

w
h
e
r
e

i
s

t
h
e

m
a
g
i
c
?
1
9
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
Basic
i
dea
:
partial updates
!
T
h
e

f
o
r
m

i
s

p
o
s
t
e
d

u
s
i
n
g

a
n

A
j
a
x

r
e
q
u
e
s
t
"
R
e
a
c
t
i
o
n

t
o

"
s
u
b
m
i
t
-
o
n
-
c
h
a
n
g
e
"

f
i
e
l
d

o
r

a
c
t
i
o
n

w
i
d
g
e
t
!
S
e
v
e
r
a
l

a
r
e
a
s

m
a
y

ha
v
e

t
o

b
e

u
p
d
a
t
e
d
,

b
u
t

w
e

d
o
n
'
t
k
n
o
w

w
h
i
c
h

o
n
e
s
"
D
e
p
e
n
d
s

o
n

s
e
r
v
e
r
-
s
i
d
e

v
a
l
i
d
a
t
i
o
n
s

a
n
d

l
i
s
t
e
n
e
r
s
!
S
o

w
e

n
e
e
d

t
h
e

s
e
r
v
e
r

t
o

s
e
n
d

b
a
c
k

b
r
o
w
s
e
r

u
p
d
a
t
e
i
n
s
t
r
u
c
t
i
o
n
s
2
0
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
The
browser-update
n
amespace
!
A

l
i
s
t

o
f

u
p
d
a
t
e
d

s
e
c
t
i
o
n
s
,

w
i
t
h

t
h
e
i
r

i
d
!
C
l
i
e
n
t
-
s
i
d
e

J
a
v
a
S
c
r
i
p
t

re
p
l
a
c
e
s

ex
i
s
t
i
n
g

s
e
c
t
i
o
n
s

w
i
t
h
t
h
e
i
r

f
r
e
s
h
l
y

p
r
o
d
u
c
e
d

r
e
p
l
a
c
e
m
e
n
t
.
<
b
u
:
d
o
c
u
m
e
n
t




x
m
l
n
s
:
b
u
=
"
h
t
t
p
:
/
/
a
p
a
c
h
e
.
o
r
g
/
c
o
c
o
o
n
/
b
r
o
w
s
e
r
-
u
p
d
a
t
e
/
1
.
0
"
>


<
b
u
:
r
e
p
l
a
c
e

i
d
=
"
e
m
a
i
l
"
>




<
i
n
p
u
t

n
a
m
e
=
"
e
m
a
i
l
"

i
d
=
"
e
m
a
i
l
"

v
a
l
u
e
=
"
s
y
l
v
a
i
n
@
a
p
a
c
h
e
.
o
r
g
"
/
>


<
/
b
u
:
r
e
p
l
a
c
e
>


<
b
u
:
r
e
p
l
a
c
e

i
d
=
"
m
e
s
s
a
g
e
"
>




<
s
p
a
n

i
d
=
"
m
e
s
s
a
g
e
"
>
M
a
i
l

s
e
n
t
<
/
s
p
a
n
>


<
/
b
u
:
r
e
p
l
a
c
e
>
<
/
b
u
:
d
o
c
u
m
e
n
t
>
2
1
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
Ajax
r
oundtrip
!
F
o
r
m

i
s

p
o
s
t
e
d

a
s
y
n
c
h
r
o
n
o
u
s
l
y

(
A
j
a
x

r
e
q
u
e
s
t
)
"
"
?
c
o
c
o
o
n
-
a
j
a
x
=
t
r
u
e
"

i
n
d
i
c
a
t
e
s

A
j
a
x

m
o
d
e
!
D
u
r
i
n
g

r
e
q
u
e
s
t

p
r
o
c
e
s
s
i
n
g
,

u
p
d
a
t
e
d

w
i
d
g
e
t
s

a
r
e
c
o
l
l
e
c
t
e
d
!
F
o
r
m

t
e
m
p
l
a
t
e

i
s

e
x
e
c
u
t
e
d

i
n

"
A
j
a
x

m
o
d
e
"
"
N
o
n
-
u
p
d
a
t
e
d

w
i
d
g
e
t
s

a
r
e

i
g
n
o
r
e
d

(
s
p
e
e
d
-
u
p
)
"
U
p
d
a
t
e
d

w
i
d
g
e
t
s

a
r
e

e
n
c
l
o
s
e
d

i
n

<
b
u
:
r
e
p
l
a
c
e
>
!
I
n
s
t
a
n
c
i
a
t
e
d

t
e
m
p
l
a
t
e

i
s

f
i
l
t
e
r
e
d

t
o

k
e
e
p

o
n
l
y
u
p
d
a
t
e
d

s
e
c
t
i
o
n
s
"
T
h
e

B
r
o
w
s
e
r
U
p
d
a
t
e
T
r
a
n
s
f
o
r
m
e
r
!
U
p
d
a
t
e
d

s
e
c
t
i
o
n
s

a
r
e

st
y
l
e
d

a
n
d

s
e
n
t

t
o

t
h
e

b
r
o
w
s
e
r
2
2
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
Widget
u
pdates
!
C
h
a
n
g
e
d

w
i
d
g
e
t
s

n
o
t
i
f
y

t
h
e
i
r

c
h
a
n
g
e
s

t
o

t
h
e

F
o
r
m
"
T
h
e

f
o
r
m

h
o
l
d
s

a

l
i
s
t

o
f

u
p
d
a
t
e
d

w
i
d
g
e
t
s
!
W
h
a
t

d
o
e
s

"
c
h
a
n
g
e
"

m
e
a
n
?
!
A
n
y

w
i
d
g
e
t
:

s
t
a
t
e
,

v
a
l
i
d
a
t
i
o
n

e
r
r
o
r
!
F
i
e
l
d
:

v
a
l
u
e
,

s
e
l
e
c
t
i
o
n
-
l
i
s
t
!
R
e
p
e
a
t
e
r
:

a
d
d
/
d
e
l
e
t
e
/
m
o
v
e

r
o
w
!
U
n
i
o
n
:

c
a
s
e

v
a
l
u
e
!
E
t
c

"
D
e
p
e
n
d
s

o
n

t
h
e

a
c
t
u
a
l

w
i
d
g
e
t

i
m
p
l
e
m
e
n
t
a
t
i
o
n
2
3
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
Pipeline
o
verview
J
X
T
g
e
n
e
r
a
t
o
r
x
s
l
t
A
j
a
x
r
e
q
u
e
s
t
?
B
r
o
w
s
e
r
u
p
d
a
t
e
i
1
8
n
x
m
l
h
t
m
l
F
u
l
l

t
e
m
p
l
a
t
e
F
u
l
l

t
e
m
p
l
a
t
e
(
n
o

m
o
d
i
f
i
c
a
t
i
o
n
s
)
S
t
y
l
e
d

p
a
g
e
P
a
g
e

s
t
r
u
c
t
u
r
e

a
n
d
u
p
d
a
t
e
d

w
i
d
g
e
t
s

i
n
<
b
u
:
r
e
p
l
a
c
e
>
U
p
d
a
t
e
d

w
i
d
g
e
t
s

i
n
<
b
u
:
r
e
p
l
a
c
e
>
e
l
e
m
e
n
t
s
S
t
y
l
e
d

u
p
d
a
t
e
s

i
n
<
b
u
:
r
e
p
l
a
c
e
>

e
l
e
m
e
n
t
s
Regular
request
Ajax
request
N
Y
2
4
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
The BrowserUpdateTransformer
!
F
l
a
t
t
e
n

<
b
u
:
r
e
p
l
a
c
e
>
,

a
d
d

I
D
s
,

r
e
m
o
v
e

e
v
e
r
y
t
h
i
n
g

e
l
s
e
<
b
u
:
d
o
c
u
m
e
n
t

x
m
l
n
s
:
b
u
=
"
h
t
t
p
:
/
/
a
p
a
c
h
e
.




o
r
g
/
c
o
c
o
o
n
/
b
r
o
w
s
e
r
-
u
p
d
a
t
e
/
1
.
0
"
>


<
b
u
:
r
e
p
l
a
c
e

i
d
=
"
c
o
n
t
a
c
t
s
"
>




<
d
i
v

i
d
=
"
c
o
n
t
a
c
t
s
"
>








.
.
.
/
.
.
.




<
/
d
i
v
>


<
/
b
u
:
r
e
p
l
a
c
e
>


<
b
u
:
r
e
p
l
a
c
e

i
d
=
"
a
d
d
"
>




<
f
i
:
a
c
t
i
o
n

i
d
=
"
a
d
d
>






<
f
i
:
l
a
b
e
l
>








A
d
d

a

c
o
n
t
a
c
t






<
/
f
i
:
l
a
b
e
l
>




<
/
f
i
:
a
c
t
i
o
n
>


<
/
b
u
:
r
e
p
l
a
c
e
>
<
/
b
u
:
d
o
c
u
m
e
n
t
>
<
h
t
m
l

x
m
l
n
s
:
b
u
=
"
h
t
t
p
:
/
/
a
p
a
c
h
e
.
o
r
g
/






c
o
c
o
o
n
/
b
r
o
w
s
e
r
-
u
p
d
a
t
e
/
1
.
0
"
>


<
b
o
d
y
>




C
o
n
t
a
c
t
s




<
b
u
:
r
e
p
l
a
c
e

i
d
=
"
c
o
n
t
a
c
t
s
"
>






<
d
i
v
>








.
.
.
/
.
.
.






<
/
d
i
v
>




<
/
b
u
:
r
e
p
l
a
c
e
>




<
b
r
/
>




<
b
u
:
r
e
p
l
a
c
e

i
d
=
"
a
d
d
"
>






<
f
i
:
a
c
t
i
o
n

i
d
=
"
a
d
d
>








<
f
i
:
l
a
b
e
l
>










A
d
d

a

c
o
n
t
a
c
t








<
/
f
i
:
l
a
b
e
l
>






<
/
f
i
:
a
c
t
i
o
n
>




<
/
b
u
:
r
e
p
l
a
c
e
>


<
/
b
o
d
y
>
<
/
h
t
m
l
>
2
5
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
H
o
w

i
t

w
o
r
k
s
Cross browser issues
!
U
s
e
s

a

v
e
r
y

s
m
a
l
l

J
S

l
i
b
r
a
r
y
!
R
e
d
u
c
e
s

p
o
r
t
a
b
i
l
i
t
y

p
r
o
b
l
e
m
s
!
D
e
g
r
a
d
e
s

n
i
c
e
l
y

on

n
o
n

A
j
a
x
-
c
a
p
a
b
l
e

b
r
o
w
s
e
r
s
!
G
o
e
s

b
a
c
k

t
o

"
o
l
d
-
f
a
s
h
i
o
n
e
d
"

f
u
l
l

p
a
g
e

r
e
l
o
a
d
2
6
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
!
W
h
a
t

i
s

Aj
a
x
?
!
A
j
a
x

a
n
d

C
o
c
o
o
n

F
o
r
m
s
!
H
o
w

t
o

u
s
e

i
t
!
H
o
w

i
t

w
o
r
k
s
"
A
j
a
x

g
o
o
d
i
e
s
2
7
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

g
o
o
d
i
e
s
The
script.
a
culo
.
us
l
ibrary
!
A

g
r
e
a
t

J
a
v
a
S
c
r
i
p
t

l
i
b
r
a
r
y

to

b
u
i
l
d

Aj
a
x

a
p
p
l
i
c
a
t
i
o
n
s
!
O
r
i
g
i
n
a
l
l
y

w
r
i
t
t
e
n

fo
r

R
u
b
y

o
n

R
a
i
l
s
!
U
s
e
s

t
h
e

s
a
m
e

p
a
r
t
i
a
l

p
a
g
e

u
p
d
a
t
e

a
p
p
r
o
a
c
h
!
A

l
o
t

o
f

c
o
o
l

f
e
a
t
u
r
e
s
!
V
i
s
u
a
l

e
f
f
e
c
t
s
!
A
u
t
o
c
o
m
p
l
e
t
e
!
D
r
a
g
'n

d
r
o
p
!
E
t
c

!
M
I
T
-
s
t
y
l
e

l
i
c
e
n
c
e
!
2
8
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

g
o
o
d
i
e
s
Cocoon
s
uggests
!
R
e
u
s
e
s

t
h
e

s
e
l
e
c
t
i
o
n
-
l
i
s
t

f
r
a
m
e
w
o
r
k
"
A
d
d
s

a
d
d
i
t
i
o
n
a
l

f
i
l
t
e
r
i
n
g

c
a
p
a
b
i
l
i
t
i
e
s
<
f
d
:
f
i
e
l
d

i
d
=
"
p
a
t
h
"
>


<
f
d
:
d
a
t
a
t
y
p
e

b
a
s
e
=
"
s
t
r
i
n
g
"
/
>


<
f
d
:
s
u
g
g
e
s
t
i
o
n
-
l
i
s
t
>




<
f
d
:
i
t
e
m

v
a
l
u
e
=
"
a
a
a
"
/
>




<
f
d
:
i
t
e
m

v
a
l
u
e
=
"
a
b
b
"
/
>




<
f
d
:
i
t
e
m

v
a
l
u
e
=
"
a
b
c
"
/
>




<
f
d
:
i
t
e
m

v
a
l
u
e
=
"
a
c
c
"
>






<
f
d
:
l
a
b
e
l
>








T
h
e

l
a
s
t

o
n
e






<
/
f
d
:
l
a
b
e
l
>




<
/
f
d
:
i
t
e
m
>


<
/
f
d
:
s
u
g
g
e
s
t
i
o
n
-
l
i
s
t
>
<
/
f
d
:
f
i
e
l
d
>
2
9
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

g
o
o
d
i
e
s
Ongoing work
!
E
x
t
e
n
d
e
d

t
h
e

"
t
a
r
g
e
t
"

a
t
t
r
i
b
u
t
e

t
o

i
n
t
r
a
-
d
o
c
u
m
e
n
t
u
p
d
a
t
e
s
!
N
o

m
o
r
e

l
i
m
i
t
e
d

t
o

f
r
a
m
e
s

o
r

w
i
n
d
o
w
s
<
t
d

w
i
d
t
h
=
"
3
0
%
"
>


<
a

hr
e
f
=
"
li
n
k
e
d
-u
p
d
a
t
e
r
-
c
o
n
t
e
n
t
-
1
"





bu
:
t
a
r
g
e
t
=
"
r
e
p
l
a
c
e
:
:
c
h
a
n
g
e
m
e
"
>
Do

a

r
e
p
l
a
c
e
</
a
>
<
b
r
/
>


<
a

hr
e
f
=
"
li
n
k
e
d
-u
p
d
a
t
e
r
-
c
o
n
t
e
n
t
-
2
"





bu
:
t
a
r
g
e
t
=
"
r
e
p
l
a
c
e
:
:
c
h
a
n
g
e
m
e
"
>
Do

a

d
i
f
f
e
r
e
n
t

r
e
p
l
a
c
e
<
/
a
>
<
b
r
/
>


<
a

hr
e
f
=
"
li
n
k
e
d
-u
p
d
a
t
e
r
-
c
o
n
t
e
n
t
-
3
"





bu
:
t
a
r
g
e
t
=
"
i
n
s
e
r
t
-
be
f
o
r
e
::
c
h
a
n
g
e
m
e
"
>
In
s
e
r
t

b
e
f
o
r
e
<
/
a
>
<
br
/
>


<
a

hr
e
f
=
"
li
n
k
e
d
-u
p
d
a
t
e
r
-
c
o
n
t
e
n
t
-
3
"





bu
:
t
a
r
g
e
t
=
"
i
n
s
e
r
t
-
t
o
p
:
:
c
h
a
n
g
e
m
e
"
>
I
n
s
e
r
t

a
t

t
h
e

t
o
p
<
/
a
>
<
b
r
/
>


<
a

hr
e
f
=
"
li
n
k
e
d
-u
p
d
a
t
e
r
-
c
o
n
t
e
n
t
-
3
"





bu
:
t
a
r
g
e
t
=
"
i
n
s
e
r
t
-
bo
t
t
o
m
::
c
h
a
n
g
e
m
e
"
>
In
s
e
r
t

a
t

t
h
e

b
o
t
t
o
m
<
/
a
>
<
b
r
/
>


<
a

hr
e
f
=
"
li
n
k
e
d
-u
p
d
a
t
e
r
-
c
o
n
t
e
n
t
-
3
"





bu
:
t
a
r
g
e
t
=
"
i
n
s
e
r
t
-
af
t
e
r
:
:
c
h
a
n
g
e
m
e
"
>
I
n
s
e
r
t

af
t
e
r
<
/
a
>
<
b
r
/>
<
/
t
d
>
3
0
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
A
j
a
x

g
o
o
d
i
e
s
Ongoing work
!
U
p
l
o
a
d

p
r
o
g
r
e
s
s

b
a
r
!
M
u
l
t
i
p
a
r
t

r
e
q
u
e
s
t

p
a
r
s
e
r

s
t
o
r
e
s

p
r
o
g
r
e
s
s

i
n
f
o
r
m
a
t
i
o
n

i
n
t
h
e

s
e
s
s
i
o
n
!
A
j
a
x

r
e
q
u
e
s
t

g
e
t
s

i
t

a
n
d

u
p
d
a
t
e
s

t
h
e

p
r
o
g
r
e
s
s

b
a
r
3
1
w
w
w
.
a
n
y
w
a
r
e
-
t
e
c
h
.
c
o
m
C
o
n
c
l
u
s
i
o
n
!
T
h
i
s

i
s

s
o

c
o
o
l
!

H
o
w

c
a
n

I

g
e
t

t
h
i
s

s
t
u
f
f
?
"
G
e
t

i
t

f
r
o
m

S
V
N
,

t
h
i
s

w
i
l
l

b
e

i
n

C
o
c
o
o
n

2
.
1
.
8
!
Q
u
e
s
t
io
n
s
?