rt 4.2.16
[freeside.git] / rt / share / static / js / late.js
1 // Lower the speed limit for hover intent event
2 jQuery.event.special.hover.speed = 80; // pixels per second
3
4 jQuery(function() { sync_grouped_custom_fields() } );
5 function sync_grouped_custom_fields() {
6     var all_inputs = jQuery("input,textarea,select");
7     var parse_cf = /^Object-([\w:]+)-(\d*)-CustomField(?::\w+)?-(\d+)-(.*)$/;
8     all_inputs.each(function() {
9         var elem = jQuery(this);
10         var parsed = parse_cf.exec(elem.attr("name"));
11         if (parsed == null)
12             return;
13         if (/-Magic$/.test(parsed[4]))
14             return;
15         var name_filter_regex = new RegExp(
16             "^Object-"+parsed[1]+"-"+parsed[2]+
17              "-CustomField(?::\\w+)?-"+parsed[3]+"-"+parsed[4]+"$"
18         );
19         var update_elems = all_inputs.filter(function () {
20             return name_filter_regex.test(jQuery(this).attr("name"));
21         }).not(elem);
22         if (update_elems.length == 0)
23             return;
24         var trigger_func = function() {
25             var curval = elem.val();
26             if ((elem.attr("type") == "checkbox") || (elem.attr("type") == "radio")) {
27                 curval = [ ];
28                 jQuery('[name="'+elem.attr("name")+'"]:checked').each( function() {
29                     curval.push( jQuery(this).val() );
30                 });
31             }
32             update_elems.val(curval);
33         };
34         if ((elem.attr("type") == "text") || (elem.attr("tagName") == "TEXTAREA"))
35             elem.keyup( trigger_func );
36         else
37             elem.change( trigger_func );
38     });
39 }