5 include( '/elements/search-svc_broadband.html,
7 #slightly deprecated old synonym for field#'field_name'=>'svcnum',
8 'find_button' => 1, #add a "find" button to the field
9 'curr_value' => 54, #current value
10 'value => 32, #deprecated synonym for curr_value
14 <INPUT TYPE="hidden" NAME="<% $field %>" ID="<% $field %>" VALUE="<% $value %>">
16 <!-- some false laziness w/ misc/batch-cust_pay.html, though not as bad as i'd thought at first... -->
19 NAME = "<% $field %>_search"
20 ID = "<% $field %>_search"
22 VALUE="<% $svc_broadband ? $svc_broadband->label : '(svcnum, ip or mac)' %>"
23 onFocus="clearhint_<% $field %>_search(this);"
24 onClick="clearhint_<% $field %>_search(this);"
25 onChange="smart_<% $field %>_search(this);"
28 % if ( $opt{'find_button'} ) {
29 <INPUT TYPE = "button"
31 NAME = "<% $field %>_findbutton"
32 onClick = "smart_<% $field %>_search(this.form.<% $field %>_search);"
36 <SELECT NAME="<% $field %>_select" ID="<% $field %>_select" STYLE="color:#ff0000; display:none" onChange="select_<% $field %>(this);">
39 <% include('/elements/xmlhttp.html',
40 'url' => $p. 'misc/xmlhttp-svc_broadband-search.cgi',
41 'subs' => [ 'smart_search' ],
45 <SCRIPT TYPE="text/javascript">
47 function clearhint_<% $field %>_search (what) {
49 what.style.color = '#000000';
51 if ( what.value == '(svcnum, ip or mac)' )
54 if ( what.value.indexOf('Service not found: ') == 0 )
55 what.value = what.value.substr(20);
59 var <% $field %>_search_active = false;
61 function smart_<% $field %>_search(what) {
63 if ( <% $field %>_search_active )
66 var service = what.value;
68 if ( service == 'searching...' || service == ''
69 || service.indexOf('Service not found: ') == 0 )
72 if ( what.getAttribute('magic') == 'nosearch' ) {
73 what.setAttribute('magic', '');
77 //what.value = 'searching...'
79 what.style.color= '#000000';
80 what.style.backgroundColor = '#dddddd';
82 var service_select = document.getElementById('<% $field %>_select');
84 //alert("search for customer " + customer);
86 function <% $field %>_search_update(services) {
88 //alert('customers returned: ' + customers);
90 var serviceArray = eval('(' + services + ')');
92 what.disabled = false;
93 what.style.backgroundColor = '#ffffff';
95 if ( serviceArray.length == 0 ) {
97 what.form.<% $field %>.value = '';
99 what.value = 'Service not found: ' + what.value;
100 what.style.color = '#ff0000';
102 what.style.display = '';
103 service_select.style.display = 'none';
105 } else if ( serviceArray.length == 1 ) {
107 //alert('one customer found: ' + customerArray[0]);
109 what.form.<% $field %>.value = serviceArray[0][0];
110 what.value = serviceArray[0][1];
112 what.style.display = '';
113 service_select.style.display = 'none';
117 //alert('multiple customers found, have to create select dropdown');
119 //blank the current list
120 for ( var i = service_select.length; i >= 0; i-- )
121 service_select.options[i] = null;
123 opt(service_select, '', 'Multiple services match "' + service + '" - select one', '#ff0000');
125 //add the multiple services
126 for ( var s = 0; s < serviceArray.length; s++ )
127 opt(service_select, serviceArray[s][0], serviceArray[s][1], '#000000');
129 opt(service_select, 'cancel', '(Edit search string)', '#000000');
131 what.style.display = 'none';
132 service_select.style.display = '';
136 <% $field %>_search_active = false;
140 <% $field %>_search_active = true;
142 smart_search( service, <% $field %>_search_update );
147 function select_<% $field %> (what) {
149 var svcnum = what.options[what.selectedIndex].value;
150 var service = what.options[what.selectedIndex].text;
152 var service_obj = document.getElementById('<% $field %>_search');
154 if ( svcnum == '' ) {
155 //what.style.color = '#ff0000';
157 } else if ( svcnum == 'cancel' ) {
159 service_obj.style.color = '#000000';
161 what.style.display = 'none';
162 service_obj.style.display = '';
167 what.form.<% $field %>.value = svcnum;
169 service_obj.value = service;
170 service_obj.style.color = '#000000';
172 what.style.display = 'none';
173 service_obj.style.display = '';
179 function opt(what,value,text,color) {
180 var optionName = new Option(text, value, false, false);
181 optionName.style.color = color;
182 var length = what.length;
183 what.options[length] = optionName;
191 my $field = $opt{'field'} || $opt{'field_name'} || 'svcnum';
193 my $value = $opt{'curr_value'} || $opt{'value'};
195 my $svc_broadband = '';
197 $svc_broadband = qsearchs({
198 'table' => 'svc_broadband',
199 'hashref' => { 'svcnum' => $value },
200 #have to join to cust_main for an agentnum 'extra_sql' => " AND ". $FS::CurrentUser::CurrentUser->agentnums_sql,