time/data/etc. unit pricing add-ons, RT#24392
[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_button_disabled');
10     var date_text = document.getElementById('start_date_text');
11
12
13     form.submitButton.disabled = false;
14     if ( discountnum ) {
15       if ( opt.getAttribute('data-can_discount') == 1 ) {
16         form.discountnum.disabled = false;
17         discountnum_changed(form.discountnum);
18       } else {
19         form.discountnum.disabled = true;
20         discountnum_changed(form.discountnum);
21       }
22     }
23
24     // if this form element exists, then the start date is a future
25     // package change date; don't replace it
26     if ( form.delay ) {
27       return;
28     }
29     form.start_date_text.value = opt.getAttribute('data-start_date');
30     if ( opt.getAttribute('data-can_start_date') == 1 ) {
31       date_text.style.backgroundColor = '#ffffff';
32       date_text.disabled = false;
33       date_button.style.display = '';
34       date_button_disabled.style.display = 'none';
35     } else {
36       date_text.style.backgroundColor = '#dddddd';
37       date_text.disabled = true;
38       date_button.style.display = 'none';
39       date_button_disabled.style.display = '';
40     }
41
42     get_part_pkg_usageprice( opt.value, update_part_pkg_usageprice );
43
44   } else {
45     form.submitButton.disabled = true;
46     if ( discountnum ) { form.discountnum.disabled = true; }
47     discountnum_changed(form.discountnum);
48   }
49 }
50
51 function update_part_pkg_usageprice(part_pkg_usageprice) {
52
53   var table = document.getElementById('cust_pkg_usageprice_table');
54
55   // black the current usage price rows
56   for ( var r = table.rows.length - 1; r >= 0; r-- ) {
57     table.deleteRow(r);
58   }
59
60   // add the new usage price rows
61   var rownum = 0;
62   var usagepriceArray = eval('(' + part_pkg_usageprice + ')' );
63   for ( var s = 0; s < usagepriceArray.length; s=s+2 ) {
64     //surely this should be some kind of JSON structure
65     var html       = usagepriceArray[s+0];
66     var javascript = usagepriceArray[s+1];
67
68     // a lot like ("inspiried by") edit/elements/edit.html function spawn_<%$field%>
69
70     // XXX evaluate the javascript
71     //if (window.ActiveXObject) {
72     //  window.execScript(newfunc);
73     //} else { /* (window.XMLHttpRequest) */
74     //  //window.eval(newfunc);
75     //  setTimeout(newfunc, 0);
76     //}
77
78     var row = table.insertRow(rownum++);
79
80     //var label_cell = document.createElement('TD');
81
82     //label_cell.id = '<% $field %>_label' + <%$field%>_fieldnum;
83
84     //label_cell.style.textAlign = "right";
85     //label_cell.style.verticalAlign = "top";
86     //label_cell.style.borderTop = "1px solid black";
87     //label_cell.style.paddingTop = "5px";
88
89     //label_cell.innerHTML = '<% $label %>';
90
91     //row.appendChild(label_cell);
92           
93     var widget_cell = document.createElement('TD');
94
95     //widget_cell.style.borderTop = "1px solid black";
96     widget_cell.style.paddingTop = "3px";
97     widget_cell.colSpan = "2";
98
99     widget_cell.innerHTML = html;
100
101     row.appendChild(widget_cell);
102
103   }
104
105   if ( rownum > 0 ) {
106     document.getElementById('cust_pkg_usageprice_title').style.display = '';
107   } else {
108     document.getElementById('cust_pkg_usageprice_title').style.display = 'none';
109   }
110
111 }
112
113
114 function standardize_new_location() {
115   var form = document.OrderPkgForm;
116   var loc = form.locationnum;
117   if (loc.type == 'select-one' && loc.options[loc.selectedIndex].value == -1){
118     standardize_locations();
119   } else {
120     form.submit();
121   }
122 }
123
124 function submit_abort() {
125   document.OrderPkgForm.submitButton.disabled = false;
126   nd(1);
127 }