Просмотр файла converter/conv.js

Размер файла: 6.54Kb
  1. var globalNoData=true;
  2. var curs=new Array();
  3. var nCurs=6;
  4. var cb=new Array();
  5. var forex=new Array();
  6. var cash=new Array();
  7. var forex_date;
  8. var cb_date;
  9. var cash_date;
  10. function Currency(id,curId,fullName) {
  11. this.id=id;
  12. this.curId=curId;
  13. this.fullName=fullName;
  14. }
  15.  
  16. function Init() {
  17. curs[0]=new Currency(0,"RUR","Российский рубль");
  18. curs[1]=new Currency(1,"USD","Доллар США");
  19. curs[2]=new Currency(2,"EUR","ЕВРО");
  20. curs[3]=new Currency(3,"JPY","Японская иена");
  21. curs[4]=new Currency(4,"DEM","Немецкая марка");
  22. curs[5]=new Currency(5,"GBP","Английский фунт стерлингов");
  23. for(i=0;i<36;i++) {
  24. forex[i]=0;
  25. cb[i]=0;
  26. cash[i]=0;
  27. }
  28. forex[2.0*6+5.0]=0.6439;
  29. forex[2.0*6+1.0]=1.018450;
  30. forex[5.0*6+3.0]=194.07;
  31. forex[5.0*6+1.0]=1.581750;
  32. forex[1.0*6+3.0]=122.70;
  33. forex[1.0*6+0.0]=31.8650;
  34. forex[2.0*6+3.0]=124.9750;
  35. forex_date='12-DEC-02';
  36.  
  37. cb[2.0]=1/32.1467;
  38. cb[2.0*6]=32.1467;
  39. cb[5.0]=1/50.1381;
  40. cb[5.0*6]=50.1381;
  41. cb[3.0]=1/25.8478;
  42. cb[3.0*6]=25.8478;
  43. cb[1.0]=1/31.86;
  44. cb[1.0*6]=31.86;
  45. cb_date='12-DEC-02';
  46.  
  47. cash[4.0]=1/(null);
  48. cash[4.0*6]=13.50;
  49. cash[2.0]=1/32.62117647;
  50. cash[2.0*6]=32.39222222;
  51. cash[1.0]=1/31.98382353;
  52. cash[1.0*6]=31.93794118;
  53. cash_date='13-DEC-02';
  54.  
  55. updateToFrom();
  56. }
  57. function updateToFrom() {
  58. source=document.forms[formName].source.options[document.forms[formName].source.selectedIndex].value;
  59. document.forms[formName].To.length=nCurs;
  60. document.forms[formName].From.length=0;
  61. for(i=0;i<nCurs;i++) {
  62. isConv=false;
  63. for(j=0;j<nCurs;j++) {
  64. if(source=='forex') {
  65. if(forex[i*6+j]!=0) {
  66. isConv=true;
  67. break;
  68. }
  69. } else if(source=='cb') {
  70. if(cb[i*6+j]!=0) {
  71. isConv=true;
  72. break;
  73. }
  74. } else if(source=='cash') {
  75. if(cash[i*6+j]!=0) {
  76. isConv=true;
  77. break;
  78. }
  79. }
  80. }
  81. if(isConv) {
  82. document.forms[formName].From.length++;
  83. document.forms[formName].From.options[document.forms[formName].From.length-1]=new Option(curs[i].fullName,curs[i].curId,false,false);
  84. }
  85. document.forms[formName].To.options[i]=new Option(curs[i].fullName,curs[i].curId,false,false);
  86. }
  87. if(document.forms[formName].From.length==0) {
  88. document.forms[formName].From.length=1;
  89. document.forms[formName].From.options[0]=new Option("Нет данных","",true,true);
  90. document.forms[formName].To.length=1;
  91. document.forms[formName].To.options[0]=new Option("Нет данных","",true,true);
  92. globalNoData=true;
  93. } else {
  94. globalNoData=false;
  95. }
  96. document.forms[formName].From.selectedIndex=0;
  97. document.forms[formName].To.selectedIndex=0;
  98. if(source=='forex') document.forms[formName].date.value=forex_date;
  99. else if(source=='cb') document.forms[formName].date.value=cb_date;
  100. else if(source=='cash') document.forms[formName].date.value=cash_date;
  101. changeTo();
  102. updateQuote();
  103. }
  104. function getCurId(cur) {
  105. for(i=0;i<nCurs;i++) {
  106. if(curs[i].curId==cur) return i;
  107. }
  108. }
  109. function getCurName(cur) {
  110. for(i=0;i<nCurs;i++) {
  111. if(curs[i].curId==cur) return curs[i].fullName;
  112. }
  113. }
  114. function getQuote(fromCur,toCur,source) {
  115. if(source=='forex') {
  116. fromId=getCurId(fromCur);
  117. toId=getCurId(toCur);
  118. return forex[fromId*nCurs+toId];
  119. } else if(source=='cb') {
  120. fromId=getCurId(fromCur);
  121. toId=getCurId(toCur);
  122. return cb[fromId*nCurs+toId];
  123. } else if(source=='cash') {
  124. fromId=getCurId(fromCur);
  125. toId=getCurId(toCur);
  126. return cash[fromId*nCurs+toId];
  127. }
  128. }
  129. function changeTo() { // Calling when onChange of From raised changing to select
  130. if(globalNoData) return;
  131. choosedSource=document.forms[formName].source.options[document.forms[formName].source.selectedIndex].value;
  132. choosedCurId=getCurId(document.forms[formName].From.options[document.forms[formName].From.selectedIndex].value);
  133. document.forms[formName].To.length=0;
  134. if(choosedSource=='forex') {
  135. for(i=0;i<nCurs;i++) {
  136. if(forex[choosedCurId*nCurs+i]!=0) {
  137. document.forms[formName].To.length++;
  138. document.forms[formName].To.options[document.forms[formName].To.length-1]=new Option(curs[i].fullName,curs[i].curId,false,false);
  139. }
  140. }
  141. } else if(choosedSource=='cb') {
  142. for(i=0;i<nCurs;i++) {
  143. if(cb[choosedCurId*nCurs+i]!=0) {
  144. document.forms[formName].To.length++;
  145. document.forms[formName].To.options[document.forms[formName].To.length-1]=new Option(curs[i].fullName,curs[i].curId,false,false);
  146. }
  147. }
  148. } else if(choosedSource=='cash') {
  149. for(i=0;i<nCurs;i++) {
  150. if(cash[choosedCurId*nCurs+i]!=0) {
  151. document.forms[formName].To.length++;
  152. document.forms[formName].To.options[document.forms[formName].To.length-1]=new Option(curs[i].fullName,curs[i].curId,false,false);
  153. }
  154. }
  155. }
  156. document.forms[formName].To.selectedIndex=0;
  157. updateQuote();
  158. }
  159. function updateQuote() {
  160. if(globalNoData) {
  161. document.forms[formName].quote.value="";
  162. return;
  163. }
  164. fromCur=document.forms[formName].From.options[document.forms[formName].From.selectedIndex].value;
  165. toCur=document.forms[formName].To.options[document.forms[formName].To.selectedIndex].value;
  166. source=document.forms[formName].source.options[document.forms[formName].source.selectedIndex].value;
  167. if(source=='forex') {
  168. fromId=getCurId(fromCur);
  169. toId=getCurId(toCur);
  170. quote=forex[fromId*nCurs+toId];
  171. } else if(source=='cb') {
  172. fromId=getCurId(fromCur);
  173. toId=getCurId(toCur);
  174. if(toId>fromId) quote=cb[toId*nCurs+fromId];
  175. else quote=cb[fromId*nCurs+toId];
  176. } else if(source=='cash') {
  177. fromId=getCurId(fromCur);
  178. toId=getCurId(toCur);
  179. if(toId>fromId) quote= 1/cash[fromId*nCurs+toId];
  180. else quote=cash[fromId*nCurs+toId];
  181. }
  182. quote=""+quote;
  183. if((ind=quote.indexOf("."))>=0) {
  184. if(ind+5<quote.length-1) {
  185. quote=quote.substring(0,ind+5);
  186. }
  187. }
  188. document.forms[formName].quote.value=quote;
  189. }
  190.  
  191. function compute() {
  192. if(globalNoData) return false;
  193. fromCur=document.forms[formName].From.options[document.forms[formName].From.selectedIndex].value;
  194. toCur=document.forms[formName].To.options[document.forms[formName].To.selectedIndex].value;
  195. source=document.forms[formName].source.options[document.forms[formName].source.selectedIndex].value;
  196. sum=parseInt(document.forms[formName].sum.value);
  197. if(isNaN(sum)) return false;
  198. /*if(acceptUserQuote) {
  199. quote=parseFloat(document.forms[formName].quote.value);
  200. if(!isNaN(quote)) {
  201. resSum=sum*quote*parseFloat(document.forms[formName].tax.options[document.forms[formName].tax.selectedIndex].value);
  202. }
  203. } else { */
  204. resSum=sum*getQuote(fromCur,toCur,source)*parseFloat(document.forms[formName].tax.options[document.forms[formName].tax.selectedIndex].value);
  205. /* } */
  206. resSum=""+resSum;
  207. if((ind=resSum.indexOf("."))>=0) {
  208. if(ind+3<resSum.length-1) {
  209. resSum=resSum.substring(0,ind+3);
  210. }
  211. }
  212. document.forms[formName].ressum.value=resSum;
  213. //updateToFrom();
  214. //alert("from="+fromCur+"\ntoCur="+toCur);
  215. return false;
  216. }
  217.