(finally) wrap up new tax rate engine (for now)
[freeside.git] / httemplate / elements / file-upload.html
1
2 <script type="text/javascript">
3
4   function doUpload(form, callback) {
5     var name = 'form' + Math.floor(Math.random() * 99999); // perlize?
6     var d = document.createElement('DIV');
7     d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+name+'" name="'+name+'" onload="uploadComplete(\''+name+'\')"></iframe>';
8     document.body.appendChild(d);
9
10     var i = document.getElementById(name);
11     if (callback && typeof(callback) == 'function') {
12       i.onComplete = callback;
13     }
14
15     form.setAttribute('target', name);
16     return true;
17   }
18
19   function uploadComplete(id) {
20     var i = document.getElementById(id);
21     if (i.contentDocument) {
22       var d = i.contentDocument;
23     } else if (i.contentWindow) {
24       var d = i.contentWindow.document;
25     } else {
26       var d = window.frames[id].document;
27     }
28     if (d.location.href == "about:blank") {
29       return;
30     }
31
32     document.getElementById('r').innerHTML = d.body.innerHTML;
33     if (typeof(i.onComplete) == 'function') {
34       var p;
35       if (p = d.body.innerHTML.indexOf("Freeside File Upload Successful ") >= 0) {
36         var v = d.body.innerHTML.substr(p+33)
37         var u = document.getElementById('uploaded_files');
38         v = v.substr(0, v.indexOf(';'));
39         u.value = v;
40         i.onComplete(true, '');
41       }else{
42         i.onComplete(false, d.body.innerHTML);
43       }
44     }
45   }
46
47 </script>
48
49     <input type="hidden" name="uploaded_files" id="uploaded_files" value="" />
50     <input type="hidden" name="upload_fields" value="<% join(',', @field) %>" />
51 % foreach (@field) {
52     <tr>
53       <th><% shift @label %></th>
54       <td><input type="file" name="<% $_ %>" /></td>
55     </tr>
56 % }
57   <div style="display:<% $debug ? 'visible' : 'none' %>">Debugging: <pre id="r"></pre></div>
58
59 <%init>
60 my %param = @_;
61
62 my $debug = $param{'debug'};
63
64 my $callback = $param{'callback'} || "''";
65
66 my @label = ();
67 if ( ref($param{'label'}) ) {
68   push @label, @{$param{'label'}};
69 }else{
70   push @label, $param{'label'};
71 }
72
73 my @field = ();
74 if ( ref($param{'field'}) ) {
75   push @field, @{$param{'field'}};
76 }else{
77   push @field, $param{'field'};
78 }
79
80 </%init>