3586a54cb175cbb74b724dd3c7b79bc269c38387
[freeside.git] / httemplate / elements / order_pkg.js
1 function pkg_changed () {
2   var form = document.OrderPkgForm;
3   var discountnum = form.discountnum;
4
5   if ( form.pkgpart.selectedIndex > 0 ) {
6
7     var opt = form.pkgpart.options[form.pkgpart.selectedIndex];
8     var date_button = document.getElementById('start_date_button');
9     var date_button_disabled = document.getElementById('start_date_disabled');
10     var date_text = document.getElementById('start_date_text');
11
12     var radio_now = document.getElementById('start_now');
13     var radio_on_hold = document.getElementById('start_on_hold');
14     var radio_on_date = document.getElementById('start_on_date');
15
16     form.submitButton.disabled = false;
17     if ( discountnum ) {
18       if ( opt.getAttribute('data-can_discount') == 1 ) {
19         form.discountnum.disabled = false;
20         discountnum_changed(form.discountnum);
21       } else {
22         form.discountnum.disabled = true;
23         discountnum_changed(form.discountnum);
24       }
25     }
26
27     // if this form element exists, then the start date is a future
28     // package change date; don't replace it
29     if ( form.delay ) {
30       return;
31     }
32     form.start_date_text.value = opt.getAttribute('data-start_date');
33     if ( opt.getAttribute('data-can_start_date') == 1 ) {
34       date_text.style.backgroundColor = '#ffffff';
35       date_text.disabled = false;
36       date_button.style.display = '';
37       date_button_disabled.style.display = 'none';
38       if ( radio_on_date ) {
39         // un-disable all the buttons that might get disabled
40         radio_on_date.disabled = false;
41         radio_now.disabled = false;
42         // if a start date has been entered, assume the user wants it
43         if ( form.start_date_text.value.length > 0 ) {
44           radio_now.checked = false;
45           radio_on_date.checked = true;
46         } else {
47           // if not, default to now
48           radio_now.checked = true;
49         }
50       }
51     } else { // the package is either fixed start date or start-on-hold
52       date_text.style.backgroundColor = '#dddddd';
53       date_text.disabled = true;
54       date_button.style.display = 'none';
55       date_button_disabled.style.display = '';
56       if ( radio_on_date ) {
57         if ( opt.getAttribute('data-start_on_hold') == 1 ) {
58           // disallow all options but "On hold"
59           radio_on_hold.checked = true;
60           radio_now.checked = false;
61           radio_now.disabled = true;
62         } else {
63           // disallow all options but "On date"
64           radio_on_hold.checked = false;
65           radio_now.checked = true;
66           radio_now.disabled = false;
67         }
68       }
69     }
70
71     get_part_pkg_usageprice( opt.value, update_part_pkg_usageprice );
72
73   } else {
74     form.submitButton.disabled = true;
75     if ( discountnum ) { form.discountnum.disabled = true; }
76     discountnum_changed(form.discountnum);
77   }
78 }
79
80 function update_part_pkg_usageprice(part_pkg_usageprice) {
81
82   var table = document.getElementById('cust_pkg_usageprice_table');
83
84   // black the current usage price rows
85   for ( var r = table.rows.length - 1; r >= 0; r-- ) {
86     table.deleteRow(r);
87   }
88
89   // add the new usage price rows
90   var rownum = 0;
91   var usagepriceArray = eval('(' + part_pkg_usageprice + ')' );
92   for ( var s = 0; s < usagepriceArray.length; s=s+2 ) {
93     //surely this should be some kind of JSON structure
94     var html       = usagepriceArray[s+0];
95     var javascript = usagepriceArray[s+1];
96
97     // a lot like ("inspiried by") edit/elements/edit.html function spawn_<%$field%>
98
99     // XXX evaluate the javascript
100     //if (window.ActiveXObject) {
101     //  window.execScript(newfunc);
102     //} else { /* (window.XMLHttpRequest) */
103     //  //window.eval(newfunc);
104     //  setTimeout(newfunc, 0);
105     //}
106
107     var row = table.insertRow(rownum++);
108
109     //var label_cell = document.createElement('TD');
110
111     //label_cell.id = '<% $field %>_label' + <%$field%>_fieldnum;
112
113     //label_cell.style.textAlign = "right";
114     //label_cell.style.verticalAlign = "top";
115     //label_cell.style.borderTop = "1px solid black";
116     //label_cell.style.paddingTop = "5px";
117
118     //label_cell.innerHTML = '<% $label %>';
119
120     //row.appendChild(label_cell);
121           
122     var widget_cell = document.createElement('TD');
123
124     //widget_cell.style.borderTop = "1px solid black";
125     widget_cell.style.paddingTop = "3px";
126     widget_cell.colSpan = "2";
127
128     widget_cell.innerHTML = html;
129
130     row.appendChild(widget_cell);
131
132   }
133
134   if ( rownum > 0 ) {
135     document.getElementById('cust_pkg_usageprice_title').style.display = '';
136   } else {
137     document.getElementById('cust_pkg_usageprice_title').style.display = 'none';
138   }
139
140 }
141
142
143 function standardize_new_location() {
144   var form = document.OrderPkgForm;
145   var loc = form.locationnum;
146   if (loc.type == 'select-one' && loc.options[loc.selectedIndex].value == -1){
147     standardize_locations();
148   } else {
149     form.submit();
150   }
151 }
152
153 function submit_abort() {
154   document.OrderPkgForm.submitButton.disabled = false;
155   nd(1);
156 }