home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / Utilities / cardCheck-1.0-MIHS / cardCheck.m < prev    next >
Encoding:
Text File  |  1997-08-19  |  3.7 KB  |  178 lines

  1.  
  2. #import "cardCheck.h"
  3.  
  4. @implementation cardCheck
  5.  
  6. - appDidInit:sender
  7. {
  8.  
  9.     ouvert = 1;
  10.     ferme = 0;
  11.     windowState = ferme;
  12.  
  13.     [TheWindow makeKeyAndOrderFront:self];
  14.     [CCnumber setStringValue:""];
  15.     [CCnumber selectText:self];
  16.     [Status setStringValue:"Welcome to cardCheck!!"];
  17.     [crcStat setStringValue:""];
  18.     [attentionTexte setStringValue:"Read the warnings in the info menu..."];
  19.  
  20.  
  21.     return self;
  22. }
  23.  
  24. - textDidChange:sender
  25. {
  26.  
  27.     [Status setStringValue:""];
  28.     [crcStat setStringValue:""];
  29.     [attentionTexte setStringValue:""];
  30.  
  31.  
  32.     return self;
  33. }
  34.  
  35.  
  36.  
  37. - CheckIt:sender
  38. {
  39.     // Local Variables
  40.     char cc[120];
  41.     int check, len, prod, j;
  42.  
  43.         // Assign the value in the panel to the cc variable.
  44.         strcpy(cc, [CCnumber stringValue]);
  45.     
  46.         if (cc[0] != '3' && cc[0] != '4' && cc[0] != '5' && cc[0] != '6') {
  47.             [Status setStringValue:"Card number must start         with 3, 4, 5, or 6."];
  48.             [CCnumber selectText:self]; 
  49.             return self;
  50.         }
  51.  
  52.         // Counts the string length of the cc variable.
  53.         len = strlen(cc);
  54.  
  55.         
  56.         if (cc[0] == '5' && len != 16) {
  57.             [Status setStringValue:"Mastercard must be 16 digits."];
  58.             [CCnumber selectText:self]; 
  59.             return self;
  60.         }
  61.  
  62.         
  63.         if (cc[0] == '4' && (len != 13 && len != 16)) {
  64.             [Status setStringValue:"Visa numbers must                     be 13 or 16 digits."];
  65.             [CCnumber selectText:self]; 
  66.             return self;
  67.         }
  68.  
  69.         
  70.         if (cc[0] == '3' && len != 15) {
  71.             [Status setStringValue:"American Express numbers must be 15 digits."];
  72.             [CCnumber selectText:self]; 
  73.             return self;
  74.         }
  75.  
  76.         
  77.         if (cc[0] == '6' && len != 16) {
  78.             [Status setStringValue:"Discover numbers                   must be 16 digits."];
  79.             [CCnumber selectText:self]; 
  80.             return self;
  81.         }
  82.  
  83.         
  84.         //  Perform checksum - Weighing list 212121212121...
  85.         check = 0;
  86.         for (j = 0; j < len; ++j) {
  87.             prod = cc[j] - '0';
  88.             if (((len - (j + 1)) %2)) {
  89.                 prod *= 2;
  90.             }
  91.             if (prod >= 10) {
  92.                 prod = prod - 9;
  93.             }
  94.             check += prod;
  95.         }
  96.         
  97.         if ((check % 10) == 0) {
  98.             [crcStat setStringValue:"GOOD"];
  99.             [CCnumber selectText:self]; 
  100.             [attentionTexte setStringValue:"NOTE: Valid card number but is it a valid account? Careful..."];
  101.         } else {
  102.             [crcStat setStringValue:"BAD"];
  103.             [attentionTexte setStringValue:"This is not a valid card number..."];
  104.  
  105.             [CCnumber selectText:self]; 
  106.         }
  107.         
  108.  
  109.  
  110.     return self;
  111. }
  112.  
  113. - ClearStatus:sender
  114. {
  115.     [Status setStringValue:"Ummmmmm...."];
  116.  
  117.     return self;
  118. }
  119.  
  120. - InfoPanel:sender
  121. {
  122.     [NXApp loadNibSection:"InfoPanel.nib" owner:self]; // load nib
  123.  
  124.     return self;
  125. }
  126.  
  127. - IntroAndHelp:sender
  128. {
  129.  
  130.     [NXApp loadNibSection:"HelpIntro.nib" owner:self]; // load nib
  131.  
  132.     return self;
  133. }
  134.  
  135. - MoreInfo:sender
  136. {
  137.     [NXApp loadNibSection:"MoreInfo.nib" owner:self]; // load nib
  138.  
  139.     return self;
  140. }
  141.  
  142. - warning:sender
  143. {
  144.     [NXApp loadNibSection:"warning.nib" owner:self]; // load nib
  145.  
  146.     return self;
  147. }
  148.  
  149. - setWindowSize:sender
  150. {
  151.  
  152.     if (windowState == ferme)  {
  153.         windowState = ouvert;
  154.         NX_HEIGHT(&cadre) = 336;
  155.         NX_WIDTH(&cadre) = 660; }
  156.     else  {
  157.         windowState = ferme;
  158.         NX_HEIGHT(&cadre) = 336;
  159.         NX_WIDTH(&cadre) = 392;
  160.     };
  161.  
  162.     [TheWindow sizeWindow : NX_WIDTH(&cadre) : NX_HEIGHT(&cadre) ];
  163.     [TheWindow display];
  164.  
  165.     return self;
  166. }
  167.  
  168. - showMainWindow:sender
  169. {
  170.  
  171.     [TheWindow makeKeyAndOrderFront:self];
  172.  
  173.     return self;
  174.  
  175. }
  176.  
  177. @end
  178.