Advertisement
Guest User

Untitled

a guest
Jun 30th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @model Sprinx.Crm.Web.Models.Dashboard.Model
  2. @{
  3.     ViewBag.Title = "Dashboard";
  4.     Layout = "~/Views/Shared/_SimpleLayout.cshtml";
  5. }
  6. <div class="option-row clearfix option-row-dashboard" style="line-height: 34px; padding-right: 30px;">
  7.     <div class="col-sm-offset-0 col-lg-1" id="tabContainer"><b>Tab&nbsp;</b><b id="tabNumber">0</b>&nbsp;<b id="savingIndicator" style="display: none;">Saving</b></div>
  8.     <div class="col-sm-4 col-lg-1" id="phoneContainer" style="display:none">
  9.         <i class="fa fa-phone"></i> @Model.DisplayPhone
  10.     </div>
  11.     <div class="col-sm-4 col-lg-1" id="timerContainer" style="display:none">
  12.         <i class="fa fa-clock-o"></i> <span class="timer-display"></span>
  13.     </div>
  14.     <div class="pull-right">
  15.         <a class="btn btn-sm btn-default j-showSearchPanel"><i class="fa  fa-search"></i> Search</a>
  16.         @*<a class="btn btn-sm btn-default j-searchMoreLink"><i class="fa  fa-search-plus"></i> Advanced search</a>*@
  17.         <a class="btn btn-sm btn-default j-show-serviceTool"><i class="fa  fa-search"></i> Service Tool</a>
  18.         <a class="btn btn-sm btn-default j-hideSearch"><i class="fa-eye-slash fa"></i> Hide search</a>
  19.         <a class="btn btn-sm btn-default" href="@Url.Content(" ~/Dashboard/Personal")"><i class="fa fa-user"></i> Personal</a>
  20.         &nbsp;&nbsp;
  21.         <a class="btn btn-sm btn-default j-sessions"> Autosave</a>
  22.         &nbsp;&nbsp;
  23.         <a class="btn btn-sm btn-info j-extendColumn extend-252" title="25/50/25"><i class="ci ci-layout-252"></i></a>
  24.         <a class="btn btn-sm btn-default j-extendColumn extend-441" title="45/50/5"><i class="ci ci-layout-441"></i></a>
  25.         <a class="btn btn-sm btn-default j-extendColumn extend-144" title="5/50/45"><i class="ci ci-layout-144"></i></a>
  26.         <a class="btn btn-sm btn-default j-extendColumn extend-118" title="5/5/90"><i class="ci ci-layout-118"></i></a>
  27.         <a class="btn btn-sm btn-default j-extendColumn extend-181" title="5/90/5"><i class="ci ci-layout-181"></i></a>
  28.         <a class="btn btn-sm btn-default j-extendColumn extend-811" title="90/5/5"><i class="ci ci-layout-811"></i></a>
  29.     </div>
  30. </div>
  31. <div class="dashboard">
  32.     @using (Html.BeginForm("Index", "Dashboard", FormMethod.Post, new { @class = "dashoboardSearch" })) {
  33.         <div id="dashboardSearchContent" class="form-horizontal j-search table-responsive" style="display: none" data-sws-attributes="style">
  34.             <div class="j-searchPanel clearfix">
  35.                 <div class="col-lg-2">
  36.                     <div class="form-group">
  37.                         <label class="control-label" for="txtName">Name</label>
  38.                         <div>
  39.                             <input class="form-control" id="txtName" name="Name" placeholder="Name" />
  40.                         </div>
  41.                         <div class="search-history alert alert-info">
  42.                             <ul class="j-search-history-name"></ul>
  43.                         </div>
  44.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  45.                             <div class="panel-body">
  46.                                 <ul>
  47.                                     <li><a href="#">Novák, Adam</a></li>
  48.                                     <li><a href="#">Novák, Jiří</a></li>
  49.                                     <li><a href="#" class="active">Novák, Jaroslav</a></li>
  50.                                     <li><a href="#">Novák, Zdeněk</a></li>
  51.                                 </ul>
  52.                             </div>
  53.                         </div>
  54.                     </div>
  55.                 </div>
  56.                 <div class="col-lg-2">
  57.                     <div class="form-group">
  58.                         <label class="control-label" for="txtPhone">Phone</label>
  59.                         <div>
  60.                             <input class="form-control" id="txtPhone" name="Phone" placeholder="Phone" value="@Model.SearchPhone" />
  61.                         </div>
  62.                         <div class="search-history alert alert-info">
  63.                             <ul class="j-search-history-phone"></ul>
  64.                         </div>
  65.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  66.                             <div class="panel-body">
  67.                                 <ul>
  68.                                     <li><a href="#" class="active">+420 777 521 123</a></li>
  69.                                 </ul>
  70.                             </div>
  71.                         </div>
  72.                     </div>
  73.                 </div>
  74.                 <div class="col-lg-2">
  75.                     <div class="form-group">
  76.                         <label class="control-label" for="txtEmail">E-mail</label>
  77.                         <div>
  78.                             <input class="form-control" id="txtEmail" name="Email" placeholder="E-mail" />
  79.                         </div>
  80.                         <div class="search-history alert alert-info">
  81.                             <ul class="j-search-history-email"></ul>
  82.                         </div>
  83.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  84.                             <div class="panel-body">
  85.                                 <ul>
  86.                                     <li><a href="#" class="active">jaroslav.novak@novak.cz</a></li>
  87.                                 </ul>
  88.                             </div>
  89.                         </div>
  90.                     </div>
  91.                 </div>
  92.                 <div class="col-lg-2">
  93.                     <div class="form-group">
  94.                         <label class="control-label" for="txtState">Address</label>
  95.                         <div>
  96.                             <input class="form-control" id="txtState" name="State" placeholder="Address" />
  97.                         </div>
  98.                         <div class="search-history alert alert-info">
  99.                             <ul class="j-search-history-state"></ul>
  100.                         </div>
  101.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  102.                             <div class="panel-body">
  103.                                 <ul>
  104.                                     <li><a href="#" class="active">Česká republika</a></li>
  105.                                 </ul>
  106.                             </div>
  107.                         </div>
  108.                     </div>
  109.                 </div>
  110.                 <div class="col-lg-2 j-searchMore" style="display: none">
  111.                     <div class="form-group">
  112.                         <label class="control-label" id="txtZip">ZIP</label>
  113.                         <div>
  114.                             <input class="form-control" id="txtZip" placeholder="ZIP" />
  115.                         </div>
  116.                         <div class="search-history alert alert-info">
  117.                             <ul class="j-search-history-zip"></ul>
  118.                         </div>
  119.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  120.                             <div class="panel-body">
  121.                                 <ul>
  122.                                     <li><a href="#">120 00</a></li>
  123.                                 </ul>
  124.                             </div>
  125.                         </div>
  126.                     </div>
  127.                 </div>
  128.                 <div class="col-lg-2">
  129.                     <div class="form-group">
  130.                         <label class="control-label" for="txtRepairId">Ref. No (Rep, SN, MOVEX, SAP)</label>
  131.                         <div>
  132.                             <input class="form-control" id="txtRepairId" name="RepairId" placeholder="Reference Number" />
  133.                         </div>
  134.                         <div class="search-history alert alert-info">
  135.                             <ul class="j-search-history-repairId"></ul>
  136.                         </div>
  137.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  138.                             <div class="panel-body">
  139.                                 <ul>
  140.                                     <li><a href="#">57227373</a></li>
  141.                                     <li><a href="#" class="active">45763852</a></li>
  142.                                 </ul>
  143.                             </div>
  144.                         </div>
  145.                     </div>
  146.                 </div>
  147.                 <div class="col-lg-2">
  148.                     <div class="form-group">
  149.                         <label class="control-label" for="caseId">Case ID</label>
  150.                         <div>
  151.                             <input class="form-control" id="caseId" name="CaseId" placeholder="Case ID" />
  152.                         </div>
  153.                         <div class="search-history alert alert-info">
  154.                             <ul class="j-search-history-caseId"></ul>
  155.                         </div>
  156.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  157.                             <div class="panel-body">
  158.                                 <ul></ul>
  159.                             </div>
  160.                         </div>
  161.                     </div>
  162.                 </div>
  163.                 <div class="col-lg-2 j-searchMore" style="display: none">
  164.                     <div class="form-group">
  165.                         <label class="control-label" for="txtOrderID">Order ID</label>
  166.                         <div>
  167.                             <input class="form-control" id="txtOrderID" placeholder="Order ID" />
  168.                         </div>
  169.                         <div class="search-history alert alert-info">
  170.                             <ul class="j-search-history-orderId"></ul>
  171.                         </div>
  172.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  173.                             <div class="panel-body">
  174.                                 <ul></ul>
  175.                             </div>
  176.                         </div>
  177.                     </div>
  178.                 </div>
  179.                 <div class="col-lg-2 j-searchMore" style="display: none">
  180.                     <div class="form-group">
  181.                         <label class="control-label" for="txtSerialNumber">Serial number</label>
  182.                         <div>
  183.                             <input class="form-control" id="txtSerialNumber" placeholder="Serial number" />
  184.                         </div>
  185.                         <div class="search-history alert alert-info">
  186.                             <ul class="j-search-history-serialNumber"></ul>
  187.                         </div>
  188.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  189.                             <div class="panel-body">
  190.                                 <ul></ul>
  191.                             </div>
  192.                         </div>
  193.                     </div>
  194.                 </div>
  195.                 <div class="col-lg-2 j-searchMore" style="display: none">
  196.                     <div class="form-group">
  197.                         <label class="control-label" for="txtVoucherId">Voucher ID</label>
  198.                         <div>
  199.                             <input class="form-control" id="txtVoucherId" placeholder="Voucher ID" />
  200.                         </div>
  201.                         <div class="search-history alert alert-info">
  202.                             <ul class="j-search-history-voucherId"></ul>
  203.                         </div>
  204.                         <div class="j-browserPanel browser-panel panel panel-default" style="display: none">
  205.                             <div class="panel-body">
  206.                                 <ul></ul>
  207.                             </div>
  208.                         </div>
  209.                     </div>
  210.                 </div>
  211.             </div>
  212.  
  213.             <div class="pull-right j-searchButtons searchButtons">
  214.                 <a class="btn btn-default j-hideSearch btn-sm"><i class="fa-eye-slash fa"></i> Hide</a>
  215.                 <a class="btn btn-default j-clearForm btn-sm"><i class="fa fa-eraser"></i> Clear</a>&nbsp;&nbsp;&nbsp;
  216.                 <a class="btn btn-success btn-sm" id="btnSearch" data-position="top left"><i class="fa  fa-search"></i> Search</a>
  217.             </div>
  218.         </div>
  219.     }
  220.     @using (Html.BeginForm("Index", "Products/ServiceOrderList", FormMethod.Post, new { @class = "ServiceToolSearch" })) {
  221.         <div id="serviceToolSearchContent" class="j-serviceTool serviceTool-form form-horizontal row" style="display: none" data-sws-attributes="style">
  222.             <div class="col-lg-20">
  223.                 <div class="form-group">
  224.                     <label class="control-label col-sm-6">ST Rep. no.</label>
  225.                     <div class="col-sm-6">
  226.                         <input type="text" class="form-control red-input" id="repairNumber" name="repairNumber" />
  227.                     </div>
  228.                 </div>
  229.                 <div class="form-group">
  230.                     <label class="control-label col-sm-6">ERP number (MOVEX/SAP)</label>
  231.                     <div class="col-sm-6">
  232.                         <input type="text" class="form-control red-input" id="NvxSoNumber" name="ErpNumber" />
  233.                     </div>
  234.                 </div>
  235.                 <div class="form-group">
  236.                     <label class="control-label col-sm-6">Serial number</label>
  237.                     <div class="col-sm-6">
  238.                         <input type="text" class="form-control red-input" id="serialNumber" name="serialNumber" />
  239.                     </div>
  240.                 </div>
  241.                 <div class="form-group">
  242.                     <label class="control-label col-sm-6">Product model</label>
  243.                     <div class="col-sm-6">
  244.                         <select class="form-control red-input" id="productModel" name="productModel" disabled="disabled">
  245.                             <option>Please type a product model</option>
  246.                         </select>
  247.                     </div>
  248.                 </div>
  249.                 <div class="form-group">
  250.                     <label class="control-label col-sm-6">Warranty</label>
  251.                     <div class="col-sm-6">
  252.                         <select class="form-control red-input" id="warranty" disabled="disabled">
  253.                             <option>any</option>
  254.                         </select>
  255.                     </div>
  256.                 </div>
  257.             </div>
  258.             <div class="col-lg-20">
  259.                 <div class="form-group">
  260.                     <label class="control-label col-sm-6">Shipment no. (ORF-CUST)</label>
  261.                     <div class="col-sm-6">
  262.                         <input type="text" class="form-control red-input" id="shipmentNumber" name="shipmentNumber" />
  263.                     </div>
  264.                 </div>
  265.                 <div class="form-group">
  266.                     <label class="control-label col-sm-6">Product status</label>
  267.                     <div class="col-sm-6">
  268.                         <select class="form-control red-input" id="productStatus" name="productStatus">
  269.                             <option value="">Any</option>
  270.                             <option>
  271.                                 ARR
  272.                             </option>
  273.                             <option>
  274.                                 CAN
  275.                             </option>
  276.                             <option>
  277.                                 FIN
  278.                             </option>
  279.                             <option>
  280.                                 REG
  281.                             </option>
  282.                             <option>
  283.                                 PEN
  284.                             </option>
  285.                             <option>REP</option>
  286.                         </select>
  287.                     </div>
  288.                 </div>
  289.                 <div class="form-group">
  290.                     <label class="control-label col-sm-6">Retailer name</label>
  291.                     <div class="col-sm-6">
  292.                         <input type="text" class="form-control blue-input" id="companyName" name="companyName" />
  293.                     </div>
  294.                 </div>
  295.                 <div class="form-group">
  296.                     <label class="control-label col-sm-6">Retailer no</label>
  297.                     <div class="col-sm-6">
  298.                         <input type="text" class="form-control blue-input" id="retaulerNumber" name="retailerNumber" />
  299.                     </div>
  300.                 </div>
  301.                 <div class="form-group">
  302.                     <label class="control-label col-sm-6">Cust. refer no</label>
  303.                     <div class="col-sm-6">
  304.                         <input type="text" class="form-control blue-input" id="custReferenceNumber" name="custReferenceNumber" />
  305.                     </div>
  306.                 </div>
  307.             </div>
  308.             <div class="col-lg-20">
  309.                 <div class="form-group">
  310.                     <label class="control-label col-sm-6">Customer name</label>
  311.                     <div class="col-sm-6">
  312.                         <input type="text" class="form-control green-input" id="customerLastname" name="customerLastname" />
  313.                     </div>
  314.                 </div>
  315.                 <div class="form-group">
  316.                     <label class="control-label col-sm-6">Customer country</label>
  317.                     <div class="col-sm-6">
  318.                         @Html.DropDownListFor(m => m.CustomerCountry, @Model.Countries, "---", new { @class = "form-control green-input" })
  319.                         @*@Html.Partial("CountrySelector", new Sprinx.Crm.Web.Models.CountryModel { KnownCountries = Model.Countries.Select(x => x.Value), SelectedCountry = Model.CustomerCountry })*@
  320.                         @*<select class="form-control green-input" id="customerCountryx" name="customerCountryx" disabled="disabled">
  321.                                 <option>All asigned countries</option>
  322.                             </select>*@
  323.                     </div>
  324.                 </div>
  325.                 <div class="form-group">
  326.                     <label class="control-label col-sm-6">Customer zip</label>
  327.                     <div class="col-sm-6">
  328.                         <input type="text" class="form-control green-input" id="customerZip" name="customerZip" />
  329.                     </div>
  330.                 </div>
  331.                 <div class="form-group">
  332.                     <label class="control-label col-sm-6">Customer city</label>
  333.                     <div class="col-sm-6">
  334.                         <input type="text" class="form-control green-input" id="customerCity" name="customerCity" />
  335.                     </div>
  336.                 </div>
  337.                 <div class="form-group">
  338.                     <label class="control-label col-sm-6">Customer street</label>
  339.                     <div class="col-sm-6">
  340.                         <input type="text" class="form-control green-input" id="customerStreet" name="customerStreet" />
  341.                     </div>
  342.                 </div>
  343.             </div>
  344.             <div class="col-lg-20">
  345.                 <div class="form-group">
  346.                     <label class="control-label col-sm-6">Carr. no. (CUST-ORF)</label>
  347.                     <div class="col-sm-6">
  348.                         <input type="text" class="form-control green-input" id="CustToOrfShopNo" name="CustToOrfShopNo" disabled="disabled" />
  349.                     </div>
  350.                 </div>
  351.                 <div class="form-group">
  352.                     <label class="control-label col-sm-6">Registration date</label>
  353.                     <div class="col-sm-3">
  354.                         <input type="text" class="form-control orange-input date-from" id="registrationDateFrom" name="registrationDateFrom" />
  355.                     </div>
  356.                     <div class="col-sm-3">
  357.                         <input type="text" class="form-control orange-input date-to" id="registrationDateTo" name="registrationDateTo" />
  358.                     </div>
  359.                 </div>
  360.                 <div class="form-group">
  361.                     <label class="control-label col-sm-6">Arrival date</label>
  362.                     <div class="col-sm-3">
  363.                         <input type="text" class="form-control orange-input date-from" id="arrivalDateFrom" name="arrivalDateFrom" />
  364.                     </div>
  365.                     <div class="col-sm-3">
  366.                         <input type="text" class="form-control orange-input date-to" id="arrivalDateTo" name="arrivalDateTo" />
  367.                     </div>
  368.                 </div>
  369.                 <div class="form-group">
  370.                     <label class="control-label col-sm-6">Repair date</label>
  371.                     <div class="col-sm-3">
  372.                         <input type="text" class="form-control orange-input date-from" id="repairDateFrom" name="repairDateFrom" />
  373.                     </div>
  374.                     <div class="col-sm-3">
  375.                         <input type="text" class="form-control orange-input date-to" id="repairDateTo" name="repairDateTo" />
  376.                     </div>
  377.                 </div>
  378.                 <div class="form-group">
  379.                     <label class="control-label col-sm-6">Finish date</label>
  380.                     <div class="col-sm-3">
  381.                         <input type="text" class="form-control orange-input date-from" id="finishDateFrom" name="finishDateFrom" />
  382.                     </div>
  383.                     <div class="col-sm-3">
  384.                         <input type="text" class="form-control orange-input date-to" id="finishDateTo" name="finishDateTo" />
  385.                     </div>
  386.                 </div>
  387.             </div>
  388.             <div class="col-lg-20">
  389.                 <div class="tar cl col-sm-12">
  390.                     <a class="btn btn-default j-clearForm btn-sm"><i class="fa fa-eraser"></i> Clear</a>
  391.                     <a class="btn btn-default j-hideSearch btn-sm"><i class="fa-eye-slash fa"></i> Hide</a>
  392.                     <a class="btn btn-success j-serviceToolSearch btn-sm"><i class="fa fa-search"></i> Search</a>
  393.                 </div>
  394.             </div>
  395.         </div>
  396.     }
  397.     <div class="modal" id="sessionsList" tabindex="-1">
  398.         <div class="modal-dialog">
  399.             <div class="modal-content">
  400.                 <div class="modal-header">
  401.                     <h4 class="modal-title" style="float: left">Autosave</h4>
  402.                     <a class="j-closeSessions" style="float: right">X</a>
  403.                     <div class="clearfix"></div>
  404.                 </div>
  405.                 <div class="modal-body">
  406.                     <table id="sessions"></table>
  407.                 </div>
  408.                 <div class="modal-footer">
  409.  
  410.                 </div>
  411.             </div>
  412.         </div>
  413.     </div>
  414.     <div class="cl"></div>
  415.     <div class="">
  416.         <div class="col-sm-3 j-crmColumn j-column">
  417.             <div class="panel panel-primary dashboard-browser row">
  418.                 <div class="panel-heading clearfix">
  419.                     <h2 class="panel-title pull-left">CRM</h2>
  420.                     <div class="pull-right">
  421.                         <div class="dropdown">
  422.                             <a href="javascript:void(0)" id="crmHistory" class="label label-info" data-toggle="dropdown"><i class="fa fa-clock-o"></i> History</a>
  423.                             <ul class="dropdown-menu" role="menu" id="crmHistory-list" aria-labelledby="crmHistory"></ul>
  424.                         </div>
  425.                     </div>
  426.                 </div>
  427.                 <div class="loading">
  428.                     <img src="~/Content/images/loading.gif" />
  429.                 </div>
  430.                 <div class="panel-body" style="height: 600px" id="dashboardCRM">
  431.                     @Html.Partial("ContactColumn", Model)
  432.                     <div id="crm-noSearchResults" style="display: none;">
  433.                         <p>No contacts found</p>
  434.                     </div>
  435.                     <input type="hidden" id="crmSearchFilter" value="" />
  436.                     <input type="hidden" id="crmState" value="" />
  437.    
  438.                     <div id="serviceOrderList" class="clearfix" style="display: none">
  439.                     </div>
  440.                 </div>
  441.                 <div class="panel-footer">
  442.                     <div class="tar">
  443.                         <a href="#" class="btn btn-sm btn-default j-mergeContacts hidden" style="display: none"><i class="fa fa-group"></i> Merge contacts</a>
  444.                         <a class="btn btn-success btn-sm j-createContact"><i class="fa fa-plus-circle"></i> New Contact</a>
  445.                         <a class="btn btn-success btn-sm j-regMyOlympus"><i class="fa fa-user"></i> Reg. myOlympus</a>
  446.                     </div>
  447.                 </div>
  448.             </div>
  449.         </div>
  450.         <div class="col-sm-6 j-helpdeskColumn j-column">
  451.             <div class="panel panel-primary dashboard-browser row">
  452.                 <div class="panel-heading clearfix">
  453.                     <h2 class="panel-title" id="helpdeskTitle">Helpdesk</h2>
  454.                 </div>
  455.                 <div class="panel-body" style="height: 600px">
  456.                     <iframe src="../HD/Default.aspx" id="HelpdeskFrame" style="width: 100%; height: 580px; border: 0;"></iframe>
  457.                   <div id="crmContactDetail" class="clearfix saveworkstate" data-sws-attributes="style" style="display: none">
  458.                     <iframe id='crmIframe' data-sws-properties='width height' onload='if (typeof checkIframeWindow != "undefined") checkIframeWindow(this.contentWindow.location.pathname);'></iframe>
  459.                   </div>
  460.                 </div>
  461.                 <div class="panel-footer">
  462.                     <div class="tar">
  463.                         <a class="btn btn-info btn-sm"><i class="fa fa-search"></i> Find Contact</a>
  464.                     </div>
  465.                 </div>
  466.             </div>
  467.         </div>
  468.         <div class="col-sm-3 j-knowledgebaseColumn j-column ">
  469.             <div class="panel panel-primary dashboard-browser row">
  470.                 <div class="panel-heading clearfix">
  471.                     <h2 class="panel-title">Knowledgebase</h2>
  472.                 </div>
  473.                 <div class="panel-body reduced" id="dashboardKnowledgebase">
  474.                     <iframe id="KnowledgeBaseFrame" src="http://cz1ss024" style="width: 100%; border: 0;"></iframe>
  475.                 </div>
  476.                 <div class="panel-footer">
  477.                     <div class="tar">
  478.                     </div>
  479.                 </div>
  480.             </div>
  481.         </div>
  482.     </div>
  483. </div>
  484. <div class="modal fade incoming-call" id="incomingCall" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  485.     <div class="modal-dialog">
  486.         <div class="modal-content">
  487.             <div class="modal-header">
  488.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  489.                 <h4 class="modal-title" id="myModalLabel"> Incoming call</h4>
  490.             </div>
  491.             <div class="modal-body clearfix">
  492.                 <div class="col-sm-5 tar">
  493.                     <img src="~/Content/images/incoming_call.png" />
  494.                 </div>
  495.                 <div class="col-sm-7">
  496.                     <div class="fs32 text-primary"><strong>@Model.DisplayPhone</strong></div>
  497.                     <div class="fs28 mb30">is calling</div>
  498.                     <span class="fs24 text-primary"><strong><i class="fa  fa-clock-o"></i> <span class="timer-display">0:12:21</span></strong></span> <span class="fs18"><strong>on line</strong></span>
  499.                 </div>
  500.             </div>
  501.             <div class="modal-footer">
  502.                 <button type="button" class="btn btn-success btn-xlg pull-left" data-dismiss="modal" aria-hidden="true"><i class="fa fa-check" data-dismiss="modal"></i> Accept</button>
  503.                 <button type="button" class="btn btn-danger btn-xlg pull-right" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times" data-dismiss="modal"></i> Deny</button>
  504.             </div>
  505.         </div>
  506.     </div>
  507. </div>
  508. <div class="modal fade incoming-call" id="notImplemented" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  509.     <div class="modal-dialog">
  510.         <div class="modal-content">
  511.             <div class="modal-header">
  512.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  513.                 <h4 class="modal-title" id="myModalLabel"> Not implemented</h4>
  514.             </div>
  515.             <div class="modal-body clearfix">
  516.                 <p class="fs24">This function is not implemented</p>
  517.             </div>
  518.         </div>
  519.     </div>
  520. </div>
  521. <div class="modal fade" id="editPhone" tabindex="-1" role="dialog" aria-labelledby="editPhoneLabel" aria-hidden="true">
  522.     <div class="modal-dialog">
  523.         <div class="modal-content">
  524.             <div class="modal-header">
  525.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  526.                 <h4 class="modal-title" id="editPhoneLabel"> Add phone</h4>
  527.             </div>
  528.             <div class="modal-body clearfix">
  529.                 <div class="input-group">
  530.                     <span class="input-group-addon"><i></i></span>
  531.                     @Html.DropDownList("phonePrefix", @Model.PhoneRegions, "---", new { @class = "chosen-select", required = "required" })
  532.                     <input id="newPhoneNumber" type="text" required class="form-control" />
  533.                 </div>
  534.                 <span id="interpretedPhone" style="display:none"></span>
  535.             </div>
  536.             <div class="modal-footer">
  537.                 <a href="javascript:void(0)" class="btn btn-sm btn-default" data-dismiss="modal"><i class="fa fa-times"></i> Cancel</a>
  538.                 <a href="javascript:void(0)" class="btn btn-sm btn-success j-editPhone-save"><i class="fa fa-check"></i> Save</a>
  539.             </div>
  540.         </div>
  541.     </div>
  542. </div>
  543. <div class="modal fade" id="editContact" tabindex="-1" role="dialog" aria-labelledby="editContactLabel" aria-hidden="true">
  544.     <div class="modal-dialog">
  545.         <div class="modal-content">
  546.             <div class="modal-header">
  547.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  548.                 <h4 class="modal-title" id="editContactLabel"> Add email</h4>
  549.             </div>
  550.             <div class="modal-body clearfix">
  551.                 <div class="input-group">
  552.                     <span class="input-group-addon"><i></i></span>
  553.                     <input type="email" required class="form-control" />
  554.                 </div>
  555.             </div>
  556.             <div class="modal-footer">
  557.                 <a href="javascript:void(0)" class="btn btn-sm btn-default" data-dismiss="modal"><i class="fa fa-times"></i> Cancel</a>
  558.                 <a href="javascript:void(0)" class="btn btn-sm btn-success j-editContact-save"><i class="fa fa-check"></i> Save</a>
  559.             </div>
  560.         </div>
  561.     </div>
  562. </div>
  563. <div class="modal fade" id="editName" tabindex="-1" role="dialog" aria-labelledby="editNameLabel" aria-hidden="true">
  564.     <div class="modal-dialog">
  565.         <div class="modal-content">
  566.             <div class="modal-header">
  567.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  568.                 <h4 class="modal-title" id="editNameLabel">Edit Name</h4>
  569.             </div>
  570.             <div class="modal-body clearfix">
  571.                 <div class="form-group">
  572.                     <label class="control-label col-sm-5">First name:</label>
  573.                     <div class="col-sm-7">
  574.                         <input type="text" name="first-name" class="form-control" />
  575.                     </div>
  576.                     <label class="control-label col-sm-5">Last name:</label>
  577.                     <div class="col-sm-7">
  578.                         <input type="text" name="last-name" class="form-control" />
  579.                     </div>
  580.                     <label class="control-label col-sm-5">Files as:</label>
  581.                     <div class="col-sm-7">
  582.                         <input type="text" name="fileas-name" required class="form-control" />
  583.                     </div>
  584.                 </div>
  585.             </div>
  586.             <div class="modal-footer">
  587.                 <a href="javascript:void(0)" class="btn btn-sm btn-default" data-dismiss="modal"><i class="fa fa-times"></i> Cancel</a>
  588.                 <a href="javascript:void(0)" class="btn btn-sm btn-success j-editName-save"><i class="fa fa-check"></i> Save</a>
  589.             </div>
  590.         </div>
  591.     </div>
  592. </div>
  593. <div class="modal fade" id="editAddress" tabindex="-1" role="dialog" aria-labelledby="editAddressLabel" aria-hidden="true">
  594.     <div class="modal-dialog">
  595.         <div class="modal-content">
  596.             <div class="modal-header">
  597.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  598.                 <h4 class="modal-title" id="editAddressLabel"> Edit Address</h4>
  599.             </div>
  600.             <div class="modal-body clearfix">
  601.                 <div class="form-group">
  602.                     <label class="control-label col-sm-5">Street</label>
  603.                     <div class="col-sm-7">
  604.                         <input type="text" class="form-control" name="street" required />
  605.                     </div>
  606.                     <label class="control-label col-sm-5">City:</label>
  607.                     <div class="col-sm-7">
  608.                         <input type="text" class="form-control" name="city" required />
  609.                     </div>
  610.                     <label class="control-label col-sm-5">ZIP:</label>
  611.                     <div class="col-sm-4">
  612.                         <input type="text" class="form-control" name="zip" required />
  613.                     </div>
  614.                     <label class="control-label col-sm-5">Country:</label>
  615.                     <div class="col-sm-7">
  616.                         @Html.DropDownListFor(m => m.CustomerCountry, @Model.StdCountries, "---", new { @class = "form-control", required = "required" })
  617.                     </div>
  618.                 </div>
  619.             </div>
  620.             <div class="modal-footer">
  621.                 <a href="javascript:void(0)" class="btn btn-sm btn-default" data-dismiss="modal"><i class="fa fa-times"></i> Cancel</a>
  622.                 <a href="javascript:void(0)" class="btn btn-sm btn-success j-editAddress-save"><i class="fa fa-check"></i> Save</a>
  623.             </div>
  624.         </div>
  625.     </div>
  626. </div>
  627. @Scripts.Render("~/bundles/jquery")
  628. @section Scripts {
  629.     <script src="~/Scripts/jquery.nicescroll.js"></script>
  630.     <script src="~/Scripts/jquery.cookie.js"></script>
  631.     <script src="~/Scripts/jquery.datepicker.min.js"></script>
  632.     <script src="~/Scripts/Sprinx/category-ui-controller.js"></script>
  633.     <script>
  634.         function timerUpdater() {
  635.             var diff = Math.floor((new Date().getTime() - CallInformation.callStartUtcTimestamp) /1000);
  636.             var hours = Math.floor(diff /3600);
  637.             var rem = diff % 3600;
  638.             var mins = Math.floor(rem /60);
  639.             var sec = rem % 60;
  640.             var result = new String(sec);
  641.             if (result.length < 2) {
  642.                 result = ":0" + result;
  643.             }
  644.             else {
  645.                 result = ":" + result;
  646.             }
  647.             result = mins + result;
  648.             if (result.length < 5)
  649.             {
  650.                 result = hours + ":0" + result;
  651.             }
  652.             else
  653.             {
  654.                 result = hours + ":" + result;
  655.             }
  656.             $(".timer-display").text(result);
  657.         }
  658.  
  659.         var CallInformation = {
  660.             incommingCall : @Model.IncommingCall.ToString().ToLower(),
  661.             callStartUtcTimestamp : @Model.CallStartUtcTimestamp * 1000,
  662.             searchPhone : "@Model.SearchPhone",
  663.             phone : "@Model.DisplayPhone",
  664.             callId: "@Model.CallId"
  665.         };
  666.  
  667.         $(window).load(function () {
  668.             if (CallInformation.incommingCall) {
  669.                 $("#HelpdeskFrame").attr("src", "../HD/Detail.aspx?GridViewID=8&source=call_in&phone=" + encodeURIComponent(CallInformation.phone) + "&ccx=" + encodeURIComponent(CallInformation.callId));
  670.                 $("#HelpdeskFrame").one("load", function() {
  671.                     $("#phoneContainer").show();
  672.                     $("#timerContainer").show();
  673.                     $(".j-search").show();
  674.                     timerUpdater();
  675.                     window.setInterval(timerUpdater, 500);
  676.                     //$('#incomingCall').modal('show');
  677.                     $("#btnSearch").trigger("click", [null, {blockHDUpdate: true}]);
  678.                 });
  679.             }
  680.             setDashboardHeight("default");
  681.         });
  682.  
  683.  
  684.         if ($.cookie("dashboardCrmHistory") != undefined) {
  685.             var cookieHistory_arr = JSON.parse($.cookie("dashboardCrmHistory"));
  686.             $.each(cookieHistory_arr.reverse(), function (index, value) {
  687.                 $("#crmHistory-list").append("<li><a data-breadcrumbs='" + JSON.stringify(value.item.breadcrumbs) + "' href='" + value.item.url + "' class='j-dashboardLink'>" + value.item.name + "</a>");
  688.             });
  689.         }
  690.         else {
  691.             var cookieHistory_arr = [];
  692.         }
  693.  
  694.         $(".j-mergeContacts").click(function () {
  695.             if ($(this).hasClass("btn-success")) {
  696.                 $("#notImplemented").modal('show');
  697.             }
  698.             else {
  699.                 return false;
  700.             }
  701.         });
  702.  
  703.         $(".j-hideSearch").click(function () {
  704.             $(".j-search, .j-serviceTool, .j-fulltextPanel").hide();
  705.             setDashboardHeight("default");
  706.         });
  707.         $(".j-showSearchPanel").click(function () {
  708.             $(".j-search").show();
  709.             $(".j-serviceTool").hide();
  710.             $(".j-searchMorePanel, .j-fulltextPanel").hide();
  711.  
  712.             $(".j-searchPanel").removeAttr("style");
  713.             $(".j-searchPanel .col-lg-2").removeAttr("style");
  714.             $(".j-searchMore, .j-browserPanel").hide();
  715.             $(".j-searchButtons").show();
  716.  
  717.             setDashboardHeight("search");
  718.             $(".dashboard-browser .panel-body").getNiceScroll().resize();
  719.         });
  720.  
  721.         $(".j-clearForm").click(function () {
  722.             $(".j-search input, .j-serviceTool input").val("");
  723.         });
  724.  
  725.         $(".j-sessions").click(function() {
  726.             clearSessionsList();
  727.             $("#sessionsList").toggle();
  728.             loadSessionsList();
  729.         });
  730.  
  731.         $(".j-closeSessions").click(function() {
  732.             $("#sessionsList").hide();
  733.         })
  734.  
  735.  
  736.  
  737.         $(".dashboard-browser .panel-body").niceScroll({
  738.             spacebarenabled: false
  739.         });
  740.  
  741.         window.onload = function () {
  742.             // Get the window displayed in the iframe.
  743.             var receiver = document.getElementById('HelpdeskFrame').contentWindow;
  744.  
  745.             // Get a reference to the 'Send Message' button.
  746.             var btn = document.getElementById('btnSearch');
  747.  
  748.             // A function to handle sending messages.
  749.             function sendMessage(e) {
  750.                 // Prevent any default browser behaviour.
  751.                 e.preventDefault();
  752.  
  753.                 var pass_data = {
  754.                     'name': document.getElementById('txtName').value,
  755.                     'orderID': document.getElementById('txtOrderID').value
  756.                 };
  757.  
  758.                 // Send a message to the receiver window.
  759.                 receiver.postMessage(pass_data, '@(Request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority))', parent);
  760.                 $.ajax({
  761.                     url: '@Url.Action("ContactColumn")?Name=' + escape($("#txtName").val()),
  762.                     datatype: 'html',
  763.                     success: function (data) {
  764.                         $("#dashboardCRM").html(data).append("<div id=\"crmContactDetail\" style=\"display: none\"></div>");
  765.                     }
  766.                 });
  767.             }
  768.  
  769.             window.postMessagesOrigin = '@(Request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority))';
  770.  
  771.             // Add an event listener that will execute the sendMessage() function
  772.             // when the send button is clicked.
  773.             btn.addEventListener('click', sendMessage);
  774.             window.sessionID = '';
  775.             window.tabNumber = 0;
  776.             window.saveNumber = -1;
  777.             window.saveHistoryLength = 5;
  778.             window.displayHistoryLength = 5;
  779.  
  780.             var rootUrl = [window.location.protocol, '//', window.location.host, window.location.pathname].join('');
  781.             var post_createSession = {rooturl: rootUrl};
  782.  
  783.             $.post(actionCreateSession, post_createSession, function(data) {
  784.                 window.sessionID = data.sessionid;
  785.                 window.tabNumber = data.tabnumber;
  786.                 window.saveNumber = 0;
  787.                 $('#tabNumber').html(window.tabNumber);
  788.                 window.setInterval(sendMessageSaveWorkStateToAll, 20000);
  789.             });
  790.             //sendMessageLoadWorkStateToAll(null);
  791.         }
  792.  
  793.         function clearSessionsList() {
  794.             $('#sessions').html("");
  795.         }
  796.  
  797.         function toggleSessionWorkStates(sessionId) {
  798.           $('.wsItem').filter('[data-ws-sessionId='+sessionId+']').toggle();
  799.           $('.wsItem').filter('[data-ws-sessionId!='+sessionId+']').hide();
  800.         }
  801.  
  802.         function loadSessionsList() {
  803.             var rootUrl = [window.location.protocol, '//', window.location.host, window.location.pathname].join('');
  804.             var req = {
  805.                 rooturl: rootUrl,
  806.             };
  807.             $.ajax({
  808.                 url: actionListSessions,
  809.                 data: JSON.stringify(req),
  810.                 method: 'POST',
  811.                 dataType: 'json',
  812.                 contentType: 'application/json; charset=UTF-8',
  813.                 success: function(data) {
  814.                     clearSessionsList();
  815.                     $('#sessions').append('<tr><th>&nbsp;</th><th>Created&nbsp;</th><th>Username&nbsp;</th><th>Tab Number&nbsp;</th><th>Contact&nbsp;</th><th>Case ID&nbsp;</th><th>Message ID&nbsp;</th><th>Interaction&nbsp;</th><th>HD Scenario&nbsp;</th></tr>');
  816.                     var rowClass='odd';
  817.                     $.each(data, function(index, s) {
  818.                         if (window.top.sessionID && (s.sessionid.toLowerCase() == window.top.sessionID.toLowerCase())) {
  819.                             return;
  820.                         }
  821.  
  822.                         var del = "deleteSession('" + s.sessionid + "'); return false;";
  823.                         //var click = "loadSession('" + s.sessionid + "'); return false;";
  824.                         var click = "toggleSessionWorkStates('" + s.sessionid + "'); return false;";
  825.                         var sessionDate = dateFormat(s.createdat, "yyyy/mm/dd HH:MM:ss");
  826.                         //$('#sessions').append('<tr class="' + rowClass + '"><td><a onClick="' + del + '">X</a>&nbsp;</td><td><a onClick="' + click + '">' + sessionDate + '</a>&nbsp;</td><td>' + s.username + '&nbsp;</td><td>' + s.tabnumber + '&nbsp;</td><td>' + contactName + '&nbsp;</td><td>' + caseId + '&nbsp;</td><td>' + messageId + '&nbsp;</td><td>' + interactionType + '&nbsp;</td></tr>');
  827.                         $('#sessions').append('<tr class="' + rowClass + '"><td><a href="#" class="wsSessionDelete" onClick="' + del + '">X</a>&nbsp;</td><td><a href="#" onClick="' + click + '">' + sessionDate + '</a>&nbsp;</td><td>' + s.username + '&nbsp;</td><td>' + s.tabnumber + '&nbsp;</td><td>' + '' + '&nbsp;</td><td>' + '' + '&nbsp;</td><td>' + '' + '&nbsp;</td><td>' + '' + '&nbsp;</td><td>' + '' + '&nbsp;</td></tr>');
  828.                         $.each(s.workstatesinfo, function(ws_index, ws) {
  829.                           var contactName = "";
  830.                           var wsDate = dateFormat(ws.createdat, "yyyy/mm/dd HH:MM:ss");
  831.                           if (ws.info) {
  832.                             if (ws.info.contactname) {
  833.                               contactName = ws.info.contactname;
  834.                             }
  835.  
  836.                             if (!contactName && ws.info.crmsearchfilter) {
  837.                               try {
  838.                                 var crmSearchFilter = JSON.parse(ws.info.crmsearchfilter);
  839.                                 if (crmSearchFilter.Phone) {
  840.                                   contactName = crmSearchFilter.Phone;
  841.                                 }
  842.                               } catch(ex) {
  843.  
  844.                               }
  845.                             }
  846.                           }
  847.  
  848.                           var caseId = "";
  849.                           var messageId = "";
  850.                           var interactionType = "";
  851.                           var hdScenario = "";
  852.  
  853.                           if (ws.hdinfo) {
  854.                             var hdInfo = JSON.parse(ws.hdinfo);
  855.                             if (hdInfo.RecordId) {
  856.                               caseId = hdInfo.RecordId;
  857.                             }
  858.  
  859.                             if (hdInfo.RecordEntryId) {
  860.                               messageId = hdInfo.RecordEntryId;
  861.                             }
  862.  
  863.                             if (hdInfo.MessageType) {
  864.                               interactionType = hdInfo.MessageType;
  865.                             }
  866.  
  867.                             if (hdInfo.Scenario) {
  868.                               hdScenario = hdInfo.Scenario;
  869.                             }
  870.                           }
  871.  
  872.                           if ((hdScenario == 'NewCase') && caseId && (caseId != '')) {
  873.                             hdScenario = "CaseDetail";
  874.                           }
  875.  
  876.                           var wsClick = "loadSession('" + s.sessionid + "', " + ws.savenumber + "); return false;";
  877.                           var row = $('<tr class="' + rowClass + ' wsItem" data-ws-sessionId="' + s.sessionid + '"><td>&nbsp;</td><td><a href="#" onClick="' + wsClick + '">' + wsDate + '</a>&nbsp;</td><td>' + s.username + '&nbsp;</td><td>' + s.tabnumber + '&nbsp;</td><td>' + contactName + '&nbsp;</td><td>' + caseId + '&nbsp;</td><td>' + messageId + '&nbsp;</td><td>' + interactionType + '&nbsp;</td><td>' + hdScenario + '&nbsp;</td></tr>').hide();
  878.                           $('#sessions').append(row);
  879.                         });
  880.  
  881.                         if (rowClass == 'odd') {
  882.                             rowClass = 'even';
  883.                         } else if (rowClass == 'even') {
  884.                             rowClass = 'odd';
  885.                         }
  886.                     });
  887.                 },
  888.             });
  889.         }
  890.  
  891.         function loadSession(sessionId, saveNumber) {
  892.             $('#sessionsList').hide();
  893.             sendMessageLoadWorkStateToAll(null, sessionId, saveNumber);
  894.         }
  895.  
  896.         function deleteSession(sessionId) {
  897.             var req = {
  898.                 sessionid: sessionId,
  899.             };
  900.             $.ajax({
  901.                 url: actionDeleteWorkState,
  902.                 data: JSON.stringify(req),
  903.                 method: 'POST',
  904.                 dataType: 'json',
  905.                 contentType: 'application/json; charset=UTF-8',
  906.                 success: function(data) {
  907.                     clearSessionsList();
  908.                     loadSessionsList();
  909.                 },
  910.             });
  911.         }
  912.  
  913.         var searchHistory = [];
  914.         function addSearchHistoryEntry (containerSelector, text) {
  915.             if (!text) return;
  916.             var $matching = $(containerSelector + " li a:contains('" + text + "')");
  917.             if ($matching.length == 0) {
  918.                 $(containerSelector).append("<li><a href='javascript:void(0)'>" + text + "</a><span><a href='javascript:void(0)' class='j-remove-name'><i class='fa fa-times'></i></a></span></li>");
  919.             }
  920.  
  921.         }
  922.  
  923.  
  924.  
  925.         $("#btnSearch").click(function (e, extData, options) {
  926.             var allowHDUpdate = true;
  927.             if (options) {
  928.                 if (options.blockHDUpdate) {
  929.                     allowHDUpdate = false;
  930.                 }
  931.             }
  932.  
  933.             $("#crm-noSearchResults, #serviceOrderList").hide();
  934.             /* Search History */
  935.             $name = $("#txtName").val();
  936.             $phone = $("#txtPhone").val();
  937.             $email = $("#txtEmail").val();
  938.             $state = $("#txtState").val();
  939.             $repairId = $("#txtRepairId").val();
  940.             $caseId = $("#caseId").val();
  941.  
  942.             if($name == "" && $phone == "" && $email == "" && $state == "" && $repairId == "" && $caseId == "") {
  943.                 $("#crm-noSearchResults").show();
  944.                 showErrorMessage("Fill the search parameters");
  945.                 return false;
  946.             }
  947.             $(".search-history").show();
  948.  
  949.             addSearchHistoryEntry(".j-search-history-name", $name);
  950.             addSearchHistoryEntry(".j-search-history-phone", $phone);
  951.             addSearchHistoryEntry(".j-search-history-email", $email);
  952.             addSearchHistoryEntry(".j-search-history-state", $state);
  953.             addSearchHistoryEntry(".j-search-history-repairId", $repairId);
  954.             addSearchHistoryEntry(".j-search-history-caseId", $caseId);
  955.  
  956.             $(".search-history ul").each(function() {
  957.                 if(!$(this).find("li").length) {
  958.                     $(this).parent().hide();
  959.                 }
  960.             });
  961.             $(".search-history ul li a").click(function () {
  962.                 $(this).closest(".form-group").find("input").val($(this).text());
  963.                 $(this).closest(".form-group").find("input").focus();
  964.             });
  965.  
  966.  
  967.  
  968.             $(".j-crmColumn .panel-footer .j-dashboardHelpdesk").remove();
  969.             $caseID = $("#caseId").val();
  970.  
  971.             var hdPath = document.getElementById("HelpdeskFrame").contentWindow.location.pathname;
  972.             var rec = new URI(document.getElementById("HelpdeskFrame").contentWindow.location).search(true)['Rec'];
  973.             if (!((/\/HD\/Detail.aspx$/i.test(hdPath)) || (/\/HD\/CommentWindow.aspx$/i.test(hdPath)))) {
  974.               var helpdeskUrl = "../HD/Default.aspx?GridViewID=3";
  975.               if ($caseID.length) {
  976.                 helpdeskUrl += "&caseid=" + $caseID;
  977.               }
  978.               if ($name.length) {
  979.                 helpdeskUrl += "&name=" + $name;
  980.               }
  981.               if ($phone.length) {
  982.                 helpdeskUrl += "&phone=" + $phone;
  983.               }
  984.               if ($email.length) {
  985.                 helpdeskUrl += "&email=" + $email;
  986.               }
  987.               if ($repairId.length) {
  988.                 helpdeskUrl += "&repaired=" + $repairId;
  989.               }
  990.               if (allowHDUpdate) {
  991.                 $(".j-helpdeskColumn iframe").attr("src", helpdeskUrl);
  992.               }
  993.             }
  994.  
  995.             var $thisUrl = '@Url.Content("~/Dashboard/")';
  996.             //var $thisName = $(this).find("h3").text().trim();
  997.             var $data = {};
  998.             $(this).closest("form").find("input").each(function (index, element) {
  999.                 var n = $(element).attr("name");
  1000.                 var v = $(element).val();
  1001.  
  1002.  
  1003.                 if (typeof (n) == "undefined" || typeof (v) == "undefined") {
  1004.                     return;
  1005.                 }
  1006.  
  1007.                 $data[n] = v;
  1008.             });
  1009.  
  1010.             if (extData) {
  1011.                 $data = extData;
  1012.             }
  1013.  
  1014.             //  $.removeCookie('dashboardCrmBreadcrumbs', "/Dashboard");
  1015.  
  1016.             $("#crmSearchFilter").val(JSON.stringify($data));
  1017.             $('#crmState').val('contact_search');
  1018.  
  1019.             if($name == "" && $phone == "" && $email == "" && $repairId == "" && $state == "") {
  1020.                 $("#crm-noSearchResults").show();
  1021.                 $("#crmContactDetail").empty();
  1022.                 return;
  1023.             }
  1024.  
  1025.             else {
  1026.                 $(".dashboard-browser .loading").show();
  1027.  
  1028.                 $.ajax({
  1029.                     type: "POST",
  1030.                     url: $thisUrl,
  1031.                     data: $data,
  1032.                     success: function (data) {
  1033.                         var $dom = $(data);
  1034.                         if(!$dom.find("#crmList li").length) {
  1035.                             $("#crm-noSearchResults").show();
  1036.                             $("#crmContactDetail").empty();
  1037.                             renderContactDetail($dom, $thisUrl);
  1038.                             return;
  1039.                         }
  1040.                         $("#crmList").html($dom.find("#crmList").html());
  1041.                         if($("#crmList li").length > 200) {
  1042.                             $("#crmList").prepend("<li><div class='alert alert-warning'>Search contains more than 200 results</div></li>");
  1043.                         }
  1044.                         //$("#crmContactDetail").hide();
  1045.                         $("#crmList, .j-mergeContacts").show();
  1046.  
  1047.                         $("#dashboardCRM").getNiceScroll().resize();
  1048.  
  1049.                         $('input.icheck').iCheck({
  1050.                             checkboxClass: 'icheckbox_flat',
  1051.                             radioClass: 'iradio_flat'
  1052.                         });
  1053.  
  1054.                         contactDetail();
  1055.  
  1056.                         $(".dashboard-browser .loading").hide();
  1057.  
  1058.                         $("#crmList .iCheck-helper").click(function () {
  1059.                             if ($("#crmList .icheckbox_flat.checked").length > 1) {
  1060.                                 $(".j-mergeContacts").removeClass("btn-default").addClass("btn-success");
  1061.                             }
  1062.                             else {
  1063.                                 $(".j-mergeContacts").removeClass("btn-success").addClass("btn-default");
  1064.                             }
  1065.                         });
  1066.                     },
  1067.                     dataType: "html"
  1068.                 });
  1069.             }
  1070.             $('.j-remove-name').click(function () {
  1071.                 $thisValue = $(this).parent().prev().text();
  1072.                 if(!$(this).closest("li").siblings().length) {
  1073.                     $(this).closest(".search-history").hide();
  1074.                 }
  1075.  
  1076.                 if($(this).closest("ul.j-search-history-name").length) {
  1077.                     searchHistory = $.grep(searchHistory, function (el) {
  1078.                         if(el.name == $thisValue) {
  1079.                             return el.name == "";
  1080.                         }
  1081.                     });
  1082.                 }
  1083.                 else if ($(this).closest("ul.j-search-history-phone").length) {
  1084.                     searchHistory = $.grep(searchHistory, function (el) {
  1085.                         if(el.phone == $thisValue) {
  1086.                             return el.phone == "";
  1087.                         }
  1088.                     });
  1089.                 }
  1090.                 else if ($(this).closest("ul.j-search-history-email").length) {
  1091.                     searchHistory = $.grep(searchHistory, function (el) {
  1092.                         if(el.email == $thisValue) {
  1093.                             return el.email == "";
  1094.                         }
  1095.                     });
  1096.                 }
  1097.                 else if ($(this).closest("ul.j-search-history-state").length) {
  1098.                     searchHistory = $.grep(searchHistory, function (el) {
  1099.                         if(el.state == $thisValue) {
  1100.                             return el.state = "";
  1101.                         }
  1102.                     });
  1103.                 }
  1104.                 else if ($(this).closest("ul.j-search-history-repairId").length) {
  1105.                     searchHistory = $.grep(searchHistory, function (el) {
  1106.                         if(el.repairId == $thisValue) {
  1107.                             return el.repairId == "";
  1108.                         }
  1109.                     });
  1110.                 }
  1111.                 else if ($(this).closest("ul.j-search-history-caseId").length) {
  1112.                     searchHistory = $.grep(searchHistory, function (el) {
  1113.                         if(el.caseId == $thisValue) {
  1114.                             return el.caseId == "";
  1115.                         }
  1116.                     });
  1117.                 }
  1118.  
  1119.                 $(this).closest("li").remove();
  1120.             });
  1121.         });
  1122.  
  1123.       function renderContactDetail ($dom, $thisUrl) {
  1124.           $("#crmContactDetail").html("<div class='pull-left'><div class='back'><a class='label label-danger j-backHistory'><i class='fa fa-arrow-circle-left'></i> Back</a><div class='list j-history-list' style='display: none'><ul class='dashboard-breadcrumbs'></ul><h3><a href='javascript:void(0)' class='j-back'>Search Results</a></h3><ul class='searchResults'></ul></div></div></div><div class='pull-right'></div></div><div class='detail-contact clearfix'>" + $dom.find(".dashboard-inner").html() + $dom.find(".scripts-needed").html() + "</div>");
  1125.           ko.cleanNode($("#crmContactDetail")[0]);
  1126.           $("#helpdeskTitle").html("Contact");
  1127.           ko.applyBindings(olympusViewModel, $("#crmContactDetail")[0]);
  1128.  
  1129.             var $thisName = $dom.find("#extPersonName").val();
  1130.             var $thisGuid = $dom.find("#extPersonId").val();
  1131.             $('#extPersonUrl').val($thisUrl);
  1132.             $('#crmState').val('contact_detail');
  1133.  
  1134.  
  1135.             var thisArray = { 'item': { 'name': $dom.filter("title").text(), 'url': $thisUrl, 'breadcrumbs': [{ 'name': $dom.filter("title").text(), 'url': $thisUrl }] } };
  1136.             var json_str = JSON.stringify(thisArray);
  1137.             $.cookie("dashboardCrmBreadcrumbs", JSON.stringify(thisArray.item.breadcrumbs));
  1138.  
  1139.  
  1140.             if ($.cookie("dashboardCrmHistory") === undefined) {
  1141.                 $.cookie("dashboardCrmHistory", "[" + json_str + "]");
  1142.                 var cookieHistory_arr = [];
  1143.                 cookieHistory_arr.push(thisArray);
  1144.             }
  1145.             else {
  1146.                 cookieHistory_str = $.cookie("dashboardCrmHistory");
  1147.                 cookieHistory_arr = JSON.parse(cookieHistory_str);
  1148.  
  1149.                 cookieHistory_arr = $.grep(cookieHistory_arr, function (el) {
  1150.  
  1151.                     return el.item.url != thisArray.item.url;
  1152.                 });
  1153.                 cookieHistory_arr.push(thisArray);
  1154.                 $.cookie("dashboardCrmHistory", JSON.stringify(cookieHistory_arr));
  1155.             }
  1156.  
  1157.             //<div class='breadcrumbs'><span>" + $thisName + "<span> <a class='btn btn-default back'>Zpět</a></div>
  1158.  
  1159.  
  1160.             /*
  1161.             $.each(item_cookie, function (index, value) {
  1162.               $(".dashboard-breadcrumbs").append("<li><a href='" + value.url + "' class='j-dashboardLink'>" + value.name + "</a>");
  1163.             }); */
  1164.             $("#crmHistory-list").empty();
  1165.             $.each(cookieHistory_arr.reverse(), function (index, value) {
  1166.                 $("#crmHistory-list").append("<li><a data-breadcrumbs='" + JSON.stringify(value.item.breadcrumbs) + "' href='" + value.item.url + "' class='j-dashboardLink j-historyLink'>" + value.item.name + "</a>");
  1167.             });
  1168.  
  1169.             $("#crmContactDetail").show();
  1170.             $(".j-mergeContacts, #HelpdeskFrame").hide();
  1171.             $("#dashboardCRM").getNiceScroll().resize();
  1172.  
  1173.             $(".j-dashboardHelpdesk, .j-joinWithCase").remove();
  1174.  
  1175.             $(".j-crmColumn .panel-footer div").prepend("<a class='btn btn-info btn-sm j-joinWithCase' id='joinWithCase'><i class='fa fa-chain'></i> Join with Case</a>");
  1176.             $(".j-helpdeskColumn .panel-footer div").prepend("<a href='../HD/Detail.aspx?guid=" + $thisGuid + "&name=" + $thisName + "' class='btn btn-success btn-sm j-dashboardHelpdesk j-newHelpdeskCase'><i class='fa fa-plus-circle'></i> New Case</a>");
  1177.             $(".j-history-list").hide();
  1178.  
  1179.             $(".searchResults").empty();
  1180.             if ($("#crmList li").length > 9) {
  1181.                 $(".searchResults").append($("#crmList li:first-child").nextUntil(":nth-child(11)").andSelf().clone());
  1182.                 $(".searchResults").append("<li class='clearfix footer-list tac'><a href='javascript:void(0)' class='j-back'><i class='ci ci-more-horiz'></i></a></li>");
  1183.             }
  1184.             else {
  1185.                 $(".searchResults").append($("#crmList").clone().html());
  1186.             }
  1187.  
  1188.  
  1189.  
  1190.             switch (true) {
  1191.                 case $thisUrl.indexOf("/Person/Create") > -1:
  1192.  
  1193.                     $(".j-newHelpdeskCase, .j-joinWithCase, #dashboardCRM .option-row").show();
  1194.                     $(".j-mergeContacts, .j-joinWithCase, .j-newHelpdeskCase, .j-backHistory").hide();
  1195.                     break;
  1196.                 case $thisUrl.indexOf("/Product/ServiceOrderDetail") > -1:
  1197.  
  1198.                     $(".j-mergeContacts, .j-newHelpdeskCase").hide();
  1199.                     $(".j-joinWithCase").show();
  1200.                     break;
  1201.             }
  1202.  
  1203.  
  1204.             setTimeout(function () {
  1205.               $(".dashboard-browser .loading").hide();
  1206.  
  1207.             }, 500);
  1208.  
  1209.             function verifyContact(e, result) {
  1210.                 var popover = $(e).closest(".detail-contact").find(".popover");
  1211.                 popover.toggle();
  1212.  
  1213.                 switch (true) {
  1214.                     case result == "verified":
  1215.                         popover.removeClass("danger warning").addClass("success");
  1216.                         popover.find(".popover-content").text("Verified");
  1217.                         break;
  1218.                     case result == "error":
  1219.                         popover.removeClass("success warning").addClass("danger");
  1220.                         popover.find(".popover-content").text("Error");
  1221.                         break;
  1222.                     case result == "notVerified":
  1223.                         popover.removeClass("success warning").addClass("warning");
  1224.                         popover.find(".popover-content").text("Not verified");
  1225.                         break;
  1226.                 }
  1227.             }
  1228.  
  1229.             //  $("#crmHistory").hide();
  1230.             // $("#joinWithCase").show();
  1231.  
  1232.             dashboardBack();
  1233.             dashboardLink();
  1234.             dashboardFunctions();
  1235.         }
  1236.  
  1237.         function loadContactDetail(elem, extData) {
  1238.             $(".dashboard-browser .loading").show();
  1239.             $(".j-mergeContacts, .j-joinWithCase, .j-newHelpdeskCase, #crm-noSearchResults").hide();
  1240.  
  1241.             var $thisUrl = null;
  1242.             if (extData && extData.href) {
  1243.                 $thisUrl = extData.href;
  1244.             }
  1245.             else {
  1246.                 $thisUrl = $(elem).attr("data-href");
  1247.             }
  1248.  
  1249.  
  1250.             //   $.removeCookie('dashboardCrmBreadcrumbs');
  1251.  
  1252.             $.ajax({
  1253.                 'url': $thisUrl,
  1254.                 'type': 'get',
  1255.                 'dataType': 'html',
  1256.                 'async': false,
  1257.                 'success': function (data) {
  1258.                     var $dom = $(data);
  1259.                     renderContactDetail($dom, $thisUrl);
  1260.  
  1261.                 }
  1262.             });
  1263.         }
  1264.  
  1265.         function contactDetail() {
  1266.             $(".ajax-loadCrmContact").click(function (e, extData) {
  1267.               loadContactDetail(this, extData);
  1268.  
  1269.  
  1270.             });
  1271.             return;
  1272.         }
  1273.         function dashboardBack() {
  1274.             $("#crmContactDetail .j-back").click(function () {
  1275.                 $("#crmContactDetail").hide();
  1276.                 $("#crmList, .j-mergeContacts").show();
  1277.                 $("#dashboardCRM").getNiceScroll().resize();
  1278.                 //   $.removeCookie("dashboardCrmBreadcrumbs");
  1279.                 $(".j-crmColumn .panel-footer .j-dashboardHelpdesk, .j-crmColumn .panel-footer .j-joinWithCase").remove();
  1280.             });
  1281.  
  1282.             return false;
  1283.         }
  1284.         function dashboardFunctions() {
  1285.             var $thisType = null;
  1286.  
  1287.  
  1288.             $(".j-editContact").click(function () {
  1289.                 var $modal = $("#editContact .input-group");
  1290.                 var $thisType = $(this).data("type");
  1291.                 var $thisCaption = $(this).data("caption");
  1292.                 var $this = $(this);
  1293.  
  1294.                 $modal.find("i").removeAttr("class");
  1295.                 $modal.find("i").addClass("fa fa-" + $thisType);
  1296.                 $modal.find("input").val($thisCaption).parent().removeClass("has-error");
  1297.  
  1298.                 //var $thisUrl = JSON.parse($.cookie("dashboardCrmBreadcrumbs"));
  1299.                 //$thisUrl = $thisUrl[$thisUrl.length - 1].url
  1300.                 $modal = $("#editContact .j-editContact-save"); //.attr("data-href", $thisUrl);
  1301.  
  1302.  
  1303.             });
  1304.  
  1305.             $(".j-editPhone").click(function () {
  1306.                 var $modal = $("#editPhone .input-group");
  1307.                 $thisType = $(this).data("type");
  1308.                 var $thisCaption = $(this).data("caption");
  1309.                 var $this = $(this);
  1310.  
  1311.                 $modal.find("i").removeAttr("class");
  1312.                 $modal.find("i").addClass("fa fa-" + $thisType);
  1313.                 $modal.find("input[type=text]").val($thisCaption);
  1314.  
  1315.                 //var $thisUrl = JSON.parse($.cookie("dashboardCrmBreadcrumbs"));
  1316.                 //$thisUrl = $thisUrl[$thisUrl.length - 1].url
  1317.                 $modal = $("#editPhone .j-editPhone-save"); //.attr("data-href", $thisUrl);
  1318.             });
  1319.  
  1320.             $(".j-editName").click(function () {
  1321.                 //var $thisUrl = JSON.parse($.cookie("dashboardCrmBreadcrumbs"));
  1322.                 //$thisUrl = $thisUrl[$thisUrl.length - 1].url
  1323.  
  1324.  
  1325.                 $this = $(this);
  1326.                 $modal = $("#editName");
  1327.  
  1328.                 $modal.find("i").removeAttr("class");
  1329.                 $modal.find("input[name=first-name]").val($(this).data("fn")).parent().removeClass("has-error");
  1330.                 $modal.find("input[name=last-name]").val($(this).data("ln")).parent().removeClass("has-error");
  1331.                 $modal.find("input[name=fileas-name]").val($(this).data("name"));
  1332.  
  1333.                 $modal = $("#editName .j-editName-save"); //.attr("data-href", $thisUrl);
  1334.  
  1335.             });
  1336.  
  1337.  
  1338.             //    window.onload = function () {
  1339.             // Get the window displayed in the iframe.
  1340.             var receiver = document.getElementById('HelpdeskFrame').contentWindow;
  1341.  
  1342.             // Get a reference to the 'Send Message' button.
  1343.             var btn = document.getElementById('joinWithCase');
  1344.  
  1345.             // A function to handle sending messages.
  1346.             function sendMessage(e) {
  1347.                 // Prevent any default browser behaviour.
  1348.                 e.preventDefault();
  1349.  
  1350.                 var doc = document;
  1351.                 if (!doc.getElementById('extCustomerName')) {
  1352.                   var iFrame = document.getElementById('crmIframe');
  1353.                   doc = iFrame.contentWindow || iFrame.contentDocument;
  1354.                   if (doc.document) {
  1355.                     doc = doc.document;
  1356.                   }
  1357.                 }
  1358.  
  1359.                 var pass_data = {
  1360.                     'customerName': doc.getElementById('extCustomerName').value,
  1361.                     'customerId': doc.getElementById('extCustomerId').value,
  1362.                     'personName': doc.getElementById('extPersonName').value,
  1363.                     'personId': doc.getElementById('extPersonId').value,
  1364.                 };
  1365.  
  1366.                 // Send a message to the receiver window.
  1367.                 receiver.postMessage(pass_data, '@(Request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority))');
  1368.             }
  1369.             $(btn).click(sendMessage);
  1370.             //        }
  1371.  
  1372.             $(".j-dashboard-hide").closest(".panel").find("> .panel-heading i.fa-chevron-up").removeClass("fa-chevron-up").addClass("fa-chevron-down");
  1373.  
  1374.  
  1375.  
  1376.             $(".j-dashboardHelpdesk").click(function () {
  1377.                 event.preventDefault();
  1378.                 $(".j-helpdeskColumn iframe").attr("src", $(this).attr("href"));
  1379.             });
  1380.  
  1381.             $(".j-backHistory, .j-history").click(function () {
  1382.  
  1383.                 if (!$(this).next(".j-history-list").is(":visible")) {
  1384.                     $(".j-history-list").hide();
  1385.                     $(this).next(".j-history-list").show();
  1386.                 }
  1387.                 else {
  1388.                     $(".j-history-list").hide();
  1389.                 }
  1390.             });
  1391.             $(".j-backHistory").click(function () {
  1392.                 if ($(".dashboard-breadcrumbs li").length <= 1) {
  1393.                     $("#crmContactDetail").hide();
  1394.                     $("#crmList, .j-mergeContacts").show();
  1395.                     $("#dashboardCRM").getNiceScroll().resize();
  1396.                     //  $.removeCookie("dashboardCrmBreadcrumbs", "/Dashboard");
  1397.                     $(".j-crmColumn .panel-footer .j-dashboardHelpdesk, .j-crmColumn .panel-footer .j-joinWithCase").remove();
  1398.                 }
  1399.             });
  1400.             $("#dashboardCRM").getNiceScroll().doScrollPos(-20, $("#crmContactDetail").position().top);
  1401.  
  1402.  
  1403.             $('input.icheck').iCheck({
  1404.                 checkboxClass: 'icheckbox_flat',
  1405.                 radioClass: 'iradio_flat'
  1406.             });
  1407.             //  app.init
  1408.  
  1409.  
  1410.             $("#dashboardCRM").off('click.expand');
  1411.             $("#dashboardCRM").on('click.expand', '.actions i', function () {
  1412.                 if ($(this).hasClass("fa-chevron-up")) {
  1413.                     $(this).removeClass("fa-chevron-up").addClass("fa-chevron-down");
  1414.                     $(this).closest(".panel").find("> .panel-body").slideToggle();
  1415.                 }
  1416.                 else if ($(this).hasClass("fa-chevron-down")) {
  1417.                     $(this).removeClass("fa-chevron-down").addClass("fa-chevron-up");
  1418.                     $(this).closest(".panel").find("> .panel-body").slideToggle();
  1419.                 }
  1420.                 $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1421.             });
  1422.  
  1423.             $('a[data-phone]').click(function(e) {
  1424.                 var telNum = $(this).attr("data-phone");
  1425.                 if (!confirm("Make a call to: " + telNum + "?")) { return; }
  1426.                 e.preventDefault();
  1427.                 var thisUrl = '@Url.Content("~/Home/MakePhoneCall")';
  1428.                 $.ajax({
  1429.                     url: thisUrl,
  1430.                     type: "post",
  1431.                     data: { phoneNumber : telNum },
  1432.                     error: function(xhr, status, errorThrown) { alert("Could not make a call."); }
  1433.                 })
  1434.             });
  1435.             regCategoryEdit();
  1436.             $("#cssAgreementContainer a").click(function () {
  1437.                 var $thisUrl = '@Url.Content("~/Person/SetCssSurvey")';
  1438.                 var $this = $(this);
  1439.                 var rqOperation = $this.data("status") == "valid" ? "confirm" : "revoke";
  1440.                 var cid = $("#extPersonId").val();
  1441.                 $.ajax({
  1442.                     url: $thisUrl,
  1443.                     type: 'POST',
  1444.                     dataType: 'json',
  1445.                     context: this,
  1446.                     data: {
  1447.                         rqOperation: rqOperation,
  1448.                         personId: cid,
  1449.                     },
  1450.                     error: function () {
  1451.                         alert("Could not change status.");
  1452.                     },
  1453.                     success: function (res) {
  1454.                         var $parent = $("#cssAgreementContainer");
  1455.                         if (res == "agreed") {
  1456.                             $parent.find('a[data-status=valid]').addClass("checked");
  1457.                             $parent.find('a[data-status=invalid]').removeClass("checked");
  1458.                         }
  1459.                         else
  1460.                         {
  1461.                             $parent.find('a[data-status=valid]').removeClass("checked");
  1462.                             $parent.find('a[data-status=invalid]').addClass("checked");
  1463.                         }
  1464.                     }
  1465.                 });
  1466.             });
  1467.  
  1468.             $(".enabled.optIn").click(function() {
  1469.                 var $this = $(this);
  1470.                 var currState = $this.attr("data-state");
  1471.                 if (currState == "inProgress") {
  1472.                     alert ("Opti-in change request already sent");
  1473.                     return;
  1474.                 }
  1475.                 if (confirm("Change clients opt-in status?")) {
  1476.                     var $thisUrl = '@Url.Content("~/Person/ChangeOptIn")';
  1477.                     var contact = $this.attr("data-caption");
  1478.                     var rqState = !(currState == "optedIn");
  1479.                     $.ajax({
  1480.                         url: $thisUrl,
  1481.                         type: "POST",
  1482.                         context: this,
  1483.                         data: {
  1484.                             email: contact,
  1485.                             requestOptIn: rqState
  1486.                         },
  1487.                         error: function() {
  1488.                             alert("Could not change status.");
  1489.                         },
  1490.                         success: function() {
  1491.                             $(this).find("i").css("color", "#f1c40f");
  1492.                             $this.attr("data-state", "inProgress")
  1493.                             alert("Opt-in change process successfuly initiated.");
  1494.                         }
  1495.                     });
  1496.                 }
  1497.             });
  1498.             $(".enabled.passwordReset").click(function() {
  1499.                 if (confirm("Reset clients password?")) {
  1500.                     var $thisUrl = '@Url.Content("~/Person/ResetPassword")';
  1501.                     var $this = $(this);
  1502.                     var contact = $this.attr("data-caption");
  1503.                     $.ajax({
  1504.                         url: $thisUrl,
  1505.                         type: "POST",
  1506.                         context: this,
  1507.                         data: {
  1508.                             email: contact
  1509.                         },
  1510.                         error: function() {
  1511.                             alert("Could not reset password.");
  1512.                         },
  1513.                         success: function() {
  1514.                             alert("Password reset process successfuly initiated.");
  1515.                         }
  1516.                     });
  1517.                 }
  1518.             });
  1519.  
  1520.  
  1521.             // WARNING copy of this handler exist also in Person/Detail.cshtml must be kept in sync!!!!!
  1522.             $(".validateContact a.statusValidator").click(function () {
  1523.                 var $thisUrl = '@Url.Content("~/Person/SetContactStatus")';
  1524.                 var $this = $(this);
  1525.                 var rqOperation = $this.attr("data-status") == "valid" ? "validate" : "invalidate";
  1526.                 var contact = $this.attr("data-caption");
  1527.                 var contactType =  $this.attr("data-c-type");
  1528.                 var cid = $("#extPersonId").val();
  1529.                 $.ajax({
  1530.                     url: $thisUrl,
  1531.                     type: 'POST',
  1532.                     dataType: 'json',
  1533.                     context: this,
  1534.                     data: {
  1535.                         rqOperation: rqOperation,
  1536.                         personId: cid,
  1537.                         contact : contact,
  1538.                         contactType : contactType,
  1539.                     },
  1540.                     error: function () {
  1541.                         alert("Could not change status.");
  1542.                     },
  1543.                     success: function (res) {
  1544.                         var $parent = $(this).closest(".detail-contact-info");
  1545.                         if (res.ValidatedFormatted == null) {
  1546.                             $(this).removeClass("checked");
  1547.                             $(this).siblings().removeClass("checked");
  1548.                             $parent.find(".validatedAt").fadeOut();
  1549.                         }
  1550.                         else {
  1551.                             $parent.find(".validatedAt").fadeIn().find("span").text(res.ValidatedFormatted);
  1552.                             if (res.Valid) {
  1553.                                 $parent.find('a[data-status=valid]').addClass("checked");
  1554.                                 $parent.find('a[data-status=invalid]').removeClass("checked");
  1555.                             }
  1556.                             else {
  1557.                                 $parent.find('a[data-status=valid]').removeClass("checked");
  1558.                                 $parent.find('a[data-status=invalid]').addClass("checked");
  1559.                             }
  1560.                         }
  1561.                     }
  1562.                 });
  1563.             });
  1564.  
  1565.             regMyOlympus();
  1566.             regCategoryEdit();
  1567.         }
  1568.  
  1569.  
  1570.  
  1571.         function dashboardLink() {
  1572.           if(!$(".searchResults li").length) {
  1573.                 $(".searchResults").hide();
  1574.             }
  1575.  
  1576.           $("body").on("click", ".j-dashboardLink", function (event) {
  1577.                 event.preventDefault();
  1578.                 return reloadLink($(this), $(this).attr("href"));
  1579.             } );
  1580.             return false;
  1581.         }
  1582.         function reloadLink($this, $thisUrl)      {
  1583.             var serviceOrderLink;
  1584.             if($this.closest("#serviceOrderList").length) {
  1585.                 serviceOrderLink = true;
  1586.             }
  1587.  
  1588.             $(".j-mergeContacts, .j-joinWithCase, .j-newHelpdeskCase, #crm-noSearchResults, #serviceOrderList").hide();
  1589.             $(".dashboard-browser .loading").show();
  1590.             if ($this.parents().is(".dashboard-breadcrumbs") && $this.parent().is(":last-child")) {
  1591.                 $(".j-history-list").hide();
  1592.                 $(".dashboard-browser .loading").hide();
  1593.                 return false;
  1594.             }
  1595.             else {
  1596.                 //  var cookie_arr = [];
  1597.                 var $thisMethod = "get";
  1598.                 var $thisData = null;
  1599.                 if (!$thisUrl) {
  1600.                     $thisUrl = $this.closest("form").attr("action");
  1601.                     $thisMethod = "post";
  1602.                     $thisData = $this.closest("form").serialize();
  1603.                 }
  1604.  
  1605.                 switch (true) {
  1606.                     case $thisUrl.indexOf("/Person/Detail") > -1:
  1607.  
  1608.                         $(".j-newHelpdeskCase, .j-joinWithCase").show();
  1609.                         $(".j-mergeContacts").hide();
  1610.                         break;
  1611.                     case $thisUrl.indexOf("/Product/ServiceOrderDetail") > -1:
  1612.  
  1613.                         $(".j-mergeContacts, .j-newHelpdeskCase,").hide();
  1614.                         $(".j-joinWithCase").show();
  1615.                         break;
  1616.                 }
  1617.  
  1618.                 $.ajax({
  1619.                     'url': $thisUrl,
  1620.                     'type': $thisMethod,
  1621.                     data: $thisData,
  1622.                     'dataType': 'html',
  1623.                     'async': false,
  1624.                     'success': function (data) {
  1625.                         $("#crmContactDetail").show();
  1626.                         var $dom = $(data);
  1627.  
  1628.                         $("#crmContactDetail").html("<div class='pull-left'><div class='back'><a class='label label-danger j-backHistory'><i class='fa fa-arrow-circle-left'></i> Back</a><div class='list j-history-list' style='display: none'><ul class='dashboard-breadcrumbs'></ul><h3><a href='javascript:void(0)' class='j-back'>Search Results</a></h3><ul class='searchResults'></ul></div></div></div></div><div class='detail-contact clearfix'>" + $dom.find(".dashboard-inner").html() + "</div>");
  1629.                         ko.cleanNode($("#crmContactDetail")[0]);
  1630.                         ko.applyBindings(olympusViewModel, $("#crmContactDetail")[0]);
  1631.                         if(serviceOrderLink) {
  1632.                             $(".j-backHistory").removeClass("j-backHistory").addClass("j-back-serviceList");
  1633.  
  1634.                             $(".j-back-serviceList").click(function () {
  1635.                                 $("#crmContactDetail").hide();
  1636.                                 $("#serviceOrderList").show();
  1637.                                 $("#serviceOrderList").getNiceScroll().remove();
  1638.                                 $("#serviceOrderList").niceScroll();
  1639.                                 // $("#serviceOrderList").getNiceScroll().resize();
  1640.                             });
  1641.                         }
  1642.                         thisArray = { 'name': $dom.filter("title").text(), 'url': $thisUrl };
  1643.                         var cookieBreadcrumbs_arr = [];
  1644.                         if($.cookie("dashboardCrmBreadcrumbs") != undefined) {
  1645.                             var cookieBreadcrumbs_str = $.cookie("dashboardCrmBreadcrumbs");
  1646.                             cookieBreadcrumbs_arr = JSON.parse(cookieBreadcrumbs_str);
  1647.  
  1648.                             var array_length = cookieBreadcrumbs_arr.length;
  1649.                             var new_array_length = cookieBreadcrumbs_arr.length;
  1650.  
  1651.                             $.map(cookieBreadcrumbs_arr, function (element, index) {
  1652.                                 if (element.url == thisArray.url) {
  1653.                                     new_array_length = index + 1;
  1654.                                 }
  1655.                             });
  1656.  
  1657.                             cookieBreadcrumbs_arr = $.grep(cookieBreadcrumbs_arr, function (el) {
  1658.                                 return el.url != thisArray.url
  1659.                             });
  1660.                             if (array_length == new_array_length) {
  1661.                                 cookieBreadcrumbs_arr.push({ 'name': $dom.filter("title").text(), 'url': $thisUrl });
  1662.                             }
  1663.                             else {
  1664.                                 cookieBreadcrumbs_arr.length = new_array_length;
  1665.                                 cookieBreadcrumbs_arr.push({ 'name': $dom.filter("title").text(), 'url': $thisUrl });
  1666.                             }
  1667.  
  1668.                             $.cookie("dashboardCrmBreadcrumbs", JSON.stringify(cookieBreadcrumbs_arr));
  1669.  
  1670.                             $.each(cookieBreadcrumbs_arr, function (index, value) {
  1671.                                 $(".dashboard-breadcrumbs").append("<li><a href='" + value.url + "' class='j-dashboardLink'>" + value.name + "</a>");
  1672.                             });
  1673.  
  1674.                                          
  1675.                             $("#crmContactDetail .collapse-all").click(function () {
  1676.                               $("#crmContactDetail .panel > .panel-body").slideUp();
  1677.                               $("#crmContactDetail .panel > .panel-heading .actions i").removeClass("fa-chevron-up").addClass("fa-chevron-down");
  1678.                             });
  1679.                             $("#crmContactDetail .expand-all").click(function () {
  1680.                               $("#crmContactDetail .panel > .panel-body").slideDown();
  1681.                               $("#crmContactDetail .panel > .panel-heading .actions i").removeClass("fa-chevron-down").addClass("fa-chevron-up");
  1682.                             });
  1683.                         }
  1684.  
  1685.                         //  var cookieHistory_str = $.cookie("dashboardCrmHistory");
  1686.                         //  var cookieHistory_arr = JSON.parse(cookieHistory_str);
  1687.  
  1688.  
  1689.  
  1690.                         cookieHistory_arr = $.grep(cookieHistory_arr, function (el) {
  1691.  
  1692.                             return el.item.url != thisArray.url;
  1693.                         });
  1694.  
  1695.  
  1696.                         $.cookie("dashboardCrmHistory", JSON.stringify(cookieHistory_arr));
  1697.  
  1698.                         thisArray = { 'item': { 'name': $dom.filter("title").text(), 'url': $thisUrl, 'breadcrumbs': cookieBreadcrumbs_arr } };
  1699.  
  1700.                         cookieHistory_arr.push(thisArray);
  1701.  
  1702.                         if (cookieHistory_arr.length > 20) {
  1703.                             cookieHistory_arr.shift();
  1704.                         }
  1705.                         //  item_cookie = cookieHistory_arr;
  1706.  
  1707.  
  1708.  
  1709.                         $("#crmHistory-list").empty();
  1710.                         $.each(cookieHistory_arr.reverse(), function (index, value) {
  1711.                             $("#crmHistory-list").append("<li><a data-breadcrumbs='" + JSON.stringify(value.item.breadcrumbs) + "' href='" + value.item.url + "' class='j-dashboardLink'>" + value.item.name + "</a>");
  1712.                         });
  1713.  
  1714.                         $("#dashboardCRM").getNiceScroll().resize();
  1715.                         $("#dashboardCRM").getNiceScroll().doScrollPos(0, $("#crmContactDetail").position().top);
  1716.  
  1717.                         $(".j-history-list").hide();
  1718.  
  1719.                         $(".searchResults").empty();
  1720.                         if ($("#crmList li").length > 9) {
  1721.                             $(".searchResults").append($("#crmList li:first-child").nextUntil(":nth-child(11)").andSelf().clone());
  1722.                             $(".searchResults").append("<li class='clearfix footer-list tac'><a href='javascript:void(0)' class='j-back'><i class='ci ci-more-horiz'></i></a></li>");
  1723.                         }
  1724.                         else {
  1725.                             $(".searchResults").append($("#crmList").clone().html());
  1726.                         }
  1727.  
  1728.                         setTimeout(function () {
  1729.                             $(".dashboard-browser .loading").hide();
  1730.                         }, 500);
  1731.  
  1732.                         dashboardBack();
  1733.                         dashboardLink();
  1734.                         dashboardFunctions();
  1735.                         contactDetail();
  1736.  
  1737.                         $("#serviceOrderList").getNiceScroll().remove();
  1738.  
  1739.                         function verifyContact(e, result) {
  1740.  
  1741.  
  1742.                             switch (true) {
  1743.                                 case result == "verified":
  1744.                                     var popover = $(e).closest(".detail-contact").find(".popover");
  1745.                                     popover.toggle();
  1746.                                     popover.removeClass("danger warning").addClass("success");
  1747.                                     popover.find(".popover-content").text("Verified");
  1748.                                     break;
  1749.                                 case result == "error":
  1750.                                     var popover = $(e).closest(".detail-contact").find(".popover");
  1751.                                     popover.toggle();
  1752.                                     popover.removeClass("success warning").addClass("danger");
  1753.                                     popover.find(".popover-content").text("Error");
  1754.                                     break;
  1755.                                 case result == "notVerified":
  1756.                                     var popover = $(e).closest(".detail-contact").find(".popover");
  1757.                                     popover.toggle();
  1758.                                     popover.removeClass("success warning").addClass("warning");
  1759.                                     popover.find(".popover-content").text("Not verified");
  1760.                                     break;
  1761.                             }
  1762.                         }
  1763.                     }
  1764.  
  1765.                 });
  1766.             }
  1767.             return false;
  1768.         }
  1769.  
  1770.         $(".j-extendColumn").click(function () {
  1771.  
  1772.             $crmColumn = $(".j-crmColumn");
  1773.             $helpdeskColumn = $(".j-helpdeskColumn");
  1774.             $knowledgebaseColumn = $(".j-knowledgebaseColumn");
  1775.  
  1776.             $(".j-extendColumn").removeClass("btn-info").addClass("btn-default");
  1777.             $(this).removeClass("btn-default").addClass("btn-info");
  1778.             $(".j-column").removeAttr("class");
  1779.  
  1780.             $("#dashboardCRM").removeClass("extend");
  1781.             $("#dashboardKnowledgebase").removeClass("reduced");
  1782.  
  1783.             switch (true) {
  1784.                 case $(this).hasClass("active"):
  1785.  
  1786.                     $crmColumn.addClass("j-crmColumn col-sm-4 j-column");
  1787.                     $helpdeskColumn.addClass("j-helpdeskColumn col-sm-4 j-column");
  1788.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-sm-4 j-column");
  1789.  
  1790.                     $(this).removeClass("active");
  1791.  
  1792.  
  1793.                     break;
  1794.  
  1795.                 case $(this).hasClass("extend-441"):
  1796.  
  1797.                     $crmColumn.addClass("j-crmColumn col-cus-45 j-column");
  1798.                     $helpdeskColumn.addClass("j-helpdeskColumn col-sm-6 j-column");
  1799.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-cus-5 j-column");
  1800.                     $(".j-extendColumn").removeClass("active");
  1801.                     $(".dashboard-browser .extend-crm").addClass("active");
  1802.  
  1803.                     $("#dashboardCRM").addClass("extend");
  1804.                     $("#dashboardKnowledgebase").addClass("reduced");
  1805.  
  1806.                     $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1807.  
  1808.                     break;
  1809.  
  1810.                 case $(this).hasClass("extend-252"):
  1811.  
  1812.                     $crmColumn.addClass("j-crmColumn col-sm-3 j-column");
  1813.                     $helpdeskColumn.addClass("j-helpdeskColumn col-sm-6 j-column");
  1814.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-sm-3 j-column reduced");
  1815.                     $(".j-extendColumn").removeClass("active");
  1816.                     $(".dashboard-browser .extend-helpdesk").addClass("active");
  1817.  
  1818.                     $("#dashboardKnowledgebase").addClass("reduced");
  1819.  
  1820.                     $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1821.  
  1822.                     break;
  1823.  
  1824.                 case $(this).hasClass("extend-144"):
  1825.  
  1826.                     $crmColumn.addClass("j-crmColumn col-cus-5 j-column");
  1827.                     $helpdeskColumn.addClass("j-helpdeskColumn col-sm-6 j-column");
  1828.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-cus-45 j-column reduced");
  1829.                     $(".j-extendColumn").removeClass("active");
  1830.                     $(".dashboard-browser .extend-knowledgebase").addClass("active");
  1831.  
  1832.                     $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1833.  
  1834.                     break;
  1835.  
  1836.                 case $(this).hasClass("extend-118"):
  1837.  
  1838.                     $crmColumn.addClass("j-crmColumn col-cus-5 j-column");
  1839.                     $helpdeskColumn.addClass("j-helpdeskColumn col-cus-5 j-column");
  1840.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-cus-90 j-column");
  1841.                     $(".j-extendColumn").removeClass("active");
  1842.                     $(".dashboard-browser .extend-knowledgebase").addClass("active");
  1843.  
  1844.                     $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1845.  
  1846.                     break;
  1847.  
  1848.                 case $(this).hasClass("extend-181"):
  1849.  
  1850.                     $crmColumn.addClass("j-crmColumn col-cus-5 j-column");
  1851.                     $helpdeskColumn.addClass("j-helpdeskColumn col-cus-90 j-column");
  1852.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-cus-5 j-column");
  1853.                     $(".j-extendColumn").removeClass("active");
  1854.                     $(".dashboard-browser .extend-knowledgebase").addClass("active");
  1855.  
  1856.                     $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1857.  
  1858.                     break;
  1859.  
  1860.                 case $(this).hasClass("extend-811"):
  1861.  
  1862.                     $crmColumn.addClass("j-crmColumn crm-column-extend col-cus-90 j-column");
  1863.                     $helpdeskColumn.addClass("j-helpdeskColumn col-cus-5 j-column");
  1864.                     $knowledgebaseColumn.addClass("j-knowledgebaseColumn col-cus-5 j-column");
  1865.                     $(".j-extendColumn").removeClass("active");
  1866.                     $(".dashboard-browser .extend-knowledgebase").addClass("active");
  1867.  
  1868.                     $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1869.  
  1870.                     break;
  1871.             }
  1872.         });
  1873.  
  1874.         function setDashboardHeight(view) {
  1875.             switch (view) {
  1876.                 case "default":
  1877.                     $(".j-column > .panel > .panel-body").css("height", $(window).height() - 225);
  1878.                     $(".j-helpdeskColumn iframe, #dashboardKnowledgebase iframe").css("height", $(".j-helpdeskColumn > .panel > .panel-body").height() - 10);
  1879.  
  1880.                     break;
  1881.  
  1882.                 case "search":
  1883.                     $(".j-column > .panel > .panel-body").css("height", $(window).height() - 332);
  1884.                     $(".j-helpdeskColumn iframe, #dashboardKnowledgebase iframe").css("height", $(".j-helpdeskColumn > .panel > .panel-body").height() - 10);
  1885.  
  1886.                     break;
  1887.  
  1888.                 case "fulltext":
  1889.                     $(".j-column > .panel > .panel-body").css("height", $(window).height() - 285);
  1890.                     $(".j-helpdeskColumn iframe, #dashboardKnowledgebase iframe").css("height", $(".j-helpdeskColumn > .panel > .panel-body").height() - 10);
  1891.  
  1892.                     break;
  1893.             }
  1894.         }
  1895.  
  1896.         $(".j-createContact").click(function () {
  1897.             $('#crmState').val('contact_create');
  1898.             var iframeHeight = $(".j-helpdeskColumn > .panel > .panel-body").height() - 10;
  1899.             $("#crm-noSearchResults").hide();
  1900.             $("#crmContactDetail").show();
  1901.             $("#crmContactDetail").html("<iframe id='crmIframe' data-sws-properties='width height' frameborder='0' width='100%' height='" + iframeHeight +"px' src='@Url.Content("~/Person/Edit")' onLoad='checkIframeWindow(this.contentWindow.location.pathname);'></iframe>");
  1902.         });
  1903.         function regMyOlympus() {
  1904.             $(".j-regMyOlympus").click(function () {
  1905.                 $('#crmState').val('contact_regmyolympus');
  1906.                 var contactId = $(this).data("contact_id");
  1907.                 var iframeHeight = $(".j-helpdeskColumn > .panel > .panel-body").height() - 10;
  1908.                 $("#crm-noSearchResults").hide();
  1909.                 $("#crmContactDetail").show();
  1910.                 $("#crmContactDetail").html("<iframe id='crmIframe' data-sws-properties='width height' frameborder='0' width='100%' height='" + iframeHeight +"px' src='@Url.Content("~/Person/RegMyOlympus")" + "?contactId=" + contactId + "' onLoad='checkIframeWindow(this.contentWindow.location.pathname);'></iframe>");
  1911.             });
  1912.         }
  1913.         regMyOlympus();
  1914.  
  1915.         @*function regCategoryEdit() {
  1916.             $('span[data-cat-code][data-has-subcategories="False"]').unbind('click');
  1917.             $('span[data-cat-code][data-has-subcategories="False"]').click(function (e) {
  1918.                 var cid = $("#extPersonId").val();
  1919.                 var data = {
  1920.                     PersonId: cid,
  1921.                     CategoryCode: $(this).attr("data-cat-code")
  1922.                 }
  1923.                 var thisUrl = '@Url.Content("~/Person/ToggleCategory")';
  1924.                 $.ajax({
  1925.                     type: "POST",
  1926.                     url: thisUrl,
  1927.                     data: data,
  1928.                     context: this,
  1929.                     success: function (data) {
  1930.                         $(this).css("background-color", data.Color);
  1931.                     },
  1932.                     error: function () {
  1933.                         alert("Coul not toggle category.");
  1934.                     }
  1935.                 });
  1936.  
  1937.             });
  1938.         }*@
  1939.         regCategoryEdit();
  1940.  
  1941.         function checkIframeWindow(url) {
  1942.             if(url.indexOf('/Person/Detail/') >= 0 && !$("#joinWithCase").length) {
  1943.                 $(".j-crmColumn .panel-footer .tar").prepend("<a class='btn btn-info btn-sm j-joinWithCase' id='joinWithCase'><i class='fa fa-chain'></i> Join with Case</a>");
  1944.  
  1945.                 var receiver = document.getElementById('HelpdeskFrame').contentWindow;
  1946.  
  1947.                 // Get a reference to the 'Send Message' button.
  1948.                 var btn = document.getElementById('joinWithCase');
  1949.  
  1950.                 // A function to handle sending messages.
  1951.                 function sendMessage(e) {
  1952.                     // Prevent any default browser behaviour.
  1953.                     e.preventDefault();
  1954.  
  1955.                     var pass_data = {
  1956.                         'customerName': $("#crmIframe").contents().find('#extCustomerName').val(),
  1957.                         'customerId': $("#crmIframe").contents().find('#extCustomerId').val(),
  1958.                         'personName': $("#crmIframe").contents().find('#extPersonName').val(),
  1959.                         'personId': $("#crmIframe").contents().find('extPersonId').val(),
  1960.                     };
  1961.  
  1962.                     // Send a message to the receiver window.
  1963.                     receiver.postMessage(pass_data, '@(Request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority))');
  1964.                 }
  1965.                 $(btn).click(sendMessage);
  1966.             }
  1967.         }
  1968.  
  1969.         $(".j-search input.form-control").keydown(function (e) {
  1970.             if (e.keyCode == 13) {
  1971.                 $("#btnSearch").click();
  1972.             }
  1973.         });
  1974.  
  1975.         $(".j-serviceTool input.form-control").keydown(function (e) {
  1976.             if (e.keyCode == 13) {
  1977.                 $(".j-serviceToolSearch").click();
  1978.             }
  1979.         });
  1980.  
  1981.         $(".j-show-serviceTool").click(function () {
  1982.             $(".j-serviceTool").show();
  1983.             $(".j-search, .j-searchMore").hide();
  1984.             $(".dashboard-browser .panel-body").getNiceScroll().resize();
  1985.         });
  1986.  
  1987.         dashboardLink();
  1988.         contactDetail();
  1989.  
  1990.         $(".j-serviceToolSearch").click(function () {
  1991.  
  1992.             $repairNumber = $("#repairNumber").val();
  1993.             $serialNumber = $("#serialNumber").val();
  1994.             $custReferenceNumber = $("#custReferenceNumber").val();
  1995.             $productModel = $("#productModel").val();
  1996.             $NvxSoNumber = $("#NvxSoNumber").val();
  1997.             $shipmentNumber = $("#shipmentNumber").val();
  1998.             $productStatus = $("#productStatus").val();
  1999.             $customerLastname = $("#customerLastname").val();
  2000.             $customerCity = $("#customerCity").val();
  2001.             $customerZip = $("#customerZip").val();
  2002.             $customerCountry = $("#customerCountry").val();
  2003.             $customerStreet = $("#customerStreet").val();
  2004.             $retaulerNumber = $("#retaulerNumber").val();
  2005.             $companyName = $("#companyName").val();
  2006.             $warranty = $("#warranty").val();
  2007.             $registrationDate = $("#registrationDate").val();
  2008.             $arrivalDate = $("#arrivalDate").val();
  2009.             $repairDate = $("#repairDate").val();
  2010.             $finishDate = $("#finishDate").val();
  2011.  
  2012.             var $data = {};
  2013.             $(this).closest("form").find("input, select").each(function (index, element) {
  2014.                 var n = $(element).attr("name");
  2015.                 var v = $(element).val();
  2016.  
  2017.  
  2018.                 if (typeof (n) == "undefined" || typeof (v) == "undefined") {
  2019.                     return;
  2020.                 }
  2021.  
  2022.                 $data[n] = v;
  2023.             });
  2024.  
  2025.             $thisUrl = '@Url.Content("~/Products/ServiceOrderList")';
  2026.             $(".loading").show();
  2027.             $.ajax({
  2028.                 type: "POST",
  2029.                 url: $thisUrl,
  2030.                 data: $data,
  2031.                 dataType: "html",
  2032.                 success: function (data) {
  2033.                     var $dom = $(data);
  2034.                     if(!$dom.find("#crmList li").length) {
  2035.                         $("#crm-noSearchResults").show();
  2036.                         $("#serviceOrderList").empty();
  2037.                     }
  2038.                     $("#serviceOrderList").html($dom.find(".dashboard-inner").html());
  2039.  
  2040.                     $("#serviceOrderList").show();
  2041.                     $("#crmContactDetail").hide();
  2042.  
  2043.  
  2044.                     $("#serviceOrderList").niceScroll();
  2045.  
  2046.                     $('input.icheck').iCheck({
  2047.                         checkboxClass: 'icheckbox_flat',
  2048.                         radioClass: 'iradio_flat'
  2049.                     });
  2050.                     /*
  2051.                     thisArray = {'item':{ 'name': $dom.filter("title").text(), 'url': $thisUrl, 'breadcrumbs': '' }};
  2052.  
  2053.                     cookieHistory_arr = $.grep(cookieHistory_arr, function (el) {
  2054.  
  2055.                       return el.item.url != thisArray.url;
  2056.                     });
  2057.                     cookieHistory_arr.push(thisArray);
  2058.                     $.cookie("dashboardCrmHistory", JSON.stringify(cookieHistory_arr));
  2059.  
  2060.                     $("#crmHistory-list").empty();
  2061.                     $.each(cookieHistory_arr.reverse(), function (index, value) {
  2062.                       $("#crmHistory-list").append("<li><a data-breadcrumbs='" + JSON.stringify(value.item.breadcrumbs) + "' href='" + value.item.url + "' class='j-dashboardLink'>" + value.item.name + "</a>");
  2063.                     });
  2064.                     */
  2065.                     dashboardLink();
  2066.                     contactDetail();
  2067.  
  2068.                     $(".dashboard-browser .loading").hide();
  2069.  
  2070.                     $("#crmList .iCheck-helper").click(function () {
  2071.                         if ($("#crmList .icheckbox_flat.checked").length > 1) {
  2072.                             $(".j-mergeContacts").removeClass("btn-default").addClass("btn-success");
  2073.                         }
  2074.                         else {
  2075.                             $(".j-mergeContacts").removeClass("btn-success").addClass("btn-default");
  2076.                         }
  2077.                     });
  2078.                     $(".loading").hide();
  2079.                     $("#crm-noSearchResults").hide();
  2080.                 },
  2081.  
  2082.             });
  2083.         });
  2084.  
  2085.       function clearNoteForm() {
  2086.         $("#noteForm textarea").val("");
  2087.       }
  2088.       function hideNoteForm() {
  2089.         $("#noteForm").hide("slow");
  2090.       }
  2091.  
  2092.       function setNoteValidity(id, validityFlag) {
  2093.         $.ajax({
  2094.           url: '@Url.Content("~/Note/ChangeValidity")',
  2095.           type: 'POST',
  2096.           dataType: 'json',
  2097.           data: {
  2098.             noteId: id,
  2099.             setValid: validityFlag,
  2100.           },
  2101.           success: function (res) {
  2102.             renderNotes(res);
  2103.           },
  2104.           error: function () {
  2105.             alert("Could not save note");
  2106.           }
  2107.         });
  2108.       }
  2109.       function renderNotes(res) {
  2110.         $("#numOfNotes").text(res.TotalNotes);
  2111.         var template = $("#noteTemplate").html();
  2112.         var result = "";
  2113.         for (x in res.Notes) {
  2114.           var item = res.Notes[x];
  2115.           result += (template
  2116.               .replace("{class}", item.Class)
  2117.               .replace("{Date}", item.Date)
  2118.               .replace("{Note}", item.Note)
  2119.               .replace("{idvalue}", item.Id));
  2120.         }
  2121.         $("#noteList").html(result);
  2122.         rebindToolbox();
  2123.       }
  2124.       function resetNoteToolbox($noteDiv) {
  2125.         $noteDiv.find("div.stdTbx").show();
  2126.         $noteDiv.find("div.editNoteTbx").hide();
  2127.  
  2128.       }
  2129.       function rebindToolbox() {
  2130.         var __lastUnmodifiedNote = "";
  2131.  
  2132.         $.each($("div.note"), function (index, value) {
  2133.           var $noteDiv = $(value);
  2134.           var noteId = $noteDiv.find("input[name$='.Id']").val();
  2135.           var $noteContent = $noteDiv.find("p.editable");
  2136.           $noteDiv.find("a.j-remove,a.j-edit,a.j-restore,a.j-save,a.j-cancel").unbind("click");
  2137.           //    if ($(this).hasClass("j-edit")) {
  2138.           //      $(this).closest(".note").find("actions").hide();
  2139.           //    }
  2140.           if ($noteDiv.hasClass("disabled")) {
  2141.             $noteDiv.find("a.j-restore").click(function () {
  2142.               setNoteValidity(noteId, true);
  2143.             });
  2144.             $noteDiv.find("a.j-remove,a.j-edit").prop("disabled", true);
  2145.           }
  2146.           else {
  2147.             $noteDiv.find("a.j-restore").prop("disabled", true);
  2148.             $noteDiv.find("a.j-edit")
  2149.               .click(function() {
  2150.                 __lastUnmodifiedNote = $noteContent.text();
  2151.                 $noteContent.attr("contenteditable", "true").focus();
  2152.                 $noteDiv.find(".stdTbx").hide();
  2153.                 $noteDiv.find("div.editNoteTbx").show();
  2154.               });
  2155.             $noteDiv.find("a.j-remove").click(function () {
  2156.               setNoteValidity(noteId, false);
  2157.             });
  2158.           }
  2159.           $("a.j-save").click(function () {
  2160.             $.ajax({
  2161.               url: '@Url.Content("~/Note/ModifyNoteText")',
  2162.               type: 'POST',
  2163.               dataType: 'json',
  2164.               data: {
  2165.                 noteId: noteId,
  2166.                 text: $noteContent.text(),
  2167.               },
  2168.               success: function (res) {
  2169.                 renderNotes(res);
  2170.               },
  2171.               error: function () {
  2172.                 alert("Could not save note");
  2173.                 $noteContent.text(__lastUnmodifiedNote).removeAttr("contenteditable");
  2174.                 resetNoteToolbox($noteDiv);
  2175.               }
  2176.             });
  2177.           });
  2178.           $("a.j-cancel").click(function () {
  2179.             $noteContent.text(__lastUnmodifiedNote).removeAttr("contenteditable");
  2180.             resetNoteToolbox($noteDiv);
  2181.           });
  2182.         });
  2183.       }
  2184.  
  2185.       $(function() {
  2186.  
  2187.         function displayHelpdesk() {
  2188.           $("#helpdeskTitle").html("Helpdesk");
  2189.           $("#crmContactDetail").hide();
  2190.           $("#HelpdeskFrame").show();
  2191.         }
  2192.  
  2193.         $(document).on('click', "#closePersonDetail", function() {
  2194.           displayHelpdesk();
  2195.         });
  2196.  
  2197.         $(document).on('click', "#noteFormToggleSwitch", function () {
  2198.           $("#noteForm").toggle("slow");
  2199.         });
  2200.  
  2201.         $(document)
  2202.           .on('click', "#crmContactDetail .collapse-all", function() {
  2203.             $("#crmContactDetail .panel:not(.panel-static) > .panel-body")
  2204.               .slideUp(function() {
  2205.                 $(".dashboard-browser .panel-body").getNiceScroll().resize();
  2206.               });
  2207.             $("#crmContactDetail .panel > .panel-heading .actions i.fa-chevron-up")
  2208.               .removeClass("fa-chevron-up")
  2209.               .addClass("fa-chevron-down");
  2210.           });
  2211.  
  2212.         $(document)
  2213.           .on('click', "#crmContactDetail .expand-all", function() {
  2214.             $("#crmContactDetail .panel:not(.panel-static) > .panel-body")
  2215.               .slideDown(function() {
  2216.                 $(".dashboard-browser .panel-body").getNiceScroll().resize();
  2217.               });
  2218.             $("#crmContactDetail .panel:not(.panel-static) > .panel-heading .actions i.fa-chevron-down")
  2219.               .removeClass("fa-chevron-down")
  2220.               .addClass("fa-chevron-up");
  2221.             $(".dashboard-browser .panel-body").getNiceScroll().resize();
  2222.           });
  2223.  
  2224.  
  2225.         $(document).on('click', "a.j-clearNote", function () {
  2226.           hideNoteForm();
  2227.           clearNoteForm();
  2228.         });
  2229.         $(document).on('click', "a.j-addNote", function () {
  2230.           var val = $("#noteForm textarea").val();
  2231.           if (val == "") return;
  2232.           $.ajax({
  2233.             url: '@Url.Content("~/Note/AddNote")',
  2234.             type: 'POST',
  2235.             dataType: 'json',
  2236.             data: {
  2237.               ParentId: $("#extPersonId").val(),
  2238.               Value: val,
  2239.             },
  2240.             error: function () {
  2241.               alert("Could not save note");
  2242.             },
  2243.             success: function (res) {
  2244.               hideNoteForm();
  2245.               clearNoteForm();
  2246.               renderNotes(res);
  2247.             }
  2248.           });
  2249.           // send add request
  2250.           // on failue notify user
  2251.         });
  2252.  
  2253.             $( ".date-from" ).datepicker({
  2254.                 defaultDate: "+1w",
  2255.                 changeMonth: true,
  2256.                 numberOfMonths: 1,
  2257.                 dateFormat: "yy-mm-dd",
  2258.                 onClose: function( selectedDate ) {
  2259.                     $(this).closest(".form-group").find(".date-to").datepicker( "option", "minDate", selectedDate );
  2260.                 }
  2261.             });
  2262.             $( ".date-to" ).datepicker({
  2263.                 defaultDate: "+1w",
  2264.                 changeMonth: true,
  2265.                 numberOfMonths: 1,
  2266.                 dateFormat: "yy-mm-dd",
  2267.                 onClose: function( selectedDate ) {
  2268.                     $(this).closest(".form-group").find(".date-from").datepicker( "option", "maxDate", selectedDate );
  2269.                 }
  2270.             });
  2271.             $(".j-editContact-save").click(function () {
  2272.                 var $modal = $("#editContact .input-group");
  2273.                 var cid = $("#extPersonId").val();
  2274.                 var $currentUrl = '@Url.Content("~/Person/Detail/")' + cid;
  2275.                 var $input = $modal.find("input");
  2276.                 if (!$input[0].checkValidity()) {
  2277.                     $input.parent().addClass("has-error");
  2278.                     return;
  2279.                 }
  2280.                 var val = $input.val();
  2281.                 $.ajax({
  2282.                     url: '@Url.Content("~/Person/AddEmail")',
  2283.                     type: 'POST',
  2284.                     dataType: 'json',
  2285.                     data: {
  2286.                         personId: cid,
  2287.                         value: val,
  2288.                     },
  2289.                     error: function () {
  2290.                         alert("Something went wrong :-(");
  2291.                     },
  2292.                     success: function (res) {
  2293.                         reloadLink($(this), $currentUrl);
  2294.                         $('#editContact').modal('hide');
  2295.                         updateContact();
  2296.                     }
  2297.                 });
  2298.             });
  2299.             $("#editPhone input").keyup(function () {
  2300.                 var phone = $(this).val();
  2301.                 $.ajax({
  2302.                     url: '@Url.Content("~/Person/ValidatePhone")',
  2303.                     type: 'POST',
  2304.                     dataType: 'json',
  2305.                     data: {
  2306.                         phone: phone,
  2307.                         region: "CZ",
  2308.                     },
  2309.                     error: function () { },
  2310.                     success: function (res) {
  2311.                         $("#interpretedPhone").text(res.InterpretedPhoneNumber + " " + res.IsValid);
  2312.                     }
  2313.                 });
  2314.             });
  2315.             $(".j-editPhone-save").click(function () {
  2316.                 var cid = $("#extPersonId").val();
  2317.                 var $currentUrl = '@Url.Content("~/Person/Detail/")' + cid;
  2318.                 var $modal = $("#editPhone .input-group");
  2319.                 var $input = $modal.find("#newPhoneNumber");
  2320.                 var $pfx = $("#phonePrefix");
  2321.                 if (!$input[0].checkValidity()) {
  2322.                     $input.parent().addClass("has-error");
  2323.                     return;
  2324.                 }
  2325.                 if (!$pfx[0].checkValidity()) {
  2326.                     return;
  2327.                 }
  2328.                 var val = $pfx.val() + $input.val();
  2329.                 $.ajax({
  2330.                     url: '@Url.Content("~/Person/AddPhone")',
  2331.                     type: 'POST',
  2332.                     dataType: 'json',
  2333.                     data: {
  2334.                         personId: cid,
  2335.                         value: val,
  2336.                     },
  2337.                     error: function () {
  2338.                         alert("Something went wrong :-(");
  2339.                     },
  2340.                     success: function (res) {
  2341.                         reloadLink($(this), $currentUrl);
  2342.                         $('#editPhone').modal('hide');
  2343.                     }
  2344.                 });
  2345.             });
  2346.             $(".j-editAddress").click(function () {
  2347.                 $thisUrl = JSON.parse($.cookie("dashboardCrmBreadcrumbs"));
  2348.                 $thisUrl = $thisUrl[$thisUrl.length - 1].url
  2349.  
  2350.                 $thisStreet = $(this).data("street");
  2351.                 $thisCity = $(this).data("city");
  2352.                 $thisZip = $(this).data("zip");
  2353.                 $thisCountry = $(this).data("country");
  2354.  
  2355.                 $('#editAddress input[name=street]').val($thisStreet);
  2356.                 $('#editAddress input[name=city]').val($thisCity);
  2357.                 $('#editAddress input[name=zip]').val($thisZip);
  2358.                 $('#editAddress select').val($thisCountry);
  2359.             });
  2360.             $(".j-editName-save").click(function (event) {
  2361.                 event.preventDefault();
  2362.                 var cid = $("#extPersonId").val();
  2363.                 var $currentUrl = '@Url.Content("~/Person/Detail/")' + cid;
  2364.                 $modal = $("#editName");
  2365.                 var $fn = $modal.find("input[name=first-name]");
  2366.                 var hasError = false;
  2367.                 if (!$fn[0].checkValidity()) {
  2368.                     $fn.parent().addClass("has-error");
  2369.                     hasError |= true;
  2370.                 }
  2371.                 var fn = $fn.val();
  2372.                 var $ln = $modal.find("input[name=last-name]");
  2373.                 if (!$ln[0].checkValidity()) {
  2374.                     $ln.parent().addClass("has-error");
  2375.                     hasError |= true;
  2376.                 }
  2377.                 if (hasError) { return; }
  2378.                 var ln = $ln.val();
  2379.                 var fileas = $modal.find("input[name=fileas-name]").val();
  2380.                 if (fileas == "") {
  2381.                     fileas = fn + " " + ln;
  2382.                     $modal.find("input[name=fileas-name]").val(fileas);
  2383.                     setTimeout (function() { saveContact(cid, fn, ln, fileas, $currentUrl, $(this)); }, 500);
  2384.                 }
  2385.                 else {
  2386.                     saveContact(cid, fn, ln, fileas, $currentUrl, $(this));
  2387.                 }
  2388.             });
  2389.             $(".j-editAddress-save").click(function (event) {
  2390.                 event.preventDefault();
  2391.                 var cid = $("#extPersonId").val();
  2392.                 var $currentUrl = '@Url.Content("~/Person/Detail/")' + cid;
  2393.                 var success = true;
  2394.                 var $street = $('#editAddress input[name=street]');
  2395.                 success &= examineElementAndIndicateErrlr($street);
  2396.                 var $city = $('#editAddress input[name=city]');
  2397.                 success &= examineElementAndIndicateErrlr($city);
  2398.                 var $postalCode = $('#editAddress input[name=zip]');
  2399.                 success &= examineElementAndIndicateErrlr($postalCode);
  2400.                 var $country  = $('#editAddress select');
  2401.                 success &= examineElementAndIndicateErrlr($country);
  2402.                 if (!success) { return; }
  2403.                 $.ajax({
  2404.                     url: '@Url.Content("~/Person/AddAddress")',
  2405.                     type: 'POST',
  2406.                     dataType: 'json',
  2407.                     data: {
  2408.                         personId: cid,
  2409.                         street: $street.val(),
  2410.                         postalCode: $postalCode.val(),
  2411.                         city: $city.val(),
  2412.                         countryCode: $country.val(),
  2413.                     },
  2414.                     error: function () {
  2415.                         alert("Something went wrong :-(");
  2416.                     },
  2417.                     success: function (res) {
  2418.                         reloadLink($(this), $currentUrl);
  2419.                         $('#editAddress').modal('hide');
  2420.                     }
  2421.                 });
  2422.             });
  2423.  
  2424.         });
  2425.         function examineElementAndIndicateErrlr($elm) {
  2426.             if (!$elm[0].checkValidity()) {
  2427.                 $elm.parent().addClass("has-error");
  2428.                 return false;
  2429.             }
  2430.             else {
  2431.                 return true;
  2432.             }
  2433.         }
  2434.         function saveContact (id, fn, ln, fileAs, currentUrl, $this) {
  2435.             $.ajax({
  2436.                 url: '@Url.Content("~/Person/SaveName")',
  2437.                 type: 'POST',
  2438.                 dataType: 'json',
  2439.                 data: {
  2440.                     personId: id,
  2441.                     firstName: fn,
  2442.                     lastName: ln,
  2443.                     fileAs: fileAs
  2444.                 },
  2445.                 error: function () {
  2446.                     alert("Something went wrong :-(");
  2447.                 },
  2448.                 success: function (res) {
  2449.                     reloadLink($this, currentUrl);
  2450.                     $('#editName').modal('hide');
  2451.                 }
  2452.             });
  2453.         }
  2454.         function verifyContact(e, result) {
  2455.             var popover = $(e).closest(".detail-contact-info").find(".popover");
  2456.             popover.toggle();
  2457.  
  2458.             switch (true) {
  2459.                 case result == "verified":
  2460.                     popover.removeClass("danger warning").addClass("success");
  2461.                     popover.find(".popover-content").text("Verified");
  2462.                     break;
  2463.                 case result == "error":
  2464.                     popover.removeClass("success warning").addClass("danger");
  2465.                     popover.find(".popover-content").text("Error");
  2466.                     break;
  2467.                 case result == "notVerified":
  2468.                     popover.removeClass("success warning").addClass("warning");
  2469.                     popover.find(".popover-content").text("Not verified");
  2470.                     break;
  2471.             }
  2472.         }
  2473.         $(document).ajaxComplete(function() {
  2474.           $(".dashboard-browser .panel-body").getNiceScroll().resize();
  2475.           rebindToolbox();
  2476.         });
  2477.     </script>
  2478.   <script type="text/javascript" src="~/Scripts/Olympus/view_model.js"></script>
  2479. }
  2480. @section styles {
  2481.     <link href="~/Content/jqueryUI/jquery-ui.min.css" type="text/css" rel="stylesheet" />
  2482. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement