4 * Ajatus - Distributed CRM
5 * @requires jQuery v1.2.1
7 * Copyright (c) 2007 Jerry Jalava <jerry.jalava@gmail.com>
8 * Copyright (c) 2007 Nemein Oy <http://nemein.com>
9 * Website: http://ajatus.info
10 * Licensed under the GPL license
11 * http://www.gnu.org/licenses/gpl.html
16 $.ajatus
= $.ajatus
|| {};
20 $.ajatus
.utils
.array
= {
21 has_match: function(needles
, haystack
) {
22 if ( typeof haystack
!= 'object'
23 || haystack
.length
<= 0)
28 if (typeof needles
== 'object') {
30 $.each(needles
, function(i
,needle
){
31 if ($.inArray(needle
, haystack
) != -1) {
34 // if (typeof(haystack[needle]) != 'undefined') {
39 } else if (typeof needles
== 'string') {
41 if ($.inArray(needles
, haystack
) != -1) {
51 $.ajatus
.utils
.object
= {
52 clone: function(obj
) {
53 if(obj
== null || typeof(obj
) != 'object') {
58 temp
[key
] = $.ajatus
.utils
.object
.clone(obj
[key
]);
65 // Put focus on given form element (0 == first) (skips hidden fields)
66 $.fn
.set_focus_on = function(eid
) {
67 var elem
= $('input:visible:not(:hidden)', this).get(eid
);
68 var select
= $('select:visible', this).get(eid
);
71 if (select
.offsetTop
< elem
.offsetTop
) {
76 var textarea
= $('textarea:visible', this).get(eid
);
77 if (textarea
&& elem
) {
78 if (textarea
.offsetTop
< elem
.offsetTop
) {
90 $.ajatus
.utils
.pause = function(ms
) {
91 var date
= new Date();
94 do { currDate
= new Date(); }
95 while(currDate
- date
< ms
);
98 $.ajatus
.utils
.generate_id = function() {
99 random_key
= Math
.floor(Math
.random()*4013);
100 return (10016486 + (random_key
* 22423));
103 $.ajatus
.utils
.get_url_arg = function(name
) {
106 name
= name
.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
107 var exp
= "[\\?&]"+name
+"=([^&#]*)";
108 var regex
= new RegExp( exp
);
109 var results
= regex
.exec(window
.location
.href
);
110 if (results
!= null) {
119 name
= name
.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
120 var regexS
= "[\\?&]"+name
+"=([^&#]*)";
121 var regex
= new RegExp( regexS
);
122 var results
= regex
.exec( window
.location
.href
);
123 if( results
== null )
130 * Following functions are taken from the jquery form plugin.
131 * Plugin can be found from http://www.malsup.com/jquery/form/
133 $.fieldValue = function(el
, successful
) {
134 var n
= el
.name
, t
= el
.type
, tag
= el
.tagName
.toLowerCase();
135 if (typeof successful
== 'undefined') successful
= true;
137 if (successful
&& (!n
|| el
.disabled
|| t
== 'reset' || t
== 'button' ||
138 (t
== 'checkbox' || t
== 'radio') && !el
.checked
||
139 (t
== 'submit' || t
== 'image') && el
.form
&& el
.form
.clk
!= el
||
140 tag
== 'select' && el
.selectedIndex
== -1))
143 if (tag
== 'select') {
144 var index
= el
.selectedIndex
;
145 if (index
< 0) return null;
146 var a
= [], ops
= el
.options
;
147 var one
= (t
== 'select-one');
148 var max
= (one
? index
+1 : ops
.length
);
149 for(var i
=(one
? index
: 0); i
< max
; i
++) {
152 // extra pain for IE...
153 var v
= $.browser
.msie
&& !(op
.attributes
['value'].specified
) ? op
.text
: op
.value
;
162 $.fn
.formToArray = function(semantic
) {
164 if (this.length
== 0) return a
;
167 var els
= semantic
? form
.getElementsByTagName('*') : form
.elements
;
169 for(var i
=0, max
=els
.length
; i
< max
; i
++) {
174 if (semantic
&& form
.clk
&& el
.type
== "image") {
175 // handle image inputs on the fly when semantic == true
176 if(!el
.disabled
&& form
.clk
== el
)
177 a
.push({name
: n
+'.x', value
: form
.clk_x
}, {name
: n
+'.y', value
: form
.clk_y
});
181 var v
= $.fieldValue(el
, true);
182 if (v
&& v
.constructor == Array
) {
183 for(var j
=0, jmax
=v
.length
; j
< jmax
; j
++)
184 a
.push({name
: n
, value
: v
[j
]});
186 else if (v
!== null && typeof v
!= 'undefined')
187 a
.push({name
: n
, value
: v
});
190 if (!semantic
&& form
.clk
) {
191 // input type=='image' are not found in elements array! handle them here
192 var inputs
= form
.getElementsByTagName("input");
193 for(var i
=0, max
=inputs
.length
; i
< max
; i
++) {
194 var input
= inputs
[i
];
196 if(n
&& !input
.disabled
&& input
.type
== "image" && form
.clk
== input
)
197 a
.push({name
: n
+'.x', value
: form
.clk_x
}, {name
: n
+'.y', value
: form
.clk_y
});
203 * Form plugin functions end