1 | ( function( ) |
---|
2 | { |
---|
3 | var _connector = new XConnector; |
---|
4 | |
---|
5 | function XForm( ) |
---|
6 | { |
---|
7 | if ( ! ( arguments.length && arguments[ 0 ] && arguments[ 0 ].nodeName && arguments[ 0 ].nodeName.toLowerCase( ) == 'form' ) ) |
---|
8 | return false; |
---|
9 | |
---|
10 | var _form = arguments[ 0 ]; |
---|
11 | var _handler = null; |
---|
12 | |
---|
13 | if ( arguments.length > 1 && arguments[ 1 ] && arguments[ 1 ].constructor == Function ) |
---|
14 | _handler = arguments[ 1 ]; |
---|
15 | |
---|
16 | var a = [ ]; |
---|
17 | var _post = [ ]; |
---|
18 | |
---|
19 | function _input( _element ) |
---|
20 | { |
---|
21 | switch ( _element.type.toLowerCase( ) ) |
---|
22 | { |
---|
23 | case 'hidden' : |
---|
24 | case 'password' : |
---|
25 | case 'submit' : |
---|
26 | case 'text' : |
---|
27 | _post[ _post.length ] = _element.name + '=' + escape( _element.value.trim( ) ); |
---|
28 | break; |
---|
29 | case 'checkbox' : |
---|
30 | if ( _element.checked ) |
---|
31 | { |
---|
32 | _post[ _post.length ] = _element.name + '=' + escape( _element.value ); |
---|
33 | break; |
---|
34 | } |
---|
35 | default : |
---|
36 | a[ a.length ] = " input - " + _element.type + "\n\t" + _element.name; |
---|
37 | } |
---|
38 | } |
---|
39 | |
---|
40 | function _select( _element ) |
---|
41 | { |
---|
42 | if ( _element.type == 'select-one' ) |
---|
43 | _post[ _post.length ] = _element.name + '=' + escape( _element.value ); |
---|
44 | |
---|
45 | if ( _element.type == 'select-multiple' ) |
---|
46 | for ( var i = 0; i < _element.length; i++ ) |
---|
47 | if ( _element.options[ i ].selected ) |
---|
48 | _post[ _post.length ] = _element.name + '=' + escape( _element.options[ i ].value ); |
---|
49 | } |
---|
50 | |
---|
51 | function _textarea( _element ) |
---|
52 | { |
---|
53 | _post[ _post.length ] = _element.name + '=' + escape( _element.value.trim( ) ); |
---|
54 | } |
---|
55 | |
---|
56 | function _send( ) |
---|
57 | { |
---|
58 | _connector.go( |
---|
59 | { |
---|
60 | 'access' : _form.action, |
---|
61 | 'handler' : _handler, |
---|
62 | 'post' : _post.sort( ).join( "&" ) |
---|
63 | } ); |
---|
64 | } |
---|
65 | |
---|
66 | for ( var i = 0; i < _form.length; i++ ) |
---|
67 | if ( _form[ i ].name ) |
---|
68 | switch ( _form[ i ].nodeName.toLowerCase( ) ) |
---|
69 | { |
---|
70 | case 'input' : |
---|
71 | _input( _form[ i ] ); |
---|
72 | break; |
---|
73 | case 'select' : |
---|
74 | _select( _form[ i ] ); |
---|
75 | break; |
---|
76 | case 'textarea' : |
---|
77 | _textarea( _form[ i ] ); |
---|
78 | break; |
---|
79 | default : |
---|
80 | a[ a.length ] = _form[ i ].nodeName + "\t\t" + _form[ i ].type + "\t" + _form[ i ].name; |
---|
81 | } |
---|
82 | |
---|
83 | //alert( a.join( "\n" ) ); |
---|
84 | //alert( _post.sort( ).join( "\n" ) ); |
---|
85 | |
---|
86 | _send( ); |
---|
87 | |
---|
88 | return false; |
---|
89 | } |
---|
90 | |
---|
91 | window.XForm = XForm; |
---|
92 | } )( ); |
---|