Ver código fonte

header ver for apex mobile iOS

Ray Zhang 12 anos atrás
pai
commit
29adbd6196
100 arquivos alterados com 6134 adições e 0 exclusões
  1. 17 0
      Apex Mobile/AboutViewController.h
  2. 66 0
      Apex Mobile/AboutViewController.m
  3. 916 0
      Apex Mobile/Apex Mobile.xcodeproj/project.pbxproj
  4. 7 0
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  5. 46 0
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcshareddata/Apex Mobile.xccheckout
  6. BIN
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate
  7. 22 0
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/WorkspaceSettings.xcsettings
  8. 91 0
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/xcdebugger/Expressions.xcexplist
  9. 23 0
      Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  10. 96 0
      Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcschemes/Apex Mobile.xcscheme
  11. 27 0
      Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcschemes/xcschememanagement.plist
  12. 61 0
      Apex Mobile/Apex Mobile/Apex Mobile-Info.plist
  13. 16 0
      Apex Mobile/Apex Mobile/Apex Mobile-Prefix.pch
  14. 17 0
      Apex Mobile/Apex Mobile/ApexMobileAppDelegate.h
  15. 53 0
      Apex Mobile/Apex Mobile/ApexMobileAppDelegate.m
  16. 21 0
      Apex Mobile/Apex Mobile/ApexMobileDB.h
  17. 120 0
      Apex Mobile/Apex Mobile/ApexMobileDB.m
  18. 22 0
      Apex Mobile/Apex Mobile/ApexMobileFirstViewController.h
  19. 191 0
      Apex Mobile/Apex Mobile/ApexMobileFirstViewController.m
  20. 13 0
      Apex Mobile/Apex Mobile/ApexMobileNavigationController.h
  21. 52 0
      Apex Mobile/Apex Mobile/ApexMobileNavigationController.m
  22. 31 0
      Apex Mobile/Apex Mobile/ApexMobileNetwork.h
  23. 596 0
      Apex Mobile/Apex Mobile/ApexMobileNetwork.m
  24. 13 0
      Apex Mobile/Apex Mobile/ApexMobileSecondViewController.h
  25. 29 0
      Apex Mobile/Apex Mobile/ApexMobileSecondViewController.m
  26. 1155 0
      Apex Mobile/Apex Mobile/Base.lproj/Main_iPhone.storyboard
  27. 19 0
      Apex Mobile/Apex Mobile/ChangePasswordViewController.h
  28. 130 0
      Apex Mobile/Apex Mobile/ChangePasswordViewController.m
  29. 62 0
      Apex Mobile/Apex Mobile/Constant.h
  30. 46 0
      Apex Mobile/Apex Mobile/Constant.m
  31. 26 0
      Apex Mobile/Apex Mobile/CustomizeFieldViewController.h
  32. 352 0
      Apex Mobile/Apex Mobile/CustomizeFieldViewController.m
  33. 19 0
      Apex Mobile/Apex Mobile/DetailCellKV.h
  34. 49 0
      Apex Mobile/Apex Mobile/DetailCellKV.m
  35. 14 0
      Apex Mobile/Apex Mobile/DetailCellList.h
  36. 29 0
      Apex Mobile/Apex Mobile/DetailCellList.m
  37. 14 0
      Apex Mobile/Apex Mobile/DetailCellWeb.h
  38. 38 0
      Apex Mobile/Apex Mobile/DetailCellWeb.m
  39. 26 0
      Apex Mobile/Apex Mobile/DetailContent.h
  40. 86 0
      Apex Mobile/Apex Mobile/DetailContent.m
  41. 28 0
      Apex Mobile/Apex Mobile/DetailPageViewController.h
  42. 664 0
      Apex Mobile/Apex Mobile/DetailPageViewController.m
  43. 19 0
      Apex Mobile/Apex Mobile/DetailTabBarController.h
  44. 168 0
      Apex Mobile/Apex Mobile/DetailTabBarController.m
  45. 19 0
      Apex Mobile/Apex Mobile/FunctionSelectViewController.h
  46. 168 0
      Apex Mobile/Apex Mobile/FunctionSelectViewController.m
  47. 62 0
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/Contents.json
  48. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex120.png
  49. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex152.png
  50. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex29.png
  51. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex40.png
  52. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex58-1.png
  53. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex58.png
  54. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex76.png
  55. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex80-1.png
  56. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex80.png
  57. 51 0
      Apex Mobile/Apex Mobile/Images.xcassets/LaunchImage.launchimage/Contents.json
  58. 18 0
      Apex Mobile/Apex Mobile/Images.xcassets/apexlogo-2.imageset/Contents.json
  59. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/apexlogo-2.imageset/apexlogo-2-1.png
  60. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/apexlogo-2.imageset/apexlogo-2.png
  61. 18 0
      Apex Mobile/Apex Mobile/Images.xcassets/bg_3.imageset/Contents.json
  62. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/bg_3.imageset/bg_3-1.png
  63. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/bg_3.imageset/bg_3.png
  64. 18 0
      Apex Mobile/Apex Mobile/Images.xcassets/bg_4.imageset/Contents.json
  65. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/bg_4.imageset/bg_3-1.png
  66. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/bg_4.imageset/bg_3.png
  67. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/bulb-2.imageset/Contents.json
  68. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/bulb-2.imageset/bulb-2.png
  69. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/bullet.imageset/Contents.json
  70. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/bullet.imageset/bullet.png
  71. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/checked_32.imageset/Contents.json
  72. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/checked_32.imageset/checked_32.png
  73. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ellipsis.imageset/Contents.json
  74. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ellipsis.imageset/ellipsis.png
  75. 18 0
      Apex Mobile/Apex Mobile/Images.xcassets/first.imageset/Contents.json
  76. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/first.imageset/first.png
  77. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/first.imageset/first@2x.png
  78. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_about.imageset/Contents.json
  79. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_about.imageset/ic_about.png
  80. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_cargo_tracking.imageset/Contents.json
  81. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_cargo_tracking.imageset/ic_cargo_tracking.png
  82. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_container_detail.imageset/Contents.json
  83. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_container_detail.imageset/ic_container_detail.png
  84. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_down_doc.imageset/Contents.json
  85. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_down_doc.imageset/ic_down_doc.png
  86. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_exit.imageset/Contents.json
  87. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_exit.imageset/ic_exit.png
  88. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_marker.imageset/Contents.json
  89. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_marker.imageset/ic_marker.png
  90. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_ocean_blinfo.imageset/Contents.json
  91. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_ocean_blinfo.imageset/ic_ocean_blinfo.png
  92. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_oceanbooking.imageset/Contents.json
  93. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_oceanbooking.imageset/ic_oceanbooking.png
  94. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_password.imageset/Contents.json
  95. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_password.imageset/ic_password.png
  96. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/ic_service_location.imageset/Contents.json
  97. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/ic_service_location.imageset/ic_service_location.png
  98. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/in.imageset/Contents.json
  99. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/in.imageset/in.png
  100. 17 0
      Apex Mobile/Apex Mobile/Images.xcassets/map (1).imageset/Contents.json

+ 17 - 0
Apex Mobile/AboutViewController.h

@@ -0,0 +1,17 @@
+//
+//  AboutViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-26.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AboutViewController : UIViewController
+@property (strong, nonatomic) IBOutlet UIWebView *webview;
+//@property (strong, nonatomic) IBOutlet UILabel *verLabel;
+@property (strong, nonatomic) IBOutlet UITextView *infoText;
+
+
+@end

+ 66 - 0
Apex Mobile/AboutViewController.m

@@ -0,0 +1,66 @@
+//
+//  AboutViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-26.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "AboutViewController.h"
+
+@interface AboutViewController ()
+
+@end
+
+@implementation AboutViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+- (BOOL)shouldAutorotate
+{
+    return YES;
+}
+
+- (NSUInteger)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskPortrait;
+}
+
+- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
+    NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];
+    versionNum = [NSString stringWithFormat:@"A%@",versionNum];
+    
+    self.infoText.text = [NSString stringWithFormat:@"Version:%@\nSupport:\nusairedadt@united-us.net",versionNum];
+ 
+    NSString *filePath = [[NSBundle mainBundle]pathForResource:@"about" ofType:@"htm"];
+    NSString *htmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
+    [self.webview loadHTMLString:htmlString baseURL:[NSURL URLWithString:filePath]];
+    
+	// Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (void)webViewDidFinishLoad:(UIWebView *)webView
+{
+    // finished loading, hide the activity indicator in the status bar
+    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
+    [self.webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '350%'"];
+}
+@end

+ 916 - 0
Apex Mobile/Apex Mobile.xcodeproj/project.pbxproj

@@ -0,0 +1,916 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		711DC6B218C30A4800FB1749 /* TableCellEdit.m in Sources */ = {isa = PBXBuildFile; fileRef = 711DC6B118C30A4800FB1749 /* TableCellEdit.m */; };
+		7120DCE718BE255000E7546F /* GoogleMaps.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCE618BE255000E7546F /* GoogleMaps.framework */; };
+		7120DCE918BE25B000E7546F /* GoogleMaps.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 7120DCE818BE25B000E7546F /* GoogleMaps.bundle */; };
+		7120DCEB18BE25CE00E7546F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCEA18BE25CE00E7546F /* AVFoundation.framework */; };
+		7120DCED18BE25DA00E7546F /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCEC18BE25DA00E7546F /* CoreData.framework */; };
+		7120DCEF18BE25E500E7546F /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCEE18BE25E500E7546F /* CoreLocation.framework */; };
+		7120DCF118BE25F500E7546F /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCF018BE25F500E7546F /* CoreText.framework */; };
+		7120DCF318BE260700E7546F /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCF218BE260700E7546F /* GLKit.framework */; };
+		7120DCF518BE261500E7546F /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCF418BE261500E7546F /* ImageIO.framework */; };
+		7120DCF718BE262300E7546F /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCF618BE262300E7546F /* libc++.dylib */; };
+		7120DCF918BE262E00E7546F /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCF818BE262E00E7546F /* libicucore.dylib */; };
+		7120DCFB18BE263800E7546F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCFA18BE263800E7546F /* libz.dylib */; };
+		7120DCFD18BE264300E7546F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCFC18BE264300E7546F /* OpenGLES.framework */; };
+		7120DCFF18BE265100E7546F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DCFE18BE265100E7546F /* QuartzCore.framework */; };
+		7120DD0118BE266000E7546F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7120DD0018BE266000E7546F /* SystemConfiguration.framework */; };
+		7120DD0418BE273900E7546F /* LocationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7120DD0318BE273900E7546F /* LocationViewController.m */; };
+		71286AB418C70061001FDF43 /* AESCrypt.m in Sources */ = {isa = PBXBuildFile; fileRef = 71286AAB18C70061001FDF43 /* AESCrypt.m */; };
+		71286AB518C70061001FDF43 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 71286AAC18C70061001FDF43 /* LICENSE */; };
+		71286AB618C70061001FDF43 /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 71286AAE18C70061001FDF43 /* NSData+Base64.m */; };
+		71286AB718C70061001FDF43 /* NSData+CommonCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = 71286AB018C70061001FDF43 /* NSData+CommonCrypto.m */; };
+		71286AB818C70061001FDF43 /* NSString+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 71286AB218C70061001FDF43 /* NSString+Base64.m */; };
+		71286AB918C70061001FDF43 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 71286AB318C70061001FDF43 /* README.md */; };
+		712A301318CFEF550022E6E6 /* CustomizeFieldViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 712A301218CFEF550022E6E6 /* CustomizeFieldViewController.m */; };
+		712CBA0318CF38DB00C61394 /* RTLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 712CBA0218CF38DB00C61394 /* RTLabel.m */; };
+		71330C2018BCC4DA0048956C /* FunctionSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71330C1F18BCC4DA0048956C /* FunctionSelectViewController.m */; };
+		71375C8F18D96EDE00EBA026 /* TabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71375C8E18D96EDE00EBA026 /* TabBarController.m */; };
+		71406DCE18C36A52000914C4 /* TableCellBool.m in Sources */ = {isa = PBXBuildFile; fileRef = 71406DCD18C36A52000914C4 /* TableCellBool.m */; };
+		71406DD118C36A6E000914C4 /* TableCellDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 71406DD018C36A6E000914C4 /* TableCellDate.m */; };
+		7170AAE218D7C999003B711C /* LocationDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7170AAE118D7C999003B711C /* LocationDetailViewController.m */; };
+		717D76EB18C7F8120070302D /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 717D76EA18C7F8120070302D /* Reachability.m */; };
+		717D772F18C84E3F0070302D /* PageData.m in Sources */ = {isa = PBXBuildFile; fileRef = 717D772E18C84E3F0070302D /* PageData.m */; };
+		71951E6F18C6A9A5005024BD /* TouchLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 71951E6E18C6A9A5005024BD /* TouchLabel.m */; };
+		719A51A518C5A4AF0080C075 /* SimpleGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51A418C5A4AF0080C075 /* SimpleGrid.m */; };
+		719A51A918C5A5D30080C075 /* SimpleGridDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51A818C5A5D30080C075 /* SimpleGridDataSource.m */; };
+		719A51B418C5A8100080C075 /* ResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51B318C5A8100080C075 /* ResultViewController.m */; };
+		719A51BA18C5AB7B0080C075 /* SimpleGridComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51B918C5AB7B0080C075 /* SimpleGridComponent.m */; };
+		719E7E3018C015D0003408FF /* ApexMobileNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 719E7E2F18C015D0003408FF /* ApexMobileNetwork.m */; };
+		719E7E3318C0368A003408FF /* ApexMobileDB.m in Sources */ = {isa = PBXBuildFile; fileRef = 719E7E3218C0368A003408FF /* ApexMobileDB.m */; };
+		719E7E3518C0395E003408FF /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 719E7E3418C0395E003408FF /* libsqlite3.dylib */; };
+		719EF8E118BB839F00EFFF5F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 719EF8E018BB839F00EFFF5F /* Foundation.framework */; };
+		719EF8E318BB839F00EFFF5F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 719EF8E218BB839F00EFFF5F /* CoreGraphics.framework */; };
+		719EF8E518BB839F00EFFF5F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 719EF8E418BB839F00EFFF5F /* UIKit.framework */; };
+		719EF8EB18BB839F00EFFF5F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 719EF8E918BB839F00EFFF5F /* InfoPlist.strings */; };
+		719EF8ED18BB839F00EFFF5F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 719EF8EC18BB839F00EFFF5F /* main.m */; };
+		719EF8F118BB839F00EFFF5F /* ApexMobileAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 719EF8F018BB839F00EFFF5F /* ApexMobileAppDelegate.m */; };
+		719EF8F418BB839F00EFFF5F /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 719EF8F218BB839F00EFFF5F /* Main_iPhone.storyboard */; };
+		719EF8FA18BB839F00EFFF5F /* ApexMobileFirstViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 719EF8F918BB839F00EFFF5F /* ApexMobileFirstViewController.m */; };
+		719EF8FD18BB839F00EFFF5F /* ApexMobileSecondViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 719EF8FC18BB839F00EFFF5F /* ApexMobileSecondViewController.m */; };
+		719EF8FF18BB839F00EFFF5F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 719EF8FE18BB839F00EFFF5F /* Images.xcassets */; };
+		719EF90618BB839F00EFFF5F /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 719EF90518BB839F00EFFF5F /* XCTest.framework */; };
+		719EF90718BB839F00EFFF5F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 719EF8E018BB839F00EFFF5F /* Foundation.framework */; };
+		719EF90818BB839F00EFFF5F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 719EF8E418BB839F00EFFF5F /* UIKit.framework */; };
+		719EF91018BB839F00EFFF5F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 719EF90E18BB839F00EFFF5F /* InfoPlist.strings */; };
+		719EF91218BB839F00EFFF5F /* Apex_MobileTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 719EF91118BB839F00EFFF5F /* Apex_MobileTests.m */; };
+		71A003FC18D680560057CDFD /* RetrievePasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A003FB18D680560057CDFD /* RetrievePasswordViewController.m */; };
+		71A003FF18D6BFB40057CDFD /* ChangePasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A003FE18D6BFB40057CDFD /* ChangePasswordViewController.m */; };
+		71A01D7918C9AE77003307A9 /* DetailCellKV.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A01D7818C9AE77003307A9 /* DetailCellKV.m */; };
+		71A01D7C18C9AE97003307A9 /* DetailCellList.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A01D7B18C9AE97003307A9 /* DetailCellList.m */; };
+		71A01D7F18C9AEC8003307A9 /* DetailCellWeb.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A01D7E18C9AEC8003307A9 /* DetailCellWeb.m */; };
+		71A01D8218C9BA67003307A9 /* DetailContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A01D8118C9BA67003307A9 /* DetailContent.m */; };
+		71A01D8518C9BDC8003307A9 /* DetailTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A01D8418C9BDC8003307A9 /* DetailTabBarController.m */; };
+		71A2D76218DC3895001C380A /* LineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A2D76118DC3895001C380A /* LineView.m */; };
+		71A541D418D151C70017E2BD /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A541D318D151C70017E2BD /* WebViewController.m */; };
+		71A565D918C20F5900CDAC07 /* SearchTableAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A565D818C20F5900CDAC07 /* SearchTableAdapter.m */; };
+		71A565DF18C212EA00CDAC07 /* Constant.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A565DE18C212EA00CDAC07 /* Constant.m */; };
+		71AE427318C47AF900B8EC3D /* SearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71AE427218C47AF900B8EC3D /* SearchViewController.m */; };
+		71CEE38A18CB749E00052C63 /* DetailPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71CEE38918CB749E00052C63 /* DetailPageViewController.m */; };
+		71CEE3D718CC559B00052C63 /* ApexMobileNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71CEE3D618CC559B00052C63 /* ApexMobileNavigationController.m */; };
+		71DA74A618BDDD31003B46A6 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71DA74A518BDDD30003B46A6 /* AboutViewController.m */; };
+		71DA74A818BDDFB5003B46A6 /* about.htm in Resources */ = {isa = PBXBuildFile; fileRef = 71DA74A718BDDFB5003B46A6 /* about.htm */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		719EF90918BB839F00EFFF5F /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 719EF8D518BB839F00EFFF5F /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 719EF8DC18BB839F00EFFF5F;
+			remoteInfo = "Apex Mobile";
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		711DC6B018C30A4800FB1749 /* TableCellEdit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableCellEdit.h; sourceTree = "<group>"; };
+		711DC6B118C30A4800FB1749 /* TableCellEdit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableCellEdit.m; sourceTree = "<group>"; };
+		7120DCE618BE255000E7546F /* GoogleMaps.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleMaps.framework; sourceTree = "<group>"; };
+		7120DCE818BE25B000E7546F /* GoogleMaps.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = GoogleMaps.bundle; path = GoogleMaps.framework/Versions/A/Resources/GoogleMaps.bundle; sourceTree = "<group>"; };
+		7120DCEA18BE25CE00E7546F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		7120DCEC18BE25DA00E7546F /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
+		7120DCEE18BE25E500E7546F /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
+		7120DCF018BE25F500E7546F /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+		7120DCF218BE260700E7546F /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
+		7120DCF418BE261500E7546F /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
+		7120DCF618BE262300E7546F /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; };
+		7120DCF818BE262E00E7546F /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; };
+		7120DCFA18BE263800E7546F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+		7120DCFC18BE264300E7546F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		7120DCFE18BE265100E7546F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		7120DD0018BE266000E7546F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+		7120DD0218BE273900E7546F /* LocationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationViewController.h; sourceTree = "<group>"; };
+		7120DD0318BE273900E7546F /* LocationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationViewController.m; sourceTree = "<group>"; };
+		71286AAA18C70061001FDF43 /* AESCrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AESCrypt.h; sourceTree = "<group>"; };
+		71286AAB18C70061001FDF43 /* AESCrypt.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AESCrypt.m; sourceTree = "<group>"; };
+		71286AAC18C70061001FDF43 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
+		71286AAD18C70061001FDF43 /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = "<group>"; };
+		71286AAE18C70061001FDF43 /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = "<group>"; };
+		71286AAF18C70061001FDF43 /* NSData+CommonCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+CommonCrypto.h"; sourceTree = "<group>"; };
+		71286AB018C70061001FDF43 /* NSData+CommonCrypto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+CommonCrypto.m"; sourceTree = "<group>"; };
+		71286AB118C70061001FDF43 /* NSString+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Base64.h"; sourceTree = "<group>"; };
+		71286AB218C70061001FDF43 /* NSString+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Base64.m"; sourceTree = "<group>"; };
+		71286AB318C70061001FDF43 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; };
+		712A301118CFEF550022E6E6 /* CustomizeFieldViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomizeFieldViewController.h; sourceTree = "<group>"; };
+		712A301218CFEF550022E6E6 /* CustomizeFieldViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomizeFieldViewController.m; sourceTree = "<group>"; };
+		712CBA0118CF38DB00C61394 /* RTLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTLabel.h; sourceTree = "<group>"; };
+		712CBA0218CF38DB00C61394 /* RTLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTLabel.m; sourceTree = "<group>"; };
+		71330C1E18BCC4DA0048956C /* FunctionSelectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionSelectViewController.h; sourceTree = "<group>"; };
+		71330C1F18BCC4DA0048956C /* FunctionSelectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FunctionSelectViewController.m; sourceTree = "<group>"; };
+		71375C8D18D96EDE00EBA026 /* TabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TabBarController.h; sourceTree = "<group>"; };
+		71375C8E18D96EDE00EBA026 /* TabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TabBarController.m; sourceTree = "<group>"; };
+		71406DCC18C36A52000914C4 /* TableCellBool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableCellBool.h; sourceTree = "<group>"; };
+		71406DCD18C36A52000914C4 /* TableCellBool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableCellBool.m; sourceTree = "<group>"; };
+		71406DCF18C36A6E000914C4 /* TableCellDate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableCellDate.h; sourceTree = "<group>"; };
+		71406DD018C36A6E000914C4 /* TableCellDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableCellDate.m; sourceTree = "<group>"; };
+		7170AAE018D7C999003B711C /* LocationDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationDetailViewController.h; sourceTree = "<group>"; };
+		7170AAE118D7C999003B711C /* LocationDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationDetailViewController.m; sourceTree = "<group>"; };
+		717D76E918C7F8120070302D /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
+		717D76EA18C7F8120070302D /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
+		717D772D18C84E3F0070302D /* PageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageData.h; sourceTree = "<group>"; };
+		717D772E18C84E3F0070302D /* PageData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PageData.m; sourceTree = "<group>"; };
+		71951E6D18C6A9A5005024BD /* TouchLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchLabel.h; sourceTree = "<group>"; };
+		71951E6E18C6A9A5005024BD /* TouchLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TouchLabel.m; sourceTree = "<group>"; };
+		719A51A318C5A4AF0080C075 /* SimpleGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SimpleGrid.h; path = ../SimpleGrid.h; sourceTree = "<group>"; };
+		719A51A418C5A4AF0080C075 /* SimpleGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SimpleGrid.m; path = ../SimpleGrid.m; sourceTree = "<group>"; };
+		719A51A718C5A5D30080C075 /* SimpleGridDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleGridDataSource.h; sourceTree = "<group>"; };
+		719A51A818C5A5D30080C075 /* SimpleGridDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleGridDataSource.m; sourceTree = "<group>"; };
+		719A51B218C5A8100080C075 /* ResultViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultViewController.h; sourceTree = "<group>"; };
+		719A51B318C5A8100080C075 /* ResultViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResultViewController.m; sourceTree = "<group>"; };
+		719A51B818C5AB7B0080C075 /* SimpleGridComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleGridComponent.h; sourceTree = "<group>"; };
+		719A51B918C5AB7B0080C075 /* SimpleGridComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleGridComponent.m; sourceTree = "<group>"; };
+		719E7E2E18C015D0003408FF /* ApexMobileNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApexMobileNetwork.h; sourceTree = "<group>"; };
+		719E7E2F18C015D0003408FF /* ApexMobileNetwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApexMobileNetwork.m; sourceTree = "<group>"; };
+		719E7E3118C0368A003408FF /* ApexMobileDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApexMobileDB.h; sourceTree = "<group>"; };
+		719E7E3218C0368A003408FF /* ApexMobileDB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApexMobileDB.m; sourceTree = "<group>"; };
+		719E7E3418C0395E003408FF /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
+		719EF8DD18BB839F00EFFF5F /* Apex Mobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Apex Mobile.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		719EF8E018BB839F00EFFF5F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		719EF8E218BB839F00EFFF5F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		719EF8E418BB839F00EFFF5F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		719EF8E818BB839F00EFFF5F /* Apex Mobile-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Apex Mobile-Info.plist"; sourceTree = "<group>"; };
+		719EF8EA18BB839F00EFFF5F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		719EF8EC18BB839F00EFFF5F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		719EF8EE18BB839F00EFFF5F /* Apex Mobile-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Apex Mobile-Prefix.pch"; sourceTree = "<group>"; };
+		719EF8EF18BB839F00EFFF5F /* ApexMobileAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApexMobileAppDelegate.h; sourceTree = "<group>"; };
+		719EF8F018BB839F00EFFF5F /* ApexMobileAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ApexMobileAppDelegate.m; sourceTree = "<group>"; };
+		719EF8F318BB839F00EFFF5F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = "<group>"; };
+		719EF8F818BB839F00EFFF5F /* ApexMobileFirstViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApexMobileFirstViewController.h; sourceTree = "<group>"; };
+		719EF8F918BB839F00EFFF5F /* ApexMobileFirstViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ApexMobileFirstViewController.m; sourceTree = "<group>"; };
+		719EF8FB18BB839F00EFFF5F /* ApexMobileSecondViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApexMobileSecondViewController.h; sourceTree = "<group>"; };
+		719EF8FC18BB839F00EFFF5F /* ApexMobileSecondViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ApexMobileSecondViewController.m; sourceTree = "<group>"; };
+		719EF8FE18BB839F00EFFF5F /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+		719EF90418BB839F00EFFF5F /* Apex MobileTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Apex MobileTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+		719EF90518BB839F00EFFF5F /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+		719EF90D18BB839F00EFFF5F /* Apex MobileTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Apex MobileTests-Info.plist"; sourceTree = "<group>"; };
+		719EF90F18BB839F00EFFF5F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		719EF91118BB839F00EFFF5F /* Apex_MobileTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Apex_MobileTests.m; sourceTree = "<group>"; };
+		71A003FA18D680560057CDFD /* RetrievePasswordViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RetrievePasswordViewController.h; sourceTree = "<group>"; };
+		71A003FB18D680560057CDFD /* RetrievePasswordViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RetrievePasswordViewController.m; sourceTree = "<group>"; };
+		71A003FD18D6BFB40057CDFD /* ChangePasswordViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChangePasswordViewController.h; sourceTree = "<group>"; };
+		71A003FE18D6BFB40057CDFD /* ChangePasswordViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChangePasswordViewController.m; sourceTree = "<group>"; };
+		71A01D7718C9AE77003307A9 /* DetailCellKV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailCellKV.h; sourceTree = "<group>"; };
+		71A01D7818C9AE77003307A9 /* DetailCellKV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailCellKV.m; sourceTree = "<group>"; };
+		71A01D7A18C9AE97003307A9 /* DetailCellList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailCellList.h; sourceTree = "<group>"; };
+		71A01D7B18C9AE97003307A9 /* DetailCellList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailCellList.m; sourceTree = "<group>"; };
+		71A01D7D18C9AEC8003307A9 /* DetailCellWeb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailCellWeb.h; sourceTree = "<group>"; };
+		71A01D7E18C9AEC8003307A9 /* DetailCellWeb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailCellWeb.m; sourceTree = "<group>"; };
+		71A01D8018C9BA67003307A9 /* DetailContent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailContent.h; sourceTree = "<group>"; };
+		71A01D8118C9BA67003307A9 /* DetailContent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailContent.m; sourceTree = "<group>"; };
+		71A01D8318C9BDC8003307A9 /* DetailTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailTabBarController.h; sourceTree = "<group>"; };
+		71A01D8418C9BDC8003307A9 /* DetailTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailTabBarController.m; sourceTree = "<group>"; };
+		71A2D76018DC3895001C380A /* LineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineView.h; sourceTree = "<group>"; };
+		71A2D76118DC3895001C380A /* LineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineView.m; sourceTree = "<group>"; };
+		71A541D218D151C70017E2BD /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewController.h; sourceTree = "<group>"; };
+		71A541D318D151C70017E2BD /* WebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewController.m; sourceTree = "<group>"; };
+		71A565D718C20F5900CDAC07 /* SearchTableAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchTableAdapter.h; sourceTree = "<group>"; };
+		71A565D818C20F5900CDAC07 /* SearchTableAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchTableAdapter.m; sourceTree = "<group>"; };
+		71A565DD18C212EA00CDAC07 /* Constant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Constant.h; sourceTree = "<group>"; };
+		71A565DE18C212EA00CDAC07 /* Constant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Constant.m; sourceTree = "<group>"; };
+		71AE427118C47AF900B8EC3D /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = "<group>"; };
+		71AE427218C47AF900B8EC3D /* SearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchViewController.m; sourceTree = "<group>"; };
+		71CEE38818CB749E00052C63 /* DetailPageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailPageViewController.h; sourceTree = "<group>"; };
+		71CEE38918CB749E00052C63 /* DetailPageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailPageViewController.m; sourceTree = "<group>"; };
+		71CEE3D518CC559B00052C63 /* ApexMobileNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApexMobileNavigationController.h; sourceTree = "<group>"; };
+		71CEE3D618CC559B00052C63 /* ApexMobileNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApexMobileNavigationController.m; sourceTree = "<group>"; };
+		71DA74A418BDDD30003B46A6 /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AboutViewController.h; path = ../AboutViewController.h; sourceTree = "<group>"; };
+		71DA74A518BDDD30003B46A6 /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AboutViewController.m; path = ../AboutViewController.m; sourceTree = "<group>"; };
+		71DA74A718BDDFB5003B46A6 /* about.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = about.htm; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		719EF8DA18BB839F00EFFF5F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				719E7E3518C0395E003408FF /* libsqlite3.dylib in Frameworks */,
+				7120DD0118BE266000E7546F /* SystemConfiguration.framework in Frameworks */,
+				7120DCFF18BE265100E7546F /* QuartzCore.framework in Frameworks */,
+				7120DCFD18BE264300E7546F /* OpenGLES.framework in Frameworks */,
+				7120DCFB18BE263800E7546F /* libz.dylib in Frameworks */,
+				7120DCF918BE262E00E7546F /* libicucore.dylib in Frameworks */,
+				7120DCF718BE262300E7546F /* libc++.dylib in Frameworks */,
+				7120DCF518BE261500E7546F /* ImageIO.framework in Frameworks */,
+				7120DCF318BE260700E7546F /* GLKit.framework in Frameworks */,
+				7120DCF118BE25F500E7546F /* CoreText.framework in Frameworks */,
+				7120DCEF18BE25E500E7546F /* CoreLocation.framework in Frameworks */,
+				7120DCED18BE25DA00E7546F /* CoreData.framework in Frameworks */,
+				7120DCEB18BE25CE00E7546F /* AVFoundation.framework in Frameworks */,
+				719EF8E318BB839F00EFFF5F /* CoreGraphics.framework in Frameworks */,
+				719EF8E518BB839F00EFFF5F /* UIKit.framework in Frameworks */,
+				7120DCE718BE255000E7546F /* GoogleMaps.framework in Frameworks */,
+				719EF8E118BB839F00EFFF5F /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		719EF90118BB839F00EFFF5F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				719EF90618BB839F00EFFF5F /* XCTest.framework in Frameworks */,
+				719EF90818BB839F00EFFF5F /* UIKit.framework in Frameworks */,
+				719EF90718BB839F00EFFF5F /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		71286AA918C7002F001FDF43 /* AES */ = {
+			isa = PBXGroup;
+			children = (
+				71286AAA18C70061001FDF43 /* AESCrypt.h */,
+				71286AAB18C70061001FDF43 /* AESCrypt.m */,
+				71286AAC18C70061001FDF43 /* LICENSE */,
+				71286AAD18C70061001FDF43 /* NSData+Base64.h */,
+				71286AAE18C70061001FDF43 /* NSData+Base64.m */,
+				71286AAF18C70061001FDF43 /* NSData+CommonCrypto.h */,
+				71286AB018C70061001FDF43 /* NSData+CommonCrypto.m */,
+				71286AB118C70061001FDF43 /* NSString+Base64.h */,
+				71286AB218C70061001FDF43 /* NSString+Base64.m */,
+				71286AB318C70061001FDF43 /* README.md */,
+			);
+			name = AES;
+			sourceTree = "<group>";
+		};
+		719A51A618C5A4E40080C075 /* CustomUI */ = {
+			isa = PBXGroup;
+			children = (
+				712CBA0118CF38DB00C61394 /* RTLabel.h */,
+				712CBA0218CF38DB00C61394 /* RTLabel.m */,
+				719A51A318C5A4AF0080C075 /* SimpleGrid.h */,
+				719A51A418C5A4AF0080C075 /* SimpleGrid.m */,
+				719A51A718C5A5D30080C075 /* SimpleGridDataSource.h */,
+				719A51A818C5A5D30080C075 /* SimpleGridDataSource.m */,
+				719A51B818C5AB7B0080C075 /* SimpleGridComponent.h */,
+				719A51B918C5AB7B0080C075 /* SimpleGridComponent.m */,
+				71951E6D18C6A9A5005024BD /* TouchLabel.h */,
+				71951E6E18C6A9A5005024BD /* TouchLabel.m */,
+			);
+			name = CustomUI;
+			sourceTree = "<group>";
+		};
+		719A51AA18C5A60C0080C075 /* unused */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = unused;
+			sourceTree = "<group>";
+		};
+		719A51AB18C5A66A0080C075 /* Search */ = {
+			isa = PBXGroup;
+			children = (
+				71AE427118C47AF900B8EC3D /* SearchViewController.h */,
+				71AE427218C47AF900B8EC3D /* SearchViewController.m */,
+				71A565D718C20F5900CDAC07 /* SearchTableAdapter.h */,
+				71A565D818C20F5900CDAC07 /* SearchTableAdapter.m */,
+				711DC6B018C30A4800FB1749 /* TableCellEdit.h */,
+				711DC6B118C30A4800FB1749 /* TableCellEdit.m */,
+				71406DCC18C36A52000914C4 /* TableCellBool.h */,
+				71406DCD18C36A52000914C4 /* TableCellBool.m */,
+				71406DCF18C36A6E000914C4 /* TableCellDate.h */,
+				71406DD018C36A6E000914C4 /* TableCellDate.m */,
+			);
+			name = Search;
+			sourceTree = "<group>";
+		};
+		719A51AC18C5A6A80080C075 /* Location */ = {
+			isa = PBXGroup;
+			children = (
+				7120DD0218BE273900E7546F /* LocationViewController.h */,
+				7120DD0318BE273900E7546F /* LocationViewController.m */,
+				7170AAE018D7C999003B711C /* LocationDetailViewController.h */,
+				7170AAE118D7C999003B711C /* LocationDetailViewController.m */,
+			);
+			name = Location;
+			sourceTree = "<group>";
+		};
+		719A51AD18C5A6D00080C075 /* About */ = {
+			isa = PBXGroup;
+			children = (
+				71DA74A418BDDD30003B46A6 /* AboutViewController.h */,
+				71DA74A518BDDD30003B46A6 /* AboutViewController.m */,
+			);
+			name = About;
+			sourceTree = "<group>";
+		};
+		719A51AE18C5A7230080C075 /* FunctionSelect */ = {
+			isa = PBXGroup;
+			children = (
+				71330C1E18BCC4DA0048956C /* FunctionSelectViewController.h */,
+				71330C1F18BCC4DA0048956C /* FunctionSelectViewController.m */,
+			);
+			name = FunctionSelect;
+			sourceTree = "<group>";
+		};
+		719A51AF18C5A75A0080C075 /* Result */ = {
+			isa = PBXGroup;
+			children = (
+				719A51B218C5A8100080C075 /* ResultViewController.h */,
+				719A51B318C5A8100080C075 /* ResultViewController.m */,
+				717D772D18C84E3F0070302D /* PageData.h */,
+				717D772E18C84E3F0070302D /* PageData.m */,
+			);
+			name = Result;
+			sourceTree = "<group>";
+		};
+		719A51B018C5A7680080C075 /* Detail */ = {
+			isa = PBXGroup;
+			children = (
+				71A01D7718C9AE77003307A9 /* DetailCellKV.h */,
+				71A01D7818C9AE77003307A9 /* DetailCellKV.m */,
+				71A01D7A18C9AE97003307A9 /* DetailCellList.h */,
+				71A01D7B18C9AE97003307A9 /* DetailCellList.m */,
+				71A01D7D18C9AEC8003307A9 /* DetailCellWeb.h */,
+				71A01D7E18C9AEC8003307A9 /* DetailCellWeb.m */,
+				71A01D8018C9BA67003307A9 /* DetailContent.h */,
+				71A01D8118C9BA67003307A9 /* DetailContent.m */,
+				71A01D8318C9BDC8003307A9 /* DetailTabBarController.h */,
+				71A01D8418C9BDC8003307A9 /* DetailTabBarController.m */,
+				71CEE38818CB749E00052C63 /* DetailPageViewController.h */,
+				71CEE38918CB749E00052C63 /* DetailPageViewController.m */,
+				71A2D76018DC3895001C380A /* LineView.h */,
+				71A2D76118DC3895001C380A /* LineView.m */,
+			);
+			name = Detail;
+			sourceTree = "<group>";
+		};
+		719A51B118C5A7740080C075 /* FieldsSetting */ = {
+			isa = PBXGroup;
+			children = (
+				712A301118CFEF550022E6E6 /* CustomizeFieldViewController.h */,
+				712A301218CFEF550022E6E6 /* CustomizeFieldViewController.m */,
+			);
+			name = FieldsSetting;
+			sourceTree = "<group>";
+		};
+		719E7E2D18C01555003408FF /* utils */ = {
+			isa = PBXGroup;
+			children = (
+				71286AA918C7002F001FDF43 /* AES */,
+				717D76E918C7F8120070302D /* Reachability.h */,
+				717D76EA18C7F8120070302D /* Reachability.m */,
+				719E7E2E18C015D0003408FF /* ApexMobileNetwork.h */,
+				719E7E2F18C015D0003408FF /* ApexMobileNetwork.m */,
+				719E7E3118C0368A003408FF /* ApexMobileDB.h */,
+				719E7E3218C0368A003408FF /* ApexMobileDB.m */,
+				71A565DD18C212EA00CDAC07 /* Constant.h */,
+				71A565DE18C212EA00CDAC07 /* Constant.m */,
+			);
+			name = utils;
+			sourceTree = "<group>";
+		};
+		719EF8D418BB839F00EFFF5F = {
+			isa = PBXGroup;
+			children = (
+				719EF8E618BB839F00EFFF5F /* Apex Mobile */,
+				719EF90B18BB839F00EFFF5F /* Apex MobileTests */,
+				719EF8DF18BB839F00EFFF5F /* Frameworks */,
+				719EF8DE18BB839F00EFFF5F /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		719EF8DE18BB839F00EFFF5F /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				719EF8DD18BB839F00EFFF5F /* Apex Mobile.app */,
+				719EF90418BB839F00EFFF5F /* Apex MobileTests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		719EF8DF18BB839F00EFFF5F /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				719E7E3418C0395E003408FF /* libsqlite3.dylib */,
+				7120DD0018BE266000E7546F /* SystemConfiguration.framework */,
+				7120DCFE18BE265100E7546F /* QuartzCore.framework */,
+				7120DCFC18BE264300E7546F /* OpenGLES.framework */,
+				7120DCFA18BE263800E7546F /* libz.dylib */,
+				7120DCF818BE262E00E7546F /* libicucore.dylib */,
+				7120DCF618BE262300E7546F /* libc++.dylib */,
+				7120DCF418BE261500E7546F /* ImageIO.framework */,
+				7120DCF218BE260700E7546F /* GLKit.framework */,
+				7120DCF018BE25F500E7546F /* CoreText.framework */,
+				7120DCEE18BE25E500E7546F /* CoreLocation.framework */,
+				7120DCEC18BE25DA00E7546F /* CoreData.framework */,
+				7120DCEA18BE25CE00E7546F /* AVFoundation.framework */,
+				7120DCE818BE25B000E7546F /* GoogleMaps.bundle */,
+				7120DCE618BE255000E7546F /* GoogleMaps.framework */,
+				719EF8E018BB839F00EFFF5F /* Foundation.framework */,
+				719EF8E218BB839F00EFFF5F /* CoreGraphics.framework */,
+				719EF8E418BB839F00EFFF5F /* UIKit.framework */,
+				719EF90518BB839F00EFFF5F /* XCTest.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		719EF8E618BB839F00EFFF5F /* Apex Mobile */ = {
+			isa = PBXGroup;
+			children = (
+				71A003F918D680250057CDFD /* password */,
+				71A541D118D151770017E2BD /* webview */,
+				719A51B118C5A7740080C075 /* FieldsSetting */,
+				719A51B018C5A7680080C075 /* Detail */,
+				719A51AF18C5A75A0080C075 /* Result */,
+				719A51AE18C5A7230080C075 /* FunctionSelect */,
+				719A51AD18C5A6D00080C075 /* About */,
+				719A51AC18C5A6A80080C075 /* Location */,
+				719A51AB18C5A66A0080C075 /* Search */,
+				719A51AA18C5A60C0080C075 /* unused */,
+				719A51A618C5A4E40080C075 /* CustomUI */,
+				71A565E018C2141C00CDAC07 /* resource */,
+				719E7E2D18C01555003408FF /* utils */,
+				719EF8EF18BB839F00EFFF5F /* ApexMobileAppDelegate.h */,
+				719EF8F018BB839F00EFFF5F /* ApexMobileAppDelegate.m */,
+				719EF8F218BB839F00EFFF5F /* Main_iPhone.storyboard */,
+				719EF8F818BB839F00EFFF5F /* ApexMobileFirstViewController.h */,
+				719EF8F918BB839F00EFFF5F /* ApexMobileFirstViewController.m */,
+				71CEE3D518CC559B00052C63 /* ApexMobileNavigationController.h */,
+				71CEE3D618CC559B00052C63 /* ApexMobileNavigationController.m */,
+				719EF8FB18BB839F00EFFF5F /* ApexMobileSecondViewController.h */,
+				719EF8FC18BB839F00EFFF5F /* ApexMobileSecondViewController.m */,
+				719EF8FE18BB839F00EFFF5F /* Images.xcassets */,
+				719EF8E718BB839F00EFFF5F /* Supporting Files */,
+				71375C8D18D96EDE00EBA026 /* TabBarController.h */,
+				71375C8E18D96EDE00EBA026 /* TabBarController.m */,
+			);
+			path = "Apex Mobile";
+			sourceTree = "<group>";
+		};
+		719EF8E718BB839F00EFFF5F /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				719EF8E818BB839F00EFFF5F /* Apex Mobile-Info.plist */,
+				719EF8E918BB839F00EFFF5F /* InfoPlist.strings */,
+				719EF8EC18BB839F00EFFF5F /* main.m */,
+				719EF8EE18BB839F00EFFF5F /* Apex Mobile-Prefix.pch */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		719EF90B18BB839F00EFFF5F /* Apex MobileTests */ = {
+			isa = PBXGroup;
+			children = (
+				719EF91118BB839F00EFFF5F /* Apex_MobileTests.m */,
+				719EF90C18BB839F00EFFF5F /* Supporting Files */,
+			);
+			path = "Apex MobileTests";
+			sourceTree = "<group>";
+		};
+		719EF90C18BB839F00EFFF5F /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				719EF90D18BB839F00EFFF5F /* Apex MobileTests-Info.plist */,
+				719EF90E18BB839F00EFFF5F /* InfoPlist.strings */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		71A003F918D680250057CDFD /* password */ = {
+			isa = PBXGroup;
+			children = (
+				71A003FA18D680560057CDFD /* RetrievePasswordViewController.h */,
+				71A003FB18D680560057CDFD /* RetrievePasswordViewController.m */,
+				71A003FD18D6BFB40057CDFD /* ChangePasswordViewController.h */,
+				71A003FE18D6BFB40057CDFD /* ChangePasswordViewController.m */,
+			);
+			name = password;
+			sourceTree = "<group>";
+		};
+		71A541D118D151770017E2BD /* webview */ = {
+			isa = PBXGroup;
+			children = (
+				71A541D218D151C70017E2BD /* WebViewController.h */,
+				71A541D318D151C70017E2BD /* WebViewController.m */,
+			);
+			name = webview;
+			sourceTree = "<group>";
+		};
+		71A565E018C2141C00CDAC07 /* resource */ = {
+			isa = PBXGroup;
+			children = (
+				71DA74A718BDDFB5003B46A6 /* about.htm */,
+			);
+			name = resource;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		719EF8DC18BB839F00EFFF5F /* Apex Mobile */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 719EF91518BB839F00EFFF5F /* Build configuration list for PBXNativeTarget "Apex Mobile" */;
+			buildPhases = (
+				719EF8D918BB839F00EFFF5F /* Sources */,
+				719EF8DA18BB839F00EFFF5F /* Frameworks */,
+				719EF8DB18BB839F00EFFF5F /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "Apex Mobile";
+			productName = "Apex Mobile";
+			productReference = 719EF8DD18BB839F00EFFF5F /* Apex Mobile.app */;
+			productType = "com.apple.product-type.application";
+		};
+		719EF90318BB839F00EFFF5F /* Apex MobileTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 719EF91818BB839F00EFFF5F /* Build configuration list for PBXNativeTarget "Apex MobileTests" */;
+			buildPhases = (
+				719EF90018BB839F00EFFF5F /* Sources */,
+				719EF90118BB839F00EFFF5F /* Frameworks */,
+				719EF90218BB839F00EFFF5F /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				719EF90A18BB839F00EFFF5F /* PBXTargetDependency */,
+			);
+			name = "Apex MobileTests";
+			productName = "Apex MobileTests";
+			productReference = 719EF90418BB839F00EFFF5F /* Apex MobileTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		719EF8D518BB839F00EFFF5F /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				CLASSPREFIX = ApexMobile;
+				LastUpgradeCheck = 0510;
+				ORGANIZATIONNAME = "United Software Applications, Inc";
+				TargetAttributes = {
+					719EF8DC18BB839F00EFFF5F = {
+						DevelopmentTeam = HXWLAA5YN5;
+					};
+					719EF90318BB839F00EFFF5F = {
+						TestTargetID = 719EF8DC18BB839F00EFFF5F;
+					};
+				};
+			};
+			buildConfigurationList = 719EF8D818BB839F00EFFF5F /* Build configuration list for PBXProject "Apex Mobile" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+				"zh-Hans",
+			);
+			mainGroup = 719EF8D418BB839F00EFFF5F;
+			productRefGroup = 719EF8DE18BB839F00EFFF5F /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				719EF8DC18BB839F00EFFF5F /* Apex Mobile */,
+				719EF90318BB839F00EFFF5F /* Apex MobileTests */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		719EF8DB18BB839F00EFFF5F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				719EF8FF18BB839F00EFFF5F /* Images.xcassets in Resources */,
+				719EF8F418BB839F00EFFF5F /* Main_iPhone.storyboard in Resources */,
+				71286AB518C70061001FDF43 /* LICENSE in Resources */,
+				7120DCE918BE25B000E7546F /* GoogleMaps.bundle in Resources */,
+				71DA74A818BDDFB5003B46A6 /* about.htm in Resources */,
+				71286AB918C70061001FDF43 /* README.md in Resources */,
+				719EF8EB18BB839F00EFFF5F /* InfoPlist.strings in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		719EF90218BB839F00EFFF5F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				719EF91018BB839F00EFFF5F /* InfoPlist.strings in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		719EF8D918BB839F00EFFF5F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				71406DCE18C36A52000914C4 /* TableCellBool.m in Sources */,
+				71A01D7F18C9AEC8003307A9 /* DetailCellWeb.m in Sources */,
+				71A01D8518C9BDC8003307A9 /* DetailTabBarController.m in Sources */,
+				71406DD118C36A6E000914C4 /* TableCellDate.m in Sources */,
+				717D772F18C84E3F0070302D /* PageData.m in Sources */,
+				71375C8F18D96EDE00EBA026 /* TabBarController.m in Sources */,
+				71951E6F18C6A9A5005024BD /* TouchLabel.m in Sources */,
+				71A01D7C18C9AE97003307A9 /* DetailCellList.m in Sources */,
+				71DA74A618BDDD31003B46A6 /* AboutViewController.m in Sources */,
+				712CBA0318CF38DB00C61394 /* RTLabel.m in Sources */,
+				71CEE3D718CC559B00052C63 /* ApexMobileNavigationController.m in Sources */,
+				71A541D418D151C70017E2BD /* WebViewController.m in Sources */,
+				71330C2018BCC4DA0048956C /* FunctionSelectViewController.m in Sources */,
+				719EF8FD18BB839F00EFFF5F /* ApexMobileSecondViewController.m in Sources */,
+				71AE427318C47AF900B8EC3D /* SearchViewController.m in Sources */,
+				71A565D918C20F5900CDAC07 /* SearchTableAdapter.m in Sources */,
+				719EF8FA18BB839F00EFFF5F /* ApexMobileFirstViewController.m in Sources */,
+				719A51A518C5A4AF0080C075 /* SimpleGrid.m in Sources */,
+				71286AB718C70061001FDF43 /* NSData+CommonCrypto.m in Sources */,
+				71A003FF18D6BFB40057CDFD /* ChangePasswordViewController.m in Sources */,
+				71CEE38A18CB749E00052C63 /* DetailPageViewController.m in Sources */,
+				71286AB618C70061001FDF43 /* NSData+Base64.m in Sources */,
+				719E7E3318C0368A003408FF /* ApexMobileDB.m in Sources */,
+				719E7E3018C015D0003408FF /* ApexMobileNetwork.m in Sources */,
+				719EF8F118BB839F00EFFF5F /* ApexMobileAppDelegate.m in Sources */,
+				7170AAE218D7C999003B711C /* LocationDetailViewController.m in Sources */,
+				712A301318CFEF550022E6E6 /* CustomizeFieldViewController.m in Sources */,
+				71A2D76218DC3895001C380A /* LineView.m in Sources */,
+				719A51B418C5A8100080C075 /* ResultViewController.m in Sources */,
+				711DC6B218C30A4800FB1749 /* TableCellEdit.m in Sources */,
+				71286AB818C70061001FDF43 /* NSString+Base64.m in Sources */,
+				71A01D8218C9BA67003307A9 /* DetailContent.m in Sources */,
+				71A003FC18D680560057CDFD /* RetrievePasswordViewController.m in Sources */,
+				719A51BA18C5AB7B0080C075 /* SimpleGridComponent.m in Sources */,
+				719EF8ED18BB839F00EFFF5F /* main.m in Sources */,
+				717D76EB18C7F8120070302D /* Reachability.m in Sources */,
+				7120DD0418BE273900E7546F /* LocationViewController.m in Sources */,
+				71286AB418C70061001FDF43 /* AESCrypt.m in Sources */,
+				71A01D7918C9AE77003307A9 /* DetailCellKV.m in Sources */,
+				719A51A918C5A5D30080C075 /* SimpleGridDataSource.m in Sources */,
+				71A565DF18C212EA00CDAC07 /* Constant.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		719EF90018BB839F00EFFF5F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				719EF91218BB839F00EFFF5F /* Apex_MobileTests.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		719EF90A18BB839F00EFFF5F /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 719EF8DC18BB839F00EFFF5F /* Apex Mobile */;
+			targetProxy = 719EF90918BB839F00EFFF5F /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		719EF8E918BB839F00EFFF5F /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				719EF8EA18BB839F00EFFF5F /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+		719EF8F218BB839F00EFFF5F /* Main_iPhone.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				719EF8F318BB839F00EFFF5F /* Base */,
+			);
+			name = Main_iPhone.storyboard;
+			sourceTree = "<group>";
+		};
+		719EF90E18BB839F00EFFF5F /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				719EF90F18BB839F00EFFF5F /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		719EF91318BB839F00EFFF5F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = 1;
+			};
+			name = Debug;
+		};
+		719EF91418BB839F00EFFF5F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				ENABLE_NS_ASSERTIONS = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = 1;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		719EF91618BB839F00EFFF5F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"/ios/Apex\\ Mobile",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Apex Mobile/Apex Mobile-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				INFOPLIST_FILE = "Apex Mobile/Apex Mobile-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				TARGETED_DEVICE_FAMILY = 1;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		719EF91718BB839F00EFFF5F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"/ios/Apex\\ Mobile",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Apex Mobile/Apex Mobile-Prefix.pch";
+				INFOPLIST_FILE = "Apex Mobile/Apex Mobile-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				TARGETED_DEVICE_FAMILY = 1;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+		719EF91918BB839F00EFFF5F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Apex Mobile.app/Apex Mobile";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(SDKROOT)/Developer/Library/Frameworks",
+					"$(inherited)",
+					"$(DEVELOPER_FRAMEWORKS_DIR)",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Apex Mobile/Apex Mobile-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				INFOPLIST_FILE = "Apex MobileTests/Apex MobileTests-Info.plist";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUNDLE_LOADER)";
+				WRAPPER_EXTENSION = xctest;
+			};
+			name = Debug;
+		};
+		719EF91A18BB839F00EFFF5F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Apex Mobile.app/Apex Mobile";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(SDKROOT)/Developer/Library/Frameworks",
+					"$(inherited)",
+					"$(DEVELOPER_FRAMEWORKS_DIR)",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Apex Mobile/Apex Mobile-Prefix.pch";
+				INFOPLIST_FILE = "Apex MobileTests/Apex MobileTests-Info.plist";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUNDLE_LOADER)";
+				WRAPPER_EXTENSION = xctest;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		719EF8D818BB839F00EFFF5F /* Build configuration list for PBXProject "Apex Mobile" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				719EF91318BB839F00EFFF5F /* Debug */,
+				719EF91418BB839F00EFFF5F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		719EF91518BB839F00EFFF5F /* Build configuration list for PBXNativeTarget "Apex Mobile" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				719EF91618BB839F00EFFF5F /* Debug */,
+				719EF91718BB839F00EFFF5F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		719EF91818BB839F00EFFF5F /* Build configuration list for PBXNativeTarget "Apex MobileTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				719EF91918BB839F00EFFF5F /* Debug */,
+				719EF91A18BB839F00EFFF5F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 719EF8D518BB839F00EFFF5F /* Project object */;
+}

+ 7 - 0
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:Apex Mobile.xcodeproj">
+   </FileRef>
+</Workspace>

+ 46 - 0
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcshareddata/Apex Mobile.xccheckout

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDESourceControlProjectFavoriteDictionaryKey</key>
+	<false/>
+	<key>IDESourceControlProjectIdentifier</key>
+	<string>14A1D0DA-A81C-4C4D-9F73-02ABE87A2925</string>
+	<key>IDESourceControlProjectName</key>
+	<string>Apex Mobile</string>
+	<key>IDESourceControlProjectOriginsDictionary</key>
+	<dict>
+		<key>17BA5BBB-19F8-4E71-9EFB-ED753D3957B4</key>
+		<string>svn://209.49.111.29/ERPSuiteIOS</string>
+	</dict>
+	<key>IDESourceControlProjectPath</key>
+	<string>Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace</string>
+	<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
+	<dict>
+		<key>17BA5BBB-19F8-4E71-9EFB-ED753D3957B4</key>
+		<string>../../..</string>
+	</dict>
+	<key>IDESourceControlProjectRepositoryRootDictionary</key>
+	<dict>
+		<key>17BA5BBB-19F8-4E71-9EFB-ED753D3957B4</key>
+		<string>svn://209.49.111.29</string>
+	</dict>
+	<key>IDESourceControlProjectURL</key>
+	<string>svn://209.49.111.29/ERPSuiteIOS/Apex%20Mobile/Apex%20Mobile.xcodeproj</string>
+	<key>IDESourceControlProjectVersion</key>
+	<integer>110</integer>
+	<key>IDESourceControlProjectWCCIdentifier</key>
+	<string>17BA5BBB-19F8-4E71-9EFB-ED753D3957B4</string>
+	<key>IDESourceControlProjectWCConfigurations</key>
+	<array>
+		<dict>
+			<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
+			<string>public.vcs.subversion</string>
+			<key>IDESourceControlWCCIdentifierKey</key>
+			<string>17BA5BBB-19F8-4E71-9EFB-ED753D3957B4</string>
+			<key>IDESourceControlWCCName</key>
+			<string>ERPSuiteIOS</string>
+		</dict>
+	</array>
+</dict>
+</plist>

BIN
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 22 - 0
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/WorkspaceSettings.xcsettings

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>BuildLocationStyle</key>
+	<string>UseAppPreferences</string>
+	<key>CustomBuildLocationType</key>
+	<string>RelativeToDerivedData</string>
+	<key>DerivedDataLocationStyle</key>
+	<string>Default</string>
+	<key>HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
+	<true/>
+	<key>IssueFilterStyle</key>
+	<string>ShowActiveSchemeOnly</string>
+	<key>LiveSourceIssuesEnabled</key>
+	<true/>
+	<key>SnapshotAutomaticallyBeforeSignificantChanges</key>
+	<true/>
+	<key>SnapshotLocationStyle</key>
+	<string>Default</string>
+</dict>
+</plist>

+ 91 - 0
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/xcdebugger/Expressions.xcexplist

@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VariablesViewState
+   version = "1.0">
+   <ContextStates>
+      <ContextState
+         contextName = "-[DetailPageViewController tableView:cellForRowAtIndexPath:]:DetailPageViewController.m">
+         <PersistentStrings>
+            <PersistentString
+               value = "cell.webView ">
+            </PersistentString>
+            <PersistentString
+               value = "cell frame">
+            </PersistentString>
+         </PersistentStrings>
+      </ContextState>
+      <ContextState
+         contextName = "-[DetailPageViewController viewDidLoad]:DetailPageViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[ResultViewController LongPress:_id:]:ResultViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[WebViewController webView:shouldStartLoadWithRequest:navigationType:]:WebViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[WebViewController webViewDidFinishLoad:]:WebViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[WebViewController viewDidLoad]:WebViewController.m">
+         <PersistentStrings>
+            <PersistentString
+               value = "responseData">
+            </PersistentString>
+            <PersistentString
+               value = "urlResponse">
+            </PersistentString>
+         </PersistentStrings>
+      </ContextState>
+      <ContextState
+         contextName = "-[DetailTabBarController init:actions:params:]:DetailTabBarController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[testViewController viewDidLoad]:testViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[DetailTabBarController init]:DetailTabBarController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[LocationViewController prepareForSegue:sender:]:LocationViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[DetailPageViewController webViewDidFinishLoad:]:DetailPageViewController.m">
+         <PersistentStrings>
+            <PersistentString
+               value = "webView.superview">
+            </PersistentString>
+         </PersistentStrings>
+      </ContextState>
+      <ContextState
+         contextName = "-[LocationViewController mapView:didTapInfoWindowOfMarker:]:LocationViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[ResultViewController getActions]:ResultViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[LocationDetailViewController viewDidLoad]:LocationDetailViewController.m">
+      </ContextState>
+      <ContextState
+         contextName = "-[PageData get_id:]:PageData.m">
+         <PersistentStrings>
+            <PersistentString
+               value = "record = [self.records valueForKey:@&quot;record_0&quot;]">
+            </PersistentString>
+            <PersistentString
+               value = "[self.records allKeys]">
+            </PersistentString>
+         </PersistentStrings>
+      </ContextState>
+      <ContextState
+         contextName = "-[DetailContent itemHeightAtIndexPath:]:DetailContent.m">
+         <PersistentStrings>
+            <PersistentString
+               value = "self.itemHeight">
+            </PersistentString>
+            <PersistentString
+               value = "indexPath.section">
+            </PersistentString>
+         </PersistentStrings>
+      </ContextState>
+   </ContextStates>
+</VariablesViewState>

+ 23 - 0
Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bucket
+   type = "1"
+   version = "2.0">
+   <Breakpoints>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/ApexMobileNetwork.m"
+            timestampString = "417659513.980336"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "126"
+            endingLineNumber = "126"
+            landmarkName = "+parse_authinfo:user:password:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+   </Breakpoints>
+</Bucket>

+ 96 - 0
Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcschemes/Apex Mobile.xcscheme

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0510"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "719EF8DC18BB839F00EFFF5F"
+               BuildableName = "Apex Mobile.app"
+               BlueprintName = "Apex Mobile"
+               ReferencedContainer = "container:Apex Mobile.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      buildConfiguration = "Debug">
+      <Testables>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "719EF90318BB839F00EFFF5F"
+               BuildableName = "Apex MobileTests.xctest"
+               BlueprintName = "Apex MobileTests"
+               ReferencedContainer = "container:Apex Mobile.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "719EF8DC18BB839F00EFFF5F"
+            BuildableName = "Apex Mobile.app"
+            BlueprintName = "Apex Mobile"
+            ReferencedContainer = "container:Apex Mobile.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+   </TestAction>
+   <LaunchAction
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      buildConfiguration = "Debug"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "719EF8DC18BB839F00EFFF5F"
+            BuildableName = "Apex Mobile.app"
+            BlueprintName = "Apex Mobile"
+            ReferencedContainer = "container:Apex Mobile.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      buildConfiguration = "Release"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "719EF8DC18BB839F00EFFF5F"
+            BuildableName = "Apex Mobile.app"
+            BlueprintName = "Apex Mobile"
+            ReferencedContainer = "container:Apex Mobile.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

+ 27 - 0
Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>SchemeUserState</key>
+	<dict>
+		<key>Apex Mobile.xcscheme</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>0</integer>
+		</dict>
+	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict>
+		<key>719EF8DC18BB839F00EFFF5F</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+		<key>719EF90318BB839F00EFFF5F</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+	</dict>
+</dict>
+</plist>

+ 61 - 0
Apex Mobile/Apex Mobile/Apex Mobile-Info.plist

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>usai.apex.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>140328</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIFileSharingEnabled</key>
+	<true/>
+	<key>UIMainStoryboardFile</key>
+	<string>Main_iPhone</string>
+	<key>UIMainStoryboardFile~ipad</key>
+	<string>Main_iPhone</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UIStatusBarTintParameters</key>
+	<dict>
+		<key>UINavigationBar</key>
+		<dict>
+			<key>Style</key>
+			<string>UIBarStyleDefault</string>
+			<key>Translucent</key>
+			<false/>
+		</dict>
+	</dict>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>

+ 16 - 0
Apex Mobile/Apex Mobile/Apex Mobile-Prefix.pch

@@ -0,0 +1,16 @@
+//
+//  Prefix header
+//
+//  The contents of this file are implicitly included at the beginning of every source file.
+//
+
+#import <Availability.h>
+
+#ifndef __IPHONE_5_0
+#warning "This project uses features only available in iOS SDK 5.0 and later."
+#endif
+
+#ifdef __OBJC__
+    #import <UIKit/UIKit.h>
+    #import <Foundation/Foundation.h>
+#endif

+ 17 - 0
Apex Mobile/Apex Mobile/ApexMobileAppDelegate.h

@@ -0,0 +1,17 @@
+//
+//  ApexMobileAppDelegate.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <GoogleMaps/GoogleMaps.h>
+@interface ApexMobileAppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+@property (strong,nonatomic) NSString* user;
+@property (strong,nonatomic) NSString * password;
+@property (strong,nonatomic) NSString * sessionid;
+@end

+ 53 - 0
Apex Mobile/Apex Mobile/ApexMobileAppDelegate.m

@@ -0,0 +1,53 @@
+//
+//  ApexMobileAppDelegate.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+ 
+
+#import "ApexMobileAppDelegate.h"
+#import "ApexMobileDB.h"
+
+@implementation ApexMobileAppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+    // Override point for customization after application launch.
+    [GMSServices provideAPIKey:@"AIzaSyBqS2pF7m1DlR5zwhAX_rBSD_9bTnpjYbQ"];
+    if (! [ApexMobileDB initializeDb])
+        // TODO: alert the user!
+         DebugLog(@"couldn't init db");
+
+    return YES;
+}
+							
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
+    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end

+ 21 - 0
Apex Mobile/Apex Mobile/ApexMobileDB.h

@@ -0,0 +1,21 @@
+//
+//  ApexMobileDB.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-28.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <sqlite3.h>  
+#import "Constant.h"
+
+#define DBNAME    @"ApexMobile.db"  
+
+@interface ApexMobileDB : NSObject
++ (BOOL) initializeDb;
++ (sqlite3*) get_db;
++(void)execSql:(NSString *)sql db:(sqlite3 *)db;
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby;
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause;
+@end

+ 120 - 0
Apex Mobile/Apex Mobile/ApexMobileDB.m

@@ -0,0 +1,120 @@
+//
+//  ApexMobileDB.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-28.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+ 
+#import "ApexMobileDB.h"
+
+@implementation ApexMobileDB
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause
+{
+//    [ApexMobileDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];
+    return [self get_recordid:db table:tablename where:whereclause order:@"_id"];
+}
+
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby
+{
+    int ret = -1;
+    NSString *sqlQuery = [NSString stringWithFormat:@"select _id from %@ where %@ orderby %@",tablename,whereclause,orderby];
+    sqlite3_stmt * statement;
+    
+    if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK)
+    {
+        if (sqlite3_step(statement) == SQLITE_ROW)
+        {
+//            char *name = (char*)sqlite3_column_text(statement, 1);
+//            NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
+            
+            ret = sqlite3_column_int(statement, 0);
+            
+//            char *address = (char*)sqlite3_column_text(statement, 3);
+//            NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];
+            
+
+        }
+        sqlite3_finalize(statement);
+    }
+    return ret;
+    
+}
+
+
++ (sqlite3*) get_db
+{
+    sqlite3* db = nil;
+    
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *documents = [paths objectAtIndex:0];
+    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
+    
+    if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {
+        sqlite3_close(db);
+         DebugLog(@"sqlite3_open failed. msg:%s",sqlite3_errmsg(db));
+    }
+    return db;
+    
+}
+
++(void)execSql:(NSString *)sql db:(sqlite3 *)db
+{
+    char *err;
+    if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
+        sqlite3_close(db);
+         DebugLog(@"sqlite3_exec failed msg:%s",sqlite3_errmsg(db));
+    }
+}
+
++ (BOOL) initializeDb {
+     DebugLog (@"initializeDB");
+    
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *documents = [paths objectAtIndex:0];
+    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
+
+    
+    // move db file from document to cache ;
+    NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    NSString *documentFolderPath = [searchPaths objectAtIndex: 0];
+    NSString* dbFilePath = [documentFolderPath stringByAppendingPathComponent:DBNAME];
+    if ([[NSFileManager defaultManager] fileExistsAtPath: dbFilePath])
+    {
+        [[NSFileManager defaultManager] moveItemAtPath:dbFilePath toPath:database_path error:nil];
+       
+    }
+    // end move;
+    
+
+    
+    
+    sqlite3 *db;  
+  
+    if (! [[NSFileManager defaultManager] fileExistsAtPath: database_path])
+    {
+        
+        if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {
+            sqlite3_close(db);
+             DebugLog(@"open db failed");
+            return NO;
+        }
+        NSString *create_actions_info = @"CREATE TABLE IF NOT EXISTS actions_info (_id integer PRIMARY KEY,name varchar(20),function_name varchar(20),priority integer,abandon boolean,user varchar(20));";
+         NSString *create_fields_info = @"CREATE TABLE IF NOT EXISTS fields_info (_id integer PRIMARY KEY,name varchar(20),aname varchar(20),field_type integer,function_name varchar(20),behavior integer,priority integer,show boolean,abandon boolean,user varchar(20));";
+        NSString *create_search_history = @"CREATE TABLE IF NOT EXISTS search_history (_id integer PRIMARY KEY,h_val varchar(20),h_field varchar(20),h_time timestamp,user varchar(20));";
+        
+        
+//        CREATE TABLE users (_id integer PRIMARY KEY,name varchar(20),pass varchar(20));
+        [self execSql:create_actions_info db:db];
+        [self execSql:create_fields_info db:db];
+        [self execSql:create_search_history db:db];
+        sqlite3_close(db);
+    }
+    return YES;
+    
+
+     DebugLog (@"bottom of initializeDb");
+}
+
+
+@end

+ 22 - 0
Apex Mobile/Apex Mobile/ApexMobileFirstViewController.h

@@ -0,0 +1,22 @@
+//
+//  ApexMobileFirstViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "ApexMobileNetwork.h"
+#import "AESCrypt.h"
+@interface
+ApexMobileFirstViewController : UIViewController <UITextFieldDelegate>
+@property (strong, nonatomic) IBOutlet UIButton *checkSavePassword;
+@property (strong, nonatomic) IBOutlet UITextField *editUser;
+@property (strong, nonatomic) IBOutlet UITextField *editPassword;
+@property (strong, nonatomic) IBOutlet UIButton *loginButton;
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+@property (strong, nonatomic) IBOutlet UIButton *btnRetrievePassword;
+@property bool resize;
+@property int ioffset;
+@end

+ 191 - 0
Apex Mobile/Apex Mobile/ApexMobileFirstViewController.m

@@ -0,0 +1,191 @@
+//
+//  ApexMobileFirstViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+ 
+#import "ApexMobileFirstViewController.h"
+#import "FunctionSelectViewController.h"
+@interface ApexMobileFirstViewController ()
+
+//-(void)Authorize : (NSString*) user :(NSString*) password;
+//-(void)Authorize : (NSString*) user password:(NSString*) password;
+
+
+@end
+
+
+
+@implementation ApexMobileFirstViewController
+
+- (IBAction)RetrieveButtonClick:(UIButton *)sender {
+    [self performSegueWithIdentifier:@"RETRIEVE" sender:self];
+}
+
+
+- (IBAction)LoginButtonClick:(UIButton *)sender {
+    
+    
+    
+    NSString*password= self.editPassword.text;
+    NSString*user = self.editUser.text;
+    if(user.length==0||password.length==0)
+    {
+        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
+        //        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:@"Ok" , nil];
+        [alert show];
+        return;
+    }
+     DebugLog(@"Login...   user= %@ ; password= %@",self.editUser.text,self.editPassword.text);
+    
+    
+    self.loginButton.enabled = false;
+    self.mum.hidden=false;
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        
+        int ret=[ApexMobileNetwork Authorize:self.editUser.text password:self.editPassword.text];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            self.mum.hidden=true;
+            self.loginButton.enabled = true;
+            
+            if (ret==RESULT_TRUE)
+            {
+                
+                NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+                [defaults removeObjectForKey:@"user"];
+                [defaults removeObjectForKey:@"password"];
+                if(self.checkSavePassword.selected)
+                {
+                    
+                    
+                    [defaults setValue:[AESCrypt encrypt:self.editUser.text password:@"usai"] forKey:@"user"];
+                    [defaults setValue:[AESCrypt encrypt:self.editPassword.text password:@"usai"] forKey:@"password"];
+                }
+                [defaults synchronize];
+                
+                [self performSegueWithIdentifier:@"LOGIN" sender:self];
+                
+            }
+            else
+            {
+                UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:[NSString stringWithFormat:@"Failed to login code %d",ret] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
+                [alert show];
+            }
+ 
+            
+
+        });
+    });
+    
+    
+    
+}
+
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
+    [[self view] endEditing:YES];
+}
+
+-(void)checkboxClick:(UIButton *)btn
+{
+    btn.selected = !btn.selected;
+}
+//- (IBAction)onRetrievePassword:(UIButton *)sender {
+//}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    [self.checkSavePassword setImage:[UIImage imageNamed:@"unchecked_32.png"] forState:UIControlStateNormal];
+    [self.checkSavePassword setImage:[UIImage imageNamed:@"checked_32.png"] forState:UIControlStateSelected];
+    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+    NSString * user = [AESCrypt decrypt:[defaults stringForKey:@"user"] password:@"usai"];
+    
+    self.editUser.delegate = self;
+    self.editPassword.delegate = self;
+    self.resize = false;
+    self.ioffset = 0;
+    NSString * password = [AESCrypt decrypt:[defaults stringForKey:@"password"] password:@"usai"];
+    
+    if(user.length>0&&password.length>0)
+    {
+        self.editUser.text=user;
+        self.editPassword.text=password;
+        self.checkSavePassword.selected=true;
+        
+    }
+    
+    
+    [self.checkSavePassword addTarget:self action:@selector(checkboxClick:) forControlEvents:UIControlEventTouchUpInside];
+    //    [self.view addSubview:checkSavePassword];
+	// Do any additional setup after loading the view, typically from a nib.
+}
+
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+-(BOOL)textFieldShouldReturn:(UITextField *)textField {
+    
+    [textField resignFirstResponder];
+    return YES;
+}
+-(void) textFieldDidBeginEditing:(UITextField *)textField
+{
+//    CGRect textFrame =  self.loginButton.frame;
+    int loginpos = self.loginButton.frame.origin.y+self.loginButton.frame.size.height;
+    self.ioffset = 216 -(self.view.frame.size.height-loginpos);
+    if(self.ioffset>0)
+    {
+        self.resize = true;
+        NSTimeInterval animationDuration = 0.30f;
+        CGRect frame = self.view.frame;
+        frame.origin.y -=self.ioffset;//view的Y轴上移
+        frame.size.height +=self.ioffset; //View的高度增加
+        self.view.frame = frame;
+        [UIView beginAnimations:@"ResizeView" context:nil];
+        [UIView setAnimationDuration:animationDuration];
+        self.view.frame = frame;
+        [UIView commitAnimations];//设置调整界面的动画效果
+    }
+}
+
+/**
+ 结束编辑UITextField的方法,让原来的界面还原高度
+ */
+-(void) textFieldDidEndEditing:(UITextField *)textField
+{
+//    if(prewTag == -1) //当编辑的View不是需要移动的View
+//    {
+//        return;
+//    }
+//    float moveY ;
+    if(self.resize)
+    {
+    NSTimeInterval animationDuration = 0.30f;
+    CGRect frame = self.view.frame;
+//    if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动
+//    {   //还原界面
+//        moveY =  prewMoveY;
+        frame.origin.y +=self.ioffset;
+        frame.size. height -=self.ioffset;
+        self.view.frame = frame;
+//    }
+    //self.view移回原位置
+    [UIView beginAnimations:@"ResizeView" context:nil];
+    [UIView setAnimationDuration:animationDuration];
+    self.view.frame = frame;
+    [UIView commitAnimations];
+    [textField resignFirstResponder];
+        self.ioffset=0;
+    }
+    
+}
+@end

+ 13 - 0
Apex Mobile/Apex Mobile/ApexMobileNavigationController.h

@@ -0,0 +1,13 @@
+//
+//  ApexMobileNavigationController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-9.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface ApexMobileNavigationController : UINavigationController
+
+@end

+ 52 - 0
Apex Mobile/Apex Mobile/ApexMobileNavigationController.m

@@ -0,0 +1,52 @@
+//
+//  ApexMobileNavigationController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-9.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ApexMobileNavigationController.h"
+
+@interface ApexMobileNavigationController ()
+
+@end
+
+@implementation ApexMobileNavigationController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+	// Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+-(BOOL)shouldAutorotate
+{
+    return [[self topViewController] shouldAutorotate];
+    //    return TRUE;
+}
+
+- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+{
+    return [[self topViewController] preferredInterfaceOrientationForPresentation];
+}
+-(NSUInteger)supportedInterfaceOrientations
+{
+    //    return UIInterfaceOrientationMaskLandscape;
+    return [[self topViewController] supportedInterfaceOrientations];
+}
+@end

+ 31 - 0
Apex Mobile/Apex Mobile/ApexMobileNetwork.h

@@ -0,0 +1,31 @@
+//
+//  ApexMobileNetwork.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-28.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <sqlite3.h> 
+#import "ApexMobileAppDelegate.h"
+#import "ApexMobileDB.h"
+#import "Constant.h"
+#import "Reachability.h"
+#import "PageData.h"
+#import "DetailContent.h"
+
+@interface ApexMobileNetwork : NSObject
++(int)Authorize : (NSString*) user password:(NSString*) password ;
++(int)parse_authinfo : (NSData *) json user:(NSString*) user password:(NSString*) password;
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params;// delegate:(id < NSURLConnectionDelegate >)delegate;
++(int) get_recordcount: (NSMutableDictionary *) params ;//delegate:(id < NSURLConnectionDelegate >)delegate;
++(PageData*) get_pagedata: (NSMutableDictionary *) params;
++(DetailContent*) get_detailcontent: (NSMutableDictionary *) params;
++(bool) IsNetworkAvailable;
+//+(bool) IsHostAvailable : (NSString*) url;
++(int) RetrievePassword : (NSString*) user  email:(NSString*) email;
++(int) ChangePassword : (NSString*) newpass user:(NSString*) user oldpass:(NSString*) oldpass;
+@end
+
+

+ 596 - 0
Apex Mobile/Apex Mobile/ApexMobileNetwork.m

@@ -0,0 +1,596 @@
+//
+//  ApexMobileNetwork.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-28.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+ 
+
+
+#import "ApexMobileNetwork.h"
+
+
+
+
+
+
+
+
+
+@implementation ApexMobileNetwork
++(int) ChangePassword : (NSString*) newpass user:(NSString*) user oldpass:(NSString*) oldpass
+{
+    
+    if(![ApexMobileNetwork IsNetworkAvailable])
+        return RESULT_NET_NOTAVAILABLE;
+    
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+
+    
+    NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
+    [params setValue:user forKey:@"user"];
+    [params setValue:oldpass forKey:@"oldpass"];
+    [params setValue:newpass forKey:@"newpass"];
+    [params setValue:@"Change Password" forKey:@"module_name"];
+    [params setValue:@"handset_search" forKey:@"action"];
+    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+    NSData* json=[ApexMobileNetwork get_json:URL_RETRIEVE_PASS parameters:params];
+
+    
+    if (json==nil)
+    {
+          DebugLog(@"json is wrong");
+        return RESULT_NET_ERROR;
+    }
+    
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        if(result!=AP_USER_AUTH)
+        {
+              DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            return RESULT_FALSE;
+            
+        }
+        return RESULT_TRUE;
+        
+    }
+    return RESULT_NET_ERROR;
+
+
+}
++(int) RetrievePassword : (NSString*) user  email:(NSString*) email
+{
+    
+    if(![ApexMobileNetwork IsNetworkAvailable])
+        return RESULT_NET_NOTAVAILABLE;
+    NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
+    [params setValue:user forKey:@"user"];
+    [params setValue:email forKey:@"email"];
+    [params setValue:@"Retrieve Password" forKey:@"module_name"];
+    [params setValue:@"handset_search" forKey:@"action"];
+    NSData* json=[ApexMobileNetwork get_json:URL_RETRIEVE_PASS parameters:params];
+    if (json==nil)
+    {
+          DebugLog(@"json is wrong");
+        return RESULT_NET_ERROR;
+    }
+    
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        if(result!=AP_USER_AUTH)
+        {
+              DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            return RESULT_FALSE;
+            
+        }
+        return RESULT_TRUE;
+        
+     }
+    return RESULT_NET_ERROR;
+    
+ 
+}
++(int)parse_authinfo : (NSData *) json user:(NSString*) user password:(NSString*) password
+{
+      DebugLog(@"parse_authinfo");
+    NSError *error=nil;
+    
+    sqlite3 *db =[ApexMobileDB get_db];
+    
+    
+    
+    
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        if(result!=AP_USER_AUTH)
+        {
+              DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            return RESULT_FALSE;
+            
+        }
+        NSDictionary* objheader = [jsobj objectForKey:@"header"];
+        ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+        NSString* required_ver=[objheader objectForKey:@"client_ver"] ;
+          DebugLog(@"required_ver=%@ ",required_ver);
+        NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
+        NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];
+        versionNum = [NSString stringWithFormat:@"A%@",versionNum];
+        
+        BOOL bigger = [versionNum compare:required_ver] == NSOrderedDescending;
+        if(!bigger)
+            return RESULT_VER_LOW;
+        appDelegate.sessionid = [objheader valueForKey:@"sessionid"];
+        appDelegate.user = user;
+        appDelegate.password = password;
+          DebugLog(@"sessionid=%@ ",appDelegate.sessionid);
+        if ([[objheader valueForKey:@"update"] boolValue]==false)
+        {
+            // no update on the server;
+            return RESULT_TRUE;
+        }
+        int Auth_InfoVer = [[objheader valueForKey:@"ver"] intValue];
+        NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+        [defaults removeObjectForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+        [defaults setInteger:Auth_InfoVer forKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+        //        [defaults synchronize];
+        
+        NSDictionary* objfuncs = [jsobj objectForKey:@"functions"];
+        NSArray* keys= [objfuncs allKeys];
+        
+        
+        
+        [ApexMobileDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];
+        [ApexMobileDB execSql: [NSString stringWithFormat: @"update actions_info set abandon = 1 where user ='%@'",user] db:db];
+        char* sql = "insert into fields_info(name,aname,field_type,function_name,behavior,priority,show,user) values(?,?,?,?,?,?,?,?)";
+        char* sql1 = "insert into actions_info(name,function_name,user,priority) values(?,?,?,?)";
+        
+        sqlite3_stmt *stmt;
+        sqlite3_stmt *stmt1;
+        sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
+        sqlite3_prepare_v2(db, sql1, -1, &stmt1, nil);
+        
+        // db.beginTransaction();
+        for(int i=0;i<keys.count;i++)
+        {
+            NSString* func_name = keys[i];
+            NSDictionary *objfun = [objfuncs objectForKey:func_name];
+            int behavior, priority = 999;
+            int show =1;
+            NSDictionary *objbehavior = [objfun objectForKey:@"search"];
+            NSArray* keysbehavior= [objbehavior allKeys];
+            behavior = BEHAVIOR_SEARCH;
+            for(int j=0;j<keysbehavior.count;j++)
+            {
+                NSString* field = keysbehavior[j];
+                NSDictionary* field_info = [objbehavior objectForKey:field];
+                NSString* field_name =[field_info valueForKey:@"name"] ;
+                NSString* field_type = [field_info valueForKey:@"type"] ;
+                NSString* alias_name = [field_info valueForKey:@"alias"] ;
+                priority = [[field_info valueForKey:@"priority"] intValue];
+                if(priority==999)
+                    show=0;
+                else
+                    show=1;
+                int id = [ApexMobileDB get_recordid:db table:@"fields_info" where:[NSString stringWithFormat:@"name='%@' and behavior=%d and function_name='%@' and user='%@'",field_name,behavior,func_name,user]];
+                if(id>=0)
+                    [ApexMobileDB execSql:[NSString stringWithFormat:@"update fields_info set abandon = 0 where _id=%d",id] db:db];
+                else
+                {
+                    
+                    sqlite3_bind_text(stmt, 1, [field_name UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt, 2, [alias_name UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt, 3, [field_type UTF8String], -1, NULL);
+                    
+                    sqlite3_bind_text(stmt, 4, [func_name UTF8String], -1, NULL);
+                    
+                    sqlite3_bind_int(stmt, 5, behavior);
+                    sqlite3_bind_int(stmt, 6, priority);
+                    sqlite3_bind_int(stmt, 7, show);
+                    sqlite3_bind_text(stmt, 8, [user UTF8String], -1, NULL);
+                    
+                    
+                    if (sqlite3_step(stmt) != SQLITE_DONE)
+                    {
+                        fprintf(stderr, "Error: insert search failed, error infomation: %s\n", sqlite3_errmsg(db));
+                    }
+                    sqlite3_reset(stmt);
+                    
+                }
+                
+                
+            }
+            
+            objbehavior = [objfun objectForKey:@"result"];
+            NSArray* keysresult= [objbehavior allKeys];
+            behavior = BEHAVIOR_RESULT;
+            for(int j=0;j<keysresult.count;j++)
+            {
+                NSString* field = keysresult[j];
+                NSDictionary* field_info = [objbehavior objectForKey:field];
+                NSString* field_name =[field_info valueForKey:@"name"] ;
+                NSString* field_type = [field_info valueForKey:@"type"] ;
+                NSString* alias_name = [field_info valueForKey:@"alias"] ;
+                priority = [[field_info valueForKey:@"priority"] intValue];
+                if(priority==999)
+                    show=0;
+                else
+                    show=1;
+                int id = [ApexMobileDB get_recordid:db table:@"fields_info" where:[NSString stringWithFormat:@"name='%@' and behavior=%d and function_name='%@' and user='%@'",field_name,behavior,func_name,user]];
+                if(id>=0)
+                    [ApexMobileDB execSql:[NSString stringWithFormat:@"update fields_info set abandon = 0 where _id=%d",id] db:db];
+                else
+                {
+                    sqlite3_bind_text(stmt, 1, [field_name UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt, 2, [alias_name UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt, 3, [field_type UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt, 4, [func_name UTF8String], -1, NULL);
+                    sqlite3_bind_int(stmt, 5, behavior);
+                    sqlite3_bind_int(stmt, 6, priority);
+                    sqlite3_bind_int(stmt, 7, show);
+                    sqlite3_bind_text(stmt, 8, [user UTF8String], -1, NULL);
+                    
+                    if (sqlite3_step(stmt) != SQLITE_DONE)
+                    {
+                        fprintf(stderr, "Error: insert result failed, error infomation: %s\n", sqlite3_errmsg(db));
+                    }
+                    sqlite3_reset(stmt);
+                    
+                }
+            }
+            objbehavior = [objfun objectForKey:@"actions"];
+            NSArray* keysactions= [objbehavior allKeys];
+            behavior = BEHAVIOR_SEARCH;
+            for(int j=0;j<keysactions.count;j++)
+            {
+                NSString* actionname = keysactions[j];
+                int action_priority = [[objbehavior valueForKey:actionname] intValue];
+                int id = [ApexMobileDB get_recordid:db table:@"actions_info" where:[NSString stringWithFormat:@"name='%@' and function_name='%@' and user='%@'",actionname,func_name,user]];
+                if(id>=0)
+                    [ApexMobileDB execSql:[NSString stringWithFormat:@"update actions_info set abandon = 0 , priority=%d where _id=%d",action_priority,id] db:db];
+                else
+                {
+                    
+                    sqlite3_bind_text(stmt1, 1, [actionname UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt1, 2, [func_name UTF8String], -1, NULL);
+                    sqlite3_bind_text(stmt1, 3, [user UTF8String], -1, NULL);
+                    sqlite3_bind_int(stmt1, 4, action_priority);
+                    
+                    if (sqlite3_step(stmt1) != SQLITE_DONE)
+                    {
+                        fprintf(stderr, "Error: insert action_info failed, error infomation: %s\n", sqlite3_errmsg(db));
+                    }
+                    sqlite3_reset(stmt1);
+                }
+            }
+        }
+        [ApexMobileDB execSql:@"delete from fields_info where abandon = 1" db:db];
+        [ApexMobileDB execSql:@"delete from actions_info where abandon = 1" db:db];
+        
+        sqlite3_finalize(stmt);
+        sqlite3_finalize(stmt1);
+        sqlite3_close(db);
+        /*
+         
+         db.setTransactionSuccessful();
+         db.endTransaction();
+         */
+        return RESULT_TRUE;
+        
+    }
+    //    NSDictionary *weatherInfo = [jsobj objectForKey:@"weatherinfo"];
+    //    txtView.text = [NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
+    //      DebugLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );
+    
+    
+    
+    return RESULT_USERAUTH_ERROR;
+}
++(DetailContent*) get_detailcontent: (NSMutableDictionary *) params
+{
+      DebugLog(@"get_detailcontent");
+    DetailContent * detailContent = [[DetailContent alloc] init];
+    NSMutableArray* segments = [[NSMutableArray alloc] init];
+    detailContent.segments = segments;
+    if(![ApexMobileNetwork IsNetworkAvailable])
+    {
+        detailContent.result_code = RESULT_NET_NOTAVAILABLE;
+        return detailContent;
+    }
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+//    [params setValue:@"handset_search" forKey:@"action"];
+    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+    NSData* json=[ApexMobileNetwork get_json:URL_REQUEST_RECORDS parameters:params];
+    if (json==nil)
+    {
+          DebugLog(@"json is wrong");
+        detailContent.result_code = RESULT_NET_ERROR;
+        return detailContent;
+    }
+    
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        if(result!=AP_USER_AUTH)
+        {
+              DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            detailContent.result_code = result;
+            return detailContent;
+            
+        }
+        
+        int count =[[jsobj valueForKey:@"count"] intValue];
+        detailContent.result_code = RESULT_TRUE;
+        if(count==0)
+        {
+            
+            return detailContent;
+        }
+
+        for(int i=0;i<count;i++)
+        {
+            
+            NSDictionary* segment = [jsobj objectForKey:[NSString stringWithFormat:@"group%d",i]];
+            [segments addObject:segment];
+            
+            /*
+             JSONObject groupobj = jsonObj.getJSONObject("group" + i);
+             View v = inflater.inflate(R.layout.group_tag, null);
+             v.setOnClickListener(this);
+             
+             TextView tvgroup = (TextView) v.findViewById(R.id.tv_group);
+             String group_name = groupobj.getString("_name");
+             tvgroup.setText(group_name);
+             v.setId(commonUtil.generateViewId());
+             ll_root.addView(v);
+             String grouptype = groupobj.getString("_type");
+             
+             */
+        }
+        
+        //   NSDictionary* objrecords = [jsobj objectForKey:@"records"];
+        
+
+
+        return detailContent;
+        
+    }
+    return nil;
+    
+}
++(PageData*) get_pagedata: (NSMutableDictionary *) params
+{
+    
+      DebugLog(@"get_pagedata");
+    if(![ApexMobileNetwork IsNetworkAvailable])
+        return nil;
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    [params setValue:@"handset_search" forKey:@"action"];
+    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+    NSData* json=[ApexMobileNetwork get_json:URL_REQUEST_RECORDS parameters:params];
+    if (json==nil)
+    {
+          DebugLog(@"json is wrong");
+        return nil;
+    }
+    
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        if(result!=AP_USER_AUTH)
+        {
+              DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            return nil;
+            
+        }
+        
+        NSDictionary* objrecords = [jsobj objectForKey:@"records"];
+        
+        PageData * pageData = [[PageData alloc] initWithRecords:objrecords];
+        return pageData;
+        
+    }
+    return nil;
+    
+}
++(int) get_recordcount: (NSMutableDictionary *) params// delegate:(id < NSURLConnectionDelegate >)delegate
+{
+      DebugLog(@"get_recordcount");
+    if(![ApexMobileNetwork IsNetworkAvailable])
+        return -1;
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    [params setValue:@"handset_search_count" forKey:@"action"];
+    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+    
+    NSData* json=[ApexMobileNetwork get_json:URL_REQUEST_COUNT parameters:params];
+    if (json==nil)
+    {
+          DebugLog(@"json is wrong");
+        return RESULT_NET_ERROR;
+    }
+    
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        if(result!=AP_USER_AUTH)
+        {
+              DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            return RESULT_FALSE;
+            
+        }
+        else
+            return [[jsobj valueForKey:@"count" ] intValue];
+    }
+    
+    return RESULT_ERROR;
+}
+//+(bool) IsHostAvailable : (NSString*) url
+//{
+//    Reachability *r = [Reachability reachabilityWithHostName:url];
+//    int i = [r currentReachabilityStatus];
+//    if ([r currentReachabilityStatus]==NotReachable)
+//        return false;
+//    return true;
+//}
++(bool) IsNetworkAvailable
+{
+    
+    if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&
+        ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable))
+        return false;
+    return true;
+}
+
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params //delegate:(id < NSURLConnectionDelegate >)delegate
+{
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    //分界线的标识符
+    NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
+    //根据url初始化request
+    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
+                                                           cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
+                                                       timeoutInterval:30];
+    //分界线 --AaB03x
+    NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
+    //结束符 AaB03x--
+    NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
+    //要上传的图片
+    //    UIImage *image=[params objectForKey:@"pic"];
+    //得到图片的data
+    //    NSData* data = UIImagePNGRepresentation(image);
+    //http body的字符串
+    NSMutableString *body=[[NSMutableString alloc]init];
+    
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    //     [params setValue:@"handset_login" forKey:@"action"];
+    //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
+    
+    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+    //   [params setValue:password forKey:@"password"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",ver]  forKey:@"auth_ver"];
+    
+    
+    
+    //    [headers setValue:headQuerlString forKey:@"param"];
+    
+    //参数的集合的所有key的集合
+    NSArray *keys= [params allKeys];
+      DebugLog(@"================parms==================");
+    //遍历keys
+    for(int i=0;i<[keys count];i++)
+    {
+        //得到当前key
+        NSString *key=[keys objectAtIndex:i];
+        //如果key不是pic,说明value是字符类型,比如name:Boris
+        if(![key isEqualToString:@"pic"])
+        {
+            //添加分界线,换行
+            [body appendFormat:@"%@\r\n",MPboundary];
+            //添加字段名称,换2行
+            [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
+            //添加字段的值
+            [body appendFormat:@"%@\r\n",[params objectForKey:key]];
+              DebugLog(@"parameter: key=%@   value=%@",key,[params objectForKey:key]);
+        }
+    }
+      DebugLog(@"================parms==================");
+    ////添加分界线,换行
+    [body appendFormat:@"%@\r\n",MPboundary];
+    //声明pic字段,文件名为boris.png
+    [body appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"boris.png\"\r\n"];
+    //声明上传文件的格式
+    [body appendFormat:@"Content-Type: image/png\r\n\r\n"];
+    
+    //声明结束符:--AaB03x--
+    NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
+    //声明myRequestData,用来放入http body
+    NSMutableData *myRequestData=[NSMutableData data];
+    //将body字符串转化为UTF8格式的二进制
+    [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
+    //将image的data加入
+    //    [myRequestData appendData:data];
+    //加入结束符--AaB03x--
+    [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
+    
+    //设置HTTPHeader中Content-Type的值
+    NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
+    //设置HTTPHeader
+    [request setValue:content forHTTPHeaderField:@"Content-Type"];
+    //设置Content-Length
+    [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
+    //设置http body
+    [request setHTTPBody:myRequestData];
+    //http method
+    [request setHTTPMethod:@"POST"];
+    
+    
+    NSHTTPURLResponse* urlResponse = nil;
+    
+    NSError *error = [[NSError alloc] init];
+    
+    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
+    
+      DebugLog(@"response: %@",[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
+    
+    if (responseData==nil) {
+        
+          DebugLog(@"move failed:%@", [error localizedDescription]);
+    }
+    else
+    {
+        NSMutableString *result = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
+        
+          DebugLog(@"result: %@",result);
+        
+        
+    }
+    return responseData;
+    
+}
+
++(int)Authorize : (NSString*) user password:(NSString*) password{
+    
+    if(![ApexMobileNetwork IsNetworkAvailable])
+        return RESULT_NET_NOTAVAILABLE;
+//    if(![ApexMobileNetwork IsHostAvailable:URL_UPDATE_AUTH])
+//        return RESULT_NET_ERROR;
+    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+    long ver =[defaults integerForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+    
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    [params setValue:@"handset_login" forKey:@"action"];
+    //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
+    
+    [params setValue:user forKey:@"user"];
+    [params setValue:password forKey:@"password"];
+    [params setValue:[NSString stringWithFormat:@"%ld",ver]  forKey:@"auth_ver"];
+    NSData* json=[ApexMobileNetwork get_json:URL_UPDATE_AUTH parameters:params];
+    if(json==nil)
+        return RESULT_NET_ERROR;
+    
+    int ret = [ApexMobileNetwork parse_authinfo:json user:user password:password];
+      DebugLog(@"parse_authinfo return %d ",ret);
+    
+    
+    return ret;
+    
+}
+
+@end

+ 13 - 0
Apex Mobile/Apex Mobile/ApexMobileSecondViewController.h

@@ -0,0 +1,13 @@
+//
+//  ApexMobileSecondViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface ApexMobileSecondViewController : UIViewController
+
+@end

+ 29 - 0
Apex Mobile/Apex Mobile/ApexMobileSecondViewController.m

@@ -0,0 +1,29 @@
+//
+//  ApexMobileSecondViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ApexMobileSecondViewController.h"
+
+@interface ApexMobileSecondViewController ()
+
+@end
+
+@implementation ApexMobileSecondViewController
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+	// Do any additional setup after loading the view, typically from a nib.
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+@end

+ 1155 - 0
Apex Mobile/Apex Mobile/Base.lproj/Main_iPhone.storyboard

@@ -0,0 +1,1155 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="7w0-x0-gGx">
+    <dependencies>
+        <deployment defaultVersion="1792" identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
+    </dependencies>
+    <scenes>
+        <!--Apex Mobile Navigation Controller-->
+        <scene sceneID="ghE-GO-BJd">
+            <objects>
+                <navigationController definesPresentationContext="YES" id="Lfr-X7-cX2" customClass="ApexMobileNavigationController" sceneMemberID="viewController">
+                    <simulatedOrientationMetrics key="simulatedOrientationMetrics"/>
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="fVc-Xq-qRW">
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <toolbar key="toolbar" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="t86-UX-87M">
+                        <rect key="frame" x="0.0" y="524" width="320" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </toolbar>
+                    <connections>
+                        <segue destination="UNq-GU-jaf" kind="relationship" relationship="rootViewController" id="kwZ-5D-jvp"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="3VR-bg-TPE" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1651" y="-388"/>
+        </scene>
+        <!--Tab Bar Controller - Apex Mobile-->
+        <scene sceneID="o0Y-pF-SrJ">
+            <objects>
+                <tabBarController definesPresentationContext="YES" id="7w0-x0-gGx" customClass="TabBarController" sceneMemberID="viewController">
+                    <navigationItem key="navigationItem" title="Apex Mobile" id="rJk-ME-87O"/>
+                    <nil key="simulatedBottomBarMetrics"/>
+                    <tabBar key="tabBar" contentMode="scaleToFill" translucent="NO" id="MHb-zp-cB2">
+                        <rect key="frame" x="129" y="330" width="163" height="49"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                    </tabBar>
+                    <connections>
+                        <segue destination="CZ4-MO-1fc" kind="relationship" relationship="viewControllers" id="OKe-H2-ohN"/>
+                        <segue destination="QUy-BD-bpt" kind="relationship" relationship="viewControllers" id="05a-NK-v2D"/>
+                    </connections>
+                </tabBarController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Bif-3N-9wg" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="635" y="-85"/>
+        </scene>
+        <!--Apex Mobile First View Controller - First-->
+        <scene sceneID="W3I-pn-N6e">
+            <objects>
+                <viewController title="First" id="CZ4-MO-1fc" customClass="ApexMobileFirstViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="2VE-Yg-loa">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="519"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" clearButtonMode="always" id="NGo-Ia-6Eh">
+                                <rect key="frame" x="20" y="220" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" minimumFontSize="17" clearButtonMode="always" id="vg4-SU-ncd">
+                                <rect key="frame" x="20" y="269" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="xZv-Zy-g7q">
+                                <rect key="frame" x="262" y="317" width="38" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <state key="normal" title="Login">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="LoginButtonClick:" destination="CZ4-MO-1fc" eventType="touchUpInside" id="WdK-CJ-7JY"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="KOS-Kb-91y">
+                                <rect key="frame" x="20" y="317" width="130" height="32"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <state key="normal" title="  Save password" image="unchecked_32">
+                                    <color key="titleColor" red="0.0" green="0.50196081400000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                            </button>
+                            <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="gray" id="BQG-OV-hPB">
+                                <rect key="frame" x="210" y="318" width="20" height="20"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
+                            </activityIndicatorView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Neb-tc-VZn">
+                                <rect key="frame" x="96" y="478" width="128" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                                <state key="normal" title="Retrieve password"/>
+                                <connections>
+                                    <action selector="RetrieveButtonClick:" destination="CZ4-MO-1fc" eventType="touchUpInside" id="qa9-sm-LOB"/>
+                                </connections>
+                            </button>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="apexlogo-2" id="Hs7-hx-8Zs">
+                                <rect key="frame" x="31" y="82" width="258" height="64"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="40" maxX="0.0" maxY="-40"/>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="Login" image="in" id="u1e-5L-l1D"/>
+                    <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
+                    <connections>
+                        <outlet property="btnRetrievePassword" destination="Neb-tc-VZn" id="Dan-jD-Uvq"/>
+                        <outlet property="checkSavePassword" destination="KOS-Kb-91y" id="ofT-Yc-9Wt"/>
+                        <outlet property="editPassword" destination="vg4-SU-ncd" id="kPZ-VL-gNO"/>
+                        <outlet property="editUser" destination="NGo-Ia-6Eh" id="RaE-NS-D0A"/>
+                        <outlet property="loginButton" destination="xZv-Zy-g7q" id="D2J-mh-qhA"/>
+                        <outlet property="mum" destination="BQG-OV-hPB" id="VWo-KV-x4i"/>
+                        <segue destination="Lfr-X7-cX2" kind="modal" identifier="LOGIN" id="gtc-Dt-8NP"/>
+                        <segue destination="K0N-4Y-q8s" kind="modal" identifier="RETRIEVE" id="4jb-J7-Ni1"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Qh2-T1-AhA" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1180" y="-388"/>
+        </scene>
+        <!--Function Select View Controller-->
+        <scene sceneID="H8E-PR-34z">
+            <objects>
+                <viewController storyboardIdentifier="FunctionSelectViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="UNq-GU-jaf" customClass="FunctionSelectViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Oc8-Ba-73N">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" id="CGe-Vs-zpp">
+                                <rect key="frame" x="20" y="243" width="280" height="230"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <subviews>
+                                    <button opaque="NO" tag="101" contentMode="scaleToFill" restorationIdentifier="btn_ob" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="7EH-5s-x6k">
+                                        <rect key="frame" x="0.0" y="20" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_oceanbooking">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="onButtonClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="dWo-5Z-As0"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ocean Booking" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="4Zc-Lm-ZAP">
+                                        <rect key="frame" x="0.0" y="79" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="102" contentMode="scaleToFill" restorationIdentifier="btn_info" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="JnC-N4-p3k">
+                                        <rect key="frame" x="72" y="20" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_ocean_blinfo">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="onButtonClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="GPt-IM-wda"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ocean B/L Info." textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KBI-C0-cbg">
+                                        <rect key="frame" x="72" y="79" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="103" contentMode="scaleToFill" restorationIdentifier="btn_container" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="JGT-Ev-NEh">
+                                        <rect key="frame" x="144" y="20" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_container_detail">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="onButtonClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="9Jh-fG-W2r"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Container Detail" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9co-xN-Tzq">
+                                        <rect key="frame" x="144" y="79" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="104" contentMode="scaleToFill" restorationIdentifier="btn_doc" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="l9u-Fv-h70">
+                                        <rect key="frame" x="216" y="20" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_down_doc">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="onButtonClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="50J-Qd-62H"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Download Document" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="AQV-Uj-awl">
+                                        <rect key="frame" x="216" y="79" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="105" contentMode="scaleToFill" restorationIdentifier="btn_pass" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="LJ8-xP-yYD">
+                                        <rect key="frame" x="0.0" y="119" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_password">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <segue destination="w6b-yg-2yg" kind="push" id="eEH-cN-gfC"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Change Password" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="AGy-cb-MuS">
+                                        <rect key="frame" x="0.0" y="178" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="106" contentMode="scaleToFill" restorationIdentifier="btn_map" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="J8z-x3-XbU">
+                                        <rect key="frame" x="72" y="119" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_service_location">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <segue destination="dbM-RP-CjU" kind="push" id="1Zk-bN-XtO"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Service Location" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5PI-8Q-CWX">
+                                        <rect key="frame" x="72" y="178" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="107" contentMode="scaleToFill" restorationIdentifier="btn_about" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="7yr-hQ-MsB">
+                                        <rect key="frame" x="144" y="119" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_about">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <segue destination="LRz-Xk-RCE" kind="push" id="9nH-FT-CiQ"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="About" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="fFW-I9-OEp">
+                                        <rect key="frame" x="144" y="178" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" tag="108" contentMode="scaleToFill" restorationIdentifier="btn_exit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="soU-bu-S8N">
+                                        <rect key="frame" x="216" y="119" width="64" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" image="ic_exit">
+                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="onExit:" destination="UNq-GU-jaf" eventType="touchUpInside" id="6nO-yC-mG3"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Exit" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="QcV-0d-Mv9">
+                                        <rect key="frame" x="216" y="178" width="64" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                            </view>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" id="Yak-ci-niG">
+                                <rect key="frame" x="20" y="137" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                                <connections>
+                                    <outlet property="delegate" destination="UNq-GU-jaf" id="H0L-wH-CxC"/>
+                                </connections>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="FwP-88-eTo">
+                                <rect key="frame" x="253" y="175" width="48" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <state key="normal" title="Search">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onSearchClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="d2s-sQ-AHg"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="3KK-ER-ESe">
+                                <rect key="frame" x="20" y="175" width="40" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <state key="normal" title="Reset">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onResetClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="sCm-io-rlC"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Container Status" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="gie-IK-ExU">
+                                <rect key="frame" x="20" y="70" width="129" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
+                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="5Zw-GS-WrJ">
+                                <rect key="frame" x="19" y="103" width="90" height="22"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <state key="normal" title="H_BOL" image="unchecked_32">
+                                    <color key="titleColor" red="0.0" green="0.50196081400000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onHbolClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="XOl-qR-yuf"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="47I-2c-G8g">
+                                <rect key="frame" x="178" y="103" width="123" height="22"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <state key="normal" title="Container#" image="unchecked_32">
+                                    <color key="titleColor" red="0.0" green="0.50196081400000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onContainerClick:" destination="UNq-GU-jaf" eventType="touchUpInside" id="S9r-M7-TU0"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" id="9MY-gc-fte">
+                                <rect key="frame" x="0.0" y="219" width="320" height="2"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" name="secondarySelectedControlColor" catalog="System" colorSpace="catalog"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <toolbarItems/>
+                    <navigationItem key="navigationItem" id="FlZ-he-0gE"/>
+                    <connections>
+                        <outlet property="edit" destination="Yak-ci-niG" id="teO-s1-Y7F"/>
+                        <outlet property="radioContainer" destination="47I-2c-G8g" id="qRd-86-3t5"/>
+                        <outlet property="radioHbol" destination="5Zw-GS-WrJ" id="2IT-8Y-gIE"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="SaK-fJ-U6R" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2125" y="-388"/>
+        </scene>
+        <!--Change Password View Controller - Change password-->
+        <scene sceneID="fcq-JD-zfG">
+            <objects>
+                <viewController id="w6b-yg-2yg" customClass="ChangePasswordViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="9cM-L6-UPa">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Old password *required" minimumFontSize="17" id="5wc-OF-1pd">
+                                <rect key="frame" x="21" y="77" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="60" maxX="0.0" maxY="-60"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
+                                <connections>
+                                    <outlet property="delegate" destination="w6b-yg-2yg" id="hIX-cn-L9F"/>
+                                </connections>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="New password *required" minimumFontSize="17" id="5Wp-7A-Uz2">
+                                <rect key="frame" x="21" y="115" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="60" maxX="0.0" maxY="-60"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
+                                <connections>
+                                    <outlet property="delegate" destination="w6b-yg-2yg" id="peS-fj-hpG"/>
+                                </connections>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Confirm new password *required" minimumFontSize="17" id="KzL-X5-gHS">
+                                <rect key="frame" x="21" y="153" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="60" maxX="0.0" maxY="-60"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
+                                <connections>
+                                    <outlet property="delegate" destination="w6b-yg-2yg" id="mev-Au-Xyg"/>
+                                </connections>
+                            </textField>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="gtV-zs-DUJ">
+                                <rect key="frame" x="21" y="272" width="48" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Cancel">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onCancel:" destination="w6b-yg-2yg" eventType="touchUpInside" id="Ucm-f2-3z7"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Mfs-xl-yQa">
+                                <rect key="frame" x="247" y="191" width="54" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="60" maxX="0.0" maxY="-60"/>
+                                <state key="normal" title="Change">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onChange:" destination="w6b-yg-2yg" eventType="touchUpInside" id="r5A-Zr-uh4"/>
+                                </connections>
+                            </button>
+                            <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" id="lUZ-14-GrI">
+                                <rect key="frame" x="142" y="266" width="37" height="37"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="60" maxX="0.0" maxY="-60"/>
+                                <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                            </activityIndicatorView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Change password" id="Lvr-bn-Sy5"/>
+                    <connections>
+                        <outlet property="btnCancel" destination="gtV-zs-DUJ" id="LLL-A1-MBW"/>
+                        <outlet property="btnChange" destination="Mfs-xl-yQa" id="Zpr-W3-G3v"/>
+                        <outlet property="editConfirm" destination="KzL-X5-gHS" id="xYt-Vf-veA"/>
+                        <outlet property="editNew" destination="5Wp-7A-Uz2" id="wPv-Pt-rI9"/>
+                        <outlet property="editOld" destination="5wc-OF-1pd" id="rnO-FH-46b"/>
+                        <outlet property="mum" destination="lUZ-14-GrI" id="uIm-4O-Xnf"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="VbT-Dn-X4d" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2704" y="-390"/>
+        </scene>
+        <!--Customize Field View Controller-->
+        <scene sceneID="yzI-TK-ahX">
+            <objects>
+                <viewController storyboardIdentifier="CustomizeFieldViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="BcI-w7-wAV" customClass="CustomizeFieldViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="B8V-7R-jiJ">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="field" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" allowsSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="57d-bF-rys">
+                                <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <prototypes>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="field" textLabel="dW9-3i-fC8" style="IBUITableViewCellStyleDefault" id="PSX-8X-idp">
+                                        <rect key="frame" x="0.0" y="22" width="320" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="PSX-8X-idp" id="z6e-66-dgL">
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="dW9-3i-fC8">
+                                                    <rect key="frame" x="15" y="0.0" width="290" height="43"/>
+                                                    <autoresizingMask key="autoresizingMask"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="18"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                    </tableViewCell>
+                                </prototypes>
+                                <sections/>
+                                <connections>
+                                    <outlet property="dataSource" destination="BcI-w7-wAV" id="k7O-c8-BWQ"/>
+                                    <outlet property="delegate" destination="BcI-w7-wAV" id="vwI-Bw-2mt"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="Zdz-hc-pb7">
+                        <barButtonItem key="rightBarButtonItem" title="Save" id="Oik-us-WYA">
+                            <connections>
+                                <action selector="onSaveClick:" destination="BcI-w7-wAV" id="dsL-AG-92t"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="tableView" destination="57d-bF-rys" id="maf-Tk-QHC"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="nbG-c1-sls" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1554" y="-2137"/>
+        </scene>
+        <!--Retrieve Password View Controller-->
+        <scene sceneID="JeM-3c-O9i">
+            <objects>
+                <viewController storyboardIdentifier="RetrievePasswordViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="K0N-4Y-q8s" customClass="RetrievePasswordViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="eBQ-Rg-zMi">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User name" minimumFontSize="17" id="lTM-Ce-tGE">
+                                <rect key="frame" x="20" y="49" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                                <connections>
+                                    <outlet property="delegate" destination="K0N-4Y-q8s" id="hwf-Dv-slF"/>
+                                </connections>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email" minimumFontSize="17" id="pR9-VB-Bfw">
+                                <rect key="frame" x="20" y="87" width="280" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                                <connections>
+                                    <outlet property="delegate" destination="K0N-4Y-q8s" id="6eF-sL-q0t"/>
+                                </connections>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="hyJ-py-3sq">
+                                <rect key="frame" x="20" y="125" width="48" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Cancel">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="OnCancel:" destination="K0N-4Y-q8s" eventType="touchUpInside" id="gVJ-W4-Jjl"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Sqe-3v-yU0">
+                                <rect key="frame" x="270" y="125" width="30" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Ok">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="OnOk:" destination="K0N-4Y-q8s" eventType="touchUpInside" id="a4v-1e-8S4"/>
+                                </connections>
+                            </button>
+                            <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" id="E06-Pz-6iG">
+                                <rect key="frame" x="142" y="142" width="37" height="37"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                            </activityIndicatorView>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Retrieve password" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="NmE-oo-xgn">
+                                <rect key="frame" x="89" y="20" width="143" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="6A9-OH-zAh"/>
+                    <connections>
+                        <outlet property="btnCancel" destination="hyJ-py-3sq" id="rSU-pq-DhT"/>
+                        <outlet property="btnOk" destination="Sqe-3v-yU0" id="lNU-aq-nBU"/>
+                        <outlet property="editEmail" destination="pR9-VB-Bfw" id="9t5-Qu-Lyy"/>
+                        <outlet property="editUser" destination="lTM-Ce-tGE" id="S4p-eE-QN7"/>
+                        <outlet property="mum" destination="E06-Pz-6iG" id="OnW-hC-504"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="LWg-VB-fMN" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1180" y="-1188"/>
+        </scene>
+        <!--Search View Controller - Search-->
+        <scene sceneID="5sc-sd-ree">
+            <objects>
+                <viewController storyboardIdentifier="SearchViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="LTm-xT-g5y" customClass="SearchViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="gJa-Ji-gWB">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" allowsSelection="NO" rowHeight="82" sectionHeaderHeight="22" sectionFooterHeight="42" id="Fde-Ac-0jO">
+                                <rect key="frame" x="0.0" y="0.0" width="320" height="524"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <prototypes>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="item_date" rowHeight="82" id="iac-Br-7r3" customClass="TableCellDate">
+                                        <rect key="frame" x="0.0" y="22" width="320" height="82"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iac-Br-7r3" id="wtN-3O-EkS">
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="81"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="edit_from" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="From" minimumFontSize="17" id="1dN-ax-3F0">
+                                                    <rect key="frame" x="20" y="38" width="135" height="30"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <nil key="textColor"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                                                    <connections>
+                                                        <outlet property="delegate" destination="LTm-xT-g5y" id="geN-CJ-Osc"/>
+                                                    </connections>
+                                                </textField>
+                                                <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="edit_to" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="To" minimumFontSize="17" id="GYg-ap-kgL">
+                                                    <rect key="frame" x="165" y="38" width="135" height="30"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                                                    <connections>
+                                                        <outlet property="delegate" destination="LTm-xT-g5y" id="sz4-mT-3r8"/>
+                                                    </connections>
+                                                </textField>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="1QE-3U-AKD">
+                                                    <rect key="frame" x="20" y="10" width="178" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="anameLabel" destination="1QE-3U-AKD" id="7B8-ny-BUa"/>
+                                            <outlet property="fromEdit" destination="1dN-ax-3F0" id="ujg-z8-iZn"/>
+                                            <outlet property="toEdit" destination="GYg-ap-kgL" id="E2N-nz-uNi"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="item_bool" rowHeight="82" id="BUG-pB-vcX" customClass="TableCellBool">
+                                        <rect key="frame" x="0.0" y="104" width="320" height="82"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="BUG-pB-vcX" id="js5-x6-gQS">
+                                            <rect key="frame" x="0.0" y="0.0" width="287" height="81"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_bool" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="eNm-LN-2nb">
+                                                    <rect key="frame" x="20" y="10" width="143" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="kZP-eL-cpD">
+                                                    <rect key="frame" x="0.0" y="10" width="320" height="71"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <state key="normal" title="Not set">
+                                                        <color key="titleColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                                    </state>
+                                                    <connections>
+                                                        <action selector="onBoolitemClick:" destination="LTm-xT-g5y" eventType="touchUpInside" id="l4z-ok-RgR"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="anameLabel" destination="eNm-LN-2nb" id="iUm-dn-TY0"/>
+                                            <outlet property="valButton" destination="kZP-eL-cpD" id="Cpa-Ro-3eW"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="item_edit" rowHeight="82" id="f2w-op-UbP" customClass="TableCellEdit">
+                                        <rect key="frame" x="0.0" y="186" width="320" height="82"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="f2w-op-UbP" id="fm5-gE-SU9">
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="81"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_edit" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="o4R-Ty-ekY">
+                                                    <rect key="frame" x="20" y="10" width="156" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter criterion" minimumFontSize="17" clearButtonMode="always" id="ZeJ-3N-xeD">
+                                                    <rect key="frame" x="20" y="38" width="280" height="30"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <textInputTraits key="textInputTraits" returnKeyType="done"/>
+                                                    <connections>
+                                                        <outlet property="delegate" destination="LTm-xT-g5y" id="rMf-4r-k7G"/>
+                                                    </connections>
+                                                </textField>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="anameLabel" destination="o4R-Ty-ekY" id="c3T-ls-otV"/>
+                                            <outlet property="valueEdit" destination="ZeJ-3N-xeD" id="rp6-Qt-9NE"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="LTm-xT-g5y" id="kSD-R0-Gvw"/>
+                                    <outlet property="delegate" destination="LTm-xT-g5y" id="keX-sc-u82"/>
+                                </connections>
+                            </tableView>
+                            <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="o88-nC-LWc">
+                                <rect key="frame" x="0.0" y="524" width="320" height="44"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                                <items>
+                                    <barButtonItem style="plain" id="BME-ew-57O">
+                                        <button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="L7J-HK-esG">
+                                            <rect key="frame" x="16" y="6" width="73" height="33"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <state key="normal" title="Clear">
+                                                <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="ClearBtnOnClick:" destination="LTm-xT-g5y" eventType="touchUpInside" id="hDV-sz-7JQ"/>
+                                            </connections>
+                                        </button>
+                                    </barButtonItem>
+                                    <barButtonItem systemItem="flexibleSpace" id="UHU-42-D7d"/>
+                                    <barButtonItem style="plain" id="Cci-il-qpZ">
+                                        <button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Nt1-SS-TmY">
+                                            <rect key="frame" x="231" y="6" width="73" height="33"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <state key="normal" title="Search">
+                                                <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="SearchBtnOnClick:" destination="LTm-xT-g5y" eventType="touchUpInside" id="04g-tY-YL6"/>
+                                            </connections>
+                                        </button>
+                                    </barButtonItem>
+                                </items>
+                            </toolbar>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Search" id="n49-AT-ejN">
+                        <barButtonItem key="rightBarButtonItem" title="Items" id="FTf-Sd-vpX">
+                            <connections>
+                                <action selector="onCustomize:" destination="LTm-xT-g5y" id="ACX-aT-gqD"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="table" destination="Fde-Ac-0jO" id="xZ6-uL-twW"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="ZLg-Ln-SOw" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1554" y="-1340"/>
+        </scene>
+        <!--Result View Controller - Result-->
+        <scene sceneID="HJD-6m-1oF">
+            <objects>
+                <viewController storyboardIdentifier="ResultViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="U64-AM-iXd" customClass="ResultViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="9Zk-2B-tRK">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="GHc-GG-2I3" customClass="SimpleGrid">
+                                <rect key="frame" x="0.0" y="0.0" width="320" height="524"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            </scrollView>
+                            <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" id="peg-dU-yA5">
+                                <rect key="frame" x="142" y="265" width="37" height="37"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                            </activityIndicatorView>
+                            <toolbar opaque="NO" clearsContextBeforeDrawing="NO" tag="301" contentMode="scaleToFill" id="K4z-UE-Bon">
+                                <rect key="frame" x="0.0" y="524" width="320" height="44"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                                <items>
+                                    <barButtonItem style="plain" id="7oT-pg-l1Q">
+                                        <button key="customView" opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="kSe-c7-K4l">
+                                            <rect key="frame" x="16" y="6" width="73" height="33"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <state key="normal" title="Pre Page">
+                                                <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="onPrePageClick:" destination="U64-AM-iXd" eventType="touchUpInside" id="Ej9-oW-PDY"/>
+                                            </connections>
+                                        </button>
+                                    </barButtonItem>
+                                    <barButtonItem style="plain" systemItem="flexibleSpace" id="HzL-t7-HcC"/>
+                                    <barButtonItem title="0 Records" width="132" id="QQ8-EE-qfH"/>
+                                    <barButtonItem style="plain" systemItem="flexibleSpace" id="bxe-2j-rcW"/>
+                                    <barButtonItem style="plain" id="Ybm-lc-aeT">
+                                        <button key="customView" opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="1s5-Xd-JzQ">
+                                            <rect key="frame" x="231" y="6" width="73" height="33"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <state key="normal" title="Next Page">
+                                                <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="onNextPageClick:" destination="U64-AM-iXd" eventType="touchUpInside" id="hsC-qD-M72"/>
+                                            </connections>
+                                        </button>
+                                    </barButtonItem>
+                                </items>
+                            </toolbar>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Result" id="JkP-Lu-glO">
+                        <barButtonItem key="rightBarButtonItem" title="Items" id="qrK-Vl-z8W">
+                            <connections>
+                                <action selector="onCustomize:" destination="U64-AM-iXd" id="tJB-O4-pdd"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="countView" destination="QQ8-EE-qfH" id="8dz-5F-BZT"/>
+                        <outlet property="grid" destination="GHc-GG-2I3" id="hCh-WF-tK2"/>
+                        <outlet property="mum" destination="peg-dU-yA5" id="Up7-O4-ibS"/>
+                        <outlet property="nextpageButton" destination="1s5-Xd-JzQ" id="iH0-KX-f6V"/>
+                        <outlet property="prepageButton" destination="kSe-c7-K4l" id="pUu-Dh-Xtj"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="BUa-P4-8Ex" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2106" y="-1340"/>
+        </scene>
+        <!--Detail Tab Bar Controller-->
+        <scene sceneID="PWm-8e-akz">
+            <objects>
+                <tabBarController storyboardIdentifier="DetailTabBarController" definesPresentationContext="YES" useStoryboardIdentifierAsRestorationIdentifier="YES" id="2bP-c5-4U6" customClass="DetailTabBarController" sceneMemberID="viewController">
+                    <nil key="simulatedBottomBarMetrics"/>
+                    <tabBar key="tabBar" contentMode="scaleToFill" id="Yo4-12-fyS">
+                        <rect key="frame" x="129" y="330" width="163" height="49"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                    </tabBar>
+                </tabBarController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="0P1-Dn-7wa" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2622" y="-1359"/>
+        </scene>
+        <!--Web View Controller - Loading...-->
+        <scene sceneID="5AK-HM-skm">
+            <objects>
+                <viewController storyboardIdentifier="WebViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="NPh-Cd-tsX" customClass="WebViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="fcS-AQ-hhm">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <webView contentMode="scaleToFill" scalesPageToFit="YES" allowsInlineMediaPlayback="NO" mediaPlaybackRequiresUserAction="NO" mediaPlaybackAllowsAirPlay="NO" id="KfM-uC-g6u">
+                                <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                <dataDetectorType key="dataDetectorTypes"/>
+                                <connections>
+                                    <outlet property="delegate" destination="NPh-Cd-tsX" id="anq-ry-Vr1"/>
+                                </connections>
+                            </webView>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" id="AGV-Fd-m4n">
+                                <rect key="frame" x="142" y="265" width="37" height="37"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                            </activityIndicatorView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Loading..." id="Shz-My-JzR">
+                        <barButtonItem key="rightBarButtonItem" title="Save" id="kqS-WA-pnG">
+                            <connections>
+                                <action selector="onSaveClick:" destination="NPh-Cd-tsX" id="iEt-mV-b3x"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="mum" destination="AGV-Fd-m4n" id="3aU-R6-bCj"/>
+                        <outlet property="webview" destination="KfM-uC-g6u" id="s1a-UY-bOs"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="5LC-0W-8EE" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="3088" y="-2070"/>
+        </scene>
+        <!--Detail Page View Controller-->
+        <scene sceneID="7dd-vR-rf3">
+            <objects>
+                <viewController storyboardIdentifier="DetailPageViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="kcm-rT-lMh" customClass="DetailPageViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="dkZ-Q9-hUM">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" id="Lad-Cp-MaF">
+                                <rect key="frame" x="142" y="265" width="37" height="37"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                            </activityIndicatorView>
+                            <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="No record in this page" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="nGs-og-1QV">
+                                <rect key="frame" x="0.0" y="64" width="320" height="21"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" red="0.1019607843" green="0.67843137249999996" blue="0.94117647059999998" alpha="0.69999999999999996" colorSpace="calibratedRGB"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="DHK-oq-SMX">
+                                <rect key="frame" x="0.0" y="64" width="320" height="460"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="44"/>
+                                <color key="separatorColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
+                                <prototypes>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_list" id="kEc-ry-FUE" customClass="DetailCellList">
+                                        <rect key="frame" x="0.0" y="22" width="320" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="kEc-ry-FUE" id="NrT-7f-68x">
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DQc-Zc-cKV">
+                                                    <rect key="frame" x="20" y="11" width="280" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <color key="backgroundColor" white="0.94522696167883213" alpha="1" colorSpace="calibratedWhite"/>
+                                        <connections>
+                                            <outlet property="listLabel" destination="DQc-Zc-cKV" id="Ufs-E0-SKz"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_kv" id="uk7-8Q-Bzs" customClass="DetailCellKV">
+                                        <rect key="frame" x="0.0" y="66" width="320" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="uk7-8Q-Bzs" id="2mb-pG-gFu">
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8x8-BT-h8l">
+                                                    <rect key="frame" x="0.0" y="0.0" width="148" height="43"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <view contentMode="scaleToFill" id="lRT-he-kpz" customClass="RTLabel">
+                                                    <rect key="frame" x="150" y="11" width="160" height="22"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                                                </view>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="keyLabel" destination="8x8-BT-h8l" id="2q8-wA-ULe"/>
+                                            <outlet property="valLabel" destination="lRT-he-kpz" id="bNX-e4-OPI"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell tag="1" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_web" rowHeight="164" id="oB9-1g-IyB" customClass="DetailCellWeb">
+                                        <rect key="frame" x="0.0" y="110" width="320" height="164"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oB9-1g-IyB" id="v6M-bZ-rGB">
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="163"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <webView contentMode="scaleToFill" id="Iti-Af-rqF">
+                                                    <rect key="frame" x="0.0" y="0.0" width="320" height="163"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <dataDetectorType key="dataDetectorTypes" link="YES"/>
+                                                    <connections>
+                                                        <outlet property="delegate" destination="kcm-rT-lMh" id="8ql-Wg-1Bd"/>
+                                                    </connections>
+                                                </webView>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="webView" destination="Iti-Af-rqF" id="AZJ-zR-ro8"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="kcm-rT-lMh" id="FEH-6k-loL"/>
+                                    <outlet property="delegate" destination="kcm-rT-lMh" id="LW2-Q8-84f"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    </view>
+                    <connections>
+                        <outlet property="mum" destination="Lad-Cp-MaF" id="mVt-VV-ZSn"/>
+                        <outlet property="norecordLabel" destination="nGs-og-1QV" id="8oW-0P-bgK"/>
+                        <outlet property="table" destination="DHK-oq-SMX" id="PDD-RR-9Dc"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Qal-UY-Mbo" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="3090" y="-1340"/>
+        </scene>
+        <!--Apex Mobile Second View Controller - Second-->
+        <scene sceneID="ot8-2e-RuS">
+            <objects>
+                <viewController title="Second" id="QUy-BD-bpt" customClass="ApexMobileSecondViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="gMD-aP-Fq6">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="519"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <containerView contentMode="scaleToFill" id="lPN-60-T0t">
+                                <rect key="frame" x="0.0" y="20" width="320" height="499"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                                <connections>
+                                    <segue destination="dbM-RP-CjU" kind="embed" id="arc-yR-QMh"/>
+                                </connections>
+                            </containerView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <tabBarItem key="tabBarItem" title="Service Location" image="map (1)" id="Z7h-1E-pvt"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="3qq-4t-Ow8" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1180" y="320"/>
+        </scene>
+        <!--About View Controller - About-->
+        <scene sceneID="yPV-LT-kUD">
+            <objects>
+                <viewController id="LRz-Xk-RCE" customClass="AboutViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="UeW-ZI-ax6">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="ytZ-3C-Ljx">
+                                <rect key="frame" x="0.0" y="-63" width="320" height="631"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <webView contentMode="scaleToFill" scalesPageToFit="YES" id="YW8-oG-5PK">
+                                        <rect key="frame" x="20" y="120" width="280" height="365"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
+                                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                        <inset key="insetFor6xAndEarlier" minX="0.0" minY="0.0" maxX="0.0" maxY="65"/>
+                                        <connections>
+                                            <outlet property="delegate" destination="LRz-Xk-RCE" id="Xhr-nE-shg"/>
+                                        </connections>
+                                    </webView>
+                                    <imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="apexlogo-2" id="Y03-xa-0ci">
+                                        <rect key="frame" x="0.0" y="60" width="320" height="64"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
+                                    </imageView>
+                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" editable="NO" text="version:
Support:
usairedadt@united-us.net" textAlignment="center" id="vhX-3H-Dxm">
+                                        <rect key="frame" x="20" y="493" width="280" height="81"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                                        <dataDetectorType key="dataDetectorTypes" link="YES"/>
+                                    </textView>
+                                </subviews>
+                            </scrollView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="About" id="g1r-bA-xXi"/>
+                    <nil key="simulatedBottomBarMetrics"/>
+                    <simulatedOrientationMetrics key="simulatedOrientationMetrics"/>
+                    <connections>
+                        <outlet property="infoText" destination="vhX-3H-Dxm" id="8Ow-Sl-mTV"/>
+                        <outlet property="webview" destination="YW8-oG-5PK" id="fhD-gy-XTb"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="1qU-xI-rc2" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2791" y="320"/>
+        </scene>
+        <!--Location View Controller-->
+        <scene sceneID="2vR-Up-DGY">
+            <objects>
+                <viewController automaticallyAdjustsScrollViewInsets="NO" id="dbM-RP-CjU" customClass="LocationViewController" sceneMemberID="viewController">
+                    <view key="view" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="feP-eT-obx">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="499"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    </view>
+                    <toolbarItems/>
+                    <navigationItem key="navigationItem" id="eFt-a5-oFc"/>
+                    <connections>
+                        <segue destination="mUL-1B-hqq" kind="modal" identifier="DETAIL" id="fJJ-YR-ose"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="pkZ-co-EKr" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2125" y="339"/>
+        </scene>
+        <!--Location Detail View Controller-->
+        <scene sceneID="U7a-re-t7T">
+            <objects>
+                <viewController storyboardIdentifier="LocationDetailViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="mUL-1B-hqq" customClass="LocationDetailViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="shM-Pf-iem">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="499"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" showsHorizontalScrollIndicator="NO" editable="NO" text="content" textAlignment="center" id="WJf-Cy-VOs">
+                                <rect key="frame" x="20" y="75" width="280" height="343"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                                <dataDetectorType key="dataDetectorTypes" phoneNumber="YES" link="YES"/>
+                            </textView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="XP8-lF-VzJ">
+                                <rect key="frame" x="140" y="426" width="40" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                                <state key="normal" title="Close">
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="onCloseClick:" destination="mUL-1B-hqq" eventType="touchUpInside" id="LsM-ks-kND"/>
+                                </connections>
+                            </button>
+                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" text="name" textAlignment="center" id="OQp-ZY-wcy">
+                                <rect key="frame" x="20" y="24" width="280" height="43"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                            </textView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <connections>
+                        <outlet property="contentText" destination="WJf-Cy-VOs" id="DJH-fT-gtM"/>
+                        <outlet property="nameText" destination="OQp-ZY-wcy" id="TYw-Vk-CS6"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="hZL-fK-eOy" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2125" y="1116"/>
+        </scene>
+    </scenes>
+    <resources>
+        <image name="apexlogo-2" width="258" height="64"/>
+        <image name="ic_about" width="60" height="60"/>
+        <image name="ic_container_detail" width="60" height="60"/>
+        <image name="ic_down_doc" width="60" height="60"/>
+        <image name="ic_exit" width="60" height="60"/>
+        <image name="ic_ocean_blinfo" width="60" height="60"/>
+        <image name="ic_oceanbooking" width="60" height="60"/>
+        <image name="ic_password" width="60" height="60"/>
+        <image name="ic_service_location" width="60" height="60"/>
+        <image name="in" width="32" height="32"/>
+        <image name="map (1)" width="32" height="32"/>
+        <image name="unchecked_32" width="16" height="16"/>
+    </resources>
+    <simulatedMetricsContainer key="defaultSimulatedMetrics">
+        <simulatedStatusBarMetrics key="statusBar"/>
+        <simulatedOrientationMetrics key="orientation"/>
+        <simulatedScreenMetrics key="destination" type="retina4"/>
+    </simulatedMetricsContainer>
+    <inferredMetricsTieBreakers>
+        <segue reference="arc-yR-QMh"/>
+    </inferredMetricsTieBreakers>
+</document>

+ 19 - 0
Apex Mobile/Apex Mobile/ChangePasswordViewController.h

@@ -0,0 +1,19 @@
+//
+//  ChangePasswordViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-17.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "ApexMobileNetwork.h"
+@interface ChangePasswordViewController : UIViewController<UITextFieldDelegate>
+@property (strong, nonatomic) IBOutlet UITextField *editOld;
+@property (strong, nonatomic) IBOutlet UITextField *editNew;
+@property (strong, nonatomic) IBOutlet UITextField *editConfirm;
+@property (strong, nonatomic) IBOutlet UIButton *btnChange;
+@property (strong, nonatomic) IBOutlet UIButton *btnCancel;
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+
+@end

+ 130 - 0
Apex Mobile/Apex Mobile/ChangePasswordViewController.m

@@ -0,0 +1,130 @@
+//
+//  ChangePasswordViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-17.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ChangePasswordViewController.h"
+
+@interface ChangePasswordViewController ()
+
+@end
+
+@implementation ChangePasswordViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+- (BOOL)shouldAutorotate
+{
+    return YES;
+}
+
+- (NSUInteger)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskPortrait;
+}
+
+- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (IBAction)onChange:(UIButton *)sender {
+    
+    NSString* oldpass = self.editOld.text;
+    NSString* newpass = self.editNew.text;
+    NSString* confirmpass = self.editConfirm.text;
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    NSString* user = appDelegate.user;
+    if(oldpass.length==0||oldpass.length==0||confirmpass.length==0)
+    {
+        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"Required fields can not be empty!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
+        //        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:@"Ok" , nil];
+        [alert show];
+        return;
+    }
+    if(! [newpass isEqualToString:confirmpass])
+    {
+        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"New password not equal confirm password!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
+        //        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:@"Ok" , nil];
+        [alert show];
+        return;
+    }
+    
+    self.btnChange.enabled = false;
+    
+    self.mum.hidden=false;
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        
+        int ret=[ApexMobileNetwork ChangePassword:newpass user:user oldpass:oldpass];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            self.mum.hidden=true;
+            self.btnChange.enabled = true;
+
+            
+            if (ret==RESULT_TRUE)
+            {
+                
+                
+                [self dismissViewControllerAnimated:true completion:^{
+                    
+                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Success!" message:@"Change success." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
+                    [alert show];
+                    ;
+                }];
+            }
+            else
+            {
+                UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:[NSString stringWithFormat:@"Failed to change password code %d",ret] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
+                [alert show];
+            }
+            
+            
+            
+        });
+    });
+    
+}
+- (IBAction)onCancel:(UIButton *)sender {
+}
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
+    [[self view] endEditing:YES];
+}
+-(BOOL)textFieldShouldReturn:(UITextField *)textField {
+    
+    [textField resignFirstResponder];
+    return YES;
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
+{
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 62 - 0
Apex Mobile/Apex Mobile/Constant.h

@@ -0,0 +1,62 @@
+//
+//  Constant.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-1.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#ifdef DEBUG
+#define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
+#else
+#define DebugLog( s, ... )
+#endif
+
+
+#import <Foundation/Foundation.h>
+
+
+
+#define  URL_UPDATE_AUTH  @"https://ra.apexshipping.com/login.php"
+#define URL_REQUEST_COUNT @"https://ra.apexshipping.com/main.php"
+#define URL_REQUEST_RECORDS @"https://ra.apexshipping.com/main.php"
+#define URL_RETRIEVE_PASS @"https://ra.apexshipping.com/main.php"
+#define URL_REQUEST_DETAIL @"https://ra.apexshipping.com/main.php"
+#define COLOR(R,G,B,A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
+extern const int MAX_ROW;
+extern const int MAX_COLUMN;
+
+
+extern const int		BEHAVIOR_SEARCH;
+extern const int		BEHAVIOR_RESULT;
+
+
+extern const int			AP_USER_AUTH;
+extern const int			AP_USER_NOT_AUTH;
+extern const int			AP_USER_NOT_EXIST;
+extern const int			AP_SESSION_EXPIRED;
+
+extern const int			AP_UPLOAD_SUCCESS;
+extern const int			AP_UPLOAD_FAIL;
+
+
+extern const int		RESULT_FALSE;
+extern const int		RESULT_TRUE;
+extern const int		RESULT_NET_ERROR;
+extern const int		RESULT_NET_NOTAVAILABLE;
+extern const int		RESULT_ERROR;
+extern const int		RESULT_LOCALFILE_ERROR;
+extern const int		RESULT_USERAUTH_ERROR;
+extern const int		RESULT_UPDATE_USERAUTH_ERROR;
+extern const int		RESULT_SESSION_EXPIRED;
+extern const int        RESULT_VER_LOW;
+
+//extern const NSString* URL_UPDATE_AUTH;
+//extern const NSString* URL_REQUEST_COUNT;
+//extern const NSString* URL_REQUEST_RECORDS;
+//extern const NSString* URL_RETRIEVE_PASS;
+//extern const NSString* URL_REQUEST_DETAIL;
+
+@interface Constant : NSObject
+
+@end

+ 46 - 0
Apex Mobile/Apex Mobile/Constant.m

@@ -0,0 +1,46 @@
+//
+//  Constant.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-1.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "Constant.h"
+const int MAX_ROW=100;
+const int MAX_COLUMN=100;
+
+const int		BEHAVIOR_SEARCH					= 0;
+const int		BEHAVIOR_RESULT					= 1;
+
+
+const int			AP_USER_AUTH					= 1;
+const int			AP_USER_NOT_AUTH				= 2;
+const int			AP_USER_NOT_EXIST				= 3;
+const int			AP_SESSION_EXPIRED				= 4;
+
+const int			AP_UPLOAD_SUCCESS				= 4;
+const int			AP_UPLOAD_FAIL					= 5;
+
+
+const int		RESULT_FALSE					= 0;
+const int		RESULT_TRUE						= -1;
+const int		RESULT_NET_ERROR				= -3;
+const int		RESULT_NET_NOTAVAILABLE			= -4;
+const int		RESULT_ERROR					= -5;
+const int		RESULT_LOCALFILE_ERROR			= -7;
+const int		RESULT_USERAUTH_ERROR			= -9;
+const int		RESULT_UPDATE_USERAUTH_ERROR	= -11;
+const int		RESULT_SESSION_EXPIRED			= -13;
+const int       RESULT_VER_LOW                  = -15;
+
+
+//const NSString* URL_UPDATE_AUTH = @"https://ra.apexshipping.com/login.php";
+//const NSString* URL_REQUEST_COUNT = @"https://ra.apexshipping.com/main.php";
+//const NSString* URL_REQUEST_RECORDS = @"https://ra.apexshipping.com/main.php";
+//const NSString* URL_RETRIEVE_PASS = @"https://ra.apexshipping.com/main.php";
+//const NSString* URL_REQUEST_DETAIL = @"https://ra.apexshipping.com/main.php";
+
+@implementation Constant
+
+@end

+ 26 - 0
Apex Mobile/Apex Mobile/CustomizeFieldViewController.h

@@ -0,0 +1,26 @@
+//
+//  CustomizeFieldViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-12.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <sqlite3.h>
+#import "ApexMobileAppDelegate.h"
+#import "ApexMobileDB.h"
+#import "SearchViewController.h"
+//#import "ApexMobileNetwork.h"
+
+@interface CustomizeFieldViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
+@property (strong,nonatomic) NSString* function_name;
+//@property (strong,nonatomic) NSString* dirty;
+
+@property (strong, nonatomic) IBOutlet UITableView *tableView;
+@property int behavior;
+@property (strong,nonatomic) NSMutableArray * displayfields;
+@property (strong,nonatomic) NSMutableArray * hidefields;
+@property NSUInteger taptime;
+@property NSIndexPath* lasttap;
+@end

+ 352 - 0
Apex Mobile/Apex Mobile/CustomizeFieldViewController.m

@@ -0,0 +1,352 @@
+//
+//  CustomizeFieldViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-12.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+ 
+#import "CustomizeFieldViewController.h"
+
+@interface CustomizeFieldViewController ()
+
+@end
+
+@implementation CustomizeFieldViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+- (void)loadFields
+{
+    //    self.tableView.editing = true;
+    self.displayfields = [[NSMutableArray alloc] init];
+    self.hidefields = [[NSMutableArray alloc] init];
+    ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    //    NSString* required_ver=[objheader objectForKey:@"client_ver"] ;
+    //
+    //    appDelegate.sessionid = [objheader valueForKey:@"sessionid"];
+    //    appDelegate.user = user;
+    //    appDelegate.password = password;
+    
+    sqlite3 *db =[ApexMobileDB get_db];
+    NSString *quary = [NSString stringWithFormat:@"select aname,show from fields_info where function_name='%@' and user='%@' and behavior=%d order by priority,aname",self.function_name, appDelegate.user,self.behavior];
+    
+    
+    
+    sqlite3_stmt *stmt;
+    if (sqlite3_prepare_v2(db, [quary UTF8String], -1, &stmt, nil) == SQLITE_OK) {
+          DebugLog(@"sql:%@",quary);
+        while (sqlite3_step(stmt)==SQLITE_ROW)
+        {
+            NSString *aname = [[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(stmt, 0)];
+            int show = sqlite3_column_int(stmt, 1);
+            if(show==1)
+                [self.displayfields addObject:aname];
+            else
+                [self.hidefields addObject:aname];
+            
+            
+        }
+        
+        sqlite3_finalize(stmt);
+    }
+    //用完了一定记得关闭,释放内存
+    sqlite3_close(db);
+}
+
+- (BOOL)shouldAutorotate
+{
+    return YES;
+}
+
+- (NSUInteger)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskPortrait;
+}
+
+- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+- (IBAction)onSaveClick:(UIBarButtonItem *)sender {
+    sqlite3 *db =[ApexMobileDB get_db];
+    @try{
+        
+        
+        char *errorMsg;
+        ApexMobileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+        if (sqlite3_exec(db, "BEGIN", NULL, NULL, &errorMsg)==SQLITE_OK) {
+            
+              DebugLog(@"begin transaction success");
+            
+            sqlite3_free(errorMsg);
+            
+            for(int i=0;i<self.displayfields.count;i++)
+            {
+                NSString * sql = [NSString stringWithFormat:@"update fields_info set show = 1 , priority = %d where aname = '%@' and  function_name='%@' and user='%@' and behavior=%d",i,self.displayfields[i],self.function_name, appDelegate.user,self.behavior];
+                [ApexMobileDB execSql:sql db:db];
+            }
+            
+            for(int i=0;i<self.hidefields.count;i++)
+            {
+                NSString * sql = [NSString stringWithFormat:@"update fields_info set show = 0  where aname = '%@' and  function_name='%@' and user='%@' and behavior=%d",self.hidefields[i],self.function_name, appDelegate.user,self.behavior];
+                [ApexMobileDB execSql:sql db:db];
+            }
+            
+//            self.dirty = @"true";
+            [self.navigationController popViewControllerAnimated:true];
+//            sqlite3_stmt *statement;
+//            
+//            if (sqlite3_prepare_v2(db, [@"insert into persons(name) values(?);" UTF8String], -1, &statement,            NULL)==SQLITE_OK) {
+//                
+//                //绑定参数
+//                
+//                const char *text=[@”张三” cStringUsingEncoding:NSUTF8StringEncoding];
+//                
+//                sqlite3_bind_text(statement, index, text, strlen(text), SQLITE_STATIC);
+//                
+//                
+//                
+//                if (sqlite3_step(statement)!=SQLITE_DONE) {
+//                    
+//                    sqlite3_finalize(statement);
+//                    
+//                }
+//                
+//            }
+//            
+//            
+//            
+            if (sqlite3_exec(db, "COMMIT", NULL, NULL, &errorMsg)==SQLITE_OK) {
+                
+                  DebugLog(@"commit success");
+                
+            }
+            
+            sqlite3_free(errorMsg);
+            
+        }else{
+            
+            sqlite3_free(errorMsg);
+            
+        }
+        
+    }
+    
+    @catch(NSException *e){
+        
+        char *errorMsg;
+        
+        if (sqlite3_exec(db, "ROLLBACK", NULL, NULL, &errorMsg)==SQLITE_OK) {
+            
+              DebugLog(@"rollback success");
+            
+        }
+        
+        sqlite3_free(errorMsg);
+        
+    }
+    
+    @finally{
+        sqlite3_close(db);
+        
+    }
+    
+    
+    
+}
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    [self loadFields];
+//        [self.tableView setSectionIndexColor:[UIColor blueColor]];
+//    [self.tableView setSectionIndexBackgroundColor:[UIColor blueColor]];
+    //self.navigationItem.rightBarButtonItem = self.editButtonItem;
+    
+    [self.tableView setEditing:true animated:true];
+    // Do any additional setup after loading the view.
+}
+-(void)setEditing:(BOOL)editing animated:(BOOL)animated
+{
+    [super setEditing:editing animated:animated];
+    [self.tableView setEditing:editing animated:animated];
+}
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+#pragma mark - Table view data source
+
+- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
+    myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)];
+    titleLabel.textColor=[UIColor whiteColor];
+    titleLabel.backgroundColor = [UIColor clearColor];
+    if(section==0)
+        titleLabel.text=@"Display items";
+    else
+        titleLabel.text=@"Hide items";
+    [titleLabel sizeToFit];
+    [myView addSubview:titleLabel];
+
+    return myView;
+}
+
+- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+    if(section==0)
+        return @"Display fields";
+    else
+        return @"Hide fields";
+}
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    
+    return 2;
+}
+- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
+{
+      DebugLog(@"canMoveRowAtIndexPath");
+
+    if([tableView numberOfRowsInSection:indexPath.section]>1)
+        return true;
+    else
+        return false;
+}
+- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
+{
+    NSMutableArray * from;
+    NSMutableArray * to ;
+    if(fromIndexPath.section==0)
+        from  = self.displayfields;
+    else
+        from  = self.hidefields;
+    if(toIndexPath.section==0)
+        to  = self.displayfields;
+    else
+        to  = self.hidefields;
+    id content=from[fromIndexPath.row];
+    [from removeObjectAtIndex:fromIndexPath.row];
+    [to insertObject:content atIndex:toIndexPath.row];
+    
+    [tableView reloadData];
+    
+}
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    if(section==0)
+        return self.displayfields.count;
+    else
+        return self.hidefields.count;
+    
+}
+- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    return UITableViewCellEditingStyleNone;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    //如果两次点击的时间间隔小于1秒,则断定为双击事件
+    
+    if(tableView.editing==false)
+        return;
+    
+    
+    if([tableView numberOfRowsInSection:indexPath.section]<=1)
+        return;
+//    int between = 1;
+    NSUInteger curr = [[NSDate date] timeIntervalSince1970];
+    
+    if(indexPath.row==self.lasttap.row&&indexPath.section==self.lasttap.section)
+    {
+        if (curr-self.taptime<1) {
+              DebugLog(@"double click!");
+            self.lasttap =nil;
+            
+            NSMutableArray * from;
+            NSMutableArray * to ;
+            int section;
+            if(indexPath.section==0)
+            {
+                from  = self.displayfields;
+                to = self.hidefields;
+                section = 1;
+            }
+            else
+            {
+            
+                from  = self.hidefields;
+                to = self.displayfields;
+                section = 0;
+            }
+            NSIndexPath * toIndexPath = [NSIndexPath indexPathForRow:0 inSection:section];
+//            NSIndexPath * headerIndexPath = [NSIndexPath indexPathForRow:0 inSection:indexPath.section];
+//            NSIndexPath * headerIndexPath1 = toIndexPath;
+            
+            id content=from[indexPath.row];
+            [tableView beginUpdates];
+            [from removeObjectAtIndex:indexPath.row];
+            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
+
+            [to insertObject:content atIndex:0];
+            [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:toIndexPath] withRowAnimation:UITableViewRowAnimationFade];
+            [tableView endUpdates];
+            
+//            [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:headerIndexPath] withRowAnimation:UITableViewRowAnimationFade];
+//            [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:headerIndexPath1] withRowAnimation:UITableViewRowAnimationFade];
+            [tableView reloadData];
+            
+
+        }
+        self.taptime = curr;
+        
+        
+    }
+    else
+    {
+        self.taptime = curr;
+        self.lasttap = indexPath;
+    }
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+      DebugLog(@"cellForRowAtIndexPath");
+    
+    NSString *CellIdentifier = @"field";
+    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+    NSString* aname;
+    if(indexPath.section==0)
+        aname = self.displayfields[indexPath.row];
+    else
+        aname = self.hidefields[indexPath.row];
+    cell.textLabel.text = aname;
+ 
+    return cell;
+    
+    
+}
+
+
+
+/*
+ #pragma mark - Navigation
+ 
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
+ {
+ // Get the new view controller using [segue destinationViewController].
+ // Pass the selected object to the new view controller.
+ }
+ */
+
+@end

+ 19 - 0
Apex Mobile/Apex Mobile/DetailCellKV.h

@@ -0,0 +1,19 @@
+//
+//  DetailCellKV.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "RTLabel.h"
+#import "LineView.h"
+
+@interface DetailCellKV : UITableViewCell
+@property (strong, nonatomic) IBOutlet UILabel *keyLabel;
+//@property (strong, nonatomic) IBOutlet UILabel *valLabel;
+//@property (strong, nonatomic) IBOutlet UIView *valLabel;
+@property (strong, nonatomic) IBOutlet RTLabel *valLabel;
+
+@end

+ 49 - 0
Apex Mobile/Apex Mobile/DetailCellKV.m

@@ -0,0 +1,49 @@
+//
+//  DetailCellKV.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "DetailCellKV.h"
+
+@implementation DetailCellKV
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        // Initialization code
+    }
+    return self;
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+//- (void)drawRect:(CGRect)rect
+//{
+//    CGContextRef context = UIGraphicsGetCurrentContext();
+//    
+//    CGRect frame = self.contentView.frame;
+//    
+// //   CGContextAddRect(context,frame);
+//    CGContextSetLineWidth(context, 1.0);
+//    
+//    CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
+//    
+//    CGRect selrect = self.bounds;
+//    
+//    CGContextMoveToPoint(context, self.bounds.size.width*0.4, self.bounds.origin.y);
+//    
+//    CGContextAddLineToPoint(context, self.bounds.size.width*0.4, self.bounds.size.height);
+//    
+//    CGContextStrokePath(context);
+//    [super drawRect:rect];
+//}
+
+@end

+ 14 - 0
Apex Mobile/Apex Mobile/DetailCellList.h

@@ -0,0 +1,14 @@
+//
+//  DetailCellList.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface DetailCellList : UITableViewCell
+@property (strong, nonatomic) IBOutlet UILabel *listLabel;
+
+@end

+ 29 - 0
Apex Mobile/Apex Mobile/DetailCellList.m

@@ -0,0 +1,29 @@
+//
+//  DetailCellList.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "DetailCellList.h"
+
+@implementation DetailCellList
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        // Initialization code
+    }
+    return self;
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 14 - 0
Apex Mobile/Apex Mobile/DetailCellWeb.h

@@ -0,0 +1,14 @@
+//
+//  DetailCellWeb.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface DetailCellWeb : UITableViewCell
+@property (strong, nonatomic) IBOutlet UIWebView *webView;
+
+@end

+ 38 - 0
Apex Mobile/Apex Mobile/DetailCellWeb.m

@@ -0,0 +1,38 @@
+//
+//  DetailCellWeb.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "DetailCellWeb.h"
+
+@implementation DetailCellWeb
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        // Initialization code
+    }
+    return self;
+}
+- (id)init
+{
+    self = [super init];
+    if(self)
+    {
+        self.webView = [[UIWebView alloc] init];
+        [self addSubview:self.webView];
+    }
+    return self;
+}
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 26 - 0
Apex Mobile/Apex Mobile/DetailContent.h

@@ -0,0 +1,26 @@
+//
+//  DetailContent.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "Constant.h"
+
+
+@interface DetailContent : NSObject
+-(long) get_segmentcount;
+-(int) get_itemcount :(long)idx;
+-(NSString*) get_segmenttype :(long)idx;
+-(NSString*) get_segmentname : (long)seg;
+-(NSDictionary*)get_item_seg :(long)seg row:(long)row;
+@property int result_code;
+
+//-(float) itemHeightAtIndexPath:(NSIndexPath *)indexPath;
+//-(void) set_itemheight:(float)height AtIndexPath:(NSIndexPath *)indexPath;
+@property (strong,nonatomic) NSArray* segments;
+@property (strong,nonatomic) NSMutableDictionary* webviewHeight;
+
+@end

+ 86 - 0
Apex Mobile/Apex Mobile/DetailContent.m

@@ -0,0 +1,86 @@
+//
+//  DetailContent.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "DetailContent.h"
+
+@implementation DetailContent
+- (id)init
+{
+    self = [super init];
+    if (self) {
+        self.segments = [[NSArray alloc] init];
+        self.webviewHeight = [[NSMutableDictionary alloc] init];
+        self.result_code = RESULT_TRUE;
+    }
+    return self;
+}
+-(long) get_segmentcount
+{
+    return self.segments.count;
+}
+-(int) get_itemcount :(long)idx
+{
+    int count=0;
+    NSDictionary* segment = self.segments[idx];
+    NSString* type =[segment valueForKey:@"_type"];
+    if([type isEqualToString:@"table"])
+        count=1;
+    else
+        count=[[segment valueForKey:@"count"] intValue];
+    
+    return count;
+    
+}
+-(NSDictionary*)get_item_seg :(long)seg row:(long)row
+{
+    NSDictionary* segment = self.segments[seg];
+    
+    NSString* type =[segment valueForKey:@"_type"];
+    if([type isEqualToString:@"table"])
+        return segment;
+    else if([type isEqualToString:@"mapping"])
+    {
+        return [segment objectForKey:[NSString stringWithFormat:@"item%ld",row]];
+    }
+    else
+    {
+        return segment;
+    }
+}
+-(NSString*) get_segmenttype :(long)idx
+{
+    NSDictionary* segment = self.segments[idx];
+    NSString* type =[segment valueForKey:@"_type"];
+    return type;
+}
+-(NSString*) get_segmentname : (long)seg
+{
+    NSDictionary* segment = self.segments[seg];
+    NSString* name =[segment valueForKey:@"_name"];
+    return name;
+}
+
+//-(float) itemHeightAtIndexPath:(NSIndexPath *)indexPath
+//{
+//    int x = indexPath.section;
+//    int y = indexPath.row;
+//    NSMutableDictionary* segHeight= [self.itemHeight objectForKey:[NSString stringWithFormat:@"%d",indexPath.section]];
+//    float itemHeight = [[segHeight valueForKey:[NSString stringWithFormat:@"%d",indexPath.row]] floatValue];
+//    return itemHeight;
+//}
+//-(void) set_itemheight:(float)height AtIndexPath:(NSIndexPath *)indexPath
+//{
+//    NSMutableDictionary* segHeight= [self.itemHeight objectForKey:[NSString stringWithFormat:@"%d",indexPath.section]];
+//    if(segHeight==nil)
+//        segHeight = [[NSMutableDictionary alloc]init];
+//    [segHeight setValue:[NSString stringWithFormat:@"%f",height] forKey:[NSString stringWithFormat:@"%d",indexPath.row]];
+//    
+//    [self.itemHeight setValue:segHeight forKey:[NSString stringWithFormat:@"%d",indexPath.section]];
+//    
+//}
+@end

+ 28 - 0
Apex Mobile/Apex Mobile/DetailPageViewController.h

@@ -0,0 +1,28 @@
+//
+//  DetailPageViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-8.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "ApexMobileNetwork.h"
+#import "DetailCellKV.h"
+#import "DetailCellList.h"
+#import "DetailCellWeb.h"
+#import "WebViewController.h"
+
+@interface DetailPageViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UIWebViewDelegate>
+@property (strong,nonatomic) NSString* function_name;
+@property (strong,nonatomic) NSMutableDictionary* params;
+@property (strong,nonatomic) DetailContent* content;
+@property (strong, nonatomic) IBOutlet UITableView *table;
+//@property (strong,nonatomic) DetailCellKV *compute_cell_kv;
+//@property (strong, nonatomic) IBOutlet UILabel *norecordLabel;
+@property (strong, nonatomic) IBOutlet UILabel *norecordLabel;
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+//@property bool showtabbar;
+//@property (strong, nonatomic) NSOperationQueue *webviewoprationQueue;
+
+@end

+ 664 - 0
Apex Mobile/Apex Mobile/DetailPageViewController.m

@@ -0,0 +1,664 @@
+//
+//  DetailPageViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-8.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "DetailPageViewController.h"
+#define  DEF_CELL_HEIGHT 44
+#define  DEF_TABLE_HEIGHT 44
+#define  LINE_WIDTH 0
+#define  CELL_MARGIN 0
+#define  LABEL_MARGIN 5
+
+@interface DetailPageViewController ()
+
+@end
+
+@implementation DetailPageViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+-(void)changeCell
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"refreshing"];
+    [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1];
+      DebugLog(@"refresh!!!!!!!!");
+    
+}
+
+-(void)ReloadData
+{
+    
+    //    Count ++ ;
+    //    [mytabelview reloadData];
+    [self loadpage];
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    
+    [reF endRefreshing];
+    
+}
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    
+//    self.webviewoprationQueue = [[NSOperationQueue alloc] init];
+//    self.webviewoprationQueue.maxConcurrentOperationCount = 1;
+    
+    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
+    ref.tag = 200 ;
+    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"drag to refresh"];
+    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    //    ref.hidden = true;
+    [ref addTarget:self action:@selector(changeCell) forControlEvents:UIControlEventValueChanged];
+    [self.table addSubview:ref];
+    if(self.tabBarController.tabBar.hidden==true)
+    {
+        CGRect frame = self.table.frame;
+        frame.size.height +=40;
+        self.table.frame=frame;
+    }
+    //        self.view.backgroundColor= [UIColor whiteColor];
+    [self loadpage];
+	// Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+-(void) loadpage
+{
+    
+    //    [self.params setValue:[NSString stringWithFormat:@"%d",self.offset] forKey:@"offset"];
+    //    self.prepageButton.enabled=false;
+    //    self.nextpageButton.enabled=false;
+    self.mum.center = self.view.center;
+    
+    NSTimeInterval animationDuration = 0.30f;
+    [UIView beginAnimations:@"ResizeView" context:nil];
+    [UIView setAnimationDuration:animationDuration];
+    
+    self.mum.hidden = false;
+    self.table.hidden = true;
+    
+    [UIView commitAnimations];
+    
+    
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        self.content=[ApexMobileNetwork get_detailcontent:self.params];
+        
+        
+        //        PageData* pageData=nil;
+        //        if(self.recordCount==-1)
+        //            self.recordCount=[ApexMobileNetwork get_recordcount: self.params ];
+        //        if(self.recordCount>0)
+        //        {
+        //            self.pageData=[ApexMobileNetwork get_pagedata:self.params];
+        //            //            self.pageData=[ApexMobileNetwork]
+        //        }
+        //
+        dispatch_async(dispatch_get_main_queue(), ^{
+            
+            
+            NSTimeInterval animationDuration = 0.30f;
+            [UIView beginAnimations:@"ResizeView" context:nil];
+            [UIView setAnimationDuration:animationDuration];
+            
+            
+            self.mum.hidden = true;
+            if(self.content.result_code!=RESULT_TRUE)
+            {
+                self.table.hidden =false;
+                [self.table reloadData];
+                
+            }
+            else
+            if([self.content get_segmentcount]==0)
+            {
+                self.table.hidden =true;
+                self.norecordLabel.hidden=false;
+            }
+            else
+            {
+                self.table.hidden =false;
+                [self.table reloadData];
+            }
+            [UIView commitAnimations];
+            
+            //            [self.table setNeedsDisplay];
+            //            if(self.recordCount<2000)
+            //                self.countView.title = [NSString stringWithFormat:@"%d records",self.recordCount];
+            //            else
+            //                self.countView.title = @"2000+ records";
+            //
+            //            if(self.offset<self.pageData.get_count)
+            //                self.prepageButton.enabled=false;
+            //            else
+            //                self.prepageButton.enabled=true;
+            //            if(self.offset+self.pageData.get_count>=self.recordCount)
+            //                self.nextpageButton.enabled=false;
+            //            else
+            //                self.nextpageButton.enabled=true;
+            //            [self.grid initgrid :self.pageData];
+            
+            
+        });
+    });
+}
+
+- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
+{
+//    [self.table beginUpdates];
+    [self.table reloadData];
+//    [self.table endUpdates];
+    
+}
+//// 是否支持屏幕旋转
+//- (BOOL)shouldAutorotate {
+//
+//
+//    return YES;
+//}
+//// 支持的旋转方向
+//- (NSUInteger)supportedInterfaceOrientations {
+//    return UIInterfaceOrientationLandscapeRight;//UIInterfaceOrientationMaskAllButUpsideDown;
+//}
+//// 一开始的屏幕旋转方向
+//- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
+//    return UIInterfaceOrientationLandscapeRight;
+//}
+
+
+
+#pragma mark - web view delegate
+- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
+{
+    if(navigationType != UIWebViewNavigationTypeLinkClicked)
+        return true;
+//    NSString *currentURL =[webView.request.URL lastPathComponent];// [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
+
+    NSString* str = request.URL.absoluteString;
+    if([str isEqualToString:@"about:blank"])
+        return true;
+    WebViewController *ViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WebViewController"];
+    ViewController.url = str;
+    //    ViewController. = self.function_name;
+    //    ViewController.behavior =BEHAVIOR_SEARCH;
+    
+    [self.navigationController pushViewController:ViewController animated:YES];
+      DebugLog(@"shouldStartLoadWithRequest");
+    return false;
+}
+- (void)webViewDidFinishLoad:(UIWebView *)webView
+{
+
+
+      DebugLog(@"webViewDidFinishLoad @@@@@@@@@@@@@@@@@ entry");
+    
+
+   
+    UITableViewCell *cell  = (UITableViewCell *)[[webView superview] superview];
+    
+
+    NSIndexPath *indexPath = [self.table indexPathForCell:cell];
+    if(indexPath==nil)
+    {//for ios7
+        cell  = (UITableViewCell *) webView.superview.superview.superview;
+        indexPath = [self.table indexPathForCell:cell];
+    }
+    
+    float height= [[self.content.webviewHeight valueForKey:[NSString stringWithFormat:@"%ld",(long)indexPath.section]] floatValue];
+    
+    if(height>0)
+        return;
+    
+    
+    //    UIScrollView *scrollerView = [webView.subviews objectAtIndex:0];
+//    CGSize size= webView.scrollView.contentSize;
+  //   CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
+    
+    CGRect frame = webView.frame;
+    NSString *fitHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];
+    frame.size.height = [fitHeight floatValue];
+    //webView.frame = frame;
+    
+    
+//      DebugLog(@"webViewDidFinishLoad ^^^^^^^^^^^^^^^^^Saveheight height=%f   section=%ld",webView.scrollView.contentSize.height,indexPath.section);
+    
+    [self.content.webviewHeight setObject:[NSString stringWithFormat:@"%f",frame.size.height/*webView.scrollView.contentSize.height*/] forKey:[NSString stringWithFormat:@"%ld",(long)indexPath.section]];
+    
+      DebugLog(@"webViewDidFinishLoad ^^^^^^^^^^^^^^^^^reloadRowsAtIndexPaths");
+
+    
+
+//    [self.table beginUpdates];
+        [self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
+//    [self.table endUpdates];
+    
+//        [self.webviewoprationQueue addOperationWithBlock:^{
+//    }];
+
+    
+//        [self.table endUpdates];
+//    }
+
+    
+}
+
+#pragma mark - Table view data source
+
+//- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+//{
+//    return 40;
+//}
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
+{
+      DebugLog(@"heightForRowAtIndexPath");
+    
+    //    float height = [self.content itemHeightAtIndexPath:indexPath];
+    NSString* type = [self.content get_segmenttype:indexPath.section];
+    
+    
+    
+    if([type isEqualToString:@"table"])
+    {
+        //            [self.content.webviewHeight setObject:[NSString stringWithFormat:@"%f",webView.frame.size.height] forKey:[NSString stringWithFormat:@"%d",webView.tag]];
+        
+        float height= [[self.content.webviewHeight valueForKey:[NSString stringWithFormat:@"%ld",(long)indexPath.section]] floatValue];
+        if(height==0)
+            height=DEF_TABLE_HEIGHT;
+        
+        
+//          DebugLog(@"heightForRowAtIndexPath...............webview,hight = %f  section=%ld",height,indexPath.section);
+        //wait(1000);
+        return height;
+        
+    }
+    else if([type isEqualToString:@"mapping"])
+    {
+        float width = tableView.frame.size.width;
+        width-=CELL_MARGIN*2;
+        CGSize constraintkey = CGSizeMake(width*0.4-2*LABEL_MARGIN, 20000.0f);//key label width is 40% cell width;
+        CGSize constraintval = CGSizeMake(width*0.6-2*LABEL_MARGIN, 20000.0f);//val label width is 60% cell width;
+        
+        
+        
+        NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row];
+        NSString* key =[item allKeys][0];
+        //   [cell.keyLabel sizeToFit];
+        NSString* val=[item valueForKey:key];
+        if([val isEqual:[NSNull null]])
+            val=@"";
+        if(val==nil)
+            val=@"";
+        if([val isEqualToString:@"null"])
+            val=@"";
+        
+        
+        
+        CGRect frame;
+        frame.size = constraintval;
+        frame.origin.x=0;
+        frame.origin.y=0;
+        RTLabel* rtlabel = [[RTLabel alloc] initWithFrame:frame];
+        [rtlabel setLineBreakMode: RTTextLineBreakModeWordWrapping];
+        //        rtlabel.lineSpacing = 20.0;
+        [rtlabel setText: val];
+        CGSize sizeval=rtlabel.optimumSize;
+        
+        
+        CGSize sizekey = [key sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+        //           CGSize sizeval = [val sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintval lineBreakMode:NSLineBreakByWordWrapping];
+        float height = MAX(sizekey.height,sizeval.height);
+        height = MAX(height+LINE_WIDTH, DEF_CELL_HEIGHT);
+        
+        /*
+         NSString *text = [items objectAtIndex:[indexPath row]];
+         
+         CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
+         
+         CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
+         
+         CGFloat height = MAX(size.height, 44.0f);
+         
+         return height + (CELL_CONTENT_MARGIN * 2);
+         */
+        //        NSString *CellIdentifier = @"detail_item_kv";
+        //        DetailCellKV *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+        //        NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row];
+        //        cell.keyLabel.text=[item allKeys][0];
+        //        [cell.keyLabel sizeToFit];
+        //        cell.valLabel.text= [item valueForKey:cell.keyLabel.text];
+        //        [cell.valLabel sizeToFit];
+        //
+        //        return MAX(cell.keyLabel.frame.size.height,cell.valLabel.frame.size.height);
+        return height;
+    }
+    else
+    {
+          DebugLog(@"cellForRowAtIndexPath =====> list");
+        
+        float width = tableView.frame.size.width;
+        width-=CELL_MARGIN*2;
+        
+        CGSize constraintval = CGSizeMake(width, 20000.0f);//val label width is 60% cell width;
+        
+        NSDictionary* item = self.content.segments[indexPath.section];
+        
+        NSString* text=[item valueForKey:[NSString stringWithFormat:@"line%ld",(long)indexPath.row]];
+        
+        
+        
+        if([text isEqual:[NSNull null]])
+            text=@"";
+        if(text==nil)
+            text=@"";
+        if([text isEqualToString:@"null"])
+            text=@"";
+        
+        
+        
+        //        CGRect frame;
+        //        frame.size = constraintval;
+        //        frame.origin.x=0;
+        //        frame.origin.y=0;
+        
+        
+        CGSize sizeText = [text sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintval lineBreakMode:NSLineBreakByWordWrapping];
+        //           CGSize sizeval = [val sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintval lineBreakMode:NSLineBreakByWordWrapping];
+        float height = sizeText.height;
+        height = MAX(height+LINE_WIDTH, DEF_CELL_HEIGHT);
+        return height;
+        
+    }
+    
+    
+    //    return height;
+}
+
+- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
+    myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)];
+    titleLabel.textColor=[UIColor whiteColor];
+    titleLabel.backgroundColor = [UIColor clearColor];
+    titleLabel.text =[self.content get_segmentname:section];
+    [titleLabel sizeToFit];
+    [myView addSubview:titleLabel];
+    
+    return myView;
+}
+
+//- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
+//{
+//    UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
+//    myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+////    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)];
+////    titleLabel.textColor=[UIColor whiteColor];
+////    titleLabel.backgroundColor = [UIColor grayColor];
+////    titleLabel.text =[self.content get_segmentname:section];
+////    [titleLabel sizeToFit];
+////    [myView addSubview:titleLabel];
+//
+//    return myView;
+//}
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    
+      DebugLog(@"numberOfSectionsInTableView=%ld",[self.content get_segmentcount]);
+    return [self.content get_segmentcount];
+    
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+      DebugLog(@"numberOfRowsInSection=%d",[self.content get_itemcount:section]);
+    return [self.content get_itemcount:section];
+    
+}
+- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+      DebugLog(@"titleForHeaderInSection=%@",[self.content get_segmentname:section]);
+    return [self.content get_segmentname:section];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    
+    
+    
+    //    NSString *CellIdentifier = @"testcell";
+    //    return [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+    
+    
+    NSString* type = [self.content get_segmenttype:indexPath.section];
+    
+    
+    
+    if([type isEqualToString:@"table"])
+    {
+          DebugLog(@"cellForRowAtIndexPath =====> table");
+        
+        static NSString *CellIdentifier = @"detail_item_web";
+        
+        DetailCellWeb *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+        NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row];
+        NSString* tablecontent = [item valueForKey:@"content"];
+        cell.webView.tag = indexPath.section;
+        //        cell.webView.scrollView.contentSize.height = 0;
+        cell.webView.scrollView.bounces=NO;
+        cell.webView.scrollView.directionalLockEnabled = true;
+        CGSize size= cell.webView.scrollView.contentSize;
+        size.height=10;
+        cell.webView.scrollView.contentSize=size;
+        
+        //        nsstring* c = [NSString stringwith]
+        //       NSString *filePath = [[NSBundle mainBundle]pathForResource:@"about" ofType:@"htm"];
+        //        NSString *htmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
+        
+        
+        [cell.webView loadHTMLString:tablecontent baseURL:nil];
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//            
+//            wait(5000);
+//              DebugLog(@"!!!!!!!!!!!!!!!!!!!!!!!!!!!webview  section=%ld   height=%f",indexPath.section,cell.webView.scrollView.contentSize.height);
+//           
+////              DebugLog(@"url:%@", [self.webView stringByEvaluatingJavaScriptFromString:@"window.location.href;"]);       // shows google.com instead of about:blank
+//        });
+        
+        
+        
+        //        CGRect rect = cell.webView.frame;
+        //        [self.content set_itemheight:cell.webView.frame.size.height AtIndexPath:indexPath];
+        //        [cell.webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:filePath]];
+        return cell;
+    }
+    else if([type isEqualToString:@"mapping"])
+    {
+        float width = tableView.frame.size.width;
+        
+        width-=CELL_MARGIN*2;
+        CGSize constraintkey = CGSizeMake(width*0.4-2*LABEL_MARGIN, 20000.0f);//key label width is 40% cell width;
+        CGSize constraintval = CGSizeMake(width*0.6-2*LABEL_MARGIN, 20000.0f);//val label width is 60% cell width;
+        NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row];
+        NSString* key =[item allKeys][0];
+        //   [cell.keyLabel sizeToFit];
+        NSString* val=[item valueForKey:key];
+        if([val isEqual:[NSNull null]])
+            val=@"";
+        if(val==nil)
+            val=@"";
+        if([val isEqualToString:@"null"])
+            val=@"";
+        
+        
+        
+        
+        CGRect frame;
+        frame.size = constraintval;
+        frame.origin.x=0;
+        frame.origin.y=0;
+        RTLabel* rtlabel = [[RTLabel alloc] initWithFrame:frame];
+        [rtlabel setLineBreakMode: RTTextLineBreakModeWordWrapping];
+        //        rtlabel.lineSpacing = 20.0;
+        [rtlabel setText: val];
+        CGSize sizeval=rtlabel.optimumSize;
+        CGSize sizekey = [key sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+        //        CGSize sizeval = [val sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintval lineBreakMode:NSLineBreakByWordWrapping];
+//          DebugLog(@"tableView width:%f",width);
+//        
+//          DebugLog(@"key width= %f val width = %f",constraintkey.width,constraintval.width);
+//          DebugLog(@"key = %@ val = %@",key,val);
+        float height = MAX(sizekey.height,sizeval.height);
+        height = MAX(height, DEF_CELL_HEIGHT-LINE_WIDTH);
+        sizekey.height = height;
+        sizekey.width = constraintkey.width;
+       // sizeval.height = height;
+        sizeval.width =constraintval.width;
+        
+        NSString *CellIdentifier = @"detail_item_kv";
+        DetailCellKV *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+        if(cell==nil)
+              DebugLog(@"cell is nil.........................");
+        
+        
+        //        CGRect framekey ;
+        //        framekey.origin.x=CELL_MARGIN;
+        //        framekey.origin.y=LINE_WIDTH;
+        //        framekey.size = sizekey;
+        //        UILabel* keyLabel = [[UILabel alloc]initWithFrame:framekey];
+        //        keyLabel.lineBreakMode = NSLineBreakByWordWrapping;
+        //        keyLabel.backgroundColor = [UIColor grayColor];
+        //        keyLabel.text = key;
+        //
+        //        CGRect frameval;
+        //        frameval.origin.x=constraintkey.width+CELL_MARGIN;
+        //        frameval.origin.y=LINE_WIDTH;
+        //        frameval.size = sizeval;
+        //
+        //        UILabel* valLabel = [[UILabel alloc]initWithFrame:frameval];
+        //         valLabel.lineBreakMode = NSLineBreakByWordWrapping;
+        //        valLabel.text = val;
+        //
+        //        for(UIView* v in cell.contentView.subviews)
+        //        {
+        //            [v removeFromSuperview];
+        //
+        //        }
+        //
+        //        [cell.contentView addSubview:keyLabel];
+        //        [cell.contentView addSubview:valLabel];
+        
+        
+        CGRect framekey = cell.keyLabel.frame;
+        framekey.origin.x=CELL_MARGIN+LABEL_MARGIN;
+        framekey.origin.y=LINE_WIDTH;
+        framekey.size = sizekey;
+        cell.keyLabel.frame = framekey;
+        cell.keyLabel.text=key;
+        CGRect frameval = cell.valLabel.frame;
+        frameval.origin.x=constraintkey.width+CELL_MARGIN+3*LABEL_MARGIN; //2 margin for key 1 margin for value self
+        frameval.origin.y=LINE_WIDTH;
+        frameval.size = sizeval;
+        cell.valLabel.frame = frameval;
+        //        [cell.valLabel setTextAlignment:RTTextAlignmentCenter];
+        cell.valLabel.text= val;
+        CGPoint rcenter;
+        rcenter.x = width * 0.4+width * 0.6/2;
+        rcenter.y = height /2;
+        cell.valLabel.center=rcenter;
+//        cell.valLabel.backgroundColor =[UIColor redColor];
+        
+//        cell.contentView.superview.backgroundColor = [UIColor clearColor];
+//        cell.backgroundColor = [UIColor whiteColor];
+        UIView * lineview = [[LineView alloc] initWithFrame:cell.contentView.frame];
+        lineview.userInteractionEnabled = NO;// 不设为NO会屏蔽cell的点击事件
+        lineview.backgroundColor = [UIColor clearColor];// 设为透明从而使得cell.backgroundColor有效.
+        lineview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+        [cell.contentView addSubview:lineview];// cell.contentView是个readonly属性,所以别想着替换contentView了.
+
+        
+        
+        //   [cell.valLabel sizeToFit];
+        //        cell.anameLabel.text = [field valueForKey:@"aname"];
+        //        [cell.anameLabel sizeToFit];
+        //          DebugLog(@"cellForRowAtIndexPath%@",[field valueForKey:@"aname"]);
+        // Configure the cell...
+        //        CGRect rect = cell.frame;
+        //        [self.content set_itemheight:100 AtIndexPath:indexPath];
+        return cell;
+    }
+    else
+    {
+          DebugLog(@"cellForRowAtIndexPath =====> list");
+        
+        static NSString *CellIdentifier = @"detail_item_list";
+        
+        
+        
+        float width = tableView.frame.size.width;
+        
+        width-=CELL_MARGIN*2;
+        CGSize constraintkey = CGSizeMake(width, 20000.0f);//key label width is 40% cell width;
+        
+        NSDictionary* item = self.content.segments[indexPath.section];
+        
+        NSString* val=[item valueForKey:[NSString stringWithFormat:@"line%ld",(long)indexPath.row]];
+        
+        if([val isEqual:[NSNull null]])
+            val=@"";
+        if(val==nil)
+            val=@"";
+        if([val isEqualToString:@"null"])
+            val=@"";
+        
+        
+        
+        
+        
+        CGSize sizeval = [val sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+        
+        
+        float height = sizeval.height;
+        height = MAX(height, DEF_CELL_HEIGHT-LINE_WIDTH);
+        sizeval.height = height;
+        sizeval.width = constraintkey.width;
+        
+        
+        
+        
+        
+        
+        
+        
+        //创建cell
+        DetailCellList *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+        CGRect framekey = cell.listLabel.frame;
+        framekey.origin.x=CELL_MARGIN;
+        framekey.origin.y=LINE_WIDTH;
+        framekey.size = sizeval;
+        cell.listLabel.frame = framekey;
+        cell.listLabel.text= val;
+        
+        
+        
+        return cell;
+        
+    }
+    return nil;
+}
+
+@end

+ 19 - 0
Apex Mobile/Apex Mobile/DetailTabBarController.h

@@ -0,0 +1,19 @@
+//
+//  DetailTabBarController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "DetailPageViewController.h"
+#import "SearchViewController.h"
+#import "Constant.h"
+
+@interface DetailTabBarController : UITabBarController
+@property (strong,nonatomic) NSString* function_name;
+@property (strong,nonatomic) NSMutableDictionary* params;
+@property (strong,nonatomic) NSArray * actions;
+-(id) init :(NSString*) function_name actions:(NSArray*)actions params:(NSMutableDictionary*)params;
+@end

+ 168 - 0
Apex Mobile/Apex Mobile/DetailTabBarController.m

@@ -0,0 +1,168 @@
+//
+//  DetailTabBarController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-7.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+ 
+#import "DetailTabBarController.h"
+
+@interface DetailTabBarController ()
+
+@end
+
+@implementation DetailTabBarController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+
+    }
+    return self;
+}
+-(id) init :(NSString*) function_name actions:(NSArray*)actions params:(NSMutableDictionary*)params
+{
+    self = [super init];
+    if (self) {
+         DebugLog(@"DetailTabBarController init.................");
+
+        
+        
+//        UITabBar *tabBar = self.tabBar;
+//        [tabBar setTintColor:[UIColor redColor]];
+        
+//        [tabBar setTintColor:[UIColor colorWithRed:0.0
+//                                             green:176.0/255.0
+//                                              blue:226.0/255.0
+//                                             alpha:1.0]];
+//        tabBar.selectedImageTintColor = [UIColor clearColor];
+//        UITabBarItem *item = [tabBar.items objectAtIndex:0];
+//        NSString *homePath = [[NSBundle mainBundle] pathForResource:@"btn_home_highlight" ofType:@"png"];
+//        if(item.tag == 1)
+//        {
+//            [item setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
+//                                          [UIColor lightGrayColor], UITextAttributeTextColor, nil]
+//                                forState:UIControlStateNormal];
+//            item.selectedImage = [UIImage imageWithContentsOfFile:homePath];
+//        }
+        
+        self.actions = actions;
+        self.function_name = function_name;
+        self.params = params;
+        
+        
+        NSString* title=@"";
+        if([self.function_name isEqualToString:@"Ocean Booking"])
+            title = @"Booking Detail";
+        else if([self.function_name isEqualToString:@"Ocean B/L info."])
+            title = @"B/L info. Detail";
+        else if([self.function_name isEqualToString:@"Container detail"])
+            title = @"Container Detail";
+        else if([self.function_name isEqualToString:@"Download Document"])
+            title = @"Document Detail";
+        else if([self.function_name isEqualToString:@"Cargo Tracking"])
+            title = @"Cargo Detail";
+        
+        self.navigationItem.title = title;
+        
+        NSMutableArray* controllers = [[NSMutableArray alloc]init];
+        
+        if(self.actions.count==1)
+             self.tabBar.hidden = true;
+        for(int i=0;i<self.actions.count;i++)
+        {
+            
+            
+            NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
+            
+            
+            [params setValue:@"handset_search" forKey:@"action"];
+            [params setValue:self.actions[i] forKey:@"action_type"];
+            [params setValue:self.function_name forKey:@"module_name"];
+            [params setValue:[self.params valueForKey:@"id"] forKey:@"id"];
+            [params setValue:[self.params valueForKey:@"sessionid"] forKey:@"sessionid"];
+            
+            if([self.function_name isEqualToString:@"Cargo Tracking"])
+            {
+
+                if([[self.params valueForKey:@"criterion_type"] isEqualToString:@"0"])
+                   [params setValue:[self.params valueForKey:@"cargo_criterion"] forKey:@"hbol"];
+                else
+                   [params setValue:[self.params valueForKey:@"cargo_criterion"] forKey:@"container_no"];
+               
+             
+            }
+            
+//            testViewController * one = [[testViewController alloc] init];
+            
+            UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:[NSBundle mainBundle]];
+            DetailPageViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"DetailPageViewController"];
+            
+            
+
+//            DetailPageViewController *one = [[DetailPageViewController alloc]init];
+            one.function_name = self.function_name;
+            one.params = params;
+            [one setTitle:self.actions[i]];
+            one.tabBarItem = [[UITabBarItem alloc] initWithTitle:self.actions[i] image:nil tag:i];//[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:0];
+            [one.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
+                                          [UIFont systemFontOfSize:12.0], NSFontAttributeName, nil]
+                                forState:UIControlStateNormal];
+         //   one.tabBarItem set
+//            [one.tabBarItem setSelectedImage:[UIImage imageNamed:@"tag-3.png"]];
+            UIOffset offset;
+            offset.horizontal = 0;
+            offset.vertical = -15;
+            [one.tabBarItem setTitlePositionAdjustment:offset];
+//            one.tabBarItem set
+            
+            [controllers addObject:one];
+        }
+        
+        self.viewControllers = controllers;
+        UIImage* img = [UIImage imageNamed:@"test1.png"];
+        UIImage * idimage=[img resizableImageWithCapInsets:UIEdgeInsetsMake(1.0f, 30.0f, 300.0f, 30.0f)];
+        //tabBarController.tabBar.selectionIndicatorImage = idicImage;
+//        [self.tabBar setTintColor:[UIColor redColor]];
+//        [self.tabBar setItemSpacing:0];
+//        [self.tabBar setBarTintColor:[UIColor greenColor]];
+//        [self.tabBar setSelectedImageTintColor:[UIColor purpleColor]];
+        self.tabBar.selectionIndicatorImage =idimage;
+        
+        
+        //        NSMutableArray* controllers = [[NSMutableArray alloc]init];
+        //
+        //        for(int i=0;i<self.actions.count;i++)
+        //        {
+        //            DetailPageViewController *tab = [[DetailPageViewController alloc]init];
+        //            [tab setTitle:self.actions[i]];
+        //            tab.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:i];
+        //            [controllers addObject:tab];
+        //
+        //        }
+        //        self.viewControllers = controllers;
+        //
+        
+        //        UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"asdfsadf" image:[UIImage imageNamed:@"first.png"] tag:1];
+        //        self.tabBarItem = item;
+    }
+    return self;
+}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    
+
+
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+@end

+ 19 - 0
Apex Mobile/Apex Mobile/FunctionSelectViewController.h

@@ -0,0 +1,19 @@
+//
+//  FunctionSelectViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-25.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "SearchViewController.h"
+#import "DetailTabBarController.h"
+
+@interface FunctionSelectViewController : UIViewController<UITextFieldDelegate>
+@property (strong,nonatomic) NSString * content;
+@property (strong, nonatomic) IBOutlet UIButton *radioHbol;
+@property (strong, nonatomic) IBOutlet UIButton *radioContainer;
+@property (strong, nonatomic) IBOutlet UITextField *edit;
+
+@end

+ 168 - 0
Apex Mobile/Apex Mobile/FunctionSelectViewController.m

@@ -0,0 +1,168 @@
+//
+//  FunctionSelectViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-2-25.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+ 
+#import "FunctionSelectViewController.h"
+
+@interface FunctionSelectViewController ()
+
+@end
+
+@implementation FunctionSelectViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+    }
+    return self;
+}
+- (IBAction)onButtonClick:(UIButton *)sender {
+    
+     DebugLog(@"onButtonClick%@",sender.restorationIdentifier);
+//    sender.restorationIdentifier
+    
+    
+    
+    NSString *function_name;
+    //= [sender currentTitle];
+    
+    switch (sender.tag) {
+        case 101:
+            function_name = @"Ocean Booking";
+            break;
+        case 102:
+            function_name = @"Ocean B/L info.";
+            break;
+        case 103:
+            function_name = @"Container detail";
+            break;
+        case 104:
+            function_name = @"Download Document";
+            
+        default:
+            break;
+    }
+    
+    SearchViewController *searchViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SearchViewController"];
+    searchViewController.function_name = function_name;
+    [self.navigationController pushViewController:searchViewController animated:YES];
+
+    
+}
+- (BOOL)shouldAutorotate
+{
+    return YES;
+}
+- (IBAction)onResetClick:(UIButton *)sender {
+    self.edit.text=@"";
+}
+- (IBAction)onHbolClick:(UIButton *)sender {
+    self.radioContainer.selected = false;
+    sender.selected = true;
+}
+- (IBAction)onContainerClick:(UIButton *)sender {
+    self.radioHbol.selected = false;
+    sender.selected = true;
+}
+- (IBAction)onSearchClick:(UIButton *)sender {
+    
+    NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
+    
+    [params setObject:@"dumb" forKey:@"id"];
+    if(self.radioContainer.selected==true)
+        [params setObject:@"1" forKey:@"criterion_type"];
+    else
+        [params setObject:@"0" forKey:@"criterion_type"];
+    NSString * cargo_criterion = self.edit.text;
+    if(cargo_criterion==nil)
+        cargo_criterion=@"";
+    [params setObject:cargo_criterion forKey:@"cargo_criterion"];
+    
+    DetailTabBarController *detailViewController=[[DetailTabBarController alloc] init:@"Cargo Tracking" actions:[NSArray arrayWithObjects:@"Tracking",nil] params:params];
+    [self.navigationController pushViewController:detailViewController animated:YES];
+    
+
+/*
+ 
+ Intent intent = new Intent();
+ intent.setClass(this, DetailActivity.class);
+ 
+ intent.putExtra("action0", );
+ intent.putExtra("function_name", );
+ 
+ intent.putExtra("cargo_criterion", cargo_criterion);
+ intent.putExtra("actions_count", 1);
+ intent.putExtra("_id", "dumb");
+ String h_field;
+ RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1);
+ if (rg.getCheckedRadioButtonId() == R.id.radio0)
+ {
+ intent.putExtra("criterion_type", 0);
+ h_field = "hbol";
+ }
+ else
+ {
+ intent.putExtra("criterion_type", 1);
+ h_field = "container_no";
+ }
+ String user = ApexTrackingApplication.get_user();
+
+ startActivity(intent);
+ */
+    
+    
+}
+- (IBAction)onExit:(UIButton *)sender {
+    exit(0);
+}
+-(BOOL)textFieldShouldReturn:(UITextField *)textField {
+    
+    [textField resignFirstResponder];
+    return YES;
+}
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
+    [[self view] endEditing:YES];
+}
+
+- (NSUInteger)supportedInterfaceOrientations
+{
+    return UIInterfaceOrientationMaskPortrait;
+}
+
+- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+{
+    return UIInterfaceOrientationPortrait;
+}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    
+    self.navigationItem.leftBarButtonItem.tintColor  = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
+    
+    UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom];
+    btn.frame = CGRectMake(0, 0, 129, 32);
+    [btn setImage:[UIImage imageNamed:@"apexlogo-2.png"] forState:UIControlStateNormal  ];
+    UIBarButtonItem*   aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
+    self.navigationItem.leftBarButtonItem = aBarButtonItem;
+    [self.radioContainer setImage:[UIImage imageNamed:@"unchecked_32.png"] forState:UIControlStateNormal];
+    [self.radioContainer setImage:[UIImage imageNamed:@"checked_32.png"] forState:UIControlStateSelected];
+    
+    [self.radioHbol setImage:[UIImage imageNamed:@"unchecked_32.png"] forState:UIControlStateNormal];
+    [self.radioHbol setImage:[UIImage imageNamed:@"checked_32.png"] forState:UIControlStateSelected];
+	// Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+@end

+ 62 - 0
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,62 @@
+{
+  "images" : [
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "apex58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "apex80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "apex120.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "apex29.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "apex58-1.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "apex40.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "apex80-1.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "apex76.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "apex152.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex120.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex152.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex29.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex40.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex58-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex58.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex76.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex80-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/AppIcon.appiconset/apex80.png


+ 51 - 0
Apex Mobile/Apex Mobile/Images.xcassets/LaunchImage.launchimage/Contents.json

@@ -0,0 +1,51 @@
+{
+  "images" : [
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "subtype" : "retina4",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 18 - 0
Apex Mobile/Apex Mobile/Images.xcassets/apexlogo-2.imageset/Contents.json

@@ -0,0 +1,18 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "apexlogo-2.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "apexlogo-2-1.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/apexlogo-2.imageset/apexlogo-2-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/apexlogo-2.imageset/apexlogo-2.png


+ 18 - 0
Apex Mobile/Apex Mobile/Images.xcassets/bg_3.imageset/Contents.json

@@ -0,0 +1,18 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "bg_3.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "bg_3-1.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/bg_3.imageset/bg_3-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/bg_3.imageset/bg_3.png


+ 18 - 0
Apex Mobile/Apex Mobile/Images.xcassets/bg_4.imageset/Contents.json

@@ -0,0 +1,18 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "bg_3-1.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "bg_3.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/bg_4.imageset/bg_3-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/bg_4.imageset/bg_3.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/bulb-2.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "bulb-2.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/bulb-2.imageset/bulb-2.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/bullet.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "bullet.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/bullet.imageset/bullet.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/checked_32.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "checked_32.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/checked_32.imageset/checked_32.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ellipsis.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ellipsis.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ellipsis.imageset/ellipsis.png


+ 18 - 0
Apex Mobile/Apex Mobile/Images.xcassets/first.imageset/Contents.json

@@ -0,0 +1,18 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "first.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "first@2x.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/first.imageset/first.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/first.imageset/first@2x.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_about.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_about.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_about.imageset/ic_about.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_cargo_tracking.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_cargo_tracking.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_cargo_tracking.imageset/ic_cargo_tracking.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_container_detail.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_container_detail.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_container_detail.imageset/ic_container_detail.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_down_doc.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_down_doc.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_down_doc.imageset/ic_down_doc.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_exit.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_exit.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_exit.imageset/ic_exit.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_marker.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x",
+      "filename" : "ic_marker.png"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_marker.imageset/ic_marker.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_ocean_blinfo.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_ocean_blinfo.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_ocean_blinfo.imageset/ic_ocean_blinfo.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_oceanbooking.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_oceanbooking.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_oceanbooking.imageset/ic_oceanbooking.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_password.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_password.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_password.imageset/ic_password.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/ic_service_location.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "ic_service_location.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/ic_service_location.imageset/ic_service_location.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/in.imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "in.png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/in.imageset/in.png


+ 17 - 0
Apex Mobile/Apex Mobile/Images.xcassets/map (1).imageset/Contents.json

@@ -0,0 +1,17 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x",
+      "filename" : "map (1).png"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff