Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. var ajax_url= krms_driver_config.ApiUrl ;
  4. var dialog_title_default= krms_driver_config.DialogDefaultTitle;
  5. var search_address;
  6. var ajax_request;
  7. var networkState;
  8. var reload_home;
  9. var translator;
  10.  
  11. var ajax_request2;
  12. var ajax_request3;
  13. var map;
  14. var watchID;
  15.  
  16. var gaPlugin;
  17.  
  18. jQuery.fn.exists = function(){return this.length>0;}
  19.  
  20. function dump(data)
  21. {
  22.     console.debug(data);
  23. }
  24.  
  25. function setStorage(key,value)
  26. {
  27.     localStorage.setItem(key,value);
  28. }
  29.  
  30. function getStorage(key)
  31. {
  32.     return localStorage.getItem(key);
  33. }
  34.  
  35. function removeStorage(key)
  36. {
  37.     localStorage.removeItem(key);
  38. }
  39.  
  40. function explode(sep,string)
  41. {
  42.     var res=string.split(sep);
  43.     return res;
  44. }
  45.  
  46. function urlencode(data)
  47. {
  48.     return encodeURIComponent(data);
  49. }
  50.  
  51. function empty(data)
  52. {
  53.     if (typeof data === "undefined" || data==null || data=="" ) {
  54.         return true;
  55.     }
  56.     return false;
  57. }
  58.  
  59. function isDebug()
  60. {
  61.     //on/off
  62.     //return true;
  63.     return false;
  64. }
  65.  
  66. function hasConnection()
  67. {  
  68.     if (isDebug()){
  69.         return true;
  70.     }
  71.     var networkState = navigator.connection.type;  
  72.     if ( networkState=="Connection.NONE" || networkState=="none"){ 
  73.         return false;
  74.     }  
  75.     return true;
  76. }
  77.  
  78. $( document ).on( "keyup", ".numeric_only", function() {
  79.   this.value = this.value.replace(/[^0-9\.]/g,'');
  80. });  
  81.  
  82. /*START DEVICE READY*/
  83. document.addEventListener("deviceready", function() {
  84.    
  85.     navigator.splashscreen.hide();
  86.    
  87.     if ( !empty(krms_driver_config.PushProjectID)) {
  88.        
  89.         var push = PushNotification.init({
  90.             "android": {
  91.                 "senderID": krms_driver_config.PushProjectID
  92.             },         
  93.             "ios": {"alert": "true", "badge": "true", "sound": "true", "clearBadge": "true" },
  94.             "windows": {}
  95.         });
  96.        
  97.         push.on('registration', function(data) {                
  98.             setStorage("device_id", data.registrationId );
  99.             setStorage("device_platform", device.platform );                           
  100.         });
  101.        
  102.         push.on('notification', function(data) {   
  103.              //alert(JSON.stringify(data));
  104.              //switch (data.additionalData.additionalData.push_type)
  105.              if ( data.additionalData.foreground ){
  106.                  //when the app is active
  107.                  setBaloon();
  108.                  playNotification();                 
  109.                  switch ( data.additionalData.data.actions )
  110.                  {
  111.                     case "ASSIGN_TASK":
  112.                     case "CANCEL_TASK":
  113.                     case "UPDATE_TASK":
  114.                     if( $('#home').is(':visible') ){
  115.                         getTodayTask('');
  116.                     }
  117.                     toastMsg( data.message );          
  118.                     break;
  119.                    
  120.                     case "private":
  121.                     case "bulk":
  122.                     onsenAlert( data.message );
  123.                     break;
  124.                    
  125.                     default:
  126.                     toastMsg( data.message );          
  127.                     break;
  128.                    
  129.                  }
  130.              } else {                
  131.                  //when the app is not active
  132.                  setBaloon();                
  133.                  switch ( data.additionalData.data.actions )
  134.                  {
  135.                     case "ASSIGN_TASK":
  136.                     case "CANCEL_TASK":
  137.                     case "UPDATE_TASK":
  138.                     if( $('#home').is(':visible') ){
  139.                         getTodayTask('');
  140.                     }
  141.                     toastMsg( data.message );
  142.                     break;
  143.                                        
  144.                     case "private":
  145.                     case "bulk":
  146.                     onsenAlert( data.message );
  147.                     break;
  148.                    
  149.                     default:
  150.                     toastMsg( data.message );          
  151.                     break;
  152.                  }
  153.              }
  154.         });    
  155.        
  156.         push.finish(function () {
  157.            //alert('finish successfully called');
  158.         });
  159.            
  160.         push.on('error', function(e) {
  161.            //onsenAlert("push error");
  162.         });  
  163.     }
  164.  
  165.     // Android customization
  166.     cordova.plugins.backgroundMode.setDefaults({
  167.         title:'BeeGo Entregador',
  168.         text:'Online',
  169.         resume: true,
  170.         color: "eba820",
  171.     });
  172.     // Enable background mode
  173.     cordova.plugins.backgroundMode.enable();
  174.  
  175.     // Called when background mode has been activated
  176.     cordova.plugins.backgroundMode.onactivate = function () {
  177.         setTimeout(function () {
  178.             // Modify the currently displayed notification
  179.             cordova.plugins.backgroundMode.configure({
  180.                 text:'Online'
  181.             });
  182.         }, 5000);
  183.     }
  184.    
  185.  }, false);
  186. /*END DEVICE READY*/
  187.  
  188. // set device
  189. ons.platform.select('android');
  190. //ons.platform.select('ios');
  191.  
  192. ons.ready(function() {
  193.    
  194.     /*ons.setDefaultDeviceBackButtonListener(function() {          
  195.     });*/  
  196.        
  197. }); /*end ready*/
  198.  
  199.  
  200. function setBaloon()
  201. {
  202.     var push_count = getStorage("push_count");
  203.     if(empty(push_count)){
  204.         push_count=0;
  205.     }
  206.     push_count=parseInt(push_count)+1;
  207.     dump('setbaloon=>'+push_count);
  208.     if (!empty(push_count)){
  209.         if (push_count>0){
  210.             setStorage("push_count", push_count ); 
  211.             $(".baloon-notification").html(push_count);
  212.             $(".baloon-notification").show();
  213.         }
  214.     }
  215. }
  216.  
  217. document.addEventListener("offline", noNetConnection, false);
  218.  
  219. function noNetConnection()
  220. {
  221.     toastMsg( getTrans("Internet connection lost","net_connection_lost") );
  222. }
  223.  
  224. document.addEventListener("online", hasNetConnection, false);
  225.  
  226. function hasNetConnection()
  227. {  
  228.     //toastMsg( getTrans("Connected","connected") );
  229.     //callAjax("DeviceConnected",'');
  230. }
  231.  
  232. document.addEventListener("backbutton", function (e) {     
  233.    if( $('#pageLogin').is(':visible') ){
  234.    
  235.      if( $('.alert-dialog-container').is(':visible') ){
  236.        
  237.      } else {
  238.         ons.notification.confirm({
  239.           message: getTrans("Are you sure to close the app?","close_app") ,  
  240.           title: dialog_title_default ,      
  241.           buttonLabels: [ getTrans("Yes","yes") ,  getTrans("No","no") ],
  242.           animation: 'default', // or 'none'
  243.           primaryButtonIndex: 1,
  244.           cancelable: true,
  245.           callback: function(index) {    
  246.                e.preventDefault();        
  247.                if (index==0){            
  248.                     if (navigator.app) {
  249.                        navigator.app.exitApp();
  250.                     } else if (navigator.device) {
  251.                        navigator.device.exitApp();
  252.                     } else {
  253.                        window.close();
  254.                     }
  255.                } else {
  256.                    return false;
  257.                }
  258.           }
  259.         });  
  260.      }
  261.    
  262.    } else if ( $('#home').is(':visible') ){
  263.      
  264.        if( $('.alert-dialog-container').is(':visible') ){
  265.        } else {
  266.            ons.notification.confirm({
  267.               message: getTrans("Are you sure you want to logout?","logout_confirm") ,   
  268.               title: dialog_title_default ,          
  269.               buttonLabels: [ getTrans("Yes","yes") ,  getTrans("No","no") ],
  270.               animation: 'default', // or 'none'
  271.               primaryButtonIndex: 1,
  272.               cancelable: true,
  273.               callback: function(index) {  
  274.                    e.preventDefault();        
  275.                    if (index==0){                                            
  276.                        Logout();               
  277.                    } else {
  278.                        return false;   
  279.                    }
  280.               }
  281.             });
  282.         }
  283.        
  284.    } else if ( $('#taskDetails').is(':visible') ){        
  285.        //sNavigator.popPage({cancelIfRunning: true});
  286.        kNavigator.popPage().then(function() {
  287.             reloadHome();                      
  288.        });     
  289.    } else {      
  290.        navigator.app.backHistory();
  291.    }
  292. }, false); 
  293.  
  294. function refreshCon(action , params)
  295. {
  296.     if(empty(params)){
  297.         params='';
  298.     }
  299.     dump(action);
  300.     if (hasConnection()){
  301.         callAjax(action,params)
  302.     }
  303. }
  304.  
  305. document.addEventListener("show", function(event) {
  306.     dump( "page id show :" + event.target.id );
  307.     switch (event.target.id){      
  308.         case "pageLogin":  
  309.         if ( isAutoLogin()!=1){        
  310.             checkGPS();
  311.         }  
  312.         break;             
  313.        
  314.         case "home":   
  315.             checkGPS();
  316.         break; 
  317.     }  
  318. }, false);
  319.  
  320. document.addEventListener("init", function(event) {
  321.          dump( "page id :" + event.target.id );
  322.          
  323.          switch (event.target.id) {      
  324.             /* document.getElementById("onduty").addEventListener('change', function(e) {
  325.                    console.log('click', e.target.isInteractive );
  326.              });*/
  327.            
  328.             case "Map":          
  329.               dump('init map');          
  330.             break;
  331.                                    
  332.             case "Notification":
  333.               callAjax('GetNotifications','');
  334.              
  335.                var pullHook = document.getElementById('pull-hook-notification');
  336.                pullHook.onAction = function(done) {                          
  337.                       AjaxNotification("GetNotifications",'',done);
  338.                  };
  339.                  pullHook.addEventListener('changestate', function(event) {
  340.                       var message = '';
  341.                        dump(event.state);
  342.                        switch (event.state) {
  343.                           case 'initial':
  344.                             message = '<ons-icon size="35px" icon="ion-arrow-down-a"></ons-icon> Pull down to refresh';
  345.                             break;
  346.                           case 'preaction':
  347.                             message = '<ons-icon size="35px" icon="ion-arrow-up-a"></ons-icon> Release';
  348.                             break;
  349.                           case 'action':
  350.                             message = '<ons-icon size="35px" spin="true" icon="ion-load-d"></ons-icon> Loading...';
  351.                             break;
  352.                       }
  353.                       pullHook.innerHTML = message;
  354.                 });
  355.              
  356.             break;
  357.            
  358.             case "Signature":
  359.             case "profile":        
  360.             TransLatePage();
  361.             break;
  362.            
  363.             case "pageGetSettings":    
  364.                            
  365.             if (isDebug()){
  366.                 if ( hasConnection()){
  367.                     callAjax("GetAppSettings",'');
  368.                 } else {               
  369.                    toastMsg( getTrans("Not connected to internet","no_connection") );
  370.                    $(".loading_settings").html( getTrans("Not connected to internet","no_connection") );
  371.                    $(".refresh_net").show();
  372.                 }    
  373.             } else {
  374.                 document.addEventListener("deviceready", function() {              
  375.                    if ( hasConnection()){
  376.                        callAjax("GetAppSettings",'');
  377.                     } else {               
  378.                        toastMsg( getTrans("Not connected to internet","no_connection") );
  379.                        $(".loading_settings").html( getTrans("Not connected to internet","no_connection") );
  380.                        $(".refresh_net").show();
  381.                     }                
  382.                 }, false);
  383.             }
  384.            
  385.             break;
  386.            
  387.             case "page-login":
  388.             case "pageLogin":
  389.             if ( isAutoLogin()==1){
  390.                 $("#frm-login").hide();
  391.                 $(".login-header").hide();
  392.                 $(".auto-login-wrap").show();
  393.             }
  394.             TransLatePage();               
  395.             break;
  396.            
  397.             case "pageforgotpass":         
  398.             TransLatePage();
  399.             break;
  400.            
  401.             case "SettingPage":        
  402.             callAjax("GetSettings",'');
  403.             TransLatePage();
  404.             break;
  405.            
  406.             case "profilePage":        
  407.               TransLatePage();
  408.               callAjax("GetProfile",'');                         
  409.             break;         
  410.            
  411.             case "taskDetails":
  412.             case "viewTaskDescription":
  413.             $(".toolbar-title").html( getTrans("Getting info...",'getting_info')  );
  414.             break;
  415.            
  416.             case "CalendarView":
  417.             TransLatePage();
  418.             $('#calendar').fullCalendar({
  419.                 height: 500,
  420.                 header: {
  421.                     left: 'prev',
  422.                     center: 'title',
  423.                     right: 'next'
  424.                 },
  425.                 eventClick: function(calEvent, jsEvent, view) {
  426.                      //alert('Event: ' + calEvent.id);                   
  427.                 },
  428.                 dayClick: function(date, jsEvent, view) {                        
  429.                      kNavigator.popPage().then(function() {
  430.                          setStorage('kr_todays_date_raw', date.format() );
  431.                          //$(".todays_date").html( date.format('MMMM, DD') );                        
  432.                          //$(".todays_date").html( date.format('DD, MMMM') );                        
  433.                          $(".todays_date").html( date.format('DD/MM') );                         
  434.                          getTodayTask('');
  435.                      });                   
  436.                 },
  437.                 events: function (start, end, timezone, callback) {
  438.                     /*_start  = start.format('YYYY-MM-DD');
  439.                     _end  = end.format('YYYY-MM-DD');*/
  440.                     _start  = start.format('DD/MM/YYYY');
  441.                     _end  = end.format('DD/MM/YYYY');
  442.                     params="&start="+_start;
  443.                     params+="&end="+_end;
  444.                    
  445.                     if ( !hasConnection() ){
  446.                        toastMsg( getTrans("Not connected to internet",'no_connection') );  
  447.                        return;
  448.                     }
  449.                    
  450.                     dump(ajax_url+"/CalendarTask/?token=" + getStorage("kr_token") + params);
  451.                    
  452.                     $.ajax({
  453.                          type: "post",
  454.                           url: ajax_url+"/CalendarTask/?token=" + getStorage("kr_token") + params,
  455.                           dataType: 'jsonp',
  456.                           timeout: 6000,
  457.                           crossDomain: true,
  458.                           beforeSend: function() {
  459.                             loader.show();
  460.                           },
  461.                           success: function (data) {   
  462.                              hideAllModal();   
  463.                              if ( data.details.length>0){                            
  464.                                   var events = [];                           
  465.                                   $.each(data.details, function (i, task_day) {                                
  466.                                        events.push({
  467.                                             /*start: moment({
  468.                                                 year: task_day.year,
  469.                                                 month: task_day.month,
  470.                                                 day: task_day.day
  471.                                             }),*/
  472.                                             start : task_day.id,
  473.                                             title: task_day.title,
  474.                                             allDay: true,
  475.                                             id:task_day.id,
  476.                                             className:"total_task"
  477.                                         });
  478.                                   });
  479.                                   callback(events);
  480.                               }
  481.                           },
  482.                           error: function (request,error) {  
  483.                               hideAllModal();        
  484.                               dump('errr');  
  485.                           }
  486.                     });
  487.                 }
  488.             });
  489.             break;
  490.                        
  491.            
  492.             case "home":
  493.              var pullHook = document.getElementById('pull-hook');
  494.              pullHook.onAction = function(done) {      
  495.                   params="date="+ getStorage("kr_todays_date_raw");
  496.                   var onduty = document.getElementById('onduty').checked==true?1:2 ;   
  497.                   params+="&onduty="+onduty;
  498.                   AjaxTask("GetTaskByDate",params,done);
  499.              };
  500.              pullHook.addEventListener('changestate', function(event) {
  501.                   var message = '';
  502.                    dump(event.state);
  503.                    switch (event.state) {
  504.                       case 'initial':
  505.                         message = '<ons-icon size="35px" icon="ion-arrow-down-a"></ons-icon> Pull down to refresh';
  506.                         break;
  507.                       case 'preaction':
  508.                         message = '<ons-icon size="35px" icon="ion-arrow-up-a"></ons-icon> Release';
  509.                         break;
  510.                       case 'action':
  511.                         message = '<ons-icon size="35px" spin="true" icon="ion-load-d"></ons-icon> Loading...';
  512.                         break;
  513.                   }
  514.                   pullHook.innerHTML = message;
  515.              });
  516.              
  517.              break;                              
  518.                  
  519.      } /*end switch*/
  520.              
  521. }, false);
  522.  
  523.  
  524. function autoLogin()
  525. {
  526.     dump('autoLogin');
  527.     var kr_remember = getStorage("kr_remember");   
  528.     if ( kr_remember=="on"){
  529.         var kr_username=getStorage("kr_username");
  530.         var kr_password=getStorage("kr_password");
  531.         var kr_remember=getStorage("kr_remember");
  532.         if (!empty(kr_username) && !empty(kr_password)){
  533.             dump('auto login');
  534.             $("#frm-login").hide();
  535.             $(".login-header").hide();
  536.             $(".auto-login-wrap").show();
  537.             var params="username="+kr_username+"&password="+kr_password+"&remember="+kr_remember;
  538.            
  539.             params+="&device_id="+ getStorage("device_id");
  540.             params+="&device_platform="+ getStorage("device_platform");
  541.            
  542.             dump(params);
  543.             callAjax("login",params);
  544.         }
  545.     }
  546. }
  547.  
  548. function exitKApp()
  549. {
  550.     ons.notification.confirm({
  551.       message: getTrans("Are you sure to close the app?","close_app") ,  
  552.       title: dialog_title_default ,
  553.       buttonLabels: [ "Yes" ,  "No" ],
  554.       animation: 'default', // or 'none'
  555.       primaryButtonIndex: 1,
  556.       cancelable: true,
  557.       callback: function(index) {          
  558.            if (index==0){                        
  559.                 if (navigator.app) {
  560.                    navigator.app.exitApp();
  561.                 } else if (navigator.device) {
  562.                    navigator.device.exitApp();
  563.                 } else {
  564.                    window.close();
  565.                 }
  566.            }
  567.       }
  568.     });
  569. }
  570.  
  571. function showPage(page_id, action )
  572. {  
  573.     if (action==1){
  574.        popover.hide();
  575.     }
  576.     var options = {
  577.       animation: 'slide',
  578.       onTransitionEnd: function(){       
  579.       }
  580.     };  
  581.     kNavigator.pushPage(page_id, options);     
  582. }
  583.  
  584. /*mycall*/
  585. function callAjax(action,params)
  586. {
  587.     dump("action=>"+action);   
  588.    
  589.     if ( !hasConnection() ){
  590.         toastMsg( getTrans("Not connected to internet",'no_connection') ); 
  591.         return;
  592.     }
  593.    
  594.     params+="&lang_id="+getStorage("kr_lang_id");
  595.     if(!empty(krms_driver_config.APIHasKey)){
  596.         params+="&api_key="+krms_driver_config.APIHasKey;
  597.     }      
  598.     if ( !empty( getStorage("kr_token") )){    
  599.         params+="&token="+  getStorage("kr_token");
  600.     }
  601.    
  602.     dump(ajax_url+"/"+action+"?"+params);
  603.    
  604.     ajax_request = $.ajax({
  605.         url: ajax_url+"/"+action,
  606.         data: params,
  607.         type: 'post',                  
  608.         async: false,
  609.         dataType: 'jsonp',
  610.         timeout: 6000,
  611.         crossDomain: true,
  612.          beforeSend: function() {
  613.             if(ajax_request != null) {             
  614.                /*abort ajax*/
  615.                hideAllModal(); 
  616.                ajax_request.abort();
  617.             } else {    
  618.                 /*show modal*/             
  619.                 loader.show();             
  620.             }
  621.         },
  622.         complete: function(data) {                 
  623.             //ajax_request=null;    
  624.             ajax_request= (function () { return; })();                 
  625.             hideAllModal();    
  626.         },
  627.         success: function (data) { 
  628.            
  629.             dump(data);
  630.             if (data.code==1){
  631.                
  632.                 switch(action)
  633.                 {
  634.                     case "login":      
  635.                     dump('LOGIN OK');  
  636.                     setStorage("kr_username", data.details.username);
  637.                     setStorage("kr_password", data.details.password);
  638.                     setStorage("kr_remember", data.details.remember);
  639.                     setStorage("kr_todays_date", data.details.todays_date);
  640.                     setStorage("kr_todays_date_raw", data.details.todays_date_raw);
  641.                     setStorage("kr_token", data.details.token);
  642.                    
  643.                     setStorage("kr_location_accuracy", data.details.location_accuracy);
  644.                    
  645.                     kNavigator.pushPage("home.html", {
  646.                       animation: 'slide',
  647.                       callback: function(){                              
  648.                           $(".todays_date").html( getStorage("kr_todays_date") );
  649.                           if ( data.details.on_duty==1){
  650.                              onduty.checked=true;
  651.                              $(".duty_status").html( getTrans("On-Duty",'on_duty') );
  652.                           } else {
  653.                              onduty.checked=false;
  654.                              $(".duty_status").html( getTrans("Off-duty",'off_duty')  );
  655.                           }                  
  656.                                                  
  657.                           getTodayTask( data.details.todays_date_raw );
  658.                          
  659.                       }
  660.                     });
  661.                     break;
  662.                    
  663.                     case "ChangeDutyStatus":
  664.                       if ( data.details==1){
  665.                          $(".duty_status").html( getTrans("On-Duty",'on_duty') );
  666.                       } else {
  667.                          $(".duty_status").html( getTrans("Off-duty",'off_duty')  );
  668.                       }
  669.                     break;
  670.                    
  671.                     case "getTaskByDate":
  672.                     $(".no-task-wrap").hide();
  673.                     $("#task-wrapper").show();
  674.                     dump( 'fill task' );
  675.                     $("#task-wrapper").html( formatTask( data.details ) );             
  676.                     break;
  677.                    
  678.                     case "TaskDetails":
  679.                     $(".toolbar-title").html ( data.msg ) ;
  680.                     $("#task-details").html(
  681.                        formatTaskDetails(data.details) +
  682.                        TaskDetailsChevron_1(data.details)  +
  683.                        TaskDetailsChevron_2(data.details) +
  684.                        //OrderDetails(data.details) +
  685.                        TaskAddSignature( data.details ) +
  686.                        TaskDetailsChevron_3(data.details.history)
  687.                     );
  688.                    
  689.                     //show signature
  690.                    
  691.                     $("#task-action-wrap").html(
  692.                       swicthButtonAction( data.details.task_id, data.details.status_raw )
  693.                     );
  694.                                                            
  695.                     break;
  696.                    
  697.                     case "viewTaskDescription":
  698.                     $(".toolbar-title").html ( data.msg ) ;
  699.                     $("#task-description").html( taskDescription(data.details) );
  700.                     break;
  701.                    
  702.                    
  703.                     case "changeTaskStatus":
  704.                    
  705.                       reload_home=1;
  706.                       if ( data.details.reload_functions =="TaskDetails"){
  707.                            callAjax("TaskDetails",'task_id=' + data.details.task_id );
  708.                       }
  709.                       if ( data.details.reload_functions=="getTodayTask"){
  710.                            kNavigator.popPage().then(function() {
  711.                                 getTodayTask('');
  712.                            })
  713.                       }
  714.                      
  715.                       $("#task-action-wrap").html(
  716.                          swicthButtonAction( data.details.task_id, data.details.status_raw )
  717.                       );
  718.                      
  719.                     break;
  720.                    
  721.                     case "AddSignatureToTask":
  722.                         kNavigator.popPage().then(function() {                         
  723.                             callAjax("TaskDetails",'task_id=' + data.details );
  724.                         });
  725.                     break;
  726.                    
  727.                    
  728.                     case "GetProfile":
  729.                     $(".driver-fullname").html( data.details.full_name );
  730.                     $(".team-name").html( data.details.team_name );
  731.                     $(".driver-email").html( data.details.email );
  732.                     $(".phone").val( data.details.phone );
  733.                    
  734.                     $(".transport_type_id2").html( data.details.transport_type_id2 );
  735.                     $(".transport_description").val( data.details.transport_description );
  736.                     $(".licence_plate").val( data.details.licence_plate );
  737.                     $(".color").val( data.details.color );
  738.                    
  739.                     $(".transport_type_id").val( data.details.transport_type_id );
  740.                     switchTransportFields( data.details.transport_type_id );
  741.                    
  742.                     break;
  743.                    
  744.                    
  745.                     case "GetTransport":
  746.                       var html='';
  747.                       x=1;               
  748.                       $.each( data.details, function( key, val ) {                       
  749.                           html+=OptionListTransport('transport_type', key, val , x);
  750.                           x++;
  751.                       });
  752.                       $("#transport-list").html(  html );
  753.                     break;
  754.                    
  755.                     case "ProfileChangePassword":
  756.                       setStorage("kr_password", data.details);
  757.                       onsenAlert( data.msg );  
  758.                     break;
  759.                    
  760.                     //silent
  761.                     case "SettingPush":
  762.                     case "DeviceConnected":                
  763.                     break;
  764.                    
  765.                     case "GetSettings":
  766.                      
  767.                       device_id=getStorage('device_id');
  768.                       if (!empty(device_id)){
  769.                          $('.device_id').html( device_id );
  770.                       }
  771.                    
  772.                       if ( data.details.enabled_push==1){
  773.                           enabled_push.checked=true;
  774.                       } else {
  775.                           enabled_push.checked=false;
  776.                       }
  777.                      
  778.                       kr_lang_id=getStorage("kr_lang_id");
  779.                       if(!empty(kr_lang_id)){
  780.                           $(".language_selected").html( data.details.language[kr_lang_id] );
  781.                       }
  782.                      
  783.                     break;
  784.                    
  785.                     case "LanguageList":
  786.                      $("#language-list").html('');
  787.                      var html='';
  788.                       x=1;               
  789.                       $.each( data.details, function( key, val ) {                       
  790.                           html+=OptionListLanguage(val, val, val , x);
  791.                           x++;
  792.                       });
  793.                       $("#language-list").html(  html );
  794.                     break;
  795.                    
  796.                     case "GetAppSettings":
  797.                        dump('GetAppSettings');                             
  798.                        
  799.                        setStorage("kr_translation",JSON.stringify(data.details.translation));
  800.                        
  801.                        //set sounds url
  802.                        setStorage("notification_sound_url",data.details.notification_sound_url);
  803.                        
  804.                        // set the language id
  805.                        if ( empty( getStorage("kr_lang_id") )){
  806.                           setStorage("kr_lang_id","pt_br");  
  807.                        }
  808.                        
  809.                        var auto_login = isAutoLogin();
  810.                        
  811.                        if ( auto_login == 1) {         
  812.                            dump('execute auto login');                            
  813.                            kNavigator.pushPage("pagelogin.html", {
  814.                               animation: 'fade',
  815.                                callback: function(){       
  816.                                   var kr_username=getStorage("kr_username");
  817.                                   var kr_password=getStorage("kr_password");
  818.                                   var kr_remember=getStorage("kr_remember");                                 
  819.                                   var params="username="+kr_username+"&password="+kr_password;
  820.                                   params+="&remember="+kr_remember;
  821.                                  
  822.                                   params+="&device_id="+ getStorage("device_id");
  823.                                   params+="&device_platform="+ getStorage("device_platform");
  824.                                  
  825.                                   dump(params);
  826.                                   callAjax("login",params);
  827.                               }
  828.                            });
  829.                        } else {
  830.                            kNavigator.pushPage("pagelogin.html", {
  831.                               animation: 'fade',
  832.                               callback: function(){                          
  833.                               }
  834.                            });
  835.                        }
  836.                        
  837.                     break;
  838.                    
  839.                     case "ViewOrderDetails":
  840.                     $("#order-details").html( formatOrderDetails( data.details , data.msg ) );
  841.                     break;
  842.                    
  843.                     case "GetNotifications":                   
  844.                     $("#notifications-details").html( formatNotifications( data.details ) );
  845.                     clearPushCount();
  846.                     TransLatePage();                   
  847.                     break;
  848.                    
  849.                    
  850.                     case "clearNofications":
  851.                     $("#notifications-details").html('');  
  852.                     clearPushCount();
  853.                     break;
  854.                    
  855.                     case "Logout":
  856.                     removeStorage('kr_token');
  857.                     break;
  858.                    
  859.                     default:
  860.                     onsenAlert( data.msg );
  861.                     break;
  862.                 }
  863.                
  864.             } else { // failed
  865.                
  866.                 switch (action)
  867.                 {
  868.                    
  869.                     case "getTaskByDate":                    
  870.                       $(".no-task-wrap").show();
  871.                       $(".no-task-wrap p").html( data.msg );
  872.                       $("#task-wrapper").html('');
  873.                       //$("#task-wrapper").hide();
  874.                       toastMsg( data.msg );
  875.                     break;
  876.  
  877.                     case "login":
  878.                     checkGPS();                        
  879.                     $("#frm-login").show();
  880.                     $(".login-header").show();
  881.                     $(".auto-login-wrap").hide();
  882.                     onsenAlert( data.msg );
  883.                     removeStorage("kr_remember");
  884.                     break;
  885.                    
  886.                     //silent                   
  887.                     case "SettingPush":
  888.                     case "GetAppSettings":
  889.                     case "DeviceConnected":
  890.                     case "Logout":
  891.                     break;
  892.                                        
  893.                     case "GetNotifications":
  894.                     clearPushCount();
  895.                     toastMsg( data.msg );
  896.                     TransLatePage();
  897.                     break;
  898.                    
  899.                     case "changeTaskStatus":                   
  900.                       reload_home=1;
  901.                       toastMsg( data.msg );
  902.                       kNavigator.popPage().then(function() {
  903.                          reloadHome();                     
  904.                       });      
  905.                     break;
  906.                        
  907.                     default:                   
  908.                     onsenAlert( data.msg );
  909.                     break;
  910.                 }
  911.             }
  912.         },
  913.         error: function (request,error) {          
  914.             hideAllModal();                
  915.             switch (action)
  916.             {
  917.                 case "GetAppSettings":
  918.                 case "getLanguageSettings":
  919.                 case "registerMobile":
  920.                 break;
  921.                                                
  922.                 default:
  923.                 toastMsg( getTrans("Network error has occurred please try again!",'network_error') );      
  924.                 break;
  925.             }
  926.         }
  927.     });
  928. }
  929.  
  930. function AjaxTask(action, params , done)
  931. {
  932.     dump('AjaxTask');
  933.     if ( !hasConnection() ){
  934.         toastMsg( getTrans("Not connected to internet","no_connection") );
  935.         done();
  936.         return;
  937.     }
  938.  
  939.     params+="&lang_id="+getStorage("kr_lang_id");
  940.     if(!empty(krms_driver_config.APIHasKey)){
  941.         params+="&api_key="+krms_driver_config.APIHasKey;
  942.     }      
  943.     if ( !empty( getStorage("kr_token") )){    
  944.         params+="&token="+  getStorage("kr_token");
  945.     }
  946.    
  947.     dump(ajax_url+"/"+action+"?"+params);
  948.    
  949.     ajax_request = $.ajax({
  950.         url: ajax_url+"/"+action,
  951.         data: params,
  952.         type: 'post',                  
  953.         async: false,
  954.         dataType: 'jsonp',
  955.         timeout: 6000,
  956.         crossDomain: true,
  957.          beforeSend: function() {
  958.             if(ajax_request != null) {                             
  959.                ajax_request.abort();
  960.             } else {    
  961.             }
  962.         },
  963.         complete: function(data) {                 
  964.             ajax_request=null;                                     
  965.         },
  966.         success: function (data) { 
  967.             dump(data);
  968.             done();
  969.             if ( data.code==1){
  970.                
  971.                 $(".no-task-wrap").hide();
  972.                 $("#task-wrapper").show();
  973.                 dump( 'fill task' );
  974.                 $("#task-wrapper").html( formatTask( data.details ) );                 
  975.                
  976.             } else {               
  977.                 $(".no-task-wrap").show();
  978.                 $(".no-task-wrap p").html( data.msg );   
  979.                 $("#task-wrapper").html('');
  980.                 toastMsg( data.msg );          
  981.             }
  982.         },
  983.         error: function (request,error) {              
  984.             done();
  985.         }
  986.     });
  987.    
  988. }
  989.  
  990. function getTrans(words,words_key)
  991. {
  992.    
  993. }
  994.  
  995. function onsenAlert(message,dialog_title)
  996. {
  997.     if (typeof dialog_title === "undefined" || dialog_title==null || dialog_title=="" ) {
  998.         dialog_title=dialog_title_default;
  999.     }
  1000.     ons.notification.alert({
  1001.       message: message,
  1002.       title:dialog_title
  1003.     });
  1004. }
  1005.  
  1006. function toastMsg( message )
  1007. {  
  1008.    
  1009.     if (isDebug()){
  1010.         onsenAlert( message );
  1011.         return ;
  1012.     }
  1013.      
  1014.     window.plugins.toast.showWithOptions(
  1015.       {
  1016.         message: message ,
  1017.         duration: "long",
  1018.         position: "bottom",
  1019.         addPixelsY: -40
  1020.       },
  1021.       function(args) {
  1022.        
  1023.       },
  1024.       function(error) {
  1025.         onsenAlert( message );
  1026.       }
  1027.     );
  1028. }
  1029.  
  1030. function hideAllModal()
  1031. {  
  1032.     setTimeout('loader.hide()', 1);
  1033. }
  1034.  
  1035. function login() { 
  1036.     var params = $( ".frm").serialize();
  1037.     params+="&device_id="+ getStorage("device_id");
  1038.     params+="&device_platform="+ getStorage("device_platform");
  1039.     dump(params);  
  1040.     callAjax("login",params);
  1041. }
  1042.  
  1043. function forgotPass()
  1044. {
  1045.     dump('forgotPass');
  1046.     var params = $( "#frm-forgotpass").serialize();
  1047.     dump(params);
  1048.     callAjax("ForgotPassword",params);
  1049. }
  1050.  
  1051. var xx=0;
  1052. var lastUpdateTime,
  1053. minFrequency = 10*2000;
  1054.  
  1055. function getCurrentPosition()
  1056. {    
  1057.      watchID = navigator.geolocation.watchPosition( function(position) {
  1058.      //navigator.geolocation.getCurrentPosition( function(position) {    
  1059.      
  1060.          var now = new Date();
  1061.          
  1062.          dump( position.coords.latitude);    
  1063.          dump( position.coords.longitude );    
  1064.          
  1065.          var now = new Date();
  1066.          
  1067.          if(!empty(lastUpdateTime)){             
  1068.              var freq_time = now.getTime() - lastUpdateTime.getTime();   
  1069.              if ( freq_time <  minFrequency ) {
  1070.                  dump("Ignoring position update");
  1071.                  return ;
  1072.              }
  1073.          }
  1074.          lastUpdateTime = now;                   
  1075.          //$(".watch-id").html( xx++ );      
  1076.          
  1077.          params = 'lat='+ position.coords.latitude + "&lng=" + position.coords.longitude;
  1078.          callAjax2('updateDriverLocation', params);
  1079.          
  1080.      },function(error) {
  1081.          dump('error position');
  1082.          navigator.geolocation.clearWatch(watchID);
  1083.      },
  1084.        { timeout: 10000, enableHighAccuracy : getLocationAccuracy() }
  1085.      );      
  1086. }
  1087.  
  1088. var showChangePassword = function() {
  1089.   var dialog = document.getElementById('dialogChangePass');
  1090.   if (dialog) {
  1091.       dialog.show();
  1092.   } else {
  1093.     ons.createDialog('changePassword.html')
  1094.       .then(function(dialog) {
  1095.         dialog.show();      
  1096.         setTimeout('TransLatePage()', 300);
  1097.     });
  1098.   }
  1099. };
  1100.  
  1101. function changePassword()
  1102. {
  1103.     var params = $( "#frm-changepass").serialize();
  1104.     callAjax("ChangePassword",params);
  1105. }
  1106.  
  1107. var onduty_handle=0;
  1108.  
  1109. function changeDuty()
  1110. {      
  1111.     onduty_handle++;
  1112.     dump(onduty_handle);
  1113.     var onduty = document.getElementById('onduty').checked==true?1:2 ; 
  1114.     params="onduty="+onduty;
  1115.     //if ( onduty_handle==2){
  1116.        callAjax("ChangeDutyStatus",params);
  1117.        onduty_handle=0;
  1118.     //}
  1119.     if ( onduty==2){       
  1120.         navigator.geolocation.clearWatch(watchID);
  1121.     } else {
  1122.         checkGPS();
  1123.     }
  1124. }
  1125.  
  1126. var showMenu = function(element) {  
  1127.    popover.show(element);
  1128. };
  1129.  
  1130. function getTodayTask(raw_date)
  1131. {
  1132.    if (empty(raw_date)){
  1133.        raw_date=getStorage('kr_todays_date_raw');
  1134.    }
  1135.    callAjax("getTaskByDate","date="+raw_date);
  1136. }
  1137.  
  1138. function showTask(task_id)
  1139. {
  1140.    dump(task_id);  
  1141.    reload_home=2;
  1142.    /*kNavigator.pushPage("taskDetails.html", {
  1143.       animation: 'slide',
  1144.    }).then(function(page) {  
  1145.         callAjax("TaskDetails",'task_id=' + task_id);
  1146.    });      */    
  1147.    kNavigator.pushPage("taskDetails.html", {
  1148.       animation: 'slide',
  1149.       callback: function(){                              
  1150.         callAjax("TaskDetails",'task_id=' + task_id);
  1151.       }
  1152.    });
  1153. }
  1154.  
  1155. function viewTaskDescription(task_id)
  1156. {  
  1157.     kNavigator.pushPage("viewTaskDescription.html", {
  1158.       animation: 'none',
  1159.       callback: function(){                              
  1160.         callAjax("viewTaskDescription",'task_id=' + task_id);
  1161.       }
  1162.    });
  1163. }
  1164.  
  1165. function swicthButtonAction( task_id, status_raw )
  1166. {
  1167.     dump(status_raw);
  1168.     var html=''; var action='';
  1169.     dump("swicthButtonAction " + status_raw);
  1170.     switch (status_raw)
  1171.     {
  1172.         case "assigned":
  1173.         case "unassigned":
  1174.         action='acknowledged';
  1175.         html+='<p><ons-button modifier="large yellow-button"';
  1176.         html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" > '+ getTrans("Accept",'accept') +' </ons-button></p>';
  1177.        
  1178.         action='declined';
  1179.         html+='<p><ons-button modifier="quiet"';
  1180.         html+='onclick="declinedTask('+task_id+','+ "'"+action+"'" +' )" >'+ getTrans("Decline",'decline') +'</ons-button></p>';
  1181.         break;
  1182.        
  1183.         case "acknowledged":
  1184.         action='started';
  1185.         html+='<p><ons-button modifier="large yellow-button"';
  1186.         html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" >'+ getTrans('Start','start') +'</ons-button></p>';
  1187.        
  1188.         action='cancelled';
  1189.         html+='<p><ons-button modifier="quiet"';
  1190.         html+='onclick="ShowAddReason('+task_id+','+ "'"+action+"'" +' )" >'+ getTrans('Cancel','cancel') +'</ons-button></p>';
  1191.         break;
  1192.        
  1193.         case "started":
  1194.         action='inprogress';
  1195.         html+='<p><ons-button modifier="large yellow-button"';
  1196.         html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Arrived','arrived')+'</ons-button></p>';
  1197.        
  1198.         action='cancelled';
  1199.         html+='<p><ons-button modifier="quiet"';
  1200.         html+='onclick="ShowAddReason('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Cancel','cancel')+'</ons-button></p>';
  1201.         break;
  1202.        
  1203.         case "inprogress":
  1204.         action='successful';
  1205.         html+='<p><ons-button modifier="large yellow-button"';
  1206.         html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Successful','successful')+'</ons-button></p>';
  1207.        
  1208.         action='failed';
  1209.         html+='<p><ons-button modifier="quiet"';
  1210.         html+='onclick="ShowAddReason('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Failed','failed')+'</ons-button></p>';
  1211.         break;
  1212.        
  1213.         case "successful":
  1214.         break;
  1215.        
  1216.         case "failed":
  1217.         break;
  1218.        
  1219.         case "declined":
  1220.         break;
  1221.        
  1222.         case "cancelled":
  1223.         break;
  1224.        
  1225.         default:
  1226.         break;
  1227.     }
  1228.     return html ;  
  1229. }
  1230.  
  1231. function changeTaskStatus(task_id, status_raw )
  1232. {
  1233.     dump(task_id );
  1234.     dump(status_raw);      
  1235.     callAjax("changeTaskStatus",'task_id=' + task_id +"&status_raw="+status_raw ) ;
  1236. }
  1237.  
  1238. function reloadHome()
  1239. {
  1240.     dump('reloadHome');
  1241.     dump(reload_home);
  1242.     if ( reload_home==1){
  1243.        getTodayTask('');
  1244.     }
  1245. }
  1246.  
  1247. function ShowAddReason(task_id , status_raw)
  1248. {
  1249.     dump(task_id);
  1250.     dump(status_raw);
  1251.    
  1252.     var dialog = document.getElementById('reasonTask');
  1253.     if (dialog) {
  1254.           dialog.show();         
  1255.           $("#reason_task_id").val( task_id );
  1256.           $("#reason_status_raw").val( status_raw );
  1257.     } else {
  1258.         ons.createDialog('reasonTask.html')
  1259.           .then(function(dialog) {
  1260.             dialog.show();         
  1261.             $("#reason_task_id").val( task_id );
  1262.             $("#reason_status_raw").val( status_raw );
  1263.             setTimeout('TransLatePage()', 300);
  1264.         });
  1265.     }  
  1266. }
  1267.  
  1268. function declinedTask( task_id , status_raw )
  1269. {
  1270.     dump(task_id);
  1271.     dump(status_raw);
  1272.     ons.notification.confirm({
  1273.         title:dialog_title_default,
  1274.         message:"Are you sure?",
  1275.         buttonLabels: ['No', 'Yes'],
  1276.     })
  1277.     .then(
  1278.       function(answer) {
  1279.         if (answer === 1) {
  1280.            dump('ok');
  1281.            callAjax("changeTaskStatus",'task_id=' + task_id +"&status_raw="+status_raw ) ;
  1282.         }
  1283.       }
  1284.     );
  1285. }
  1286.  
  1287. function AddReasonTask()
  1288. {  
  1289.     if ( $("#reason").val()==""){
  1290.         onsenAlert("Reason is required");
  1291.         return;
  1292.     }
  1293.     var task_id=$("#reason_task_id").val();
  1294.     var status_raw=$("#reason_status_raw").val();
  1295.     reasonTask.hide();
  1296.     callAjax("changeTaskStatus",'task_id=' + task_id +"&status_raw="+status_raw + "&reason="+ $("#reason").val() ) ;
  1297. }
  1298.  
  1299. function ShowSignaturePage( task_id , signature , status )
  1300. {  
  1301.     kNavigator.pushPage("Signature.html", {
  1302.       animation: 'none',
  1303.       callback: function(){            
  1304.          $(".task_id_signature").val(  task_id );        
  1305.          if ( status=="successful"){
  1306.             $(".toolbar-title-signature").html( getTrans("View Signature",'view_signature') );
  1307.             $(".signature-action").hide();
  1308.             if ( !empty(signature)){           
  1309.                
  1310.                signature_html='<div class="img_loaded" >';
  1311.                signature_html += '<img src="'+signature+'" />';
  1312.                signature_html+='</div>';
  1313.                
  1314.                $("#signature-pan").html ( signature_html )  ;
  1315.                
  1316.                imageLoaded('.img_loaded');         
  1317.             }
  1318.          } else {                  
  1319.             $(".toolbar-title-signature").html( getTrans("Add Signature",'add_signature') );
  1320.             $(".signature-action").show();
  1321.             $("#signature-pan").jSignature();      
  1322.          }               
  1323.       }
  1324.    });
  1325. }
  1326.  
  1327. function resetSignature()
  1328. {
  1329.     dump('resetSignature');
  1330.     $("#signature-pan").jSignature("reset");       
  1331. }
  1332.  
  1333. function AddSignatureToTask()
  1334. {
  1335.     //var datapair = $("#signature-pan").jSignature("getData", "svgbase64");
  1336.     var datapair = $("#signature-pan").jSignature("getData","base30"); 
  1337.     callAjax("AddSignatureToTask","image="+datapair +"&task_id=" + $(".task_id_signature").val() );
  1338. }
  1339.  
  1340. function imageLoaded(div_id)
  1341. {  
  1342.     $(div_id).imagesLoaded()
  1343.       .always( function( instance ) {
  1344.         console.log('all images loaded');
  1345.       })
  1346.       .done( function( instance ) {
  1347.         console.log('all images successfully loaded');
  1348.       })
  1349.       .fail( function() {
  1350.         console.log('all images loaded, at least one is broken');
  1351.       })
  1352.       .progress( function( instance, image ) {
  1353.         var result = image.isLoaded ? 'loaded' : 'broken';             
  1354.         image.img.parentNode.className = image.isLoaded ? '' : 'is-broken';
  1355.         console.log( 'image is ' + result + ' for ' + image.img.src );     
  1356.     });
  1357. }
  1358.  
  1359. function showCalendarView()
  1360. {
  1361.     kNavigator.pushPage("CalendarView.html", {
  1362.       animation: 'slide',
  1363.       callback: function(){                              
  1364.           dump('CalendarView');      
  1365.       }
  1366.    });
  1367. }
  1368.  
  1369. function showTransportType()
  1370. {
  1371.    var dialog = document.getElementById('transporType');
  1372.    if (dialog) {
  1373.       dialog.show();
  1374.    } else {
  1375.       ons.createDialog('transporType.html')
  1376.       .then(function(dialog) {
  1377.         callAjax("GetTransport",'');
  1378.         dialog.show();
  1379.       });
  1380.    }  
  1381. }
  1382.  
  1383. function setTransportType(key , val)
  1384. {  
  1385.     transporType.hide();
  1386.     $(".transport_type_id2").html( val );
  1387.     $(".transport_type_id").val( key );
  1388.     switchTransportFields( key );
  1389. }
  1390.  
  1391. function switchTransportFields( transport_type )
  1392. {
  1393.     if ( transport_type=="walk" ){
  1394.         $(".with-car").hide();
  1395.     } else {
  1396.         $(".with-car").show();
  1397.     }
  1398. }
  1399.  
  1400. function UpdateForms(form_id , action )
  1401. {
  1402.     var params = $( "#"+form_id).serialize();  
  1403.     callAjax(action,params);
  1404. }
  1405.  
  1406. var switch_handle=0;
  1407.  
  1408. function UpdatePush()
  1409. {
  1410.     switch_handle++;
  1411.     dump('UpdatePush');
  1412.     var enabled_push = document.getElementById('enabled_push').checked==true?1:2 ; 
  1413.     params="enabled_push="+enabled_push;
  1414.     //if ( switch_handle==2){
  1415.        callAjax("SettingPush",params);
  1416.        switch_handle=0;
  1417.     //}
  1418. }
  1419.  
  1420.  
  1421. function ShowLanguageOption()
  1422. {
  1423.    var dialog = document.getElementById('LanguageList');
  1424.    if (dialog) {
  1425.       callAjax("LanguageList",'');
  1426.       dialog.show();
  1427.    } else {
  1428.       ons.createDialog('LanguageList.html')
  1429.       .then(function(dialog) {
  1430.         callAjax("LanguageList",'');
  1431.         dialog.show();
  1432.       });
  1433.    }  
  1434. }
  1435.  
  1436. function SetLanguage(lang_id , language)
  1437. {
  1438.     dump(lang_id);
  1439.     dump(language);
  1440.     $(".language_selected").html( language );
  1441.     setStorage("kr_lang_id",lang_id);
  1442.     LanguageList.hide();
  1443.     TransLatePage();
  1444. }
  1445.  
  1446. function Logout()
  1447. {  
  1448.     removeStorage('kr_username');
  1449.     removeStorage('kr_password');
  1450.     removeStorage('kr_remember');  
  1451.    
  1452.     popover.hide();
  1453.     $(".auto-login-wrap").hide();
  1454.     $("#frm-login").show();
  1455.     $(".login-header").show();
  1456.     kNavigator.popPage().then(function() { 
  1457.         // clear watch id
  1458.         navigator.geolocation.clearWatch(watchID);
  1459.         callAjax("Logout",'');                     
  1460.     });
  1461. }
  1462.  
  1463. function TransLatePage()
  1464. {
  1465.     var dictionary;
  1466.     dump('TransLating page');
  1467.     if (typeof getStorage("kr_translation") === "undefined" || getStorage("kr_translation")==null || getStorage("kr_translation")=="" ) {      
  1468.         return;    
  1469.     } else {
  1470.         dictionary =  JSON.parse( getStorage("kr_translation") );
  1471.     }  
  1472.     if (!empty(dictionary)){
  1473.         //dump(dictionary);
  1474.         var kr_lang_id=getStorage("kr_lang_id");       
  1475.         if (!empty(kr_lang_id)){
  1476.             //dump(kr_lang_id);
  1477.             translator = $('body').translate({lang: kr_lang_id, t: dictionary});
  1478.             translateForms();
  1479.             translateTabs();
  1480.         }
  1481.     }
  1482. }
  1483.  
  1484. function translateForms()
  1485. {
  1486.     var t='';
  1487.     $.each( $(".field-wrap") , function() {                
  1488.         var temp_value=$(this).find("input.text-input").attr("placeholder");       
  1489.         if(!empty(temp_value)){
  1490.             key = $(this).find("ons-input").data("trn-key");           
  1491.             t = getTrans(temp_value, key );        
  1492.             $(this).find("input.text-input").attr("placeholder",t);
  1493.             $(this).find("._helper").html(t);          
  1494.         }
  1495.     });
  1496. }
  1497.  
  1498. function translateTabs()
  1499. {
  1500.     var t='';
  1501.     $.each( $(".tab-bar__item") , function() {             
  1502.         var temp_value=$(this).find(".tab-bar__label").html();     
  1503.         if(!empty(temp_value)){    
  1504.             key = $(this).data("trn-key");                         
  1505.             t = getTrans(temp_value, key );        
  1506.             $(this).find(".tab-bar__label").html(t);    
  1507.         }
  1508.     });
  1509. }
  1510.  
  1511. function getTrans(words,words_key)
  1512. {
  1513.     var temp_dictionary='';    
  1514.    
  1515.     if (typeof getStorage("kr_translation") === "undefined" || getStorage("kr_translation")==null || getStorage("kr_translation")=="" ) {      
  1516.         return words;
  1517.     } else {
  1518.         temp_dictionary =  JSON.parse( getStorage("kr_translation") );
  1519.     }  
  1520.    
  1521.     if (!empty(temp_dictionary)){
  1522.         //dump(temp_dictionary);       
  1523.         var default_lang=getStorage("kr_lang_id");
  1524.         //dump(default_lang);
  1525.         if (default_lang!="undefined" && default_lang!=""){
  1526.             //dump("OK");
  1527.             if ( array_key_exists(words_key,temp_dictionary) ){
  1528.                 //dump('found=>' + words_key +"=>"+ temp_dictionary[words_key][default_lang]);             
  1529.                 return temp_dictionary[words_key][default_lang];
  1530.             }
  1531.         }
  1532.     }  
  1533.     return words;
  1534. }
  1535.  
  1536. function array_key_exists(key, search) {  
  1537.   if (!search || (search.constructor !== Array && search.constructor !== Object)) {
  1538.     return false;
  1539.   }
  1540.   return key in search;
  1541. }
  1542.  
  1543. function isAutoLogin()
  1544. {
  1545.    var auto_login=2;
  1546.    var kr_remember = getStorage("kr_remember");
  1547.    if ( kr_remember=="on"){
  1548.        var kr_username=getStorage("kr_username");
  1549.        var kr_password=getStorage("kr_password");
  1550.        var kr_remember=getStorage("kr_remember");
  1551.        if (!empty(kr_username) && !empty(kr_password)){
  1552.             auto_login=1;
  1553.        }
  1554.    }
  1555.    return auto_login;
  1556. }
  1557.  
  1558. function ShowOrderDetails( order_id )
  1559. {
  1560.     kNavigator.pushPage("OrderDetails.html", {
  1561.      animation: 'slide',
  1562.       callback: function(){                              
  1563.          callAjax("ViewOrderDetails",'order_id=' + order_id );
  1564.       }
  1565.    });
  1566. }
  1567.  
  1568. var watch_count=1;
  1569.  
  1570. var onSuccess = function(position) {
  1571.     var html='';
  1572.     html='Lat : '+position.coords.latitude;
  1573.     html+='<br/>';
  1574.     html+= watch_count++;
  1575.     html+='<br/>';
  1576.     html+='Lat : '+position.coords.longitude;
  1577.     $(".location-res").html( html );
  1578. };
  1579.  
  1580. function onError(error) {
  1581.     alert('code: '    + error.code    + '\n' +
  1582.           'message: ' + error.message + '\n');
  1583. }
  1584.  
  1585. function checkGPS()
  1586. {              
  1587.      if (isDebug()){
  1588.         return ;
  1589.      }
  1590.      
  1591.      if ( device.platform =="iOS"){              
  1592.          getCurrentPosition();
  1593.          return;
  1594.      }
  1595.      
  1596.      cordova.plugins.locationAccuracy.request( onRequestSuccess,
  1597.      onRequestFailure, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY);
  1598. }
  1599.  
  1600. function onRequestSuccess(success){
  1601.     //alert("Successfully requested accuracy: "+success.message);
  1602.     getCurrentPosition();
  1603. }
  1604.  
  1605. function onRequestFailure(error){
  1606.     //alert("Accuracy request failed: error code="+error.code+"; error message="+error.message);    
  1607.     if(error.code == 4){
  1608.         toastMsg( getTrans("You have choosen not to turn on location accuracy",'turn_off_location') );
  1609.         checkGPS();
  1610.     } else {
  1611.         toastMsg( error.message );
  1612.     }
  1613. }
  1614.  
  1615. /*function toastOnSuccess()
  1616. {
  1617. }
  1618. function toastOnError()
  1619. {
  1620. }*/
  1621.  
  1622. function viewTaskMap(task_id , task_lat, task_lng , delivery_address )
  1623. {
  1624.      setStorage("task_lat", task_lat );
  1625.      setStorage("task_lng", task_lng );
  1626.      setStorage("delivery_address", delivery_address );
  1627.    
  1628.      kNavigator.pushPage("Map.html", {
  1629.           animation: 'fade',
  1630.           callback: function(){    
  1631.              viewTaskMapInit();                  
  1632.           }
  1633.      });
  1634. }
  1635.  
  1636. function viewTaskMapInit()
  1637. {
  1638.     var task_lat=getStorage('task_lat');
  1639.     var task_lng=getStorage('task_lng');
  1640.     dump(task_lng);
  1641.     dump(task_lat);
  1642.        
  1643.     google_lat = new plugin.google.maps.LatLng( task_lat , task_lng );
  1644.    
  1645.     /*
  1646.     var div = document.getElementById("map_canvas");  
  1647.     map = plugin.google.maps.Map.getMap(div,{    
  1648.      'camera': {
  1649.       'latLng': google_lat,
  1650.       'zoom': 17
  1651.      }
  1652.     });      
  1653.     map.on(plugin.google.maps.event.MAP_READY, onMapInit);
  1654.     */
  1655.    
  1656.     //$('.page__background').not('.page--menu-page__background').css('background-color', 'rgba(0,0,0,0)');
  1657.    
  1658.     setTimeout(function(){      
  1659.         var div = document.getElementById("map_canvas");
  1660.         $('#map_canvas').css('height', $(window).height() - $('#map_canvas').offset().top);
  1661.        
  1662.         map = plugin.google.maps.Map.getMap(div, {    
  1663.          'camera': {
  1664.           'latLng': google_lat,
  1665.           'zoom': 17
  1666.          }
  1667.         });
  1668.         map.setBackgroundColor('white');
  1669.        
  1670.         map.on(plugin.google.maps.event.MAP_READY, onMapInit);
  1671.        
  1672.     }, 500); // and timeout for clear transitions        
  1673. }
  1674.  
  1675. function onMapInit()
  1676. {          
  1677.     /*map.clear();
  1678.     map.showDialog();*/
  1679.     map.clear();   
  1680.     var task_lat=getStorage('task_lat');
  1681.     var task_lng=getStorage('task_lng');
  1682.     var delivery_address=getStorage('delivery_address');
  1683.    
  1684.     map.addMarker({
  1685.       'position': new plugin.google.maps.LatLng( task_lat , task_lng ),
  1686.       'title': delivery_address ,
  1687.       'snippet': getTrans( "Destination" ,'destination')
  1688.      }, function(marker) {
  1689.        
  1690.         marker.showInfoWindow();   
  1691.        
  1692.         navigator.geolocation.getCurrentPosition( function(position) {     
  1693.              
  1694.              var driver_location = new plugin.google.maps.LatLng(position.coords.latitude , position.coords.longitude);    
  1695.              //demo
  1696.              //var driver_location = new plugin.google.maps.LatLng( 34.039413 , -118.25480649999997 );  
  1697.              
  1698.              var destination = new plugin.google.maps.LatLng( task_lat , task_lng );
  1699.              
  1700.               map.addPolyline({
  1701.                 points: [
  1702.                   destination,
  1703.                   driver_location
  1704.                 ],
  1705.                 'color' : '#AA00FF',
  1706.                 'width': 10,
  1707.                 'geodesic': true
  1708.                }, function(polyline) {
  1709.                
  1710.                   map.animateCamera({
  1711.                       'target': driver_location,
  1712.                       'zoom': 17,
  1713.                       'tilt': 30
  1714.                     }, function() {
  1715.                        
  1716.                        var data = [      
  1717.                           {'title': getTrans('You are here','you_are_here'), 'position': driver_location }  
  1718.                        ];
  1719.                    
  1720.                        addMarkers(data, function(markers) {
  1721.                         markers[markers.length - 1].showInfoWindow();
  1722.                        });
  1723.                        
  1724.                    });  
  1725.                    
  1726.                });  
  1727.              // end position success
  1728.              
  1729.           }, function(error){
  1730.              toastMsg( error.message );
  1731.              // end position error
  1732.           },
  1733.           { timeout: 10000, enableHighAccuracy : getLocationAccuracy() }
  1734.         );           
  1735.     });    
  1736. }
  1737.  
  1738. function addMarkers(data, callback) {
  1739.   var markers = [];
  1740.   function onMarkerAdded(marker) {
  1741.     markers.push(marker);
  1742.     if (markers.length === data.length) {
  1743.       callback(markers);
  1744.     }
  1745.   }
  1746.   data.forEach(function(markerOptions) {
  1747.     map.addMarker(markerOptions, onMarkerAdded);
  1748.   });
  1749. }
  1750.  
  1751. function viewTaskDirection()
  1752. {  
  1753.     /*plugin.google.maps.external.launchNavigation({
  1754.       "from": "Tokyo, Japan",
  1755.        "to": "Kyoto, Japan"
  1756.     });*/  
  1757.        
  1758.    /*var delivery_address=getStorage('delivery_address');
  1759.    dump(delivery_address);*/
  1760.    
  1761.    var task_lat=getStorage('task_lat');
  1762.    var task_lng=getStorage('task_lng');
  1763.    
  1764.    navigator.geolocation.getCurrentPosition( function(position) {      
  1765.              
  1766.          var yourLocation = new plugin.google.maps.LatLng(position.coords.latitude , position.coords.longitude);            
  1767.          //demo
  1768.          //var yourLocation = new plugin.google.maps.LatLng(34.039413 , -118.25480649999997);          
  1769.          
  1770.          var destination_location = new plugin.google.maps.LatLng(task_lat , task_lng);            
  1771.          
  1772.          plugin.google.maps.external.launchNavigation({
  1773.              "from": yourLocation,
  1774.              "to": destination_location
  1775.           });  
  1776.  
  1777.          // end position success         
  1778.       }, function(error){
  1779.          toastMsg( error.message );
  1780.          // end position error
  1781.       },
  1782.       { timeout: 10000, enableHighAccuracy : getLocationAccuracy() }
  1783.     );                 
  1784. }
  1785.  
  1786. function clearPushCount()
  1787. {
  1788.     removeStorage("push_count");
  1789.     $(".baloon-notification").html('');
  1790.     $(".baloon-notification").hide();
  1791. }
  1792.  
  1793. function playNotification()
  1794. {
  1795.      //var sound_url= getStorage("notification_sound_url");
  1796.      var sound_url= "file:///android_asset/www/audio/fb-alert.mp3";
  1797.      dump(sound_url);
  1798.      if(!empty(sound_url)){
  1799.         playAudio(sound_url);
  1800.      }
  1801. }
  1802.  
  1803. var my_media;
  1804.  
  1805. function playAudio(url) {
  1806.     // Play the audio file at url    
  1807.     my_media = new Media(url,
  1808.         // success callback
  1809.         function () {
  1810.             dump("playAudio():Audio Success");
  1811.             my_media.stop();
  1812.             my_media.release();
  1813.         },
  1814.         // error callback
  1815.         function (err) {
  1816.             dump("playAudio():Audio Error: " + err);
  1817.         }
  1818.     );
  1819.     // Play audio
  1820.     my_media.play();
  1821. }
  1822.  
  1823. function stopNotification()
  1824. {
  1825.     my_media.stop();
  1826.     my_media.release();
  1827. }
  1828.  
  1829. function AjaxNotification(action, params , done)
  1830. {
  1831.     dump('AjaxNotification');
  1832.     if ( !hasConnection() ){
  1833.         toastMsg( getTrans("Not connected to internet","no_connection") );
  1834.         done();
  1835.         return;
  1836.     }
  1837.  
  1838.     params+="&lang_id="+getStorage("kr_lang_id");
  1839.     if(!empty(krms_driver_config.APIHasKey)){
  1840.         params+="&api_key="+krms_driver_config.APIHasKey;
  1841.     }      
  1842.     if ( !empty( getStorage("kr_token") )){    
  1843.         params+="&token="+  getStorage("kr_token");
  1844.     }
  1845.    
  1846.     dump(ajax_url+"/"+action+"?"+params);
  1847.    
  1848.     ajax_request3 = $.ajax({
  1849.         url: ajax_url+"/"+action,
  1850.         data: params,
  1851.         type: 'post',                  
  1852.         async: false,
  1853.         dataType: 'jsonp',
  1854.         timeout: 6000,
  1855.         crossDomain: true,
  1856.          beforeSend: function() {
  1857.             if(ajax_request != null) {                             
  1858.                ajax_request3.abort();
  1859.             } else {    
  1860.             }
  1861.         },
  1862.         complete: function(data) {                 
  1863.             //ajax_request3=null;                                      
  1864.             ajax_request3 = (function () { return; })();    
  1865.         },
  1866.         success: function (data) { 
  1867.             dump(data);
  1868.             done();
  1869.             if ( data.code==1){    
  1870.                 $("#notifications-details").html( formatNotifications( data.details ) );       
  1871.             } else {       
  1872.                 $("#notifications-details").html('');  
  1873.                 toastMsg( data.msg );                          
  1874.             }
  1875.         },
  1876.         error: function (request,error) {              
  1877.             done();
  1878.         }
  1879.     });
  1880.    
  1881. }
  1882.  
  1883. function getLocationAccuracy()
  1884. {
  1885.     var location_accuracy = getStorage("kr_location_accuracy");
  1886.     if(!empty(location_accuracy)){
  1887.         if ( location_accuracy == 1){
  1888.             return true;
  1889.         }
  1890.     }
  1891.     return false;
  1892. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement