Advertisement
Fabbrogas

Untitled

Jul 14th, 2016
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  * http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing,
  13.  * software distributed under the License is distributed on an
  14.  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15.  * KIND, either express or implied.  See the License for the
  16.  * specific language governing permissions and limitations
  17.  * under the License.
  18.  */
  19.  
  20. var app = {
  21.     // Application Constructor
  22.     initialize: function() {
  23.         this.bindEvents();
  24.     persistenceTest();
  25.     databaseCreateSchema(true, false, false);
  26.     setupHomePageProjects();
  27.     createEventHandlers();
  28.     },
  29.     // Bind Event Listeners
  30.     //
  31.     // Bind any events that are required on startup. Common events are:
  32.     // 'load', 'deviceready', 'offline', and 'online'.
  33.     bindEvents: function() {
  34.         document.addEventListener('deviceready', this.onDeviceReady, false);
  35.     },
  36.     // deviceready Event Handler
  37.     //
  38.     // The scope of 'this' is the event. In order to call the 'receivedEvent'
  39.     // function, we must explicitly call 'app.receivedEvent(...);'
  40.     onDeviceReady: function() {
  41.         app.receivedEvent('deviceready');
  42.     },
  43.     // Update DOM on a Received Event
  44.     receivedEvent: function(id) {
  45.         var parentElement = document.getElementById(id);
  46.         var listeningElement = parentElement.querySelector('.listening');
  47.         var receivedElement = parentElement.querySelector('.received');
  48.  
  49.         listeningElement.setAttribute('style', 'display:none;');
  50.         receivedElement.setAttribute('style', 'display:block;');
  51.  
  52.         console.log('Received Event: ' + id);
  53.     }
  54.  
  55.  
  56. };
  57.  
  58. app.initialize();
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. var Task = persistence.define('Task', {
  66.   name: "TEXT",
  67.   done: "BOOL"
  68. });
  69.  
  70.  
  71.  
  72. function persistenceTest() {
  73.  
  74.     console.log("persistenceTest1");
  75.     persistence.store.websql.config(persistence, 'ptest', 'A database description', 5 * 1024 * 1024);
  76.  
  77.     console.log("persistenceTest2");
  78.  
  79.     //persistenceSchemaSync();
  80.     console.log("persistenceTest3");
  81.  
  82.     //persistenceReset();
  83.     console.log("persistenceTest4");
  84. }
  85.  
  86.  
  87.  
  88. function persistenceSchemaSync() {
  89. }
  90.  
  91. function persistenceReset() {
  92.     persistenceFlush();
  93. };
  94.  
  95. function persistenceFlush() {
  96. }
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116. function testJSONLoad() {
  117.     console.log("testJSONLoad1");
  118.     //  $.getJSON("http://localhost:8080/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  119.     //  $.getJSON("/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  120.     $.getJSON("http://10.60.74.102:8080/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  121.         //  $.getJSON("alex.builderlynx.com:8080/cc/tablet/UserTestPassword.jsp", {UserName: "ky1a21w2a1wv1lemore", Password: "b2t$g6y*"}, function(data) {
  122.         console.log(data);
  123.         console.log(data.AuthenticationPassword);
  124.         console.log(data.AuthenticationUsername);
  125.         console.log(data.AuthenticationRequestResult);
  126.         alert(data.AuthenticationRequestResult);
  127.     });
  128. console.log("testJSONLoad2");
  129. }
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156. // Wait for PhoneGap to load
  157. //
  158. document.addEventListener("deviceready", onDeviceReady, false);
  159.  
  160. // PhoneGap is ready
  161. //
  162. function onDeviceReady() {
  163.     console.log("onDeviceReady***1");
  164.  
  165.  
  166. }
  167.  
  168. function cleanString(str) {
  169.     str = str.replace(/[^a-zA-Z 0-9]+/g,'');
  170.     str = str.replace(/[ ]+/g, '');
  171.     return str;
  172. }
  173.  
  174. function processUnitDirectory(blUnit, actionOnDirectory) {
  175.     blProject = blUnit.blProject;
  176.     blUnit.fetch("BLProject", function (blProject) {
  177.         blDirectory = "BuilderLynx";
  178.         console.log("here1:" + blUnit.Name);
  179.         console.log("here1:" + blProject);
  180.         window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
  181.             function(fileSystem) {
  182.                 console.log("here2");
  183.                 fileSystem.root.getDirectory(blDirectory, {create: true}, function (dirBuilderLynx) {
  184.                     console.log("here3");
  185.                     dirBuilderLynx.getDirectory(cleanString(blProject.Name), {create: true}, function (dirProject) {
  186.                         console.log("here4");
  187.                         dirProject.getDirectory(cleanString(blUnit.Name), {create: true}, function (dirUnit) {
  188.                             console.log("here5");
  189.                             actionOnDirectory(dirUnit);
  190.                         }, fileOperationFail);
  191.                     }, fileOperationFail);
  192.                 }, fileOperationFail);
  193.             }, fileOperationFail);
  194.     });
  195. }
  196.  
  197. /*function createAndSavePDIReport(blUnit, functionSuccess) {
  198.     processUnitDirectory(blUnit, function (dirUnit) {
  199.         var fileName = cleanString(blUnit.Name) + "." + dateFormat(new Date(), "yyyy.mm.dd.hh.MM.ss") + ".html";
  200.         console.log("here6a" + fileName);
  201.         console.log("here6b" + dirUnit);
  202.         console.log("here6c" + blUnit.Name);
  203.         dirUnit.getFile(fileName, {create: true}, function (fileReport) {
  204.             console.log("here7");
  205.             fileReport.createWriter(function (fileWriterReport) {
  206.  
  207.                 console.log("here8");
  208.                 fileWriterReport.onwrite = function(evt) {
  209.                     console.log("write success***4");
  210.                 };
  211.                 fileWriterReport.onwritestart = function(evt) {
  212.                     console.log("writestart***6");
  213.                 };
  214.                 fileWriterReport.onabort = function(evt) {
  215.                     console.log("abort***7");
  216.                     functionFailure("onabort");
  217.                 };
  218.                 fileWriterReport.onerror = function(evt) {
  219.                     console.log("error***8");
  220.                     functionFailure("onerror");
  221.                 };
  222.                 fileWriterReport.onwriteend = function(evt) {
  223.                     console.log("writeend***9");
  224. //                      alert("writeend");
  225. //                      window.plugins.childBrowser.showWebPage("file:///mnt/sdcard/readme.html", { showLocationBar: true });
  226.                     console.log("writeend***10");
  227.                     functionSuccess.call();
  228.                 };
  229.  
  230.                 console.log("here9a");
  231.  
  232.                 createPDIReport(blUnit, fileWriterReport);
  233. // Investigate ContinuousFileWriter if need to do this kind of thing
  234. // http://gofgsportscompu.svn.sourceforge.net/viewvc/gofgsportscompu/trunk/www/js/continuousfilewriter.js?view=markup
  235. //                  for (i = 0; i < 100; i ++) {
  236. //                      console.log("here9b");
  237.  
  238.  
  239. //                      fileWriterReport.write(reportHTML);
  240. //                  }
  241.                 console.log("here10");
  242.             }, fileOperationFail);
  243.         }, fileOperationFail);
  244.     });
  245. }
  246.  
  247. function createPDIReport(blUnit, fileWriterReport) {
  248.  
  249.     console.log("CreatePDIReport1: " + fileWriterReport);
  250.     console.log("CreatePDIReport2: " + fileWriterReport);
  251.     var fts = BLFormTemplate.all().filter("BLProject", '=', blUnit.BLProject.id);
  252.     fts.list(null, function(results, err) {
  253.         if (results) {
  254.             console.log("CreatePDIReport3: " + results.length);
  255.             for (i = 0; i < results.length; i ++) {
  256.                 ft = results[i];
  257.                 text = ft.Text;
  258.  
  259.                 fillReport(blUnit, text, 0, fileWriterReport, function (fileWriterReport, text) {
  260.                     console.log("fillReport.finishFunction1: " + fileWriterReport);
  261.                     console.log("fillReport.finishFunction2: " + text.length);
  262.                     if (fileWriterReport != null) {
  263.                         console.log("fillReport.finishFunction3: " + text.length);
  264.                         try {
  265.                             console.log("********************");
  266.                             console.log(text);
  267.                             console.log("********************");
  268.                             fileWriterReport.write(text);
  269.                         } catch (ex) {
  270.                             console.log("fillReport.finishFunction5: " + ex);
  271.                             console.log("fillReport.finishFunction5: " + ex.message);
  272.                         }
  273.                         console.log("fillReport.finishFunction4: " + text.length);
  274.                     } else {
  275.                         console.log("fileWriterReport is null.  Using console instead");
  276.                         console.log(text);
  277.                         console.log("END");
  278.                     }
  279.                 });
  280. //                  fileWriterReport.write(text);
  281.  
  282.             }
  283.         } else {
  284.             console.log("no form templates");
  285.         }
  286.     });
  287.  
  288.     return "Some HTML Report for: " + blUnit.Name + " Generated on " + (new Date().format());
  289. }
  290.  
  291. function testFillReport() {
  292.     var units = BLUnit.all().filter("RemoteID", '=', "1");
  293.     units.one(null, function(result, err) {
  294.         if (result) {
  295.             unit = result;
  296.  
  297.             fillReport(unit, "PDI REPORT\n\nProject: #Project.Name.99#\n #Project.Plan.99#\nUser: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\nUnit: #Unit.Name.99##Unit.Name.99##Unit.Name.99##System.Date# Some more text\nClosingDate: #Unit.Buyer Closing Date.99#\nEnd \nUnit: #Unit.Name.99# of PDI Report\nUnit: #Unit.Name.99#\nProject: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\n\n\n#Insert.UnitDeficiencies#\n",
  298.                       0, null, function (fileWriterReport, text) {
  299. //                  console.log(text);
  300.             });
  301.         } else {
  302.             console.log("no units");
  303.         }
  304.     });
  305. }
  306.  
  307. function fillReport(blUnit, text, startingIndex, fileWriterReport, finishFunction) {
  308.     var inVar = false;
  309.     var varIndexStart = 0;
  310.     var varIndexEnd = 0;
  311.     for (i = startingIndex; i < text.length; i ++) {
  312.         var ch = text.charAt(i);
  313.         if (ch == "#") {
  314.             if ( !inVar) {
  315.                 inVar = true;
  316.                 varIndexStart = i;
  317.             } else {
  318.                 varIndexEnd = i + 1;
  319.                 break;
  320.             }
  321.         }
  322.     }
  323.  
  324.     if (inVar && varIndexStart != 0 && varIndexEnd != 0) {
  325.         var varName = text.substring(varIndexStart, varIndexEnd);
  326.         console.log("Found VarName: " + varName + " (" + varIndexStart + ", " + varIndexEnd + ")");
  327.         var origVarName = varName;
  328.         varName = varName.replace("#", "");
  329.         varName = varName.replace("#", "");
  330.         while (varName.indexOf(" ") != -1) {
  331.             varName = varName.replace(" ", "");
  332.         }
  333.         varDetails = varName.split(".");
  334.  
  335.         var objectName = "";
  336.         var propName = "";
  337.         var valLength = "";
  338.         if (varDetails.length == 3) {
  339.             // varname form: Object.Name.Length
  340.             objectName = varDetails[0];
  341.             propName = varDetails[1];
  342.             valLength = varDetails[2];
  343.         } else {
  344.             // varname form: Object.Name
  345.             objectName = varDetails[0];
  346.             propName = varDetails[1];
  347.             valLength = 99;
  348.         }
  349.         console.log("\tVar Details: " + objectName + ", " + propName + ", " + valLength);
  350.  
  351.         val = "";
  352.         if ("Unit" == objectName) {
  353.             val = blUnit[propName];
  354.             fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  355.         } else if ("System" == objectName) {
  356.             if ("Date" == propName) {
  357.                 val = dateFormat("fullDate");
  358.                 fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  359.             }
  360.         } else if ("Project" == objectName) {
  361.             blUnit.fetch("BLProject", function (result) {
  362.                 if (result) {
  363.                     blProject = result;
  364.                     val = blProject[propName];
  365.                     fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  366.                 }
  367.             });
  368.         } else if ("User" == objectName) {
  369.             blUnit.fetch("BLUser", function (result) {
  370.                 if (result) {
  371.                     var blUser = result;
  372.                     val = blUser[propName];
  373.                     fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  374.                 }
  375.             });
  376.         } else if ("Insert" == objectName) {
  377.             if ("UnitDeficiencies" == propName) {
  378.                 var defs = BLDeficiency.all().filter("BLUnit", '=', blUnit.id).prefetch("BLRoom").prefetch("BLDeficiencyType");
  379.                 defs.list(null, function(results, err) {
  380.  
  381. //                  blUnit.fetch("BLDeficiencies", function (results) {
  382.                     val = "<table width='100%'>\n";
  383.                     val += "<tr>\n";
  384.                     val += "<td>Room</td>\n";
  385.                     val += "<td>Type</td>\n";
  386.                     val += "<td>Description</td>\n";
  387.                     val += "<td>Source</td>\n";
  388.                     val += "<td>Status</td>\n";
  389.                     val += "</tr>\n";
  390.                     if (results) {
  391.                         for (i = 0; i < results.length; i ++) {
  392.                             var blDef = results[i];
  393.  
  394.                             var roomName = "";
  395.                             if (blDef.BLRoom != null) {
  396.                                 roomName = blDef.BLRoom.Name;
  397.                             }
  398.  
  399.                             var defTypeName = "";
  400.                             if (blDef.BLDeficiencyType != null) {
  401.                                 defTypeName = blDef.BLDeficiencyType.Name;
  402.                             }
  403.  
  404.                             val += "<tr>\n";
  405.                             val += "<td>" + roomName + "</td>\n";
  406.                             val += "<td>" + defTypeName + "</td>\n";
  407.                             val += "<td>" + blDef.Description + "</td>\n";
  408.                             val += "<td>" + blDef.Source + "</td>\n";
  409.                             val += "<td>" + blDef.Status + "</td>\n";
  410.                             val += "</tr>\n";
  411.                         }
  412.                     }
  413.                     val += "</table>\n";
  414.                     fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  415.                 });
  416.             }
  417.         } else {
  418.             val = "";
  419.             fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction);
  420.         }
  421.  
  422.     } else {
  423.         console.log("End of form processing");
  424.         finishFunction(fileWriterReport, text)
  425.     }
  426.  
  427. }
  428.  
  429. function fillReportReplaceVar(blUnit, text, origVarName, val, varIndexStart, fileWriterReport, finishFunction) {
  430.     if (val == null) {
  431.         val = "";
  432.     }
  433.     var count = 0;
  434.     var replacementCount = 0;
  435.     while (text.indexOf(origVarName) != -1) {
  436.         text = text.replace(origVarName, val);
  437.         if (count > 200) {
  438.             break;
  439.         }
  440.         replacementCount ++;
  441.         count ++;
  442.     }
  443.  
  444.     console.log("replacement Count: " + replacementCount);
  445.     var newStartingIndex = varIndexStart + val.length + 1;
  446.  
  447.     fillReport(blUnit, text, newStartingIndex, fileWriterReport, finishFunction);
  448. }
  449. */
  450.  
  451. function fileOperationFail(error) {
  452.     console.log("fileOperationFail***2");
  453.     errorDesc = "";
  454.     if (error.code == FileError.NOT_FOUND_ERR) {
  455.         errorDesc = error.code + "NOT_FOUND_ERR";
  456.     } else if (error.code == FileError.SECURITY_ERR) {
  457.         errorDesc = error.code + "SECURITY_ERR";
  458.     } else if (error.code == FileError.ABORT_ERR) {
  459.         errorDesc = error.code + "ABORT_ERR";
  460.     } else if (error.code == FileError.NOT_READABLE_ERR) {
  461.         errorDesc = error.code + "NOT_READABLE_ERR";
  462.     } else if (error.code == FileError.ENCODING_ERR) {
  463.         errorDesc = error.code + "ENCODING_ERR";
  464.     } else if (error.code == FileError.NO_MODIFICATION_ALLOWED_ERR) {
  465.         errorDesc = error.code + "NO_MODIFICATION_ALLOWED_ERR";
  466.     } else if (error.code == FileError.INVALID_STATE_ERR) {
  467.         errorDesc = error.code + "INVALID_STATE_ERR";
  468.     } else if (error.code == FileError.SYNTAX_ERR) {
  469.         errorDesc = error.code + "SYNTAX_ERR";
  470.     } else if (error.code == FileError.INVALID_MODIFICATION_ERR) {
  471.         errorDesc = error.code + "INVALID_MODIFICATION_ERR";
  472.     } else if (error.code == FileError.QUOTA_EXCEEDED_ERR) {
  473.         errorDesc = error.code + "QUOTA_EXCEEDED_ERR";
  474.     } else if (error.code == FileError.TYPE_MISMATCH_ERR) {
  475.         errorDesc = error.code + "TYPE_MISMATCH_ERR";
  476.     } else if (error.code == FileError.PATH_EXISTS_ERR) {
  477.         errorDesc = error.code + "PATH_EXISTS_ERR";
  478.     }
  479.     console.log(errorDesc);
  480.     displayErrorMessage(errorDesc);
  481. }
  482.  
  483.  
  484. function displayErrorMessage() {
  485.     $('#PageReportError').html(message);
  486.     $('#PageReportError').popup();
  487. }
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508. SQLDatabaseName = "BuilderLynxPDI";
  509. SQLDatabaseVersion = "1.0";
  510. SQLDatabaseSize = 5 * 1024 * 1024;
  511. SQLDatabase = null;
  512. SQLQueries = 0;
  513. SQLErrors = 0;
  514.  
  515. var BLProject = BLProject != null ? BLProject : null;
  516. var BLUnit = BLUnit != null ? BLUnit : null;
  517. var BLUser = BLUser != null ? BLUser : null;
  518. var BLRoom = BLRoom != null ? BLRoom : null;
  519. var BLDeficiencyType = BLDeficiencyType != null ? BLDeficiencyType : null;
  520. var BLDeficiency = BLDeficiency != null ? BLDeficiency : null;
  521. var BLSupplierDepartment = BLSupplierDepartment != null ? BLSupplierDepartment : null;
  522.  
  523. //CAMERA *******************************************************************************************
  524. //var BLPicGallery = BLPicGallery != null ? BLPicGallery : null;
  525. //var BLPicTaken = BLPicTaken != null ? BLPicTaken : null;
  526.  
  527.  
  528.  
  529.  
  530. // Populate the database
  531.  
  532. function databaseCreateSchema(resetSchema, populateDatabase, dropAllData) {
  533.  
  534.     console.log("Create BLProject");
  535.     BLProject = persistence.define('BLProject', {
  536.         RemoteID: "INT",
  537.         Name: "TEXT",
  538.         CompanyName: "TEXT",
  539.         TarionRegistrationNumber: "TEXT",
  540.         Municipality: "TEXT",
  541.         Domain: "TEXT",
  542.     });
  543.  
  544.  
  545.     console.log("Create BLUnit");
  546.     BLUnit = persistence.define('BLUnit', {
  547.         RemoteID: "INT",
  548.         Name: "TEXT",
  549.         BuyerClosingDate: "TEXT",
  550.         MunicipalAddress: "TEXT",
  551.         City: "TEXT",
  552.         TarionEnrollmentNumber: "TEXT",
  553.     });
  554.     BLProject.hasMany("BLUnits", BLUnit, "BLProject");
  555.  
  556.     console.log("Create BLUser");
  557.     BLUser = persistence.define('BLUser', {
  558.         RemoteID: "INT",
  559.         Username: "TEXT",
  560.         Password: "TEXT",
  561.         Name1: "TEXT",
  562.         Name2: "TEXT",
  563.         Name3: "TEXT",
  564.         Name4: "TEXT",
  565.         Phone1: "TEXT",
  566.         Phone2: "TEXT",
  567.         Email: "TEXT",
  568.         Street: "TEXT",
  569.         City: "TEXT",
  570.         Province: "TEXT",
  571.         PostalCode: "TEXT",
  572.     });
  573.     BLUser.hasOne("BLProject", BLProject);
  574.     BLUser.hasOne("BLUnit", BLUnit);
  575.     BLUnit.hasOne("BLUser", BLUser);
  576.     BLProject.hasOne("BLUser", BLUser);
  577.  
  578.  
  579.     console.log("Create BLRoom");
  580.     BLRoom = persistence.define('BLRoom', {
  581.         RemoteID: "INT",
  582.         Name: "TEXT",
  583.     });
  584.     BLProject.hasMany("BLRooms", BLRoom, "BLProject");
  585.  
  586.  
  587.     //CAMERA
  588.         /*console.log("Create BLPicGallery");
  589.         BLPicGallery = persistence.define('BLPicGallery', {
  590.             RemoteID: "INT",
  591.             Image: "TEXT",
  592.         });
  593.         BLProject.hasMany("BLPicsGallery", BLPicGallery, "BLProject");
  594.  
  595.         console.log("Create BLPicTaken");
  596.         BLPicTaken = persistence.define('BLPicTaken', {
  597.             RemoteID: "INT",
  598.             Image: "TEXT",
  599.         });
  600.         BLProject.hasMany("BLPicsTaken", BLPicTaken, "BLProject");*/
  601.     //END CAMERA
  602.  
  603.  
  604.     console.log("Create BLSupplierDepartment");
  605.     BLSupplierDepartment = persistence.define('BLSupplierDepartment', {
  606.         RemoteID: "INT",
  607.         CompanyName: "TEXT",
  608.         ContactName: "TEXT",
  609.         Phone1: "TEXT",
  610.         Phone2: "TEXT",
  611.         Email: "TEXT",
  612.     });
  613.     BLProject.hasMany("BLSupplierDepartments", BLSupplierDepartment, "BLProject");
  614.  
  615.  
  616.     console.log("Create BLDeficiencyType");
  617.     BLDeficiencyType = persistence.define('BLDeficiencyType', {
  618.         RemoteID: "INT",
  619.         Name: "TEXT",
  620.     });
  621.     BLProject.hasMany("BLDeficiencyTypes", BLDeficiencyType, "BLProject");
  622.     BLDeficiencyType.hasOne("BLSupplierDepartment", BLSupplierDepartment);
  623.  
  624.  
  625.     console.log("Create BLDeficiencyTypeDescription");
  626.     BLDeficiencyTypeDescription = persistence.define('BLDeficiencyTypeDescription', {
  627.         RemoteID: "INT",
  628.         Description: "TEXT",
  629.     });
  630.     BLDeficiencyTypeDescription.hasOne("BLDeficiencyType", BLDeficiencyType);
  631.     BLDeficiencyType.hasMany("BLDeficiencyTypeDescriptions", BLDeficiencyTypeDescription, "BLDeficiencyType");
  632.  
  633.  
  634.     console.log("Create BLFormTemplate");
  635.     BLFormTemplate = persistence.define('BLFormTemplate', {
  636.         RemoteID: "INT",
  637.         Title: "TEXT",
  638.         Description: "TEXT",
  639.         Text: "TEXT",
  640.     });
  641.     BLProject.hasMany("BLFormTemplates", BLFormTemplate, "BLProject");
  642.  
  643.  
  644.     console.log("Create BLDeficiency");
  645.     BLDeficiency = persistence.define('BLDeficiency', {
  646.         RemoteID: "INT",
  647.         Description: "TEXT",
  648.         Source: "TEXT",
  649.         Status: "TEXT",
  650.         ChargeBack: "TEXT",
  651.         Saved: "BOOL",
  652.         ImageGallery: "TEXT",
  653.         ImageTaken: "TEXT",
  654.         ImageDynamic: "TEXT",
  655.  
  656.     });
  657.     BLDeficiency.hasOne("BLRoom", BLRoom);
  658.     BLDeficiency.hasOne("BLDeficiencyType", BLDeficiencyType);
  659.     BLDeficiency.hasOne("BLUnit", BLUnit);
  660.     BLDeficiency.hasOne("BLProject", BLProject);
  661.     BLDeficiency.hasOne("BLSupplierDepartment", BLSupplierDepartment);
  662.     BLDeficiency.hasOne("BLSupplierDepartmentChargeBack", BLSupplierDepartment);
  663.     //BLDeficiency.hasOne("BLPicGallery", BLPicGallery);
  664.     //BLDeficiency.hasOne("BLPicTaken", BLPicTaken);
  665.  
  666.     BLUnit.hasMany("BLDeficiencies", BLDeficiency, "BLUnit");
  667.  
  668.  
  669.     console.log("populateDB start");
  670.     if (resetSchema) {
  671.         persistenceReset();
  672.     }
  673.  
  674.  
  675.     if (dropAllData) {
  676.         BLDeficiency.all().list(function (objects) {
  677.             objects.forEach(function (object) {
  678.                 persistence.remove(object);
  679.             });
  680.             console.log("Deleted all BLDeficiency");
  681.         });
  682.  
  683.         BLDeficiencyType.all().list(function (objects) {
  684.             objects.forEach(function (object) {
  685.                 persistence.remove(object);
  686.             });
  687.             console.log("Deleted all BLDeficiencyType");
  688.         });
  689.  
  690.         /*BLDeficiencyTypeDescription.all().list(function (objects) {
  691.             objects.forEach(function (object) {
  692.                 persistence.remove(object);
  693.             });
  694.             console.log("Deleted all BLDeficiencyTypeDescription");
  695.         });*/
  696.  
  697.         BLFormTemplate.all().list(function (objects) {
  698.             objects.forEach(function (object) {
  699.                 persistence.remove(object);
  700.             });
  701.             console.log("Deleted all BLFormTemplate");
  702.         });
  703.  
  704.         BLRoom.all().list(function (objects) {
  705.             objects.forEach(function (object) {
  706.                 persistence.remove(object);
  707.             });
  708.             console.log("Deleted all BLRoom");
  709.         });
  710.  
  711.         BLSupplierDepartment.all().list(function (objects) {
  712.             objects.forEach(function (object) {
  713.                 persistence.remove(object);
  714.             });
  715.             console.log("Deleted all BLSupplierDepartment");
  716.         });
  717.  
  718.         BLUnit.all().list(function (objects) {
  719.             objects.forEach(function (object) {
  720.                 persistence.remove(object);
  721.             });
  722.             console.log("Deleted all BLUnit");
  723.         });
  724.  
  725.         BLUser.all().list(function (objects) {
  726.             objects.forEach(function (object) {
  727.                 persistence.remove(object);
  728.             });
  729.             console.log("Deleted all BLUser");
  730.         });
  731.  
  732.         BLProject.all().list(function (objects) {
  733.             objects.forEach(function (object) {
  734.                 persistence.remove(object);
  735.             });
  736.             console.log("Deleted all BLProject");
  737.         });
  738.  
  739.         //PROVA CAMERA *****************************************************************************
  740.         /*BLPics.all().list(function (objects) {
  741.             objects.forEach(function (object) {
  742.                 persistence.remove(object);
  743.             });
  744.             console.log("Deleted all BLPics");
  745.         });*/
  746.     }
  747.  
  748.             persistence.schemaSync(function() {
  749.                 console.log("schema sync done");
  750.  
  751.  
  752.  
  753.                 if (populateDatabase) {
  754.                     databasePopulateDB();
  755.                 }
  756.  
  757.         });
  758. }
  759.  
  760. //Trial DB function
  761.  
  762. /*function databasePopulateDB() {
  763.  
  764.         var BLProject1 = new BLProject({RemoteID: 703273, Name: "Northshore1", CompanyName: "Fram Building Group", Plan: "2030-33"});
  765.         var BLProject2 = new BLProject({RemoteID: 123456, Name: "West Village 2B", CompanyName: "Kylemore Communities", Plan: "2030-33"});
  766.  
  767.         var BLUnit201 = createBLUnit(BLProject1, 1, "Suite 201", "2012/03/05");
  768.         var BLUnit202 = createBLUnit(BLProject1, 2, "Suite 202", "2012/03/07");
  769.         var BLUnit203 = createBLUnit(BLProject1, 3, "Suite 203", "2012/03/08");
  770.         var BLUnit302 = createBLUnit(BLProject1, 4, "Suite 301", "2012/03/09");
  771.         var BLUnit303 = createBLUnit(BLProject1, 5, "Suite 302", "2012/03/02");
  772.  
  773.         var BLLot1 = createBLUnit(BLProject2, 5, "Lot 1", "2012/03/05");
  774.         var BLLot2 = createBLUnit(BLProject2, 6, "Lot 2", "2012/03/04");
  775.         var BLLot3 = createBLUnit(BLProject2, 7, "Lot 3", "2012/03/03");
  776.         var BLLot4 = createBLUnit(BLProject2, 8, "Lot 4", "2012/03/02");
  777.         var BLLot5 = createBLUnit(BLProject2, 9, "Lot 5", "2012/03/01");
  778.  
  779.         createBLUser(BLProject1, BLUnit201, 1, "John1", "Smith1", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "201 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  780.         createBLUser(BLProject1, BLUnit202, 2, "John2", "Smith2", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "202 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  781.         createBLUser(BLProject1, BLUnit203, 3, "John3", "Smith3", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "203 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  782.         createBLUser(BLProject1, BLUnit302, 4, "John4", "Smith4", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "302 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  783.         createBLUser(BLProject1, BLUnit303, 5, "John5", "Smith5", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "303 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  784.  
  785.         createBLUser(BLProject2, BLLot1, 6, "Dave1", "Smith1", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "1 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  786.         createBLUser(BLProject2, BLLot2, 7, "Dave2", "Smith2", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "2 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  787.         createBLUser(BLProject2, BLLot3, 8, "Dave3", "Smith3", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "3 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  788.         createBLUser(BLProject2, BLLot4, 9, "Dave4", "Smith4", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "4 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  789.         createBLUser(BLProject2, BLLot5, 10, "Dave5", "Smith5", "416-425-2925", "416-425-4233", "alex@builderlynx.com", "5 Donlea Drive", "Toronto", "ON", "M4G 2M4");
  790.  
  791.         var p1S1 = createBLSupplierDepartment(BLProject1, 1, "Elec Contractors1", "Jeff Martino");
  792.         var p1S2 = createBLSupplierDepartment(BLProject1, 2, "Flooring Contractors2", "Jeff Martino");
  793.         var p1S3 = createBLSupplierDepartment(BLProject1, 3, "Plumbing Contractors3", "Jeff Martino");
  794.         var p1S4 = createBLSupplierDepartment(BLProject1, 4, "Paint Contractors4", "Jeff Martino");
  795.         var p1S5 = createBLSupplierDepartment(BLProject1, 5, "HVAC Contractors5", "Jeff Martino");
  796.         var p1S6 = createBLSupplierDepartment(BLProject1, 6, "Drywall Contractors6", "Jeff Martino");
  797.  
  798.         createBLSupplierDepartment(BLProject2, 7, "Elec Contractors1", "Jeff Martino");
  799.         createBLSupplierDepartment(BLProject2, 8, "Tile and Hardwood Contractors2", "Jeff Martino");
  800.         createBLSupplierDepartment(BLProject2, 9, "Plumbing Contractors3", "Jeff Martino");
  801.         createBLSupplierDepartment(BLProject2, 10, "Paint Contractors4", "Jeff Martino");
  802.         createBLSupplierDepartment(BLProject2, 11, "HVAC Contractors5", "Jeff Martino");
  803.         createBLSupplierDepartment(BLProject2, 12, "Drywall Contractors6", "Jeff Martino");
  804.  
  805.         var p1Foyer = createBLRoom(BLProject1, 1, "Foyer");
  806.         var p1Dinig = createBLRoom(BLProject1, 2, "Dining");
  807.         var p1Living = createBLRoom(BLProject1, 3, "Living");
  808.         var p1Stairs = createBLRoom(BLProject1, 4, "Stairs");
  809.         var p1MasterBedroom = createBLRoom(BLProject1, 5, "Master Bedroom");
  810.         var p1Bedroom2 = createBLRoom(BLProject1, 6, "Bedroom 2");
  811.         var p1Bedroom3 = createBLRoom(BLProject1, 7, "Bedroom 3");
  812.         var p1MainBathroom = createBLRoom(BLProject1, 8, "Main Bathroom");
  813.         var p1EnsuiteBathroom = createBLRoom(BLProject1, 9, "Ensuite Bathroom");
  814.  
  815.         var p1Other = createBLDeficiencyType(BLProject1, 1, "Other", null);
  816.         var p1Electrical = createBLDeficiencyType(BLProject1, 2, "Electrical", p1S1);
  817.         var p1Flooring = createBLDeficiencyType(BLProject1, 3, "Flooring", p1S2);
  818.         var p1Tile = createBLDeficiencyType(BLProject1, 4, "Tile", p1S2);
  819.         var p1Hardwood = createBLDeficiencyType(BLProject1, 5, "Hardwood", p1S2);
  820.         var p1Carpet = createBLDeficiencyType(BLProject1, 6, "Carpet", p1S2);
  821.         var p1Plumbing = createBLDeficiencyType(BLProject1, 7, "Plumbing", p1S3);
  822.         var p1Paint = createBLDeficiencyType(BLProject1, 8, "Paint", p1S4);
  823.         var p1HVAC = createBLDeficiencyType(BLProject1, 9, "HVAC", p1S5);
  824.         var p1Drywall = createBLDeficiencyType(BLProject1, 10, "Drywall", p1S6);
  825.  
  826.         createBLDeficiencyType(BLProject2, 11, "Other", -1);
  827.         createBLDeficiencyType(BLProject2, 12, "Electrical", -1);
  828.         createBLDeficiencyType(BLProject2, 13, "Flooring", -1);
  829.         createBLDeficiencyType(BLProject2, 14, "Tile", -1);
  830.         createBLDeficiencyType(BLProject2, 15, "Hardwood", -1);
  831.         createBLDeficiencyType(BLProject2, 16, "Carpet", -1);
  832.         createBLDeficiencyType(BLProject2, 17, "Plumbing", -1);
  833.         createBLDeficiencyType(BLProject2, 18, "Paint", -1);
  834.         createBLDeficiencyType(BLProject2, 19, "HVAC", -1);
  835.         createBLDeficiencyType(BLProject2, 20, "Drywall", -1);
  836.  
  837.         createBLDeficiency(BLUnit201, p1Foyer, p1HVAC, "Fix something1", "PDI", "New", p1S1);
  838.         createBLDeficiency(BLUnit202, p1Bedroom2, p1Electrical, "Broken Outlet", "Purchaser", "New", p1S2);
  839.         createBLDeficiency(BLUnit201, p1Bedroom2, p1Tile, "Fix somethingafdfad", "Conciliation", "Finished", p1S2);
  840.         createBLDeficiency(BLUnit201, p1Living, p1Hardwood, "Fix somethingbxvbxvbx", "Seasonal", "Deferred", p1S2);
  841.         createBLDeficiency(BLUnit201, p1Living, p1HVAC, "Fix somethingyutuytutyu", "Construction", "New", p1S3);
  842.         createBLDeficiency(BLUnit201, p1Stairs, p1Electrical, "Fix somethingklhklhjkl", "Inspection", "Sending", p1S1);
  843.         createBLDeficiency(BLUnit201, p1MainBathroom, p1Plumbing, "Fix somethingmbnvmnmv", "PDI", "New", p1S5);
  844.  
  845.         createBLFormTemplate(BLProject1, "1", "PDI Report", "Description of some kind", "PDI REPORT\n\nProject: #Project.Name.99#\nUser: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\nUnit: #Unit.Name.99##Unit.Name.99##Unit.Name.99##System.Date# Some more text\nClosingDate: #Unit.Buyer Closing Date.99#\nEnd \nUnit: #Unit.Name.99# of PDI Report\nUnit: #Unit.Name.99#\nProject: #User.Name1.99# #User.Name2.99# #User.Name3.99# #User.Name4.99#\n\n");
  846.  
  847.         persistence.flush(function(err) {
  848.             console.log("Done Flushing!");
  849.             persistence.dump(null, [BLProject], function(dump) {
  850.                 console.log("DUMP START1");
  851.                 console.log(dump);
  852.                 console.log("DUMP DONE1");
  853.             });
  854.  
  855.  
  856. //              createEventHandlers();
  857.  
  858.             //setupHomePageProjects();
  859.  
  860. //              testFillReport();
  861.  
  862.         });
  863.  
  864.  
  865. }*/
  866. //End of trial DB function
  867.  
  868. function createBLUnit(blProject, remoteID, name, buyerClosingDate, municipalAddress, city, tarionEnrollmentNumber) {
  869.     var newUnit = new BLUnit({RemoteID: remoteID, Name: name, BuyerClosingDate: buyerClosingDate, MunicipalAddress: municipalAddress, City: city, TarionEnrollmentNumber: tarionEnrollmentNumber});
  870.     blProject.BLUnits.add(newUnit);
  871.     persistence.add(newUnit);
  872.     return newUnit;
  873. }
  874.  
  875. function createBLUser(blProject, blUnit, remoteID, name1, name2, phone1, phone2, email, street, city, province, postalCode) {
  876.     if (remoteID == 685438) {
  877.         console.log(remoteID);
  878.     }
  879.     var newUser = new BLUser({RemoteID: remoteID, Name1: name1, Name2: name2, Phone1: phone1, Phone2: phone2, Email: email, Street: street, City: city, Province: province, PostalCode: postalCode});
  880.     if (blUnit != null) {
  881.         blUnit.BLUser = newUser;
  882.         newUser.BLUnit = blUnit;
  883.     }
  884.     newUser.BLProject = blProject;
  885.     persistence.add(newUser);
  886.     return newUser;
  887. }
  888.  
  889. function createBLRoom(blProject, remoteID, name) {
  890.     var newRoom = new BLRoom({RemoteID: remoteID, Name: name});
  891.     blProject.BLRooms.add(newRoom);
  892.     persistence.add(newRoom);
  893.     return newRoom;
  894. }
  895.  
  896. function createBLDeficiencyType(blProject, remoteID, name, supplierDepartment) {
  897.     var newDefType = new BLDeficiencyType({RemoteID: remoteID, Name: name, BLDefaultSupplierDepartment: supplierDepartment});
  898.     blProject.BLDeficiencyTypes.add(newDefType);
  899.     newDefType.BLSupplierDepartment = supplierDepartment;
  900.     persistence.add(newDefType);
  901.  
  902.     /*for (i = 1; i < 10; i ++) {
  903. //          createBLDeficiencyTypeDescription(blProject, newDefType, remoteID * 10, "Description " + i + name);
  904.     }
  905.     return newDefType;*/
  906. }
  907.  
  908. /*function createBLDeficiencyTypeDescription(blProject, blDeficiencyType, remoteID, description) {
  909.     var newDefTypeDesc = new BLDeficiencyTypeDescription({RemoteID: remoteID, Description: description});
  910.     blDeficiencyType.BLDeficiencyTypeDescriptions.add(newDefTypeDesc);
  911.     persistence.add(newDefTypeDesc);
  912.     return newDefTypeDesc;
  913. }*/
  914.  
  915.  
  916. function createBLSupplierDepartment(blProject, remoteID, companyName, contactName) {
  917.     var newSD = new BLSupplierDepartment({RemoteID: remoteID, CompanyName: companyName, ContactName: contactName});
  918.     blProject.BLSupplierDepartments.add(newSD);
  919.     persistence.add(newSD);
  920.     return newSD;
  921. }
  922.  
  923. function createBLFormTemplate(blProject, remoteID, title, description, text) {
  924.     var newFT = new BLFormTemplate({RemoteID: remoteID, Title: title, Description: description, Text: text});
  925.     blProject.BLFormTemplates.add(newFT);
  926.     persistence.add(newFT);
  927.     return newFT;
  928. }
  929.  
  930. //blPic ALLA FINE DA CANCELLARE SE NON FUNZIONA, AGGIUNGERE blPic ALLA FINE DELLA PRIMA RIGA QUANDO DI PROVA
  931. function createBLDeficiency(blUnit, blRoom, blDeficiencyType, description, source, status, blSupplierDepartment) {
  932.     var newDeficiency = new BLDeficiency({Description: description, Source: source, Status: status, Saved: true});
  933.     newDeficiency.BLUnit = blUnit;
  934.     newDeficiency.BLProject = blUnit.BLProject;
  935.     newDeficiency.BLRoom = blRoom;
  936.     newDeficiency.BLDeficiencyType = blDeficiencyType;
  937.     newDeficiency.BLSupplierDepartment = blSupplierDepartment;
  938.     //NEXT LINE DA ELIMINARE SE NON VA
  939.     //newDeficiency.BLPic = blPic
  940.  
  941.     persistence.add(newDeficiency);
  942.     return newDeficiency;
  943. }
  944.  
  945.  
  946.  
  947. function logDatabaseStatus() {
  948.     console.log("***DATABASE STATUS***");
  949.     console.log("DatabaseName: " + SQLDatabaseName);
  950.     console.log("SQLErrors   : " + SQLErrors);
  951.     console.log("***DATABASE STATUS***");
  952. }
  953.  
  954.  
  955. function setupHomePageProjects() {
  956.     $('#PageHomeListProject').empty();
  957.     BLProject.all().list(function (projects) {
  958.         projects.forEach(function (project) {
  959.             $('#PageHomeListProject').append($('<li/>', {
  960.                 'data-theme': "a"}).append($('<a/>', {
  961.                     'href': 'index.html#PageProject',
  962.                     'data-transition': 'slide',
  963.                     'class': 'projectButton',
  964.                     'projectID': project.id,
  965.                     'text': project.Name
  966.             })));
  967.         });
  968.         $("#PageHomeListProject").listview('refresh');
  969.         console.log(BLProject);
  970.     });
  971. }
  972.  
  973.  
  974.  
  975. function setupProjectPage(projectID) {
  976.         BLProject.load(projectID, function(project) {
  977.  
  978.             // If different project, then blank out list first
  979.             if ($("#PageProjectProjectName").text() != project.Name) {
  980.                 $("#PageProjectProjectName").html(project.Name);
  981.  
  982.                 document.BLProject = project;
  983.  
  984.                 console.log("BLProject.BLUser: " + BLProject.BLUser);
  985.  
  986.                 var projects = BLProject.all().filter("id", '=', project.id).prefetch("BLUser");
  987.                 projects.list(null, function(results, err) {
  988.                     if (results) {
  989.                         var blp = results[0];
  990.                         var blu = blp.BLUser;
  991.                         if (blu != null) {
  992.                             $("#PageProjectUserInfo").html(blu.Name1 + " " + blu.Name2);
  993.                         }
  994.                     }
  995.                 });
  996.  
  997. //                      BLUser.load(BLProject.BLUser, function(blUser) {
  998. //                          if (blUser != null) {
  999. //                              $("#PageProjectUserInfo").html(blUser.Name1 + " " + blUser.Name2);
  1000. //                          }
  1001. //                      });
  1002.                 $('#PageProjectListUnit').empty();
  1003.                 var units = BLUnit.all().filter("BLProject", '=', projectID);
  1004.                 units.list(null, function(results, err) {
  1005.                     if (results) {
  1006.                         for (i = 0; i < results.length; i ++) {
  1007.                             unit = results[i];
  1008.                             $('#PageProjectListUnit').append($('<li/>', {
  1009.                                 'data-theme': "a"}).append($('<a/>', {
  1010.                                     'href': 'index.html#PageUnit',
  1011.                                     'class': 'unitButton',
  1012.                                     'data-transition': 'slide',
  1013.                                     'unitID' : unit.id,
  1014.                                     'text': unit.Name
  1015.                             })));
  1016.                             console.log(unit.Name);
  1017.                         }
  1018.                         $("#PageProjectListUnit").listview('refresh');
  1019.                     } else {
  1020.                         console.log("no units");
  1021.                     }
  1022.                 });
  1023.             }
  1024.         });
  1025. }
  1026.  
  1027.  
  1028.  
  1029.  
  1030. function setupUnitPage(unitID) {
  1031.         console.log("Parameter unitID=" + unitID);
  1032.  
  1033.         BLUnit.load(unitID, function(unit) {
  1034.  
  1035.             document.BLUnit = unit;
  1036.  
  1037.             if ($("#PageUnitUnitName").text() != unit.Name) {
  1038.  
  1039.                 $("#PageUnitUnitName").html(unit.Name);
  1040. //                      $("#PageUnitUnitName2").html(unit.Name);
  1041.                 $("#PageUnitUnitBuyerClosingDate").html(unit.BuyerClosingDate != null ? unit.BuyerClosingDate : "N/A");
  1042.                 $("#PageUnitUnitPurchaseDate").html(unit.PurchaseDate != null ? unit.PurchaseDate : "N/A");
  1043.                 $("#PageUnitUnitOccupancyDate").html(unit.OccupancyDate != null ? unit.OccupancyDate : "N/A");
  1044.                 $("#PageUnitUnitMunicipalAddress").html(unit.MunicipalAddress != null ? unit.MunicipalAddress : "N/A");
  1045.                 $("#PageUnitUnitCity").html(unit.City != null ? unit.City : "N/A");
  1046.                 $("#PageUnitUnitModel").html(unit.Model != null ? unit.Model : "N/A");
  1047.                 $("#PageUnitUnitCode").html(unit.Code != null ? unit.Code : "N/A");
  1048.                 $("#PageUnitUnitTarion").html(unit.Tarion != null ? unit.Tarion : "N/A");
  1049.  
  1050.                 BLUser.findBy("BLUnit", unit.id, function(purchaser) {
  1051.                     if (purchaser) {
  1052.                         $("#PageUnitPurchaserName").text(purchaser.Name1 + " " + purchaser.Name2 + ", " + purchaser.Name3 + " " + purchaser.Name4);
  1053.                         $("#PageUnitPurchaserPhone1").html(purchaser.Phone1 != null ? purchaser.Phone1 : "N/A");
  1054.                         $("#PageUnitPurchaserPhone2").html(purchaser.Phone2 != null ? purchaser.Phone2 : "N/A");
  1055.                         $("#PageUnitPurchaserEmail").html(purchaser.Email != null ? purchaser.Email : "N/A");
  1056.                         $("#PageUnitPurchaserStreet").html(purchaser.Street != null ? purchaser.Street : "N/A");
  1057.                         $("#PageUnitPurchaserCity").html(purchaser.City != null ? purchaser.City : "N/A");
  1058.                         $("#PageUnitPurchaserProvince").html(purchaser.Province != null ? purchaser.Province : "N/A");
  1059.                         $("#PageUnitPurchaserPostalCode").html(purchaser.PostalCode != null ? purchaser.PostalCode : "N/A");
  1060.                     }
  1061.                 });
  1062.  
  1063.                 $('#PageUnitGridDeficiencies').empty();
  1064.                 var defs = BLDeficiency.all().filter("BLUnit", '=', unit.id).prefetch("BLRoom").prefetch("BLDeficiencyType");
  1065.                 defs.list(null, function(results, err) {
  1066.                     if (results) {
  1067.                         defsTable = $('#PageUnitGridDeficiencies');
  1068.                         defsTable.append($('<thead/>')).append(
  1069.                                                  $('<tr/>', {'class': 'blBold'}).append(
  1070.                                                  $('<td/>', {'class': 'blBold'}).text('View')
  1071.                                                , $('<td/>', {'class': 'blBold'}).text('Room')
  1072.                                                , $('<td/>', {'class': 'blBold'}).text('Type')
  1073.                                                , $('<td/>', {'class': 'blBold'}).text('Description')
  1074.                                                , $('<td/>', {'class': 'blBold'}).text('Source')
  1075.                                                , $('<td/>', {'class': 'blBold'}).text('Status')
  1076.                                                , $('<td/>', {'class': 'blBold'}).text('Supplier')
  1077.                                                 ));
  1078.                         for (i = 0; i < results.length; i ++) {
  1079.                             def = results[i];
  1080.                             pageUnitGridDeficienciesDeficiencyAppend(def, i);
  1081.                         }
  1082.                     } else {
  1083.                         console.log("no defs");
  1084.                     }
  1085.                     $('#PageUnitButtonAddDeficiency').attr('href', "index.html#PageModifyDeficiency").attr('class', 'addDeficiencyButton').attr('unitID', unit.id);
  1086.  
  1087. //                          $('#PageUnitGridDeficiencies').append($('<div/>', {'class': "grid_12"}).append($('<a/>', {
  1088. //                              'href': 'index.html#PageModifyDeficiency?unitID=' + unit.id,
  1089. //                              'id': 'PageUnitButtonAddDeficiency',
  1090. //                              'data-transition': 'slide',
  1091. //                              'text': 'Add Deficiency'
  1092. //                          })));
  1093.                     $("#PageUnitButtonAddDeficiency").trigger("create");
  1094.                 });
  1095.  
  1096.             }
  1097.         });
  1098.  
  1099. }
  1100.  
  1101.  
  1102. function createEventHandlers() {
  1103.     console.log("createEventHandlers");
  1104.  
  1105.     // Setup for jqm.page.params.js plugin
  1106.     $(document).bind("pagebeforechange", function( event, data ) {
  1107.         $.mobile.pageData = (data && data.options && data.options.pageData) ? data.options.pageData : null;
  1108.  
  1109.     });
  1110.  
  1111.     $( document ).bind( "mobileinit", function() {
  1112.         // Make your jQuery Mobile framework configuration changes here!
  1113.         $.support.cors = true;
  1114.         $.mobile.allowCrossDomainPages = true;
  1115.     });
  1116.  
  1117.     $(document).on("vclick", ".projectButton", function() {
  1118.         setupProjectPage($(this).attr("projectID"));
  1119.     });
  1120.  
  1121.  
  1122.     $(document).on("vclick", ".unitButton", function() {
  1123.         setupUnitPage($(this).attr("unitID"));
  1124.     });
  1125.  
  1126.  
  1127.     $(document).on("vclick", ".addDeficiencyButton", function() {
  1128.     //          setupDeficiencyPage($(this).attr("unitID"));
  1129.         pageModifyDeficiencyActivate($(this).attr("unitID"), null);
  1130.     });
  1131.  
  1132.  
  1133.  
  1134.  
  1135.     $("#PageProjectSync").on("pageshow", function(e, data){
  1136.         console.log("1111PageSync.Project=" + document.BLProject);
  1137.         console.log(document.BLProject.Domain);
  1138.  
  1139.         if (document.BLProject != null) {
  1140.             console.log("PageSync.Project=" + document.BLProject);
  1141.  
  1142.             console.log("PageSync.ProjectName=" + document.BLProject.Name);
  1143.  
  1144.             $("#PageProjectSyncProjectName").html(document.BLProject.Name);
  1145.             $("#PageProjectSyncDomain").val(document.BLProject.Domain);
  1146.  
  1147.             var defsToSync = BLDeficiency.all().filter("RemoteID", '=', "0").filter("BLProject", '=', document.BLProject.id).prefetch("BLRoom").prefetch("BLDeficiencyType");
  1148.             defsToSync.list(null, function(results, err) {
  1149.                 if (results) {
  1150.                     var objects = "Deficiencies: " + results.length;
  1151.                     $("#PageProjectSyncObjectCountText").val(objects);
  1152.                 }
  1153.             });
  1154.  
  1155.             var projects = BLProject.all().filter("id", '=', document.BLProject.id).prefetch("BLUser");
  1156.             projects.list(null, function(results, err) {
  1157.                 if (results) {
  1158.                     var blp = results[0];
  1159.                     var blu = blp.BLUser;
  1160.                     if (blu != null) {
  1161.                         $("#PageProjectSyncUsername").val(blu.Username);
  1162.                         $("#PageProjectSyncPassword").val(blu.Password);
  1163.                     }
  1164.                 }
  1165.             });
  1166.  
  1167.         }
  1168.     });
  1169.  
  1170.     $("#PageUnit").on("pageshow", function(e, data){
  1171.  
  1172.     });
  1173.  
  1174.  
  1175.     $("#PageModifyDeficiency").on("pageshow", function(e, data){
  1176.  
  1177.  
  1178.  
  1179.         console.log("View link has been here");
  1180.  
  1181.         if ($.mobile.pageData && $.mobile.pageData.unitID){
  1182.             console.log("Parameter unitID=" + $.mobile.pageData.unitID);
  1183.             console.log("Parameter unitID=" + $.mobile.pageData.deficiencyID);
  1184.  
  1185.  
  1186.  
  1187.             pageModifyDeficiencyActivate($.mobile.pageData.unitID, $.mobile.pageData.deficiencyID);
  1188.         }
  1189.  
  1190.         //console.log(JSON.stringify(deficiency));
  1191.     });
  1192.  
  1193.         $(document).delegate(".ui-page","pagebeforehide", function(evt, ui){
  1194.         //      alert('pagebeforehide fired');
  1195.         });
  1196.  
  1197.  
  1198.         $("index.html#PageModifyDeficiency").on("pagecontainerbeforechange", function(e, data){
  1199.             var deficiency = document.BLDeficiency;
  1200.             console.log("Save triggered");
  1201.             if (deficiency != null) {
  1202.                 if ( ! deficiency.Saved) {
  1203.                     persistence.remove(deficiency);
  1204.                     persistence.flush();
  1205.                 }
  1206.             }
  1207.         });
  1208.  
  1209. }
  1210.  
  1211.  
  1212. var blankCellValue = "<div>&nbsp;</div>";
  1213.  
  1214. function pageUnitGridDeficienciesDeficiencyAppend (deficiency, row) {
  1215.     defsTable = $('#PageUnitGridDeficiencies tbody');
  1216.  
  1217.     defsTable.append($('<tr>', {'class': 'blTR'}).append(
  1218.                       $('<td/>', {'class': 'blTD'}).append($('<a/>', {'class': 'button',
  1219.                                                                 'href': 'index.html#PageModifyDeficiency?deficiencyID=' + deficiency.id + '&unitID=' + deficiency.BLUnit.id,
  1220.                                                                 'data-transition': 'slide', 'data-role': 'link', 'name': 'PageModifyDeficiencyLink',
  1221.                                                                 'text': 'View'
  1222.                                                                 }))
  1223.                     , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Room"}).html(deficiency.BLRoom != null ? deficiency.BLRoom.Name : blankCellValue)
  1224.                     , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_DeficiencyType"}).html(deficiency.BLDeficiencyType != null ? deficiency.BLDeficiencyType.Name : blankCellValue)
  1225.                     , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Description"}).html(deficiency.Description)
  1226.                     , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Source"}).html(deficiency.Source)
  1227.                     , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_Status"}).html(deficiency.Status)
  1228.                     , $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_SupplierDepartment"}).html(deficiency.BLSupplierDepartment != null ? deficiency.BLSupplierDepartment.CompanyName : blankCellValue)
  1229.                     //, $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_ImageGallery"}).html(deficiency.ImageGallery)
  1230.                     //, $('<td/>', {'class': 'blTD', 'id': "Deficiency_" + deficiency.id + "_ImageTaken"}).html(deficiency.ImageTaken)
  1231.  
  1232.                     )).trigger('create');
  1233. }
  1234.  
  1235.  
  1236. function pageUnitGridDeficienciesDeficiencyUpdate (deficiency) {
  1237.     $('#Deficiency_' + deficiency.id + "_Room").html(deficiency.BLRoom != null ? deficiency.BLRoom.Name : blankCellValue);
  1238.     $('#Deficiency_' + deficiency.id + "_DeficiencyType").html(deficiency.BLDeficiencyType != null ? deficiency.BLDeficiencyType.Name : blankCellValue);
  1239.     $('#Deficiency_' + deficiency.id + "_Description").html(deficiency.Description);
  1240.     $('#Deficiency_' + deficiency.id + "_Source").html(deficiency.Source);
  1241.     $('#Deficiency_' + deficiency.id + "_Status").html(deficiency.Status);
  1242.     $('#Deficiency_' + deficiency.id + "_SupplierDepartment").html(deficiency.BLSupplierDepartment != null ? deficiency.BLSupplierDepartment.CompanyName : blankCellValue);
  1243.     //$('#Deficiency_' + deficiency.id + "_ImageGallery").html(deficiency.ImageGallery);
  1244.     //$('#Deficiency_' + deficiency.id + "_ImageTaken").html(deficiency.ImageTaken);
  1245.  
  1246. }
  1247.  
  1248.  
  1249. //called on Add Deficiency or View (Modify) Deficiency
  1250. var DeficiencySource = null;
  1251. var DeficiencyStatus = null;
  1252.  
  1253.  
  1254. function pageModifyDeficiencyActivate(unitID, deficiencyID) {
  1255.  
  1256.     BLUnit.load(unitID, function(unit) {
  1257.         var deficiency = null;
  1258.         if (deficiencyID == null) {
  1259.  
  1260.             deficiency = new BLDeficiency({BLUnit: unitID, BLProject: unit.BLProject, Saved: false});
  1261.             if (document.DeficiencySource != null) {
  1262.                 deficiency.Source = document.DeficiencySource;
  1263.             }
  1264.             if (document.DeficiencyStatus != null) {
  1265.                 deficiency.Status = document.DeficiencyStatus;
  1266.             }
  1267.  
  1268.             pageModifyDeficiencySetup(unit, deficiency);
  1269.         } else {
  1270.             BLDeficiency.load(deficiencyID, function(deficiency) {
  1271.                 pageModifyDeficiencySetup(unit, deficiency);
  1272.             });
  1273.         }
  1274.     });
  1275. }
  1276.  
  1277. //Called when working on deficiencies
  1278. function pageModifyDeficiencySetup(unit, deficiency) {
  1279.  
  1280.     // If different unit, then blank out list first (no need atm)
  1281.     // pageDeficiencyBlankForm();
  1282.  
  1283.     defId = deficiency.id;
  1284.  
  1285.     if (deficiency._new) {
  1286.         alert("Add a new deficiency!");
  1287.         $("#PageModifyDeficiencyUnitName").html(unit.Name + " Add Deficiency");
  1288.     } else {
  1289.         alert("View an existing deficiency!");
  1290.         $("#PageModifyDeficiencyUnitName").html(unit.Name + " Modify Deficiency");
  1291.     }
  1292.  
  1293.     $("#PageModifyDeficiencyUnitName").attr('persistenceID', unit.id);
  1294.  
  1295.     document.BLDeficiency = deficiency;
  1296.  
  1297.     $('#DeficiencyRoom').empty();
  1298.     addSelectOption("#DeficiencyRoom", "", "", deficiency.BLRoom == null ? "" : deficiency.BLRoom.id);
  1299.     var rooms = BLRoom.all().filter("BLProject", '=', unit.BLProject).order("Name", true);
  1300.     rooms.list(null, function(results, err) {
  1301.         if (results) {
  1302.             for (var i = 0; i < results.length; i ++) {
  1303.                 room = results[i];
  1304.                 addSelectOption("#DeficiencyRoom", room.id, room.Name, deficiency.BLRoom == null ? "" : deficiency.BLRoom.id);
  1305.             }
  1306.             $("#DeficiencyRoom").selectmenu("refresh", true);
  1307.         } else {
  1308.             console.log("no rooms");
  1309.         }
  1310.     });
  1311.  
  1312.     $('#DeficiencyType').empty();
  1313.     addSelectOption("#DeficiencyType", "", "", deficiency.BLDeficiencyType == null ? "" : deficiency.BLDeficiencyType.id);
  1314.     var defTypes = BLDeficiencyType.all().filter("BLProject", '=', unit.BLProject).order("Name", true);
  1315.     defTypes.list(null, function(results, err) {
  1316.         if (results) {
  1317.             for (var i = 0; i < results.length; i ++) {
  1318.                 defType = results[i];
  1319.                 addSelectOption("#DeficiencyType", defType.id, defType.Name, deficiency.BLDeficiencyType == null ? "" : deficiency.BLDeficiencyType.id);
  1320.             }
  1321.             $("#DeficiencyType").selectmenu("refresh", true);
  1322.         } else {
  1323.             console.log("no def types");
  1324.         }
  1325.     });
  1326.  
  1327.     $('#DeficiencyDescription').val(deficiency.Description);
  1328.     //$('#DeficiencyDescription').trigger("create");
  1329.     $('#DeficiencySource').val(deficiency.Source).attr('selected', true).siblings('option').removeAttr('selected');
  1330.     $('#DeficiencySource').selectmenu("refresh", true);
  1331.     $('#DeficiencyStatus').val(deficiency.Status).attr('selected', true).siblings('option').removeAttr('selected');
  1332.     $('#DeficiencyStatus').selectmenu("refresh", true);
  1333.  
  1334.     if ("True" == deficiency.ChargeBack) {
  1335.         $('#DeficiencyChargeBackYes').attr('checked', true).checkboxradio("refresh");
  1336.         $('#DeficiencyChargeBackNo').removeAttr('checked').checkboxradio("refresh"); ;
  1337.     } else {
  1338.         $('#DeficiencyChargeBackYes').removeAttr('checked').checkboxradio("refresh"); ;
  1339.         $('#DeficiencyChargeBackNo').attr('checked', true).checkboxradio("refresh"); ;
  1340.     }
  1341.  
  1342.  
  1343.     $('#DeficiencySupplier').empty();
  1344.     $('#DeficiencySupplierChargeBack').empty();
  1345.     addSelectOption("#DeficiencySupplier", "", "", deficiency.BLSupplierDepartment == null ? "" : deficiency.BLSupplierDepartment.id);
  1346.     addSelectOption("#DeficiencySupplierChargeBack", "", "", deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1347.     var supplierDepartments = BLSupplierDepartment.all().filter("BLProject", '=', unit.BLProject).order("CompanyName", true);
  1348.     supplierDepartments.list(null, function(results, err) {
  1349.         if (results) {
  1350.             for (i = 0; i < results.length; i ++) {
  1351.                 supplierDepartment = results[i];
  1352.                 addSelectOption("#DeficiencySupplier", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartment == null ? "" : deficiency.BLSupplierDepartment.id);
  1353.                 addSelectOption("#DeficiencySupplierChargeBack", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1354.             }
  1355.             $("#DeficiencySupplier").selectmenu("refresh", true);
  1356.             $("#DeficiencySupplierChargeBack").selectmenu("refresh", true);
  1357.         } else {
  1358.             console.log("no def types");
  1359.         }
  1360.     });
  1361.  
  1362.  
  1363.     $('#DeficiencySupplierChargeBack').empty();
  1364.     addSelectOption("#DeficiencySupplierChargeBack", "", "", deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1365.     var supplierDepartmentsChargeBack = BLSupplierDepartment.all().filter("BLProject", '=', unit.BLProject).order("CompanyName", true);
  1366.     supplierDepartments.list(null, function(results, err) {
  1367.         if (results) {
  1368.             for (i = 0; i < results.length; i ++) {
  1369.                 supplierDepartment = results[i];
  1370.                 addSelectOption("#DeficiencySupplierChargeBack", supplierDepartment.id, supplierDepartment.CompanyName + " " + supplierDepartment.ContactName, deficiency.BLSupplierDepartmentChargeBack == null ? "" : deficiency.BLSupplierDepartmentChargeBack.id);
  1371.             }
  1372.             $("#DeficiencySupplierChargeBack").selectmenu("refresh", true);
  1373.             } else {
  1374.             console.log("no def types");
  1375.         }
  1376.     });
  1377.  
  1378.  
  1379.     $('#DeficiencyImageTaken').prop('src','');
  1380.     $("#DeficiencyImageTaken").attr("src", deficiency.ImageTaken);
  1381.  
  1382.     $('#DeficiencyImageGallery').prop('src','');
  1383.     $("#DeficiencyImageGallery").attr("src", deficiency.ImageGallery);
  1384.  
  1385.  
  1386.  
  1387.     //MARIO
  1388.     //ciclo che mette le foto dinamicamente, problema, non distingue le deficiencies
  1389.     /*for (var j = 0; j < len; j += 1) {
  1390.         var imgDynamic = document.createElement('img');
  1391.  
  1392.         imgDynamic.src = '';
  1393.         imgDynamic.src = deficiency.ImageDynamic;
  1394.         //img.width = '100px'
  1395.         //img.height = '100px'
  1396.  
  1397.         // Append the image to the anchor and the anchor to the td
  1398.         document.getElementById($('#DynamicImage')).appendChild(imgDynamic);
  1399.     }*/
  1400.  
  1401.     console.log('id delle pictures sono: ' + deficiency.ImageDynamic);
  1402.  
  1403.     $('#DynamicPictureTaken').html('');
  1404.  
  1405.     //for (var j = 0; j < deficiency.ImageDynamic.length; j += 1) {
  1406.     for (var j in deficiency.ImageDynamic) {
  1407.         $('#DynamicPictureTaken').append('<img src="'+deficiency.ImageDynamic[j]+'" id="def' + defId + 'pic' + j+'" width=20% height =20%>');
  1408.         console.log("src= " +deficiency.ImageDynamic);
  1409.     }
  1410.  
  1411. }
  1412.  
  1413.  
  1414. function addSelectOption(elementID, value, text, valueToSelect) {
  1415.     $(elementID).append($('<option/>', {
  1416.     'value': value,
  1417.     'text': text}));
  1418.  
  1419.     if (valueToSelect == null) {
  1420.         valueToSelect = "";
  1421.     }
  1422.  
  1423. //      if (elementID == "#DeficiencyType") {
  1424. //          console.log(elementID + " '" + value + "' '" + text + "' =test: '" + valueToSelect + "' comp: " + (value == valueToSelect) );
  1425. //      }
  1426.  
  1427. //      if (value == valueToSelect) {
  1428. //          console.log("matched: " + elementID);
  1429. //      }
  1430.  
  1431.     if (value == "") {
  1432.         $(elementID).val(value).attr('data-placeholder', "true");
  1433.     }
  1434.     if (value == valueToSelect) {
  1435. //          console.log("*****" + elementID + ": " + value + " = " + valueToSelect);
  1436.         $(elementID).val(value).attr('selected', true).siblings('option').removeAttr('selected');
  1437.     }
  1438. }
  1439.  
  1440. //NEVER USED FUNCTION
  1441. /*$('#DeficiencyType').click(function(e) {
  1442.     //$('#DeficiencyTypeDescription').empty();
  1443.     BLDeficiencyType.load($('#DeficiencyType').val(), function(deficiencyType) {
  1444.  
  1445.         if (deficiencyType.BLSupplierDepartment != null) {
  1446.             $('#DeficiencySupplier').val(deficiencyType.BLSupplierDepartment.id).attr('selected', true).siblings('option').removeAttr('selected');
  1447.         } else {
  1448.             $('#DeficiencySupplier').val("").attr('selected', true).siblings('option').removeAttr('selected');
  1449.         }
  1450.         $("#DeficiencySupplier").selectmenu("refresh", true);
  1451.  
  1452.         //var defTypeDescs = BLDeficiencyTypeDescription.all().filter("BLDeficiencyType", '=', deficiencyType.id);
  1453.         defTypeDescs.list(null, function(results, err) {
  1454.             if (results) {
  1455.                 for (i = 0; i < results.length; i ++) {
  1456.                     defTypeDesc = results[i];
  1457.                     console.log(defTypeDesc.id);
  1458.                     console.log(defTypeDesc.Description);*/
  1459.                     /*$('#DeficiencyTypeDescription').append($('<option/>', {
  1460.                         'value': defTypeDesc.id,
  1461.                         'text': defTypeDesc.Description
  1462.                     }));*/
  1463.                 /*}
  1464.                 //$("#DeficiencyTypeDescription").selectmenu("refresh", true);
  1465.             } else {
  1466.                 console.log("no def type descs");
  1467.             }
  1468.         });
  1469.     });
  1470. });*/
  1471.  
  1472. /*$('#DeficiencyTypeDescription').click(function(e) {
  1473.     BLDeficiencyTypeDescription.load($('#DeficiencyTypeDescription').val(), function(deficiencyTypeDescription) {
  1474.         $('#DeficiencyDescription').append(" " + deficiencyTypeDescription.Description);
  1475.     });
  1476. });*/
  1477.  
  1478. //END NEVER USED FUNCTION
  1479.  
  1480. $('#DeficiencyChargeBackYes').click(function(e) {
  1481.     $('#DeficiencySupplierChargeBack').val("");
  1482.     $('#DeficiencySupplierChargeBack').removeAttr("disabled");
  1483. });
  1484.  
  1485. $('#DeficiencyChargeBackNo').click(function(e) {
  1486.     $('#DeficiencySupplierChargeBack').val("");
  1487.     $('#DeficiencySupplierChargeBack').attr("disabled");
  1488. });
  1489.  
  1490.  
  1491. $('#PageModifyDeficiencyButtonSave').click(function(e) {
  1492.     var defUnit = $("#PageModifyDeficiencyUnitName").attr('persistenceID');
  1493.  
  1494.     //POTREI CREARE UN ITEM CHIAMATO COL NOME DELLA DEFICIENCY, CON LE IMMAGINI mario
  1495.     //getImageDinamically = document.createElement("")
  1496.  
  1497.  
  1498.     BLUnit.load(defUnit, function(unit) {
  1499.  
  1500.         var defPicDynamic = [];
  1501.         var defProject = unit.BLProject;
  1502.         var defRoom = $('#DeficiencyRoom').val();
  1503.         var defType = $('#DeficiencyType').val();
  1504.         var defDesc = $('#DeficiencyDescription').val();
  1505.         var defSource = $('#DeficiencySource').val();
  1506.         var defStatus = $('#DeficiencyStatus').val();
  1507.         var defSupplier = $('#DeficiencySupplier').val();
  1508.         var defChargeBack = $('input[name*=DeficiencyChargeBack]:checked').val();
  1509.         var defSupplierChargeBack = $('#DeficiencySupplierChargeBack').val();
  1510.         var defPicGallery = $("#DeficiencyImageGallery").attr("src");
  1511.         var defPicTaken = $("#DeficiencyImageTaken").attr("src");
  1512.         //var defPicDynamic = $("#index" + index).attr("src");
  1513.  
  1514.         for (var j = 0; j < len; j += 1) {
  1515.             /*defPicDynamic [j] = document.getElementById('index' + j).src;
  1516.             console.log(defPicDynamic[j]);*/
  1517.             defPicDynamic[j] = document.getElementById('def' + defId + 'pic' + j).src;
  1518.  
  1519.         }
  1520.  
  1521.  
  1522.         console.log("defProject: " + defProject);
  1523.         console.log("defUnit: " + defUnit);
  1524.         console.log("defRoom: " + defRoom);
  1525.         console.log("defType: " + defType);
  1526.         console.log("defDesc: " + defDesc);
  1527.         console.log("defSource: " + defSource);
  1528.         console.log("defStatus: " + defStatus);
  1529.         console.log("defSupplier: " + defSupplier);
  1530.         console.log("defChargeBack: " + defChargeBack);
  1531.         console.log("defSupplierChargeBack: " + defSupplierChargeBack);
  1532.         console.log("defPicGallery: " + defPicGallery);
  1533.         console.log("defPicTaken: " + defPicTaken);
  1534.         console.log("defPicDynamic: " + defPicDynamic);
  1535.  
  1536.         document.DeficiencySource = defSource;
  1537.         document.DeficiencyStatus = defStatus;
  1538.         //document.DeficiencyImageGallery = defPicGallery;
  1539.         //document.DeficiencyImageTaken = defPicTaken;
  1540.  
  1541.  
  1542.  
  1543.         var deficiency = document.BLDeficiency;
  1544.         if (deficiency != null) {
  1545.             deficiency.BLProject = defProject;
  1546.             deficiency.BLUnit = defUnit;
  1547.             deficiency.BLRoom = defRoom;
  1548.             deficiency.BLDeficiencyType = defType;
  1549.             deficiency.Description = defDesc;
  1550.             deficiency.Source = defSource;
  1551.             deficiency.Status = defStatus;
  1552.             deficiency.BLSupplierDepartment = defSupplier;
  1553.             deficiency.BLSupplierDepartmentChargeBack = defSupplierChargeBack;
  1554.             if (defChargeBack != null) {
  1555.                 deficiency.ChargeBack = defChargeBack;
  1556.             }
  1557.             deficiency.ImageGallery = defPicGallery;
  1558.             deficiency.ImageTaken = defPicTaken;
  1559.             deficiency.ImageDynamic = [];
  1560.             deficiency.ImageDynamic = defPicDynamic;
  1561.  
  1562.  
  1563.             var saved = deficiency.Saved;
  1564.             deficiency.Saved = true;
  1565.             persistence.add(deficiency);
  1566.             persistence.flush();
  1567.  
  1568.             if ( ! saved) {
  1569.                 pageUnitGridDeficienciesDeficiencyAppend(deficiency);
  1570.             } else {
  1571.                 pageUnitGridDeficienciesDeficiencyUpdate(deficiency);
  1572.             }
  1573.         }
  1574.     });
  1575.  
  1576. });
  1577.  
  1578. $('#PageModifyDeficiencyButtonCancel').click(function(e) {
  1579.     var deficiency = document.BLDeficiency;
  1580.     if (deficiency != null) {
  1581.         if ( ! deficiency.Saved) {
  1582.             persistence.remove(deficiency);
  1583.             persistence.flush();
  1584.         }
  1585.     }
  1586. //          $.mobile.changePage("index.html#PageUnit", { transition: "slideup"} );
  1587. });
  1588.  
  1589.  
  1590.  
  1591. $("#SetupButton").click(function(e) {
  1592.     e.preventDefault();
  1593.     //alert("SetupButton is clicked");
  1594.     $.mobile.changePage("index.html#PageSetup", { transition: "slideup"} );
  1595.     return false;
  1596. });
  1597.  
  1598.  
  1599. $("#PageSetupDownloadProject").click(function (e) {
  1600.     e.preventDefault();
  1601.     domain = $("#PageSetupDomain").val();
  1602.     username = $("#PageSetupUsername").val();
  1603.     password = $("#PageSetupPassword").val();
  1604.     details = $("#PageSetupDetails");
  1605.     details.append("Starting Download\n");
  1606.     details.append("Domain: " + domain + "\n");
  1607.     details.append("Username: " + username + "\n");
  1608.     details.append("Password: " + password + "\n");
  1609.     details.append("Calling Authentication\n");
  1610.  
  1611.     console.log(domain + ", " + username + ", " + password);
  1612.  
  1613.     $.getJSON("http://" + domain + "/cc/tablet/UserTestPassword.jsp", {UserName: username, Password: password}, function(data) {
  1614. //          alert(data.AuthenticationRequestResult);
  1615.         console.log(data);
  1616.         console.log(data.AuthenticationPassword);
  1617.         console.log(data.AuthenticationUsername);
  1618.         console.log(data.AuthenticationRequestResult);
  1619.         details.append("AuthenticationRequestResult: '" + data.AuthenticationRequestResult + "'\n");
  1620.         if ("Successful Login" == data.AuthenticationRequestResult) {
  1621.             details.append("Get Project Info\n");
  1622.             $.getJSON("http://" + domain + "/cc/tablet/GetProject.jsp", {UserName: username, Password: password}, function(data) {
  1623.                 try {
  1624.                     details.append("Got Project Info\n");
  1625.  
  1626. //                      alert("Name: " + data.Properties[3].Value);
  1627.                     var projectP = propertiesToObject(data.Properties);
  1628.                     details.append("ProjectName: " + projectP.Name + "'\n");
  1629.                     details.append("ProjectID: " + projectP.ID + "'\n");
  1630.  
  1631.                     var blProject = new BLProject({RemoteID: projectP.ID, Name: projectP.Name, Plan: projectP.Plan, CompanyName: projectP.CompanyName, TarionRegistrationNumber: projectP.TarionRegistrationNumber, Municipality: projectP.Municipality});
  1632.                     blProject.Domain = domain;
  1633.                     persistence.add(blProject);
  1634.  
  1635.                     persistence.flush(null, function(err) {
  1636.                         details.append("Storing Project\n");
  1637.  
  1638.                         console.log("Done Flushing!");
  1639.  
  1640.                         details.append("Updating Project List\n");
  1641.  
  1642.                         setupHomePageProjects();
  1643.  
  1644.                         details.append("Downloading Supplier Departments\n");
  1645.  
  1646.                         downloadProjectSupplierDepartments(blProject);
  1647.                     });
  1648.                 } catch (ex) {
  1649.                     alert(ex);
  1650.                 }
  1651.             });
  1652.         }
  1653.     });
  1654.  
  1655. });
  1656.  
  1657.  
  1658. function propertiesToObject(properties) {
  1659.     var obj = new Object();
  1660.     for (i = 0; i < properties.length; i ++) {
  1661.         obj[properties[i].Name] = properties[i].Value;
  1662.     }
  1663. //      console.log(obj);
  1664.     return obj;
  1665. }
  1666.  
  1667. var BatchSize = 3;
  1668.  
  1669.  
  1670. function downloadProjectSupplierDepartments(blProject) {
  1671.     alert("Downloading Supplier Departments (1/7)");
  1672.     details = $("#PageSetupDetails");
  1673.     details.append("SupplierDepartment Sending JSON Request\n");
  1674.     $.getJSON("http://" + domain + "/cc/tablet/GetSupplierDepartments.jsp", {}, function(data) {
  1675.  
  1676.     console.log(JSON.stringify(data));
  1677.     console.log(data);
  1678.  
  1679.         try {
  1680.             details.append("SupplierDepartment Processing Response\n");
  1681.             var supplierDepartments = data.SupplierDepartments;
  1682.             details.append("Records: " + supplierDepartments.length + "\n");
  1683.  
  1684.             processSupplierDepartments(blProject, supplierDepartments, 0);
  1685.  
  1686.         } catch (ex) {
  1687.             alert(ex);
  1688.         }
  1689.     });
  1690. }
  1691.  
  1692. function processSupplierDepartments(blProject, supplierDepartments, startFrom) {
  1693.     var addedObjects = false;
  1694.     for (var i = startFrom; i < supplierDepartments.length && i < startFrom + BatchSize; i ++) {
  1695.  
  1696.         po = supplierDepartments[i];
  1697.         sdp = propertiesToObject(po.Properties);
  1698.         //console.log(sdp);
  1699.  
  1700.         blSupplierDepartment = createBLSupplierDepartment(blProject, sdp.ID, sdp.CompanyName, sdp.ContactName);
  1701.         blSupplierDepartment.Phone1 = sdp.OfficePhone;
  1702.         blSupplierDepartment.Phone1 = sdp.MobilePhone;
  1703.         blSupplierDepartment.Email = sdp.Email;
  1704.         if (i % 10 == 0) {
  1705.             details.append("SupplierDepartment Record " + i + " of " + supplierDepartments.length + "\n");
  1706.         }
  1707.         addedObjects = true;
  1708.     }
  1709.     details.append("SupplierDepartment Done Creating Objects\n");
  1710.  
  1711.     if (addedObjects) {
  1712.         persistence.flush(null, function(err) {
  1713.             if (err != null) {
  1714. //                  alert(err);
  1715.             }
  1716.             details.append("SupplierDepartment Done Flush\n");
  1717.             console.log("Done SupplierDepartments Flushing!");
  1718.             processSupplierDepartments(blProject, supplierDepartments, startFrom + BatchSize);
  1719.         });
  1720.     } else {
  1721.         //downloadProjectDeficiencyTypes(blProject);
  1722.         downloadProjectUnits(blProject);
  1723.     }
  1724. }
  1725.  
  1726. function downloadProjectDeficiencyTypes(blProject) {
  1727.     alert("Downloading Deficiency Types (3/7)");
  1728.     details = $("#PageSetupDetails");
  1729.     details.append("DeficiencyTypes Sending JSON Request\n");
  1730.     $.getJSON("http://" + domain + "/cc/tablet/GetDeficiencyTypes.jsp", {}, function(data) {
  1731.         try {
  1732.             details.append("DeficiencyTypes Processing Response\n");
  1733.             var defTypes = data.DeficiencyTypes;
  1734.             details.append("Records: " + defTypes.length + "\n");
  1735.  
  1736.             $("#PageSetupSliderRecords").attr("value", 0);
  1737.             $("#PageSetupSliderRecords").attr("max", defTypes.length);
  1738.  
  1739.             for (var i = 0; i < defTypes.length; i ++) {
  1740.                 po = defTypes[i];
  1741.                 dtp = propertiesToObject(po.Properties);
  1742.  
  1743.                 sdid = dtp.SupplierDepartment;
  1744.                 if (sdid != "-1") {
  1745.                     ( function (dtp) {
  1746.                         var sds = BLSupplierDepartment.all().filter("RemoteID", '=', dtp.SupplierDepartment);
  1747.                         sds.list(null, function(results, err) {
  1748.                             console.log("results: " + results.length);
  1749.                             if (results && results.length > 0) {
  1750. //                                  alert("found Supplier Department");
  1751.                                 sd = results[0];
  1752.                                 var blDefType = createBLDeficiencyType(blProject, dtp.ID, dtp.Name, sd);
  1753.                             }
  1754.                         });
  1755.                     })(dtp);
  1756.  
  1757.                 } else {
  1758.                     var blDefType = createBLDeficiencyType(blProject, dtp.ID, dtp.Name, null);
  1759.                 }
  1760.  
  1761.                 if (i % 10 == 0) {
  1762.                     details.append("DeficiencyType Record " + i + " of " + defTypes.length + "\n");
  1763.                 }
  1764.             }
  1765.  
  1766. /*
  1767.             var names = new Array();
  1768.             var dtids = new Array();
  1769.             for (var i = 0; i < defTypes.length; i ++) {
  1770.                 $("#PageSetupSliderRecords").attr("value", i);
  1771.                 $("#PageSetupSliderRecords").attr("val", i);
  1772.                 $("#PageSetupSliderRecords").slider("refresh", true);
  1773.                 $("#PageSetupSliderRecords").slider();
  1774.  
  1775.                 po = defTypes[i];
  1776.                 dtp = propertiesToObject(po.Properties);
  1777.  
  1778.                 sdid = dtp.SupplierDepartment;
  1779.                 if (sdid != "-1") {
  1780.                     var sds = BLSupplierDepartment.all().filter("RemoteID", '=', sdid);
  1781.                     names[i] = dtp.Name;
  1782.                     dtids[i] = dtp.ID;
  1783.                     // Not sure why this query always returns nothing
  1784.                     sds.list(null, function(results, err) {
  1785.                         console.log("results: " + results.length);
  1786.                         if (results && results.length > 0) {
  1787. //                              alert("found Supplier Department");
  1788.                             sd = results[0];
  1789.                             var blDefType = createBLDeficiencyType(blProject, dtids[i], names[i], sd);
  1790.                         }
  1791.                     });
  1792.                 } else {
  1793.                     var blDefType = createBLDeficiencyType(blProject, dtp.ID, dtp.Name, null);
  1794.                 }
  1795.  
  1796.                 if (i % 10 == 0) {
  1797.                     details.append("DeficiencyType Record " + i + " of " + defTypes.length + "\n");
  1798.                 }
  1799.             }
  1800. */
  1801.             details.append("Deficiency Types Done Creating Objects\n");
  1802.  
  1803.             persistence.flush(null, function(err) {
  1804.                 details.append("DeficiencyTypes Done Flush\n");
  1805.                 console.log("Done DeficiencyTypes Flushing!");
  1806.                 downloadProjectRooms(blProject);
  1807.             });
  1808.  
  1809.         } catch (ex) {
  1810.             alert(ex);
  1811.         }
  1812.     });
  1813. }
  1814.  
  1815. function downloadProjectUnits(blProject) {
  1816.     alert("Downloading Units (2/7)");
  1817.     details = $("#PageSetupDetails");
  1818.     details.append("Units Sending JSON Request\n");
  1819.     $.getJSON("http://" + domain + "/cc/tablet/GetUnits.jsp", {}, function(data) {
  1820.         try {
  1821.             details.append("Units Processing Response\n");
  1822.             var units = data.Units;
  1823.             details.append("Records: " + units.length + "\n");
  1824.  
  1825.             $("#PageSetupSliderRecords").attr("value", 0);
  1826.             $("#PageSetupSliderRecords").attr("max", units.length);
  1827.             for (var i = 0; i < units.length; i ++) {
  1828.                 $("#PageSetupSliderRecords").attr("value", i);
  1829.                 $("#PageSetupSliderRecords").attr("val", i);
  1830.                 $("#PageSetupSliderRecords").slider("refresh", true);
  1831.                 $("#PageSetupSliderRecords").slider();
  1832.  
  1833.                 po = units[i];
  1834.                 up = propertiesToObject(po.Properties);
  1835.                 //console.log(sdp);
  1836.  
  1837.                 var blUnit = createBLUnit(blProject, up.ID, up.Name, up.BuyerClosingDate, up.MunicipalAddress, up.City, up.TarionEnrollmentNumber);
  1838.  
  1839.                 if (i % 10 == 0) {
  1840.                     details.append("Unit Record " + i + " of " + units.length + "\n");
  1841.                 }
  1842.             }
  1843.             details.append("Units Done Creating Objects\n");
  1844.  
  1845.             persistence.flush(null, function(err) {
  1846.                 details.append("Units Done Flush\n");
  1847.                 console.log("Done Units Flushing!");
  1848.                 downloadProjectDeficiencyTypes(blProject);
  1849.             });
  1850.  
  1851.         } catch (ex) {
  1852.             alert(ex);
  1853.         }
  1854.     });
  1855. }
  1856.  
  1857.  
  1858. function downloadProjectRooms(blProject) {
  1859.     alert("Downloading Rooms (4/7)");
  1860.     details = $("#PageSetupDetails");
  1861.     details.append("Room Sending JSON Request\n");
  1862.     $.getJSON("http://" + domain + "/cc/tablet/GetRooms.jsp", {}, function(data) {
  1863.         try {
  1864.             details.append("Room Processing Response\n");
  1865.             var rooms = data.Rooms;
  1866.             details.append("Records: " + rooms.length + "\n");
  1867.  
  1868.             processRooms(blProject, rooms, 0);
  1869.  
  1870.         } catch (ex) {
  1871.             alert(ex);
  1872.         }
  1873.     });
  1874. }
  1875.  
  1876. function processRooms(blProject, rooms, startFrom) {
  1877.     var addedObjects = false;
  1878.     for (var i = startFrom; i < rooms.length && i < startFrom + BatchSize; i ++) {
  1879.  
  1880.         po = rooms[i];
  1881.         sdp = propertiesToObject(po.Properties);
  1882.         //console.log(sdp);
  1883.  
  1884.         blRoom = createBLRoom(blProject, sdp.ID, sdp.Name);
  1885.         if (i % 10 == 0) {
  1886.             details.append("Rooms Record " + i + " of " + rooms.length + "\n");
  1887.         }
  1888.         addedObjects = true;
  1889.     }
  1890.     details.append("Rooms Done Creating Objects\n");
  1891.  
  1892.     if (addedObjects) {
  1893.         persistence.flush(null, function(err) {
  1894.             if (err != null) {
  1895. //                  alert(err);
  1896.             }
  1897.             details.append("Rooms Done Flush\n");
  1898.             console.log("Done Rooms Flushing!");
  1899.             processRooms(blProject, rooms, startFrom + BatchSize);
  1900.         });
  1901.     } else {
  1902.         downloadProjectUsers(blProject);
  1903.     }
  1904. }
  1905.  
  1906.  
  1907.  
  1908. function downloadProjectUsers(blProject) {
  1909.     alert("Downloading Users (5/7)");
  1910.     details = $("#PageSetupDetails");
  1911.     details.append("Users Sending JSON Request\n");
  1912.     $.getJSON("http://" + domain + "/cc/tablet/GetUsers.jsp", {}, function(data) {
  1913.         try {
  1914.             details.append("Users Processing Response\n");
  1915.             var users = data.Users;
  1916.             details.append("Records: " + users.length + "\n");
  1917.  
  1918.             processUsers(blProject, users, 0, 1);
  1919.  
  1920.         } catch (ex) {
  1921.             alert(ex);
  1922.         }
  1923.     });
  1924. }
  1925.  
  1926. function processUsers(blProject, users, startFrom, batchSize) {
  1927.     var addedObjects = false;
  1928.  
  1929.     var username = $("#PageSetupUsername").val();
  1930.     var password = $("#PageSetupPassword").val();
  1931.  
  1932.     for (var i = startFrom; i < users.length && i < startFrom + batchSize; i ++) {
  1933.  
  1934.         po = users[i];
  1935.         sdp = propertiesToObject(po.Properties);
  1936.  
  1937.         var trid = sdp.TreeRootID;
  1938.         if (sdp.ID == 685438) {
  1939.             console.log(trid);
  1940.         }
  1941.         var st = sdp.ID + " " + sdp.UserName;
  1942.         console.log(st);
  1943.         var sds = BLUnit.all().filter("RemoteID", '=', trid);
  1944.         // Not sure why this query always returns nothing
  1945.         sds.list(null, function(results, err) {
  1946.             if (sdp.ID == 685438) {
  1947.                 console.log(trid);
  1948.             }
  1949. //              console.log("results: " + results.length);
  1950.             var unit = null;
  1951.             if (results && results.length > 0) {
  1952. //                              alert("found Supplier Department");
  1953.                 unit = results[0];
  1954.             }
  1955.             var blUser = createBLUser(blProject, unit, sdp.ID, sdp.Name1, sdp.Name2, sdp.HomePhone, sdp.CellPhone, sdp.Email, sdp.StreetAddress, sdp.City, sdp.Province, sdp.PostalCode);
  1956.             blUser.Name3 = sdp.Name3;
  1957.             blUser.Name4 = sdp.Name4;
  1958.             blUser.Username = sdp.UserName;
  1959.             blUser.Password = sdp.Password;
  1960.  
  1961.             if (username == blUser.Username) {
  1962.                 blProject.BLUser = blUser;
  1963.             }
  1964.             var st2 = blUser.RemoteID + " " + blUser.Username;
  1965.             console.log(st2);
  1966.         });
  1967.  
  1968.  
  1969.         if (i % 10 == 0) {
  1970.             details.append("Users Record " + i + " of " + users.length + "\n");
  1971.         }
  1972.         addedObjects = true;
  1973.     }
  1974.     details.append("Users Done Creating Objects\n");
  1975.  
  1976.     if (addedObjects) {
  1977.         persistence.flush(null, function(err) {
  1978.             if (err != null) {
  1979. //                  alert(err);
  1980.             }
  1981.             details.append("Users Done Flush\n");
  1982.             console.log("Done Users Flushing!");
  1983.             processUsers(blProject, users, startFrom + batchSize, batchSize);
  1984.         });
  1985.     } else {
  1986.         //alert("All Done Downloading");
  1987.         downloadProjectFormTemplates(blProject);
  1988.     }
  1989. }
  1990.  
  1991.  
  1992. function downloadProjectFormTemplates(blProject) {
  1993.     alert("Downloading FormTemplates (6/7)");
  1994.     details = $("#PageSetupDetails");
  1995.     details.append("FormTemplates Sending JSON Request\n");
  1996.     $.getJSON("http://" + domain + "/cc/tablet/GetFormTemplates.jsp", {}, function(data) {
  1997.         try {
  1998.             details.append("FormTemplates Processing Response\n");
  1999.             var records = data.FormTemplates;
  2000.             details.append("Records: " + records.length + "\n");
  2001.  
  2002.             processFormTemplates(blProject, records, 0, 1);
  2003.  
  2004.         } catch (ex) {
  2005.             alert(ex);
  2006.         }
  2007.     });
  2008. }
  2009.  
  2010. function processFormTemplates(blProject, records, startFrom, batchSize) {
  2011.     var addedObjects = false;
  2012.     for (var i = startFrom; i < records.length && i < startFrom + batchSize; i ++) {
  2013.  
  2014.         po = records[i];
  2015.         sdp = propertiesToObject(po.Properties);
  2016.  
  2017.         var blFormTemplate = createBLFormTemplate(blProject, sdp.ID, sdp.Title, sdp.Description, sdp.Text);
  2018.  
  2019.         if (i % 10 == 0) {
  2020.             details.append("FormTemplates Record " + i + " of " + records.length + "\n");
  2021.         }
  2022.         addedObjects = true;
  2023.     }
  2024.     details.append("FormTemplates Done Creating Objects\n");
  2025.  
  2026.     if (addedObjects) {
  2027.         persistence.flush(null, function(err) {
  2028.             if (err != null) {
  2029. //                  alert(err);
  2030.             }
  2031.             details.append("FormTemplates Done Flush\n");
  2032.             console.log("Done FormTemplates Flushing!");
  2033.             processFormTemplates(blProject, records, startFrom + batchSize, batchSize);
  2034.         });
  2035.     } else {
  2036.         alert("All Done Downloading (7/7)");
  2037.         //downloadProjectUnits(blProject);
  2038.     }
  2039. }
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070. $("#PageProjectSyncProject").click(function (e) {
  2071.     e.preventDefault();
  2072.     domain = $("#PageProjectSyncDomain").val();
  2073.     username = $("#PageProjectSyncUsername").val();
  2074.     password = $("#PageProjectSyncPassword").val();
  2075.     details = $("#PageProjectSyncDetails");
  2076.  
  2077.     if ("" == domain) {
  2078.         alert("Domain can not be blank");
  2079.         return;
  2080.     }
  2081.     if ("" == username) {
  2082.         alert("Username can not be blank");
  2083.         return;
  2084.     }
  2085.     if ("" == password) {
  2086.         alert("Password can not be blank");
  2087.         return;
  2088.     }
  2089.  
  2090.     details.append("Starting Sync\n");
  2091.     details.append("Domain: " + domain + "\n");
  2092.     details.append("Username: " + username + "\n");
  2093.     details.append("Password: " + password + "\n");
  2094.     details.append("Calling Authentication\n");
  2095.  
  2096.     var hash = true;
  2097.     if (password.length != 32) {
  2098.         hash = false;
  2099.     }
  2100.  
  2101.     console.log(domain + ", " + username + ", " + password);
  2102.  
  2103.     $.post("http://" + domain + "/cc/tablet/UserTestPassword.jsp", {UserName: username, Password: password, Hash: hash}, function(data) {
  2104. //          alert(data.AuthenticationRequestResult);
  2105.         console.log(data);
  2106.         console.log(data.AuthenticationPassword);
  2107.         console.log(data.AuthenticationUsername);
  2108.         console.log(data.AuthenticationRequestResult);
  2109.         details.append("AuthenticationRequestResult: '" + data.AuthenticationRequestResult + "'\n");
  2110.  
  2111.         if ("Successful Login" == data.AuthenticationRequestResult) {
  2112.  
  2113.             details.append("Sending Deficiencies\n");
  2114.  
  2115.             var defsToSync = BLDeficiency.all().filter("RemoteID", '=', "0").filter("BLProject", '=', document.BLProject.id).prefetch("BLRoom").prefetch("BLDeficiencyType").prefetch("BLUnit").prefetch("BLSupplierDepartment");
  2116.             defsToSync.list(null, function(results, err) {
  2117.                 if (results) {
  2118.                     $("#PageProjectSyncSliderRecords").attr("value", 0);
  2119.                     $("#PageProjectSyncSliderRecords").attr("max", results.length);
  2120.                     console.log("Def Count: " + results.length);
  2121.  
  2122.                     details.append("Deficiency Count: " + results.length + "\n");
  2123.  
  2124.                     var countDefs = results.length;
  2125.                     var countSent = 0;
  2126.                     var countResult = 0;
  2127.                     var countSuccess = 0;
  2128.                     var countError = 0;
  2129.  
  2130.                     for (var i = 0; i < results.length; i ++) {
  2131.                         var def = results[i];
  2132.                         details.append("Deficiency: " + i + " Sending\n");
  2133.  
  2134.                         if (def.BLDeficiencyType == null) {
  2135.                             persistence.remove(def);
  2136.                         } else {
  2137.  
  2138.                             $("#PageProjectSyncSliderRecords").attr("value", i);
  2139.                             $("#PageProjectSyncSliderRecords").attr("val", i);
  2140.                             $("#PageProjectSyncSliderRecords").slider("refresh", true);
  2141.                             $("#PageProjectSyncSliderRecords").slider();
  2142.  
  2143.                             var sdid = -1;
  2144.                             if (def.BLSupplierDepartment != null) {
  2145.                                 sdid = def.BLSupplierDepartment.RemoteID;
  2146.                             }
  2147.                             countSent ++;
  2148.  
  2149.                             //DEBUG
  2150.                             console.log(JSON.stringify(def.BLUnit.RemoteID));
  2151.                             console.log(def.Source);
  2152.                             console.log(def.BLPicGallery);
  2153.                             //END
  2154.  
  2155.  
  2156.                             $.getJSON("http://" + domain + "/cc/tablet/UploadDeficiency.jsp",
  2157.                             //$.getJSON("https://builderlynx-679b0.firebaseio.com/",
  2158.                                 {Description: def.Description,
  2159.                                  Source: def.Source,
  2160.                                  Status: def.Status,
  2161.                                  DeficiencyType: def.BLDeficiencyType.RemoteID,
  2162.                                  Room: def.BLRoom.RemoteID,
  2163.                                  Unit: def.BLUnit.RemoteID,
  2164.                                  SupplierDepartment: sdid,
  2165.                                  ImageGallery: def.ImageGallery,
  2166.                                  ImageTaken: def.ImageTaken,
  2167.                                  ImageDynamic: def.ImageDynamic},
  2168.                             function(data) {
  2169.                                 //console.log(JSON.stringify(data));
  2170.                                 try {
  2171.                                     countResult ++;
  2172.                                     console.log("Deficiency: " + i + " Result\n");
  2173.                                     details.append("Deficiency: " + i + " Result\n");
  2174.                                     var defRemoteID = data.Deficiency[0].ID;
  2175.                                     details.append("Deficiency: " + i + " defRemoteID:" + defRemoteID + "\n");
  2176.                                     console.log("Deficiency: " + i + " defRemoteID:" + defRemoteID + "\n");
  2177.                                     def.RemoteID = defRemoteID;
  2178.                                     persistence.add(def);
  2179.                                     persistence.flush();
  2180.                                     countSuccess ++;
  2181.                                     console.log("After Flush: Success:" + countSuccess);
  2182.  
  2183.                                     if (i = results.length) {
  2184.                                         alert("Sync Finished.  \n" +
  2185.                                               "Count Objects: " + countDefs + "\n" +
  2186.                                               "Count Sent   : " + countSent + "\n" +
  2187.                                               "Count Result : " + countResult + "\n" +
  2188.                                               "Count Success: " + countSuccess + "\n" +
  2189.                                               "Count Error  : " + countError + "\n");
  2190.  
  2191.  
  2192.                                     }
  2193.                                 } catch (ex) {
  2194.                                     countError ++;
  2195.                                     console.log(ex.toString());
  2196.                                 }
  2197.                                 //console.log(BLDeficiency);
  2198.                             });
  2199.                         }
  2200.                     }
  2201.                 }
  2202.             });
  2203.  
  2204.  
  2205.         }
  2206.     }, "json");
  2207.  
  2208. });
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223. $("#PageSetupCreateSchema").click(function (e) {
  2224.     databaseCreateSchema(true, false, true);
  2225. });
  2226.  
  2227.  
  2228. $("#PageSetupSetupDemoProjects").click(function (e) {
  2229.     databaseCreateSchema(false, true, true);
  2230. });
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241. //********************************************
  2242. //Utils and testing functions
  2243. //********************************************
  2244.  
  2245.  
  2246. function syncTest() {
  2247.     console.log("Starting Sync Test");
  2248.     var sync = callWhenDone(function() { console.log("all jobs are done!"); });
  2249.     var endJob = function(){ console.log("one job ended"); sync(-1); };
  2250.     for (var i=0; i<10; ++i) {
  2251.         sync(+1);
  2252.         console.log("starting job: " + i);
  2253.         setTimeout(endJob, Math.random()*10000); // to replace with your async function
  2254.     }
  2255. }
  2256.  
  2257. /**
  2258.  * callWhenDone: a simple synchronized callback closure
  2259.  * @author adrienjoly
  2260.  */
  2261. var callWhenDone = function(callback) {
  2262.         var counter = 0;
  2263.         return function (incr) {
  2264.                 if (0 == (counter += incr))
  2265.                         callback();
  2266.         };
  2267. };
  2268.  
  2269. // example use:
  2270. //var sync = callWhenDone(function() { console.log("all jobs are done!"); });
  2271. //var endJob = function(){ console.log("one job ended"); sync(-1); };
  2272. //for (var i=0; i<10; ++i) {
  2273. //       sync(+1);
  2274. //        setTimeout(endJob, Math.random()*10000); // to replace with your async function
  2275. //}
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281. //NEVER USED FUNCTIONS!!!
  2282. function pSchemaSync() {
  2283.     var sync = callWhenDone(function() {
  2284.         console.log("done sync");
  2285.     });
  2286.     sync(+1);
  2287.     persistence.schemaSync(function(tx) {
  2288.         console.log("schema sync done");
  2289.         sync(-1);
  2290.     });
  2291.  
  2292. }
  2293.  
  2294. // Query the database
  2295. //NEVER USED FUNCTIONS!!! ?
  2296. function queryDB(tx) {
  2297.     tx.executeSql('SELECT * FROM BLUnit', [], querySuccess, errorCB);
  2298.     console.log("TEST");
  2299. }
  2300.  
  2301. // Query the success callback
  2302. //
  2303. function querySuccess(tx, results) {
  2304. console.log("TEST");
  2305.     var len = results.rows.length;
  2306.  
  2307.     console.log("DEMO table: " + len + " rows found.");
  2308.     for (var i=0; i<len; i++){
  2309.         console.log("Row = " + i + " BLID = " + results.rows.item(i).BLID + " Data =  " + results.rows.item(i).Name);
  2310.     }
  2311. }
  2312.  
  2313. // Transaction error callback
  2314. //
  2315. function errorCB(err) {
  2316. console.log("TEST");
  2317.     SQLErrors ++;
  2318.     console.log("Error processing SQL: "+err.code + ": Message: " + err.message);
  2319. }
  2320.  
  2321. function nullCB() {
  2322. console.log("TEST");
  2323.     SQLErrors ++;
  2324.     console.log("NullCallBack");
  2325. }
  2326.  
  2327. // Transaction success callback
  2328. //
  2329. function successCB() {
  2330. console.log("TEST");
  2331.     if (SQLDatabase != null) {
  2332.         SQLDatabase.transaction(queryDB, errorCB);
  2333.     }
  2334.  
  2335.     logDatabaseStatus();
  2336. }
  2337.  
  2338. //END NEVER USED FUNCTION
  2339.  
  2340.  
  2341.  
  2342. //NEVER USED FUNCTION!!! ?
  2343. function getDatabaseObject(table, ID, jquerySelectorText) {
  2344.  
  2345.     SQLDatabase.transaction(
  2346.         function(transaction) {
  2347.             console.log("mess1: " + ID);
  2348.             transaction.executeSql(
  2349.                 'SELECT * FROM BLProject WHERE BLID = ?',
  2350.                 [parseInt(ID)],
  2351.                 function(transaction, result) {
  2352.                     console.log("inner result: " + result.rows.length);
  2353.                     if (result != null && result.rows != null) {
  2354.                         for (var i = 0; i < result.rows.length; i++) {
  2355.                             var row = result.rows.item(i);
  2356.                             $(jquerySelectorText).html(row.Name);
  2357.                         }
  2358.                     }
  2359.                 },
  2360.                 errorCB
  2361.             );
  2362.         },
  2363.         errorCB,
  2364.         nullCB
  2365.     );
  2366. }
  2367.  
  2368. function applyFunctionToDatabaseObject(table, ID, functionToApply) {
  2369.  
  2370.     SQLDatabase.transaction(
  2371.         function(transaction) {
  2372.             console.log("mess1: " + ID);
  2373.             transaction.executeSql(
  2374.                 'SELECT * FROM ' + table + ' WHERE BLID = ?',
  2375.                 [parseInt(ID)],
  2376.                 functionToApply,
  2377.                 errorCB
  2378.             );
  2379.         },
  2380.         errorCB,
  2381.         nullCB
  2382.     );
  2383. }
  2384.  
  2385.  
  2386. function applyFunctionToDatabaseResult(query, functionToApply) {
  2387.  
  2388.     SQLDatabase.transaction(
  2389.         function(transaction) {
  2390.             console.log("applyFunctionToDatabaseResult.query: " + query);
  2391.             transaction.executeSql(
  2392.                 query,
  2393.                 [],
  2394.                 functionToApply,
  2395.                 errorCB
  2396.             );
  2397.         },
  2398.         errorCB,
  2399.         nullCB
  2400.     );
  2401. }
  2402.  
  2403. function getDatabaseObjectSuccess(tx, results) {
  2404.     var len = results.rows.length;
  2405.     console.log("DEMO table: " + len + " rows found.");
  2406.     for (var i=0; i<len; i++){
  2407.         console.log("getDatabaseObject.Row = " + i + " ID = " + results.rows.item(i).ID + " Data =  " + results.rows.item(i).Name);
  2408.     }
  2409. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement