Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
590
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.90 KB | None | 0 0
  1. javascript: (function () {
  2. MBLDATA = {
  3. names: {
  4. first: [
  5. 'Anne','Kirsten','Hanne','Mette','Anna','Helle','Susanne','Lene','Maria','Marianne','Inge','Karen','Lone','Bente','Camilla','Pia','Jette','Charlotte','Louise','Inger','Peter','Jens','Lars','Michael','Henrik','Søren','Thomas','Jan','Niels','Christian','Jørgen','Martin','Hans','Anders','Morten','Jesper','Ole','Per','Erik','Mads'
  6. ],
  7. last: [
  8. 'Jensen','Nielsen','Hansen','Pedersen','Andersen','Christensen','Larsen','Sørensen','Rasmussen','Jørgensen','Petersen','Madsen','Kristensen','Olsen','Thomsen','Christiansen','Poulsen','Johansen','Møller','Knudsen'
  9. ]
  10. },
  11. street: {
  12. start: [
  13. "Æble", "Pære", "Nørre", "Sønder", "Øster", "Vester", "Over", "Lærke", "Ege", "Bøge"
  14. ],
  15. end: [
  16. "vej", "gade", "gaden", "stræde", "stien"
  17. ]
  18. },
  19. company:{
  20. first: [
  21. "Transparent", "Alfa", "Rød", "Blå", "Sort"
  22. ],
  23. second: [
  24. "Svane", "Struds", "Løve", "Æble", "Ko", "Due", "And"
  25. ],
  26. third:[
  27. "Marketing", "Software", "Arkitektbureau", "Byfornyelse", "Web Design"
  28. ]
  29. },
  30. defnumber:{
  31. dk1: [ "543", "131", "151" ],
  32. dk2: [ "740", "911" ],
  33. dkgas: [ "982", "980" ],
  34. se1: [ "750" ],
  35. se2: [ "500" ],
  36. se3: [ "250" ],
  37. se4: [ "100" ],
  38. no: [ "000" ]
  39. },
  40. zipcode:{
  41. dk1: [ '8000', '8200', '9000', '9400' ],
  42. dk2: [ '2000', '2100' ],
  43. dkgas: [ '8000', '8200', '9000', '9400', '2000', '2100' ],
  44. se1: [ '93000', '94000', '95000' ],
  45. se2: [ '82000', '83000' ],
  46. se3: [ '10000', '15000', '40000', '50000' ],
  47. se4: [ '20000', '25000' ],
  48. no1: [ '1001', '3001', '3300' ],
  49. no2: [ '3290', '3722', '5750' ],
  50. no3: [ '2680', '6699', '7003' ],
  51. no4: [ '9380', '9620', '9991' ],
  52. no5: [ '5003', '5640', '5831' ],
  53. de: [ '74564', '10115', '20095', '70173' ]
  54. }
  55. };
  56.  
  57. function randomDigits(i) {
  58. var j = "";
  59. while (j.length < i) {
  60. j = j + Math.floor(Math.random() * 10)
  61. }
  62. return j
  63. }
  64.  
  65. function ensureLength(j, i) {
  66. if (j.length < i) {
  67. return j + randomDigits(i - j.length)
  68. }
  69. if (j.length > i) {
  70. return j.substring(0, i)
  71. }
  72. return j
  73. }
  74.  
  75. function modulus(i, j) {
  76. return Math.round((i / j - Math.floor(i / j)) * j)
  77. }
  78.  
  79. function meterCheckDigit(l) {
  80. var j, k;
  81. j = 0;
  82. for (k = 0; k < l.length; k += 2) {
  83. j += parseInt(l[k], 10) * 3
  84. }
  85. for (k = 1; k < l.length; k += 2) {
  86. j += parseInt(l[k], 10)
  87. }
  88. return modulus(10 - modulus(j, 10), 10)
  89. }
  90.  
  91. function checkDigit(l, weights, mod){
  92. var j, k;
  93. j = 0;
  94. for (k = 0; k < l.length; k ++) {
  95. j += parseInt(l[k], 10) * weights[k];
  96. }
  97. return modulus(mod - modulus(j, mod), mod)
  98. }
  99.  
  100. function randomNumberWithModulusCheck(length, weights, mod){
  101. var number;
  102. do{
  103. number = randomDigits(length-1);
  104. number = number + checkDigit(number, weights, mod);
  105. }while(number.length!=length);
  106. return number;
  107. }
  108.  
  109. function randomCvrNumber() {
  110. return randomNumberWithModulusCheck(8, [2, 7, 6, 5, 4, 3, 2], 11);
  111. }
  112.  
  113. function randomPNumber() {
  114. return randomNumberWithModulusCheck(10, [4, 3, 2, 7, 6, 5, 4, 3, 2], 11);
  115. }
  116.  
  117. function eanCheckDigit(l) {
  118. return meterCheckDigit(l);
  119. }
  120.  
  121. function fixMeterNumber(i) {
  122. if (i.indexOf("5713131") == 0 || i.indexOf("5715151") == 0 || i.indexOf("735999") == 0 || i.indexOf("7070575") == 0) {
  123. number = ensureLength(i, 17);
  124. return number + meterCheckDigit(number)
  125. } else {
  126. if(isGasMeterSelected()){
  127. var j = "5713131";
  128. number = ensureLength(i, 10);
  129. return number + meterCheckDigit(j + number);
  130. }else{
  131. var j = "5713131";
  132. number = ensureLength(i, 10);
  133. return number + meterCheckDigit(j + number)
  134. }
  135. }
  136. }
  137.  
  138. function integerInRange(min, max) {
  139. return Math.floor(Math.floor(Math.random() * (max-min))+min);
  140. }
  141.  
  142. function pick(ary) {
  143. return ary[integerInRange(0, ary.length)];
  144. }
  145.  
  146. function maybePick(chance,ary) {
  147. if(Math.random() < chance){
  148. return pick(ary);
  149. }else{
  150. return "";
  151. }
  152. }
  153.  
  154. function fill(fieldName, func) {
  155. fill2(fieldName, func, 0);
  156. }
  157.  
  158. function fill2(fieldName, func, index) {
  159. var fields = document.getElementsByName(fieldName);
  160. if(!fields){
  161. console.log(fields);
  162. }
  163. if(fields.length>index){
  164. var field = fields[index];
  165. //if (field.value === '') {
  166. field.value = func();
  167. $(field).keyup();
  168. //}
  169. }else{
  170. console.log(fields);
  171. }
  172. }
  173.  
  174. function doclick(button) {
  175. if(button.getAttribute("disabled") === null || button.getAttribute("disabled") === ""){
  176. console.log("Ok");
  177. button.click();
  178. }else{
  179. console.log("wait");
  180. setTimeout(function() { doclick(button); }, 100);
  181. }
  182. }
  183.  
  184. function click(buttonName) {
  185. var buttons = document.getElementsByTagName('button');
  186. for(var i=0; i<buttons.length; i++){
  187. var button = buttons[i];
  188. if(button.id.indexOf(buttonName) === 0){
  189. doclick(button);
  190. return;
  191. }
  192. }
  193. var divs = document.getElementsByTagName('div');
  194. for(var i=0; i<divs.length; i++){
  195. var div = divs[i];
  196. if(div.id.indexOf(buttonName) === 0){
  197. doclick(div);
  198. return;
  199. }
  200. }
  201. }
  202.  
  203. function select(name, value) {
  204. var radiobuttons = document.getElementsByName(name);
  205. for(var i=0; i<radiobuttons.length; i++){
  206. var radiobutton = radiobuttons[i];
  207. if(radiobutton.value === value){
  208. radiobutton.checked = true;
  209. console.log('check');
  210. console.log(radiobutton);
  211. return;
  212. }
  213. }
  214. }
  215.  
  216. function isSwedish(){
  217. return midas.util.locale === 'sv_SE';
  218. }
  219.  
  220. function isNorwegian() {
  221. return midas.util.locale === 'nb_NO';
  222. }
  223.  
  224. function isGasEnabled() {
  225. return midas.util.isFeatureEnabled('GAS');
  226. }
  227.  
  228. function isGermany() {
  229. return midas.util.locale === 'de_DE';
  230. }
  231.  
  232. function isGasMeterSelected() {
  233. var radiobuttons = document.getElementsByName('commodityType');
  234. for(var i=0; i<radiobuttons.length; i++){
  235. var radiobutton = radiobuttons[i];
  236. if(radiobutton.value === 'GAS' && radiobutton.checked){
  237. return true;
  238. }
  239. }
  240. return false;
  241. }
  242.  
  243. function isBusiness(){
  244. return document.getElementsByName('cvrNumber').length>0;
  245. }
  246.  
  247. function companyName(){
  248. switch (integerInRange(0,3)) {
  249. case 0:
  250. return lastname() + " " + companySuffix();
  251. case 1:
  252. return lastname() + ", " + lastname() + " & " + lastname()+ " "+companySuffix();
  253. case 2:
  254. return pick(MBLDATA.company.first) + " "+ pick(MBLDATA.company.second) +" "+ pick(MBLDATA.company.third) +" "+companySuffix();
  255. case 3:
  256. return lastname +" " +pick(MBLDATA.company.third) +" "+companySuffix();
  257. }
  258. }
  259. function companySuffix(){
  260. return maybePick(0.5, ['A/S', 'ApS']);
  261. }
  262. function firstname(){
  263. return pick(MBLDATA.names.first);
  264. }
  265. function lastname(){
  266. return pick(MBLDATA.names.last);
  267. }
  268. function streetname(){
  269. return pick(MBLDATA.street.start)+pick(MBLDATA.street.end);
  270. }
  271. function streetnumber(){
  272. return integerInRange(1, 100);
  273. }
  274. function letter(){
  275. return maybePick(0.1, ['A','B','C','D','E','F']);
  276. }
  277. function floor(){
  278. return maybePick(0.1, ['kl','st','1','2','3','4','5','6']);
  279. }
  280. function door(){
  281. return maybePick(0.1, ['tv','th','mf']);
  282. }
  283.  
  284. function zipCode(){
  285. if(isSwedish()) {
  286. return pick(MBLDATA.zipcode.se1.concat(MBLDATA.zipcode.se2, MBLDATA.zipcode.se3, MBLDATA.zipcode.se4));
  287. } else if(isNorwegian()) {
  288. return pick(MBLDATA.zipcode.no1.concat(MBLDATA.zipcode.no2, MBLDATA.zipcode.no3, MBLDATA.zipcode.no4, MBLDATA.zipcode.no5));
  289. } else if (isGermany()) {
  290. return pick(MBLDATA.zipcode.de);
  291. } else {
  292. return pick(MBLDATA.zipcode.dk1.concat(MBLDATA.zipcode.dk2));
  293. }
  294. }
  295.  
  296. function allAreas(){
  297. if(isSwedish()){
  298. return ['SE1', 'SE2', 'SE3', 'SE4'];
  299. }else if (isNorwegian()) {
  300. return ['NO1', 'NO2', 'NO3', 'NO4', 'NO5'];
  301. } else {
  302. if(isGasEnabled()){
  303. return ['DK1', 'DK2', 'DKGAS'];
  304. }else{
  305. return ['DK1', 'DK2'];
  306. }
  307. }
  308. }
  309.  
  310. function area(){
  311. return pick(allAreas());
  312. }
  313.  
  314. function meterNumber(area){
  315. return function(){
  316. var defnumber;
  317. var prefix;
  318. if(isSwedish()) {
  319. prefix = '735999';
  320. if(area === 'SE1') {
  321. defnumber = pick(MBLDATA.defnumber.se1);
  322. } else if(area === 'SE2') {
  323. defnumber = pick(MBLDATA.defnumber.se2);
  324. } else if(area === 'SE3') {
  325. defnumber = pick(MBLDATA.defnumber.se3);
  326. } else {
  327. defnumber = pick(MBLDATA.defnumber.se4);
  328. }
  329. } else if (isNorwegian()) {
  330. prefix = '7070575';
  331. defnumber = pick(MBLDATA.defnumber.no);
  332. } else {
  333. if(area==='DK1'){
  334. prefix = '5713131';
  335. defnumber = pick(MBLDATA.defnumber.dk1);
  336. }else if(area==='DK2'){
  337. prefix = '5713131';
  338. defnumber = pick(MBLDATA.defnumber.dk2);
  339. }else{
  340. prefix = '5715151';
  341. defnumber = pick(MBLDATA.defnumber.dkgas);
  342. }
  343. }
  344. var meternumber = fixMeterNumber(prefix+defnumber);
  345. return meternumber;
  346. }
  347. }
  348.  
  349. function cvrNumber(){
  350. return randomCvrNumber();
  351. }
  352. function pNumber(){
  353. if(Math.random() < 0.5){
  354. var first = randomDigits(9);
  355. return randomPNumber();
  356. }else{
  357. return "";
  358. }
  359. }
  360. function eanNumber(){
  361. if(Math.random() < 0.5){
  362. var first = randomDigits(12);
  363. return first + eanCheckDigit(first);
  364. }else{
  365. return "";
  366. }
  367. }
  368. function zipCode2(area){
  369. return function(){
  370. var zipcode;
  371. if(isSwedish()) {
  372. if (area === 'SE1') {
  373. zipcode = pick(MBLDATA.zipcode.se1);
  374. } else if (area === 'SE2') {
  375. zipcode = pick(MBLDATA.zipcode.se2);
  376. } else if (area === 'SE3') {
  377. zipcode = pick(MBLDATA.zipcode.se3);
  378. } else {
  379. zipcode = pick(MBLDATA.zipcode.se4);
  380. }
  381. } else if (isNorwegian()) {
  382. if (area === 'NO1') {
  383. zipcode = pick(MBLDATA.zipcode.no1);
  384. } else if (area === 'NO2') {
  385. zipcode = pick(MBLDATA.zipcode.no2);
  386. } else if (area === 'NO3') {
  387. zipcode = pick(MBLDATA.zipcode.no3);
  388. } else if (area === 'NO4') {
  389. zipcode = pick(MBLDATA.zipcode.no4);
  390. } else {
  391. zipcode = pick(MBLDATA.zipcode.no5);
  392. }
  393. } else if (isGermany()) {
  394. zipcode = pick(MBLDATA.zipcode.de);
  395. } else {
  396. if(area==='DK1'){
  397. zipcode = pick(MBLDATA.zipcode.dk1);
  398. }else if(area==='DK2'){
  399. zipcode = pick(MBLDATA.zipcode.dk2);
  400. }else{
  401. zipcode = pick(MBLDATA.zipcode.dkgas);
  402. }
  403. }
  404. return zipcode;
  405. }
  406. }
  407.  
  408. function companyContact(){
  409. if(Math.random() < 0.5){
  410. return firstname()+" "+lastname();
  411. }else{
  412. return "";
  413. }
  414. }
  415. function email(){
  416. if(Math.random() < 0.5){
  417. return firstname().replace(/[^a-zA-Z0-9]/g,'x')+randomDigits(4)+"@example.org";
  418. }else{
  419. return "";
  420. }
  421. }
  422. function phoneNumber(){
  423. if(Math.random() < 0.5){
  424. return randomDigits(8);
  425. }else{
  426. return "";
  427. }
  428. }
  429. function city(){
  430. if(isSwedish()){
  431. return "Stockholm";
  432. }else{
  433. return "Bynavn";
  434. }
  435. }
  436. function addMeter(area){
  437. console.log(area);
  438. if(area==='DKGAS'){
  439. select('commodityType', 'GAS');
  440. } else {
  441. select('commodityType', 'ELECTRICITY');
  442. }
  443. fill("meterNumber", meterNumber(area));
  444. fill("address", address);
  445. fill("consumptionAddress", fullAddress);
  446. fill2("zipCode", zipCode2(area), 1);
  447. fill("yearlyConsumption", yearlyConsumption);
  448. click("addConsumptionButton");
  449. }
  450. function addMetersWithIndex(areas, i, attempts){
  451. if(attempts>10){
  452. return;
  453. }
  454. if(i>=areas.length){
  455. return;
  456. }
  457. var meterNumberFields = document.getElementsByName('meterNumber');
  458. if(!!meterNumberFields[0].value){
  459. setTimeout(function() { addMetersWithIndex(areas, i, attempts+1); }, 100);
  460. return;
  461. }
  462. var area = areas[i];
  463. addMeter(area);
  464. console.log(document.getElementsByName('meterNumber').value);
  465. addMetersWithIndex(areas, i+1, 0);
  466. }
  467. function addMeters(areas){
  468. addMetersWithIndex(areas, 0);
  469. }
  470.  
  471. function address(){
  472. var res = streetname()+" "+streetnumber();
  473. var letterx = letter();
  474. var floorx = floor();
  475. var doorx = door();
  476. if(letterx!==""){
  477. res = res + letterx;
  478. }
  479. if(floorx!==""){
  480. res = res + ", " + floorx;
  481. }
  482. if(doorx!==""){
  483. res = res + " " + doorx;
  484. }
  485. return res;
  486. }
  487.  
  488. function fullAddress(){
  489. return address() + ", " + zipCode() + " " + city();
  490. }
  491.  
  492. function yearlyConsumption(){
  493. return integerInRange(30,100)*100;
  494. }
  495.  
  496. if(isBusiness()){
  497. fill("name1", companyName);
  498. fill("email", email);
  499. fill("cvrNumber", cvrNumber);
  500. fill("pNumber", pNumber);
  501. fill("eanNumber", eanNumber);
  502. fill("companyContact", companyContact);
  503. }else{
  504. fill("name1", firstname);
  505. fill("name2", lastname);
  506. }
  507. fill("street", streetname);
  508. fill("number", streetnumber);
  509. fill("letter", letter);
  510. fill("floor", floor);
  511. fill("door", door);
  512. fill("zipCode", zipCode);
  513. fill("customerAddress", fullAddress);
  514. if(isSwedish()){
  515. fill("city", city);
  516. }
  517. fill("telephone", phoneNumber);
  518. fill("email", email);
  519.  
  520. var areas = allAreas();
  521. addMeters(areas);
  522. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement