diff --git a/LiveChat/App_LocalResources/AdminPanel.resx b/LiveChat/App_LocalResources/AdminPanel.resx index a2b9a9e..a246f84 100644 --- a/LiveChat/App_LocalResources/AdminPanel.resx +++ b/LiveChat/App_LocalResources/AdminPanel.resx @@ -1,564 +1,564 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 90 Degree - - - -90 Degree - - - Active Visitors - - - Add Agent - - - Agent has been created successfully. - - - Add Department - - - Department has been created successfully. - - - Add New Agent - - - Add New Department - - - Admin Panel - - - Agents - - - View permission of the current live chats for agents - - - All Agents In Department - - - Allow visitors to send you messages when you are offline. To receive email notification. - - - Allow visitors to rate their chats with your agents. - - - Anonymous - - - Appearance - - - Are you sure? - - - You can customize and limited live chat module! - - - Basic Settings - - - Basic Settings is not enabled! - - - Bottom - - - Bottom Left - - - Bottom Right - - - Byline - - - Cancel - - - Center - - - Chat Window - - - Clear Session Storage - - - Concierge - - - Css Style - - - After deleted agent, history is not deleted - - - Agent has been removed successfully. - - - If the department have agents you can not delete department - - - Department has been removed successfully. - - - Department Name - - - Departments - - - Description - - - Display agents' and visitors' avatars in chat messages. - - - Name - - - Display Title - - - Done! - - - Edit - - - Email - - - Email Templates - - - Enabled - - - Enable Rating - - - Error - - - Field value is required - - - Value must be a numeric - - - Exit - - - Export To Excel - - - Find a Agent... - - - Find a Department - - - Find a Visitor - - - Form Items - - - Forms - - - Functionality Settings - - - History - - - Home - - - Horizontal Position - - - hour - - - Html Template - - - Incoming Chats - - - Large - - - Left - - - Live Chat - - - Live Chat Enabled - - - Live Chat is not enabled! for chatting with visitors it must enabled! - - - Manage - - - Medium - - - Message - - - Message Style - - - min - - - Min Button - - - Minimized Chat Button - - - MyDnn Support - - - Name - - - Name,Email - - - No - - - No agents... - - - No departments... - - - Normal - - - Offline BG Color - - - Offline Button - - - Offline Color - - - Offline Email Template - - - Offline Form - - - Offline Message - - - Online - - - Online BG Color - - - Online Color - - - Online Form - - - Only Current Agents - - - Only Current Agents And Admin - - - Play a sound for the visitor when a new message is received - - - Priority - - - Referrer - - - Require visitors to complete a form before starting a chat. - - - Right - - - Rotate - - - Save - - - Select User - - - Automatically send the chat transcript to agent(s) email after the chat ends. - - - Send email notification to agent(s) when visitors send an offline message - - - Send Message - - - Settings - - - Show Avatars - - - Show desktop notifications for incoming chats - - - Show desktop notifications for new messages in open chats - - - Simple Live - - - Small - - - sort by - - - Sort by Browser - - - Sort by Country - - - Sort by Date Newest First - - - Sort by Date Oldest First - - - Speech Bubbles - - - Start Chat - - - Theme Color - - - Ticketing - - - Ticketing Enabled - - - Title Color - - - Toggle Fullscreen - - - Top - - - Top Title - - - Transcript Email Template - - - Update - - - Update Agent - - - Agent has been updated successfully. - - - Update Department - - - Department has been updated successfully. - - - Use Html - - - Vertical Position - - - Viewing - - - Visitor - - - Is Chatting... - - - Visitor List - - - Visitors Online is not enabled! for tracking the visitors it must enabled! - - - Visitors Online Enabled - - - Widget Position - - - Customize live chat widget and minimize button - - - Widget Settings - - - Widget Settings is not enabled! - - - Window Size - - - Yes - - - You can use html and css. - - - Visitor is typing... - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 90 Degree + + + -90 Degree + + + Active Visitors + + + Add Agent + + + Agent has been created successfully. + + + Add Department + + + Department has been created successfully. + + + Add New Agent + + + Add New Department + + + Admin Panel + + + Agents + + + View permission of the current live chats for agents + + + All Agents In Department + + + Allow visitors to send you messages when you are offline. To receive email notification. + + + Allow visitors to rate their chats with your agents. + + + Anonymous + + + Appearance + + + Are you sure? + + + You can customize and limited live chat module! + + + Basic Settings + + + Basic Settings is not enabled! + + + Bottom + + + Bottom Left + + + Bottom Right + + + Byline + + + Cancel + + + Center + + + Chat Window + + + Clear Session Storage + + + Concierge + + + Css Style + + + After deleted agent, history is not deleted + + + Agent has been removed successfully. + + + If the department have agents you can not delete department + + + Department has been removed successfully. + + + Department Name + + + Departments + + + Description + + + Display agents' and visitors' avatars in chat messages. + + + Name + + + Display Title + + + Done! + + + Edit + + + Email + + + Email Templates + + + Enabled + + + Enable Rating + + + Error + + + Field value is required + + + Value must be a numeric + + + Exit + + + Export To Excel + + + Find a Agent... + + + Find a Department + + + Find a Visitor + + + Form Items + + + Forms + + + Functionality Settings + + + History + + + Home + + + Horizontal Position + + + hour + + + Html Template + + + Incoming Chats + + + Large + + + Left + + + Live Chat + + + Live Chat Enabled + + + Live Chat is not enabled! for chatting with visitors it must enabled! + + + Manage + + + Medium + + + Message + + + Message Style + + + min + + + Min Button + + + Minimized Chat Button + + + MyDnn Support + + + Name + + + Name,Email + + + No + + + No agents... + + + No departments... + + + Normal + + + Offline BG Color + + + Offline Button + + + Offline Color + + + Offline Email Template + + + Offline Form + + + Offline Message + + + Online + + + Online BG Color + + + Online Color + + + Online Form + + + Only Current Agents + + + Only Current Agents And Admin + + + Play a sound for the visitor when a new message is received + + + Priority + + + Referrer + + + Require visitors to complete a form before starting a chat. + + + Right + + + Rotate + + + Save + + + Select User by Displayname... + + + Automatically send the chat transcript to agent(s) email after the chat ends. + + + Send email notification to agent(s) when visitors send an offline message + + + Send Message + + + Settings + + + Show Avatars + + + Show desktop notifications for incoming chats + + + Show desktop notifications for new messages in open chats + + + Simple Live + + + Small + + + sort by + + + Sort by Browser + + + Sort by Country + + + Sort by Date Newest First + + + Sort by Date Oldest First + + + Speech Bubbles + + + Start Chat + + + Theme Color + + + Ticketing + + + Ticketing Enabled + + + Title Color + + + Toggle Fullscreen + + + Top + + + Top Title + + + Transcript Email Template + + + Update + + + Update Agent + + + Agent has been updated successfully. + + + Update Department + + + Department has been updated successfully. + + + Use Html + + + Vertical Position + + + Viewing + + + Visitor + + + Is Chatting... + + + Visitor List + + + Visitors Online is not enabled! for tracking the visitors it must enabled! + + + Visitors Online Enabled + + + Widget Position + + + Customize live chat widget and minimize button + + + Widget Settings + + + Widget Settings is not enabled! + + + Window Size + + + Yes + + + You can use html and css. + + + Visitor is typing... + \ No newline at end of file diff --git a/LiveChat/App_LocalResources/SharedResources.resx b/LiveChat/App_LocalResources/SharedResources.resx index 6722f30..45b63ef 100644 --- a/LiveChat/App_LocalResources/SharedResources.resx +++ b/LiveChat/App_LocalResources/SharedResources.resx @@ -1,483 +1,501 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Actions - - - Add Agent - - - Agent has been created successfully. - - - Add Department - - - Department has been created successfully. - - - Add New Agent - - - Add New Department - - - Advanced Search - - - Thanks for the message! We'll get back to you as soon as we can. - - - the agent has gone offline. - - - Agent(s) - - - All - - - Anonymous - - - Are you sure? - - - Ask us anything - - - Bad - - - Ban Visitor - - - Browser - - - Cancel - - - Chat - - - Chat rated Bad - - - Chat rated Good - - - Chat rating removed - - - Chat started - - - Chat Transcript - - - Current Chat - - - Date - - - Delete - - - After deleted agent, history is not deleted - - - Agent has been removed successfully. - - - If the department have agents you can not delete department - - - You can not removed department! - - - Department has been removed successfully. - - - Department - - - Department(s) - - - Detected language - - - Disconnect - - - Dismiss - - - Done! - - - {0} is exists. - - - Edit - - - Email - - - Email sent to - - - Email Transcript - - - To minimize this chat instead, click the minimize button or outside the chat window - - - End Chat? - - - End Chat - - - Error - - - Export Transcript - - - Filter by agents... - - - Filter by departments... - - - Filter by visitor email... - - - From date... - - - Good - - - History - - - Hour - - - hour - - - hr - - - Hour(s) - - - Introduce Yourself - - - IpAddress - - - Live Chat Request... - - - Live Support - - - Location - - - Message: - - - Placeholder - - - Messages - - - Min - - - Offline - - - Online - - - Minute - - - Minutes - - - Name - - - No - - - No Messages... - - - Not Now - - - of - - - offline - - - We are offline, but if you leave your message and contact details, we will try to get back to you =) - - - Offline Message from - - - online - - - Options - - - Past Chats - - - Past Visits - - - Platform - - - You're listening to this chat. Click here to join the chat... - - - Please wait until the agent connect to you... - - - Leave a question or comment and our agents will try to attend to you shortly =) - - - Are you sure? - - - Purge History - - - Rating - - - Reconnecting... - - - Referrer - - - Resend - - - Select action - - - What we can help with? - - - Send Email - - - Send Message - - - Serve requests - - - Showing - - - Start Chat - - - Support - - - Time On Site - - - to - - - To date... - - - Transcript - - - Translate - - - TranslateChat - - - Type your message here - - - Unread - - - Update Agent - - - Agent has been updated successfully. - - - Update Department - - - Department has been updated successfully. - - - UserAgent - - - User Info - - - Viewing: - - - Are you sure you want to end this chat? - - - Visitor Path - - - Write a message... - - - Yes - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Add Agent + + + Agent has been created successfully. + + + Add Department + + + Department has been created successfully. + + + Add New Agent + + + Add New Department + + + Advanced Search + + + Thanks for the message! We'll get back to you as soon as we can. + + + Agent Default Avatar + + + the agent has gone offline. + + + Agent is typing... + + + Agent(s) + + + All + + + Anonymous + + + Are you sure? + + + Ask us anything + + + Bad + + + Ban Visitor + + + Browser + + + Cancel + + + Chat + + + Chat rated Bad + + + Chat rated Good + + + Chat rating removed + + + Chat started + + + Chat Transcript + + + Current Chat + + + Date + + + Delete + + + After deleted agent, history is not deleted + + + Agent has been removed successfully. + + + If the department have agents you can not delete department + + + You can not removed department! + + + Department has been removed successfully. + + + Department + + + Department(s) + + + Detected language + + + Disconnect + + + Dismiss + + + Done! + + + {0} is exists. + + + Edit + + + Email + + + Email sent to + + + Email Transcript + + + To minimize this chat instead, click the minimize button or outside the chat window + + + End Chat? + + + End Chat + + + Error + + + Export Transcript + + + Filter by agents... + + + Filter by departments... + + + Filter by visitor email... + + + From date... + + + Good + + + History + + + Hour + + + hour + + + hr + + + Hour(s) + + + Incoming chat + + + Introduce Yourself + + + IpAddress + + + Live Chat Request... + + + Live Support + + + Location + + + Message: + + + Placeholder + + + Messages + + + Min + + + Offline + + + Online + + + Minute + + + Minutes + + + Name + + + No + + + No Messages... + + + Not Now + + + of + + + offline + + + We are offline, but if you leave your message and contact details, we will try to get back to you =) + + + Offline Message from + + + online + + + Options + + + Past Chats + + + Past Visits + + + Platform + + + You're listening to this chat. Click here to join the chat... + + + Please wait until the agent connect to you... + + + Leave a question or comment and our agents will try to attend to you shortly =) + + + Are you sure? + + + Purge History + + + Rating + + + Reconnecting... + + + Referrer + + + Refresh Page + + + Resend + + + Select action + + + What we can help with? + + + Send Email + + + Send Message + + + Serve requests + + + Showing + + + Start Chat + + + Support + + + Time On Site + + + to + + + To date... + + + Transcript + + + Translate + + + TranslateChat + + + Type your message here + + + Unread + + + Update Agent + + + Agent has been updated successfully. + + + Update Department + + + Department has been updated successfully. + + + Upload Image + + + UserAgent + + + User Info + + + Viewing: + + + Visitor Avatar + + + Are you sure you want to end this chat? + + + Visitor Path + + + Write a message... + + + Yes + \ No newline at end of file diff --git a/LiveChat/ClientApp/Controllers/agent-controller.js b/LiveChat/ClientApp/Controllers/agent-controller.js index 403b47e..ca28daf 100644 --- a/LiveChat/ClientApp/Controllers/agent-controller.js +++ b/LiveChat/ClientApp/Controllers/agent-controller.js @@ -1,12 +1,12 @@ -app.controller("agentController", function ($scope, $http, $timeout, $filter, cfpLoadingBar, activeMenu) { +app.controller("agentController", function ($scope, $http, $timeout, $filter, cfpLoadingBar, activeMenu) { activeMenu.setActiveMenu({ Parent: 'manage', Child: 'agents' }); var timeOut = false; - var $self = { - Headers: { + var $self = { + Headers: { ModuleId: mydnnSupportLiveChat.ModuleID, - TabId: mydnnSupportLiveChat.TabID, - } + TabId: mydnnSupportLiveChat.TabID, + } }; $scope.localizeString = mydnnSupportLiveChat.SharedResources; @@ -16,42 +16,42 @@ $scope.isSearchReady = false; $scope.isAgentEdit = false; - $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetAgents", { headers: $self.Headers }).success(function (data) { + $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetAgents", { headers: $self.Headers }).success(function (data) { $scope.agents = data; - $timeout(function () { $scope.isSearchReady = true; }, 1000); - }).error(function (data, status, headers, config) { - angular.element('#tblagents > tbody').html(''.replace("{0}", data)); + $timeout(function () { $scope.isSearchReady = true; }, 1000); + }).error(function (data, status, headers, config) { + angular.element('#tblagents > tbody').html(''.replace("{0}", data)); }); - $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetNamesOfDepartments", { headers: $self.Headers }).success(function (data) { - $scope.departments = data; + $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetNamesOfDepartments", { headers: $self.Headers }).success(function (data) { + $scope.departments = data; }); //page events - $scope.onEditAgentClick = function (agent) { - if (!agent) { - $scope.agent = { - Enabled: true + $scope.onEditAgentClick = function (agent) { + if (!agent) { + $scope.agent = { + Enabled: true }; $scope.winTitle = $scope.localizeString["AddNewAgent.Text"]; - $scope.isAgentEdit = false; + $scope.isAgentEdit = false; } - else { + else { $scope.agent = angular.copy(agent); $scope.winTitle = $scope.localizeString["Edit.Text"] + " " + $scope.agent.DisplayName; - $scope.isAgentEdit = true; + $scope.isAgentEdit = true; } $scope.checkValidate = false; $('#wnEditAgent').modal('show'); - setTimeout(function () { - $scope.$broadcast('newItemAdded'); - }, 500); + setTimeout(function () { + $scope.$broadcast('newItemAdded'); + }, 500); }; - $scope.onDeleteAgentClick = function (agentID, index) { - swal({ + $scope.onDeleteAgentClick = function (agentID, index) { + swal({ title: $scope.localizeString["AreYouSure.Text"], text: $scope.localizeString["DeleteAgentConfirm.Text"], type: "warning", @@ -60,41 +60,47 @@ confirmButtonText: $scope.localizeString["Yes.Text"], cancelButtonText: $scope.localizeString["No.Text"], closeOnConfirm: false, - animation: false - }, function () { - var data = { - ID: agentID + animation: false + }, function () { + var data = { + ID: agentID }; - $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/DeleteAgent", data, { headers: $self.Headers }).success(function (data) { + $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/DeleteAgent", data, { headers: $self.Headers }).success(function (data) { $scope.agents.splice(index, 1); $scope.agent = {}; - swal({ + swal({ title: $scope.localizeString["Done.Text"], text: $scope.localizeString["DeleteAgentMsg.Text"], type: "success", - timer: 3000 - }); - }).error(function (data, status, headers, config) { - swal({ + timer: 3000 + }); + }).error(function (data, status, headers, config) { + swal({ title: $scope.localizeString["Error.Text"], text: data, - type: "error", + type: "error", }); - swal($scope.localizeString["Error.Text"], data, "error"); - }); - }); + swal($scope.localizeString["Error.Text"], data, "error"); + }); + }); }; - $scope.onUpdateAgentClick = function () { + $scope.onUpdateAgentClick = function () { $scope.checkValidate = true; - if ($scope.agentForm.$valid && $scope.agent.UserID) { + if ($scope.agentForm.$valid && $scope.agent.UserID) { if ($scope.agent.AgentID) - $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/UpdateAgent", $scope.agent, { headers: $self.Headers }).success(function (data) { - swal({ + $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/UpdateAgent", $scope.agent, { headers: $self.Headers }).success(function (data) { + swal({ title: $scope.localizeString["Done.Text"], text: $scope.localizeString["UpdateAgentMsg.Text"], type: "success", - timer: 3000 + showCancelButton: true, + confirmButtonColor: "#4E9A36", + confirmButtonText: $scope.localizeString["RefreshPage.Text"], + cancelButtonText: $scope.localizeString["No.Text"], + closeOnConfirm: false, + }, function () { + location.reload(); }); $('#wnEditAgent').modal('hide'); @@ -103,21 +109,27 @@ var index = $scope.agents.indexOf(agent); $scope.agents[index] = $scope.agent; - $scope.agent = {}; - }).error(function (data, status, headers, config) { - swal({ + $scope.agent = {}; + }).error(function (data, status, headers, config) { + swal({ title: $scope.localizeString["Error.Text"], text: data, - type: "error", - }); + type: "error", + }); }); else - $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/AddAgent", $scope.agent, { headers: $self.Headers }).success(function (data) { - swal({ + $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/AddAgent", $scope.agent, { headers: $self.Headers }).success(function (data) { + swal({ title: $scope.localizeString["Done.Text"], text: $scope.localizeString["AddAgentMsg.Text"], type: "success", - timer: 3000 + showCancelButton: true, + confirmButtonColor: "#4E9A36", + confirmButtonText: $scope.localizeString["RefreshPage.Text"], + cancelButtonText: $scope.localizeString["No.Text"], + closeOnConfirm: false, + }, function () { + location.reload(); }); $('#wnEditAgent').modal('hide'); @@ -125,60 +137,60 @@ $scope.agent = data.Agent; $scope.agents.push($scope.agent); - $scope.agent = {}; - }).error(function (data, status, headers, config) { - swal({ + $scope.agent = {}; + }).error(function (data, status, headers, config) { + swal({ title: $scope.localizeString["Error.Text"], text: data, - type: "error", - }); + type: "error", + }); }); - $scope.departmentsFilter = undefined; - } + $scope.departmentsFilter = undefined; + } }; // autocomplete for displayname - $scope.getUserByDisplayName = function (val) { - return $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetUserByDisplayName", { + $scope.getUserByDisplayName = function (val) { + return $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetUserByDisplayName", { headers: $self.Headers, - params: { - name: val - } - }).then(function (response) { - return response.data; + params: { + name: val + } + }).then(function (response) { + return response.data; }); - $scope.agent.UserID = 0; + $scope.agent.UserID = 0; }; - $scope.setUserID = function (agent) { - $scope.agent.UserID = agent.UserID; + $scope.setUserID = function (agent) { + $scope.agent.UserID = agent.UserID; } //Search functions $scope.filterModel = ''; - $scope.$watch('filterModel', function () { + $scope.$watch('filterModel', function () { if (timeOut) $timeout.cancel(timeOut) - timeOut = $timeout(function () { + timeOut = $timeout(function () { if ($scope.isSearchReady) - $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/SearchAgents", { params: { searchType: 1, filter: $scope.filterModel }, headers: $self.Headers }).success(function (data) { - $scope.agents = data; - }); - }, 500) + $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/SearchAgents", { params: { searchType: 1, filter: $scope.filterModel }, headers: $self.Headers }).success(function (data) { + $scope.agents = data; + }); + }, 500) }); - $scope.onClearFilterClick = function () { - $scope.filterModel = ""; + $scope.onClearFilterClick = function () { + $scope.filterModel = ""; }; - $scope.$watch('departmentsFilter', function () { - if ($scope.departmentsFilter) { - $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/SearchAgents", { params: { searchType: 2, filter: $scope.departmentsFilter.join(",") }, headers: $self.Headers }).success(function (data) { - $scope.agents = data; - }); - } - }); + $scope.$watch('departmentsFilter', function () { + if ($scope.departmentsFilter) { + $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/SearchAgents", { params: { searchType: 2, filter: $scope.departmentsFilter.join(",") }, headers: $self.Headers }).success(function (data) { + $scope.agents = data; + }); + } + }); }); diff --git a/LiveChat/ClientApp/Controllers/livechat-agent-controller.js b/LiveChat/ClientApp/Controllers/livechat-agent-controller.js index a409e81..68fc063 100644 --- a/LiveChat/ClientApp/Controllers/livechat-agent-controller.js +++ b/LiveChat/ClientApp/Controllers/livechat-agent-controller.js @@ -1,51 +1,54 @@ -app.controller("livechatAgentController", function ($scope, $window, $location, $http, $interval, $timeout, $filter, localizationService, HubProxy) { +app.controller("livechatAgentController", function ($scope, $window, $location, $http, $interval, $timeout, $filter, ngAudio, localizationService, HubProxy) { var siteRoot = mydnnSupportLiveChat.SiteRoot; var portalID = mydnnSupportLiveChat.PortalID; var currentCulture = mydnnSupportLiveChat.CurrentCulture; - var clearKeyPress = true; var timerCalculator; + var isTyping = false; var me; + $scope.localizeString = mydnnSupportLiveChat.SharedResources; $scope.currentLiveChat = 0; $scope.livechats = []; $scope.serveRequests = []; + $scope.sounds = { + Incoming: ngAudio.load(siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/Content/Sounds/incoming.mp3"), + NewMessage: ngAudio.load(siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/Content/Sounds/newmessage.mp3"), + } - $scope.localizeString = mydnnSupportLiveChat.SharedResources; - - if (localStorage["MyDnnVisitorsOnline_VisitorGUID"] == null) { - localStorage["MyDnnVisitorsOnline_VisitorGUID"] = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + if (localStorage["MyDnnVisitorsOnline_VisitorGUID"] == null) { + localStorage["MyDnnVisitorsOnline_VisitorGUID"] = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); + return v.toString(16); + }); } var visitorGUID = localStorage["MyDnnVisitorsOnline_VisitorGUID"]; //events - $scope.onServeRequestsClick = function () { - for (var i = 0; i < $scope.serveRequests.length; i++) { - hub.invoke('InitialLiveChatForAgent', $scope.serveRequests[i].LiveChatID, false); - } + $scope.onServeRequestsClick = function () { + for (var i = 0; i < $scope.serveRequests.length; i++) { + hub.invoke('InitialLiveChatForAgent', $scope.serveRequests[i].LiveChatID, false); + } }; - $scope.onLiveChatButtonClick = function ($event, id) { + $scope.onLiveChatButtonClick = function ($event, id) { if ($scope.currentLiveChat != id) $scope.currentLiveChat = id; else $scope.currentLiveChat = 0; - $event.stopPropagation(); + $event.stopPropagation(); }; - $scope.onMinimizeLiveChat = function () { - $scope.currentLiveChat = 0; + $scope.onMinimizeLiveChat = function () { + $scope.currentLiveChat = 0; }; - $scope.onCloseLiveChat = function (livechatID) { + $scope.onCloseLiveChat = function (livechatID) { var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { var indx = $scope.livechats.indexOf(result[0]); - if ($filter("filter")($scope.livechats, { Agents: { UserID: me.UserID } }).length) { - swal({ + if ($filter("filter")($scope.livechats, { Agents: { UserID: me.UserID } }).length) { + swal({ title: $scope.localizeString["EndChat.Text"], text: $scope.localizeString["EndChat.Help"], type: "warning", @@ -53,33 +56,35 @@ confirmButtonColor: "#DD6B55", confirmButtonText: $scope.localizeString["EndChat.Text"], cancelButtonText: $scope.localizeString["Cancel.Text"], - closeOnConfirm: true, - }, function () { + closeOnConfirm: true, + }, function () { hub.invoke('CloseLiveChatByAgent', portalID, livechatID); - $scope.livechats.splice(indx, 1); - }); + $scope.livechats.splice(indx, 1); + }); } else - $scope.livechats.splice(indx, 1); - } + $scope.livechats.splice(indx, 1); + } }; - $scope.onStartChatClick = function (livechatID) { - hub.invoke('StartLiveChatByAgent', livechatID); + $scope.onStartChatClick = function (livechatID) { + hub.invoke('StartLiveChatByAgent', livechatID); }; - $scope.onMessageEditorKeypress = function ($event, livechatID) { - if ($event.which === 13 && clearKeyPress) { + $scope.onMessageEditorKeypress = function ($event, livechatID) { + if ($event.which === 13) { var livechat = $filter("filter")($scope.livechats, { LiveChatID: livechatID })[0]; - var message = { + if (!livechat.NewMessage) return; //empty message + + var message = { MessageID: -1, LiveChatID: livechat.LiveChatID, CreateDate: new Date(), SentBy: 2, AgentUserID: me.UserID, MessageType: 0, - Message: livechat.NewMessage + Message: livechat.NewMessage }; livechat.NewMessage = ''; @@ -89,205 +94,225 @@ $scope.$broadcast("onScrollBottom", { id: livechat.LiveChatID }); - if (clearKeyPress) { - clearKeyPress = false; - - sendMessage(livechat, message); + sendMessage(livechat, message); - $timeout(function () { - clearKeyPress = true; - }, 100); - } + $event.preventDefault(); + } + else { //agent is typing... + if (!isTyping) { + isTyping = true; - $event.preventDefault(); + visitorIsTyping(); - return false; - } + $timeout(function () { + isTyping = false; + }, 4000); + } + } }; - $scope.onLiveChatWinClick = function ($event) { - $event.stopPropagation(); + $scope.onLiveChatWinClick = function ($event) { + $event.stopPropagation(); }; - $scope.onLiveChatWinMouseDown = function ($event) { - if ($event.which == 3) { + $scope.onLiveChatWinMouseDown = function ($event) { + if ($event.which == 3) { alert("!"); - $event.stopPropagation(); - } + $event.stopPropagation(); + } }; - angular.element($window).bind('click', function ($event) { - $scope.$apply(function ($event) { + angular.element($window).bind('click', function ($event) { + $scope.$apply(function ($event) { $scope.currentLiveChat = 0; - angular.element(".mydnn-livechats").hide(); - }); + angular.element(".mydnn-livechats").hide(); + }); }); - $scope.$watch('currentLiveChat', function () { - if ($scope.currentLiveChat) { + $scope.$watch('currentLiveChat', function () { + if ($scope.currentLiveChat) { angular.element(".mydnn-livechats").show(); var result = $filter("filter")($scope.livechats, { LiveChatID: $scope.currentLiveChat }); - if (result.length) { + if (result.length) { var livechat = result[0]; livechat.UnReadMessages = 0; - seenMessages(livechat); + seenMessages(livechat); } - $timeout(function () { - $scope.$broadcast('newItemAdded'); - }, 500); - } - else { - $(".livechat-window").one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function (e) { - if ($scope.currentLiveChat == 0) angular.element(".mydnn-livechats").hide(); - }); + $timeout(function () { + $scope.$broadcast('newItemAdded'); + }, 500); } + else { + $(".livechat-window").one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function (e) { + if ($scope.currentLiveChat == 0) angular.element(".mydnn-livechats").hide(); + }); + } }); //signalR - var hub = new HubProxy('MyDnnSupportLiveChatHub'); - hub.on('incomingLiveChat', function (livechatID, visitorGUID, message, mode) { + var hub = new HubProxy('MyDnnSupportLiveChatHub', { connectionPath: siteRoot }); + hub.on('incomingLiveChat', function (livechatID, visitorGUID, message, mode) { var result = ($filter("filter")($scope.serveRequests, { LiveChatID: livechatID })); - if (!result.length && mode == "add") { + if (!result.length && mode == "add") { $scope.$root.$broadcast("onIncomingLiveChat", { livechatID: livechatID, visitorGUID: visitorGUID, message: message }); - var req = { + var req = { LiveChatID: livechatID, - VisitorGUID: visitorGUID + VisitorGUID: visitorGUID }; - $scope.serveRequests.push(req); + $scope.serveRequests.push(req); + + if (!checkPageFocus()) { + //play new message rigthtone + playSound('incoming'); + + //desktop notification + if ($scope.widgetSettings.ShowDekstopNotificationForIncoming == 'True' && Notification.permission === "granted") { + showDesktopNotification($scope.localizeString['IncomingChat.Text'], ''); + } + } + } - else if (result.length && mode == "remove") { + else if (result.length && mode == "remove") { var indx = $scope.serveRequests.indexOf(result[0]); - $scope.serveRequests.splice(indx, 1); - } + $scope.serveRequests.splice(indx, 1); + } }); - hub.on('visitorIsInChatting', function (visitorGUID) { - $scope.$root.$broadcast("onVisitorIsChatting", { visitorGUID: visitorGUID }); + hub.on('visitorIsInChatting', function (visitorGUID) { + $scope.$root.$broadcast("onVisitorIsChatting", { visitorGUID: visitorGUID }); }); - hub.on('initialLiveChatForAgent', function (livechat) { - if (livechat) { + hub.on('initialLiveChatForAgent', function (livechat) { + if (livechat) { parseVisitorItems(livechat); parseLiveChatMessages(livechat, livechat.Messages); $scope.livechats.push(livechat); if ($scope.currentLiveChat == 0) - $scope.currentLiveChat = livechat.LiveChatID; - } + $scope.currentLiveChat = livechat.LiveChatID; + } }); - hub.on('reciveMessage', function (message) { + hub.on('reciveMessage', function (message) { var livechatID = message.LiveChatID; var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { var livechat = result[0]; - reciveMessage(livechat, message); + reciveMessage(livechat, message); } else - hub.invoke('InitialLiveChatForAgent', livechatID); + hub.invoke('InitialLiveChatForAgent', livechatID); }); - hub.on('visitorIsTyping', function (livechatID) { + hub.on('visitorIsTyping', function (livechatID) { var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { var livechat = result[0]; livechat.VisitorIsTyping = true; - $timeout(function () { - livechat.VisitorIsTyping = false; - }, 4000); - } + $timeout(function () { + livechat.VisitorIsTyping = false; + }, 4000); + } }); - hub.on('removeLiveChat', function (livechatID) { + hub.on('removeLiveChat', function (livechatID) { result = ($filter("filter")($scope.livechats, { LiveChatID: livechatID })); - if (result.length) { + if (result.length) { var livechat = result[0]; indx = $scope.livechats.indexOf(livechat); - $scope.livechats.splice(indx, 1); - } + $scope.livechats.splice(indx, 1); + } }); - hub.on('agentHasJoin', function (livechatID, agent) { + hub.on('agentHasJoin', function (livechatID, agent) { var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { var livechat = result[0]; livechat.Agents.push(agent); - livechat.ChatStarted = true; - } + livechat.ChatStarted = true; + } }); - hub.on('closeLiveChatByAgent', function (livechatID) { + hub.on('closeLiveChatByAgent', function (livechatID) { var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { var livechat = result[0]; - livechat.IsClosed = true; - } + livechat.IsClosed = true; + } }); - hub.on('closeLiveChatByVisitor', function (livechatID) { + hub.on('closeLiveChatByVisitor', function (livechatID) { var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { var livechat = result[0]; - livechat.IsClosed = true; + livechat.IsClosed = true; } //remove from incoming chats... result = $filter("filter")($scope.serveRequests, { LiveChatID: livechatID }); - if (result.length) { + if (result.length) { request = result[0]; var indx = $scope.serveRequests.indexOf(request); - $scope.serveRequests.splice(indx, 1); - } + $scope.serveRequests.splice(indx, 1); + } }); - hub.start().done(function () { - joinAgent(); + hub.start().done(function () { + joinAgent(); }); - hub.connection.reconnected(function () { - joinAgent(); + hub.connection.reconnected(function () { + joinAgent(); }); - hub.connection.disconnected(function () { - $timeout(function () { - joinAgent(); - }, 5000); + hub.connection.disconnected(function () { + $timeout(function () { + joinAgent(); + }, 5000); }); - function joinAgent() { - hub.invoke('JoinAgent', portalID, true, true).then(function (data) { - if (data.Me) - me = data.Me; - - if (data.LiveChats) { - $scope.livechats = data.LiveChats; - for (var i = 0; i < $scope.livechats.length; i++) { - parseVisitorItems($scope.livechats[i]); - parseLiveChatMessages($scope.livechats[i], $scope.livechats[i].Messages); + function joinAgent() { + hub.invoke('JoinAgent', portalID, true, true).then(function (data) { + if (data) { + if (data.Me) + me = data.Me; + + if (data.LiveChats) { + $scope.livechats = data.LiveChats; + for (var i = 0; i < $scope.livechats.length; i++) { + parseVisitorItems($scope.livechats[i]); + parseLiveChatMessages($scope.livechats[i], $scope.livechats[i].Messages); + } } - } - if (data.IncomingLiveChats) - $scope.serveRequests = data.IncomingLiveChats; - }); + if (data.IncomingLiveChats) + $scope.serveRequests = data.IncomingLiveChats; + + if (data.Settings) + $scope.widgetSettings = data.Settings; + + if ((data.Settings.ShowDekstopNotificationForIncoming == 'True' || data.Settings.ShowDekstopNotificationForNewMsg == 'True') && Notification.permission !== 'denied') + Notification.requestPermission(); + } + }); } - function sendMessage(livechat, message) { - hub.invoke('SendMessage', portalID, message, livechat.IsClosed).then(function (messageID) { - if (messageID != -1) { + function sendMessage(livechat, message) { + hub.invoke('SendMessage', portalID, message, livechat.IsClosed).then(function (messageID) { + if (messageID != -1) { message.MessageID = messageID; - message.Resend = false; + message.Resend = false; } else message.Resend = true; // message not saved in database - }); + }); } - function reciveMessage(livechat, message) { + function reciveMessage(livechat, message) { livechat.VisitorIsTyping = false; parseLiveChatMessage(livechat, message); @@ -298,58 +323,76 @@ $scope.$broadcast("onScrollBottom", { id: livechat.LiveChatID }); - if (checkPageFocus() && $scope.currentLiveChat == livechat.LiveChatID) { - seenMessage(message); - } + if (checkPageFocus() && $scope.currentLiveChat == livechat.LiveChatID) { + seenMessage(message); + } + + if (!checkPageFocus()) { + //play new message rigthtone + playSound('newmessage'); + + //desktop notification + if ($scope.widgetSettings.ShowDekstopNotificationForNewMsg == 'True' && Notification.permission === "granted") { + showDesktopNotification(livechat.Visitor.DisplayName, message.Message); + } + } + } + + function visitorIsTyping(livechatID) { + var result = $filter("filter")($scope.livechats, { LiveChatID: livechatID }); + if (result.length) { + var livechat = result[0]; + hub.invoke('AgentIsTyping', portalID, livechat.Visitor.VisitorGUID); + } } - function seenMessages(livechat) { - for (var i = 0; i < livechat.Messages.length; i++) { + function seenMessages(livechat) { + for (var i = 0; i < livechat.Messages.length; i++) { var message = livechat.Messages[i]; - seenMessage(message); - } + seenMessage(message); + } } - function seenMessage(message) { - if (message.SentBy != 2 && !message.Seen) { + function seenMessage(message) { + if (message.SentBy != 2 && !message.Seen) { message.Seen = true; - hub.invoke('SeenMessage', portalID, message); - } + hub.invoke('SeenMessage', portalID, message); + } } //private functions - function parseVisitorItems(livechat) { + function parseVisitorItems(livechat) { livechat.Visitor.OnlineTime = getTimeDiff(livechat.Visitor.OnlineDate, moment()); parseIpLocation(livechat.LiveChatID, livechat.Visitor.IP); var parser = new UAParser(); parser.setUA(livechat.Visitor.UserAgent); - livechat.Visitor.UserAgentData = parser.getResult(); + livechat.Visitor.UserAgentData = parser.getResult(); } - function parseIpLocation(id, ip) { + function parseIpLocation(id, ip) { if (ip == "127.0.0.1") ip = ""; - $.getJSON("http://freegeoip.net/json/" + ip, function (data) { + $.getJSON("http://freegeoip.net/json/" + ip, function (data) { var result = $filter("filter")($scope.livechats, { LiveChatID: id }); - if (result.length) { + if (result.length) { var indx = $scope.livechats.indexOf(result[0]); - $scope.livechats[indx].Visitor.Location = data; - } - }); + $scope.livechats[indx].Visitor.Location = data; + } + }); } - function parseLiveChatMessages(livechat, messages) { - for (var i = 0; i < messages.length; i++) { - parseLiveChatMessage(livechat, messages[i]); - } + function parseLiveChatMessages(livechat, messages) { + for (var i = 0; i < messages.length; i++) { + parseLiveChatMessage(livechat, messages[i]); + } } - function parseLiveChatMessage(livechat, message) { + function parseLiveChatMessage(livechat, message) { if (message.SentBy == 1) { //if visitor is sender message message.SenderDisplayName = livechat.Visitor.DisplayName; message.SenderAvatar = livechat.Visitor.Avatar; - message.IsMyMessage = false; + message.IsMyMessage = false; } else if (message.SentBy == 2) { //if agent is sender message var agent; @@ -360,11 +403,12 @@ message.SenderDisplayName = agent.DisplayName; message.SenderAvatar = agent.Avatar; - message.IsMyMessage = true; - } + message.IsMyMessage = true; + } + message.MsgTime = moment(message.CreateDate).format("hh:mm") } - function offlineVisitor(visitorGUID) { + function offlineVisitor(visitorGUID) { var result = $filter("filter")($scope.livechats, { Visitor: { VisitorGUID: visitorGUID } }); var livechatID = 0; @@ -374,95 +418,119 @@ var indx = $scope.livechats.indexOf(livechat); $scope.livechats[indx].Visitor.IsOffline = true; - livechatID = livechat.LiveChatID; + livechatID = livechat.LiveChatID; } else { // check incoming chats... result = $filter("filter")($scope.serveRequests, { VisitorGUID: visitorGUID }); - if (result.length) { + if (result.length) { request = result[0]; var indx = $scope.serveRequests.indexOf(request); $scope.serveRequests.splice(indx, 1); - livechatID = request.LiveChatID; - } + livechatID = request.LiveChatID; + } } if (livechatID) - hub.invoke('VisitorHasLeftChat', livechatID); + hub.invoke('VisitorHasLeftChat', livechatID); } - function calcVisitorsOnlineTime() { - timerCalculator = $interval(function () { - for (var i = 0; i < $scope.livechats.length; i++) { + function calcVisitorsOnlineTime() { + timerCalculator = $interval(function () { + for (var i = 0; i < $scope.livechats.length; i++) { var livechat = $scope.livechats[i]; - livechat.Visitor.OnlineTime = getTimeDiff(livechat.Visitor.OnlineDate, moment()); - } - }, 59000); + livechat.Visitor.OnlineTime = getTimeDiff(livechat.Visitor.OnlineDate, moment()); + } + }, 59000); } - function getTimeDiff(onlineT, nowT) { + function getTimeDiff(onlineT, nowT) { var diff = nowT.diff(onlineT, 'minutes'); var lbl = $scope.localizeString["Min.Text"] - if (diff >= 60) { + if (diff >= 60) { diff = nowT.diff(onlineT, 'hours'); - lbl = $scope.localizeString["HourMin.Text"] + lbl = $scope.localizeString["HourMin.Text"] } - return diff + ' ' + lbl; + return diff + ' ' + lbl; + } + + function playSound(eventName) { + if (eventName == 'incoming') { + $scope.sounds.Incoming.play(); + } + + if (eventName == 'newmessage') { + $scope.sounds.NewMessage.play(); + } + } + + function showDesktopNotification(title, body) { + var notification = new Notification(title, { + icon: siteRoot + 'DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/logo2.png', + body: body + }); + notification.onclick = function () { + notification.close(); + window.focus(); + }; + setTimeout(function () { + notification.close(); + }, 5000); } - function checkPageFocus() { + function checkPageFocus() { if (typeof document.hasFocus === 'function') return document.hasFocus(); else - return false; + return false; } /////////////////////////////////////////////////// // signalR for visitors online hub - var vHub = new HubProxy('MyDnnVisitorsOnlineHub'); - vHub.on('populateVisitorsOnline', function (visitor) { - $scope.$root.$broadcast("onPopulateVisitorsOnline", { visitor: visitor }); + var vHub = new HubProxy('MyDnnVisitorsOnlineHub', { connectionPath: siteRoot }); + vHub.on('populateVisitorsOnline', function (visitor) { + $scope.$root.$broadcast("onPopulateVisitorsOnline", { visitor: visitor }); }); - vHub.on('updateVisitorInfo', function (visitor) { - $scope.$root.$broadcast("onUpdateVisitorInfo", { visitor: visitor }); + vHub.on('updateVisitorInfo', function (visitor) { + $scope.$root.$broadcast("onUpdateVisitorInfo", { visitor: visitor }); }); - vHub.on('populateVisitorsOffline', function (visitors) { + vHub.on('populateVisitorsOffline', function (visitors) { $scope.$root.$broadcast("onPopulateVisitorsOffline", { visitors: visitors }); - for (var i = 0; i < visitors.length; i++) { - offlineVisitor(visitors[i].VisitorGUID); - } + for (var i = 0; i < visitors.length; i++) { + offlineVisitor(visitors[i].VisitorGUID); + } }); - vHub.start().done(function () { + vHub.start().done(function () { vHub.invoke('JoinVisitor', portalID, visitorGUID, '', '', ''); - vHub.invoke('JoinGroup', 'MyDnnVisitorsOnline'); + vHub.invoke('JoinGroup', 'MyDnnVisitorsOnline'); }); - vHub.connection.reconnected(function () { - vHub.invoke('JoinVisitor', portalID, visitorGUID, '', '', ''); + vHub.connection.reconnected(function () { + vHub.invoke('JoinVisitor', portalID, visitorGUID, '', '', ''); }); - vHub.connection.disconnected(function () { - $timeout(function () { - vHub.invoke('JoinVisitor', portalID, visitorGUID, '', '', ''); - }, 5000); + vHub.connection.disconnected(function () { + $timeout(function () { + vHub.invoke('JoinVisitor', portalID, visitorGUID, '', '', ''); + }, 5000); }); - $interval(function () { - vHub.invoke('Ping', portalID, visitorGUID, '', '', ''); + $interval(function () { + vHub.invoke('Ping', portalID, visitorGUID, '', '', ''); }, 35000); /////////////////////////////////////////////////// - function onFocus() { - if ($scope.currentLiveChat) { + function onFocus() { + if ($scope.currentLiveChat) { var result = $filter("filter")($scope.livechats, { LiveChatID: $scope.currentLiveChat }); - if (result.length) { + if (result.length) { var livechat = result[0]; - seenMessages(livechat); - } - } + seenMessages(livechat); + } + } }; if (/*@cc_on!@*/false) { // check for Internet Explorer - document.onfocusin = onFocus; - } else { - window.onfocus = onFocus; - } + document.onfocusin = onFocus; + } else { + window.onfocus = onFocus; + } }); diff --git a/LiveChat/ClientApp/Controllers/livechat-visitor-controller.js b/LiveChat/ClientApp/Controllers/livechat-visitor-controller.js index 9d4dfe1..a740ce1 100644 --- a/LiveChat/ClientApp/Controllers/livechat-visitor-controller.js +++ b/LiveChat/ClientApp/Controllers/livechat-visitor-controller.js @@ -1,6 +1,6 @@ angular.module('MyDnnSupportLiveChatApp', ['services.hub', 'ngMyDnnServices']) -.controller("livechatController", function ($scope, $location, $http, $interval, $timeout, $window, $compile, $filter, HubProxy) { - var rootUrl = mydnnLiveChatBaseData.RootUrl; +.controller("livechatController", function ($scope, $location, $http, $interval, $timeout, $window, $compile, $filter, HubProxy) { + var siteRoot = mydnnLiveChatBaseData.SiteRoot; var visitorGUID = mydnnLiveChatBaseData.VisitorGUID; var portalID; var isTyping = false; @@ -9,7 +9,7 @@ $scope.livechatFormValidate = false; $scope.waiting = false; - $http.get(rootUrl + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/InitialLiveChat", { params: { visitorGUID: visitorGUID } }).success(function (data) { + $http.get(siteRoot + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/InitialLiveChat", { params: { visitorGUID: visitorGUID } }).success(function (data) { portalID = data.PortalID; $scope.WidgetHtml = data.Widget; @@ -27,138 +27,138 @@ $scope.livechat.Agents = []; $scope.livechat.WidgetMinimized = false; - if (data.UserID != -1) { + if (data.UserID != -1) { $scope.livechat.Visitor.DisplayName = data.DisplayName; - $scope.livechat.Visitor.Email = data.Email; + $scope.livechat.Visitor.Email = data.Email; } - else { + else { var name = getCookie("MyDnnSupportLiveChatName"); var email = getCookie("MyDnnSupportLiveChatEmail"); if (name) $scope.livechat.Visitor.DisplayName = name; - if (email) $scope.livechat.Visitor.Email = email; + if (email) $scope.livechat.Visitor.Email = email; } $('body').append(''); - $timeout(function () { - if (typeof jQuery.ui) $(".mydnn-livechat-widget").draggable({ handle: '.livechat-move' }); - }, 200); + $timeout(function () { + if (typeof jQuery.ui) $(".mydnn-livechat-widget").draggable({ handle: '.livechat-move' }); + }, 200); }); - $scope.reloadLiveChat = function () { + $scope.reloadLiveChat = function () { $scope.livechat.WidgetMinimized = false; - $http.get(rootUrl + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/GetDepartmentsForLiveChat").success(function (data) { + $http.get(siteRoot + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/GetDepartmentsForLiveChat").success(function (data) { $scope.departments = data.Departments; $scope.isAgentOnline = data.IsAgentOnline; - $scope.department = null; - }); + $scope.department = null; + }); }; //events - $scope.onLiveChatMinimizeClick = function () { + $scope.onLiveChatMinimizeClick = function () { $scope.livechat.WidgetMinimized = true; - angular.element("#mydnnLiveChatMinButton").show(); + angular.element("#mydnnLiveChatMinButton").show(); }; - $scope.onDepartmentChanged = function () { + $scope.onDepartmentChanged = function () { if ($scope.department) - $http.get(rootUrl + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/IsAgentOnlineByDepartment", { params: { departmentID: $scope.department.DepartmentID } }).success(function (isAgentOnline) { + $http.get(siteRoot + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/IsAgentOnlineByDepartment", { params: { departmentID: $scope.department.DepartmentID } }).success(function (isAgentOnline) { var result = $filter("filter")($scope.departments, { DepartmentID: $scope.department.DepartmentID }); - if (result.length) { + if (result.length) { var indx = $scope.departments.indexOf(result[0]); - $scope.departments[indx].IsAgentOnline = isAgentOnline; + $scope.departments[indx].IsAgentOnline = isAgentOnline; } - $scope.isAgentOnline = isAgentOnline; - }); + $scope.isAgentOnline = isAgentOnline; + }); }; - $scope.onStartChatClick = function () { + $scope.onStartChatClick = function () { if (!$scope.isAgentOnline) // send offline message - { + { sendOfflineMessageEmail(); - return; + return; } $scope.livechatFormValidate = true; - if ($scope.department && $scope.livechatForm.$valid) { + if ($scope.department && $scope.livechatForm.$valid) { $scope.livechat.Departments = [$scope.department]; - hub.invoke('StartLiveChatByVisitor', $scope.livechat).then(function (livechatID) { + hub.invoke('StartLiveChatByVisitor', $scope.livechat).then(function (livechatID) { localStorage["MyDnnLiveChatCurrentChat"] = livechatID; if (livechatID) $scope.livechat.LiveChatID = livechatID; else - window.location.reload(); + window.location.reload(); }); setCookie("MyDnnSupportLiveChatName", $scope.livechat.Visitor.DisplayName, 1000); - setCookie("MyDnnSupportLiveChatEmail", $scope.livechat.Visitor.Email, 1000); - } + setCookie("MyDnnSupportLiveChatEmail", $scope.livechat.Visitor.Email, 1000); + } }; - $scope.onResendMessage = function (message) { - sendMessage(message); + $scope.onResendMessage = function (message) { + sendMessage(message); }; - $scope.onBlurInput = function ($event) { - angular.element($event.target).addClass('control-focused'); + $scope.onBlurInput = function ($event) { + angular.element($event.target).addClass('control-focused'); }; - $scope.onMessageEditorKeypress = function ($event) { - if ($event.which === 13) { + $scope.onMessageEditorKeypress = function ($event) { + if ($event.which === 13) { if (!$scope.livechat.NewMessage) return; //empty message if (hub.connection.state != 1) { //check hub connected $scope.livechat.ConnectionState = 2; - return false; + return false; } - var message = { + var message = { MessageID: -1, LiveChatID: $scope.livechat.LiveChatID, CreateDate: new Date(), SentBy: 1, MessageType: 0, - Message: $scope.livechat.NewMessage + Message: $scope.livechat.NewMessage }; $scope.livechat.NewMessage = ''; sendMessage(message); - $event.preventDefault(); + $event.preventDefault(); } else { //visitor is typing... - if (!isTyping) { + if (!isTyping) { isTyping = true; visitorIsTyping(); - $timeout(function () { - isTyping = false; - }, 4000); - } - } + $timeout(function () { + isTyping = false; + }, 4000); + } + } }; - $scope.onChatRateClick = function (rate) { + $scope.onChatRateClick = function (rate) { if (rate == $scope.livechat.Rate) rate = 0; - hub.invoke('RateChat', $scope.livechat.LiveChatID, rate).then(function (isSuccess) { + hub.invoke('RateChat', $scope.livechat.LiveChatID, rate).then(function (isSuccess) { $scope.livechat.Rate = rate; - var message = { + var message = { MessageID: -1, LiveChatID: $scope.livechat.LiveChatID, CreateDate: new Date(), SentBy: 0, MessageType: 0, - Message: rate == 0 ? $scope.localizeString["ChatRatingRemoved.Text"] : (rate == 1 ? $scope.localizeString["ChatRatedGood.Text"] : $scope.localizeString["ChatRatedBad.Text"]) + Message: rate == 0 ? $scope.localizeString["ChatRatingRemoved.Text"] : (rate == 1 ? $scope.localizeString["ChatRatedGood.Text"] : $scope.localizeString["ChatRatedBad.Text"]) }; - sendMessage(message); - }); + sendMessage(message); + }); }; - $scope.onOptionsClick = function ($event) { + $scope.onOptionsClick = function ($event) { angular.element(".livechat-email-transcript").hide(); if (!angular.element(".livechat-popupmenu").is(":visible")) @@ -166,84 +166,92 @@ else angular.element(".livechat-popupmenu").fadeOut(50); - $event.stopPropagation(); + $event.stopPropagation(); }; - $scope.onShowEmailClick = function ($event) { + $scope.onShowEmailClick = function ($event) { angular.element(".livechat-popupmenu").hide(); angular.element(".livechat-email-transcript").fadeIn(50); - $event.stopPropagation(); + $event.stopPropagation(); }; - $scope.onEmailInputClick = function ($event) { - $event.stopPropagation(); + $scope.onEmailInputClick = function ($event) { + $event.stopPropagation(); }; - $scope.onSendEmailClick = function ($event) { + $scope.onSendEmailClick = function ($event) { sendTranscriptEmail(); - $event.stopPropagation(); + $event.stopPropagation(); }; - $scope.onBtnEndChatClick = function ($event) { - if (confirm($scope.localizeString["VisitorEndChatConfirm.Text"])) { + $scope.onBtnEndChatClick = function ($event) { + if (confirm($scope.localizeString["VisitorEndChatConfirm.Text"])) { hub.invoke('CloseLiveChatByVisitor', portalID, $scope.livechat.LiveChatID); - angular.element(".livechat-popupmenu").fadeOut(50); + angular.element(".livechat-popupmenu").fadeOut(50); } - $event.stopPropagation(); + $event.stopPropagation(); }; - angular.element($window).bind('click', function ($event) { - $scope.$apply(function ($event) { + angular.element($window).bind('click', function ($event) { + $scope.$apply(function ($event) { angular.element(".livechat-popupmenu").fadeOut(50); - angular.element(".livechat-email-transcript").fadeOut(50); - }); + angular.element(".livechat-email-transcript").fadeOut(50); + }); }); //signalR - var hub = new HubProxy('MyDnnSupportLiveChatHub'); - hub.on('startLiveChat', function (livechat) { + var hub = new HubProxy('MyDnnSupportLiveChatHub', { connectionPath: siteRoot }); + hub.on('startLiveChat', function (livechat) { $scope.livechat = livechat; parseLiveChatMessages($scope.livechat.Messages); - $scope.livechat.Step = "chatstarted"; + $scope.livechat.Step = "chatstarted"; }); - hub.on('agentHasJoin', function (livechatID, agent) { - if (livechatID == $scope.livechat.LiveChatID) { + hub.on('agentHasJoin', function (livechatID, agent) { + if (livechatID == $scope.livechat.LiveChatID) { var result = $filter("filter")($scope.livechat.Agents, { UserID: agent.UserID }); - if (!result.length) { - $scope.livechat.Agents.push(agent); - } - } + if (!result.length) { + $scope.livechat.Agents.push(agent); + } + } + }); + + hub.on('reciveMessage', function (message) { + reciveMessage(message); }); - hub.on('reciveMessage', function (message) { - reciveMessage(message); + hub.on('agentIsTyping', function () { + debugger + $scope.livechat.AgentIsTyping = true; + $timeout(function () { + $scope.livechat.AgentIsTyping = false; + }, 4000); }); - hub.on('seenMessage', function (messageID) { - if ($scope.livechat.LiveChatID) { + hub.on('seenMessage', function (messageID) { + if ($scope.livechat.LiveChatID) { var result = $filter("filter")($scope.livechat.Messages, { MessageID: messageID }); - if (result.length) { - result[0].Seen = true; - } - } + if (result.length) { + result[0].Seen = true; + } + } }); - hub.on('closeLiveChatByAgent', function (livechatID) { - closeChat(livechatID); + hub.on('closeLiveChatByAgent', function (livechatID) { + closeChat(livechatID); }); - hub.on('closeLiveChatByVisitor', function (livechatID) { - closeChat(livechatID); + hub.on('closeLiveChatByVisitor', function (livechatID) { + closeChat(livechatID); }); - hub.start().done(function () { - hub.invoke('JoinVisitor', portalID, visitorGUID).then(function (livechat) { - if (livechat) { + hub.start().done(function () { + hub.invoke('JoinVisitor', portalID, visitorGUID).then(function (livechat) { + if (livechat) { $scope.department = { DepartmentID: livechat.DepartmentID }; $scope.livechat = livechat; @@ -252,96 +260,97 @@ parseLiveChatMessages($scope.livechat.Messages); - localStorage["MyDnnLiveChatCurrentChat"] = livechat.LiveChatID; + localStorage["MyDnnLiveChatCurrentChat"] = livechat.LiveChatID; } else - localStorage.removeItem("MyDnnLiveChatCurrentChat"); - }); + localStorage.removeItem("MyDnnLiveChatCurrentChat"); + }); }); - hub.connection.reconnecting(function () { - if ($scope.livechat.LiveChatID) { - $scope.livechat.ConnectionState = 2; - } + hub.connection.reconnecting(function () { + if ($scope.livechat.LiveChatID) { + $scope.livechat.ConnectionState = 2; + } }); - hub.connection.reconnected(function () { - if ($scope.livechat.LiveChatID) { - reconnectToLiveChat(); - } + hub.connection.reconnected(function () { + if ($scope.livechat.LiveChatID) { + reconnectToLiveChat(); + } }); - hub.connection.disconnected(function () { - if ($scope.livechat.LiveChatID) { - $timeout(function () { - hub.start().done(function () { + hub.connection.disconnected(function () { + if ($scope.livechat.LiveChatID) { + $timeout(function () { + hub.start().done(function () { hub.invoke('JoinVisitor', portalID, visitorGUID); - reconnectToLiveChat(); - }); - }, 5000); - } + reconnectToLiveChat(); + }); + }, 5000); + } }); - function reconnectToLiveChat() { + function reconnectToLiveChat() { $scope.livechat.ConnectionState = 1; - if ($scope.livechat.LiveChatID && !$scope.livechat.IsClosed) { + if ($scope.livechat.LiveChatID && !$scope.livechat.IsClosed) { var lastMessage = $scope.livechat.Messages[$scope.livechat.Messages.length - 1]; - if (lastMessage) { + if (lastMessage) { var lastMessageID = lastMessage.MessageID; - hub.invoke('VisitorReconnectedToLiveChat', portalID, $scope.livechat.LiveChatID, lastMessageID).then(function (data) { - if (data) { - if (data.Messages && data.Messages.length) { + hub.invoke('VisitorReconnectedToLiveChat', portalID, $scope.livechat.LiveChatID, lastMessageID).then(function (data) { + if (data) { + if (data.Messages && data.Messages.length) { parseLiveChatMessages(data.Messages); - $scope.livechat.Messages.push.apply($scope.livechat.Messages, data.Messages); + $scope.livechat.Messages.push.apply($scope.livechat.Messages, data.Messages); } - $scope.livechat.IsClosed = data.IsClosed; - } - }); - } - } + $scope.livechat.IsClosed = data.IsClosed; + } + }); + } + } } - function sendMessage(message) { + function sendMessage(message) { $scope.livechat.Messages.push(message); parseLiveChatMessage(message); $scope.$broadcast("onScrollBottom", { id: $scope.livechat.LiveChatID }); - hub.invoke('SendMessage', portalID, message, $scope.livechat.IsClosed).then(function (messageID) { - if (messageID != -1) { + hub.invoke('SendMessage', portalID, message, $scope.livechat.IsClosed).then(function (messageID) { + if (messageID != -1) { message.MessageID = messageID; - message.Resend = false; + message.Resend = false; } else message.Resend = true; // message not saved in database - }); + }); } - function reciveMessage(message) { + function reciveMessage(message) { + $scope.livechat.AgentIsTyping = false; + var livechatID = message.LiveChatID; - if (livechatID == $scope.livechat.LiveChatID) { + if (livechatID == $scope.livechat.LiveChatID) { $scope.livechat.Messages.push(message); parseLiveChatMessage(message); - $scope.$broadcast("onScrollBottom", { id: $scope.livechat.LiveChatID }); - } + $scope.$broadcast("onScrollBottom", { id: $scope.livechat.LiveChatID }); + } } - function visitorIsTyping() { - hub.invoke('VisitorIsTyping', portalID, $scope.livechat.LiveChatID).then(function (messageID) { - }); + function visitorIsTyping() { + hub.invoke('VisitorIsTyping', portalID, $scope.livechat.LiveChatID); } - function closeChat(livechatID) { - if ($scope.livechat.LiveChatID == livechatID) { - $scope.livechat.IsClosed = true; + function closeChat(livechatID) { + if ($scope.livechat.LiveChatID == livechatID) { + $scope.livechat.IsClosed = true; } - localStorage.removeItem("MyDnnLiveChatCurrentChat"); + localStorage.removeItem("MyDnnLiveChatCurrentChat"); } - function sendTranscriptEmail() { + function sendTranscriptEmail() { $scope.waiting = true; var emailTemplate = $scope.widgetSettings["TranscriptEmailTemplate"]; @@ -350,28 +359,28 @@ $('body').append($('')); $('#mydnnLiveChatTemp').append(html); - $timeout(function () { - var data = { + $timeout(function () { + var data = { To: $scope.livechat.Visitor.Email, Subject: $scope.localizeString["ChatTranscript.Text"], - Body: $('#mydnnLiveChatTemp').html() + Body: $('#mydnnLiveChatTemp').html() } - $http.post(rootUrl + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/SendEmail", data).success(function () { + $http.post(siteRoot + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/SendEmail", data).success(function () { $scope.waiting = false; alert($scope.localizeString["EmailSentMessage.Text"] + " " + $scope.livechat.Visitor.Email); - angular.element(".livechat-email-transcript").fadeOut(50); - }).error(function (data, status, headers, config) { + angular.element(".livechat-email-transcript").fadeOut(50); + }).error(function (data, status, headers, config) { $scope.waiting = false; alert(data); - angular.element(".livechat-email-transcript").fadeOut(50); + angular.element(".livechat-email-transcript").fadeOut(50); }); - $('#mydnnLiveChatTemp').remove(); - }, 1000); + $('#mydnnLiveChatTemp').remove(); + }, 1000); } - function sendOfflineMessageEmail() { + function sendOfflineMessageEmail() { alert($scope.localizeString["AfterSendOfflineMessage.Text"]); $scope.livechat.WidgetMinimized = true; @@ -384,69 +393,69 @@ $('body').append($('')); $('#mydnnLiveChatTemp').append(html); - $timeout(function () { - var data = { + $timeout(function () { + var data = { DepartmentID: $scope.department.DepartmentID, To: $scope.livechat.Visitor.Email, Subject: $scope.localizeString["OfflineMessageFrom.Text"] + " " + $scope.livechat.Visitor.DisplayName, - Body: $('#mydnnLiveChatTemp').html() + Body: $('#mydnnLiveChatTemp').html() } - $http.post(rootUrl + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/SendOfflineMessageEmail", data).success(function () { - }).error(function (data, status, headers, config) { + $http.post(siteRoot + "DesktopModules/MyDnnSupport.LiveChat/API/VisitorService/SendOfflineMessageEmail", data).success(function () { + }).error(function (data, status, headers, config) { }); $scope.livechat.Message = ''; - $('#mydnnLiveChatTemp').remove(); - }, 1000); + $('#mydnnLiveChatTemp').remove(); + }, 1000); } //private functions - function parseLiveChatMessages(messages) { - for (var i = 0; i < messages.length; i++) { - parseLiveChatMessage(messages[i]); - } + function parseLiveChatMessages(messages) { + for (var i = 0; i < messages.length; i++) { + parseLiveChatMessage(messages[i]); + } } - function parseLiveChatMessage(message) { + function parseLiveChatMessage(message) { if (message.SentBy == 1) { //if visitor is sender message message.SenderDisplayName = $scope.livechat.Visitor.DisplayName; message.SenderAvatar = $scope.livechat.Visitor.Avatar; - message.IsMyMessage = true; + message.IsMyMessage = true; } else if (message.SentBy == 2) { //if agent is sender message var agent; agent = $filter("filter")($scope.livechat.Agents, { UserID: message.AgentUserID })[0]; message.SenderDisplayName = agent.DisplayName; message.SenderAvatar = agent.Avatar; - message.IsMyMessage = false; + message.IsMyMessage = false; } message.MsgTime = moment(message.CreateDate).format("hh:mm") var indx = $scope.livechat.Messages.indexOf(message); - if (indx > 0) { + if (indx > 0) { var prevMessage = $scope.livechat.Messages[indx - 1]; if (prevMessage && prevMessage.SentBy == message.SentBy) - message.SenderPrevMessage = true; - } + message.SenderPrevMessage = true; + } } - function setCookie(cname, cvalue, exdays) { + function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); - document.cookie = cname + "=" + cvalue + "; " + expires; + document.cookie = cname + "=" + cvalue + "; " + expires; } - function getCookie(cname) { + function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); - for (var i = 0; i < ca.length; i++) { + for (var i = 0; i < ca.length; i++) { var c = ca[i].trim(); - if (c.indexOf(name) == 0) return c.substring(name.length, c.length); + if (c.indexOf(name) == 0) return c.substring(name.length, c.length); } - return ""; - } + return ""; + } }); diff --git a/LiveChat/ClientApp/Controllers/widgetsetting-controller.js b/LiveChat/ClientApp/Controllers/widgetsetting-controller.js index e6b458e..4fe238c 100644 --- a/LiveChat/ClientApp/Controllers/widgetsetting-controller.js +++ b/LiveChat/ClientApp/Controllers/widgetsetting-controller.js @@ -1,14 +1,14 @@ -app.controller("widgetSettingController", function ($scope, $http, $timeout, $filter, $location, cfpLoadingBar, activeMenu) { +app.controller("widgetSettingController", function ($scope, $http, $timeout, $filter, $location, cfpLoadingBar, Upload, activeMenu) { activeMenu.setActiveMenu({ Parent: 'settings', Child: 'widget' }); var siteRoot = mydnnSupportLiveChat.SiteRoot; var moduleSettings; var timeOut; - var $self = { - Headers: { + var $self = { + Headers: { ModuleId: mydnnSupportLiveChat.ModuleID, - TabId: mydnnSupportLiveChat.TabID, - } + TabId: mydnnSupportLiveChat.TabID, + } }; $scope.localizeString = mydnnSupportLiveChat.SharedResources; @@ -18,7 +18,7 @@ $scope.isVisibleWidget = true; $scope.isAgentOnline = true; - $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetWidgetSettings", { headers: $self.Headers }).success(function (data) { + $http.get(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/GetWidgetSettings", { headers: $self.Headers }).success(function (data) { $scope.livechat.WidgetHtml = data.LiveChatWidget; $scope.livechat.HtmlTemplate = data.LiveChatWidget; @@ -27,46 +27,46 @@ setDefaultValue(); $('body').append(''); - $('body').append(''); + $('body').append(''); $('body').append(''); - $('[data-toggle="popover"]').popover(); + $('[data-toggle="popover"]').popover(); }); - $scope.onStepTabClick = function (tabName) { - if (tabName == 'appearance') { + $scope.onStepTabClick = function (tabName) { + if (tabName == 'appearance') { $scope.isVisibleWidget = true; - $scope.livechat.Step = 'chatstarted'; + $scope.livechat.Step = 'chatstarted'; } - else if (tabName == 'forms') { + else if (tabName == 'forms') { $scope.isVisibleWidget = true; - $scope.livechat.Step = 'prechat'; - } - else if (tabName == 'minbutton') { - $scope.isVisibleWidget = false; + $scope.livechat.Step = 'prechat'; } + else if (tabName == 'minbutton') { + $scope.isVisibleWidget = false; + } }; - $scope.onFormElementFocus = function (visibility) { + $scope.onFormElementFocus = function (visibility) { if (visibility == 'online') $scope.isAgentOnline = true; else if (visibility == 'offline') - $scope.isAgentOnline = false; + $scope.isAgentOnline = false; }; - function setDefaultValue() { + function setDefaultValue() { $scope.livechat.Step = 'chatstarted', $scope.livechat.Visitor = - { + { UserID: -1, - Avatar: moduleSettings.VisitorDefaultAvatar ? moduleSettings.VisitorDefaultAvatar : siteRoot + 'DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/Images/visitor-avatar.png' + Avatar: moduleSettings.VisitorDefaultAvatar ? moduleSettings.VisitorDefaultAvatar : siteRoot + 'DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/Images/visitor-avatar.png' }, $scope.livechat.AgentDefaultAvatar = moduleSettings.AgentDefaultAvatar ? moduleSettings.AgentDefaultAvatar : siteRoot + 'DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/Images/agent-avatar.png' $scope.livechat.Messages = [ - { + { SentBy: 0, - Message: 'Chat started' + Message: 'Chat started' }, - { + { SentBy: 1, SenderDisplayName: 'Paola', SenderAvatar: moduleSettings.VisitorDefaultAvatar, @@ -74,22 +74,22 @@ Message: 'Hi there, I`m looking for green and pink shirts.', IsMyMessage: true, MsgTime: moment().format("hh:mm"), - Seen: true + Seen: true }, - { + { SentBy: 0, - Message: 'Ian Borland joined the chat' + Message: 'Ian Borland joined the chat' }, - { + { SentBy: 2, SenderDisplayName: 'Ian Borland ', SenderAvatar: moduleSettings.VisitorDefaultAvatar, MessageType: 0, Message: 'Hi Paola, welcome to our store!', IsMyMessage: false, - MsgTime: moment().format("hh:mm") + MsgTime: moment().format("hh:mm") }, - { + { SentBy: 1, SenderDisplayName: 'Paola', SenderAvatar: moduleSettings.VisitorDefaultAvatar, @@ -97,22 +97,22 @@ Message: 'I have one problem on my portal :(. I can`t login into website', IsMyMessage: true, MsgTime: moment().format("hh:mm"), - Seen: true + Seen: true }, - { + { SentBy: 2, SenderDisplayName: 'Ian Borland ', SenderAvatar: moduleSettings.VisitorDefaultAvatar, MessageType: 0, Message: 'Please send your user info to support email (info@email.com)!', IsMyMessage: false, - MsgTime: moment().format("hh:mm") + MsgTime: moment().format("hh:mm") }, - { + { SentBy: 0, - Message: 'Ian Borland has left chat' + Message: 'Ian Borland has left chat' }, - { + { SentBy: 1, SenderDisplayName: 'Paola', SenderAvatar: moduleSettings.VisitorDefaultAvatar, @@ -120,71 +120,139 @@ Message: 'eeee koja rafti baba jan man karet dashtama zood bargard lanati lanati lanati', IsMyMessage: true, MsgTime: moment().format("hh:mm"), - Seen: false + Seen: false }], - $scope.widgetSettings = { + $scope.widgetSettings = { LiveChatThemeColor: moduleSettings.LiveChatThemeColor ? moduleSettings.LiveChatThemeColor : '#1D91E5', LiveChatTitleColor: moduleSettings.LiveChatTitleColor ? moduleSettings.LiveChatTitleColor : '#fff', LiveChatWindowSize: moduleSettings.LiveChatWindowSize ? moduleSettings.LiveChatWindowSize : 'Medium', LiveChatWidgetPosition: moduleSettings.LiveChatWidgetPosition ? moduleSettings.LiveChatWidgetPosition : 'BottomRight', LiveChatEnableRating: moduleSettings.LiveChatEnableRating ? JSON.parse(moduleSettings.LiveChatEnableRating.toLowerCase()) : true, LiveChatShowAvatar: moduleSettings.LiveChatShowAvatar ? JSON.parse(moduleSettings.LiveChatShowAvatar.toLowerCase()) : true, - LiveChatMessageStyle: moduleSettings.LiveChatMessageStyle ? moduleSettings.LiveChatMessageStyle : 'SpeechBubbles', + LiveChatMessageStyle: moduleSettings.LiveChatMessageStyle ? moduleSettings.LiveChatMessageStyle : 'SpeechBubbles', + VisitorDefaultAvatar: moduleSettings.VisitorDefaultAvatar ? moduleSettings.VisitorDefaultAvatar : siteRoot + + 'DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/visitor-avatar.png', + AgentDefaultAvatar: moduleSettings.AgentDefaultAvatar ? moduleSettings.AgentDefaultAvatar : siteRoot + + 'DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/agent-avatar.png' }, - $scope.minButtonSettings = { - OnlineButton: moduleSettings.LiveChatMinBtnOnline ? moduleSettings.LiveChatMinBtnOnline : 'Live Chat: Online', - OnlineButtonBGColor: moduleSettings.LiveChatMinBtnOnlineBgColor ? moduleSettings.LiveChatMinBtnOnlineBgColor : '#4caf50', + $scope.minButtonSettings = { + OnlineButton: moduleSettings.LiveChatMinBtnOnline ? moduleSettings.LiveChatMinBtnOnline : '
Chat with us
' + '\n' + + '
' + '\n' + + '' + '\n' + + '
' + '\n' + + '
' + '\n' + + '
Click here to start chat
', + OfflineButton: moduleSettings.LiveChatMinBtnOffline ? moduleSettings.LiveChatMinBtnOffline : '
' + '\n' + + '
Leave a message
', + OnlineButtonBGColor: moduleSettings.LiveChatMinBtnOnlineBgColor ? moduleSettings.LiveChatMinBtnOnlineBgColor : '#4285f4', OnlineButtonColor: moduleSettings.LiveChatMinBtnOnlineColor ? moduleSettings.LiveChatMinBtnOnlineColor : '#fff', - OfflineButton: moduleSettings.LiveChatMinBtnOffline ? moduleSettings.LiveChatMinBtnOffline : 'Send Message', - OfflineButtonBGColor: moduleSettings.LiveChatMinBtnOfflineBgColor ? moduleSettings.LiveChatMinBtnOfflineBgColor : '#c7cec7', - OfflineButtonColor: moduleSettings.LiveChatMinBtnOfflineColor ? moduleSettings.LiveChatMinBtnOfflineColor : '#333', + OfflineButtonBGColor: moduleSettings.LiveChatMinBtnOfflineBgColor ? moduleSettings.LiveChatMinBtnOfflineBgColor : '#4487ff', + OfflineButtonColor: moduleSettings.LiveChatMinBtnOfflineColor ? moduleSettings.LiveChatMinBtnOfflineColor : '#fff', HorizontalPosition: moduleSettings.LiveChatMinBtnHPos ? moduleSettings.LiveChatMinBtnHPos : 'Right', VerticalPosition: moduleSettings.LiveChatMinBtnVPos ? moduleSettings.LiveChatMinBtnVPos : 'Bottom', Rotate: moduleSettings.LiveChatMinBtnRotate ? moduleSettings.LiveChatMinBtnRotate : '0', - CssStyle: moduleSettings.LiveChatMinBtnCssStyle ? moduleSettings.LiveChatMinBtnCssStyle : '.livechat-minbutton{\n} \n.livechat-minbutton .online-button {\npadding: 10px;} \n.livechat-minbutton .offline-button {\npadding: 10px;}', - } + CssStyle: moduleSettings.LiveChatMinBtnCssStyle ? moduleSettings.LiveChatMinBtnCssStyle : '.livechat-minbutton {cursor:pointer;padding: 0;margin-right:7px;}' + '\n' + + '.livechat-minbutton .online-button {border-radius: 5px 5px 0 0;box-shadow: 0 0 3px 2px rgba(0, 0, 0, 0.1);height: 150px;padding: 0;position: relative;width: 240px;}' + '\n' + + '.livechat-minbutton .online-button .m-left {float: left;font-family: verdana;font-size: 1.5em;margin: 45px 0 0 10px;}' + '\n' + + '.livechat-minbutton .online-button .m-right {float: right;margin: 35px 10px 0 0;}' + + '.livechat-minbutton .online-button .btm {background: #fff url("/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/send.png") no-repeat scroll 98% center;bottom: 0;box-sizing: border-box;color: #aaa;font-family: verdana;font-size: 12px;font-style: italic;height: 35px;left: 0;padding: 6px;position: absolute;width: 100%;}' + '\n' + + '.livechat-minbutton .offline-button {padding: 10px;}' + '\n' + + '.offline-button {border-radius: 5px 5px 0 0;height: 35px;padding: 0 !important;}' + '\n' + + '.offline-button .m-left {background: rgba(0, 0, 0, 0.14) url("/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/email.png") no-repeat scroll 10px center;border-radius: 5px 0 0;float: left;height: 100%;width: 35px;}' + '\n' + + '.offline-button .m-right {float: right;font-size:13px;font-weight: bold;line-height:18px;padding: 8px 10px;}', + } } - $scope.$watch("widgetSettings.LiveChatThemeColor", function (val, oldVal) { + $scope.$watch("widgetSettings.LiveChatThemeColor", function (val, oldVal) { if (timeOut) $timeout.cancel(timeOut); - timeOut = $timeout(function () { - reWriteWidgetColorsStyles(); - }, 250); + timeOut = $timeout(function () { + reWriteWidgetColorsStyles(); + }, 250); }); - $scope.$watch("widgetSettings.LiveChatTitleColor", function (val, oldVal) { + $scope.$watch("widgetSettings.LiveChatTitleColor", function (val, oldVal) { if (timeOut) $timeout.cancel(timeOut); - timeOut = $timeout(function () { - reWriteWidgetColorsStyles(); - }, 250); + timeOut = $timeout(function () { + reWriteWidgetColorsStyles(); + }, 250); }); - function reWriteWidgetColorsStyles() { - angular.element('#mydnnLiveChatWidgetStyles').html('.livechat-theme-bgcolor{background-color:' + $scope.widgetSettings.LiveChatThemeColor + ';}.livechat-theme-color{color:' + $scope.widgetSettings.LiveChatThemeColor + ';}.livechat-theme-titlecolor{color:' + $scope.widgetSettings.LiveChatTitleColor + ';}.livechat-focusable:focus{border-color:' + $scope.widgetSettings.LiveChatThemeColor + ' !important;}'); + function reWriteWidgetColorsStyles() { + angular.element('#mydnnLiveChatWidgetStyles').html('.livechat-theme-bgcolor{background-color:' + $scope.widgetSettings.LiveChatThemeColor + ';}.livechat-theme-color{color:' + $scope.widgetSettings.LiveChatThemeColor + ';}.livechat-theme-titlecolor{color:' + $scope.widgetSettings.LiveChatTitleColor + ';}.livechat-focusable:focus{border-color:' + $scope.widgetSettings.LiveChatThemeColor + ' !important;}'); } - $scope.$watch("minButtonSettings.CssStyle", function (val, oldVal) { + $scope.$watch("minButtonSettings.CssStyle", function (val, oldVal) { if (timeOut) $timeout.cancel(timeOut); - timeOut = $timeout(function () { - $('#mydnnLiveChatMinButtonStyles').html(val); - }, 250); + timeOut = $timeout(function () { + angular.element('#mydnnLiveChatMinButtonStyles').html(val); + }, 250); }); - $scope.onUpdateSettingsClick = function () { - $scope.minButtonSettings.HtmlTemplate = angular.element("#livechat-minbutton-panel").html(); - var data = { + $scope.onUpdateSettingsClick = function () { + $scope.minButtonSettings.HtmlTemplate = ''; + $scope.minButtonSettings.HtmlTemplate += angular.element("#livechat-minbutton-panel").html(); + var data = { WidgetSettings: $scope.widgetSettings, MinButtonSettings: $scope.minButtonSettings, - Locales: $scope.localizeString + Locales: $scope.localizeString }; - $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/UpdateWidgetSettings", data, { headers: $self.Headers }).success(function (data) { - location.reload(); - }).error(function (data, status, headers, config) { - swal($scope.localizeString["Error.Text"], data, "error"); - }); - }; + $http.post(mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/UpdateWidgetSettings", data, { headers: $self.Headers }).success(function (data) { + location.reload(); + }).error(function (data, status, headers, config) { + swal($scope.localizeString["Error.Text"], data, "error"); + }); + }; + + $scope.onDropFiles = function ($files, x) { + switch (x) { + case 1: + $scope.widgetSettings.VisitorDefaultAvatar = $files[0]; + break; + case 2: + $scope.widgetSettings.AgentDefaultAvatar = $files[0]; + break; + } + $scope.onUploadPhoto($files, x); + }; + + $scope.onUploadPhoto = function ($files, x) { + var file = $files[0]; + Upload.upload({ + url: mydnnGetServiceRoot("MyDnnSupport.LiveChat") + "AgentService/UploadFile", + file: file, + headers: { + ModuleId: mydnnSupportLiveChat.ModuleID, + TabId: mydnnSupportLiveChat.TabID, + 'Content-Type': file.type + } + }).success(function (data) { + $scope.isUpdateDisabled = false; + switch (x) { + case 1: + $scope.widgetSettings.VisitorDefaultAvatar = data; + $scope.livechat.Visitor.Avatar = data; + for (var i = 0; i < $scope.livechat.Messages.length; i++) { + var message = $scope.livechat.Messages[i]; + if (message.SentBy == 1) + message.SenderAvatar = data; + } + break; + case 2: + $scope.widgetSettings.AgentDefaultAvatar = data; + $scope.livechat.AgentDefaultAvatar = data; + for (var i = 0; i < $scope.livechat.Messages.length; i++) { + var message = $scope.livechat.Messages[i]; + if (message.SentBy == 2) + message.SenderAvatar = data; + } + break; + } + }).progress(function (evt) { + console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total)); + }); + } }); diff --git a/LiveChat/ClientApp/Services/signalr.service.js b/LiveChat/ClientApp/Services/signalr.service.js index 052bfa9..1720f6f 100644 --- a/LiveChat/ClientApp/Services/signalr.service.js +++ b/LiveChat/ClientApp/Services/signalr.service.js @@ -1,4 +1,4 @@ -(function ($, angular, document) { +(function ($, angular, document) { 'use strict'; HubFactory.$inject = ['$rootScope', '$q', 'HubConnectionEvents']; @@ -18,21 +18,22 @@ * @param {String} hubName * @param [{Object}] options */ - function Hub(hubName, options) { - + function Hub(hubName, options) { // Ensure a hub name was passed - if (!hubName) { - throw new Error('Hub name was not specified, be sure to pass it in when invoking the Hub class'); + if (!hubName) { + throw new Error('Hub name was not specified, be sure to pass it in when invoking the Hub class'); } // Hub Settings - var settings = angular.extend({ - + var settings = angular.extend({ // Enable hub logging events - loggingEnabled: false, + loggingEnabled: false, }, options); + if (settings.connectionPath && settings.connectionPath[settings.connectionPath.length - 1] == '/') + settings.connectionPath = settings.connectionPath.slice(0, -1); + // Create and set the connection property this.connection = $.hubConnection(settings.connectionPath); @@ -43,9 +44,7 @@ this.proxy = this.connection.createHubProxy(hubName); // Bind to connection events , this is only done once. - bindConnectionEvents(this); - - + bindConnectionEvents(this); } /** @@ -56,8 +55,8 @@ * Starts the hub connection * @return {Promise} */ - start: function start() { - return this.connection.start({ transport: 'longPolling' }); + start: function start() { + return this.connection.start({ transport: 'longPolling' }); }, /** @@ -65,16 +64,16 @@ * @param {String} evt * @param {Function} fn */ - on: function on(evt, fn) { + on: function on(evt, fn) { - this.proxy.on(evt, function () { + this.proxy.on(evt, function () { var args = arguments; // Have angular run a digest - $rootScope.$evalAsync(function () { - fn.apply(fn, args); - }); + $rootScope.$evalAsync(function () { + fn.apply(fn, args); + }); }); @@ -88,8 +87,8 @@ * @example * Hub.off('getDataFromHub', getDataFromHubCallback); */ - off: function () { - this.proxy.off.apply(this.proxy, arguments); + off: function () { + this.proxy.off.apply(this.proxy, arguments); }, /** @@ -116,32 +115,32 @@ // Resolve the invoke call and it's promise function resolve() { // Our promise is either resolved or rejected by the hubs response. - self.proxy.invoke.apply(self.proxy, args).then(deferred.resolve, deferred.reject); + self.proxy.invoke.apply(self.proxy, args).then(deferred.resolve, deferred.reject); } // Resolve the method immediately if the connection is established - if (this.connection.state === $.signalR.connectionState.connected) { - resolve(); + if (this.connection.state === $.signalR.connectionState.connected) { + resolve(); } // In the event that we're disconnected if (this.connection.state === $.signalR.connectionState.disconnected) { // Start the connection, then resolve once we're connected - this.start().done(function () { - resolve(); - }); + this.start().done(function () { + resolve(); + }); } // Return the promise - return deferred.promise; + return deferred.promise; }, /** * Alias for invoke */ - send: function () { - return this.invoke.apply(this, arguments); + send: function () { + return this.invoke.apply(this, arguments); }, /** @@ -159,22 +158,22 @@ * Determine if the hub is connected * @return boolean */ - isConnected: function () { - return !this.disconnected && !this.reconnecting; + isConnected: function () { + return !this.disconnected && !this.reconnecting; }, /** * Is connection disconnected */ - isDisconnected: function () { - return this.disconnected; + isDisconnected: function () { + return this.disconnected; }, /** * Is Reconnecting */ - isReconnecting: function () { - return this.reconnecting; + isReconnecting: function () { + return this.reconnecting; }, /** @@ -182,8 +181,8 @@ * * @return boolean */ - isDown: function () { - return this.disconnected || this.reconnecting; + isDown: function () { + return this.disconnected || this.reconnecting; }, /** @@ -191,17 +190,17 @@ * @param {Boolean} reconnectVal * @param {Boolean} disconnectVal */ - setConnection: function (reconnectVal, disconnectVal) { + setConnection: function (reconnectVal, disconnectVal) { var self = this; // Ask angular to udpate the digest - $rootScope.$evalAsync(function () { + $rootScope.$evalAsync(function () { self.reconnecting = reconnectVal; - self.disconnected = disconnectVal; - }); - } - } + self.disconnected = disconnectVal; + }); + } + } }; @@ -216,20 +215,20 @@ /** * Uses rootScope to broadcast the desired connection event */ - function broadcastConnectionEvent() { - $rootScope.$broadcast.apply($rootScope, arguments); + function broadcastConnectionEvent() { + $rootScope.$broadcast.apply($rootScope, arguments); } /** * Update the connection status on the hub, when the state changes */ - function updateConnectionState(evt, state) { + function updateConnectionState(evt, state) { var reconnecting = state.newState === $.signalR.connectionState.reconnecting, disconnected = state.newState === $.signalR.connectionState.disconnected ; - hubInstance.connectionStatus.setConnection(reconnecting, disconnected); + hubInstance.connectionStatus.setConnection(reconnecting, disconnected); } @@ -237,35 +236,35 @@ $rootScope.$on(ConnectionEvents.change, updateConnectionState); // Bind to the connection reconnecting event - hubInstance.connection.reconnecting(function () { - broadcastConnectionEvent(ConnectionEvents.reconnecting); + hubInstance.connection.reconnecting(function () { + broadcastConnectionEvent(ConnectionEvents.reconnecting); }); // Bind to the connection reconnected event - hubInstance.connection.reconnected(function () { - broadcastConnectionEvent(ConnectionEvents.reconnected); + hubInstance.connection.reconnected(function () { + broadcastConnectionEvent(ConnectionEvents.reconnected); }); // Bind to the connection disconnected event - hubInstance.connection.disconnected(function () { - broadcastConnectionEvent(ConnectionEvents.disconnected); + hubInstance.connection.disconnected(function () { + broadcastConnectionEvent(ConnectionEvents.disconnected); }); // Bind to the connection error event - hubInstance.connection.error(function (error, data) { - broadcastConnectionEvent(ConnectionEvents.error, error, data); + hubInstance.connection.error(function (error, data) { + broadcastConnectionEvent(ConnectionEvents.error, error, data); }); // Bind to the connection change event - hubInstance.connection.stateChanged(function (state) { - broadcastConnectionEvent(ConnectionEvents.change, state); - }); + hubInstance.connection.stateChanged(function (state) { + broadcastConnectionEvent(ConnectionEvents.change, state); + }); } // Return our Class - return Hub; + return Hub; } @@ -273,16 +272,16 @@ // Hub Conncetion event object // This can be used throughout the application to hook into the $scope or $rootScope for connection events // - .value('HubConnectionEvents', { + .value('HubConnectionEvents', { change: 'hub:connection:change', error: 'hub:connection:error', disconnected: 'hub:connection:disconnected', reconnected: 'hub:connection:reconnected', - reconnecting: 'hub:connection:reconnecting' + reconnecting: 'hub:connection:reconnecting' }) // Register the Hub Proxy Service - .factory('HubProxy', HubFactory); + .factory('HubProxy', HubFactory); diff --git a/LiveChat/ClientApp/app.js b/LiveChat/ClientApp/app.js index 8d5ad82..23d6d94 100644 --- a/LiveChat/ClientApp/app.js +++ b/LiveChat/ClientApp/app.js @@ -1,38 +1,38 @@ -var app = angular.module('MyDnnSupportApp', ['ngRoute', 'ngAnimate', 'ui.bootstrap', 'angular-loading-bar', 'localytics.directives', 'angular-bootstrap-select', 'farbtastic', 'ngResource', 'ngSanitize', 'ngMyDnnServices', 'services.hub']) -app.config(['$routeProvider', function ($routeProvider) { +var app = angular.module('MyDnnSupportApp', ['ngRoute', 'ngAnimate', 'ui.bootstrap', 'angular-loading-bar', 'localytics.directives', 'ngFileUpload', 'angular-bootstrap-select', 'ngAudio', 'farbtastic', 'ngResource', 'ngSanitize', 'ngMyDnnServices', 'services.hub']) +app.config(['$routeProvider', function ($routeProvider) { $routeProvider - .when('/visitorlist', { + .when('/visitorlist', { templateUrl: 'visitorlist.html', - controller: 'visitorListController', + controller: 'visitorListController', }) - .when('/history', { + .when('/history', { templateUrl: 'history.html', - controller: 'historyController', + controller: 'historyController', }) - .when('/departments', { + .when('/departments', { templateUrl: 'departments.html', - controller: 'departmentController', + controller: 'departmentController', }) - .when('/agents', { + .when('/agents', { templateUrl: 'agents.html', - controller: 'agentController', + controller: 'agentController', }) - .when('/settings', { + .when('/settings', { templateUrl: 'basicsettings.html', - controller: 'settingController', + controller: 'settingController', }) - .when('/widgetsettings', { + .when('/widgetsettings', { templateUrl: 'widgetsettings.html', - controller: 'widgetSettingController', + controller: 'widgetSettingController', }) - .otherwise({ - redirectTo: '/visitorlist' - }); + .otherwise({ + redirectTo: '/visitorlist' + }); }]); -app.controller("adminPanelController", function ($scope, $http, $timeout, cfpLoadingBar, activeMenu) { +app.controller("adminPanelController", function ($scope, $http, $timeout, cfpLoadingBar, activeMenu) { $scope.activeMenu = activeMenu.getActiveMenu(); - $scope.$watch(function () { return activeMenu.getActiveMenu(); }, function (newValue, oldValue) { - if (newValue !== oldValue) $scope.activeMenu = newValue; - }); + $scope.$watch(function () { return activeMenu.getActiveMenu(); }, function (newValue, oldValue) { + if (newValue !== oldValue) $scope.activeMenu = newValue; + }); }); \ No newline at end of file diff --git a/LiveChat/ClientComponents/signalr/jquery.signalR-2.1.0.min.js b/LiveChat/ClientComponents/signalr/jquery.signalR-2.1.0.min.js deleted file mode 100644 index dc3cf2d..0000000 --- a/LiveChat/ClientComponents/signalr/jquery.signalR-2.1.0.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * ASP.NET SignalR JavaScript Library v2.1.0 - * http://signalr.net/ - * - * Copyright (C) Microsoft Corporation. All rights reserved. - * - */ -(function(n,t,i){function w(t,i){var u,f;if(n.isArray(t)){for(u=t.length-1;u>=0;u--)f=t[u],n.type(f)==="string"&&r.transports[f]||(i.log("Invalid transport: "+f+", removing it from the transports list."),t.splice(u,1));t.length===0&&(i.log("No transports remain within the specified transport array."),t=null)}else if(r.transports[t]||t==="auto"){if(t==="auto"&&r._.ieVersion<=8)return["longPolling"]}else i.log("Invalid transport: "+t.toString()+"."),t=null;return t}function b(n){return n==="http:"?80:n==="https:"?443:void 0}function a(n,t){return t.match(/:\d+$/)?t:t+":"+b(n)}function k(t,i){var u=this,r=[];u.tryBuffer=function(i){return t.state===n.signalR.connectionState.connecting?(r.push(i),!0):!1};u.drain=function(){if(t.state===n.signalR.connectionState.connected)while(r.length>0)i(r.shift())};u.clear=function(){r=[]}}var f={nojQuery:"jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.",noTransportOnInit:"No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.",errorOnNegotiate:"Error during negotiation request.",stoppedWhileLoading:"The connection was stopped during page load.",stoppedWhileNegotiating:"The connection was stopped during the negotiate request.",errorParsingNegotiateResponse:"Error parsing negotiate response.",errorDuringStartRequest:"Error during start request. Stopping the connection.",stoppedDuringStartRequest:"The connection was stopped during the start request.",errorParsingStartResponse:"Error parsing start response: '{0}'. Stopping the connection.",invalidStartResponse:"Invalid start response: '{0}'. Stopping the connection.",protocolIncompatible:"You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.",sendFailed:"Send failed.",parseFailed:"Failed at parsing response: {0}",longPollFailed:"Long polling request failed.",eventSourceFailedToConnect:"EventSource failed to connect.",eventSourceError:"Error raised by EventSource",webSocketClosed:"WebSocket closed.",pingServerFailedInvalidResponse:"Invalid ping response when pinging server: '{0}'.",pingServerFailed:"Failed to ping server.",pingServerFailedStatusCode:"Failed to ping server. Server responded with status code {0}, stopping the connection.",pingServerFailedParse:"Failed to parse ping server response, stopping the connection.",noConnectionTransport:"Connection is in an invalid state, there is no transport active.",webSocketsInvalidState:"The Web Socket transport is in an invalid state, transitioning into reconnecting.",reconnectTimeout:"Couldn't reconnect within the configured timeout of {0} ms, disconnecting.",reconnectWindowTimeout:"The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection."};if(typeof n!="function")throw new Error(f.nojQuery);var r,h,s=t.document.readyState==="complete",e=n(t),c="__Negotiate Aborted__",u={onStart:"onStart",onStarting:"onStarting",onReceived:"onReceived",onError:"onError",onConnectionSlow:"onConnectionSlow",onReconnecting:"onReconnecting",onReconnect:"onReconnect",onStateChanged:"onStateChanged",onDisconnect:"onDisconnect"},v=function(n,i){if(i!==!1){var r;typeof t.console!="undefined"&&(r="["+(new Date).toTimeString()+"] SignalR: "+n,t.console.debug?t.console.debug(r):t.console.log&&t.console.log(r))}},o=function(t,i,r){return i===t.state?(t.state=r,n(t).triggerHandler(u.onStateChanged,[{oldState:i,newState:r}]),!0):!1},y=function(n){return n.state===r.connectionState.disconnected},l=function(n){return n._.keepAliveData.activated&&n.transport.supportsKeepAlive(n)},p=function(i){var f,e;i._.configuredStopReconnectingTimeout||(e=function(t){var i=r._.format(r.resources.reconnectTimeout,t.disconnectTimeout);t.log(i);n(t).triggerHandler(u.onError,[r._.error(i,"TimeoutException")]);t.stop(!1,!1)},i.reconnecting(function(){var n=this;n.state===r.connectionState.reconnecting&&(f=t.setTimeout(function(){e(n)},n.disconnectTimeout))}),i.stateChanged(function(n){n.oldState===r.connectionState.reconnecting&&t.clearTimeout(f)}),i._.configuredStopReconnectingTimeout=!0)};r=function(n,t,i){return new r.fn.init(n,t,i)};r._={defaultContentType:"application/x-www-form-urlencoded; charset=UTF-8",ieVersion:function(){var i,n;return t.navigator.appName==="Microsoft Internet Explorer"&&(n=/MSIE ([0-9]+\.[0-9]+)/.exec(t.navigator.userAgent),n&&(i=t.parseFloat(n[1]))),i}(),error:function(n,t,i){var r=new Error(n);return r.source=t,typeof i!="undefined"&&(r.context=i),r},transportError:function(n,t,r,u){var f=this.error(n,r,u);return f.transport=t?t.name:i,f},format:function(){for(var t=arguments[0],n=0;n<\/script>.");}};e.load(function(){s=!0});r.fn=r.prototype={init:function(t,i,r){var f=n(this);this.url=t;this.qs=i;this.lastError=null;this._={keepAliveData:{},connectingMessageBuffer:new k(this,function(n){f.triggerHandler(u.onReceived,[n])}),onFailedTimeoutHandle:null,lastMessageAt:(new Date).getTime(),lastActiveAt:(new Date).getTime(),beatInterval:5e3,beatHandle:null,totalTransportConnectTimeout:0};typeof r=="boolean"&&(this.logging=r)},_parseResponse:function(n){var t=this;return n?typeof n=="string"?t.json.parse(n):n:n},_originalJson:t.JSON,json:t.JSON,isCrossDomain:function(i,r){var u;return(i=n.trim(i),r=r||t.location,i.indexOf("http")!==0)?!1:(u=t.document.createElement("a"),u.href=i,u.protocol+a(u.protocol,u.host)!==r.protocol+a(r.protocol,r.host))},ajaxDataType:"text",contentType:"application/json; charset=UTF-8",logging:!1,state:r.connectionState.disconnected,clientProtocol:"1.4",reconnectDelay:2e3,transportConnectTimeout:0,disconnectTimeout:3e4,reconnectWindow:3e4,keepAliveWarnAt:2/3,start:function(i,h){var a=this,v={pingInterval:3e5,waitForPageLoad:!0,transport:"auto",jsonp:!1},d,y=a._deferral||n.Deferred(),b=t.document.createElement("a"),k,g;if(a.lastError=null,a._deferral=y,!a.json)throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.");if(n.type(i)==="function"?h=i:n.type(i)==="object"&&(n.extend(v,i),n.type(v.callback)==="function"&&(h=v.callback)),v.transport=w(v.transport,a),!v.transport)throw new Error("SignalR: Invalid transport(s) specified, aborting start.");return(a._.config=v,!s&&v.waitForPageLoad===!0)?(a._.deferredStartHandler=function(){a.start(i,h)},e.bind("load",a._.deferredStartHandler),y.promise()):a.state===r.connectionState.connecting?y.promise():o(a,r.connectionState.disconnected,r.connectionState.connecting)===!1?(y.resolve(a),y.promise()):(p(a),b.href=a.url,b.protocol&&b.protocol!==":"?(a.protocol=b.protocol,a.host=b.host):(a.protocol=t.document.location.protocol,a.host=b.host||t.document.location.host),a.baseUrl=a.protocol+"//"+a.host,a.wsProtocol=a.protocol==="https:"?"wss://":"ws://",v.transport==="auto"&&v.jsonp===!0&&(v.transport="longPolling"),a.url.indexOf("//")===0&&(a.url=t.location.protocol+a.url,a.log("Protocol relative URL detected, normalizing it to '"+a.url+"'.")),this.isCrossDomain(a.url)&&(a.log("Auto detected cross domain url."),v.transport==="auto"&&(v.transport=["webSockets","serverSentEvents","longPolling"]),typeof v.withCredentials=="undefined"&&(v.withCredentials=!0),v.jsonp||(v.jsonp=!n.support.cors,v.jsonp&&a.log("Using jsonp because this browser doesn't support CORS.")),a.contentType=r._.defaultContentType),a.withCredentials=v.withCredentials,a.ajaxDataType=v.jsonp?"jsonp":"text",n(a).bind(u.onStart,function(){n.type(h)==="function"&&h.call(a);y.resolve(a)}),d=function(i,s){var p=r._.error(f.noTransportOnInit);if(s=s||0,s>=i.length){n(a).triggerHandler(u.onError,[p]);y.reject(p);a.stop();return}if(a.state!==r.connectionState.disconnected){var w=i[s],h=r.transports[w],c=!1,v=function(){c||(c=!0,t.clearTimeout(a._.onFailedTimeoutHandle),h.stop(a),d(i,s+1))};a.transport=h;try{a._.onFailedTimeoutHandle=t.setTimeout(function(){a.log(h.name+" timed out when trying to connect.");v()},a._.totalTransportConnectTimeout);h.start(a,function(){var i=r._.firefoxMajorVersion(t.navigator.userAgent)>=11,f=!!a.withCredentials&&i;a.state!==r.connectionState.disconnected&&(c||(c=!0,t.clearTimeout(a._.onFailedTimeoutHandle),l(a)&&r.transports._logic.monitorKeepAlive(a),r.transports._logic.startHeartbeat(a),r._.configurePingInterval(a),o(a,r.connectionState.connecting,r.connectionState.connected),a._.connectingMessageBuffer.drain(),n(a).triggerHandler(u.onStart),e.bind("unload",function(){a.log("Window unloading, stopping the connection.");a.stop(f)}),i&&e.bind("beforeunload",function(){t.setTimeout(function(){a.stop(f)},0)})))},v)}catch(b){a.log(h.name+" transport threw '"+b.message+"' when attempting to start.");v()}}},k=a.url+"/negotiate",g=function(t,i){var e=r._.error(f.errorOnNegotiate,t,i._.negotiateRequest);n(i).triggerHandler(u.onError,e);y.reject(e);i.stop()},n(a).triggerHandler(u.onStarting),k=r.transports._logic.prepareQueryString(a,k),a.log("Negotiating with '"+k+"'."),a._.negotiateRequest=r.transports._logic.ajax(a,{url:k,error:function(n,t){t!==c?g(n,a):y.reject(r._.error(f.stoppedWhileNegotiating,null,a._.negotiateRequest))},success:function(t){var i,e,h,o=[],s=[];try{i=a._parseResponse(t)}catch(c){g(r._.error(f.errorParsingNegotiateResponse,c),a);return}if(e=a._.keepAliveData,a.appRelativeUrl=i.Url,a.id=i.ConnectionId,a.token=i.ConnectionToken,a.webSocketServerUrl=i.WebSocketServerUrl,a._.longPollDelay=i.LongPollDelay*1e3,a.disconnectTimeout=i.DisconnectTimeout*1e3,a._.totalTransportConnectTimeout=a.transportConnectTimeout+i.TransportConnectTimeout*1e3,i.KeepAliveTimeout?(e.activated=!0,e.timeout=i.KeepAliveTimeout*1e3,e.timeoutWarning=e.timeout*a.keepAliveWarnAt,a._.beatInterval=(e.timeout-e.timeoutWarning)/3):e.activated=!1,a.reconnectWindow=a.disconnectTimeout+(e.timeout||0),!i.ProtocolVersion||i.ProtocolVersion!==a.clientProtocol){h=r._.error(r._.format(f.protocolIncompatible,a.clientProtocol,i.ProtocolVersion));n(a).triggerHandler(u.onError,[h]);y.reject(h);return}n.each(r.transports,function(n){if(n.indexOf("_")===0||n==="webSockets"&&!i.TryWebSockets)return!0;s.push(n)});n.isArray(v.transport)?n.each(v.transport,function(t,i){n.inArray(i,s)>=0&&o.push(i)}):v.transport==="auto"?o=s:n.inArray(v.transport,s)>=0&&o.push(v.transport);d(o)}}),y.promise())},starting:function(t){var i=this;return n(i).bind(u.onStarting,function(){t.call(i)}),i},send:function(n){var t=this;if(t.state===r.connectionState.disconnected)throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()");if(t.state===r.connectionState.connecting)throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.");return t.transport.send(t,n),t},received:function(t){var i=this;return n(i).bind(u.onReceived,function(n,r){t.call(i,r)}),i},stateChanged:function(t){var i=this;return n(i).bind(u.onStateChanged,function(n,r){t.call(i,r)}),i},error:function(t){var i=this;return n(i).bind(u.onError,function(n,r,u){i.lastError=r;t.call(i,r,u)}),i},disconnected:function(t){var i=this;return n(i).bind(u.onDisconnect,function(){t.call(i)}),i},connectionSlow:function(t){var i=this;return n(i).bind(u.onConnectionSlow,function(){t.call(i)}),i},reconnecting:function(t){var i=this;return n(i).bind(u.onReconnecting,function(){t.call(i)}),i},reconnected:function(t){var i=this;return n(i).bind(u.onReconnect,function(){t.call(i)}),i},stop:function(i,h){var a=this,v=a._deferral;if(a._.deferredStartHandler&&e.unbind("load",a._.deferredStartHandler),delete a._.config,delete a._.deferredStartHandler,!s&&(!a._.config||a._.config.waitForPageLoad===!0)){a.log("Stopping connection prior to negotiate.");v&&v.reject(r._.error(f.stoppedWhileLoading));return}if(a.state!==r.connectionState.disconnected)return a.log("Stopping connection."),o(a,a.state,r.connectionState.disconnected),t.clearTimeout(a._.beatHandle),t.clearTimeout(a._.onFailedTimeoutHandle),t.clearInterval(a._.pingIntervalId),a.transport&&(a.transport.stop(a),h!==!1&&a.transport.abort(a,i),l(a)&&r.transports._logic.stopMonitoringKeepAlive(a),a.transport=null),a._.negotiateRequest&&(a._.negotiateRequest.abort(c),delete a._.negotiateRequest),r.transports._logic.tryAbortStartRequest(a),n(a).triggerHandler(u.onDisconnect),delete a._deferral,delete a.messageId,delete a.groupsToken,delete a.id,delete a._.pingIntervalId,delete a._.lastMessageAt,delete a._.lastActiveAt,delete a._.longPollDelay,a._.connectingMessageBuffer.clear(),a},log:function(n){v(n,this.logging)}};r.fn.init.prototype=r.fn;r.noConflict=function(){return n.connection===r&&(n.connection=h),r};n.connection&&(h=n.connection);n.connection=n.signalR=r})(window.jQuery,window),function(n,t){function o(n){n._.keepAliveData.monitoring&&h(n);r.markActive(n)&&(n._.beatHandle=t.setTimeout(function(){o(n)},n._.beatInterval))}function h(t){var r=t._.keepAliveData,f;t.state===i.connectionState.connected&&(f=(new Date).getTime()-t._.lastMessageAt,f>=r.timeout?(t.log("Keep alive timed out. Notifying transport that connection has been lost."),t.transport.lostConnection(t)):f>=r.timeoutWarning?r.userNotified||(t.log("Keep alive has been missed, connection may be dead/slow."),n(t).triggerHandler(u.onConnectionSlow),r.userNotified=!0):r.userNotified=!1)}function f(n,t){var i=n.url+t;return n.transport&&(i+="?transport="+n.transport.name),r.prepareQueryString(n,i)}var i=n.signalR,u=n.signalR.events,s=n.signalR.changeState,e="__Start Aborted__",r;i.transports={};r=i.transports._logic={ajax:function(t,i){return n.ajax(n.extend(!0,{},n.signalR.ajaxDefaults,{type:"GET",data:{},xhrFields:{withCredentials:t.withCredentials},contentType:t.contentType,dataType:t.ajaxDataType},i))},pingServer:function(t){var e,f,u=n.Deferred();return t.transport?(e=t.url+"/ping",e=r.addQs(e,t.qs),f=r.ajax(t,{url:e,success:function(n){var r;try{r=t._parseResponse(n)}catch(e){u.reject(i._.transportError(i.resources.pingServerFailedParse,t.transport,e,f));t.stop();return}r.Response==="pong"?u.resolve():u.reject(i._.transportError(i._.format(i.resources.pingServerFailedInvalidResponse,n),t.transport,null,f))},error:function(n){n.status===401||n.status===403?(u.reject(i._.transportError(i._.format(i.resources.pingServerFailedStatusCode,n.status),t.transport,n,f)),t.stop()):u.reject(i._.transportError(i.resources.pingServerFailed,t.transport,n,f))}})):u.reject(i._.transportError(i.resources.noConnectionTransport,t.transport)),u.promise()},prepareQueryString:function(n,i){var u;return u=r.addQs(i,"clientProtocol="+n.clientProtocol),u=r.addQs(u,n.qs),n.token&&(u+="&connectionToken="+t.encodeURIComponent(n.token)),n.data&&(u+="&connectionData="+t.encodeURIComponent(n.data)),u},addQs:function(t,i){var r=t.indexOf("?")!==-1?"&":"?",u;if(!i)return t;if(typeof i=="object")return t+r+n.param(i);if(typeof i=="string")return u=i.charAt(0),(u==="?"||u==="&")&&(r=""),t+r+i;throw new Error("Query string property must be either a string or object.");},getUrl:function(n,i,u,f){var s=i==="webSockets"?"":n.baseUrl,e=s+n.appRelativeUrl,o="transport="+i;return n.groupsToken&&(o+="&groupsToken="+t.encodeURIComponent(n.groupsToken)),u?(e+=f?"/poll":"/reconnect",n.messageId&&(o+="&messageId="+t.encodeURIComponent(n.messageId))):e+="/connect",e+="?"+o,e=r.prepareQueryString(n,e),e+("&tid="+Math.floor(Math.random()*11))},maximizePersistentResponse:function(n){return{MessageId:n.C,Messages:n.M,Initialized:typeof n.S!="undefined"?!0:!1,Disconnect:typeof n.D!="undefined"?!0:!1,ShouldReconnect:typeof n.T!="undefined"?!0:!1,LongPollDelay:n.L,GroupsToken:n.G}},updateGroups:function(n,t){t&&(n.groupsToken=t)},stringifySend:function(n,t){return typeof t=="string"||typeof t=="undefined"||t===null?t:n.json.stringify(t)},ajaxSend:function(t,e){var h=r.stringifySend(t,e),c=f(t,"/send"),o,s=function(t,r){n(r).triggerHandler(u.onError,[i._.transportError(i.resources.sendFailed,r.transport,t,o),e])};return o=r.ajax(t,{url:c,type:t.ajaxDataType==="jsonp"?"GET":"POST",contentType:i._.defaultContentType,data:{data:h},success:function(n){var i;if(n){try{i=t._parseResponse(n)}catch(u){s(u,t);t.stop();return}r.triggerReceived(t,i)}},error:function(n,i){i!=="abort"&&i!=="parsererror"&&s(n,t)}})},ajaxAbort:function(n,t){if(typeof n.transport!="undefined"){t=typeof t=="undefined"?!0:t;var i=f(n,"/abort");r.ajax(n,{url:i,async:t,timeout:1e3,type:"POST"});n.log("Fired ajax abort async = "+t+".")}},tryInitialize:function(t,o,s){var l,h,a=function(n){var i=t._deferral;i&&i.reject(n)},c=function(i){n(t).triggerHandler(u.onError,[i]);a(i);t.stop()};o.Initialized&&(l=f(t,"/start"),h=r.ajax(t,{url:l,success:function(n){var r;try{r=t._parseResponse(n)}catch(u){c(i._.error(i._.format(i.resources.errorParsingStartResponse,n),u,h));return}r.Response==="started"?s():c(i._.error(i._.format(i.resources.invalidStartResponse,n),null,h))},error:function(n,t){t!==e?c(i._.error(i.resources.errorDuringStartRequest,n,h)):a(i._.error(i.resources.stoppedDuringStartRequest,null,h))}}),t._.startRequest=h)},tryAbortStartRequest:function(n){n._.startRequest&&(n._.startRequest.abort(e),delete n._.startRequest)},triggerReceived:function(t,i){t._.connectingMessageBuffer.tryBuffer(i)||n(t).triggerHandler(u.onReceived,[i])},processMessages:function(t,i,u){var f;r.markLastMessage(t);i&&(f=r.maximizePersistentResponse(i),r.updateGroups(t,f.GroupsToken),f.MessageId&&(t.messageId=f.MessageId),f.Messages&&(n.each(f.Messages,function(n,i){r.triggerReceived(t,i)}),r.tryInitialize(t,f,u)))},monitorKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring?t.log("Tried to monitor keep alive but it's already being monitored."):(i.monitoring=!0,r.markLastMessage(t),t._.keepAliveData.reconnectKeepAliveUpdate=function(){r.markLastMessage(t)},n(t).bind(u.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t.log("Now monitoring keep alive with a warning timeout of "+i.timeoutWarning+" and a connection lost timeout of "+i.timeout+"."))},stopMonitoringKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring&&(i.monitoring=!1,n(t).unbind(u.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t._.keepAliveData={},t.log("Stopping the monitoring of the keep alive."))},startHeartbeat:function(n){n._.lastActiveAt=(new Date).getTime();o(n)},markLastMessage:function(n){n._.lastMessageAt=(new Date).getTime()},markActive:function(n){return r.verifyLastActive(n)?(n._.lastActiveAt=(new Date).getTime(),!0):!1},isConnectedOrReconnecting:function(n){return n.state===i.connectionState.connected||n.state===i.connectionState.reconnecting},ensureReconnectingState:function(t){return s(t,i.connectionState.connected,i.connectionState.reconnecting)===!0&&n(t).triggerHandler(u.onReconnecting),t.state===i.connectionState.reconnecting},clearReconnectTimeout:function(n){n&&n._.reconnectTimeout&&(t.clearTimeout(n._.reconnectTimeout),delete n._.reconnectTimeout)},verifyLastActive:function(t){if((new Date).getTime()-t._.lastActiveAt>=t.reconnectWindow){var r=i._.format(i.resources.reconnectWindowTimeout,new Date(t._.lastActiveAt),t.reconnectWindow);return t.log(r),n(t).triggerHandler(u.onError,[i._.error(r,"TimeoutException")]),t.stop(!1,!1),!1}return!0},reconnect:function(n,u){var f=i.transports[u];if(r.isConnectedOrReconnecting(n)&&!n._.reconnectTimeout){if(!r.verifyLastActive(n))return;n._.reconnectTimeout=t.setTimeout(function(){r.verifyLastActive(n)&&(f.stop(n),r.ensureReconnectingState(n)&&(n.log(u+" reconnecting."),f.start(n)))},n.reconnectDelay)}},handleParseFailure:function(t,r,f,e,o){t.state===i.connectionState.connecting?(t.log("Failed to parse server response while attempting to connect."),e()):(n(t).triggerHandler(u.onError,[i._.transportError(i._.format(i.resources.parseFailed,r),t.transport,f,o)]),t.stop())},foreverFrame:{count:0,connections:{}}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,f=n.signalR.changeState,i=r.transports._logic;r.transports.webSockets={name:"webSockets",supportsKeepAlive:function(){return!0},send:function(t,f){var e=i.stringifySend(t,f);try{t.socket.send(e)}catch(o){n(t).triggerHandler(u.onError,[r._.transportError(r.resources.webSocketsInvalidState,t.transport,o,t.socket),f])}},start:function(e,o,s){var h,c=!1,l=this,a=!o,v=n(e);if(!t.WebSocket){s();return}e.socket||(h=e.webSocketServerUrl?e.webSocketServerUrl:e.wsProtocol+e.host,h+=i.getUrl(e,this.name,a),e.log("Connecting to websocket endpoint '"+h+"'."),e.socket=new t.WebSocket(h),e.socket.onopen=function(){c=!0;e.log("Websocket opened.");i.clearReconnectTimeout(e);f(e,r.connectionState.reconnecting,r.connectionState.connected)===!0&&v.triggerHandler(u.onReconnect)},e.socket.onclose=function(t){if(this===e.socket){if(c)typeof t.wasClean!="undefined"&&t.wasClean===!1?(n(e).triggerHandler(u.onError,[r._.transportError(r.resources.webSocketClosed,e.transport,t)]),e.log("Unclean disconnect from websocket: "+t.reason||"[no reason given].")):e.log("Websocket closed.");else{s?s():a&&l.reconnect(e);return}l.reconnect(e)}},e.socket.onmessage=function(t){var r;try{r=e._parseResponse(t.data)}catch(u){i.handleParseFailure(e,t.data,u,s,t);return}r&&(n.isEmptyObject(r)||r.M?i.processMessages(e,r,o):i.triggerReceived(e,r))})},reconnect:function(n){i.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},stop:function(n){i.clearReconnectTimeout(n);n.socket&&(n.log("Closing the Websocket."),n.socket.close(),n.socket=null)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var i=n.signalR,u=n.signalR.events,e=n.signalR.changeState,r=i.transports._logic,f=function(n){t.clearTimeout(n._.reconnectAttemptTimeoutHandle);delete n._.reconnectAttemptTimeoutHandle};i.transports.serverSentEvents={name:"serverSentEvents",supportsKeepAlive:function(){return!0},timeOut:3e3,start:function(o,s,h){var c=this,l=!1,a=n(o),v=!s,y;if(o.eventSource&&(o.log("The connection already has an event source. Stopping it."),o.stop()),!t.EventSource){h&&(o.log("This browser doesn't support SSE."),h());return}y=r.getUrl(o,this.name,v);try{o.log("Attempting to connect to SSE endpoint '"+y+"'.");o.eventSource=new t.EventSource(y,{withCredentials:o.withCredentials})}catch(p){o.log("EventSource failed trying to connect with error "+p.Message+".");h?h():(a.triggerHandler(u.onError,[i._.transportError(i.resources.eventSourceFailedToConnect,o.transport,p)]),v&&c.reconnect(o));return}v&&(o._.reconnectAttemptTimeoutHandle=t.setTimeout(function(){l===!1&&o.eventSource.readyState!==t.EventSource.OPEN&&c.reconnect(o)},c.timeOut));o.eventSource.addEventListener("open",function(){o.log("EventSource connected.");f(o);r.clearReconnectTimeout(o);l===!1&&(l=!0,e(o,i.connectionState.reconnecting,i.connectionState.connected)===!0&&a.triggerHandler(u.onReconnect))},!1);o.eventSource.addEventListener("message",function(n){var t;if(n.data!=="initialized"){try{t=o._parseResponse(n.data)}catch(i){r.handleParseFailure(o,n.data,i,h,n);return}r.processMessages(o,t,s)}},!1);o.eventSource.addEventListener("error",function(n){if(this===o.eventSource){if(!l){h&&h();return}o.log("EventSource readyState: "+o.eventSource.readyState+".");n.eventPhase===t.EventSource.CLOSED?(o.log("EventSource reconnecting due to the server connection ending."),c.reconnect(o)):(o.log("EventSource error."),a.triggerHandler(u.onError,[i._.transportError(i.resources.eventSourceError,o.transport,n)]))}},!1)},reconnect:function(n){r.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){r.ajaxSend(n,t)},stop:function(n){f(n);r.clearReconnectTimeout(n);n&&n.eventSource&&(n.log("EventSource calling close()."),n.eventSource.close(),n.eventSource=null,delete n.eventSource)},abort:function(n,t){r.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var r=n.signalR,e=n.signalR.events,o=n.signalR.changeState,i=r.transports._logic,u=function(){var n=t.document.createElement("iframe");return n.setAttribute("style","position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"),n},f=function(){var i=null,f=1e3,n=0;return{prevent:function(){r._.ieVersion<=8&&(n===0&&(i=t.setInterval(function(){var n=u();t.document.body.appendChild(n);t.document.body.removeChild(n);n=null},f)),n++)},cancel:function(){n===1&&t.clearInterval(i);n>0&&n--}}}();r.transports.foreverFrame={name:"foreverFrame",supportsKeepAlive:function(){return!0},iframeClearThreshold:50,start:function(n,r,e){var l=this,s=i.foreverFrame.count+=1,h,o=u(),c=function(){n.log("Forever frame iframe finished loading and is no longer receiving messages.");l.reconnect(n)};if(t.EventSource){e&&(n.log("This browser supports SSE, skipping Forever Frame."),e());return}o.setAttribute("data-signalr-connection-id",n.id);f.prevent();h=i.getUrl(n,this.name);h+="&frameId="+s;t.document.body.appendChild(o);n.log("Binding to iframe's load event.");o.addEventListener?o.addEventListener("load",c,!1):o.attachEvent&&o.attachEvent("onload",c);o.src=h;i.foreverFrame.connections[s]=n;n.frame=o;n.frameId=s;r&&(n.onSuccess=function(){n.log("Iframe transport started.");r()})},reconnect:function(n){var r=this;i.isConnectedOrReconnecting(n)&&i.verifyLastActive(n)&&t.setTimeout(function(){if(i.verifyLastActive(n)&&n.frame&&i.ensureReconnectingState(n)){var u=n.frame,t=i.getUrl(n,r.name,!0)+"&frameId="+n.frameId;n.log("Updating iframe src to '"+t+"'.");u.src=t}},n.reconnectDelay)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){i.ajaxSend(n,t)},receive:function(t,u){var f,e,o;if(t.json!==t._originalJson&&(u=t._originalJson.stringify(u)),o=t._parseResponse(u),i.processMessages(t,o,t.onSuccess),t.state===n.signalR.connectionState.connected&&(t.frameMessageCount=(t.frameMessageCount||0)+1,t.frameMessageCount>r.transports.foreverFrame.iframeClearThreshold&&(t.frameMessageCount=0,f=t.frame.contentWindow||t.frame.contentDocument,f&&f.document&&f.document.body)))for(e=f.document.body;e.firstChild;)e.removeChild(e.firstChild)},stop:function(n){var r=null;if(f.cancel(),n.frame){if(n.frame.stop)n.frame.stop();else try{r=n.frame.contentWindow||n.frame.contentDocument;r.document&&r.document.execCommand&&r.document.execCommand("Stop")}catch(u){n.log("Error occured when stopping foreverFrame transport. Message = "+u.message+".")}n.frame.parentNode===t.document.body&&t.document.body.removeChild(n.frame);delete i.foreverFrame.connections[n.frameId];n.frame=null;n.frameId=null;delete n.frame;delete n.frameId;delete n.onSuccess;delete n.frameMessageCount;n.log("Stopping forever frame.")}},abort:function(n,t){i.ajaxAbort(n,t)},getConnection:function(n){return i.foreverFrame.connections[n]},started:function(t){o(t,r.connectionState.reconnecting,r.connectionState.connected)===!0&&n(t).triggerHandler(e.onReconnect)}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,e=n.signalR.changeState,f=n.signalR.isDisconnecting,i=r.transports._logic,o=function(){try{return"onprogress"in new t.XMLHttpRequest}catch(n){return!1}}();r.transports.longPolling={name:"longPolling",supportsKeepAlive:function(n){return o&&n.ajaxDataType!=="jsonp"&&n._.longPollDelay===0},reconnectDelay:3e3,start:function(o,s,h){var a=this,v=function(){v=n.noop;h=null;o.log("LongPolling connected.");s()},y=function(){return h?(h(),h=null,o.log("LongPolling failed to connect."),!0):!1},c=o._,l=0,p=function(i){t.clearTimeout(c.reconnectTimeoutId);c.reconnectTimeoutId=null;e(i,r.connectionState.reconnecting,r.connectionState.connected)===!0&&(i.log("Raising the reconnect event"),n(i).triggerHandler(u.onReconnect))},w=36e5;o.pollXhr&&(o.log("Polling xhr requests already exists, aborting."),o.stop());o.messageId=null;c.reconnectTimeoutId=null;c.pollTimeoutId=t.setTimeout(function(){(function e(s,h){var d=s.messageId,g=d===null,b=!g,nt=!h,k=i.getUrl(s,a.name,b,nt);f(s)!==!0&&(o.log("Opening long polling request to '"+k+"'."),s.pollXhr=i.ajax(o,{xhrFields:{onprogress:function(){i.markLastMessage(o)}},url:k,success:function(r){var h,w=0,u,a;o.log("Long poll complete.");l=0;try{h=o._parseResponse(r)}catch(b){i.handleParseFailure(s,r,b,y,s.pollXhr);return}(c.reconnectTimeoutId!==null&&p(s),h&&(u=i.maximizePersistentResponse(h)),i.processMessages(s,h,v),u&&n.type(u.LongPollDelay)==="number"&&(w=u.LongPollDelay),u&&u.Disconnect)||f(s)!==!0&&(a=u&&u.ShouldReconnect,!a||i.ensureReconnectingState(s))&&(w>0?c.pollTimeoutId=t.setTimeout(function(){e(s,a)},w):e(s,a))},error:function(f,h){if(t.clearTimeout(c.reconnectTimeoutId),c.reconnectTimeoutId=null,h==="abort"){o.log("Aborted xhr request.");return}if(!y()){if(l++,o.state!==r.connectionState.reconnecting&&(o.log("An error occurred using longPolling. Status = "+h+". Response = "+f.responseText+"."),n(s).triggerHandler(u.onError,[r._.transportError(r.resources.longPollFailed,o.transport,f,s.pollXhr)])),(o.state===r.connectionState.connected||o.state===r.connectionState.reconnecting)&&!i.verifyLastActive(o))return;if(!i.ensureReconnectingState(s))return;c.pollTimeoutId=t.setTimeout(function(){e(s,!0)},a.reconnectDelay)}}}),b&&h===!0&&(c.reconnectTimeoutId=t.setTimeout(function(){p(s)},Math.min(1e3*(Math.pow(2,l)-1),w))))})(o)},250)},lostConnection:function(n){n.pollXhr&&n.pollXhr.abort("lostConnection")},send:function(n,t){i.ajaxSend(n,t)},stop:function(n){t.clearTimeout(n._.pollTimeoutId);t.clearTimeout(n._.reconnectTimeoutId);delete n._.pollTimeoutId;delete n._.reconnectTimeoutId;n.pollXhr&&(n.pollXhr.abort(),n.pollXhr=null,delete n.pollXhr)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n){function r(n){return n+e}function s(n,t,i){for(var f=n.length,u=[],r=0;r - /// - /// - internal class LiveChatManager : ServiceLocator, ILiveChatManager - { - protected override Func GetFactory() - { - return () => new LiveChatManager(); - } - - /// - /// - /// - private const string CachePrefix = "LiveChats_"; - - /// - /// - /// - /// - /// - public int AddLiveChat(LiveChatInfo objLiveChatInfo) - { - Requires.NotNull(objLiveChatInfo); - Requires.PropertyNotNegative(objLiveChatInfo, "PortalID"); - - using (IDataContext ctx = DataContext.Instance()) - { - objLiveChatInfo.LastMessageDate = DateTime.Now; - var rep = ctx.GetRepository(); - rep.Insert(objLiveChatInfo); - - DataCache.ClearCache(CachePrefix); - - return objLiveChatInfo.LiveChatID; - } - } - - /// - /// - /// - /// - public void UpdateLiveChat(LiveChatInfo objLiveChatInfo) - { - Requires.NotNull(objLiveChatInfo); - Requires.PropertyNotNegative(objLiveChatInfo, "PortalID"); - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository(); - rep.Update(objLiveChatInfo); - } - - DataCache.ClearCache(CachePrefix); - } - - /// - /// - /// - /// - public void DeleteLiveChat(int livechatID) - { - Requires.NotNegative("livechatID", livechatID); - - LiveChatInfo objLiveChatInfo = GetLiveChatByID(livechatID); - Requires.NotNull(objLiveChatInfo); - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository(); - rep.Delete(objLiveChatInfo); - } - - DataCache.ClearCache(CachePrefix); - } - - /// - /// - /// - /// - /// - /// - public void StartLiveChat(int livechatID, int agentID, int agentUserID) - { - Requires.NotNegative("livechatID", livechatID); - Requires.NotNegative("agentID", agentID); - Requires.NotNegative("agentUserID", agentUserID); - - using (IDataContext ctx = DataContext.Instance()) - { - ctx.Execute(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatStart", livechatID, agentID, agentUserID); - } - - DataCache.ClearCache(CachePrefix); - } - - /// - /// - /// - /// - /// - public void CloseLiveChat(int livechatID, bool closedByAgent) - { - Requires.NotNegative("livechatID", livechatID); - - using (IDataContext ctx = DataContext.Instance()) - { - ctx.Execute(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatClose", livechatID, closedByAgent); - } - - DataCache.ClearCache(CachePrefix); - } - - /// - /// - /// - /// - public void CloseLeftLiveChats(int portalID) - { - Requires.NotNegative("portalID", portalID); - - using (IDataContext ctx = DataContext.Instance()) - { - ctx.Execute(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatCloseLeftChats", portalID); - } - - DataCache.ClearCache(CachePrefix); - } - - /// - /// - /// - /// - /// - public LiveChatInfo GetLiveChatByID(int livechatID) - { - Requires.NotNegative("livechatID", livechatID); - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository(); - return rep.GetById(livechatID); - } - } - - /// - /// - /// - /// - /// - /// - public bool hasVisitorOpenedLiveChat(int portalID, string visitorGUID) - { - Requires.NotNegative("portalID", portalID); - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository(); - return rep.Find("Where (PortalID = @0 and VisitorGUID = @1 and IsClosed=0)", portalID, visitorGUID).Any(); - } - } - - /// - /// - /// - /// - /// - public IEnumerable GetLiveChats(int portalID) - { - Requires.NotNegative("portalID", portalID); - - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository(); - return rep.Get(portalID); - } - } - - /// - /// - /// - /// - /// - public IEnumerable GetIncomingLiveChats(int portalID) - { - Requires.NotNegative("portalID", portalID); - - string cacheKey = CachePrefix + "IncomingLiveChats_" + portalID; - - var result = (IEnumerable)DataCache.GetCache(cacheKey); - if (result == null) - { - using (IDataContext ctx = DataContext.Instance()) - { - result = ctx.ExecuteQuery(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetIncomingChats", portalID); - } - - DataCache.SetCache(cacheKey, result); - } - return result; - - } - - /// - /// - /// - /// - /// - public IEnumerable GetCurrentLiveChats(int portalID) - { - Requires.NotNegative("portalID", portalID); - - string cacheKey = CachePrefix + "CurrentLiveChats_" + portalID; - - var result = (IEnumerable)DataCache.GetCache(cacheKey); - if (result == null) - { - using (IDataContext ctx = DataContext.Instance()) - { - result = ctx.ExecuteQuery(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetCurrentChats", portalID); - } - - DataCache.SetCache(cacheKey, result); - } - return result; - } - - /// - /// - /// - /// - /// - /// - public LiveChatInfo GetCurrentLiveChatByVisitor(int portalID, string visitorGUID) - { - Requires.NotNegative("portalID", portalID); - - using (IDataContext ctx = DataContext.Instance()) - { - return ctx.ExecuteSingleOrDefault(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetVisitorCurrentChat", portalID, visitorGUID); - } - } - - /// - /// - /// - /// - /// - /// - public IEnumerable GetCurrentLiveChatsByAgent(int portalID, int agentUserID) - { - Requires.NotNegative("portalID", portalID); - Requires.NotNegative("agentUserID", agentUserID); - - string cacheKey = CachePrefix + "CurrentLiveChats_" + portalID + "_" + agentUserID; - - var result = (IEnumerable)DataCache.GetCache(cacheKey); - if (result == null) - { - using (IDataContext ctx = DataContext.Instance()) - { - result = ctx.ExecuteQuery(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetCurrentChats", portalID, agentUserID); - } - - DataCache.SetCache(cacheKey, result); - } - return result; - } - - public IPagedList GetChatHistory(int portalID, int type, string departments, string agents, string visitorEmail, DateTime? fromDate, DateTime? toDate, int rating, bool unread, int pageIndex, int pageSize, int totalCount) - { - var condition = new StringBuilder(string.Format("PortalID={0} ", portalID)); - - string dbo = DataProvider.Instance().DatabaseOwner; - string oq = DataProvider.Instance().ObjectQualifier; - - //all | chat | offline - if (type == 1) //chat - condition.AppendFormat(" and LiveChatID in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatAgents])", dbo, oq); - else if (type == 2) //offline - condition.AppendFormat(" and LiveChatID not in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatAgents])", dbo, oq); - - if (rating == 1 || rating == 2) - condition.Append(string.Format(" and Rate = {0}", rating)); - else if (rating == 3) - condition.Append(" and (Rate = 1 or Rate = 2)"); - - //departments - if (type != 2 && !string.IsNullOrEmpty(departments)) - { - string departmentsCondition = " and LiveChatID in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatDepartments] Where {2})"; - foreach (var dep in departments.Split(',')) - { - int value; - if (int.TryParse(dep, out value)) - { - departmentsCondition = departmentsCondition.Replace("[OR]", " or {0}"); - departmentsCondition = string.Format(departmentsCondition, dbo, oq, string.Format("DepartmentID = {0} [OR]", value)); - } - } - departmentsCondition = departmentsCondition.Replace("[OR]", string.Empty); - condition.Append(departmentsCondition); - } - - //agents - if (type != 2 && !string.IsNullOrEmpty(agents)) - { - string agentsCondition = " and LiveChatID in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatAgents] Where {2})"; - foreach (var agent in agents.Split(',')) - { - int value; - if (int.TryParse(agent, out value)) - { - agentsCondition = agentsCondition.Replace("[OR]", " or {0}"); - agentsCondition = string.Format(agentsCondition, dbo, oq, string.Format("UserID = {0} [OR]", value)); - } - } - agentsCondition = agentsCondition.Replace("[OR]", string.Empty); - condition.Append(agentsCondition); - } - - //visitor email - if (!string.IsNullOrEmpty(visitorEmail)) - condition.AppendFormat(" and VisitorEmail like N'%{0}%'", visitorEmail); - - //date range - condition.AppendFormat(" and CreateDate >= '{0}' and CreateDate<= '{1}'", fromDate != null ? fromDate : SqlDateTime.MinValue.Value, toDate != null ? toDate : SqlDateTime.MaxValue.Value); - - int from = pageIndex * pageSize + 1; - int to = from + pageSize; - - string query = string.Format("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY CreateDate desc) AS RowNum, * FROM {0}[{1}MyDnnSupport_LiveChats] Where {2}) AS RowConstrainedResult WHERE RowNum >= {3} AND RowNum < {4} ORDER BY RowNum", dbo, oq, condition.ToString(), from, to); - - var allDepartments = DepartmentManager.Instance.GetDepartments(portalID); - var allAgents = AgentManager.Instance.GetAgents(portalID); - - using (IDataContext ctx = DataContext.Instance()) - { - if (pageIndex == 0) - totalCount = ctx.ExecuteScalar(System.Data.CommandType.Text, string.Format("Select Count(*) From {0}[{1}MyDnnSupport_LiveChats] Where {2}", dbo, oq, condition)); - - var livechats = ctx.ExecuteQuery(System.Data.CommandType.Text, query); - - var result = livechats.Select(r => new LiveChatViewModel() - { - LiveChatID = r.LiveChatID, - Visitor = new LiveChatVisitorViewModel() - { - UserID = r.VisitorUserID, - Avatar = r.VisitorUserID > 0 ? DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + r.VisitorUserID) : string.Empty, - DisplayName = r.VisitorName, - Email = r.VisitorEmail, - IP = r.VisitorIP, - UserAgent = r.VisitorUserAgent - }, - Departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartmentsViewModel(portalID, r.LiveChatID), - Agents = LiveChatAgentManager.Instance.GetLiveChatAgentsViewModel(portalID, r.LiveChatID), - Message = r.VisitorMessage, - CreateDate = r.CreateDate - }); - - return new PagedList(result, totalCount, pageIndex, pageSize); - } - } - - public void PurgeHistory(int[] items) - { - using (IDataContext ctx = DataContext.Instance()) - { - var rep = ctx.GetRepository(); - - string condition = string.Empty; - foreach (var livechatID in items) - { - condition = condition.Replace("[OR]", " or "); - condition += string.Format(" LiveChatID = {0} [OR]", livechatID); - - } - condition = condition.Replace("[OR]", string.Empty); - - rep.Delete(string.Format("Where ({0})", condition)); - - DataCache.ClearCache(CachePrefix); - } - } - } +// Copyright (c) MyDnn Group. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using DotNetNuke.Common.Utilities; +using DotNetNuke.Data; +using MyDnn.Modules.Support.LiveChat.Models; +using DotNetNuke.Common; +using DotNetNuke.Framework; +using System.Text; +using System.Data.SqlTypes; +using MyDnn.Modules.Support.LiveChat.ViewModels; +using DotNetNuke.Collections; +using System.Globalization; + +namespace MyDnn.Modules.Support.LiveChat.Components +{ + /// + /// + /// + internal class LiveChatManager : ServiceLocator, ILiveChatManager + { + protected override Func GetFactory() + { + return () => new LiveChatManager(); + } + + /// + /// + /// + private const string CachePrefix = "LiveChats_"; + + /// + /// + /// + /// + /// + public int AddLiveChat(LiveChatInfo objLiveChatInfo) + { + Requires.NotNull(objLiveChatInfo); + Requires.PropertyNotNegative(objLiveChatInfo, "PortalID"); + + using (IDataContext ctx = DataContext.Instance()) + { + objLiveChatInfo.LastMessageDate = DateTime.Now; + var rep = ctx.GetRepository(); + rep.Insert(objLiveChatInfo); + + DataCache.ClearCache(CachePrefix); + + return objLiveChatInfo.LiveChatID; + } + } + + /// + /// + /// + /// + public void UpdateLiveChat(LiveChatInfo objLiveChatInfo) + { + Requires.NotNull(objLiveChatInfo); + Requires.PropertyNotNegative(objLiveChatInfo, "PortalID"); + + using (IDataContext ctx = DataContext.Instance()) + { + var rep = ctx.GetRepository(); + rep.Update(objLiveChatInfo); + } + + DataCache.ClearCache(CachePrefix); + } + + /// + /// + /// + /// + public void DeleteLiveChat(int livechatID) + { + Requires.NotNegative("livechatID", livechatID); + + LiveChatInfo objLiveChatInfo = GetLiveChatByID(livechatID); + Requires.NotNull(objLiveChatInfo); + + using (IDataContext ctx = DataContext.Instance()) + { + var rep = ctx.GetRepository(); + rep.Delete(objLiveChatInfo); + } + + DataCache.ClearCache(CachePrefix); + } + + /// + /// + /// + /// + /// + /// + public void StartLiveChat(int livechatID, int agentID, int agentUserID) + { + Requires.NotNegative("livechatID", livechatID); + Requires.NotNegative("agentID", agentID); + Requires.NotNegative("agentUserID", agentUserID); + + using (IDataContext ctx = DataContext.Instance()) + { + ctx.Execute(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatStart", livechatID, agentID, agentUserID); + } + + DataCache.ClearCache(CachePrefix); + } + + /// + /// + /// + /// + /// + public void CloseLiveChat(int livechatID, bool closedByAgent) + { + Requires.NotNegative("livechatID", livechatID); + + using (IDataContext ctx = DataContext.Instance()) + { + ctx.Execute(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatClose", livechatID, closedByAgent); + } + + DataCache.ClearCache(CachePrefix); + } + + /// + /// + /// + /// + public void CloseLeftLiveChats(int portalID) + { + Requires.NotNegative("portalID", portalID); + + using (IDataContext ctx = DataContext.Instance()) + { + ctx.Execute(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatCloseLeftChats", portalID); + } + + DataCache.ClearCache(CachePrefix); + } + + /// + /// + /// + /// + /// + public LiveChatInfo GetLiveChatByID(int livechatID) + { + Requires.NotNegative("livechatID", livechatID); + + using (IDataContext ctx = DataContext.Instance()) + { + var rep = ctx.GetRepository(); + return rep.GetById(livechatID); + } + } + + /// + /// + /// + /// + /// + /// + public bool hasVisitorOpenedLiveChat(int portalID, string visitorGUID) + { + Requires.NotNegative("portalID", portalID); + + using (IDataContext ctx = DataContext.Instance()) + { + var rep = ctx.GetRepository(); + return rep.Find("Where (PortalID = @0 and VisitorGUID = @1 and IsClosed=0)", portalID, visitorGUID).Any(); + } + } + + /// + /// + /// + /// + /// + public IEnumerable GetLiveChats(int portalID) + { + Requires.NotNegative("portalID", portalID); + + using (IDataContext ctx = DataContext.Instance()) + { + var rep = ctx.GetRepository(); + return rep.Get(portalID); + } + } + + /// + /// + /// + /// + /// + public IEnumerable GetIncomingLiveChats(int portalID) + { + Requires.NotNegative("portalID", portalID); + + string cacheKey = CachePrefix + "IncomingLiveChats_" + portalID; + + var result = (IEnumerable)DataCache.GetCache(cacheKey); + if (result == null) + { + using (IDataContext ctx = DataContext.Instance()) + { + result = ctx.ExecuteQuery(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetIncomingChats", portalID); + } + + DataCache.SetCache(cacheKey, result); + } + return result; + + } + + /// + /// + /// + /// + /// + public IEnumerable GetCurrentLiveChats(int portalID) + { + Requires.NotNegative("portalID", portalID); + + string cacheKey = CachePrefix + "CurrentLiveChats_" + portalID; + + var result = (IEnumerable)DataCache.GetCache(cacheKey); + if (result == null) + { + using (IDataContext ctx = DataContext.Instance()) + { + result = ctx.ExecuteQuery(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetCurrentChats", portalID); + } + + DataCache.SetCache(cacheKey, result); + } + return result; + } + + /// + /// + /// + /// + /// + /// + public LiveChatInfo GetCurrentLiveChatByVisitor(int portalID, string visitorGUID) + { + Requires.NotNegative("portalID", portalID); + + using (IDataContext ctx = DataContext.Instance()) + { + return ctx.ExecuteSingleOrDefault(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetVisitorCurrentChat", portalID, visitorGUID); + } + } + + /// + /// + /// + /// + /// + /// + public IEnumerable GetCurrentLiveChatsByAgent(int portalID, int agentUserID) + { + Requires.NotNegative("portalID", portalID); + Requires.NotNegative("agentUserID", agentUserID); + + string cacheKey = CachePrefix + "CurrentLiveChats_" + portalID + "_" + agentUserID; + + var result = (IEnumerable)DataCache.GetCache(cacheKey); + if (result == null) + { + using (IDataContext ctx = DataContext.Instance()) + { + result = ctx.ExecuteQuery(System.Data.CommandType.StoredProcedure, "MyDnnSupport_LiveChatGetCurrentChats", portalID, agentUserID); + } + + DataCache.SetCache(cacheKey, result); + } + return result; + } + + public IPagedList GetChatHistory(int portalID, int type, string departments, string agents, string visitorEmail, DateTime? fromDate, DateTime? toDate, int rating, bool unread, int pageIndex, int pageSize, int totalCount) + { + var condition = new StringBuilder(string.Format("PortalID={0} ", portalID)); + + string dbo = DataProvider.Instance().DatabaseOwner; + string oq = DataProvider.Instance().ObjectQualifier; + + //all | chat | offline + if (type == 1) //chat + condition.AppendFormat(" and LiveChatID in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatAgents])", dbo, oq); + else if (type == 2) //offline + condition.AppendFormat(" and LiveChatID not in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatAgents])", dbo, oq); + + if (rating == 1 || rating == 2) + condition.Append(string.Format(" and Rate = {0}", rating)); + else if (rating == 3) + condition.Append(" and (Rate = 1 or Rate = 2)"); + + //departments + if (type != 2 && !string.IsNullOrEmpty(departments)) + { + string departmentsCondition = " and LiveChatID in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatDepartments] Where {2})"; + foreach (var dep in departments.Split(',')) + { + int value; + if (int.TryParse(dep, out value)) + { + departmentsCondition = departmentsCondition.Replace("[OR]", " or {0}"); + departmentsCondition = string.Format(departmentsCondition, dbo, oq, string.Format("DepartmentID = {0} [OR]", value)); + } + } + departmentsCondition = departmentsCondition.Replace("[OR]", string.Empty); + condition.Append(departmentsCondition); + } + + //agents + if (type != 2 && !string.IsNullOrEmpty(agents)) + { + string agentsCondition = " and LiveChatID in (Select LiveChatID From {0}[{1}MyDnnSupport_LiveChatAgents] Where {2})"; + foreach (var agent in agents.Split(',')) + { + int value; + if (int.TryParse(agent, out value)) + { + agentsCondition = agentsCondition.Replace("[OR]", " or {0}"); + agentsCondition = string.Format(agentsCondition, dbo, oq, string.Format("UserID = {0} [OR]", value)); + } + } + agentsCondition = agentsCondition.Replace("[OR]", string.Empty); + condition.Append(agentsCondition); + } + + //visitor email + if (!string.IsNullOrEmpty(visitorEmail)) + condition.AppendFormat(" and VisitorEmail like N'%{0}%'", visitorEmail); + + //set date culture + var fromDateVal = fromDate != null ? fromDate.Value.ToString(new CultureInfo("en-US")) : SqlDateTime.MinValue.Value.ToString(new CultureInfo("en-US")); + var toDateVal = toDate != null ? toDate.Value.ToString(new CultureInfo("en-US")) : SqlDateTime.MaxValue.Value.ToString(new CultureInfo("en-US")); + + //date range + condition.AppendFormat(" and CreateDate >= '{0}' and CreateDate<= '{1}'", fromDateVal, toDateVal); + + int from = pageIndex * pageSize + 1; + int to = from + pageSize; + + string query = string.Format("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY CreateDate desc) AS RowNum, * FROM {0}[{1}MyDnnSupport_LiveChats] Where {2}) AS RowConstrainedResult WHERE RowNum >= {3} AND RowNum < {4} ORDER BY RowNum", dbo, oq, condition.ToString(), from, to); + + var allDepartments = DepartmentManager.Instance.GetDepartments(portalID); + var allAgents = AgentManager.Instance.GetAgents(portalID); + + using (IDataContext ctx = DataContext.Instance()) + { + if (pageIndex == 0) + totalCount = ctx.ExecuteScalar(System.Data.CommandType.Text, string.Format("Select Count(*) From {0}[{1}MyDnnSupport_LiveChats] Where {2}", dbo, oq, condition)); + + var livechats = ctx.ExecuteQuery(System.Data.CommandType.Text, query); + + var result = livechats.Select(r => new LiveChatViewModel() + { + LiveChatID = r.LiveChatID, + Visitor = new LiveChatVisitorViewModel() + { + UserID = r.VisitorUserID, + Avatar = r.VisitorUserID > 0 ? DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + r.VisitorUserID) : string.Empty, + DisplayName = r.VisitorName, + Email = r.VisitorEmail, + IP = r.VisitorIP, + UserAgent = r.VisitorUserAgent + }, + Departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartmentsViewModel(portalID, r.LiveChatID), + Agents = LiveChatAgentManager.Instance.GetLiveChatAgentsViewModel(portalID, r.LiveChatID), + Message = r.VisitorMessage, + CreateDate = r.CreateDate + }); + + return new PagedList(result, totalCount, pageIndex, pageSize); + } + } + + public void PurgeHistory(int[] items) + { + using (IDataContext ctx = DataContext.Instance()) + { + var rep = ctx.GetRepository(); + + string condition = string.Empty; + foreach (var livechatID in items) + { + condition = condition.Replace("[OR]", " or "); + condition += string.Format(" LiveChatID = {0} [OR]", livechatID); + + } + condition = condition.Replace("[OR]", string.Empty); + + rep.Delete(string.Format("Where ({0})", condition)); + + DataCache.ClearCache(CachePrefix); + } + } + } } \ No newline at end of file diff --git a/LiveChat/Controllers/AdminPanelController.cs b/LiveChat/Controllers/AdminPanelController.cs index 3f58048..03a62ff 100644 --- a/LiveChat/Controllers/AdminPanelController.cs +++ b/LiveChat/Controllers/AdminPanelController.cs @@ -1,59 +1,68 @@ -using DotNetNuke.Entities.Modules; -using DotNetNuke.Entities.Portals; -using DotNetNuke.Web.Mvc.Framework.Controllers; -using MyDnn.Modules.Support.LiveChat.ViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.Mvc; - -namespace MyDnn.Modules.Support.LiveChat.Controllers -{ - public class AdminPanelController : DnnController - { - public ActionResult AdminPanel() - { - bool mustRedirect = false; - string newUrl = string.Empty; - - if (PortalSettings.EnablePopUps) - { - if (Request.QueryString["popUp"] == null || Request.QueryString["popUp"] != "true" || Request.Url.Query.IndexOf("popUp") == -1) - { - mustRedirect = true; - newUrl = ModuleContext.EditUrl("popUp", "true", "AdminPanel", "controller", "AdminPanel", "action", "AdminPanel"); - } - } - else - { - if (Request.QueryString["SkinSrc"] == null) - { - mustRedirect = true; - newUrl = ModuleContext.EditUrl("", "", "AdminPanel", "controller", "AdminPanel", "action", "AdminPanel", "SkinSrc=[G]Skins%2f_default%2fNo+Skin&ContainerSrc=[G]Containers%2f_default%2fNo+Container"); - } - } - - var model = new ModuleConfigStatusViewModel(); - model.VisitorsOnlineEnabled = bool.Parse(PortalController.GetPortalSetting("MyDnnVisitorsOnlineEnabled", PortalSettings.PortalId, "false")); ; - model.LiveChatEnabled = bool.Parse(PortalController.GetPortalSetting("MyDnnLiveChatEnabled", PortalSettings.PortalId, "false")); ; - - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); - if (moduleID != -1) - { - var objModuleInfo = new ModuleController().GetModule(moduleID); - var Settings = objModuleInfo.ModuleSettings; - - model.ModuleID = objModuleInfo.ModuleID; - model.TabID = objModuleInfo.TabID; - model.BasicSettingsUpdated = Settings["UpdateBasicSettings"] != null ? bool.Parse(Settings["UpdateBasicSettings"].ToString()) : false; - model.WidgetSettingsUpdated = Settings["UpdateWidgetSettings"] != null ? bool.Parse(Settings["UpdateWidgetSettings"].ToString()) : false; ; - } - - if (mustRedirect) - return Redirect(newUrl); - else - return View(model); - } - } -} +using DotNetNuke.Common.Utilities; +using DotNetNuke.Entities.Modules; +using DotNetNuke.Entities.Portals; +using DotNetNuke.Security.Roles; +using DotNetNuke.Web.Mvc.Framework.Controllers; +using MyDnn.Modules.Support.LiveChat.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace MyDnn.Modules.Support.LiveChat.Controllers +{ + public class AdminPanelController : DnnController + { + public ActionResult AdminPanel() + { + bool mustRedirect = false; + string newUrl = string.Empty; + + if (PortalSettings.EnablePopUps) + { + if (Request.QueryString["popUp"] == null || Request.QueryString["popUp"] != "true" || Request.Url.Query.IndexOf("popUp") == -1) + { + mustRedirect = true; + newUrl = ModuleContext.EditUrl("popUp", "true", "AdminPanel", "controller", "AdminPanel", "action", "AdminPanel"); + } + } + else + { + if (Request.QueryString["SkinSrc"] == null) + { + mustRedirect = true; + newUrl = ModuleContext.EditUrl("", "", "AdminPanel", "controller", "AdminPanel", "action", "AdminPanel", "SkinSrc=[G]Skins%2f_default%2fNo+Skin&ContainerSrc=[G]Containers%2f_default%2fNo+Container"); + } + } + + if (!User.IsInRole("MyDnnSupportAgent")) + { + //add agent role to current user + var role = RoleController.Instance.GetRoleByName(PortalSettings.PortalId, "MyDnnSupportAgent"); + RoleController.AddUserRole(User, role, PortalSettings, DotNetNuke.Security.Roles.RoleStatus.Approved, Null.NullDate, Null.NullDate, true, false); + } + + var model = new ModuleConfigStatusViewModel(); + model.VisitorsOnlineEnabled = bool.Parse(PortalController.GetPortalSetting("MyDnnVisitorsOnlineEnabled", PortalSettings.PortalId, "false")); ; + model.LiveChatEnabled = bool.Parse(PortalController.GetPortalSetting("MyDnnLiveChatEnabled", PortalSettings.PortalId, "false")); ; + + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); + if (moduleID != -1) + { + var objModuleInfo = new ModuleController().GetModule(moduleID); + var Settings = objModuleInfo.ModuleSettings; + + model.ModuleID = objModuleInfo.ModuleID; + model.TabID = objModuleInfo.TabID; + model.BasicSettingsUpdated = Settings["UpdateBasicSettings"] != null ? bool.Parse(Settings["UpdateBasicSettings"].ToString()) : false; + model.WidgetSettingsUpdated = Settings["UpdateWidgetSettings"] != null ? bool.Parse(Settings["UpdateWidgetSettings"].ToString()) : false; ; + } + + if (mustRedirect) + return Redirect(newUrl); + else + return View(model); + } + } +} diff --git a/LiveChat/Hubs/LiveChatHub.cs b/LiveChat/Hubs/LiveChatHub.cs index b634ecd..19579fc 100644 --- a/LiveChat/Hubs/LiveChatHub.cs +++ b/LiveChat/Hubs/LiveChatHub.cs @@ -1,727 +1,751 @@ -// Copyright (c) MyDnn Group. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Threading.Tasks; -using DotNetNuke.Entities.Portals; -using System.Threading; -using MyDnn.VisitorsOnline; -using System.Collections; -using System.Xml; -using System.IO; -using Microsoft.AspNet.SignalR; -using Microsoft.AspNet.SignalR.Hubs; -using MyDnn.VisitorsOnline.Api; -using MyDnn.Modules.Support.LiveChat.Models; -using MyDnn.Modules.Support.LiveChat.Components.Enums; -using MyDnn.Modules.Support.LiveChat.Components; -using MyDnn.Modules.Support.LiveChat.ViewModels; -using MyDnn.VisitorsOnline.Hubs; -using DotNetNuke.Common; -using DotNetNuke.Entities.Modules; - -namespace MyDnn.Modules.Support.LiveChat.Hubs -{ - /// - /// - /// - [HubName("MyDnnSupportLiveChatHub")] - public class LiveChatHub : Hub - { - #region Variable && Properties - - /// - /// - /// - private string UserName - { - get - { - if (Context.User.Identity.IsAuthenticated) - { - return Context.User.Identity.Name; - } - else - return string.Empty; - } - } - - /// - /// - /// - private static Timer LiveChatRequestTimer { get; set; } - - /// - /// - /// - private const string DepartmentAgentsGroupName = "LiveChat-Agents-Department-"; - - /// - /// - /// - private const string AgentGroupName = "LiveChat-Agent-"; - - /// - /// - /// - private const string AllAgentsGroupName = "LiveChat-AllAgents"; - - #endregion - - #region Override Methods - - /// - /// - /// - /// - public override Task OnConnected() - { - return base.OnConnected(); - } - - /// - /// - /// - /// - public override Task OnReconnected() - { - return base.OnReconnected(); - } - - /// - /// - /// - /// - /// - public override Task OnDisconnected(bool stopCalled) - { - return base.OnDisconnected(stopCalled); - } - - #endregion - - #region Hub Methods - - /// - /// - /// - /// - /// - /// - /// - public object JoinAgent(int portalID, bool loadIncommingLiveChats, bool loadLiveChats) - { - var agent = AgentManager.Instance.GetAgentByUserName(portalID, UserName); - if (agent == null) return null; - - var context = GlobalHost.ConnectionManager.GetHubContext(); - - Groups.Add(Context.ConnectionId, AllAgentsGroupName); - Groups.Add(Context.ConnectionId, AgentGroupName + agent.UserID); - - var agentDepartments = DepartmentAgentManager.Instance.GetAgentDepartments(agent.AgentID); - foreach (var department in agentDepartments) - { - Groups.Add(Context.ConnectionId, DepartmentAgentsGroupName + department.DepartmentID); - - //in bakhsh enghad pichidas ke hata nemitonam tozih bedam !! - context.Groups.Add(Context.ConnectionId, "MyDnnLiveChatAgents-" + department.DepartmentID); - } - - //hazf tamame darkhast haye chati ke visitorash rafte peye karash - LiveChatManager.Instance.CloseLeftLiveChats(portalID); - - List livechats = null; - IEnumerable incomingLiveChats = null; - - if (loadIncommingLiveChats) - { - incomingLiveChats = LiveChatManager.Instance.GetIncomingLiveChats(portalID); - } - - if (loadLiveChats) - { - livechats = new List(); - - var currentLiveChats = LiveChatManager.Instance.GetCurrentLiveChatsByAgent(portalID, agent.UserID); - foreach (LiveChatInfo objLiveChatInfo in currentLiveChats) - { - var livechat = GetLiveChatViewModel(objLiveChatInfo); - livechat.ChatStarted = true; - livechats.Add(livechat); - } - } - - return new { IncomingLiveChats = incomingLiveChats.Select(i => new { LiveChatID = i.LiveChatID, VisitorGUID = i.VisitorGUID }), LiveChats = livechats, Me = agent }; - } - - /// - /// - /// - /// - /// - /// - public object JoinVisitor(int portalID, string visitorGUID) - { - Groups.Add(Context.ConnectionId, portalID + "-" + visitorGUID); - - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", portalID, "-1")); - Requires.NotNegative("moduleID", moduleID); - var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; - - var currentLiveChat = LiveChatManager.Instance.GetCurrentLiveChatByVisitor(portalID, visitorGUID); - - LiveChatViewModel livechat = null; - - if (currentLiveChat != null) - { - if (currentLiveChat.LastMessageDate != null && (DateTime.Now - currentLiveChat.LastMessageDate).TotalHours < 10) // in ghesmat baraye in ast ke agar az akharin post visitor bish az 10 saat gozashte bashad live chat ra neshan nadahad - { - livechat = GetLiveChatViewModel(currentLiveChat); - } - else - LiveChatManager.Instance.CloseLiveChat(currentLiveChat.LiveChatID, false); - } - - return livechat; - } - - /// - /// - /// - /// - /// - public int StartLiveChatByVisitor(LiveChatViewModel livechat) - { - if (LiveChatManager.Instance.hasVisitorOpenedLiveChat(livechat.PortalID, livechat.Visitor.VisitorGUID)) - return 0; - - var visitor = VisitorsOnlineApi.Instance.GetVisitorByGUID(livechat.PortalID, livechat.Visitor.VisitorGUID); - - var objLiveChatInfo = new LiveChatInfo() - { - PortalID = livechat.PortalID, - VisitorGUID = livechat.Visitor.VisitorGUID, - VisitorName = livechat.Visitor.DisplayName, - VisitorEmail = livechat.Visitor.Email, - VisitorUserID = visitor.UserID, - VisitorIP = visitor.IP, - VisitorUserAgent = visitor.UserAgent, - VisitorMessage = livechat.Message, - CreateDate = DateTime.Now, - CloseDate = DateTime.MaxValue, - IsClosed = false, - }; - int livechatID = LiveChatManager.Instance.AddLiveChat(objLiveChatInfo); - LiveChatDepartmentManager.Instance.AddLiveChatDepartment(new LiveChatDepartmentInfo() - { - LiveChatID = livechatID, - DepartmentID = livechat.Departments.First().DepartmentID, - CreateDate = DateTime.Now - }); - - //create messages - var objLiveChatMessageInfo = new LiveChatMessageInfo() - { - LiveChatID = livechatID, - SentBy = MessageSentBy.System, - CreateDate = DateTime.Now, - MessageType = MessageType.Text, - Message = "Chat started", - }; - LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); - - if (!string.IsNullOrEmpty(livechat.Message)) - { - objLiveChatMessageInfo = new LiveChatMessageInfo() - { - LiveChatID = livechatID, - SentBy = MessageSentBy.Visitor, - CreateDate = DateTime.Now, - MessageType = MessageType.Text, - Message = livechat.Message - }; - LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); - } - - livechat = GetLiveChatViewModel(objLiveChatInfo); - - //ersale live chat kamel shode be khode visitor(darkhast konande chat) - Clients.Group(livechat.PortalID + "-" + visitor.VisitorGUID).startLiveChat(livechat); - //send live chat request to agents - var department = livechat.Departments.First(); - Clients.Group(DepartmentAgentsGroupName + department.DepartmentID).incomingLiveChat(livechatID, visitor.VisitorGUID, livechat.Message, "add"); - - var context = GlobalHost.ConnectionManager.GetHubContext(); - context.Clients.Group("MyDnnLiveChatAgents-" + department.DepartmentID).invokeScript(string.Format("mydnnLiveChatRequests({0},'add');", livechatID)); - - //update visitor info in visitor list - visitor.DisplayName = livechat.Visitor.DisplayName; - visitor.Email = livechat.Visitor.Email; - - //eslah shavad - ///VisitorsOnlineApi.Instance.UpdateVisitorOnline(livechat.PortalID, visitor.VisitorGUID, visitor.UserName, visitor.DisplayName, visitor.Email, visitor.LastURL, Context.ConnectionId, true); - //var context = GlobalHost.ConnectionManager.GetHubContext(); - ///context.Clients.Group("MyDnnVisitorsOnline").updateVisitorInfo(visitor); - - return livechatID; - } - - /// - /// - /// - /// - /// - /// - public async Task InitialLiveChatForAgent(int livechatID, bool reInitialize = false) - { - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - - if (objLiveChatInfo != null) - { - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); - Requires.NotNegative("moduleID", moduleID); - var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; - - var agent = AgentManager.Instance.GetAgentByUserName(objLiveChatInfo.PortalID, this.UserName); - bool isAdmin = agent.IsAdmin; - - var livechat = GetLiveChatViewModel(objLiveChatInfo); - - //if (reInitialize) - //agentUserID = agent.UserID; - - if (!livechat.Agents.Any() || Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.AllAgentsInDepartment.ToString() || - (Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.OnlyCurrentAgentsAndAdmin.ToString() && isAdmin)) - { - await Clients.Group(AgentGroupName + agent.UserID).initialLiveChatForAgent(livechat); - } - } - } - - /// - /// - /// - /// - public void StartLiveChatByAgent(int livechatID) - { - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - if (objLiveChatInfo != null) - { - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); - Requires.NotNegative("moduleID", moduleID); - var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; - - var livechat = GetLiveChatViewModel(objLiveChatInfo); - - var meAsAgent = AgentManager.Instance.GetAgentByUserName(objLiveChatInfo.PortalID, this.UserName); - - Clients.Group(DepartmentAgentsGroupName + livechat.Departments.First().DepartmentID).incomingLiveChat(objLiveChatInfo.LiveChatID, null, null, "remove"); - - if (!livechat.Agents.Any()) - { - //in ghesmat baraye in ast ke pas az shoro goftego tavasote karshenas livechat az tamame karshenas hai ke permission didan goftefo ra nadaran hazf shavad - if (Settings["AgentsViewPermission"].ToString() != LiveChatViewPermission.AllAgentsInDepartment.ToString()) - { - foreach (var agent in DepartmentAgentManager.Instance.GetDepartmentAgents(livechat.Departments.First().DepartmentID)) - { - if (meAsAgent.UserID == agent.UserID) continue; - - var objAgentView = AgentManager.Instance.GetAgentByUserID(objLiveChatInfo.PortalID, agent.UserID); - bool isAdmin = objAgentView.IsAdmin; - - if (Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.OnlyCurrentAgents.ToString() || - (Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.OnlyCurrentAgentsAndAdmin.ToString() && !isAdmin)) - { - Clients.Group(AgentGroupName + agent.UserID).removeLiveChat(objLiveChatInfo.LiveChatID); - } - } - } - } - - AgentHasJoin(objLiveChatInfo, meAsAgent, true, true); - - Clients.Group(AllAgentsGroupName).visitorIsChatting(objLiveChatInfo.VisitorGUID); - } - } - - /// - /// - /// - /// - /// - /// - /// - public int SendMessage(int portalID, LiveChatMessageInfo message, bool reOpen = false) - { - try - { - if (message.SentBy == MessageSentBy.System || message.SentBy == MessageSentBy.Visitor) - message.AgentUserID = -1; - else - { - message.AgentUserID = AgentManager.Instance.GetAgentByUserName(portalID, UserName).UserID; - } - - message.CreateDate = DateTime.Now; - message.MessageID = LiveChatMessageManager.Instance.AddMessage(message); - - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(message.LiveChatID); - - //ersal payam be visitor be joz tab jari - Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID, Context.ConnectionId).reciveMessage(message); - - //ersal payam be agent ha - var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); - if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad - { - var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); - Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).reciveMessage(message); - } - else - { - foreach (var agent in agents) - { - Clients.Group(AgentGroupName + agent.UserID, Context.ConnectionId).reciveMessage(message); - } - } - - if (objLiveChatInfo.IsClosed) - { - //re open live chat -- next version :) - } - - return message.MessageID; - } - catch - { - return -1; - } - } - - public void VisitorIsTyping(int portalID, int livechatID) - { - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - - var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); - if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad - { - var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); - Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).visitorIsTyping(); - } - else - { - foreach (var agent in agents) - { - Clients.Group(AgentGroupName + agent.UserID).visitorIsTyping(); - } - } - } - - /// - /// - /// - /// - /// - public void SeenMessage(int portalID, LiveChatMessageInfo message) - { - LiveChatMessageManager.Instance.SeenMessage(message.MessageID); - - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(message.LiveChatID); - Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).seenMessage(message.MessageID); - } - - /// - /// - /// - /// - /// - /// - public bool RateChat(int liveChatID, LiveChatRating rate) - { - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(liveChatID); - - objLiveChatInfo.Rate = rate; - LiveChatManager.Instance.UpdateLiveChat(objLiveChatInfo); - - return true; - } - - /// - /// - /// - /// - public void VisitorHasLeftChat(int livechatID) - { - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - LiveChatManager.Instance.CloseLiveChat(objLiveChatInfo.LiveChatID, false); - - var objLiveChatMessageInfo = new LiveChatMessageInfo() - { - LiveChatID = objLiveChatInfo.LiveChatID, - CreateDate = DateTime.Now, - SentBy = MessageSentBy.System, - MessageType = MessageType.Text, - Message = "Visitor has left chat", - }; - int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); - objLiveChatMessageInfo.MessageID = messageID; - - //ersal payam be agent ha - var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); - if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad - { - var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); - Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).reciveMessage(objLiveChatMessageInfo); - } - else - { - foreach (var agent in agents) - { - Clients.Group(AgentGroupName + agent.UserID).reciveMessage(objLiveChatMessageInfo); - } - } - } - - /// - /// - /// - /// - /// - /// - /// - /// - public object VisitorReconnectedToLiveChat(int portalID, int livechatID, int agentUserID, int lastMessageID) - { - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - if (objLiveChatInfo != null) - { - var messages = LiveChatMessageManager.Instance.GetUnreadMessages(objLiveChatInfo.LiveChatID, lastMessageID); //daryaft payamhai ke visitor baad az ghat shodane internetash nadide ast - - //if (objLiveChatInfo.AgentUserID != agentUserID) // in yani visitor be karshenasi vasl nabode va zamani ke internetesh ghat mishavad yek karshenas be darkhastash pasokh mosbat midahad - //{ - // AgentHasJoin(objLiveChatInfo, null, true, false); - //} - - return new { IsClosed = objLiveChatInfo.IsClosed, Messages = messages }; - } - return null; - } - - /// - /// - /// - /// - /// - /// - public bool CloseLiveChatByVisitor(int portalID, int livechatID) - { - var isClosed = false; - - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - if (objLiveChatInfo != null && !objLiveChatInfo.IsClosed) - { - LiveChatManager.Instance.CloseLiveChat(livechatID, false); - - var objLiveChatMessageInfo = new LiveChatMessageInfo() - { - LiveChatID = objLiveChatInfo.LiveChatID, - CreateDate = DateTime.Now, - SentBy = MessageSentBy.System, - MessageType = MessageType.Text, - Message = "Visitor closed the live chat", - }; - int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); - objLiveChatMessageInfo.MessageID = messageID; - - Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).closeLiveChatByVisitor(objLiveChatInfo.LiveChatID); - Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).reciveMessage(objLiveChatMessageInfo); - - //ersal payam be agent ha - var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); - if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad - { - var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); - Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).reciveMessage(objLiveChatMessageInfo); - Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).closeLiveChatByVisitor(objLiveChatInfo.LiveChatID); - } - else - { - foreach (var agent in agents) - { - Clients.Group(AgentGroupName + agent.UserID).reciveMessage(objLiveChatMessageInfo); - Clients.Group(AgentGroupName + agent.UserID).closeLiveChatByVisitor(objLiveChatInfo.LiveChatID); - } - } - - isClosed = true; - } - return isClosed; - } - - /// - /// - /// - /// - /// - /// - public bool CloseLiveChatByAgent(int portalID, int livechatID) - { - var isClosed = false; - - var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); - if (objLiveChatInfo != null && !objLiveChatInfo.IsClosed) - { - LiveChatManager.Instance.CloseLiveChat(livechatID, true); - - var objLiveChatMessageInfo = new LiveChatMessageInfo() - { - LiveChatID = objLiveChatInfo.LiveChatID, - CreateDate = DateTime.Now, - SentBy = MessageSentBy.System, - MessageType = MessageType.Text, - Message = "Agent closed the live chat", - }; - int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); - objLiveChatMessageInfo.MessageID = messageID; - - Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).closeLiveChatByAgent(objLiveChatInfo.LiveChatID); - Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).reciveMessage(objLiveChatMessageInfo); - - //ersal payam be agent ha - var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); - foreach (var agent in agents) - { - Clients.Group(AgentGroupName + agent.UserID, Context.ConnectionId).reciveMessage(objLiveChatMessageInfo); - Clients.Group(AgentGroupName + agent.UserID, Context.ConnectionId).closeLiveChatByAgent(objLiveChatInfo.LiveChatID); - } - - isClosed = true; - } - return isClosed; - } - - /// - /// - /// - /// - /// - /// - public void AgentReconnectedToLiveChat(int portalID, int livechatID, DateTime lastMessageDate) - { - // -- next version :) - } - - #endregion - - #region Private Methods - - /// - /// - /// - /// - /// - private LiveChatViewModel GetLiveChatViewModel(LiveChatInfo objLiveChatInfo) - { - var livechat = new LiveChatViewModel(); - livechat.LiveChatID = objLiveChatInfo.LiveChatID; - livechat.PortalID = objLiveChatInfo.PortalID; - - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); - Requires.NotNegative("moduleID", moduleID); - var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; - - //Visitor - livechat.Visitor = new LiveChatVisitorViewModel() - { - UserID = objLiveChatInfo.VisitorUserID, - VisitorGUID = objLiveChatInfo.VisitorGUID, - DisplayName = objLiveChatInfo.VisitorName, - Email = objLiveChatInfo.VisitorEmail, - IP = objLiveChatInfo.VisitorIP, - UserAgent = objLiveChatInfo.VisitorUserAgent, - Avatar = (Settings["VisitorDefaultAvatar"] != null ? Settings["VisitorDefaultAvatar"].ToString() : string.Empty) - }; - var visitor = VisitorsOnlineApi.Instance.GetVisitorByGUID(objLiveChatInfo.PortalID, objLiveChatInfo.VisitorGUID); - if (visitor != null) - { - if (visitor.UserID > 0) livechat.Visitor.Avatar = DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + visitor.UserID); - livechat.Visitor.LastURL = visitor.LastURL; - livechat.Visitor.ReferrerURL = visitor.ReferrerURL; - livechat.Visitor.PastVisits = visitor.TotalConnections; - livechat.Visitor.OnlineDate = visitor.OnlineDate; - } - - //Departments - livechat.Departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartmentsViewModel(objLiveChatInfo.PortalID, objLiveChatInfo.LiveChatID); - - //Agents - livechat.Agents = LiveChatAgentManager.Instance.GetLiveChatAgentsViewModel(objLiveChatInfo.PortalID, objLiveChatInfo.LiveChatID); - livechat.AgentDefaultAvatar = (Settings["AgentDefaultAvatar"] != null ? Settings["AgentDefaultAvatar"].ToString() : string.Empty); - - //Messages - var messages = LiveChatMessageManager.Instance.GetMessages(objLiveChatInfo.LiveChatID); - livechat.Messages = messages; - - livechat.Rate = objLiveChatInfo.Rate; - - livechat.IsClosed = objLiveChatInfo.IsClosed; - - return livechat; - } - - /// - /// - /// - /// - /// - /// - /// - private void AgentHasJoin(LiveChatInfo objLiveChatInfo, AgentView objAgentView, bool sendToVisitor, bool sendToAgent) - { - var agent = new LiveChatAgentViewModel() - { - AgentID = objAgentView.AgentID, - UserID = objAgentView.UserID, - DisplayName = objAgentView.DisplayName, - Email = objAgentView.Email, - Avatar = DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + objAgentView.UserID), - IsOnline = VisitorsOnlineApi.Instance.IsVisitorOnline(objLiveChatInfo.PortalID, objAgentView.UserID), - JoinDate = DateTime.Now - }; - - LiveChatAgentManager.Instance.AddLiveChatAgent(new LiveChatAgentInfo() { AgentID = agent.AgentID, UserID = agent.UserID, LiveChatID = objLiveChatInfo.LiveChatID, JoinDate = DateTime.Now }); - - var objLiveChatMessageInfo = new LiveChatMessageInfo() - { - LiveChatID = objLiveChatInfo.LiveChatID, - SentBy = MessageSentBy.System, - CreateDate = DateTime.Now, - MessageType = MessageType.Text, - Message = objAgentView.DisplayName + " join chat" - }; - int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); - objLiveChatMessageInfo.MessageID = messageID; - - if (sendToVisitor) - { - Clients.Group(objLiveChatInfo.PortalID + "-" + objLiveChatInfo.VisitorGUID).agentHasJoin(objLiveChatInfo.LiveChatID, agent); - Clients.Group(objLiveChatInfo.PortalID + "-" + objLiveChatInfo.VisitorGUID).reciveMessage(objLiveChatMessageInfo); - } - - if (sendToAgent) - { - foreach (var item in LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID)) - { - Clients.Group(AgentGroupName + item.UserID).agentHasJoin(objLiveChatInfo.LiveChatID, agent); - Clients.Group(AgentGroupName + item.UserID).reciveMessage(objLiveChatMessageInfo); - } - } - } - - #endregion - } +// Copyright (c) MyDnn Group. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Threading.Tasks; +using DotNetNuke.Entities.Portals; +using System.Threading; +using MyDnn.VisitorsOnline; +using System.Collections; +using System.Xml; +using System.IO; +using Microsoft.AspNet.SignalR; +using Microsoft.AspNet.SignalR.Hubs; +using MyDnn.VisitorsOnline.Api; +using MyDnn.Modules.Support.LiveChat.Models; +using MyDnn.Modules.Support.LiveChat.Components.Enums; +using MyDnn.Modules.Support.LiveChat.Components; +using MyDnn.Modules.Support.LiveChat.ViewModels; +using MyDnn.VisitorsOnline.Hubs; +using DotNetNuke.Common; +using DotNetNuke.Entities.Modules; + +namespace MyDnn.Modules.Support.LiveChat.Hubs +{ + /// + /// + /// + [HubName("MyDnnSupportLiveChatHub")] + public class LiveChatHub : Hub + { + #region Variable && Properties + + /// + /// + /// + private string UserName + { + get + { + if (Context.User.Identity.IsAuthenticated) + { + return Context.User.Identity.Name; + } + else + return string.Empty; + } + } + + /// + /// + /// + private static Timer LiveChatRequestTimer { get; set; } + + /// + /// + /// + private const string DepartmentAgentsGroupName = "LiveChat-Agents-Department-"; + + /// + /// + /// + private const string AgentGroupName = "LiveChat-Agent-"; + + /// + /// + /// + private const string AllAgentsGroupName = "LiveChat-AllAgents"; + + #endregion + + #region Override Methods + + /// + /// + /// + /// + public override Task OnConnected() + { + return base.OnConnected(); + } + + /// + /// + /// + /// + public override Task OnReconnected() + { + return base.OnReconnected(); + } + + /// + /// + /// + /// + /// + public override Task OnDisconnected(bool stopCalled) + { + return base.OnDisconnected(stopCalled); + } + + #endregion + + #region Hub Methods + + /// + /// + /// + /// + /// + /// + /// + public object JoinAgent(int portalID, bool loadIncommingLiveChats, bool loadLiveChats) + { + var agent = AgentManager.Instance.GetAgentByUserName(portalID, UserName); + if (agent == null) return null; + + var context = GlobalHost.ConnectionManager.GetHubContext(); + + Groups.Add(Context.ConnectionId, AllAgentsGroupName); + Groups.Add(Context.ConnectionId, AgentGroupName + agent.UserID); + + var agentDepartments = DepartmentAgentManager.Instance.GetAgentDepartments(agent.AgentID); + foreach (var department in agentDepartments) + { + Groups.Add(Context.ConnectionId, DepartmentAgentsGroupName + department.DepartmentID); + + //in bakhsh enghad pichidas ke hata nemitonam tozih bedam !! + context.Groups.Add(Context.ConnectionId, "MyDnnLiveChatAgents-" + department.DepartmentID); + } + + //hazf tamame darkhast haye chati ke visitorash rafte peye karash + LiveChatManager.Instance.CloseLeftLiveChats(portalID); + + List livechats = null; + IEnumerable incomingLiveChats = null; + + if (loadIncommingLiveChats) + { + incomingLiveChats = LiveChatManager.Instance.GetIncomingLiveChats(portalID); + } + + if (loadLiveChats) + { + livechats = new List(); + + var currentLiveChats = LiveChatManager.Instance.GetCurrentLiveChatsByAgent(portalID, agent.UserID); + foreach (LiveChatInfo objLiveChatInfo in currentLiveChats) + { + var livechat = GetLiveChatViewModel(objLiveChatInfo); + livechat.ChatStarted = true; + livechats.Add(livechat); + } + } + + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", portalID, "-1")); + var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; + + return new + { + IncomingLiveChats = incomingLiveChats.Select(i => new { LiveChatID = i.LiveChatID, VisitorGUID = i.VisitorGUID }), + LiveChats = livechats, + Me = agent, + Settings = Settings + }; + } + + /// + /// + /// + /// + /// + /// + public object JoinVisitor(int portalID, string visitorGUID) + { + Groups.Add(Context.ConnectionId, portalID + "-" + visitorGUID); + + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", portalID, "-1")); + Requires.NotNegative("moduleID", moduleID); + var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; + + var currentLiveChat = LiveChatManager.Instance.GetCurrentLiveChatByVisitor(portalID, visitorGUID); + + LiveChatViewModel livechat = null; + + if (currentLiveChat != null) + { + if (currentLiveChat.LastMessageDate != null && (DateTime.Now - currentLiveChat.LastMessageDate).TotalHours < 10) // in ghesmat baraye in ast ke agar az akharin post visitor bish az 10 saat gozashte bashad live chat ra neshan nadahad + { + livechat = GetLiveChatViewModel(currentLiveChat); + } + else + LiveChatManager.Instance.CloseLiveChat(currentLiveChat.LiveChatID, false); + } + + return livechat; + } + + /// + /// + /// + /// + /// + public int StartLiveChatByVisitor(LiveChatViewModel livechat) + { + if (LiveChatManager.Instance.hasVisitorOpenedLiveChat(livechat.PortalID, livechat.Visitor.VisitorGUID)) + return 0; + + var visitor = VisitorsOnlineApi.Instance.GetVisitorByGUID(livechat.PortalID, livechat.Visitor.VisitorGUID); + + var objLiveChatInfo = new LiveChatInfo() + { + PortalID = livechat.PortalID, + VisitorGUID = livechat.Visitor.VisitorGUID, + VisitorName = livechat.Visitor.DisplayName, + VisitorEmail = livechat.Visitor.Email, + VisitorUserID = visitor.UserID, + VisitorIP = visitor.IP, + VisitorUserAgent = visitor.UserAgent, + VisitorMessage = livechat.Message, + CreateDate = DateTime.Now, + CloseDate = DateTime.MaxValue, + IsClosed = false, + }; + int livechatID = LiveChatManager.Instance.AddLiveChat(objLiveChatInfo); + LiveChatDepartmentManager.Instance.AddLiveChatDepartment(new LiveChatDepartmentInfo() + { + LiveChatID = livechatID, + DepartmentID = livechat.Departments.First().DepartmentID, + CreateDate = DateTime.Now + }); + + //create messages + var objLiveChatMessageInfo = new LiveChatMessageInfo() + { + LiveChatID = livechatID, + SentBy = MessageSentBy.System, + CreateDate = DateTime.Now, + MessageType = MessageType.Text, + Message = "Chat started", + }; + LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); + + if (!string.IsNullOrEmpty(livechat.Message)) + { + objLiveChatMessageInfo = new LiveChatMessageInfo() + { + LiveChatID = livechatID, + SentBy = MessageSentBy.Visitor, + CreateDate = DateTime.Now, + MessageType = MessageType.Text, + Message = livechat.Message + }; + LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); + } + + livechat = GetLiveChatViewModel(objLiveChatInfo); + + //ersale live chat kamel shode be khode visitor(darkhast konande chat) + Clients.Group(livechat.PortalID + "-" + visitor.VisitorGUID).startLiveChat(livechat); + //send live chat request to agents + var department = livechat.Departments.First(); + Clients.Group(DepartmentAgentsGroupName + department.DepartmentID).incomingLiveChat(livechatID, visitor.VisitorGUID, livechat.Message, "add"); + + var context = GlobalHost.ConnectionManager.GetHubContext(); + context.Clients.Group("MyDnnLiveChatAgents-" + department.DepartmentID).invokeScript(string.Format("mydnnLiveChatRequests({0},'add');", livechatID)); + + //update visitor info in visitor list + visitor.DisplayName = livechat.Visitor.DisplayName; + visitor.Email = livechat.Visitor.Email; + + //eslah shavad + ///VisitorsOnlineApi.Instance.UpdateVisitorOnline(livechat.PortalID, visitor.VisitorGUID, visitor.UserName, visitor.DisplayName, visitor.Email, visitor.LastURL, Context.ConnectionId, true); + //var context = GlobalHost.ConnectionManager.GetHubContext(); + ///context.Clients.Group("MyDnnVisitorsOnline").updateVisitorInfo(visitor); + + return livechatID; + } + + /// + /// + /// + /// + /// + /// + public async Task InitialLiveChatForAgent(int livechatID, bool reInitialize = false) + { + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + + if (objLiveChatInfo != null) + { + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); + Requires.NotNegative("moduleID", moduleID); + var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; + + var agent = AgentManager.Instance.GetAgentByUserName(objLiveChatInfo.PortalID, this.UserName); + bool isAdmin = agent.IsAdmin; + + var livechat = GetLiveChatViewModel(objLiveChatInfo); + + //if (reInitialize) + //agentUserID = agent.UserID; + + if (!livechat.Agents.Any() || Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.AllAgentsInDepartment.ToString() || + (Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.OnlyCurrentAgentsAndAdmin.ToString() && isAdmin)) + { + await Clients.Group(AgentGroupName + agent.UserID).initialLiveChatForAgent(livechat); + } + } + } + + /// + /// + /// + /// + public void StartLiveChatByAgent(int livechatID) + { + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + if (objLiveChatInfo != null) + { + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); + Requires.NotNegative("moduleID", moduleID); + var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; + + var livechat = GetLiveChatViewModel(objLiveChatInfo); + + var meAsAgent = AgentManager.Instance.GetAgentByUserName(objLiveChatInfo.PortalID, this.UserName); + + Clients.Group(DepartmentAgentsGroupName + livechat.Departments.First().DepartmentID).incomingLiveChat(objLiveChatInfo.LiveChatID, null, null, "remove"); + + if (!livechat.Agents.Any()) + { + //in ghesmat baraye in ast ke pas az shoro goftego tavasote karshenas livechat az tamame karshenas hai ke permission didan goftefo ra nadaran hazf shavad + if (Settings["AgentsViewPermission"].ToString() != LiveChatViewPermission.AllAgentsInDepartment.ToString()) + { + foreach (var agent in DepartmentAgentManager.Instance.GetDepartmentAgents(livechat.Departments.First().DepartmentID)) + { + if (meAsAgent.UserID == agent.UserID) continue; + + var objAgentView = AgentManager.Instance.GetAgentByUserID(objLiveChatInfo.PortalID, agent.UserID); + bool isAdmin = objAgentView.IsAdmin; + + if (Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.OnlyCurrentAgents.ToString() || + (Settings["AgentsViewPermission"].ToString() == LiveChatViewPermission.OnlyCurrentAgentsAndAdmin.ToString() && !isAdmin)) + { + Clients.Group(AgentGroupName + agent.UserID).removeLiveChat(objLiveChatInfo.LiveChatID); + } + } + } + } + + AgentHasJoin(objLiveChatInfo, meAsAgent, true, true); + + Clients.Group(AllAgentsGroupName).visitorIsChatting(objLiveChatInfo.VisitorGUID); + } + } + + /// + /// + /// + /// + /// + /// + /// + public int SendMessage(int portalID, LiveChatMessageInfo message, bool reOpen = false) + { + try + { + if (message.SentBy == MessageSentBy.System || message.SentBy == MessageSentBy.Visitor) + message.AgentUserID = -1; + else + { + message.AgentUserID = AgentManager.Instance.GetAgentByUserName(portalID, UserName).UserID; + } + + message.CreateDate = DateTime.Now; + message.MessageID = LiveChatMessageManager.Instance.AddMessage(message); + + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(message.LiveChatID); + + //ersal payam be visitor be joz tab jari + Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID, Context.ConnectionId).reciveMessage(message); + + //ersal payam be agent ha + var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); + if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad + { + var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); + Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).reciveMessage(message); + } + else + { + foreach (var agent in agents) + { + Clients.Group(AgentGroupName + agent.UserID, Context.ConnectionId).reciveMessage(message); + } + } + + if (objLiveChatInfo.IsClosed) + { + //re open live chat -- next version :) + } + + return message.MessageID; + } + catch + { + return -1; + } + } + + /// + /// + /// + /// + /// + public void VisitorIsTyping(int portalID, int livechatID) + { + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + + var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); + if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad + { + var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); + Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).visitorIsTyping(); + } + else + { + foreach (var agent in agents) + { + Clients.Group(AgentGroupName + agent.UserID).visitorIsTyping(); + } + } + } + + /// + /// + /// + /// + /// + public void AgentIsTyping(int portalID, string visitorGUID) + { + Clients.Group(portalID + "-" + visitorGUID).agentIsTyping(); + } + + /// + /// + /// + /// + /// + public void SeenMessage(int portalID, LiveChatMessageInfo message) + { + LiveChatMessageManager.Instance.SeenMessage(message.MessageID); + + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(message.LiveChatID); + Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).seenMessage(message.MessageID); + } + + /// + /// + /// + /// + /// + /// + public bool RateChat(int liveChatID, LiveChatRating rate) + { + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(liveChatID); + + objLiveChatInfo.Rate = rate; + LiveChatManager.Instance.UpdateLiveChat(objLiveChatInfo); + + return true; + } + + /// + /// + /// + /// + public void VisitorHasLeftChat(int livechatID) + { + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + LiveChatManager.Instance.CloseLiveChat(objLiveChatInfo.LiveChatID, false); + + var objLiveChatMessageInfo = new LiveChatMessageInfo() + { + LiveChatID = objLiveChatInfo.LiveChatID, + CreateDate = DateTime.Now, + SentBy = MessageSentBy.System, + MessageType = MessageType.Text, + Message = "Visitor has left chat", + }; + int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); + objLiveChatMessageInfo.MessageID = messageID; + + //ersal payam be agent ha + var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); + if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad + { + var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); + Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).reciveMessage(objLiveChatMessageInfo); + } + else + { + foreach (var agent in agents) + { + Clients.Group(AgentGroupName + agent.UserID).reciveMessage(objLiveChatMessageInfo); + } + } + } + + /// + /// + /// + /// + /// + /// + /// + /// + public object VisitorReconnectedToLiveChat(int portalID, int livechatID, int agentUserID, int lastMessageID) + { + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + if (objLiveChatInfo != null) + { + var messages = LiveChatMessageManager.Instance.GetUnreadMessages(objLiveChatInfo.LiveChatID, lastMessageID); //daryaft payamhai ke visitor baad az ghat shodane internetash nadide ast + + //if (objLiveChatInfo.AgentUserID != agentUserID) // in yani visitor be karshenasi vasl nabode va zamani ke internetesh ghat mishavad yek karshenas be darkhastash pasokh mosbat midahad + //{ + // AgentHasJoin(objLiveChatInfo, null, true, false); + //} + + return new { IsClosed = objLiveChatInfo.IsClosed, Messages = messages }; + } + return null; + } + + /// + /// + /// + /// + /// + /// + public void AgentReconnectedToLiveChat(int portalID, int livechatID, DateTime lastMessageDate) + { + // -- next version :) + } + + /// + /// + /// + /// + /// + /// + public bool CloseLiveChatByVisitor(int portalID, int livechatID) + { + var isClosed = false; + + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + if (objLiveChatInfo != null && !objLiveChatInfo.IsClosed) + { + LiveChatManager.Instance.CloseLiveChat(livechatID, false); + + var objLiveChatMessageInfo = new LiveChatMessageInfo() + { + LiveChatID = objLiveChatInfo.LiveChatID, + CreateDate = DateTime.Now, + SentBy = MessageSentBy.System, + MessageType = MessageType.Text, + Message = "Visitor closed the live chat", + }; + int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); + objLiveChatMessageInfo.MessageID = messageID; + + Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).closeLiveChatByVisitor(objLiveChatInfo.LiveChatID); + Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).reciveMessage(objLiveChatMessageInfo); + + //ersal payam be agent ha + var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); + if (!agents.Any(a => a.hasLeft == false)) // agar hich agenti join nashode bayad payam roye tamame agenthaye department ersal shavad + { + var departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartments(objLiveChatInfo.LiveChatID); + Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).reciveMessage(objLiveChatMessageInfo); + Clients.Group(DepartmentAgentsGroupName + departments.First().DepartmentID).closeLiveChatByVisitor(objLiveChatInfo.LiveChatID); + } + else + { + foreach (var agent in agents) + { + Clients.Group(AgentGroupName + agent.UserID).reciveMessage(objLiveChatMessageInfo); + Clients.Group(AgentGroupName + agent.UserID).closeLiveChatByVisitor(objLiveChatInfo.LiveChatID); + } + } + + isClosed = true; + } + return isClosed; + } + + /// + /// + /// + /// + /// + /// + public bool CloseLiveChatByAgent(int portalID, int livechatID) + { + var isClosed = false; + + var objLiveChatInfo = LiveChatManager.Instance.GetLiveChatByID(livechatID); + if (objLiveChatInfo != null && !objLiveChatInfo.IsClosed) + { + LiveChatManager.Instance.CloseLiveChat(livechatID, true); + + var objLiveChatMessageInfo = new LiveChatMessageInfo() + { + LiveChatID = objLiveChatInfo.LiveChatID, + CreateDate = DateTime.Now, + SentBy = MessageSentBy.System, + MessageType = MessageType.Text, + Message = "Agent closed the live chat", + }; + int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); + objLiveChatMessageInfo.MessageID = messageID; + + Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).closeLiveChatByAgent(objLiveChatInfo.LiveChatID); + Clients.Group(portalID + "-" + objLiveChatInfo.VisitorGUID).reciveMessage(objLiveChatMessageInfo); + + //ersal payam be agent ha + var agents = LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID); + foreach (var agent in agents) + { + Clients.Group(AgentGroupName + agent.UserID, Context.ConnectionId).reciveMessage(objLiveChatMessageInfo); + Clients.Group(AgentGroupName + agent.UserID, Context.ConnectionId).closeLiveChatByAgent(objLiveChatInfo.LiveChatID); + } + + isClosed = true; + } + return isClosed; + } + + + #endregion + + #region Private Methods + + /// + /// + /// + /// + /// + private LiveChatViewModel GetLiveChatViewModel(LiveChatInfo objLiveChatInfo) + { + var livechat = new LiveChatViewModel(); + livechat.LiveChatID = objLiveChatInfo.LiveChatID; + livechat.PortalID = objLiveChatInfo.PortalID; + + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", objLiveChatInfo.PortalID, "-1")); + var Settings = new ModuleController().GetModule(moduleID).ModuleSettings; + + //Visitor + livechat.Visitor = new LiveChatVisitorViewModel() + { + UserID = objLiveChatInfo.VisitorUserID, + VisitorGUID = objLiveChatInfo.VisitorGUID, + DisplayName = objLiveChatInfo.VisitorName, + Email = objLiveChatInfo.VisitorEmail, + IP = objLiveChatInfo.VisitorIP, + UserAgent = objLiveChatInfo.VisitorUserAgent, + Avatar = (Settings["VisitorDefaultAvatar"] != null ? Settings["VisitorDefaultAvatar"].ToString() : string.Empty) + }; + var visitor = VisitorsOnlineApi.Instance.GetVisitorByGUID(objLiveChatInfo.PortalID, objLiveChatInfo.VisitorGUID); + if (visitor != null) + { + if (visitor.UserID > 0) livechat.Visitor.Avatar = DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + visitor.UserID); + livechat.Visitor.LastURL = visitor.LastURL; + livechat.Visitor.ReferrerURL = visitor.ReferrerURL; + livechat.Visitor.PastVisits = visitor.TotalConnections; + livechat.Visitor.OnlineDate = visitor.OnlineDate; + } + + //Departments + livechat.Departments = LiveChatDepartmentManager.Instance.GetLiveChatDepartmentsViewModel(objLiveChatInfo.PortalID, objLiveChatInfo.LiveChatID); + + //Agents + livechat.Agents = LiveChatAgentManager.Instance.GetLiveChatAgentsViewModel(objLiveChatInfo.PortalID, objLiveChatInfo.LiveChatID); + livechat.AgentDefaultAvatar = (Settings["AgentDefaultAvatar"] != null ? Settings["AgentDefaultAvatar"].ToString() : string.Empty); + + //Messages + var messages = LiveChatMessageManager.Instance.GetMessages(objLiveChatInfo.LiveChatID); + livechat.Messages = messages; + + livechat.Rate = objLiveChatInfo.Rate; + + livechat.IsClosed = objLiveChatInfo.IsClosed; + + return livechat; + } + + /// + /// + /// + /// + /// + /// + /// + private void AgentHasJoin(LiveChatInfo objLiveChatInfo, AgentView objAgentView, bool sendToVisitor, bool sendToAgent) + { + var agent = new LiveChatAgentViewModel() + { + AgentID = objAgentView.AgentID, + UserID = objAgentView.UserID, + DisplayName = objAgentView.DisplayName, + Email = objAgentView.Email, + Avatar = DotNetNuke.Common.Globals.ResolveUrl("~/dnnimagehandler.ashx?mode=profilepic&userid=" + objAgentView.UserID), + IsOnline = VisitorsOnlineApi.Instance.IsVisitorOnline(objLiveChatInfo.PortalID, objAgentView.UserID), + JoinDate = DateTime.Now + }; + + LiveChatAgentManager.Instance.AddLiveChatAgent(new LiveChatAgentInfo() { AgentID = agent.AgentID, UserID = agent.UserID, LiveChatID = objLiveChatInfo.LiveChatID, JoinDate = DateTime.Now }); + + var objLiveChatMessageInfo = new LiveChatMessageInfo() + { + LiveChatID = objLiveChatInfo.LiveChatID, + SentBy = MessageSentBy.System, + CreateDate = DateTime.Now, + MessageType = MessageType.Text, + Message = objAgentView.DisplayName + " join chat" + }; + int messageID = LiveChatMessageManager.Instance.AddMessage(objLiveChatMessageInfo); + objLiveChatMessageInfo.MessageID = messageID; + + if (sendToVisitor) + { + Clients.Group(objLiveChatInfo.PortalID + "-" + objLiveChatInfo.VisitorGUID).agentHasJoin(objLiveChatInfo.LiveChatID, agent); + Clients.Group(objLiveChatInfo.PortalID + "-" + objLiveChatInfo.VisitorGUID).reciveMessage(objLiveChatMessageInfo); + } + + if (sendToAgent) + { + foreach (var item in LiveChatAgentManager.Instance.GetLiveChatAgents(objLiveChatInfo.LiveChatID)) + { + Clients.Group(AgentGroupName + item.UserID).agentHasJoin(objLiveChatInfo.LiveChatID, agent); + Clients.Group(AgentGroupName + item.UserID).reciveMessage(objLiveChatMessageInfo); + } + } + } + + #endregion + } } \ No newline at end of file diff --git a/LiveChat/MyDnn.Modules.Support.LiveChat.csproj b/LiveChat/MyDnn.Modules.Support.LiveChat.csproj index 526e180..f51e630 100644 --- a/LiveChat/MyDnn.Modules.Support.LiveChat.csproj +++ b/LiveChat/MyDnn.Modules.Support.LiveChat.csproj @@ -45,36 +45,51 @@ False - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\ClientDependency.Core.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\ClientDependency.Core.dll False - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\DotNetNuke.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\DotNetNuke.dll False - ..\..\..\..\bin\DotNetNuke.Instrumentation.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\DotNetNuke.Instrumentation.dll False - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\DotNetNuke.Web.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\DotNetNuke.Web.dll False - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\DotNetNuke.Web.Client.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\DotNetNuke.Web.Client.dll - + False - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\DotNetNuke.Web.Mvc.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\DotNetNuke.Web.Mvc.dll - - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\DotNetNuke.Web.Razor.dll + + ..\packages\Microsoft.AspNet.SignalR.Core.2.1.1\lib\net45\Microsoft.AspNet.SignalR.Core.dll + + + ..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.1.1\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll + + ..\packages\Microsoft.Owin.2.0.1\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.Host.SystemWeb.2.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll + + + ..\packages\Microsoft.Owin.Security.2.0.1\lib\net45\Microsoft.Owin.Security.dll + ..\packages\Newtonsoft.Json.5.0.1\lib\net45\Newtonsoft.Json.dll True + + ..\packages\Owin.1.0\lib\net40\Owin.dll + @@ -91,11 +106,11 @@ False - ..\..\..\..\..\..\8.0.0\Beta\Test1\bin\System.Web.Http.dll + ..\..\..\MyDnnPackage\8.0.0\Beta\Test1\bin\System.Web.Http.dll False - ..\..\..\..\bin\System.Web.Mvc.dll + ..\..\..\MyDnnPackage\8.0.0\Test\dnn8.me\bin\System.Web.Mvc.dll C:\Users\mydnn\Desktop\System.Web.Optimization.dll @@ -146,6 +161,7 @@ + @@ -230,7 +246,7 @@ - + @@ -239,11 +255,6 @@ - - - - - @@ -257,6 +268,7 @@ + @@ -453,7 +465,12 @@ + + + + + @@ -483,7 +500,11 @@ web.config - + + + + + diff --git a/LiveChat/Properties/AssemblyInfo.cs b/LiveChat/Properties/AssemblyInfo.cs index 9489c61..cb42cbd 100644 --- a/LiveChat/Properties/AssemblyInfo.cs +++ b/LiveChat/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("MvcAngular.Web")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("MyDnn.Modules.Support.LiveChat")] +[assembly: AssemblyDescription("MyDnn LiveChat is a powerfull module for chats with visitors and customers in real-time")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MvcAngular.Web")] -[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyProduct("MyDnn.Modules.Support.LiveChat")] +[assembly: AssemblyCopyright("Copyright © 2016 Mydnn Group")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.1.0.0")] +[assembly: AssemblyFileVersion("1.1.0.0")] diff --git a/LiveChat/Scripts/init-widget.js b/LiveChat/Scripts/init-widget.js index d2dcb96..b404dd9 100644 --- a/LiveChat/Scripts/init-widget.js +++ b/LiveChat/Scripts/init-widget.js @@ -7,7 +7,7 @@ var mydnnLiveChatRequests; var __livechatIsLoaded = false; var __requestsString; var __adminPanelUrl; - var __rootUrl = "/"; + var __siteRoot = "/"; var __visitorGUID; var __portalID; var __me = this; @@ -21,11 +21,11 @@ var mydnnLiveChatRequests; }).done(function (data) { if (typeof mydnnSupportLiveChat != "undefined") return; // This means that i am in adminpanel page - __rootUrl = data.RootUrl; + __siteRoot = data.SiteRoot; __portalID = data.PortalID; if (data.LiveChatEnabled) { - $('body').append(''); + $('body').append(''); __visitorGUID = localStorage["MyDnnVisitorsOnline_VisitorGUID"]; __isAgentOnline = data.IsAgentOnline; @@ -35,16 +35,12 @@ var mydnnLiveChatRequests; }); this.initialLiveChat = function (data) { - if (__counter++ < 10 && (typeof $.connection == "undefined")) { + if (__counter++ < 50 && (typeof $.connection == "undefined")) { setTimeout(function () { __me.initialLiveChat(data); }, 1000); } else { - if (typeof $.connection == "undefined") { - alert('signalR is not enabled!'); - } - var $minButton = $('
').html(data.LiveChatMinButton); $('body').append($minButton); @@ -80,7 +76,7 @@ var mydnnLiveChatRequests; } this.joinAgent = function () { - if (__counter++ < 10 && (typeof $.connection == "undefined" || $.connection.MyDnnSupportLiveChatHub.connection.state != 1)) { + if (__counter++ < 50 && (typeof $.connection == "undefined" || $.connection.MyDnnSupportLiveChatHub.connection.state != 1)) { setTimeout(function () { __me.joinAgent(); }, 1000); @@ -126,7 +122,7 @@ var mydnnLiveChatRequests; this.loadAngularAndScripts = function (data) { if (typeof angular == "undefined") - $.getScript(__rootUrl + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular.min.js", function () { + $.getScript(__siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular.min.js", function () { __me.loadLiveChatScripts(data); }); else @@ -134,11 +130,11 @@ var mydnnLiveChatRequests; } this.loadLiveChatScripts = function (data) { - $.getScript(__rootUrl + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/signalr.service.js", function () { - $.getScript(__rootUrl + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/ng-mydnn-services.js", function () { - $.getScript(__rootUrl + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/moment.js/moment.min.js", function () { - $.getScript(__rootUrl + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/livechat-visitor-controller.js", function () { - mydnnLiveChatBaseData = { RootUrl: __rootUrl, VisitorGUID: __visitorGUID }; + $.getScript(__siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/signalr.service.js", function () { + $.getScript(__siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/ng-mydnn-services.js", function () { + $.getScript(__siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/moment.js/moment.min.js", function () { + $.getScript(__siteRoot + "DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/livechat-visitor-controller.js", function () { + mydnnLiveChatBaseData = { SiteRoot: __siteRoot, VisitorGUID: __visitorGUID }; var $ang = $('
'); $ang.appendTo($('body')); angular.bootstrap(document.getElementById('mydnnSupportLiveChat'), ['MyDnnSupportLiveChatApp']); diff --git a/LiveChat/Scripts/jquery-1.6.4.min.js b/LiveChat/Scripts/jquery-1.6.4.min.js deleted file mode 100644 index 628ed9b..0000000 --- a/LiveChat/Scripts/jquery-1.6.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */ -(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/LiveChat/Scripts/jquery.signalR-2.1.0.min.js b/LiveChat/Scripts/jquery.signalR-2.1.0.min.js deleted file mode 100644 index dc3cf2d..0000000 --- a/LiveChat/Scripts/jquery.signalR-2.1.0.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * ASP.NET SignalR JavaScript Library v2.1.0 - * http://signalr.net/ - * - * Copyright (C) Microsoft Corporation. All rights reserved. - * - */ -(function(n,t,i){function w(t,i){var u,f;if(n.isArray(t)){for(u=t.length-1;u>=0;u--)f=t[u],n.type(f)==="string"&&r.transports[f]||(i.log("Invalid transport: "+f+", removing it from the transports list."),t.splice(u,1));t.length===0&&(i.log("No transports remain within the specified transport array."),t=null)}else if(r.transports[t]||t==="auto"){if(t==="auto"&&r._.ieVersion<=8)return["longPolling"]}else i.log("Invalid transport: "+t.toString()+"."),t=null;return t}function b(n){return n==="http:"?80:n==="https:"?443:void 0}function a(n,t){return t.match(/:\d+$/)?t:t+":"+b(n)}function k(t,i){var u=this,r=[];u.tryBuffer=function(i){return t.state===n.signalR.connectionState.connecting?(r.push(i),!0):!1};u.drain=function(){if(t.state===n.signalR.connectionState.connected)while(r.length>0)i(r.shift())};u.clear=function(){r=[]}}var f={nojQuery:"jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.",noTransportOnInit:"No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.",errorOnNegotiate:"Error during negotiation request.",stoppedWhileLoading:"The connection was stopped during page load.",stoppedWhileNegotiating:"The connection was stopped during the negotiate request.",errorParsingNegotiateResponse:"Error parsing negotiate response.",errorDuringStartRequest:"Error during start request. Stopping the connection.",stoppedDuringStartRequest:"The connection was stopped during the start request.",errorParsingStartResponse:"Error parsing start response: '{0}'. Stopping the connection.",invalidStartResponse:"Invalid start response: '{0}'. Stopping the connection.",protocolIncompatible:"You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.",sendFailed:"Send failed.",parseFailed:"Failed at parsing response: {0}",longPollFailed:"Long polling request failed.",eventSourceFailedToConnect:"EventSource failed to connect.",eventSourceError:"Error raised by EventSource",webSocketClosed:"WebSocket closed.",pingServerFailedInvalidResponse:"Invalid ping response when pinging server: '{0}'.",pingServerFailed:"Failed to ping server.",pingServerFailedStatusCode:"Failed to ping server. Server responded with status code {0}, stopping the connection.",pingServerFailedParse:"Failed to parse ping server response, stopping the connection.",noConnectionTransport:"Connection is in an invalid state, there is no transport active.",webSocketsInvalidState:"The Web Socket transport is in an invalid state, transitioning into reconnecting.",reconnectTimeout:"Couldn't reconnect within the configured timeout of {0} ms, disconnecting.",reconnectWindowTimeout:"The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection."};if(typeof n!="function")throw new Error(f.nojQuery);var r,h,s=t.document.readyState==="complete",e=n(t),c="__Negotiate Aborted__",u={onStart:"onStart",onStarting:"onStarting",onReceived:"onReceived",onError:"onError",onConnectionSlow:"onConnectionSlow",onReconnecting:"onReconnecting",onReconnect:"onReconnect",onStateChanged:"onStateChanged",onDisconnect:"onDisconnect"},v=function(n,i){if(i!==!1){var r;typeof t.console!="undefined"&&(r="["+(new Date).toTimeString()+"] SignalR: "+n,t.console.debug?t.console.debug(r):t.console.log&&t.console.log(r))}},o=function(t,i,r){return i===t.state?(t.state=r,n(t).triggerHandler(u.onStateChanged,[{oldState:i,newState:r}]),!0):!1},y=function(n){return n.state===r.connectionState.disconnected},l=function(n){return n._.keepAliveData.activated&&n.transport.supportsKeepAlive(n)},p=function(i){var f,e;i._.configuredStopReconnectingTimeout||(e=function(t){var i=r._.format(r.resources.reconnectTimeout,t.disconnectTimeout);t.log(i);n(t).triggerHandler(u.onError,[r._.error(i,"TimeoutException")]);t.stop(!1,!1)},i.reconnecting(function(){var n=this;n.state===r.connectionState.reconnecting&&(f=t.setTimeout(function(){e(n)},n.disconnectTimeout))}),i.stateChanged(function(n){n.oldState===r.connectionState.reconnecting&&t.clearTimeout(f)}),i._.configuredStopReconnectingTimeout=!0)};r=function(n,t,i){return new r.fn.init(n,t,i)};r._={defaultContentType:"application/x-www-form-urlencoded; charset=UTF-8",ieVersion:function(){var i,n;return t.navigator.appName==="Microsoft Internet Explorer"&&(n=/MSIE ([0-9]+\.[0-9]+)/.exec(t.navigator.userAgent),n&&(i=t.parseFloat(n[1]))),i}(),error:function(n,t,i){var r=new Error(n);return r.source=t,typeof i!="undefined"&&(r.context=i),r},transportError:function(n,t,r,u){var f=this.error(n,r,u);return f.transport=t?t.name:i,f},format:function(){for(var t=arguments[0],n=0;n<\/script>.");}};e.load(function(){s=!0});r.fn=r.prototype={init:function(t,i,r){var f=n(this);this.url=t;this.qs=i;this.lastError=null;this._={keepAliveData:{},connectingMessageBuffer:new k(this,function(n){f.triggerHandler(u.onReceived,[n])}),onFailedTimeoutHandle:null,lastMessageAt:(new Date).getTime(),lastActiveAt:(new Date).getTime(),beatInterval:5e3,beatHandle:null,totalTransportConnectTimeout:0};typeof r=="boolean"&&(this.logging=r)},_parseResponse:function(n){var t=this;return n?typeof n=="string"?t.json.parse(n):n:n},_originalJson:t.JSON,json:t.JSON,isCrossDomain:function(i,r){var u;return(i=n.trim(i),r=r||t.location,i.indexOf("http")!==0)?!1:(u=t.document.createElement("a"),u.href=i,u.protocol+a(u.protocol,u.host)!==r.protocol+a(r.protocol,r.host))},ajaxDataType:"text",contentType:"application/json; charset=UTF-8",logging:!1,state:r.connectionState.disconnected,clientProtocol:"1.4",reconnectDelay:2e3,transportConnectTimeout:0,disconnectTimeout:3e4,reconnectWindow:3e4,keepAliveWarnAt:2/3,start:function(i,h){var a=this,v={pingInterval:3e5,waitForPageLoad:!0,transport:"auto",jsonp:!1},d,y=a._deferral||n.Deferred(),b=t.document.createElement("a"),k,g;if(a.lastError=null,a._deferral=y,!a.json)throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.");if(n.type(i)==="function"?h=i:n.type(i)==="object"&&(n.extend(v,i),n.type(v.callback)==="function"&&(h=v.callback)),v.transport=w(v.transport,a),!v.transport)throw new Error("SignalR: Invalid transport(s) specified, aborting start.");return(a._.config=v,!s&&v.waitForPageLoad===!0)?(a._.deferredStartHandler=function(){a.start(i,h)},e.bind("load",a._.deferredStartHandler),y.promise()):a.state===r.connectionState.connecting?y.promise():o(a,r.connectionState.disconnected,r.connectionState.connecting)===!1?(y.resolve(a),y.promise()):(p(a),b.href=a.url,b.protocol&&b.protocol!==":"?(a.protocol=b.protocol,a.host=b.host):(a.protocol=t.document.location.protocol,a.host=b.host||t.document.location.host),a.baseUrl=a.protocol+"//"+a.host,a.wsProtocol=a.protocol==="https:"?"wss://":"ws://",v.transport==="auto"&&v.jsonp===!0&&(v.transport="longPolling"),a.url.indexOf("//")===0&&(a.url=t.location.protocol+a.url,a.log("Protocol relative URL detected, normalizing it to '"+a.url+"'.")),this.isCrossDomain(a.url)&&(a.log("Auto detected cross domain url."),v.transport==="auto"&&(v.transport=["webSockets","serverSentEvents","longPolling"]),typeof v.withCredentials=="undefined"&&(v.withCredentials=!0),v.jsonp||(v.jsonp=!n.support.cors,v.jsonp&&a.log("Using jsonp because this browser doesn't support CORS.")),a.contentType=r._.defaultContentType),a.withCredentials=v.withCredentials,a.ajaxDataType=v.jsonp?"jsonp":"text",n(a).bind(u.onStart,function(){n.type(h)==="function"&&h.call(a);y.resolve(a)}),d=function(i,s){var p=r._.error(f.noTransportOnInit);if(s=s||0,s>=i.length){n(a).triggerHandler(u.onError,[p]);y.reject(p);a.stop();return}if(a.state!==r.connectionState.disconnected){var w=i[s],h=r.transports[w],c=!1,v=function(){c||(c=!0,t.clearTimeout(a._.onFailedTimeoutHandle),h.stop(a),d(i,s+1))};a.transport=h;try{a._.onFailedTimeoutHandle=t.setTimeout(function(){a.log(h.name+" timed out when trying to connect.");v()},a._.totalTransportConnectTimeout);h.start(a,function(){var i=r._.firefoxMajorVersion(t.navigator.userAgent)>=11,f=!!a.withCredentials&&i;a.state!==r.connectionState.disconnected&&(c||(c=!0,t.clearTimeout(a._.onFailedTimeoutHandle),l(a)&&r.transports._logic.monitorKeepAlive(a),r.transports._logic.startHeartbeat(a),r._.configurePingInterval(a),o(a,r.connectionState.connecting,r.connectionState.connected),a._.connectingMessageBuffer.drain(),n(a).triggerHandler(u.onStart),e.bind("unload",function(){a.log("Window unloading, stopping the connection.");a.stop(f)}),i&&e.bind("beforeunload",function(){t.setTimeout(function(){a.stop(f)},0)})))},v)}catch(b){a.log(h.name+" transport threw '"+b.message+"' when attempting to start.");v()}}},k=a.url+"/negotiate",g=function(t,i){var e=r._.error(f.errorOnNegotiate,t,i._.negotiateRequest);n(i).triggerHandler(u.onError,e);y.reject(e);i.stop()},n(a).triggerHandler(u.onStarting),k=r.transports._logic.prepareQueryString(a,k),a.log("Negotiating with '"+k+"'."),a._.negotiateRequest=r.transports._logic.ajax(a,{url:k,error:function(n,t){t!==c?g(n,a):y.reject(r._.error(f.stoppedWhileNegotiating,null,a._.negotiateRequest))},success:function(t){var i,e,h,o=[],s=[];try{i=a._parseResponse(t)}catch(c){g(r._.error(f.errorParsingNegotiateResponse,c),a);return}if(e=a._.keepAliveData,a.appRelativeUrl=i.Url,a.id=i.ConnectionId,a.token=i.ConnectionToken,a.webSocketServerUrl=i.WebSocketServerUrl,a._.longPollDelay=i.LongPollDelay*1e3,a.disconnectTimeout=i.DisconnectTimeout*1e3,a._.totalTransportConnectTimeout=a.transportConnectTimeout+i.TransportConnectTimeout*1e3,i.KeepAliveTimeout?(e.activated=!0,e.timeout=i.KeepAliveTimeout*1e3,e.timeoutWarning=e.timeout*a.keepAliveWarnAt,a._.beatInterval=(e.timeout-e.timeoutWarning)/3):e.activated=!1,a.reconnectWindow=a.disconnectTimeout+(e.timeout||0),!i.ProtocolVersion||i.ProtocolVersion!==a.clientProtocol){h=r._.error(r._.format(f.protocolIncompatible,a.clientProtocol,i.ProtocolVersion));n(a).triggerHandler(u.onError,[h]);y.reject(h);return}n.each(r.transports,function(n){if(n.indexOf("_")===0||n==="webSockets"&&!i.TryWebSockets)return!0;s.push(n)});n.isArray(v.transport)?n.each(v.transport,function(t,i){n.inArray(i,s)>=0&&o.push(i)}):v.transport==="auto"?o=s:n.inArray(v.transport,s)>=0&&o.push(v.transport);d(o)}}),y.promise())},starting:function(t){var i=this;return n(i).bind(u.onStarting,function(){t.call(i)}),i},send:function(n){var t=this;if(t.state===r.connectionState.disconnected)throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()");if(t.state===r.connectionState.connecting)throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.");return t.transport.send(t,n),t},received:function(t){var i=this;return n(i).bind(u.onReceived,function(n,r){t.call(i,r)}),i},stateChanged:function(t){var i=this;return n(i).bind(u.onStateChanged,function(n,r){t.call(i,r)}),i},error:function(t){var i=this;return n(i).bind(u.onError,function(n,r,u){i.lastError=r;t.call(i,r,u)}),i},disconnected:function(t){var i=this;return n(i).bind(u.onDisconnect,function(){t.call(i)}),i},connectionSlow:function(t){var i=this;return n(i).bind(u.onConnectionSlow,function(){t.call(i)}),i},reconnecting:function(t){var i=this;return n(i).bind(u.onReconnecting,function(){t.call(i)}),i},reconnected:function(t){var i=this;return n(i).bind(u.onReconnect,function(){t.call(i)}),i},stop:function(i,h){var a=this,v=a._deferral;if(a._.deferredStartHandler&&e.unbind("load",a._.deferredStartHandler),delete a._.config,delete a._.deferredStartHandler,!s&&(!a._.config||a._.config.waitForPageLoad===!0)){a.log("Stopping connection prior to negotiate.");v&&v.reject(r._.error(f.stoppedWhileLoading));return}if(a.state!==r.connectionState.disconnected)return a.log("Stopping connection."),o(a,a.state,r.connectionState.disconnected),t.clearTimeout(a._.beatHandle),t.clearTimeout(a._.onFailedTimeoutHandle),t.clearInterval(a._.pingIntervalId),a.transport&&(a.transport.stop(a),h!==!1&&a.transport.abort(a,i),l(a)&&r.transports._logic.stopMonitoringKeepAlive(a),a.transport=null),a._.negotiateRequest&&(a._.negotiateRequest.abort(c),delete a._.negotiateRequest),r.transports._logic.tryAbortStartRequest(a),n(a).triggerHandler(u.onDisconnect),delete a._deferral,delete a.messageId,delete a.groupsToken,delete a.id,delete a._.pingIntervalId,delete a._.lastMessageAt,delete a._.lastActiveAt,delete a._.longPollDelay,a._.connectingMessageBuffer.clear(),a},log:function(n){v(n,this.logging)}};r.fn.init.prototype=r.fn;r.noConflict=function(){return n.connection===r&&(n.connection=h),r};n.connection&&(h=n.connection);n.connection=n.signalR=r})(window.jQuery,window),function(n,t){function o(n){n._.keepAliveData.monitoring&&h(n);r.markActive(n)&&(n._.beatHandle=t.setTimeout(function(){o(n)},n._.beatInterval))}function h(t){var r=t._.keepAliveData,f;t.state===i.connectionState.connected&&(f=(new Date).getTime()-t._.lastMessageAt,f>=r.timeout?(t.log("Keep alive timed out. Notifying transport that connection has been lost."),t.transport.lostConnection(t)):f>=r.timeoutWarning?r.userNotified||(t.log("Keep alive has been missed, connection may be dead/slow."),n(t).triggerHandler(u.onConnectionSlow),r.userNotified=!0):r.userNotified=!1)}function f(n,t){var i=n.url+t;return n.transport&&(i+="?transport="+n.transport.name),r.prepareQueryString(n,i)}var i=n.signalR,u=n.signalR.events,s=n.signalR.changeState,e="__Start Aborted__",r;i.transports={};r=i.transports._logic={ajax:function(t,i){return n.ajax(n.extend(!0,{},n.signalR.ajaxDefaults,{type:"GET",data:{},xhrFields:{withCredentials:t.withCredentials},contentType:t.contentType,dataType:t.ajaxDataType},i))},pingServer:function(t){var e,f,u=n.Deferred();return t.transport?(e=t.url+"/ping",e=r.addQs(e,t.qs),f=r.ajax(t,{url:e,success:function(n){var r;try{r=t._parseResponse(n)}catch(e){u.reject(i._.transportError(i.resources.pingServerFailedParse,t.transport,e,f));t.stop();return}r.Response==="pong"?u.resolve():u.reject(i._.transportError(i._.format(i.resources.pingServerFailedInvalidResponse,n),t.transport,null,f))},error:function(n){n.status===401||n.status===403?(u.reject(i._.transportError(i._.format(i.resources.pingServerFailedStatusCode,n.status),t.transport,n,f)),t.stop()):u.reject(i._.transportError(i.resources.pingServerFailed,t.transport,n,f))}})):u.reject(i._.transportError(i.resources.noConnectionTransport,t.transport)),u.promise()},prepareQueryString:function(n,i){var u;return u=r.addQs(i,"clientProtocol="+n.clientProtocol),u=r.addQs(u,n.qs),n.token&&(u+="&connectionToken="+t.encodeURIComponent(n.token)),n.data&&(u+="&connectionData="+t.encodeURIComponent(n.data)),u},addQs:function(t,i){var r=t.indexOf("?")!==-1?"&":"?",u;if(!i)return t;if(typeof i=="object")return t+r+n.param(i);if(typeof i=="string")return u=i.charAt(0),(u==="?"||u==="&")&&(r=""),t+r+i;throw new Error("Query string property must be either a string or object.");},getUrl:function(n,i,u,f){var s=i==="webSockets"?"":n.baseUrl,e=s+n.appRelativeUrl,o="transport="+i;return n.groupsToken&&(o+="&groupsToken="+t.encodeURIComponent(n.groupsToken)),u?(e+=f?"/poll":"/reconnect",n.messageId&&(o+="&messageId="+t.encodeURIComponent(n.messageId))):e+="/connect",e+="?"+o,e=r.prepareQueryString(n,e),e+("&tid="+Math.floor(Math.random()*11))},maximizePersistentResponse:function(n){return{MessageId:n.C,Messages:n.M,Initialized:typeof n.S!="undefined"?!0:!1,Disconnect:typeof n.D!="undefined"?!0:!1,ShouldReconnect:typeof n.T!="undefined"?!0:!1,LongPollDelay:n.L,GroupsToken:n.G}},updateGroups:function(n,t){t&&(n.groupsToken=t)},stringifySend:function(n,t){return typeof t=="string"||typeof t=="undefined"||t===null?t:n.json.stringify(t)},ajaxSend:function(t,e){var h=r.stringifySend(t,e),c=f(t,"/send"),o,s=function(t,r){n(r).triggerHandler(u.onError,[i._.transportError(i.resources.sendFailed,r.transport,t,o),e])};return o=r.ajax(t,{url:c,type:t.ajaxDataType==="jsonp"?"GET":"POST",contentType:i._.defaultContentType,data:{data:h},success:function(n){var i;if(n){try{i=t._parseResponse(n)}catch(u){s(u,t);t.stop();return}r.triggerReceived(t,i)}},error:function(n,i){i!=="abort"&&i!=="parsererror"&&s(n,t)}})},ajaxAbort:function(n,t){if(typeof n.transport!="undefined"){t=typeof t=="undefined"?!0:t;var i=f(n,"/abort");r.ajax(n,{url:i,async:t,timeout:1e3,type:"POST"});n.log("Fired ajax abort async = "+t+".")}},tryInitialize:function(t,o,s){var l,h,a=function(n){var i=t._deferral;i&&i.reject(n)},c=function(i){n(t).triggerHandler(u.onError,[i]);a(i);t.stop()};o.Initialized&&(l=f(t,"/start"),h=r.ajax(t,{url:l,success:function(n){var r;try{r=t._parseResponse(n)}catch(u){c(i._.error(i._.format(i.resources.errorParsingStartResponse,n),u,h));return}r.Response==="started"?s():c(i._.error(i._.format(i.resources.invalidStartResponse,n),null,h))},error:function(n,t){t!==e?c(i._.error(i.resources.errorDuringStartRequest,n,h)):a(i._.error(i.resources.stoppedDuringStartRequest,null,h))}}),t._.startRequest=h)},tryAbortStartRequest:function(n){n._.startRequest&&(n._.startRequest.abort(e),delete n._.startRequest)},triggerReceived:function(t,i){t._.connectingMessageBuffer.tryBuffer(i)||n(t).triggerHandler(u.onReceived,[i])},processMessages:function(t,i,u){var f;r.markLastMessage(t);i&&(f=r.maximizePersistentResponse(i),r.updateGroups(t,f.GroupsToken),f.MessageId&&(t.messageId=f.MessageId),f.Messages&&(n.each(f.Messages,function(n,i){r.triggerReceived(t,i)}),r.tryInitialize(t,f,u)))},monitorKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring?t.log("Tried to monitor keep alive but it's already being monitored."):(i.monitoring=!0,r.markLastMessage(t),t._.keepAliveData.reconnectKeepAliveUpdate=function(){r.markLastMessage(t)},n(t).bind(u.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t.log("Now monitoring keep alive with a warning timeout of "+i.timeoutWarning+" and a connection lost timeout of "+i.timeout+"."))},stopMonitoringKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring&&(i.monitoring=!1,n(t).unbind(u.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t._.keepAliveData={},t.log("Stopping the monitoring of the keep alive."))},startHeartbeat:function(n){n._.lastActiveAt=(new Date).getTime();o(n)},markLastMessage:function(n){n._.lastMessageAt=(new Date).getTime()},markActive:function(n){return r.verifyLastActive(n)?(n._.lastActiveAt=(new Date).getTime(),!0):!1},isConnectedOrReconnecting:function(n){return n.state===i.connectionState.connected||n.state===i.connectionState.reconnecting},ensureReconnectingState:function(t){return s(t,i.connectionState.connected,i.connectionState.reconnecting)===!0&&n(t).triggerHandler(u.onReconnecting),t.state===i.connectionState.reconnecting},clearReconnectTimeout:function(n){n&&n._.reconnectTimeout&&(t.clearTimeout(n._.reconnectTimeout),delete n._.reconnectTimeout)},verifyLastActive:function(t){if((new Date).getTime()-t._.lastActiveAt>=t.reconnectWindow){var r=i._.format(i.resources.reconnectWindowTimeout,new Date(t._.lastActiveAt),t.reconnectWindow);return t.log(r),n(t).triggerHandler(u.onError,[i._.error(r,"TimeoutException")]),t.stop(!1,!1),!1}return!0},reconnect:function(n,u){var f=i.transports[u];if(r.isConnectedOrReconnecting(n)&&!n._.reconnectTimeout){if(!r.verifyLastActive(n))return;n._.reconnectTimeout=t.setTimeout(function(){r.verifyLastActive(n)&&(f.stop(n),r.ensureReconnectingState(n)&&(n.log(u+" reconnecting."),f.start(n)))},n.reconnectDelay)}},handleParseFailure:function(t,r,f,e,o){t.state===i.connectionState.connecting?(t.log("Failed to parse server response while attempting to connect."),e()):(n(t).triggerHandler(u.onError,[i._.transportError(i._.format(i.resources.parseFailed,r),t.transport,f,o)]),t.stop())},foreverFrame:{count:0,connections:{}}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,f=n.signalR.changeState,i=r.transports._logic;r.transports.webSockets={name:"webSockets",supportsKeepAlive:function(){return!0},send:function(t,f){var e=i.stringifySend(t,f);try{t.socket.send(e)}catch(o){n(t).triggerHandler(u.onError,[r._.transportError(r.resources.webSocketsInvalidState,t.transport,o,t.socket),f])}},start:function(e,o,s){var h,c=!1,l=this,a=!o,v=n(e);if(!t.WebSocket){s();return}e.socket||(h=e.webSocketServerUrl?e.webSocketServerUrl:e.wsProtocol+e.host,h+=i.getUrl(e,this.name,a),e.log("Connecting to websocket endpoint '"+h+"'."),e.socket=new t.WebSocket(h),e.socket.onopen=function(){c=!0;e.log("Websocket opened.");i.clearReconnectTimeout(e);f(e,r.connectionState.reconnecting,r.connectionState.connected)===!0&&v.triggerHandler(u.onReconnect)},e.socket.onclose=function(t){if(this===e.socket){if(c)typeof t.wasClean!="undefined"&&t.wasClean===!1?(n(e).triggerHandler(u.onError,[r._.transportError(r.resources.webSocketClosed,e.transport,t)]),e.log("Unclean disconnect from websocket: "+t.reason||"[no reason given].")):e.log("Websocket closed.");else{s?s():a&&l.reconnect(e);return}l.reconnect(e)}},e.socket.onmessage=function(t){var r;try{r=e._parseResponse(t.data)}catch(u){i.handleParseFailure(e,t.data,u,s,t);return}r&&(n.isEmptyObject(r)||r.M?i.processMessages(e,r,o):i.triggerReceived(e,r))})},reconnect:function(n){i.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},stop:function(n){i.clearReconnectTimeout(n);n.socket&&(n.log("Closing the Websocket."),n.socket.close(),n.socket=null)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var i=n.signalR,u=n.signalR.events,e=n.signalR.changeState,r=i.transports._logic,f=function(n){t.clearTimeout(n._.reconnectAttemptTimeoutHandle);delete n._.reconnectAttemptTimeoutHandle};i.transports.serverSentEvents={name:"serverSentEvents",supportsKeepAlive:function(){return!0},timeOut:3e3,start:function(o,s,h){var c=this,l=!1,a=n(o),v=!s,y;if(o.eventSource&&(o.log("The connection already has an event source. Stopping it."),o.stop()),!t.EventSource){h&&(o.log("This browser doesn't support SSE."),h());return}y=r.getUrl(o,this.name,v);try{o.log("Attempting to connect to SSE endpoint '"+y+"'.");o.eventSource=new t.EventSource(y,{withCredentials:o.withCredentials})}catch(p){o.log("EventSource failed trying to connect with error "+p.Message+".");h?h():(a.triggerHandler(u.onError,[i._.transportError(i.resources.eventSourceFailedToConnect,o.transport,p)]),v&&c.reconnect(o));return}v&&(o._.reconnectAttemptTimeoutHandle=t.setTimeout(function(){l===!1&&o.eventSource.readyState!==t.EventSource.OPEN&&c.reconnect(o)},c.timeOut));o.eventSource.addEventListener("open",function(){o.log("EventSource connected.");f(o);r.clearReconnectTimeout(o);l===!1&&(l=!0,e(o,i.connectionState.reconnecting,i.connectionState.connected)===!0&&a.triggerHandler(u.onReconnect))},!1);o.eventSource.addEventListener("message",function(n){var t;if(n.data!=="initialized"){try{t=o._parseResponse(n.data)}catch(i){r.handleParseFailure(o,n.data,i,h,n);return}r.processMessages(o,t,s)}},!1);o.eventSource.addEventListener("error",function(n){if(this===o.eventSource){if(!l){h&&h();return}o.log("EventSource readyState: "+o.eventSource.readyState+".");n.eventPhase===t.EventSource.CLOSED?(o.log("EventSource reconnecting due to the server connection ending."),c.reconnect(o)):(o.log("EventSource error."),a.triggerHandler(u.onError,[i._.transportError(i.resources.eventSourceError,o.transport,n)]))}},!1)},reconnect:function(n){r.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){r.ajaxSend(n,t)},stop:function(n){f(n);r.clearReconnectTimeout(n);n&&n.eventSource&&(n.log("EventSource calling close()."),n.eventSource.close(),n.eventSource=null,delete n.eventSource)},abort:function(n,t){r.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var r=n.signalR,e=n.signalR.events,o=n.signalR.changeState,i=r.transports._logic,u=function(){var n=t.document.createElement("iframe");return n.setAttribute("style","position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"),n},f=function(){var i=null,f=1e3,n=0;return{prevent:function(){r._.ieVersion<=8&&(n===0&&(i=t.setInterval(function(){var n=u();t.document.body.appendChild(n);t.document.body.removeChild(n);n=null},f)),n++)},cancel:function(){n===1&&t.clearInterval(i);n>0&&n--}}}();r.transports.foreverFrame={name:"foreverFrame",supportsKeepAlive:function(){return!0},iframeClearThreshold:50,start:function(n,r,e){var l=this,s=i.foreverFrame.count+=1,h,o=u(),c=function(){n.log("Forever frame iframe finished loading and is no longer receiving messages.");l.reconnect(n)};if(t.EventSource){e&&(n.log("This browser supports SSE, skipping Forever Frame."),e());return}o.setAttribute("data-signalr-connection-id",n.id);f.prevent();h=i.getUrl(n,this.name);h+="&frameId="+s;t.document.body.appendChild(o);n.log("Binding to iframe's load event.");o.addEventListener?o.addEventListener("load",c,!1):o.attachEvent&&o.attachEvent("onload",c);o.src=h;i.foreverFrame.connections[s]=n;n.frame=o;n.frameId=s;r&&(n.onSuccess=function(){n.log("Iframe transport started.");r()})},reconnect:function(n){var r=this;i.isConnectedOrReconnecting(n)&&i.verifyLastActive(n)&&t.setTimeout(function(){if(i.verifyLastActive(n)&&n.frame&&i.ensureReconnectingState(n)){var u=n.frame,t=i.getUrl(n,r.name,!0)+"&frameId="+n.frameId;n.log("Updating iframe src to '"+t+"'.");u.src=t}},n.reconnectDelay)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){i.ajaxSend(n,t)},receive:function(t,u){var f,e,o;if(t.json!==t._originalJson&&(u=t._originalJson.stringify(u)),o=t._parseResponse(u),i.processMessages(t,o,t.onSuccess),t.state===n.signalR.connectionState.connected&&(t.frameMessageCount=(t.frameMessageCount||0)+1,t.frameMessageCount>r.transports.foreverFrame.iframeClearThreshold&&(t.frameMessageCount=0,f=t.frame.contentWindow||t.frame.contentDocument,f&&f.document&&f.document.body)))for(e=f.document.body;e.firstChild;)e.removeChild(e.firstChild)},stop:function(n){var r=null;if(f.cancel(),n.frame){if(n.frame.stop)n.frame.stop();else try{r=n.frame.contentWindow||n.frame.contentDocument;r.document&&r.document.execCommand&&r.document.execCommand("Stop")}catch(u){n.log("Error occured when stopping foreverFrame transport. Message = "+u.message+".")}n.frame.parentNode===t.document.body&&t.document.body.removeChild(n.frame);delete i.foreverFrame.connections[n.frameId];n.frame=null;n.frameId=null;delete n.frame;delete n.frameId;delete n.onSuccess;delete n.frameMessageCount;n.log("Stopping forever frame.")}},abort:function(n,t){i.ajaxAbort(n,t)},getConnection:function(n){return i.foreverFrame.connections[n]},started:function(t){o(t,r.connectionState.reconnecting,r.connectionState.connected)===!0&&n(t).triggerHandler(e.onReconnect)}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,e=n.signalR.changeState,f=n.signalR.isDisconnecting,i=r.transports._logic,o=function(){try{return"onprogress"in new t.XMLHttpRequest}catch(n){return!1}}();r.transports.longPolling={name:"longPolling",supportsKeepAlive:function(n){return o&&n.ajaxDataType!=="jsonp"&&n._.longPollDelay===0},reconnectDelay:3e3,start:function(o,s,h){var a=this,v=function(){v=n.noop;h=null;o.log("LongPolling connected.");s()},y=function(){return h?(h(),h=null,o.log("LongPolling failed to connect."),!0):!1},c=o._,l=0,p=function(i){t.clearTimeout(c.reconnectTimeoutId);c.reconnectTimeoutId=null;e(i,r.connectionState.reconnecting,r.connectionState.connected)===!0&&(i.log("Raising the reconnect event"),n(i).triggerHandler(u.onReconnect))},w=36e5;o.pollXhr&&(o.log("Polling xhr requests already exists, aborting."),o.stop());o.messageId=null;c.reconnectTimeoutId=null;c.pollTimeoutId=t.setTimeout(function(){(function e(s,h){var d=s.messageId,g=d===null,b=!g,nt=!h,k=i.getUrl(s,a.name,b,nt);f(s)!==!0&&(o.log("Opening long polling request to '"+k+"'."),s.pollXhr=i.ajax(o,{xhrFields:{onprogress:function(){i.markLastMessage(o)}},url:k,success:function(r){var h,w=0,u,a;o.log("Long poll complete.");l=0;try{h=o._parseResponse(r)}catch(b){i.handleParseFailure(s,r,b,y,s.pollXhr);return}(c.reconnectTimeoutId!==null&&p(s),h&&(u=i.maximizePersistentResponse(h)),i.processMessages(s,h,v),u&&n.type(u.LongPollDelay)==="number"&&(w=u.LongPollDelay),u&&u.Disconnect)||f(s)!==!0&&(a=u&&u.ShouldReconnect,!a||i.ensureReconnectingState(s))&&(w>0?c.pollTimeoutId=t.setTimeout(function(){e(s,a)},w):e(s,a))},error:function(f,h){if(t.clearTimeout(c.reconnectTimeoutId),c.reconnectTimeoutId=null,h==="abort"){o.log("Aborted xhr request.");return}if(!y()){if(l++,o.state!==r.connectionState.reconnecting&&(o.log("An error occurred using longPolling. Status = "+h+". Response = "+f.responseText+"."),n(s).triggerHandler(u.onError,[r._.transportError(r.resources.longPollFailed,o.transport,f,s.pollXhr)])),(o.state===r.connectionState.connected||o.state===r.connectionState.reconnecting)&&!i.verifyLastActive(o))return;if(!i.ensureReconnectingState(s))return;c.pollTimeoutId=t.setTimeout(function(){e(s,!0)},a.reconnectDelay)}}}),b&&h===!0&&(c.reconnectTimeoutId=t.setTimeout(function(){p(s)},Math.min(1e3*(Math.pow(2,l)-1),w))))})(o)},250)},lostConnection:function(n){n.pollXhr&&n.pollXhr.abort("lostConnection")},send:function(n,t){i.ajaxSend(n,t)},stop:function(n){t.clearTimeout(n._.pollTimeoutId);t.clearTimeout(n._.reconnectTimeoutId);delete n._.pollTimeoutId;delete n._.reconnectTimeoutId;n.pollXhr&&(n.pollXhr.abort(),n.pollXhr=null,delete n.pollXhr)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n){function r(n){return n+e}function s(n,t,i){for(var f=n.length,u=[],r=0;r - /// - /// - public class PostData - { - public int ID { get; set; } - } - - /// - /// - /// - public class WidgetSettingsDTO - { - public Hashtable WidgetSettings { get; set; } - public Hashtable MinButtonSettings { get; set; } - public Hashtable Locales { get; set; } - } - - public class BasicSettingsDTO - { - public Hashtable PortalSettings { get; set; } - public Hashtable ModuleSettings { get; set; } - } - - /// - /// - /// - public class HistoryDTO - { - public int[] Items { get; set; } - } - - #endregion - - /// - /// - /// - [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)] - [SupportedModules("MyDnnSupport.LiveChat")] - [DnnAuthorize(StaticRoles = "MyDnnSupportAgent")] - public class AgentServiceController : DnnApiController - { - private static readonly ILog Logger = LoggerSource.Instance.GetLogger(typeof(AgentServiceController)); - - #region WebApi Methods - - #region Visitor List - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetVisitorList() - { - try - { - Thread.Sleep(500); - - var visitors = VisitorsOnlineApi.Instance.GetVisitorsOnline(PortalSettings.PortalId); - - //agent nabayd khodesh be onvane visitor bebinad - //visitors = visitors.Except(visitors.Where(v => v.UserID == UserInfo.UserID)); - - var incomingLiveChats = LiveChatManager.Instance.GetIncomingLiveChats(PortalSettings.PortalId); - - var currentLiveChats = LiveChatManager.Instance.GetCurrentLiveChats(PortalSettings.PortalId); - - var result = from v in visitors - join i in incomingLiveChats on v.VisitorGUID equals i.VisitorGUID into al - from f in al.DefaultIfEmpty() - join c in currentLiveChats on v.VisitorGUID equals c.VisitorGUID into r - from cc in r.DefaultIfEmpty() - select new - { - VisitorID = v.VisitorID, - VisitorGUID = v.VisitorGUID, - PortalID = v.PortalID, - UserName = v.UserName, - DisplayName = v.DisplayName, - Email = v.Email, - OnlineDate = v.OnlineDate, - IP = v.IP, - UserAgent = v.UserAgent, - LastURL = v.LastURL, - ReferrerURL = v.ReferrerURL, - TotalConnections = v.TotalConnections, - UserID = v.UserID, - IncomingLiveChat = (f == null ? false : true), - CurrentLiveChat = (cc == null ? false : true), - Message = (f == null ? string.Empty : f.VisitorMessage) - }; - - return Request.CreateResponse(HttpStatusCode.OK, result); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - #endregion - - #region Department - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetDepartments() - { - try - { - var departments = DepartmentManager.Instance.GetDepartmentsViewModel(PortalSettings.PortalId); - return Request.CreateResponse(HttpStatusCode.OK, departments); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetNamesOfDepartments() - { - try - { - var departments = DepartmentManager.Instance.GetDepartmentsViewModel(PortalSettings.PortalId); - var result = from department in departments select department.DepartmentName; - return Request.CreateResponse(HttpStatusCode.OK, result); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage SearchDepartments(string filter) - { - try - { - var departments = DepartmentManager.Instance.GetDepartments(PortalSettings.PortalId); - if (filter != null) - departments = departments.Where(d => d.DepartmentName.ToLower().Contains(filter)); - return Request.CreateResponse(HttpStatusCode.OK, departments); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage AddDepartment(DepartmentViewModel department) - { - try - { - var objDepartmentInfo = new DepartmentInfo() - { - PortalID = PortalSettings.PortalId, - DepartmentName = department.DepartmentName, - Description = department.Description, - TicketEnabled = department.TicketEnabled, - LiveChatEnabled = department.LiveChatEnabled, - CreateByUser = UserInfo.UserID, - CreateDate = DateTime.Now - }; - int departmentID = DepartmentManager.Instance.AddDepartment(objDepartmentInfo); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true, DepartmentID = departmentID }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage UpdateDepartment(DepartmentViewModel department) - { - try - { - var objDepartmentInfo = DepartmentManager.Instance.GetDepartment(PortalSettings.PortalId, department.DepartmentID); - objDepartmentInfo.DepartmentName = department.DepartmentName; - objDepartmentInfo.Description = department.Description; - objDepartmentInfo.TicketEnabled = department.TicketEnabled; - objDepartmentInfo.LiveChatEnabled = department.LiveChatEnabled; - DepartmentManager.Instance.UpdateDepartment(objDepartmentInfo); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage DeleteDepartment(PostData postData) - { - try - { - DepartmentManager.Instance.DeleteDepartment(PortalSettings.PortalId, postData.ID); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - - string msg = string.Empty; - if (((System.Data.SqlClient.SqlException)(ex)).Number == 547) - msg = Localization.Instance.GetString(DotNetNuke.Common.Globals.ResolveUrl("~/MyDnnPackage/dnn8contest/Website/DesktopModules/MVC/MyDnnSupport/LiveChat/App_LocalResources/SharedResources"), PortalSettings.CultureCode, "DeleteDepartmentError.Text"); - - return Request.CreateResponse(HttpStatusCode.InternalServerError, msg); - } - } - - #endregion - - #region Agent - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetAgents() - { - try - { - var agents = AgentManager.Instance.GetAgentsViewModel(PortalSettings.PortalId); - return Request.CreateResponse(HttpStatusCode.OK, agents); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetUserByDisplayName(string name) - { - try - { - var users = Common.Instance.GetUsersByDisplayName(PortalSettings.PortalId, name); - return Request.CreateResponse(HttpStatusCode.OK, users); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage SearchAgents(int searchType, string filter) - { - try - { - var agents = AgentManager.Instance.GetAgentsViewModel(PortalSettings.PortalId); - if (searchType == 1 && filter != null) - agents = agents.Where(a => a.DisplayName.ToLower().Contains(filter)); - else if (searchType == 2 && filter != null) - agents = agents.Where(a => a.Departments.Any(d => filter.Split(',').Contains(d))); - - return Request.CreateResponse(HttpStatusCode.OK, agents); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage AddAgent(AgentViewModel agent) - { - try - { - if (agent.UserID == 0) - throw new Exception(); - - Requires.NotNegative("agent.UserID", agent.UserID); - - var user = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, agent.UserID); - - var objAgentInfo = new AgentInfo() - { - PortalID = PortalSettings.PortalId, - UserID = agent.UserID, - Priority = agent.Priority, - Enabled = agent.Enabled, - CreateByUser = UserInfo.UserID, - CreateDate = DateTime.Now - }; - int agentID = AgentManager.Instance.AddAgent(objAgentInfo); - agent.AgentID = agentID; - - var role = RoleController.Instance.GetRoleByName(PortalSettings.PortalId, "MyDnnSupportAgent"); - RoleController.AddUserRole(user, role, PortalSettings, DotNetNuke.Security.Roles.RoleStatus.Approved, DateTime.Now, DateTime.Now.AddYears(100), true, false); - - var departments = DepartmentManager.Instance.GetDepartments(PortalSettings.PortalId); - foreach (var item in agent.Departments) - { - var department = departments.FirstOrDefault(d => d.DepartmentName == item); - if (department == null) continue; - var objDepartmentAgentInfo = new DepartmentAgentInfo() - { - DepartmentID = department.DepartmentID, - AgentID = agentID, - UserID = agent.UserID - }; - DepartmentAgentManager.Instance.AddDepartmentAgent(objDepartmentAgentInfo); - } - - agent.Email = user.Email; - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true, Agent = agent }); - } - catch (Exception ex) - { - Logger.Error(ex); - - string msg = ex.Message; - - if (((System.Data.SqlClient.SqlException)(ex)).Number == 2627) // user entekhab shode ghablan dar system be onvane agent sabt shode ast - msg = string.Format(Localization.Instance.GetString(DotNetNuke.Common.Globals.ResolveUrl("~/MyDnnPackage/dnn8contest/Website/DesktopModules/MVC/MyDnnSupport/LiveChat/App_LocalResources/SharedResources"), PortalSettings.CultureCode, "DuplicateAgent.Text"), agent.DisplayName); - - return Request.CreateResponse(HttpStatusCode.InternalServerError, msg); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage UpdateAgent(AgentViewModel agent) - { - try - { - var objAgentInfo = AgentManager.Instance.GetAgent(PortalSettings.PortalId, agent.AgentID); - objAgentInfo.PortalID = PortalSettings.PortalId; - objAgentInfo.Priority = agent.Priority; - objAgentInfo.Enabled = agent.Enabled; - AgentManager.Instance.UpdateAgent(objAgentInfo); - - DepartmentAgentManager.Instance.DeleteAgentDepartments(agent.AgentID); - var departments = DepartmentManager.Instance.GetDepartments(PortalSettings.PortalId); - foreach (var item in agent.Departments) - { - var department = departments.FirstOrDefault(d => d.DepartmentName == item); - if (department == null) continue; - var objDepartmentAgentInfo = new DepartmentAgentInfo() - { - DepartmentID = department.DepartmentID, - AgentID = agent.AgentID, - UserID = agent.UserID - }; - DepartmentAgentManager.Instance.AddDepartmentAgent(objDepartmentAgentInfo); - } - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage DeleteAgent(PostData postData) - { - try - { - var agent = AgentManager.Instance.GetAgent(PortalSettings.PortalId, postData.ID); - - DepartmentAgentManager.Instance.DeleteAgentDepartments(postData.ID); - AgentManager.Instance.DeleteAgent(PortalSettings.PortalId, postData.ID); - - var user = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, agent.UserID); - var role = RoleController.Instance.GetRoleByName(PortalSettings.PortalId, "MyDnnSupportAgent"); - RoleController.DeleteUserRole(user, role, PortalSettings, false); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - #endregion - - #region LiveChat - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetIncomingLiveChats() - { - try - { - var incomingLiveChats = LiveChatManager.Instance.GetIncomingLiveChats(PortalSettings.PortalId); - return Request.CreateResponse(HttpStatusCode.OK, incomingLiveChats); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetChatHistory(int type, string departments, string agents, string visitorEmail, DateTime? fromDate, DateTime? toDate, int rating, bool unread, int pageIndex, int pageSize, int totalCount) - { - try - { - var result = LiveChatManager.Instance.GetChatHistory(PortalSettings.PortalId, type, departments, agents, visitorEmail, fromDate, toDate, rating, unread, pageIndex, pageSize, totalCount); - - int pageCount = (int)Math.Ceiling((double)result.TotalCount / pageSize); - - var paging = new - { - PageIndex = result.PageIndex, - PageSize = result.PageSize, - PageCount = pageCount, - TotalCount = result.TotalCount, - HasNextPage = result.HasNextPage, - HasPreviousPage = result.HasPreviousPage, - IsFirstPage = result.IsFirstPage, - IsLastPage = result.IsLastPage, - Pages = new int[pageCount] - }; - return Request.CreateResponse(HttpStatusCode.OK, new { LiveChats = result, Paging = paging }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - [HttpPost] - public HttpResponseMessage PurgeHistory(HistoryDTO postData) - { - try - { - LiveChatManager.Instance.PurgeHistory(postData.Items); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetMessages(int livechatID) - { - try - { - var messages = LiveChatMessageManager.Instance.GetMessages(livechatID); - - return Request.CreateResponse(HttpStatusCode.OK, new { Messages = messages }); - - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetBasicSettings() - { - try - { - Hashtable moduleSettings = null; - Hashtable portalSettings = new Hashtable(); - - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); - if (moduleID > 0) - { - var moduleInfo = new ModuleController().GetModule(moduleID); - moduleSettings = moduleInfo.ModuleSettings; - - portalSettings.Add("VisitorsOnlineEnabled", PortalController.GetPortalSetting("MyDnnVisitorsOnlineEnabled", PortalSettings.PortalId, "false")); - portalSettings.Add("LiveChatEnabled", PortalController.GetPortalSetting("MyDnnLiveChatEnabled", PortalSettings.PortalId, "false")); - } - - return Request.CreateResponse(HttpStatusCode.OK, new - { - PortalSettings = portalSettings, - ModuleSettings = moduleSettings - }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage UpdateBasicSettings(BasicSettingsDTO postData) - { - try - { - PortalController.UpdatePortalSetting(PortalSettings.PortalId, "MyDnnVisitorsOnlineEnabled", postData.PortalSettings["VisitorsOnlineEnabled"].ToString(), true); - PortalController.UpdatePortalSetting(PortalSettings.PortalId, "MyDnnLiveChatEnabled", postData.PortalSettings["LiveChatEnabled"].ToString(), true); - - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); - - Requires.NotNegative("moduleID", moduleID); - - ModuleController.Instance.UpdateModuleSetting(moduleID, "UpdateBasicSettings", "True"); - - ModuleController.Instance.UpdateModuleSetting(moduleID, "AgentDefaultAvatar", Globals.ResolveUrl("~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/agent-avatar.png")); - ModuleController.Instance.UpdateModuleSetting(moduleID, "VisitorDefaultAvatar", Globals.ResolveUrl("~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/images/visitor-avatar.png")); - - ModuleController.Instance.UpdateModuleSetting(moduleID, "PlaySoundWhenNewMsg", postData.ModuleSettings["PlaySoundWhenNewMsg"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "ShowDekstopNotificationForIncoming", postData.ModuleSettings["ShowDekstopNotificationForIncoming"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "ShowDekstopNotificationForNewMsg", postData.ModuleSettings["ShowDekstopNotificationForNewMsg"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "AgentsViewPermission", postData.ModuleSettings["AgentsViewPermission"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "SendEmailForOffline", postData.ModuleSettings["SendEmailForOffline"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "SendEmailAfterChat", postData.ModuleSettings["SendEmailAfterChat"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "TranscriptEmailTemplate", postData.ModuleSettings["TranscriptEmailTemplate"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "OfflineEmailTemplate", postData.ModuleSettings["OfflineEmailTemplate"].ToString()); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - [HttpGet] - public HttpResponseMessage GetWidgetSettings() - { - try - { - string template = string.Empty; - string liveChatWidget = string.Empty; - Hashtable Settings = null; - - var livechatEnabled = bool.Parse(PortalController.GetPortalSetting("MyDnnLiveChatEnabled", PortalSettings.PortalId, "false")); - if (livechatEnabled) - { - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); - if (moduleID > 0) - { - var moduleInfo = new ModuleController().GetModule(moduleID); - Settings = moduleInfo.ModuleSettings; - template = (Settings["Template"] != null ? Settings["Template"].ToString() : "default"); - liveChatWidget = Common.GetFileContent(HttpContext.Current.Request.MapPath(Globals.ResolveUrl(string.Format("~/DesktopModules/MVC/MyDnnSupport/LiveChat/Templates/{0}/view.html", template)))); - } - } - - return Request.CreateResponse(HttpStatusCode.OK, new - { - Template = template, - Settings = Settings, - LiveChatWidget = liveChatWidget - }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - /// - /// - /// - /// - /// - [HttpPost] - public HttpResponseMessage UpdateWidgetSettings(WidgetSettingsDTO postData) - { - try - { - var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); - - Requires.NotNegative("moduleID", moduleID); - - ModuleController.Instance.UpdateModuleSetting(moduleID, "UpdateWidgetSettings", "True"); - - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatThemeColor", postData.WidgetSettings["LiveChatThemeColor"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatTitleColor", postData.WidgetSettings["LiveChatTitleColor"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatWindowSize", postData.WidgetSettings["LiveChatWindowSize"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatWidgetPosition", postData.WidgetSettings["LiveChatWidgetPosition"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatEnableRating", postData.WidgetSettings["LiveChatEnableRating"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatShowAvatar", postData.WidgetSettings["LiveChatShowAvatar"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMessageStyle", postData.WidgetSettings["LiveChatMessageStyle"].ToString()); - - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOnline", postData.MinButtonSettings["OnlineButton"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOnlineBgColor", postData.MinButtonSettings["OnlineButtonBGColor"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOnlineColor", postData.MinButtonSettings["OnlineButtonColor"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOffline", postData.MinButtonSettings["OfflineButton"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOfflineBgColor", postData.MinButtonSettings["OfflineButtonBGColor"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOfflineColor", postData.MinButtonSettings["OfflineButtonColor"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnHPos", postData.MinButtonSettings["HorizontalPosition"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnVPos", postData.MinButtonSettings["VerticalPosition"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnRotate", postData.MinButtonSettings["Rotate"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnCssStyle", postData.MinButtonSettings["CssStyle"].ToString()); - ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnHtmlTemplate", postData.MinButtonSettings["HtmlTemplate"].ToString().Replace("ng-hide", string.Empty)); - - Localization.Instance.UpdateStrings("~/DesktopModules/MVC/MyDnnSupport/LiveChat/App_LocalResources/SharedResources", PortalSettings.CultureCode, postData.Locales); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - [HttpPost] - public HttpResponseMessage SendEmail(EmailDTO postData) - { - try - { - DotNetNuke.Services.Mail.Mail.SendEmail(PortalSettings.Email, postData.To, postData.Subject, postData.Body); - - return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); - } - catch (Exception ex) - { - Logger.Error(ex); - return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } - - #endregion - - #endregion - } +using DotNetNuke.Security; +using DotNetNuke.Web.Api; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web; +using System.Web.Http; +using System.Collections; +using DotNetNuke.Common; +using DotNetNuke.Entities.Host; +using DotNetNuke.Entities.Users.Internal; +using System.Globalization; +using System.Resources; +using System.Xml; +using System.Web.Script.Serialization; +using System.IO; +using System.Threading; +using MyDnn.Modules.Support.LiveChat.Components.Common; +using MyDnn.VisitorsOnline.Api; +using MyDnn.Modules.Support.LiveChat.Components; +using MyDnn.Modules.Support.LiveChat.ViewModels; +using MyDnn.Modules.Support.LiveChats.ViewModels; +using MyDnn.Modules.Support.LiveChat.Models; +using DotNetNuke.Entities.Portals; +using DotNetNuke.Entities.Modules; +using System.Text.RegularExpressions; +using DotNetNuke.Security.Roles; +using DotNetNuke.Instrumentation; +using System.Threading.Tasks; +using DotNetNuke.Common.Utilities; + +namespace MyDnn.Modules.Support.LiveChat.Services +{ + #region DTO Models + + /// + /// + /// + public class PostData + { + public int ID { get; set; } + } + + /// + /// + /// + public class WidgetSettingsDTO + { + public Hashtable WidgetSettings { get; set; } + public Hashtable MinButtonSettings { get; set; } + public Hashtable Locales { get; set; } + } + + public class BasicSettingsDTO + { + public Hashtable PortalSettings { get; set; } + public Hashtable ModuleSettings { get; set; } + } + + /// + /// + /// + public class HistoryDTO + { + public int[] Items { get; set; } + } + + #endregion + + /// + /// + /// + [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)] + [SupportedModules("MyDnnSupport.LiveChat")] + [DnnAuthorize(StaticRoles = "MyDnnSupportAgent")] + public class AgentServiceController : DnnApiController + { + private static readonly ILog Logger = LoggerSource.Instance.GetLogger(typeof(AgentServiceController)); + + #region WebApi Methods + + #region Common + + /// + /// + /// + /// + [HttpPost] + public async Task UploadFile() + { + if (!Request.Content.IsMimeMultipartContent()) + throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); + + int portalID = PortalSettings.PortalId; + var homeDirectory = PortalSettings.HomeDirectory; + + var destPath = PortalSettings.HomeDirectoryMapPath + "\\MyDnn\\LiveChat\\Admin\\"; + + if (!Directory.Exists(destPath)) + Directory.CreateDirectory(destPath); + + var provider = new CustomMultipartFormDataStreamProvider(destPath); + await Request.Content.ReadAsMultipartAsync(provider); + + var filename = Path.GetFileName(provider.FileData[0].LocalFileName); + + return Request.CreateResponse(HttpStatusCode.Created, homeDirectory + string.Format("MyDnn/LiveChat/Admin/{0}", filename)); + } + + #endregion + + #region Visitor List + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetVisitorList() + { + try + { + Thread.Sleep(500); + + var visitors = VisitorsOnlineApi.Instance.GetVisitorsOnline(PortalSettings.PortalId); + + //agent nabayd khodesh be onvane visitor bebinad + //visitors = visitors.Except(visitors.Where(v => v.UserID == UserInfo.UserID)); + + var incomingLiveChats = LiveChatManager.Instance.GetIncomingLiveChats(PortalSettings.PortalId); + + var currentLiveChats = LiveChatManager.Instance.GetCurrentLiveChats(PortalSettings.PortalId); + + var result = from v in visitors + join i in incomingLiveChats on v.VisitorGUID equals i.VisitorGUID into al + from f in al.DefaultIfEmpty() + join c in currentLiveChats on v.VisitorGUID equals c.VisitorGUID into r + from cc in r.DefaultIfEmpty() + select new + { + VisitorID = v.VisitorID, + VisitorGUID = v.VisitorGUID, + PortalID = v.PortalID, + UserName = v.UserName, + DisplayName = v.DisplayName, + Email = v.Email, + OnlineDate = v.OnlineDate, + IP = v.IP, + UserAgent = v.UserAgent, + LastURL = v.LastURL, + ReferrerURL = v.ReferrerURL, + TotalConnections = v.TotalConnections, + UserID = v.UserID, + IncomingLiveChat = (f == null ? false : true), + CurrentLiveChat = (cc == null ? false : true), + Message = (f == null ? string.Empty : f.VisitorMessage) + }; + + return Request.CreateResponse(HttpStatusCode.OK, result); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + #endregion + + #region Department + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetDepartments() + { + try + { + var departments = DepartmentManager.Instance.GetDepartmentsViewModel(PortalSettings.PortalId); + return Request.CreateResponse(HttpStatusCode.OK, departments); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetNamesOfDepartments() + { + try + { + var departments = DepartmentManager.Instance.GetDepartmentsViewModel(PortalSettings.PortalId); + var result = from department in departments select department.DepartmentName; + return Request.CreateResponse(HttpStatusCode.OK, result); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage SearchDepartments(string filter) + { + try + { + var departments = DepartmentManager.Instance.GetDepartments(PortalSettings.PortalId); + if (filter != null) + departments = departments.Where(d => d.DepartmentName.ToLower().Contains(filter)); + return Request.CreateResponse(HttpStatusCode.OK, departments); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage AddDepartment(DepartmentViewModel department) + { + try + { + var objDepartmentInfo = new DepartmentInfo() + { + PortalID = PortalSettings.PortalId, + DepartmentName = department.DepartmentName, + Description = department.Description, + TicketEnabled = department.TicketEnabled, + LiveChatEnabled = department.LiveChatEnabled, + CreateByUser = UserInfo.UserID, + CreateDate = DateTime.Now + }; + int departmentID = DepartmentManager.Instance.AddDepartment(objDepartmentInfo); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true, DepartmentID = departmentID }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage UpdateDepartment(DepartmentViewModel department) + { + try + { + var objDepartmentInfo = DepartmentManager.Instance.GetDepartment(PortalSettings.PortalId, department.DepartmentID); + objDepartmentInfo.DepartmentName = department.DepartmentName; + objDepartmentInfo.Description = department.Description; + objDepartmentInfo.TicketEnabled = department.TicketEnabled; + objDepartmentInfo.LiveChatEnabled = department.LiveChatEnabled; + DepartmentManager.Instance.UpdateDepartment(objDepartmentInfo); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage DeleteDepartment(PostData postData) + { + try + { + DepartmentManager.Instance.DeleteDepartment(PortalSettings.PortalId, postData.ID); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + + string msg = string.Empty; + if (((System.Data.SqlClient.SqlException)(ex)).Number == 547) + msg = Localization.Instance.GetString(DotNetNuke.Common.Globals.ResolveUrl("~/MyDnnPackage/dnn8contest/Website/DesktopModules/MVC/MyDnnSupport/LiveChat/App_LocalResources/SharedResources"), PortalSettings.CultureCode, "DeleteDepartmentError.Text"); + + return Request.CreateResponse(HttpStatusCode.InternalServerError, msg); + } + } + + #endregion + + #region Agent + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetAgents() + { + try + { + var agents = AgentManager.Instance.GetAgentsViewModel(PortalSettings.PortalId); + return Request.CreateResponse(HttpStatusCode.OK, agents); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetUserByDisplayName(string name) + { + try + { + var users = Common.Instance.GetUsersByDisplayName(PortalSettings.PortalId, name); + return Request.CreateResponse(HttpStatusCode.OK, users); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage SearchAgents(int searchType, string filter) + { + try + { + var agents = AgentManager.Instance.GetAgentsViewModel(PortalSettings.PortalId); + if (searchType == 1 && filter != null) + agents = agents.Where(a => a.DisplayName.ToLower().Contains(filter)); + else if (searchType == 2 && filter != null) + agents = agents.Where(a => a.Departments.Any(d => filter.Split(',').Contains(d))); + + return Request.CreateResponse(HttpStatusCode.OK, agents); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage AddAgent(AgentViewModel agent) + { + try + { + if (agent.UserID == 0) + throw new Exception(); + + Requires.NotNegative("agent.UserID", agent.UserID); + + var user = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, agent.UserID); + + var objAgentInfo = new AgentInfo() + { + PortalID = PortalSettings.PortalId, + UserID = agent.UserID, + Priority = agent.Priority, + Enabled = agent.Enabled, + CreateByUser = UserInfo.UserID, + CreateDate = DateTime.Now + }; + int agentID = AgentManager.Instance.AddAgent(objAgentInfo); + agent.AgentID = agentID; + + if (!user.IsInRole("MyDnnSupportAgent")) + { + var role = RoleController.Instance.GetRoleByName(PortalSettings.PortalId, "MyDnnSupportAgent"); + RoleController.AddUserRole(user, role, PortalSettings, DotNetNuke.Security.Roles.RoleStatus.Approved, Null.NullDate, Null.NullDate, true, false); + } + + var departments = DepartmentManager.Instance.GetDepartments(PortalSettings.PortalId); + foreach (var item in agent.Departments) + { + var department = departments.FirstOrDefault(d => d.DepartmentName == item); + if (department == null) continue; + var objDepartmentAgentInfo = new DepartmentAgentInfo() + { + DepartmentID = department.DepartmentID, + AgentID = agentID, + UserID = agent.UserID + }; + DepartmentAgentManager.Instance.AddDepartmentAgent(objDepartmentAgentInfo); + } + + agent.Email = user.Email; + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true, Agent = agent }); + } + catch (Exception ex) + { + Logger.Error(ex); + + string msg = ex.Message; + + if (((System.Data.SqlClient.SqlException)(ex)).Number == 2627) // user entekhab shode ghablan dar system be onvane agent sabt shode ast + msg = string.Format(Localization.Instance.GetString(DotNetNuke.Common.Globals.ResolveUrl("~/MyDnnPackage/dnn8contest/Website/DesktopModules/MVC/MyDnnSupport/LiveChat/App_LocalResources/SharedResources"), PortalSettings.CultureCode, "DuplicateAgent.Text"), agent.DisplayName); + + return Request.CreateResponse(HttpStatusCode.InternalServerError, msg); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage UpdateAgent(AgentViewModel agent) + { + try + { + var objAgentInfo = AgentManager.Instance.GetAgent(PortalSettings.PortalId, agent.AgentID); + objAgentInfo.PortalID = PortalSettings.PortalId; + objAgentInfo.Priority = agent.Priority; + objAgentInfo.Enabled = agent.Enabled; + AgentManager.Instance.UpdateAgent(objAgentInfo); + + DepartmentAgentManager.Instance.DeleteAgentDepartments(agent.AgentID); + var departments = DepartmentManager.Instance.GetDepartments(PortalSettings.PortalId); + foreach (var item in agent.Departments) + { + var department = departments.FirstOrDefault(d => d.DepartmentName == item); + if (department == null) continue; + var objDepartmentAgentInfo = new DepartmentAgentInfo() + { + DepartmentID = department.DepartmentID, + AgentID = agent.AgentID, + UserID = agent.UserID + }; + DepartmentAgentManager.Instance.AddDepartmentAgent(objDepartmentAgentInfo); + } + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage DeleteAgent(PostData postData) + { + try + { + var agent = AgentManager.Instance.GetAgent(PortalSettings.PortalId, postData.ID); + + DepartmentAgentManager.Instance.DeleteAgentDepartments(postData.ID); + AgentManager.Instance.DeleteAgent(PortalSettings.PortalId, postData.ID); + + var user = DotNetNuke.Entities.Users.UserController.GetUserById(PortalSettings.PortalId, agent.UserID); + var role = RoleController.Instance.GetRoleByName(PortalSettings.PortalId, "MyDnnSupportAgent"); + RoleController.DeleteUserRole(user, role, PortalSettings, false); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + #endregion + + #region LiveChat + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetIncomingLiveChats() + { + try + { + var incomingLiveChats = LiveChatManager.Instance.GetIncomingLiveChats(PortalSettings.PortalId); + return Request.CreateResponse(HttpStatusCode.OK, incomingLiveChats); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetChatHistory(int type, string departments, string agents, string visitorEmail, DateTime? fromDate, DateTime? toDate, int rating, bool unread, int pageIndex, int pageSize, int totalCount) + { + try + { + var result = LiveChatManager.Instance.GetChatHistory(PortalSettings.PortalId, type, departments, agents, visitorEmail, fromDate, toDate, rating, unread, pageIndex, pageSize, totalCount); + + int pageCount = (int)Math.Ceiling((double)result.TotalCount / pageSize); + + var paging = new + { + PageIndex = result.PageIndex, + PageSize = result.PageSize, + PageCount = pageCount, + TotalCount = result.TotalCount, + HasNextPage = result.HasNextPage, + HasPreviousPage = result.HasPreviousPage, + IsFirstPage = result.IsFirstPage, + IsLastPage = result.IsLastPage, + Pages = new int[pageCount] + }; + return Request.CreateResponse(HttpStatusCode.OK, new { LiveChats = result, Paging = paging }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + [HttpPost] + public HttpResponseMessage PurgeHistory(HistoryDTO postData) + { + try + { + LiveChatManager.Instance.PurgeHistory(postData.Items); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetMessages(int livechatID) + { + try + { + var messages = LiveChatMessageManager.Instance.GetMessages(livechatID); + + return Request.CreateResponse(HttpStatusCode.OK, new { Messages = messages }); + + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetBasicSettings() + { + try + { + Hashtable moduleSettings = new Hashtable(); + Hashtable portalSettings = new Hashtable(); + + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); + if (moduleID > 0) + { + var moduleInfo = new ModuleController().GetModule(moduleID); + moduleSettings = moduleInfo.ModuleSettings; + + portalSettings.Add("VisitorsOnlineEnabled", PortalController.GetPortalSetting("MyDnnVisitorsOnlineEnabled", PortalSettings.PortalId, "false")); + portalSettings.Add("LiveChatEnabled", PortalController.GetPortalSetting("MyDnnLiveChatEnabled", PortalSettings.PortalId, "false")); + } + + return Request.CreateResponse(HttpStatusCode.OK, new + { + PortalSettings = portalSettings, + ModuleSettings = moduleSettings + }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage UpdateBasicSettings(BasicSettingsDTO postData) + { + try + { + PortalController.UpdatePortalSetting(PortalSettings.PortalId, "MyDnnVisitorsOnlineEnabled", postData.PortalSettings["VisitorsOnlineEnabled"].ToString(), true); + PortalController.UpdatePortalSetting(PortalSettings.PortalId, "MyDnnLiveChatEnabled", postData.PortalSettings["LiveChatEnabled"].ToString(), true); + + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); + + Requires.NotNegative("moduleID", moduleID); + + ModuleController.Instance.UpdateModuleSetting(moduleID, "UpdateBasicSettings", "True"); + + ModuleController.Instance.UpdateModuleSetting(moduleID, "PlaySoundWhenNewMsg", postData.ModuleSettings["PlaySoundWhenNewMsg"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "ShowDekstopNotificationForIncoming", postData.ModuleSettings["ShowDekstopNotificationForIncoming"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "ShowDekstopNotificationForNewMsg", postData.ModuleSettings["ShowDekstopNotificationForNewMsg"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "AgentsViewPermission", postData.ModuleSettings["AgentsViewPermission"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "SendEmailForOffline", postData.ModuleSettings["SendEmailForOffline"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "SendEmailAfterChat", postData.ModuleSettings["SendEmailAfterChat"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "TranscriptEmailTemplate", postData.ModuleSettings["TranscriptEmailTemplate"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "OfflineEmailTemplate", postData.ModuleSettings["OfflineEmailTemplate"].ToString()); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + [HttpGet] + public HttpResponseMessage GetWidgetSettings() + { + try + { + string template = "default"; + Hashtable Settings = new Hashtable(); + + var livechatEnabled = bool.Parse(PortalController.GetPortalSetting("MyDnnLiveChatEnabled", PortalSettings.PortalId, "false")); + if (livechatEnabled) + { + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); + if (moduleID > 0) + { + var moduleInfo = new ModuleController().GetModule(moduleID); + Settings = moduleInfo.ModuleSettings; + template = (Settings["Template"] != null ? Settings["Template"].ToString() : "default"); + } + } + + string liveChatWidget = Common.GetFileContent(HttpContext.Current.Request.MapPath(Globals.ResolveUrl(string.Format("~/DesktopModules/MVC/MyDnnSupport/LiveChat/Templates/{0}/view.html", template)))); + + return Request.CreateResponse(HttpStatusCode.OK, new + { + Template = template, + Settings = Settings, + LiveChatWidget = liveChatWidget + }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// + /// + /// + /// + [HttpPost] + public HttpResponseMessage UpdateWidgetSettings(WidgetSettingsDTO postData) + { + try + { + var moduleID = int.Parse(PortalController.GetPortalSetting("MyDnnLiveChatModuleID", PortalSettings.PortalId, "-1")); + + Requires.NotNegative("moduleID", moduleID); + + ModuleController.Instance.UpdateModuleSetting(moduleID, "UpdateWidgetSettings", "True"); + + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatThemeColor", postData.WidgetSettings["LiveChatThemeColor"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatTitleColor", postData.WidgetSettings["LiveChatTitleColor"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatWindowSize", postData.WidgetSettings["LiveChatWindowSize"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatWidgetPosition", postData.WidgetSettings["LiveChatWidgetPosition"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatEnableRating", postData.WidgetSettings["LiveChatEnableRating"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatShowAvatar", postData.WidgetSettings["LiveChatShowAvatar"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMessageStyle", postData.WidgetSettings["LiveChatMessageStyle"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "VisitorDefaultAvatar", postData.WidgetSettings["VisitorDefaultAvatar"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "AgentDefaultAvatar", postData.WidgetSettings["AgentDefaultAvatar"].ToString()); + + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOnline", postData.MinButtonSettings["OnlineButton"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOnlineBgColor", postData.MinButtonSettings["OnlineButtonBGColor"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOnlineColor", postData.MinButtonSettings["OnlineButtonColor"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOffline", postData.MinButtonSettings["OfflineButton"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOfflineBgColor", postData.MinButtonSettings["OfflineButtonBGColor"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnOfflineColor", postData.MinButtonSettings["OfflineButtonColor"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnHPos", postData.MinButtonSettings["HorizontalPosition"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnVPos", postData.MinButtonSettings["VerticalPosition"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnRotate", postData.MinButtonSettings["Rotate"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnCssStyle", postData.MinButtonSettings["CssStyle"].ToString()); + ModuleController.Instance.UpdateModuleSetting(moduleID, "LiveChatMinBtnHtmlTemplate", postData.MinButtonSettings["HtmlTemplate"].ToString().Replace("ng-hide", string.Empty)); + + Localization.Instance.UpdateStrings("~/DesktopModules/MVC/MyDnnSupport/LiveChat/App_LocalResources/SharedResources", PortalSettings.CultureCode, postData.Locales); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + [HttpPost] + public HttpResponseMessage SendEmail(EmailDTO postData) + { + try + { + DotNetNuke.Services.Mail.Mail.SendEmail(PortalSettings.Email, postData.To, postData.Subject, postData.Body); + + return Request.CreateResponse(HttpStatusCode.OK, new { Success = true }); + } + catch (Exception ex) + { + Logger.Error(ex); + return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); + } + } + + #endregion + + #endregion + } } \ No newline at end of file diff --git a/LiveChat/Services/VisitorServiceController.cs b/LiveChat/Services/VisitorServiceController.cs index 8149411..9b16a12 100644 --- a/LiveChat/Services/VisitorServiceController.cs +++ b/LiveChat/Services/VisitorServiceController.cs @@ -110,8 +110,8 @@ public HttpResponseMessage LiveChatWidget() } return Request.CreateResponse(HttpStatusCode.OK, new - { - RootUrl = DotNetNuke.Common.Globals.ResolveUrl("~/"), + { + SiteRoot = DotNetNuke.Common.Globals.ResolveUrl("~/"), PortalID = PortalSettings.PortalId, Template = template, LiveChatEnabled = livechatEnabled, diff --git a/LiveChat/Styles/custom.css b/LiveChat/Styles/custom.css index 5bd44d7..d9a8494 100644 --- a/LiveChat/Styles/custom.css +++ b/LiveChat/Styles/custom.css @@ -1,4 +1,8 @@ -/* angular styles*/ +body { + direction: ltr !important; +} + +/* angular styles*/ input.check-validate.ng-invalid-required { border-bottom-color: #f44336; border-bottom-width: 2px; @@ -866,6 +870,39 @@ table.table tbody td { margin-right: 4px; } +.widget-settings .image-preview-panel { + position: relative; + border: 1px solid #e5e5e5; + margin-right: 20px; + overflow: hidden; + width: 50px; + height: 50px; +} + + .widget-settings .image-preview-panel.dragover { + border: dashed 3px #888; + } + + .widget-settings .image-preview-panel img { + width: 100%; + max-height: 120%; + } + +.widget-settings .file-input-wrapper { + position: relative; +} + + .widget-settings .file-input-wrapper > input[type="file"] { + cursor: pointer; + height: 30px; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 115px; + } + + .head { box-shadow: 0 -2px 0 0 #eeeeee inset; margin: 10px 0 20px; diff --git a/LiveChat/Styles/images/agent-avatar.png b/LiveChat/Styles/images/agent-avatar.png index 516712b..e1f3d47 100644 Binary files a/LiveChat/Styles/images/agent-avatar.png and b/LiveChat/Styles/images/agent-avatar.png differ diff --git a/LiveChat/Styles/images/email.png b/LiveChat/Styles/images/email.png new file mode 100644 index 0000000..ab599af Binary files /dev/null and b/LiveChat/Styles/images/email.png differ diff --git a/LiveChat/Styles/images/icon.png b/LiveChat/Styles/images/icon.png new file mode 100644 index 0000000..5dd6ec0 Binary files /dev/null and b/LiveChat/Styles/images/icon.png differ diff --git a/LiveChat/Styles/images/logo.png b/LiveChat/Styles/images/logo.png new file mode 100644 index 0000000..0ce4e69 Binary files /dev/null and b/LiveChat/Styles/images/logo.png differ diff --git a/LiveChat/Styles/images/logo2.png b/LiveChat/Styles/images/logo2.png new file mode 100644 index 0000000..2910fe3 Binary files /dev/null and b/LiveChat/Styles/images/logo2.png differ diff --git a/LiveChat/Styles/images/logo3.png b/LiveChat/Styles/images/logo3.png new file mode 100644 index 0000000..c612b46 Binary files /dev/null and b/LiveChat/Styles/images/logo3.png differ diff --git a/LiveChat/Styles/images/send.png b/LiveChat/Styles/images/send.png new file mode 100644 index 0000000..7fc70eb Binary files /dev/null and b/LiveChat/Styles/images/send.png differ diff --git a/LiveChat/Styles/livechat-agent.css b/LiveChat/Styles/livechat-agent.css index d9bbcad..0d5167e 100644 --- a/LiveChat/Styles/livechat-agent.css +++ b/LiveChat/Styles/livechat-agent.css @@ -228,14 +228,19 @@ } .window-titlebar .livechat-action { - background: rgba(0, 0, 0, 0) -moz-linear-gradient(center top, #686868, #5f5f5f) repeat scroll 0 0; + /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#686868+0,5f5f5f+100 */ + background: #686868; /* Old browsers */ + background: -moz-linear-gradient(top, #686868 0%, #5f5f5f 100%); /* FF3.6-15 */ + background: -webkit-linear-gradient(top, #686868 0%,#5f5f5f 100%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(to bottom, #686868 0%,#5f5f5f 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#686868', endColorstr='#5f5f5f',GradientType=0 ); /* IE6-9 */ border: 1px solid #222; border-radius: 3px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05), 0 1px rgba(255, 255, 255, 0.1) inset; float: right; font-size: 12px; height: 23px; - line-height: normal; + line-height: 20px; margin: -1px 5px 0; padding: 2px 0 0 3px; position: relative; @@ -257,7 +262,7 @@ background: rgba(0, 0, 0, 0) none repeat scroll 0 0; border: medium none; box-shadow: none; - color: #fff; + color: #ddd; cursor: pointer; padding: 0; width: 100%; @@ -533,6 +538,7 @@ border-bottom: 1px dotted silver; margin: 2px 0 10px; padding-bottom: 5px; + position: relative; } .livechat-messages .message:last-child { @@ -564,6 +570,14 @@ margin: 0; } + .livechat-messages .message .message-time { + color: gray; + font-size: 12px; + position: absolute; + right: 0; + top: 0; + } + .visitor-istyping { bottom: 125px; color: #a3a0a0; @@ -609,7 +623,7 @@ } .message-editor textarea:disabled { - background: #eeeded none repeat scroll 0 0; + background: #bcbaba none repeat scroll 0 0; } .livechat-buttons { diff --git a/LiveChat/Styles/style.css b/LiveChat/Styles/style.css index ec4f238..eea1012 100644 --- a/LiveChat/Styles/style.css +++ b/LiveChat/Styles/style.css @@ -1,16978 +1 @@ -/* - * Load Main Bootstrap LESS files - */ - -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ - -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -body { - margin: 0; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} - - audio:not([controls]) { - display: none; - height: 0; - } - -[hidden], -template { - display: none; -} - -a { - background-color: transparent; -} - - a:active, - a:hover { - outline: 0; - } - -abbr[title] { - border-bottom: 1px dotted; -} - -b, -strong { - font-weight: bold; -} - -dfn { - font-style: italic; -} - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -mark { - background: #ff0; - color: #000; -} - -small { - font-size: 80%; -} - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -img { - border: 0; -} - -svg:not(:root) { - overflow: hidden; -} - -figure { - margin: 1em 40px; -} - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -pre { - overflow: auto; -} - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} - -button { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} - - button[disabled], - html input[disabled] { - cursor: default; - } - - button::-moz-focus-inner, - input::-moz-focus-inner { - border: 0; - padding: 0; - } - -input { - line-height: normal; -} - - input[type="checkbox"], - input[type="radio"] { - box-sizing: border-box; - padding: 0; - } - - input[type="number"]::-webkit-inner-spin-button, - input[type="number"]::-webkit-outer-spin-button { - height: auto; - } - - input[type="search"] { - -webkit-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; - } - - input[type="search"]::-webkit-search-cancel-button, - input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; - } - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -legend { - border: 0; - padding: 0; -} - -textarea { - overflow: auto; -} - -optgroup { - font-weight: bold; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} - -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ - -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - box-shadow: none !important; - text-shadow: none !important; - } - - a, - a:visited { - text-decoration: underline; - } - - a[href]:after { - content: " (" attr(href) ")"; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - - thead { - display: table-header-group; - } - - tr, - img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - - h2, - h3 { - page-break-after: avoid; - } - - select { - background: #fff !important; - } - - .navbar { - display: none; - } - - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - - .label { - border: 1px solid #000; - } - - .table { - border-collapse: collapse !important; - } - - .table td, - .table th { - background-color: #fff !important; - } - - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} - -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('fonts/glyphicons-halflings-regular.eot'); - src: url('fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('fonts/glyphicons-halflings-regular.woff') format('woff'), url('fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} - -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.glyphicon-asterisk:before { - content: "\2a"; -} - -.glyphicon-plus:before { - content: "\2b"; -} - -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} - -.glyphicon-minus:before { - content: "\2212"; -} - -.glyphicon-cloud:before { - content: "\2601"; -} - -.glyphicon-envelope:before { - content: "\2709"; -} - -.glyphicon-pencil:before { - content: "\270f"; -} - -.glyphicon-glass:before { - content: "\e001"; -} - -.glyphicon-music:before { - content: "\e002"; -} - -.glyphicon-search:before { - content: "\e003"; -} - -.glyphicon-heart:before { - content: "\e005"; -} - -.glyphicon-star:before { - content: "\e006"; -} - -.glyphicon-star-empty:before { - content: "\e007"; -} - -.glyphicon-user:before { - content: "\e008"; -} - -.glyphicon-film:before { - content: "\e009"; -} - -.glyphicon-th-large:before { - content: "\e010"; -} - -.glyphicon-th:before { - content: "\e011"; -} - -.glyphicon-th-list:before { - content: "\e012"; -} - -.glyphicon-ok:before { - content: "\e013"; -} - -.glyphicon-remove:before { - content: "\e014"; -} - -.glyphicon-zoom-in:before { - content: "\e015"; -} - -.glyphicon-zoom-out:before { - content: "\e016"; -} - -.glyphicon-off:before { - content: "\e017"; -} - -.glyphicon-signal:before { - content: "\e018"; -} - -.glyphicon-cog:before { - content: "\e019"; -} - -.glyphicon-trash:before { - content: "\e020"; -} - -.glyphicon-home:before { - content: "\e021"; -} - -.glyphicon-file:before { - content: "\e022"; -} - -.glyphicon-time:before { - content: "\e023"; -} - -.glyphicon-road:before { - content: "\e024"; -} - -.glyphicon-download-alt:before { - content: "\e025"; -} - -.glyphicon-download:before { - content: "\e026"; -} - -.glyphicon-upload:before { - content: "\e027"; -} - -.glyphicon-inbox:before { - content: "\e028"; -} - -.glyphicon-play-circle:before { - content: "\e029"; -} - -.glyphicon-repeat:before { - content: "\e030"; -} - -.glyphicon-refresh:before { - content: "\e031"; -} - -.glyphicon-list-alt:before { - content: "\e032"; -} - -.glyphicon-lock:before { - content: "\e033"; -} - -.glyphicon-flag:before { - content: "\e034"; -} - -.glyphicon-headphones:before { - content: "\e035"; -} - -.glyphicon-volume-off:before { - content: "\e036"; -} - -.glyphicon-volume-down:before { - content: "\e037"; -} - -.glyphicon-volume-up:before { - content: "\e038"; -} - -.glyphicon-qrcode:before { - content: "\e039"; -} - -.glyphicon-barcode:before { - content: "\e040"; -} - -.glyphicon-tag:before { - content: "\e041"; -} - -.glyphicon-tags:before { - content: "\e042"; -} - -.glyphicon-book:before { - content: "\e043"; -} - -.glyphicon-bookmark:before { - content: "\e044"; -} - -.glyphicon-print:before { - content: "\e045"; -} - -.glyphicon-camera:before { - content: "\e046"; -} - -.glyphicon-font:before { - content: "\e047"; -} - -.glyphicon-bold:before { - content: "\e048"; -} - -.glyphicon-italic:before { - content: "\e049"; -} - -.glyphicon-text-height:before { - content: "\e050"; -} - -.glyphicon-text-width:before { - content: "\e051"; -} - -.glyphicon-align-left:before { - content: "\e052"; -} - -.glyphicon-align-center:before { - content: "\e053"; -} - -.glyphicon-align-right:before { - content: "\e054"; -} - -.glyphicon-align-justify:before { - content: "\e055"; -} - -.glyphicon-list:before { - content: "\e056"; -} - -.glyphicon-indent-left:before { - content: "\e057"; -} - -.glyphicon-indent-right:before { - content: "\e058"; -} - -.glyphicon-facetime-video:before { - content: "\e059"; -} - -.glyphicon-picture:before { - content: "\e060"; -} - -.glyphicon-map-marker:before { - content: "\e062"; -} - -.glyphicon-adjust:before { - content: "\e063"; -} - -.glyphicon-tint:before { - content: "\e064"; -} - -.glyphicon-edit:before { - content: "\e065"; -} - -.glyphicon-share:before { - content: "\e066"; -} - -.glyphicon-check:before { - content: "\e067"; -} - -.glyphicon-move:before { - content: "\e068"; -} - -.glyphicon-step-backward:before { - content: "\e069"; -} - -.glyphicon-fast-backward:before { - content: "\e070"; -} - -.glyphicon-backward:before { - content: "\e071"; -} - -.glyphicon-play:before { - content: "\e072"; -} - -.glyphicon-pause:before { - content: "\e073"; -} - -.glyphicon-stop:before { - content: "\e074"; -} - -.glyphicon-forward:before { - content: "\e075"; -} - -.glyphicon-fast-forward:before { - content: "\e076"; -} - -.glyphicon-step-forward:before { - content: "\e077"; -} - -.glyphicon-eject:before { - content: "\e078"; -} - -.glyphicon-chevron-left:before { - content: "\e079"; -} - -.glyphicon-chevron-right:before { - content: "\e080"; -} - -.glyphicon-plus-sign:before { - content: "\e081"; -} - -.glyphicon-minus-sign:before { - content: "\e082"; -} - -.glyphicon-remove-sign:before { - content: "\e083"; -} - -.glyphicon-ok-sign:before { - content: "\e084"; -} - -.glyphicon-question-sign:before { - content: "\e085"; -} - -.glyphicon-info-sign:before { - content: "\e086"; -} - -.glyphicon-screenshot:before { - content: "\e087"; -} - -.glyphicon-remove-circle:before { - content: "\e088"; -} - -.glyphicon-ok-circle:before { - content: "\e089"; -} - -.glyphicon-ban-circle:before { - content: "\e090"; -} - -.glyphicon-arrow-left:before { - content: "\e091"; -} - -.glyphicon-arrow-right:before { - content: "\e092"; -} - -.glyphicon-arrow-up:before { - content: "\e093"; -} - -.glyphicon-arrow-down:before { - content: "\e094"; -} - -.glyphicon-share-alt:before { - content: "\e095"; -} - -.glyphicon-resize-full:before { - content: "\e096"; -} - -.glyphicon-resize-small:before { - content: "\e097"; -} - -.glyphicon-exclamation-sign:before { - content: "\e101"; -} - -.glyphicon-gift:before { - content: "\e102"; -} - -.glyphicon-leaf:before { - content: "\e103"; -} - -.glyphicon-fire:before { - content: "\e104"; -} - -.glyphicon-eye-open:before { - content: "\e105"; -} - -.glyphicon-eye-close:before { - content: "\e106"; -} - -.glyphicon-warning-sign:before { - content: "\e107"; -} - -.glyphicon-plane:before { - content: "\e108"; -} - -.glyphicon-calendar:before { - content: "\e109"; -} - -.glyphicon-random:before { - content: "\e110"; -} - -.glyphicon-comment:before { - content: "\e111"; -} - -.glyphicon-magnet:before { - content: "\e112"; -} - -.glyphicon-chevron-up:before { - content: "\e113"; -} - -.glyphicon-chevron-down:before { - content: "\e114"; -} - -.glyphicon-retweet:before { - content: "\e115"; -} - -.glyphicon-shopping-cart:before { - content: "\e116"; -} - -.glyphicon-folder-close:before { - content: "\e117"; -} - -.glyphicon-folder-open:before { - content: "\e118"; -} - -.glyphicon-resize-vertical:before { - content: "\e119"; -} - -.glyphicon-resize-horizontal:before { - content: "\e120"; -} - -.glyphicon-hdd:before { - content: "\e121"; -} - -.glyphicon-bullhorn:before { - content: "\e122"; -} - -.glyphicon-bell:before { - content: "\e123"; -} - -.glyphicon-certificate:before { - content: "\e124"; -} - -.glyphicon-thumbs-up:before { - content: "\e125"; -} - -.glyphicon-thumbs-down:before { - content: "\e126"; -} - -.glyphicon-hand-right:before { - content: "\e127"; -} - -.glyphicon-hand-left:before { - content: "\e128"; -} - -.glyphicon-hand-up:before { - content: "\e129"; -} - -.glyphicon-hand-down:before { - content: "\e130"; -} - -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} - -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} - -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} - -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} - -.glyphicon-globe:before { - content: "\e135"; -} - -.glyphicon-wrench:before { - content: "\e136"; -} - -.glyphicon-tasks:before { - content: "\e137"; -} - -.glyphicon-filter:before { - content: "\e138"; -} - -.glyphicon-briefcase:before { - content: "\e139"; -} - -.glyphicon-fullscreen:before { - content: "\e140"; -} - -.glyphicon-dashboard:before { - content: "\e141"; -} - -.glyphicon-paperclip:before { - content: "\e142"; -} - -.glyphicon-heart-empty:before { - content: "\e143"; -} - -.glyphicon-link:before { - content: "\e144"; -} - -.glyphicon-phone:before { - content: "\e145"; -} - -.glyphicon-pushpin:before { - content: "\e146"; -} - -.glyphicon-usd:before { - content: "\e148"; -} - -.glyphicon-gbp:before { - content: "\e149"; -} - -.glyphicon-sort:before { - content: "\e150"; -} - -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} - -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} - -.glyphicon-sort-by-order:before { - content: "\e153"; -} - -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} - -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} - -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} - -.glyphicon-unchecked:before { - content: "\e157"; -} - -.glyphicon-expand:before { - content: "\e158"; -} - -.glyphicon-collapse-down:before { - content: "\e159"; -} - -.glyphicon-collapse-up:before { - content: "\e160"; -} - -.glyphicon-log-in:before { - content: "\e161"; -} - -.glyphicon-flash:before { - content: "\e162"; -} - -.glyphicon-log-out:before { - content: "\e163"; -} - -.glyphicon-new-window:before { - content: "\e164"; -} - -.glyphicon-record:before { - content: "\e165"; -} - -.glyphicon-save:before { - content: "\e166"; -} - -.glyphicon-open:before { - content: "\e167"; -} - -.glyphicon-saved:before { - content: "\e168"; -} - -.glyphicon-import:before { - content: "\e169"; -} - -.glyphicon-export:before { - content: "\e170"; -} - -.glyphicon-send:before { - content: "\e171"; -} - -.glyphicon-floppy-disk:before { - content: "\e172"; -} - -.glyphicon-floppy-saved:before { - content: "\e173"; -} - -.glyphicon-floppy-remove:before { - content: "\e174"; -} - -.glyphicon-floppy-save:before { - content: "\e175"; -} - -.glyphicon-floppy-open:before { - content: "\e176"; -} - -.glyphicon-credit-card:before { - content: "\e177"; -} - -.glyphicon-transfer:before { - content: "\e178"; -} - -.glyphicon-cutlery:before { - content: "\e179"; -} - -.glyphicon-header:before { - content: "\e180"; -} - -.glyphicon-compressed:before { - content: "\e181"; -} - -.glyphicon-earphone:before { - content: "\e182"; -} - -.glyphicon-phone-alt:before { - content: "\e183"; -} - -.glyphicon-tower:before { - content: "\e184"; -} - -.glyphicon-stats:before { - content: "\e185"; -} - -.glyphicon-sd-video:before { - content: "\e186"; -} - -.glyphicon-hd-video:before { - content: "\e187"; -} - -.glyphicon-subtitles:before { - content: "\e188"; -} - -.glyphicon-sound-stereo:before { - content: "\e189"; -} - -.glyphicon-sound-dolby:before { - content: "\e190"; -} - -.glyphicon-sound-5-1:before { - content: "\e191"; -} - -.glyphicon-sound-6-1:before { - content: "\e192"; -} - -.glyphicon-sound-7-1:before { - content: "\e193"; -} - -.glyphicon-copyright-mark:before { - content: "\e194"; -} - -.glyphicon-registration-mark:before { - content: "\e195"; -} - -.glyphicon-cloud-download:before { - content: "\e197"; -} - -.glyphicon-cloud-upload:before { - content: "\e198"; -} - -.glyphicon-tree-conifer:before { - content: "\e199"; -} - -.glyphicon-tree-deciduous:before { - content: "\e200"; -} - -.glyphicon-cd:before { - content: "\e201"; -} - -.glyphicon-save-file:before { - content: "\e202"; -} - -.glyphicon-open-file:before { - content: "\e203"; -} - -.glyphicon-level-up:before { - content: "\e204"; -} - -.glyphicon-copy:before { - content: "\e205"; -} - -.glyphicon-paste:before { - content: "\e206"; -} - -.glyphicon-alert:before { - content: "\e209"; -} - -.glyphicon-equalizer:before { - content: "\e210"; -} - -.glyphicon-king:before { - content: "\e211"; -} - -.glyphicon-queen:before { - content: "\e212"; -} - -.glyphicon-pawn:before { - content: "\e213"; -} - -.glyphicon-bishop:before { - content: "\e214"; -} - -.glyphicon-knight:before { - content: "\e215"; -} - -.glyphicon-baby-formula:before { - content: "\e216"; -} - -.glyphicon-tent:before { - content: "\26fa"; -} - -.glyphicon-blackboard:before { - content: "\e218"; -} - -.glyphicon-bed:before { - content: "\e219"; -} - -.glyphicon-apple:before { - content: "\f8ff"; -} - -.glyphicon-erase:before { - content: "\e221"; -} - -.glyphicon-hourglass:before { - content: "\231b"; -} - -.glyphicon-lamp:before { - content: "\e223"; -} - -.glyphicon-duplicate:before { - content: "\e224"; -} - -.glyphicon-piggy-bank:before { - content: "\e225"; -} - -.glyphicon-scissors:before { - content: "\e226"; -} - -.glyphicon-bitcoin:before { - content: "\e227"; -} - -.glyphicon-btc:before { - content: "\e227"; -} - -.glyphicon-xbt:before { - content: "\e227"; -} - -.glyphicon-yen:before { - content: "\00a5"; -} - -.glyphicon-jpy:before { - content: "\00a5"; -} - -.glyphicon-ruble:before { - content: "\20bd"; -} - -.glyphicon-rub:before { - content: "\20bd"; -} - -.glyphicon-scale:before { - content: "\e230"; -} - -.glyphicon-ice-lolly:before { - content: "\e231"; -} - -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} - -.glyphicon-education:before { - content: "\e233"; -} - -.glyphicon-option-horizontal:before { - content: "\e234"; -} - -.glyphicon-option-vertical:before { - content: "\e235"; -} - -.glyphicon-menu-hamburger:before { - content: "\e236"; -} - -.glyphicon-modal-window:before { - content: "\e237"; -} - -.glyphicon-oil:before { - content: "\e238"; -} - -.glyphicon-grain:before { - content: "\e239"; -} - -.glyphicon-sunglasses:before { - content: "\e240"; -} - -.glyphicon-text-size:before { - content: "\e241"; -} - -.glyphicon-text-color:before { - content: "\e242"; -} - -.glyphicon-text-background:before { - content: "\e243"; -} - -.glyphicon-object-align-top:before { - content: "\e244"; -} - -.glyphicon-object-align-bottom:before { - content: "\e245"; -} - -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} - -.glyphicon-object-align-left:before { - content: "\e247"; -} - -.glyphicon-object-align-vertical:before { - content: "\e248"; -} - -.glyphicon-object-align-right:before { - content: "\e249"; -} - -.glyphicon-triangle-right:before { - content: "\e250"; -} - -.glyphicon-triangle-left:before { - content: "\e251"; -} - -.glyphicon-triangle-bottom:before { - content: "\e252"; -} - -.glyphicon-triangle-top:before { - content: "\e253"; -} - -.glyphicon-console:before { - content: "\e254"; -} - -.glyphicon-superscript:before { - content: "\e255"; -} - -.glyphicon-subscript:before { - content: "\e256"; -} - -.glyphicon-menu-left:before { - content: "\e257"; -} - -.glyphicon-menu-right:before { - content: "\e258"; -} - -.glyphicon-menu-down:before { - content: "\e259"; -} - -.glyphicon-menu-up:before { - content: "\e260"; -} - -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - - *:before, - *:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -body { - font-family: roboto; - font-size: 13px; - line-height: 1.42857143; - color: #5e5e5e; - background-color: #edecec !important; -} - -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -a { - color: #2196f3; - text-decoration: none; -} - - a:hover, - a:focus { - color: #0a6ebd; - text-decoration: none; - } - - a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - outline: none !important; - } - -figure { - margin: 0; -} - -img { - vertical-align: middle; -} - -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} - -.img-rounded { - border-radius: 2px; -} - -.img-thumbnail { - padding: 3px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #ededed; - border-radius: 2px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} - -.img-circle { - border-radius: 50%; -} - -hr { - margin-top: 18px; - margin-bottom: 18px; - border: 0; - border-top: 1px solid #eeeeee; -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} - -[role="button"] { - cursor: pointer; -} - -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: #000000; -} - - h1 small, - h2 small, - h3 small, - h4 small, - h5 small, - h6 small, - .h1 small, - .h2 small, - .h3 small, - .h4 small, - .h5 small, - .h6 small, - h1 .small, - h2 .small, - h3 .small, - h4 .small, - h5 .small, - h6 .small, - .h1 .small, - .h2 .small, - .h3 .small, - .h4 .small, - .h5 .small, - .h6 .small { - font-weight: normal; - line-height: 1; - color: #777777; - } - -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 18px; - margin-bottom: 9px; -} - - h1 small, - .h1 small, - h2 small, - .h2 small, - h3 small, - .h3 small, - h1 .small, - .h1 .small, - h2 .small, - .h2 .small, - h3 .small, - .h3 .small { - font-size: 65%; - } - -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 9px; - margin-bottom: 9px; -} - - h4 small, - .h4 small, - h5 small, - .h5 small, - h6 small, - .h6 small, - h4 .small, - .h4 .small, - h5 .small, - .h5 .small, - h6 .small, - .h6 .small { - font-size: 75%; - } - -h1, -.h1 { - font-size: 33px; -} - -h2, -.h2 { - font-size: 27px; -} - -h3, -.h3 { - font-size: 23px; -} - -h4, -.h4 { - font-size: 17px; -} - -h5, -.h5 { - font-size: 13px; -} - -h6, -.h6 { - font-size: 12px; -} - -p { - margin: 0 0 9px; -} - -.lead { - margin-bottom: 18px; - font-size: 14px; - font-weight: 300; - line-height: 1.4; -} - -@media (min-width: 768px) { - .lead { - font-size: 19.5px; - } -} - -small, -.small { - font-size: 92%; -} - -mark, -.mark { - background-color: #fcf8e3; - padding: .2em; -} - -.text-left { - text-align: left; -} - -.text-right { - text-align: right; -} - -.text-center { - text-align: center; -} - -.text-justify { - text-align: justify; -} - -.text-nowrap { - white-space: nowrap; -} - -.text-lowercase { - text-transform: lowercase; -} - -.text-uppercase { - text-transform: uppercase; -} - -.text-capitalize { - text-transform: capitalize; -} - -.text-muted { - color: #777777; -} - -.text-primary { - color: #2196f3; -} - -a.text-primary:hover { - color: #0c7cd5; -} - -.text-success { - color: #4caf50; -} - -a.text-success:hover { - color: #3d8b40; -} - -.text-info { - color: #2196f3; -} - -a.text-info:hover { - color: #0c7cd5; -} - -.text-warning { - color: #ff9800; -} - -a.text-warning:hover { - color: #cc7a00; -} - -.text-danger { - color: #f44336; -} - -a.text-danger:hover { - color: #ea1c0d; -} - -.bg-primary { - color: #fff; - background-color: #2196f3; -} - -a.bg-primary:hover { - background-color: #0c7cd5; -} - -.bg-success { - background-color: #dff0d8; -} - -a.bg-success:hover { - background-color: #c1e2b3; -} - -.bg-info { - background-color: #d9edf7; -} - -a.bg-info:hover { - background-color: #afd9ee; -} - -.bg-warning { - background-color: #fcf8e3; -} - -a.bg-warning:hover { - background-color: #f7ecb5; -} - -.bg-danger { - background-color: #f2dede; -} - -a.bg-danger:hover { - background-color: #e4b9b9; -} - -.page-header { - padding-bottom: 8px; - margin: 36px 0 18px; - border-bottom: 1px solid #eeeeee; -} - -ul, -ol { - margin-top: 0; - margin-bottom: 9px; -} - - ul ul, - ol ul, - ul ol, - ol ol { - margin-bottom: 0; - } - -.list-unstyled { - padding-left: 0; - list-style: none; -} - -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} - - .list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; - } - -dl { - margin-top: 0; - margin-bottom: 18px; -} - -dt, -dd { - line-height: 1.42857143; -} - -dt { - font-weight: bold; -} - -dd { - margin-left: 0; -} - -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .dl-horizontal dd { - margin-left: 180px; - } -} - -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777777; -} - -.initialism { - font-size: 90%; - text-transform: uppercase; -} - -blockquote { - padding: 9px 18px; - margin: 0 0 18px; - font-size: 16.25px; - border-left: 5px solid #eeeeee; -} - - blockquote p:last-child, - blockquote ul:last-child, - blockquote ol:last-child { - margin-bottom: 0; - } - - blockquote footer, - blockquote small, - blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777777; - } - - blockquote footer:before, - blockquote small:before, - blockquote .small:before { - content: '\2014 \00A0'; - } - - .blockquote-reverse, - blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; - text-align: right; - } - - .blockquote-reverse footer:before, - blockquote.pull-right footer:before, - .blockquote-reverse small:before, - blockquote.pull-right small:before, - .blockquote-reverse .small:before, - blockquote.pull-right .small:before { - content: ''; - } - - .blockquote-reverse footer:after, - blockquote.pull-right footer:after, - .blockquote-reverse small:after, - blockquote.pull-right small:after, - .blockquote-reverse .small:after, - blockquote.pull-right .small:after { - content: '\00A0 \2014'; - } - -address { - margin-bottom: 18px; - font-style: normal; - line-height: 1.42857143; -} - -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} - -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 2px; -} - -kbd { - padding: 2px 4px; - font-size: 90%; - color: #ffffff; - background-color: #333333; - border-radius: 2px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} - - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; - } - -pre { - display: block; - padding: 8.5px; - margin: 0 0 9px; - font-size: 12px; - line-height: 1.42857143; - word-break: break-all; - word-wrap: break-word; - color: #333333; - background-color: #f5f5f5; - border: 1px solid #cccccc; - border-radius: 2px; -} - - pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; - } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} - -@media (min-width: 768px) { - .container { - width: calc(100% - 30px); - } -} - -@media (min-width: 992px) { - .container { - width: calc(100% - 30px); - } -} - -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} - -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} - -.row { - margin-left: -15px; - margin-right: -15px; -} - -.col-xs-1, -.col-sm-1, -.col-md-1, -.col-lg-1, -.col-xs-2, -.col-sm-2, -.col-md-2, -.col-lg-2, -.col-xs-3, -.col-sm-3, -.col-md-3, -.col-lg-3, -.col-xs-4, -.col-sm-4, -.col-md-4, -.col-lg-4, -.col-xs-5, -.col-sm-5, -.col-md-5, -.col-lg-5, -.col-xs-6, -.col-sm-6, -.col-md-6, -.col-lg-6, -.col-xs-7, -.col-sm-7, -.col-md-7, -.col-lg-7, -.col-xs-8, -.col-sm-8, -.col-md-8, -.col-lg-8, -.col-xs-9, -.col-sm-9, -.col-md-9, -.col-lg-9, -.col-xs-10, -.col-sm-10, -.col-md-10, -.col-lg-10, -.col-xs-11, -.col-sm-11, -.col-md-11, -.col-lg-11, -.col-xs-12, -.col-sm-12, -.col-md-12, -.col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} - -.col-xs-1, -.col-xs-2, -.col-xs-3, -.col-xs-4, -.col-xs-5, -.col-xs-6, -.col-xs-7, -.col-xs-8, -.col-xs-9, -.col-xs-10, -.col-xs-11, -.col-xs-12 { - float: left; -} - -.col-xs-12 { - width: 100%; -} - -.col-xs-11 { - width: 91.66666667%; -} - -.col-xs-10 { - width: 83.33333333%; -} - -.col-xs-9 { - width: 75%; -} - -.col-xs-8 { - width: 66.66666667%; -} - -.col-xs-7 { - width: 58.33333333%; -} - -.col-xs-6 { - width: 50%; -} - -.col-xs-5 { - width: 41.66666667%; -} - -.col-xs-4 { - width: 33.33333333%; -} - -.col-xs-3 { - width: 25%; -} - -.col-xs-2 { - width: 16.66666667%; -} - -.col-xs-1 { - width: 8.33333333%; -} - -.col-xs-pull-12 { - right: 100%; -} - -.col-xs-pull-11 { - right: 91.66666667%; -} - -.col-xs-pull-10 { - right: 83.33333333%; -} - -.col-xs-pull-9 { - right: 75%; -} - -.col-xs-pull-8 { - right: 66.66666667%; -} - -.col-xs-pull-7 { - right: 58.33333333%; -} - -.col-xs-pull-6 { - right: 50%; -} - -.col-xs-pull-5 { - right: 41.66666667%; -} - -.col-xs-pull-4 { - right: 33.33333333%; -} - -.col-xs-pull-3 { - right: 25%; -} - -.col-xs-pull-2 { - right: 16.66666667%; -} - -.col-xs-pull-1 { - right: 8.33333333%; -} - -.col-xs-pull-0 { - right: auto; -} - -.col-xs-push-12 { - left: 100%; -} - -.col-xs-push-11 { - left: 91.66666667%; -} - -.col-xs-push-10 { - left: 83.33333333%; -} - -.col-xs-push-9 { - left: 75%; -} - -.col-xs-push-8 { - left: 66.66666667%; -} - -.col-xs-push-7 { - left: 58.33333333%; -} - -.col-xs-push-6 { - left: 50%; -} - -.col-xs-push-5 { - left: 41.66666667%; -} - -.col-xs-push-4 { - left: 33.33333333%; -} - -.col-xs-push-3 { - left: 25%; -} - -.col-xs-push-2 { - left: 16.66666667%; -} - -.col-xs-push-1 { - left: 8.33333333%; -} - -.col-xs-push-0 { - left: auto; -} - -.col-xs-offset-12 { - margin-left: 100%; -} - -.col-xs-offset-11 { - margin-left: 91.66666667%; -} - -.col-xs-offset-10 { - margin-left: 83.33333333%; -} - -.col-xs-offset-9 { - margin-left: 75%; -} - -.col-xs-offset-8 { - margin-left: 66.66666667%; -} - -.col-xs-offset-7 { - margin-left: 58.33333333%; -} - -.col-xs-offset-6 { - margin-left: 50%; -} - -.col-xs-offset-5 { - margin-left: 41.66666667%; -} - -.col-xs-offset-4 { - margin-left: 33.33333333%; -} - -.col-xs-offset-3 { - margin-left: 25%; -} - -.col-xs-offset-2 { - margin-left: 16.66666667%; -} - -.col-xs-offset-1 { - margin-left: 8.33333333%; -} - -.col-xs-offset-0 { - margin-left: 0%; -} - -@media (min-width: 768px) { - .col-sm-1, - .col-sm-2, - .col-sm-3, - .col-sm-4, - .col-sm-5, - .col-sm-6, - .col-sm-7, - .col-sm-8, - .col-sm-9, - .col-sm-10, - .col-sm-11, - .col-sm-12 { - float: left; - } - - .col-sm-12 { - width: 100%; - } - - .col-sm-11 { - width: 91.66666667%; - } - - .col-sm-10 { - width: 83.33333333%; - } - - .col-sm-9 { - width: 75%; - } - - .col-sm-8 { - width: 66.66666667%; - } - - .col-sm-7 { - width: 58.33333333%; - } - - .col-sm-6 { - width: 50%; - } - - .col-sm-5 { - width: 41.66666667%; - } - - .col-sm-4 { - width: 33.33333333%; - } - - .col-sm-3 { - width: 25%; - } - - .col-sm-2 { - width: 16.66666667%; - } - - .col-sm-1 { - width: 8.33333333%; - } - - .col-sm-pull-12 { - right: 100%; - } - - .col-sm-pull-11 { - right: 91.66666667%; - } - - .col-sm-pull-10 { - right: 83.33333333%; - } - - .col-sm-pull-9 { - right: 75%; - } - - .col-sm-pull-8 { - right: 66.66666667%; - } - - .col-sm-pull-7 { - right: 58.33333333%; - } - - .col-sm-pull-6 { - right: 50%; - } - - .col-sm-pull-5 { - right: 41.66666667%; - } - - .col-sm-pull-4 { - right: 33.33333333%; - } - - .col-sm-pull-3 { - right: 25%; - } - - .col-sm-pull-2 { - right: 16.66666667%; - } - - .col-sm-pull-1 { - right: 8.33333333%; - } - - .col-sm-pull-0 { - right: auto; - } - - .col-sm-push-12 { - left: 100%; - } - - .col-sm-push-11 { - left: 91.66666667%; - } - - .col-sm-push-10 { - left: 83.33333333%; - } - - .col-sm-push-9 { - left: 75%; - } - - .col-sm-push-8 { - left: 66.66666667%; - } - - .col-sm-push-7 { - left: 58.33333333%; - } - - .col-sm-push-6 { - left: 50%; - } - - .col-sm-push-5 { - left: 41.66666667%; - } - - .col-sm-push-4 { - left: 33.33333333%; - } - - .col-sm-push-3 { - left: 25%; - } - - .col-sm-push-2 { - left: 16.66666667%; - } - - .col-sm-push-1 { - left: 8.33333333%; - } - - .col-sm-push-0 { - left: auto; - } - - .col-sm-offset-12 { - margin-left: 100%; - } - - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - - .col-sm-offset-9 { - margin-left: 75%; - } - - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - - .col-sm-offset-6 { - margin-left: 50%; - } - - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - - .col-sm-offset-3 { - margin-left: 25%; - } - - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - - .col-sm-offset-0 { - margin-left: 0%; - } -} - -@media (min-width: 992px) { - .col-md-1, - .col-md-2, - .col-md-3, - .col-md-4, - .col-md-5, - .col-md-6, - .col-md-7, - .col-md-8, - .col-md-9, - .col-md-10, - .col-md-11, - .col-md-12 { - float: left; - } - - .col-md-12 { - width: 100%; - } - - .col-md-11 { - width: 91.66666667%; - } - - .col-md-10 { - width: 83.33333333%; - } - - .col-md-9 { - width: 75%; - } - - .col-md-8 { - width: 66.66666667%; - } - - .col-md-7 { - width: 58.33333333%; - } - - .col-md-6 { - width: 50%; - } - - .col-md-5 { - width: 41.66666667%; - } - - .col-md-4 { - width: 33.33333333%; - } - - .col-md-3 { - width: 25%; - } - - .col-md-2 { - width: 16.66666667%; - } - - .col-md-1 { - width: 8.33333333%; - } - - .col-md-pull-12 { - right: 100%; - } - - .col-md-pull-11 { - right: 91.66666667%; - } - - .col-md-pull-10 { - right: 83.33333333%; - } - - .col-md-pull-9 { - right: 75%; - } - - .col-md-pull-8 { - right: 66.66666667%; - } - - .col-md-pull-7 { - right: 58.33333333%; - } - - .col-md-pull-6 { - right: 50%; - } - - .col-md-pull-5 { - right: 41.66666667%; - } - - .col-md-pull-4 { - right: 33.33333333%; - } - - .col-md-pull-3 { - right: 25%; - } - - .col-md-pull-2 { - right: 16.66666667%; - } - - .col-md-pull-1 { - right: 8.33333333%; - } - - .col-md-pull-0 { - right: auto; - } - - .col-md-push-12 { - left: 100%; - } - - .col-md-push-11 { - left: 91.66666667%; - } - - .col-md-push-10 { - left: 83.33333333%; - } - - .col-md-push-9 { - left: 75%; - } - - .col-md-push-8 { - left: 66.66666667%; - } - - .col-md-push-7 { - left: 58.33333333%; - } - - .col-md-push-6 { - left: 50%; - } - - .col-md-push-5 { - left: 41.66666667%; - } - - .col-md-push-4 { - left: 33.33333333%; - } - - .col-md-push-3 { - left: 25%; - } - - .col-md-push-2 { - left: 16.66666667%; - } - - .col-md-push-1 { - left: 8.33333333%; - } - - .col-md-push-0 { - left: auto; - } - - .col-md-offset-12 { - margin-left: 100%; - } - - .col-md-offset-11 { - margin-left: 91.66666667%; - } - - .col-md-offset-10 { - margin-left: 83.33333333%; - } - - .col-md-offset-9 { - margin-left: 75%; - } - - .col-md-offset-8 { - margin-left: 66.66666667%; - } - - .col-md-offset-7 { - margin-left: 58.33333333%; - } - - .col-md-offset-6 { - margin-left: 50%; - } - - .col-md-offset-5 { - margin-left: 41.66666667%; - } - - .col-md-offset-4 { - margin-left: 33.33333333%; - } - - .col-md-offset-3 { - margin-left: 25%; - } - - .col-md-offset-2 { - margin-left: 16.66666667%; - } - - .col-md-offset-1 { - margin-left: 8.33333333%; - } - - .col-md-offset-0 { - margin-left: 0%; - } -} - -@media (min-width: 1200px) { - .col-lg-1, - .col-lg-2, - .col-lg-3, - .col-lg-4, - .col-lg-5, - .col-lg-6, - .col-lg-7, - .col-lg-8, - .col-lg-9, - .col-lg-10, - .col-lg-11, - .col-lg-12 { - float: left; - } - - .col-lg-12 { - width: 100%; - } - - .col-lg-11 { - width: 91.66666667%; - } - - .col-lg-10 { - width: 83.33333333%; - } - - .col-lg-9 { - width: 75%; - } - - .col-lg-8 { - width: 66.66666667%; - } - - .col-lg-7 { - width: 58.33333333%; - } - - .col-lg-6 { - width: 50%; - } - - .col-lg-5 { - width: 41.66666667%; - } - - .col-lg-4 { - width: 33.33333333%; - } - - .col-lg-3 { - width: 25%; - } - - .col-lg-2 { - width: 16.66666667%; - } - - .col-lg-1 { - width: 8.33333333%; - } - - .col-lg-pull-12 { - right: 100%; - } - - .col-lg-pull-11 { - right: 91.66666667%; - } - - .col-lg-pull-10 { - right: 83.33333333%; - } - - .col-lg-pull-9 { - right: 75%; - } - - .col-lg-pull-8 { - right: 66.66666667%; - } - - .col-lg-pull-7 { - right: 58.33333333%; - } - - .col-lg-pull-6 { - right: 50%; - } - - .col-lg-pull-5 { - right: 41.66666667%; - } - - .col-lg-pull-4 { - right: 33.33333333%; - } - - .col-lg-pull-3 { - right: 25%; - } - - .col-lg-pull-2 { - right: 16.66666667%; - } - - .col-lg-pull-1 { - right: 8.33333333%; - } - - .col-lg-pull-0 { - right: auto; - } - - .col-lg-push-12 { - left: 100%; - } - - .col-lg-push-11 { - left: 91.66666667%; - } - - .col-lg-push-10 { - left: 83.33333333%; - } - - .col-lg-push-9 { - left: 75%; - } - - .col-lg-push-8 { - left: 66.66666667%; - } - - .col-lg-push-7 { - left: 58.33333333%; - } - - .col-lg-push-6 { - left: 50%; - } - - .col-lg-push-5 { - left: 41.66666667%; - } - - .col-lg-push-4 { - left: 33.33333333%; - } - - .col-lg-push-3 { - left: 25%; - } - - .col-lg-push-2 { - left: 16.66666667%; - } - - .col-lg-push-1 { - left: 8.33333333%; - } - - .col-lg-push-0 { - left: auto; - } - - .col-lg-offset-12 { - margin-left: 100%; - } - - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - - .col-lg-offset-9 { - margin-left: 75%; - } - - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - - .col-lg-offset-6 { - margin-left: 50%; - } - - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - - .col-lg-offset-3 { - margin-left: 25%; - } - - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - - .col-lg-offset-0 { - margin-left: 0%; - } -} - -table { - background-color: transparent; -} - -caption { - padding-top: 10px; - padding-bottom: 10px; - color: #777777; - text-align: left; -} - -th { - text-align: left; -} - -.table { - width: 100%; - max-width: 100%; - margin-bottom: 18px; -} - - .table > thead > tr > th, - .table > tbody > tr > th, - .table > tfoot > tr > th, - .table > thead > tr > td, - .table > tbody > tr > td, - .table > tfoot > tr > td { - padding: 10px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #f0f0f0; - } - - .table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #f0f0f0; - } - - .table > caption + thead > tr:first-child > th, - .table > colgroup + thead > tr:first-child > th, - .table > thead:first-child > tr:first-child > th, - .table > caption + thead > tr:first-child > td, - .table > colgroup + thead > tr:first-child > td, - .table > thead:first-child > tr:first-child > td { - border-top: 0; - } - - .table > tbody + tbody { - border-top: 2px solid #f0f0f0; - } - - .table .table { - background-color: #edecec; - } - -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 7px; -} - -.table-bordered { - border: 1px solid #f0f0f0; -} - - .table-bordered > thead > tr > th, - .table-bordered > tbody > tr > th, - .table-bordered > tfoot > tr > th, - .table-bordered > thead > tr > td, - .table-bordered > tbody > tr > td, - .table-bordered > tfoot > tr > td { - border: 1px solid #f0f0f0; - } - - .table-bordered > thead > tr > th, - .table-bordered > thead > tr > td { - border-bottom-width: 2px; - } - -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f4f4f4; -} - -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} - -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} - -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} - -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #fffcbe; -} - -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #fffba4; -} - -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} - -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} - -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} - -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} - -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} - -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} - -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} - -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} - -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} - -.table > tbody > tr:nth-of-type(2n+1) { - /*background-color: #f4f4f4;*/ -} - -table > tbody > tr.active{ - background-color: #f4f4f4; - cursor:pointer; -} - -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 13.5px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #f0f0f0; - } - - .table-responsive > .table { - margin-bottom: 0; - } - - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - - .table-responsive > .table-bordered { - border: 0; - } - - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} - -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 18px; - font-size: 19.5px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} - -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} - -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} - -input[type="file"] { - display: block; -} - -input[type="range"] { - display: block; - width: 100%; -} - -select[multiple], -select[size] { - height: auto; -} - -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - outline: none !important; -} - -output { - display: block; - padding-top: 7px; - font-size: 13px; - line-height: 1.42857143; - color: #555555; -} - -.form-control { - display: block; - width: 100%; - height: 35px; - padding: 6px 12px; - font-size: 13px; - line-height: 1.42857143; - color: #555555; - background-color: #ffffff; - background-image: none; - border: 1px solid #e0e0e0; - border-radius: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} - - .form-control:focus { - border-color: #b4b4b4; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(180, 180, 180, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(180, 180, 180, 0.6); - } - - .form-control::-moz-placeholder { - color: #999999; - opacity: 1; - } - - .form-control:-ms-input-placeholder { - color: #999999; - } - - .form-control::-webkit-input-placeholder { - color: #999999; - } - - .form-control[disabled], - .form-control[readonly], - fieldset[disabled] .form-control { - background-color: #eeeeee; - opacity: 1; - } - - .form-control[disabled], - fieldset[disabled] .form-control { - cursor: not-allowed; - } - -textarea.form-control { - height: auto; -} - -input[type="search"] { - -webkit-appearance: none; -} - -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - line-height: 35px; - } - - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 40px; - } -} - -.form-group { - margin-bottom: 15px; -} - -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} - - .radio label, - .checkbox label { - min-height: 18px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; - } - - .radio input[type="radio"], - .radio-inline input[type="radio"], - .checkbox input[type="checkbox"], - .checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; - } - - .radio + .radio, - .checkbox + .checkbox { - margin-top: -5px; - } - -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} - - .radio-inline + .radio-inline, - .checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; - } - -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} - -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} - -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} - -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; - min-height: 31px; -} - - .form-control-static.input-lg, - .form-control-static.input-sm { - padding-left: 0; - padding-right: 0; - } - -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 2px; -} - -select.input-sm { - height: 30px; - line-height: 30px; -} - -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} - -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 2px; -} - -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} - -textarea.form-group-sm .form-control, -select[multiple].form-group-sm .form-control { - height: auto; -} - -.form-group-sm .form-control-static { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - min-height: 30px; -} - -.input-lg { - height: 40px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 0px; -} - -select.input-lg { - height: 40px; - line-height: 40px; -} - -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} - -.form-group-lg .form-control { - height: 40px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 0px; -} - -select.form-group-lg .form-control { - height: 40px; - line-height: 40px; -} - -textarea.form-group-lg .form-control, -select[multiple].form-group-lg .form-control { - height: auto; -} - -.form-group-lg .form-control-static { - height: 40px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - min-height: 35px; -} - -.has-feedback { - position: relative; -} - - .has-feedback .form-control { - padding-right: 43.75px; - } - -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 35px; - height: 35px; - line-height: 35px; - text-align: center; - pointer-events: none; -} - -.input-lg + .form-control-feedback { - width: 40px; - height: 40px; - line-height: 40px; -} - -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} - -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #4caf50; -} - -.has-success .form-control { - border-color: #4caf50; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - - .has-success .form-control:focus { - border-color: #3d8b40; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #92cf94; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #92cf94; - } - -.has-success .input-group-addon { - color: #4caf50; - border-color: #4caf50; - background-color: #dff0d8; -} - -.has-success .form-control-feedback { - color: #4caf50; -} - -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #ff9800; -} - -.has-warning .form-control { - border-color: #ff9800; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - - .has-warning .form-control:focus { - border-color: #cc7a00; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffc166; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffc166; - } - -.has-warning .input-group-addon { - color: #ff9800; - border-color: #ff9800; - background-color: #fcf8e3; -} - -.has-warning .form-control-feedback { - color: #ff9800; -} - -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #f44336; -} - -.has-error .form-control { - border-color: #f44336; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - - .has-error .form-control:focus { - border-color: #ea1c0d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f99d97; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f99d97; - } - -.has-error .input-group-addon { - color: #f44336; - border-color: #f44336; - background-color: #f2dede; -} - -.has-error .form-control-feedback { - color: #f44336; -} - -.has-feedback label ~ .form-control-feedback { - top: 23px; -} - -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} - -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #9e9e9e; -} - -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - - .form-inline .form-control-static { - display: inline-block; - } - - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - - .form-inline .input-group > .form-control { - width: 100%; - } - - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} - -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; -} - -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 25px; -} - -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} - -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 7px; - } -} - -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} - -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.333333px; - } -} - -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} - -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: 400; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 12px; - font-size: 13px; - line-height: 1.42857143; - border-radius: 2px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - - .btn:focus, - .btn:active:focus, - .btn.active:focus, - .btn.focus, - .btn:active.focus, - .btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - outline: none !important; - } - - .btn:hover, - .btn:focus, - .btn.focus { - color: #333333; - text-decoration: none; - } - - .btn:active, - .btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - } - - .btn.disabled, - .btn[disabled], - fieldset[disabled] .btn { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - } - -.btn-default { - color: #333333; - background-color: #ffffff; - border-color: #cccccc; -} - - .btn-default:hover, - .btn-default:focus, - .btn-default.focus, - .btn-default:active, - .btn-default.active, - .open > .dropdown-toggle.btn-default { - color: #333333; - background-color: #e6e6e6; - border-color: #adadad; - } - - .btn-default:active, - .btn-default.active, - .open > .dropdown-toggle.btn-default { - background-image: none; - } - - .btn-default.disabled, - .btn-default[disabled], - fieldset[disabled] .btn-default, - .btn-default.disabled:hover, - .btn-default[disabled]:hover, - fieldset[disabled] .btn-default:hover, - .btn-default.disabled:focus, - .btn-default[disabled]:focus, - fieldset[disabled] .btn-default:focus, - .btn-default.disabled.focus, - .btn-default[disabled].focus, - fieldset[disabled] .btn-default.focus, - .btn-default.disabled:active, - .btn-default[disabled]:active, - fieldset[disabled] .btn-default:active, - .btn-default.disabled.active, - .btn-default[disabled].active, - fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #cccccc; - } - - .btn-default .badge { - color: #ffffff; - background-color: #333333; - } - - .btn-default:hover, - .btn-default:focus, - .btn-default.focus, - .btn-default:active, - .open > .dropdown-toggle.btn-default { - color: #333333; - background-color: #ffffff; - border-color: transparent; - } - - .btn-default:active, - .btn-default.active, - .open > .dropdown-toggle.btn-default { - background-image: none; - } - - .btn-default.disabled, - .btn-default[disabled], - fieldset[disabled] .btn-default, - .btn-default.disabled:hover, - .btn-default[disabled]:hover, - fieldset[disabled] .btn-default:hover, - .btn-default.disabled:focus, - .btn-default[disabled]:focus, - fieldset[disabled] .btn-default:focus, - .btn-default.disabled.focus, - .btn-default[disabled].focus, - fieldset[disabled] .btn-default.focus, - .btn-default.disabled:active, - .btn-default[disabled]:active, - fieldset[disabled] .btn-default:active { - background-color: #ffffff; - border-color: #cccccc; - } - - .btn-default .badge { - color: #ffffff; - background-color: #333333; - } - -.btn-primary { - color: #ffffff; - background-color: #2196f3; - border-color: #0d8aee; -} - - .btn-primary:hover, - .btn-primary:focus, - .btn-primary.focus, - .btn-primary:active, - .btn-primary.active, - .open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #0c7cd5; - border-color: #0a68b4; - } - - .btn-primary:active, - .btn-primary.active, - .open > .dropdown-toggle.btn-primary { - background-image: none; - } - - .btn-primary.disabled, - .btn-primary[disabled], - fieldset[disabled] .btn-primary, - .btn-primary.disabled:hover, - .btn-primary[disabled]:hover, - fieldset[disabled] .btn-primary:hover, - .btn-primary.disabled:focus, - .btn-primary[disabled]:focus, - fieldset[disabled] .btn-primary:focus, - .btn-primary.disabled.focus, - .btn-primary[disabled].focus, - fieldset[disabled] .btn-primary.focus, - .btn-primary.disabled:active, - .btn-primary[disabled]:active, - fieldset[disabled] .btn-primary:active, - .btn-primary.disabled.active, - .btn-primary[disabled].active, - fieldset[disabled] .btn-primary.active { - background-color: #2196f3; - border-color: #0d8aee; - } - - .btn-primary .badge { - color: #2196f3; - background-color: #ffffff; - } - - .btn-primary:hover, - .btn-primary:focus, - .btn-primary.focus, - .btn-primary:active, - .open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #2196f3; - border-color: transparent; - } - - .btn-primary:active, - .btn-primary.active, - .open > .dropdown-toggle.btn-primary { - background-image: none; - } - - .btn-primary.disabled, - .btn-primary[disabled], - fieldset[disabled] .btn-primary, - .btn-primary.disabled:hover, - .btn-primary[disabled]:hover, - fieldset[disabled] .btn-primary:hover, - .btn-primary.disabled:focus, - .btn-primary[disabled]:focus, - fieldset[disabled] .btn-primary:focus, - .btn-primary.disabled.focus, - .btn-primary[disabled].focus, - fieldset[disabled] .btn-primary.focus, - .btn-primary.disabled:active, - .btn-primary[disabled]:active, - fieldset[disabled] .btn-primary:active { - background-color: #2196f3; - border-color: #0d8aee; - } - - .btn-primary .badge { - color: #2196f3; - background-color: #ffffff; - } - -.btn-success { - color: #ffffff; - background-color: #4caf50; - border-color: #449d48; -} - - .btn-success:hover, - .btn-success:focus, - .btn-success.focus, - .btn-success:active, - .btn-success.active, - .open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #3d8b40; - border-color: #327334; - } - - .btn-success:active, - .btn-success.active, - .open > .dropdown-toggle.btn-success { - background-image: none; - } - - .btn-success.disabled, - .btn-success[disabled], - fieldset[disabled] .btn-success, - .btn-success.disabled:hover, - .btn-success[disabled]:hover, - fieldset[disabled] .btn-success:hover, - .btn-success.disabled:focus, - .btn-success[disabled]:focus, - fieldset[disabled] .btn-success:focus, - .btn-success.disabled.focus, - .btn-success[disabled].focus, - fieldset[disabled] .btn-success.focus, - .btn-success.disabled:active, - .btn-success[disabled]:active, - fieldset[disabled] .btn-success:active, - .btn-success.disabled.active, - .btn-success[disabled].active, - fieldset[disabled] .btn-success.active { - background-color: #4caf50; - border-color: #449d48; - } - - .btn-success .badge { - color: #4caf50; - background-color: #ffffff; - } - - .btn-success:hover, - .btn-success:focus, - .btn-success.focus, - .btn-success:active, - .open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #4caf50; - border-color: transparent; - } - - .btn-success:active, - .btn-success.active, - .open > .dropdown-toggle.btn-success { - background-image: none; - } - - .btn-success.disabled, - .btn-success[disabled], - fieldset[disabled] .btn-success, - .btn-success.disabled:hover, - .btn-success[disabled]:hover, - fieldset[disabled] .btn-success:hover, - .btn-success.disabled:focus, - .btn-success[disabled]:focus, - fieldset[disabled] .btn-success:focus, - .btn-success.disabled.focus, - .btn-success[disabled].focus, - fieldset[disabled] .btn-success.focus, - .btn-success.disabled:active, - .btn-success[disabled]:active, - fieldset[disabled] .btn-success:active { - background-color: #4caf50; - border-color: #449d48; - } - - .btn-success .badge { - color: #4caf50; - background-color: #ffffff; - } - -.btn-info { - color: #ffffff; - background-color: #00bcd4; - border-color: #00a5bb; -} - - .btn-info:hover, - .btn-info:focus, - .btn-info.focus, - .btn-info:active, - .btn-info.active, - .open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #008fa1; - border-color: #006f7d; - } - - .btn-info:active, - .btn-info.active, - .open > .dropdown-toggle.btn-info { - background-image: none; - } - - .btn-info.disabled, - .btn-info[disabled], - fieldset[disabled] .btn-info, - .btn-info.disabled:hover, - .btn-info[disabled]:hover, - fieldset[disabled] .btn-info:hover, - .btn-info.disabled:focus, - .btn-info[disabled]:focus, - fieldset[disabled] .btn-info:focus, - .btn-info.disabled.focus, - .btn-info[disabled].focus, - fieldset[disabled] .btn-info.focus, - .btn-info.disabled:active, - .btn-info[disabled]:active, - fieldset[disabled] .btn-info:active, - .btn-info.disabled.active, - .btn-info[disabled].active, - fieldset[disabled] .btn-info.active { - background-color: #00bcd4; - border-color: #00a5bb; - } - - .btn-info .badge { - color: #00bcd4; - background-color: #ffffff; - } - - .btn-info:hover, - .btn-info:focus, - .btn-info.focus, - .btn-info:active, - .open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #00bcd4; - border-color: transparent; - } - - .btn-info:active, - .btn-info.active, - .open > .dropdown-toggle.btn-info { - background-image: none; - } - - .btn-info.disabled, - .btn-info[disabled], - fieldset[disabled] .btn-info, - .btn-info.disabled:hover, - .btn-info[disabled]:hover, - fieldset[disabled] .btn-info:hover, - .btn-info.disabled:focus, - .btn-info[disabled]:focus, - fieldset[disabled] .btn-info:focus, - .btn-info.disabled.focus, - .btn-info[disabled].focus, - fieldset[disabled] .btn-info.focus, - .btn-info.disabled:active, - .btn-info[disabled]:active, - fieldset[disabled] .btn-info:active { - background-color: #00bcd4; - border-color: #00a5bb; - } - - .btn-info .badge { - color: #00bcd4; - background-color: #ffffff; - } - -.btn-warning { - color: #ffffff; - background-color: #ff9800; - border-color: #e68900; -} - - .btn-warning:hover, - .btn-warning:focus, - .btn-warning.focus, - .btn-warning:active, - .btn-warning.active, - .open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #cc7a00; - border-color: #a86400; - } - - .btn-warning:active, - .btn-warning.active, - .open > .dropdown-toggle.btn-warning { - background-image: none; - } - - .btn-warning.disabled, - .btn-warning[disabled], - fieldset[disabled] .btn-warning, - .btn-warning.disabled:hover, - .btn-warning[disabled]:hover, - fieldset[disabled] .btn-warning:hover, - .btn-warning.disabled:focus, - .btn-warning[disabled]:focus, - fieldset[disabled] .btn-warning:focus, - .btn-warning.disabled.focus, - .btn-warning[disabled].focus, - fieldset[disabled] .btn-warning.focus, - .btn-warning.disabled:active, - .btn-warning[disabled]:active, - fieldset[disabled] .btn-warning:active, - .btn-warning.disabled.active, - .btn-warning[disabled].active, - fieldset[disabled] .btn-warning.active { - background-color: #ff9800; - border-color: #e68900; - } - - .btn-warning .badge { - color: #ff9800; - background-color: #ffffff; - } - - .btn-warning:hover, - .btn-warning:focus, - .btn-warning.focus, - .btn-warning:active, - .open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #ff9800; - border-color: transparent; - } - - .btn-warning:active, - .btn-warning.active, - .open > .dropdown-toggle.btn-warning { - background-image: none; - } - - .btn-warning.disabled, - .btn-warning[disabled], - fieldset[disabled] .btn-warning, - .btn-warning.disabled:hover, - .btn-warning[disabled]:hover, - fieldset[disabled] .btn-warning:hover, - .btn-warning.disabled:focus, - .btn-warning[disabled]:focus, - fieldset[disabled] .btn-warning:focus, - .btn-warning.disabled.focus, - .btn-warning[disabled].focus, - fieldset[disabled] .btn-warning.focus, - .btn-warning.disabled:active, - .btn-warning[disabled]:active, - fieldset[disabled] .btn-warning:active { - background-color: #ff9800; - border-color: #e68900; - } - - .btn-warning .badge { - color: #ff9800; - background-color: #ffffff; - } - -.btn-danger { - color: #ffffff; - background-color: #f44336; - border-color: #f32c1e; -} - - .btn-danger:hover, - .btn-danger:focus, - .btn-danger.focus, - .btn-danger:active, - .btn-danger.active, - .open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #ea1c0d; - border-color: #c8180b; - } - - .btn-danger:active, - .btn-danger.active, - .open > .dropdown-toggle.btn-danger { - background-image: none; - } - - .btn-danger.disabled, - .btn-danger[disabled], - fieldset[disabled] .btn-danger, - .btn-danger.disabled:hover, - .btn-danger[disabled]:hover, - fieldset[disabled] .btn-danger:hover, - .btn-danger.disabled:focus, - .btn-danger[disabled]:focus, - fieldset[disabled] .btn-danger:focus, - .btn-danger.disabled.focus, - .btn-danger[disabled].focus, - fieldset[disabled] .btn-danger.focus, - .btn-danger.disabled:active, - .btn-danger[disabled]:active, - fieldset[disabled] .btn-danger:active, - .btn-danger.disabled.active, - .btn-danger[disabled].active, - fieldset[disabled] .btn-danger.active { - background-color: #f44336; - border-color: #f32c1e; - } - - .btn-danger .badge { - color: #f44336; - background-color: #ffffff; - } - - .btn-danger:hover, - .btn-danger:focus, - .btn-danger.focus, - .btn-danger:active, - .open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #f44336; - border-color: transparent; - } - - .btn-danger:active, - .btn-danger.active, - .open > .dropdown-toggle.btn-danger { - background-image: none; - } - - .btn-danger.disabled, - .btn-danger[disabled], - fieldset[disabled] .btn-danger, - .btn-danger.disabled:hover, - .btn-danger[disabled]:hover, - fieldset[disabled] .btn-danger:hover, - .btn-danger.disabled:focus, - .btn-danger[disabled]:focus, - fieldset[disabled] .btn-danger:focus, - .btn-danger.disabled.focus, - .btn-danger[disabled].focus, - fieldset[disabled] .btn-danger.focus, - .btn-danger.disabled:active, - .btn-danger[disabled]:active, - fieldset[disabled] .btn-danger:active { - background-color: #f44336; - border-color: #f32c1e; - } - - .btn-danger .badge { - color: #f44336; - background-color: #ffffff; - } - -.btn-link { - color: #2196f3; - font-weight: normal; - border-radius: 0; -} - - .btn-link, - .btn-link:active, - .btn-link.active, - .btn-link[disabled], - fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; - } - - .btn-link, - .btn-link:hover, - .btn-link:focus, - .btn-link:active { - border-color: transparent; - } - - .btn-link:hover, - .btn-link:focus { - color: #0a6ebd; - text-decoration: none; - background-color: transparent; - } - - .btn-link[disabled]:hover, - fieldset[disabled] .btn-link:hover, - .btn-link[disabled]:focus, - fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; - } - -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 2px; -} - -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 2px; -} - -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 2px; -} - -.btn-block { - display: block; - width: 100%; -} - - .btn-block + .btn-block { - margin-top: 5px; - } - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} - -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} - - .fade.in { - opacity: 1; - } - -.collapse { - display: none; -} - - .collapse.in { - display: block; - } - -tr.collapse.in { - display: table-row; -} - -tbody .collapse.in { - display: table-row-group; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} - -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} - -.dropup, -.dropdown { - position: relative; -} - -.dropdown-toggle:focus { - outline: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 9; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 13px; - text-align: left; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 2px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} - - .dropdown-menu.pull-right { - right: 0; - left: auto; - } - - .dropdown-menu .divider { - height: 1px; - margin: 8px 0; - overflow: hidden; - background-color: rgba(0, 0, 0, 0.08); - } - - .dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333333; - white-space: nowrap; - } - - .dropdown-menu > li > a:hover, - .dropdown-menu > li > a:focus { - text-decoration: none; - color: #333333; - background-color: rgba(0, 0, 0, 0.075); - } - - .dropdown-menu > .active > a, - .dropdown-menu > .active > a:hover, - .dropdown-menu > .active > a:focus { - color: #333333; - text-decoration: none; - outline: 0; - background-color: rgba(0, 0, 0, 0.075); - } - - .dropdown-menu > .disabled > a, - .dropdown-menu > .disabled > a:hover, - .dropdown-menu > .disabled > a:focus { - color: #e4e4e4; - } - - .dropdown-menu > .disabled > a:hover, - .dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; - } - -.open > .dropdown-menu { - display: block; -} - -.open > a { - outline: 0; -} - -.dropdown-menu-right { - left: auto; - right: 0; -} - -.dropdown-menu-left { - left: 0; - right: auto; -} - -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777777; - white-space: nowrap; -} - -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: -1; -} - -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid; - content: ""; -} - -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} - -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} - - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - float: left; - } - - .btn-group > .btn:hover, - .btn-group-vertical > .btn:hover, - .btn-group > .btn:focus, - .btn-group-vertical > .btn:focus, - .btn-group > .btn:active, - .btn-group-vertical > .btn:active, - .btn-group > .btn.active, - .btn-group-vertical > .btn.active { - z-index: 2; - } - - .btn-group .btn + .btn, - .btn-group .btn + .btn-group, - .btn-group .btn-group + .btn, - .btn-group .btn-group + .btn-group { - margin-left: -1px; - } - -.btn-toolbar { - margin-left: -5px; -} - - .btn-toolbar .btn-group, - .btn-toolbar .input-group { - float: left; - } - - .btn-toolbar > .btn, - .btn-toolbar > .btn-group, - .btn-toolbar > .input-group { - margin-left: 5px; - } - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -.btn-group > .btn:first-child { - margin-left: 0; -} - - .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.btn-group > .btn-group { - float: left; -} - - .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; - } - - .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, - .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - - .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} - -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} - -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - - .btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; - } - -.btn .caret { - margin-left: 0; -} - -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} - -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} - -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} - - .btn-group-vertical > .btn-group > .btn { - float: none; - } - - .btn-group-vertical > .btn + .btn, - .btn-group-vertical > .btn + .btn-group, - .btn-group-vertical > .btn-group + .btn, - .btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; - } - - .btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; - } - - .btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 2px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - .btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 2px; - border-top-right-radius: 0; - border-top-left-radius: 0; - } - - .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; - } - - .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, - .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; - } - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} - - .btn-group-justified > .btn, - .btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; - } - - .btn-group-justified > .btn-group .btn { - width: 100%; - } - - .btn-group-justified > .btn-group .dropdown-menu { - left: auto; - } - -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} - -.input-group { - position: relative; - display: table; - border-collapse: separate; -} - - .input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; - } - - .input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; - } - -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 40px; - padding: 10px 16px; - font-size: 17px; - line-height: 1.3333333; - border-radius: 0px; -} - -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 40px; - line-height: 40px; -} - -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} - -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 2px; -} - -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} - -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} - -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} - - .input-group-addon:not(:first-child):not(:last-child), - .input-group-btn:not(:first-child):not(:last-child), - .input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; - } - -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} - -.input-group-addon { - padding: 6px 12px; - font-size: 13px; - font-weight: normal; - line-height: 1; - color: #555555; - text-align: center; - background-color: transparent; - border: 1px solid transparent; - border-radius: 2px; -} - - .input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 2px; - } - - .input-group-addon.input-lg { - padding: 10px 16px; - font-size: 17px; - border-radius: 2px; - } - - .input-group-addon input[type="radio"], - .input-group-addon input[type="checkbox"] { - margin-top: 0; - } - - .input-group .form-control:first-child, - .input-group-addon:first-child, - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group > .btn, - .input-group-btn:first-child > .dropdown-toggle, - .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), - .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - - .input-group-addon:first-child { - border-right: 0; - } - - .input-group .form-control:last-child, - .input-group-addon:last-child, - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group > .btn, - .input-group-btn:last-child > .dropdown-toggle, - .input-group-btn:first-child > .btn:not(:first-child), - .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - - .input-group-addon:last-child { - border-left: 0; - } - -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} - - .input-group-btn > .btn { - position: relative; - } - - .input-group-btn > .btn + .btn { - margin-left: -1px; - } - - .input-group-btn > .btn:hover, - .input-group-btn > .btn:focus, - .input-group-btn > .btn:active { - z-index: 2; - } - - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group { - margin-right: -1px; - } - - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group { - margin-left: -1px; - } - -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} - - .nav > li { - position: relative; - display: block; - } - - .nav > li > a { - position: relative; - display: block; - padding: 10px 15px; - } - - .nav > li > a:hover, - .nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; - } - - .nav > li.disabled > a { - color: #777777; - } - - .nav > li.disabled > a:hover, - .nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; - } - - .nav .open > a, - .nav .open > a:hover, - .nav .open > a:focus { - background-color: #eeeeee; - border-color: #2196f3; - } - - .nav .nav-divider { - height: 1px; - margin: 8px 0; - overflow: hidden; - background-color: #e5e5e5; - } - - .nav > li > a > img { - max-width: none; - } - -.nav-tabs { - border-bottom: 1px solid #ffffff; -} - - .nav-tabs > li { - float: left; - margin-bottom: -1px; - } - - .nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 2px 2px 0 0; - } - - .nav-tabs > li > a:hover { - } - - .nav-tabs > li.active > a, - .nav-tabs > li.active > a:hover, - .nav-tabs > li.active > a:focus { - color: #555555; - background-color: transparent; - border: 1px solid #ffffff; - border-bottom-color: transparent; - cursor: default; - } - - .nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; - } - - .nav-tabs.nav-justified > li { - float: none; - } - - .nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; - } - - .nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; - } - -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} - -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 2px; -} - -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #dddddd; -} - -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 2px 2px 0 0; - } - - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #edecec; - } -} - -.nav-pills > li { - float: left; -} - - .nav-pills > li > a { - border-radius: 2px; - } - - .nav-pills > li + li { - margin-left: 2px; - } - - .nav-pills > li.active > a, - .nav-pills > li.active > a:hover, - .nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #2196f3; - } - -.nav-stacked > li { - float: none; -} - - .nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; - } - -.nav-justified { - width: 100%; -} - - .nav-justified > li { - float: none; - } - - .nav-justified > li > a { - text-align: center; - margin-bottom: 5px; - } - - .nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; - } - -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - - .nav-justified > li > a { - margin-bottom: 0; - } -} - -.nav-tabs-justified { - border-bottom: 0; -} - - .nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 2px; - } - - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border: 1px solid #dddddd; - } - -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 2px 2px 0 0; - } - - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #edecec; - } -} - -.tab-content > .tab-pane { - display: none; -} - -.tab-content > .active { - display: block; -} - -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 18px; - border: 1px solid transparent; -} - -@media (min-width: 768px) { - .navbar { - border-radius: 2px; - } -} - -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} - -.navbar-collapse { - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} - - .navbar-collapse.in { - overflow-y: auto; - } - -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - - .navbar-collapse.in { - overflow-y: visible; - } - - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} - -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} - -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} - -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} - -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} - -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} - -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} - -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} - -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} - -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} - -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} - -.navbar-brand { - float: left; - padding: 16px 15px; - font-size: 17px; - line-height: 18px; - height: 50px; -} - - .navbar-brand:hover, - .navbar-brand:focus { - text-decoration: none; - } - - .navbar-brand > img { - display: block; - } - -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} - -.navbar-toggle { - position: relative; - float: right; - margin-right: 15px; - padding: 9px 10px; - margin-top: 8px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 2px; -} - - .navbar-toggle:focus { - outline: 0; - } - - .navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; - } - - .navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; - } - -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} - -.navbar-nav { - margin: 8px -15px; -} - - .navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 18px; - } - -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - - .navbar-nav .open .dropdown-menu > li > a { - line-height: 18px; - } - - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} - -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - - .navbar-nav > li { - float: left; - } - - .navbar-nav > li > a { - padding-top: 16px; - padding-bottom: 16px; - } -} - -.navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 7.5px; - margin-bottom: 7.5px; -} - -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - - .navbar-form .form-control-static { - display: inline-block; - } - - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - - .navbar-form .input-group > .form-control { - width: 100%; - } - - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} - -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} - -@media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} - -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.navbar-btn { - margin-top: 7.5px; - margin-bottom: 7.5px; -} - - .navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; - } - - .navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; - } - -.navbar-text { - margin-top: 16px; - margin-bottom: 16px; -} - -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 15px; - margin-right: 15px; - } -} - -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - - .navbar-right { - float: right !important; - margin-right: -15px; - } - - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} - -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} - - .navbar-default .navbar-brand { - color: #777777; - } - - .navbar-default .navbar-brand:hover, - .navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; - } - - .navbar-default .navbar-text { - color: #777777; - } - - .navbar-default .navbar-nav > li > a { - color: #777777; - } - - .navbar-default .navbar-nav > li > a:hover, - .navbar-default .navbar-nav > li > a:focus { - color: #333333; - background-color: transparent; - } - - .navbar-default .navbar-nav > .active > a, - .navbar-default .navbar-nav > .active > a:hover, - .navbar-default .navbar-nav > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - - .navbar-default .navbar-nav > .disabled > a, - .navbar-default .navbar-nav > .disabled > a:hover, - .navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } - - .navbar-default .navbar-toggle { - border-color: #dddddd; - } - - .navbar-default .navbar-toggle:hover, - .navbar-default .navbar-toggle:focus { - background-color: #dddddd; - } - - .navbar-default .navbar-toggle .icon-bar { - background-color: #888888; - } - - .navbar-default .navbar-collapse, - .navbar-default .navbar-form { - border-color: #e7e7e7; - } - - .navbar-default .navbar-nav > .open > a, - .navbar-default .navbar-nav > .open > a:hover, - .navbar-default .navbar-nav > .open > a:focus { - background-color: #e7e7e7; - color: #555555; - } - -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777777; - } - - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333333; - background-color: transparent; - } - - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} - -.navbar-default .navbar-link { - color: #777777; -} - - .navbar-default .navbar-link:hover { - color: #333333; - } - -.navbar-default .btn-link { - color: #777777; -} - - .navbar-default .btn-link:hover, - .navbar-default .btn-link:focus { - color: #333333; - } - - .navbar-default .btn-link[disabled]:hover, - fieldset[disabled] .navbar-default .btn-link:hover, - .navbar-default .btn-link[disabled]:focus, - fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; - } - -.navbar-inverse { - background-color: #222222; - border-color: #080808; -} - - .navbar-inverse .navbar-brand { - color: #9d9d9d; - } - - .navbar-inverse .navbar-brand:hover, - .navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; - } - - .navbar-inverse .navbar-text { - color: #9d9d9d; - } - - .navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; - } - - .navbar-inverse .navbar-nav > li > a:hover, - .navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; - } - - .navbar-inverse .navbar-nav > .active > a, - .navbar-inverse .navbar-nav > .active > a:hover, - .navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - - .navbar-inverse .navbar-nav > .disabled > a, - .navbar-inverse .navbar-nav > .disabled > a:hover, - .navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; - } - - .navbar-inverse .navbar-toggle { - border-color: #333333; - } - - .navbar-inverse .navbar-toggle:hover, - .navbar-inverse .navbar-toggle:focus { - background-color: #333333; - } - - .navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; - } - - .navbar-inverse .navbar-collapse, - .navbar-inverse .navbar-form { - border-color: #101010; - } - - .navbar-inverse .navbar-nav > .open > a, - .navbar-inverse .navbar-nav > .open > a:hover, - .navbar-inverse .navbar-nav > .open > a:focus { - background-color: #080808; - color: #ffffff; - } - -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} - -.navbar-inverse .navbar-link { - color: #9d9d9d; -} - - .navbar-inverse .navbar-link:hover { - color: #ffffff; - } - -.navbar-inverse .btn-link { - color: #9d9d9d; -} - - .navbar-inverse .btn-link:hover, - .navbar-inverse .btn-link:focus { - color: #ffffff; - } - - .navbar-inverse .btn-link[disabled]:hover, - fieldset[disabled] .navbar-inverse .btn-link:hover, - .navbar-inverse .btn-link[disabled]:focus, - fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444444; - } - -.breadcrumb { - padding: 8px 20px; - margin-bottom: 18px; - list-style: none; - background-color: transparent; - border-radius: 2px; -} - - .breadcrumb > li { - display: inline-block; - } - - .breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; - } - - .breadcrumb > .active { - color: #7c7c7c; - } - -.pagination { - display: inline-block; - padding-left: 0; - position:relative; - margin: 18px 0; - border-radius: 2px; -} - - .pagination > li { - display: inline; - } - - .pagination > li > a, - .pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - line-height: 1.42857143; - text-decoration: none; - color: #7e7e7e; - background-color: #e2e2e2; - background-image:none; - border: 1px solid #ffffff; - margin-left: -1px; - } - - .pagination > li:first-child > a, - .pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; - } - - .pagination > li:last-child > a, - .pagination > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - } - - .pagination > li > a:hover, - .pagination > li > span:hover, - .pagination > li > a:focus, - .pagination > li > span:focus { - color: #333333; - background-color: #d7d7d7; - border-color: #ffffff; - } - - .pagination > .active > a, - .pagination > .active > span, - .pagination > .active > a:hover, - .pagination > .active > span:hover, - .pagination > .active > a:focus, - .pagination > .active > span:focus { - z-index: 2; - color: #ffffff; - background-color: #00bcd4; - border-color: #ffffff; - cursor: default; - } - - .pagination > .disabled > span, - .pagination > .disabled > span:hover, - .pagination > .disabled > span:focus, - .pagination > .disabled > a, - .pagination > .disabled > a:hover, - .pagination > .disabled > a:focus { - color: #777777; - background-color: #e2e2e2; - border-color: #ffffff; - cursor: not-allowed; - } - -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 17px; -} - -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} - -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} - -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} - -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} - -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} - -.pager { - padding-left: 0; - margin: 18px 0; - list-style: none; - text-align: center; -} - - .pager li { - display: inline; - } - - .pager li > a, - .pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #e2e2e2; - border: 1px solid #ffffff; - border-radius: 15px; - } - - .pager li > a:hover, - .pager li > a:focus { - text-decoration: none; - background-color: #d7d7d7; - } - - .pager .next > a, - .pager .next > span { - float: right; - } - - .pager .previous > a, - .pager .previous > span { - float: left; - } - - .pager .disabled > a, - .pager .disabled > a:hover, - .pager .disabled > a:focus, - .pager .disabled > span { - color: #777777; - background-color: #e2e2e2; - cursor: not-allowed; - } - -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} - -a.label:hover, -a.label:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} - -.label:empty { - display: none; -} - -.btn .label { - position: relative; - top: -1px; -} - -.label-default { - background-color: #777777; -} - - .label-default[href]:hover, - .label-default[href]:focus { - background-color: #5e5e5e; - } - -.label-primary { - background-color: #2196f3; -} - - .label-primary[href]:hover, - .label-primary[href]:focus { - background-color: #0c7cd5; - } - -.label-success { - background-color: #4caf50; -} - - .label-success[href]:hover, - .label-success[href]:focus { - background-color: #3d8b40; - } - -.label-info { - background-color: #00bcd4; -} - - .label-info[href]:hover, - .label-info[href]:focus { - background-color: #008fa1; - } - -.label-warning { - background-color: #ff9800; -} - - .label-warning[href]:hover, - .label-warning[href]:focus { - background-color: #cc7a00; - } - -.label-danger { - background-color: #f44336; -} - - .label-danger[href]:hover, - .label-danger[href]:focus { - background-color: #ea1c0d; - } - -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: 400; - color: #ffffff; - line-height: 1; - vertical-align: baseline; - white-space: nowrap; - text-align: center; - background-color: #2196f3; - border-radius: 2px; -} - - .badge:empty { - display: none; - } - -.btn .badge { - position: relative; - top: -1px; -} - -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} - -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} - -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #ffffff; - background-color: #2196f3; -} - -.list-group-item > .badge { - float: right; -} - - .list-group-item > .badge + .badge { - margin-right: 5px; - } - -.nav-pills > li > a > .badge { - margin-left: 3px; -} - -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #f7f7f7; -} - - .jumbotron h1, - .jumbotron .h1 { - color: inherit; - } - - .jumbotron p { - margin-bottom: 15px; - font-size: 20px; - font-weight: 200; - } - - .jumbotron > hr { - border-top-color: #dedede; - } - -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 2px; -} - -.jumbotron .container { - max-width: 100%; -} - -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - - .jumbotron h1, - .jumbotron .h1 { - font-size: 58.5px; - } -} - -.thumbnail { - display: block; - padding: 3px; - margin-bottom: 18px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #ededed; - border-radius: 2px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} - - .thumbnail > img, - .thumbnail a > img { - margin-left: auto; - margin-right: auto; - } - -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #2196f3; -} - -.thumbnail .caption { - padding: 9px; - color: #5e5e5e; -} - -.alert { - padding: 15px; - margin-bottom: 18px; - border: 1px solid transparent; - border-radius: 2px; -} - - .alert h4 { - margin-top: 0; - color: inherit; - } - - .alert .alert-link { - font-weight: bold; - } - - .alert > p, - .alert > ul { - margin-bottom: 0; - } - - .alert > p + p { - margin-top: 5px; - } - -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} - - .alert-dismissable .close, - .alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; - } - -.alert-success { - background-color: #dff0d8; - border-color: #dff0d8; - color: #4caf50; -} - - .alert-success hr { - border-top-color: #d0e9c6; - } - - .alert-success .alert-link { - color: #3d8b40; - } - -.alert-info { - background-color: #d9edf7; - border-color: #d9edf7; - color: #2196f3; -} - - .alert-info hr { - border-top-color: #c4e3f3; - } - - .alert-info .alert-link { - color: #0c7cd5; - } - -.alert-warning { - background-color: rgba(255, 193, 7, 0.7); - border-color: transparent; - color: #ffffff; -} - - .alert-warning hr { - border-top-color: #ffe2bd; - } - - .alert-warning .alert-link { - color: #cc7a00; - } - -.alert-danger { - background-color: rgba(244, 67, 54, 0.7); - border-color: transparent; - color: #ffffff; -} - - .alert-danger hr { - border-top-color: #ebcccc; - } - - .alert-danger .alert-link { - color: #ea1c0d; - } - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - - to { - background-position: 0 0; - } -} - -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - - to { - background-position: 0 0; - } -} - -.progress { - overflow: hidden; - height: 18px; - margin-bottom: 18px; - background-color: #f5f5f5; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} - -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 12px; - line-height: 18px; - color: #ffffff; - text-align: center; - background-color: #2196f3; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} - -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} - -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} - -.progress-bar-success { - background-color: #4caf50; -} - -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-bar-info { - background-color: #00bcd4; -} - -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-bar-warning { - background-color: #ff9800; -} - -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-bar-danger { - background-color: #f44336; -} - -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.media { - margin-top: 15px; -} - - .media:first-child { - margin-top: 0; - } - -.media, -.media-body { - zoom: 1; - overflow: hidden; -} - -.media-body { - width: 10000px; -} - -.media-object { - display: block; -} - -.media-right, -.media > .pull-right { - padding-left: 10px; -} - -.media-left, -.media > .pull-left { - padding-right: 10px; -} - -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} - -.media-middle { - vertical-align: middle; -} - -.media-bottom { - vertical-align: bottom; -} - -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} - -.media-list { - padding-left: 0; - list-style: none; -} - -.list-group { - margin-bottom: 20px; - padding-left: 0; -} - -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid #e9e9e9; -} - - .list-group-item:first-child { - border-top-right-radius: 2px; - border-top-left-radius: 2px; - } - - .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - } - -a.list-group-item { - color: #555555; -} - - a.list-group-item .list-group-item-heading { - color: #333333; - } - - a.list-group-item:hover, - a.list-group-item:focus { - text-decoration: none; - color: #555555; - background-color: #f5f5f5; - } - -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #ffffff; - color: #b5b4b4; - cursor: not-allowed; -} - - .list-group-item.disabled .list-group-item-heading, - .list-group-item.disabled:hover .list-group-item-heading, - .list-group-item.disabled:focus .list-group-item-heading { - color: inherit; - } - - .list-group-item.disabled .list-group-item-text, - .list-group-item.disabled:hover .list-group-item-text, - .list-group-item.disabled:focus .list-group-item-text { - color: #b5b4b4; - } - -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #000000; - background-color: #f5f5f5; - border-color: #e9e9e9; -} - - .list-group-item.active .list-group-item-heading, - .list-group-item.active:hover .list-group-item-heading, - .list-group-item.active:focus .list-group-item-heading, - .list-group-item.active .list-group-item-heading > small, - .list-group-item.active:hover .list-group-item-heading > small, - .list-group-item.active:focus .list-group-item-heading > small, - .list-group-item.active .list-group-item-heading > .small, - .list-group-item.active:hover .list-group-item-heading > .small, - .list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; - } - - .list-group-item.active .list-group-item-text, - .list-group-item.active:hover .list-group-item-text, - .list-group-item.active:focus .list-group-item-text { - color: #ffffff; - } - -.list-group-item-success { - color: #4caf50; - background-color: #dff0d8; -} - -a.list-group-item-success { - color: #4caf50; -} - - a.list-group-item-success .list-group-item-heading { - color: inherit; - } - - a.list-group-item-success:hover, - a.list-group-item-success:focus { - color: #4caf50; - background-color: #d0e9c6; - } - - a.list-group-item-success.active, - a.list-group-item-success.active:hover, - a.list-group-item-success.active:focus { - color: #fff; - background-color: #4caf50; - border-color: #4caf50; - } - -.list-group-item-info { - color: #2196f3; - background-color: #d9edf7; -} - -a.list-group-item-info { - color: #2196f3; -} - - a.list-group-item-info .list-group-item-heading { - color: inherit; - } - - a.list-group-item-info:hover, - a.list-group-item-info:focus { - color: #2196f3; - background-color: #c4e3f3; - } - - a.list-group-item-info.active, - a.list-group-item-info.active:hover, - a.list-group-item-info.active:focus { - color: #fff; - background-color: #2196f3; - border-color: #2196f3; - } - -.list-group-item-warning { - color: #ff9800; - background-color: #fcf8e3; -} - -a.list-group-item-warning { - color: #ff9800; -} - - a.list-group-item-warning .list-group-item-heading { - color: inherit; - } - - a.list-group-item-warning:hover, - a.list-group-item-warning:focus { - color: #ff9800; - background-color: #faf2cc; - } - - a.list-group-item-warning.active, - a.list-group-item-warning.active:hover, - a.list-group-item-warning.active:focus { - color: #fff; - background-color: #ff9800; - border-color: #ff9800; - } - -.list-group-item-danger { - color: #f44336; - background-color: #f2dede; -} - -a.list-group-item-danger { - color: #f44336; -} - - a.list-group-item-danger .list-group-item-heading { - color: inherit; - } - - a.list-group-item-danger:hover, - a.list-group-item-danger:focus { - color: #f44336; - background-color: #ebcccc; - } - - a.list-group-item-danger.active, - a.list-group-item-danger.active:hover, - a.list-group-item-danger.active:focus { - color: #fff; - background-color: #f44336; - border-color: #f44336; - } - -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} - -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} - -.panel { - margin-bottom: 18px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 2px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} - -.panel-body { - padding: 15px; -} - -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} - - .panel-heading > .dropdown .dropdown-toggle { - color: inherit; - } - -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 15px; - color: inherit; -} - - .panel-title > a, - .panel-title > small, - .panel-title > .small, - .panel-title > small > a, - .panel-title > .small > a { - color: inherit; - } - -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} - -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} - - .panel > .list-group .list-group-item, - .panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; - } - - .panel > .list-group:first-child .list-group-item:first-child, - .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 1px; - border-top-left-radius: 1px; - } - - .panel > .list-group:last-child .list-group-item:last-child, - .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; - } - -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} - -.list-group + .panel-footer { - border-top-width: 0; -} - -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} - - .panel > .table caption, - .panel > .table-responsive > .table caption, - .panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; - } - - .panel > .table:first-child, - .panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 1px; - border-top-left-radius: 1px; - } - - .panel > .table:first-child > thead:first-child > tr:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 1px; - border-top-right-radius: 1px; - } - - .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 1px; - } - - .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 1px; - } - - .panel > .table:last-child, - .panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; - } - - .panel > .table:last-child > tbody:last-child > tr:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 1px; - border-bottom-right-radius: 1px; - } - - .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 1px; - } - - .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 1px; - } - - .panel > .panel-body + .table, - .panel > .panel-body + .table-responsive, - .panel > .table + .panel-body, - .panel > .table-responsive + .panel-body { - border-top: 1px solid #f0f0f0; - } - - .panel > .table > tbody:first-child > tr:first-child th, - .panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; - } - -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} - - .panel > .table-bordered > thead > tr > th:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, - .panel > .table-bordered > tbody > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, - .panel > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-bordered > thead > tr > td:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, - .panel > .table-bordered > tbody > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, - .panel > .table-bordered > tfoot > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - - .panel > .table-bordered > thead > tr > th:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, - .panel > .table-bordered > tbody > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, - .panel > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-bordered > thead > tr > td:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, - .panel > .table-bordered > tbody > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, - .panel > .table-bordered > tfoot > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - - .panel > .table-bordered > thead > tr:first-child > td, - .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, - .panel > .table-bordered > tbody > tr:first-child > td, - .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, - .panel > .table-bordered > thead > tr:first-child > th, - .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, - .panel > .table-bordered > tbody > tr:first-child > th, - .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; - } - - .panel > .table-bordered > tbody > tr:last-child > td, - .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, - .panel > .table-bordered > tfoot > tr:last-child > td, - .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, - .panel > .table-bordered > tbody > tr:last-child > th, - .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, - .panel > .table-bordered > tfoot > tr:last-child > th, - .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; - } - -.panel > .table-responsive { - border: 0; - margin-bottom: 0; -} - -.panel-group { - margin-bottom: 18px; -} - - .panel-group .panel { - margin-bottom: 0; - border-radius: 2px; - } - - .panel-group .panel + .panel { - margin-top: 5px; - } - - .panel-group .panel-heading { - border-bottom: 0; - } - - .panel-group .panel-heading + .panel-collapse > .panel-body, - .panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #dddddd; - } - - .panel-group .panel-footer { - border-top: 0; - } - - .panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; - } - -.panel-default { - border-color: #dddddd; -} - - .panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5; - border-color: #dddddd; - } - - .panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #dddddd; - } - - .panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333333; - } - - .panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #dddddd; - } - -.panel-primary { - border-color: #2196f3; -} - - .panel-primary > .panel-heading { - color: #ffffff; - background-color: #2196f3; - border-color: #2196f3; - } - - .panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #2196f3; - } - - .panel-primary > .panel-heading .badge { - color: #2196f3; - background-color: #ffffff; - } - - .panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #2196f3; - } - -.panel-success { - border-color: #d6e9c6; -} - - .panel-success > .panel-heading { - color: #4caf50; - background-color: #dff0d8; - border-color: #d6e9c6; - } - - .panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; - } - - .panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #4caf50; - } - - .panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; - } - -.panel-info { - border-color: #bce8f1; -} - - .panel-info > .panel-heading { - color: #2196f3; - background-color: #d9edf7; - border-color: #bce8f1; - } - - .panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; - } - - .panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #2196f3; - } - - .panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; - } - -.panel-warning { - border-color: #faebcc; -} - - .panel-warning > .panel-heading { - color: #ff9800; - background-color: #fcf8e3; - border-color: #faebcc; - } - - .panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; - } - - .panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #ff9800; - } - - .panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; - } - -.panel-danger { - border-color: #ebccd1; -} - - .panel-danger > .panel-heading { - color: #f44336; - background-color: #f2dede; - border-color: #ebccd1; - } - - .panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; - } - - .panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #f44336; - } - - .panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; - } - -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} - - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; - } - -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} - -.embed-responsive-4by3 { - padding-bottom: 75%; -} - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - - .well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); - } - -.well-lg { - padding: 24px; - border-radius: 2px; -} - -.well-sm { - padding: 9px; - border-radius: 2px; -} - -.close { - float: right; - font-size: 19.5px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} - - .close:hover, - .close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); - } - -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} - -.modal-open { -} - -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} - - .modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - } - - .modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - } - -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} - -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 2px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 0; - background-color: #000000; -} - - .modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); - } - - .modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); - } - -.modal-header { - padding: 15px; - border-bottom: 1px solid transparent; - min-height: #0f0f0f; -} - - .modal-header .close { - margin-top: -2px; - } - -.modal-title { - margin: 0; - line-height: transparent; -} - -.modal-body { - position: relative; - padding: 15px; -} - -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid transparent; -} - - .modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; - } - - .modal-footer .btn-group .btn + .btn { - margin-left: -1px; - } - - .modal-footer .btn-block + .btn-block { - margin-left: 0; - } - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - - .modal-sm { - width: 300px; - } -} - -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} - -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: roboto; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} - - .tooltip.in { - opacity: 1; - filter: alpha(opacity=100); - } - - .tooltip.top { - margin-top: -3px; - padding: 5px 0; - } - - .tooltip.right { - margin-left: 3px; - padding: 0 5px; - } - - .tooltip.bottom { - margin-top: 3px; - padding: 5px 0; - } - - .tooltip.left { - margin-left: -3px; - padding: 0 5px; - } - -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - text-decoration: none; - background-color: #fa1414; - border-radius: 2px; -} - -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #737373; -} - -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #737373; -} - -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #737373; -} - -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #fa1414; -} - -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #737373; -} - -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #737373; -} - -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #737373; -} - -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #737373; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: roboto; - font-size: 13px; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid #ffffff; - border-radius: 2px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} - - .popover.top { - margin-top: -10px; - } - - .popover.right { - margin-left: 10px; - } - - .popover.bottom { - margin-top: 10px; - } - - .popover.left { - margin-left: -10px; - } - -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 13px; - background-color: #ffffff; - border-bottom: 1px solid #f2f2f2; - border-radius: 1px 1px 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.popover > .arrow { - border-width: 11px; -} - - .popover > .arrow:after { - border-width: 10px; - content: ""; - } - -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #cccccc; - border-top-color: #ffffff; - bottom: -11px; -} - - .popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; - } - -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #cccccc; - border-right-color: #ffffff; -} - - .popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; - } - -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #cccccc; - border-bottom-color: #ffffff; - top: -11px; -} - - .popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; - } - -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #cccccc; - border-left-color: #ffffff; -} - - .popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; - } - -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} - - .carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; - } - - .carousel-inner > .item > img, - .carousel-inner > .item > a > img { - line-height: 1; - } - -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -moz-transition: -moz-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - -moz-perspective: 1000; - perspective: 1000; - } - - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; - } -} - -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} - -.carousel-inner > .active { - left: 0; -} - -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} - -.carousel-inner > .next { - left: 100%; -} - -.carousel-inner > .prev { - left: -100%; -} - - .carousel-inner > .next.left, - .carousel-inner > .prev.right { - left: 0; - } - -.carousel-inner > .active.left { - left: -100%; -} - -.carousel-inner > .active.right { - left: 100%; -} - -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} - - .carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - } - - .carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - } - - .carousel-control:hover, - .carousel-control:focus { - outline: 0; - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); - } - - .carousel-control .icon-prev, - .carousel-control .icon-next, - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - } - - .carousel-control .icon-prev, - .carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; - } - - .carousel-control .icon-next, - .carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; - } - - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - line-height: 1; - font-family: serif; - } - - .carousel-control .icon-prev:before { - content: '\2039'; - } - - .carousel-control .icon-next:before { - content: '\203a'; - } - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; -} - - .carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - } - - .carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; - } - -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} - - .carousel-caption .btn { - text-shadow: none; - } - -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - - .carousel-indicators { - bottom: 20px; - } -} - -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} - -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} - -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} - -.pull-right { - float: right !important; -} - -.pull-left { - float: left !important; -} - -.hide { - display: none !important; -} - -.show { - display: block !important; -} - -.invisible { - visibility: hidden; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.hidden { - display: none !important; -} - -.affix { - position: fixed; -} - -@-ms-viewport { - width: device-width; -} - -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} - -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} - -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - - table.visible-xs { - display: table; - } - - tr.visible-xs { - display: table-row !important; - } - - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} - -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} - -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} - -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - - table.visible-sm { - display: table; - } - - tr.visible-sm { - display: table-row !important; - } - - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - - table.visible-md { - display: table; - } - - tr.visible-md { - display: table-row !important; - } - - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} - -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - - table.visible-lg { - display: table; - } - - tr.visible-lg { - display: table-row !important; - } - - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} - -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} - -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} - -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} - -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} - -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} - -.visible-print { - display: none !important; -} - -@media print { - .visible-print { - display: block !important; - } - - table.visible-print { - display: table; - } - - tr.visible-print { - display: table-row !important; - } - - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} - -.visible-print-block { - display: none !important; -} - -@media print { - .visible-print-block { - display: block !important; - } -} - -.visible-print-inline { - display: none !important; -} - -@media print { - .visible-print-inline { - display: inline !important; - } -} - -.visible-print-inline-block { - display: none !important; -} - -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} - -@media print { - .hidden-print { - display: none !important; - } -} - -/* - * LESS Plugins - */ - -/* - * Variable and Mixin - */ - -/* - * Font Icon Family - */ - -/* - * Grid System - */ - -/* Typography + Scaffolding + Links */ - -/* Border Radius */ - -/* Colors */ - -/* Tabs */ - -/* Form */ - -/* Table */ - -/* - * Input Group - */ - -/* - * Pagination - */ - -/* - * Popover - */ - -/* - * Dropdown - */ - -/* - * Thumbnail - */ - -/* - * Form Stats and Alerts - */ - -/* - * Buttons - */ - -/* - * Thumbnail - */ - -/* - * Carousel - */ - -/* - * Modal - */ - -/* - * Tooltips - */ - -/* - * Popover - */ - -/* - * Breadcrumbs - */ - -/* - * Jumbotron - */ - -/* - * List Groups - */ - -/* - * Badges - */ - -/* - * Material Colors - */ - -/* - * Font Face - */ - -/* - * Background Repeat + Position - */ - -/* - * CSS Animations based on animate.css - */ - -/* - * CSS Transform - Scale and Rotate - */ - -/* - * User Select - */ - -/* - * Background Image Cover - */ - -/* - * Tab Focus - */ - -/* - * Pop-in Hover effects - */ - -/* - * Override Bootstrap Button Mixin - */ - -/* - * Scale 3d - */ - -/* - * Load Font - */ - -/* - * Roboto 300 - */ - -@font-face { - font-family: "roboto"; - font-style: normal; - font-weight: 300; - src: url("fonts/Roboto-Light-webfont.eot?#iefix") format("embedded-opentype"), url("fonts/Roboto-Light-webfont.woff") format("woff"), url("fonts/Roboto-Light-webfont.ttf") format("truetype"), url("fonts/Roboto-Light-webfont.svg#icon") format("svg"); -} - -@font-face { - font-family: "roboto"; - font-style: normal; - font-weight: 400; - src: url("fonts/Roboto-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("fonts/Roboto-Regular-webfont.woff") format("woff"), url("fonts/Roboto-Regular-webfont.ttf") format("truetype"), url("fonts/Roboto-Regular-webfont.svg#icon") format("svg"); -} - -@font-face { - font-family: "roboto"; - font-style: normal; - font-weight: 500; - src: url("fonts/Roboto-Medium-webfont.eot?#iefix") format("embedded-opentype"), url("fonts/Roboto-Medium-webfont.woff") format("woff"), url("fonts/Roboto-Medium-webfont.ttf") format("truetype"), url("fonts/Roboto-Medium-webfont.svg#icon") format("svg"); -} - -@font-face { - font-family: "roboto"; - font-style: normal; - font-weight: 700; - src: url("fonts/Roboto-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("fonts/Roboto-Bold-webfont.woff") format("woff"), url("fonts/Roboto-Bold-webfont.ttf") format("truetype"), url("fonts/Roboto-Bold-webfont.svg#icon") format("svg"); -} - -/* - * Shadow Light normal - */ - -@font-face { - font-family: 'shadowsintolight'; - src: url(data:font-woff;base64,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) format('woff'); - font-weight: normal; - font-style: normal; -} - -/* - * Vendors - */ - -@font-face { - font-family: weather-icons; - src: url('fonts/weather-icons/weather-icons.eot'); - src: url('fonts/weather-icons/weather-icons.eot?#iefix') format('embedded-opentype'), url('fonts/weather-icons/weather-icons.woff') format('woff'), url('fonts/weather-icons/weather-icons.ttf') format('truetype'), url('fonts/weather-icons/weather-icons.svg#icon') format('svg'); - font-weight: 400; - font-style: normal; -} - -#weather-widget [class*="icon-"] { - font-family: 'weather-icons'; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-0:before { - content: ":"; -} - -.icon-1:before { - content: "p"; -} - -.icon-2:before { - content: "S"; -} - -.icon-3:before { - content: "Q"; -} - -.icon-4:before { - content: "S"; -} - -.icon-5:before { - content: "W"; -} - -.icon-6:before { - content: "W"; -} - -.icon-7:before { - content: "W"; -} - -.icon-8:before { - content: "W"; -} - -.icon-9:before { - content: "I"; -} - -.icon-10:before { - content: "W"; -} - -.icon-11:before { - content: "I"; -} - -.icon-12:before { - content: "I"; -} - -.icon-13:before { - content: "I"; -} - -.icon-14:before { - content: "I"; -} - -.icon-15:before { - content: "W"; -} - -.icon-16:before { - content: "I"; -} - -.icon-17:before { - content: "W"; -} - -.icon-18:before { - content: "U"; -} - -.icon-19:before { - content: "Z"; -} - -.icon-20:before { - content: "Z"; -} - -.icon-21:before { - content: "Z"; -} - -.icon-22:before { - content: "Z"; -} - -.icon-23:before { - content: "Z"; -} - -.icon-24:before { - content: "E"; -} - -.icon-25:before { - content: "E"; -} - -.icon-26:before { - content: "3"; -} - -.icon-27:before { - content: "a"; -} - -.icon-28:before { - content: "A"; -} - -.icon-29:before { - content: "a"; -} - -.icon-30:before { - content: "A"; -} - -.icon-31:before { - content: "6"; -} - -.icon-32:before { - content: "1"; -} - -.icon-33:before { - content: "6"; -} - -.icon-34:before { - content: "1"; -} - -.icon-35:before { - content: "W"; -} - -.icon-36:before { - content: "1"; -} - -.icon-37:before { - content: "S"; -} - -.icon-38:before { - content: "S"; -} - -.icon-39:before { - content: "S"; -} - -.icon-40:before { - content: "M"; -} - -.icon-41:before { - content: "W"; -} - -.icon-42:before { - content: "I"; -} - -.icon-43:before { - content: "W"; -} - -.icon-44:before { - content: "a"; -} - -.icon-45:before { - content: "S"; -} - -.icon-46:before { - content: "U"; -} - -.icon-47:before { - content: "S"; -} - -.btn-file { - overflow: hidden; - position: relative; - vertical-align: middle; -} - - .btn-file > input { - position: absolute; - top: 0; - right: 0; - margin: 0; - opacity: 0; - filter: alpha(opacity=0); - font-size: 23px; - height: 100%; - width: 100%; - direction: ltr; - cursor: pointer; - } - -.fileinput { - margin-bottom: 9px; - display: inline-block; -} - - .fileinput .form-control { - padding-top: 7px; - padding-bottom: 5px; - display: inline-block; - margin-bottom: 0px; - vertical-align: middle; - cursor: text; - } - - .fileinput .thumbnail { - overflow: hidden; - display: inline-block; - margin-bottom: 5px; - vertical-align: middle; - text-align: center; - } - - .fileinput .thumbnail > img { - max-height: 100%; - } - - .fileinput .btn { - vertical-align: middle; - } - -.fileinput-exists .fileinput-new, -.fileinput-new .fileinput-exists { - display: none; -} - -.fileinput-inline .fileinput-controls { - display: inline; -} - -.fileinput-filename { - vertical-align: middle; - display: inline-block; - overflow: hidden; -} - -.form-control .fileinput-filename { - vertical-align: bottom; -} - -.fileinput.input-group { - display: table; -} - - .fileinput.input-group > * { - position: relative; - z-index: 2; - } - - .fileinput.input-group > .btn-file { - z-index: 1; - } - -.fileinput-new.input-group .btn-file, -.fileinput-new .input-group .btn-file { - border-radius: 0 2px 2px 0; -} - - .fileinput-new.input-group .btn-file.btn-xs, - .fileinput-new .input-group .btn-file.btn-xs, - .fileinput-new.input-group .btn-file.btn-sm, - .fileinput-new .input-group .btn-file.btn-sm { - border-radius: 0 2px 2px 0; - } - - .fileinput-new.input-group .btn-file.btn-lg, - .fileinput-new .input-group .btn-file.btn-lg { - border-radius: 0 2px 2px 0; - } - -.form-group.has-warning .fileinput .fileinput-preview { - color: #ff9800; -} - -.form-group.has-warning .fileinput .thumbnail { - border-color: #faebcc; -} - -.form-group.has-error .fileinput .fileinput-preview { - color: #f44336; -} - -.form-group.has-error .fileinput .thumbnail { - border-color: #ebccd1; -} - -.form-group.has-success .fileinput .fileinput-preview { - color: #4caf50; -} - -.form-group.has-success .fileinput .thumbnail { - border-color: #d6e9c6; -} - -.input-group-addon:not(:first-child) { - border-left: 0; -} - -/*! - * Waves v0.7.2 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */ - -.waves-effect { - position: relative; - cursor: pointer; - display: inline-block; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; -} - - .waves-effect .waves-ripple { - position: absolute; - border-radius: 50%; - width: 100px; - height: 100px; - margin-top: -50px; - margin-left: -50px; - opacity: 0; - background: rgba(0, 0, 0, 0.2); - background: -webkit-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - background: -o-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - background: -moz-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - background: radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - -webkit-transition: all 0.5s ease-out; - -moz-transition: all 0.5s ease-out; - -o-transition: all 0.5s ease-out; - transition: all 0.5s ease-out; - -webkit-transition-property: -webkit-transform, opacity; - -moz-transition-property: -moz-transform, opacity; - -o-transition-property: -o-transform, opacity; - transition-property: transform, opacity; - -webkit-transform: scale(0) translate(0, 0); - -moz-transform: scale(0) translate(0, 0); - -ms-transform: scale(0) translate(0, 0); - -o-transform: scale(0) translate(0, 0); - transform: scale(0) translate(0, 0); - pointer-events: none; - } - - .waves-effect.waves-light .waves-ripple { - background: rgba(255, 255, 255, 0.4); - background: -webkit-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - background: -o-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - background: -moz-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - background: radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); - } - - .waves-effect.waves-classic .waves-ripple { - background: rgba(0, 0, 0, 0.2); - } - - .waves-effect.waves-classic.waves-light .waves-ripple { - background: rgba(255, 255, 255, 0.4); - } - -.waves-notransition { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - transition: none !important; -} - -.waves-button, -.waves-circle { - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); - -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%); -} - - .waves-button, - .waves-button:hover, - .waves-button:visited, - .waves-button-input { - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - border: none; - outline: none; - color: inherit; - background-color: rgba(0, 0, 0, 0); - font-size: 1em; - line-height: 1em; - text-align: center; - text-decoration: none; - z-index: 1; - } - -.waves-button { - padding: 0.85em 1.1em; - border-radius: 0.2em; -} - -.waves-button-input { - margin: 0; - padding: 0.85em 1.1em; -} - -.waves-input-wrapper { - border-radius: 0.2em; - vertical-align: bottom; -} - - .waves-input-wrapper.waves-button { - padding: 0; - } - - .waves-input-wrapper .waves-button-input { - position: relative; - top: 0; - left: 0; - z-index: 1; - } - -.waves-circle { - text-align: center; - width: 2.5em; - height: 2.5em; - line-height: 2.5em; - border-radius: 50%; -} - -.waves-float { - -webkit-mask-image: none; - -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); - box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); - -webkit-transition: all 300ms; - -moz-transition: all 300ms; - -o-transition: all 300ms; - transition: all 300ms; -} - - .waves-float:active { - -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); - box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); - } - -.waves-block { - display: block; -} - -/* Firefox Bug: link not triggered */ - -a.waves-effect .waves-ripple { - z-index: -1; -} - -/* - * Load Website related LESS files - */ - -/* - * Generate Margin Class - * margin, margin-top, margin-bottom, margin-left, margin-right - */ - -.m-0 { - margin: 0px !important; -} - -.m-t-0 { - margin-top: 0px !important; -} - -.m-b-0 { - margin-bottom: 0px !important; -} - -.m-l-0 { - margin-left: 0px !important; -} - -.m-r-0 { - margin-right: 0px !important; -} - -.m-5 { - margin: 5px !important; -} - -.m-t-5 { - margin-top: 5px !important; -} - -.m-b-5 { - margin-bottom: 5px !important; -} - -.m-l-5 { - margin-left: 5px !important; -} - -.m-r-5 { - margin-right: 5px !important; -} - -.m-10 { - margin: 10px !important; -} - -.m-t-10 { - margin-top: 10px !important; -} - -.m-b-10 { - margin-bottom: 10px !important; -} - -.m-l-10 { - margin-left: 10px !important; -} - -.m-r-10 { - margin-right: 10px !important; -} - -.m-15 { - margin: 15px !important; -} - -.m-t-15 { - margin-top: 15px !important; -} - -.m-b-15 { - margin-bottom: 15px !important; -} - -.m-l-15 { - margin-left: 15px !important; -} - -.m-r-15 { - margin-right: 15px !important; -} - -.m-20 { - margin: 20px !important; -} - -.m-t-20 { - margin-top: 20px !important; -} - -.m-b-20 { - margin-bottom: 20px !important; -} - -.m-l-20 { - margin-left: 20px !important; -} - -.m-r-20 { - margin-right: 20px !important; -} - -.m-25 { - margin: 25px !important; -} - -.m-t-25 { - margin-top: 25px !important; -} - -.m-b-25 { - margin-bottom: 25px !important; -} - -.m-l-25 { - margin-left: 25px !important; -} - -.m-r-25 { - margin-right: 25px !important; -} - -.m-30 { - margin: 30px !important; -} - -.m-t-30 { - margin-top: 30px !important; -} - -.m-b-30 { - margin-bottom: 30px !important; -} - -.m-l-30 { - margin-left: 30px !important; -} - -.m-r-30 { - margin-right: 30px !important; -} - -/* - * Generate Padding Class - * padding, padding-top, padding-bottom, padding-left, padding-right - */ - -.p-0 { - padding: 0px !important; -} - -.p-t-0 { - padding-top: 0px !important; -} - -.p-b-0 { - padding-bottom: 0px !important; -} - -.p-l-0 { - padding-left: 0px !important; -} - -.p-r-0 { - padding-right: 0px !important; -} - -.p-5 { - padding: 5px !important; -} - -.p-t-5 { - padding-top: 5px !important; -} - -.p-b-5 { - padding-bottom: 5px !important; -} - -.p-l-5 { - padding-left: 5px !important; -} - -.p-r-5 { - padding-right: 5px !important; -} - -.p-10 { - padding: 10px !important; -} - -.p-t-10 { - padding-top: 10px !important; -} - -.p-b-10 { - padding-bottom: 10px !important; -} - -.p-l-10 { - padding-left: 10px !important; -} - -.p-r-10 { - padding-right: 10px !important; -} - -.p-15 { - padding: 15px !important; -} - -.p-t-15 { - padding-top: 15px !important; -} - -.p-b-15 { - padding-bottom: 15px !important; -} - -.p-l-15 { - padding-left: 15px !important; -} - -.p-r-15 { - padding-right: 15px !important; -} - -.p-20 { - padding: 20px !important; -} - -.p-t-20 { - padding-top: 20px !important; -} - -.p-b-20 { - padding-bottom: 20px !important; -} - -.p-l-20 { - padding-left: 20px !important; -} - -.p-r-20 { - padding-right: 20px !important; -} - -.p-25 { - padding: 25px !important; -} - -.p-t-25 { - padding-top: 25px !important; -} - -.p-b-25 { - padding-bottom: 25px !important; -} - -.p-l-25 { - padding-left: 25px !important; -} - -.p-r-25 { - padding-right: 25px !important; -} - -.p-30 { - padding: 30px !important; -} - -.p-t-30 { - padding-top: 30px !important; -} - -.p-b-30 { - padding-bottom: 30px !important; -} - -.p-l-30 { - padding-left: 30px !important; -} - -.p-r-30 { - padding-right: 30px !important; -} - -/* - * Font Weight - */ - -.f-300 { - font-weight: 300 !important; -} - -.f-400 { - font-weight: 400 !important; -} - -.f-500 { - font-weight: 500 !important; -} - -.f-700 { - font-weight: 700 !important; -} - -/* - * Position Classes - */ - -.p-relative { - position: relative !important; -} - -.p-absolute { - position: absolute !important; -} - -.p-fixed { - position: fixed !important; -} - -.p-static { - position: static !important; -} - -/* - * Overflow - */ - -.o-hidden { - overflow: hidden !important; -} - -.o-visible { - overflow: visible !important; -} - -.o-auto { - overflow: auto !important; -} - -/* - * Display - */ - -.d-block { - display: block !important; -} - -.di-block { - display: inline-block !important; -} - -/* - * Material Background Colors - */ - -.bgm-white { - background-color: #ffffff !important; -} - -.c-white { - color: #ffffff !important; -} - -.bgm-black { - background-color: #000000 !important; -} - -.c-black { - color: #000000 !important; -} - -.bgm-brown { - background-color: #795548 !important; -} - -.c-brown { - color: #795548 !important; -} - -.bgm-pink { - background-color: #e91e63 !important; -} - -.c-pink { - color: #e91e63 !important; -} - -.bgm-red { - background-color: #f44336 !important; -} - -.c-red { - color: #f44336 !important; -} - -.bgm-blue { - background-color: #2196f3 !important; -} - -.c-blue { - color: #2196f3 !important; -} - -.bgm-purple { - background-color: #9c27b0 !important; -} - -.c-purple { - color: #9c27b0 !important; -} - -.bgm-deeppurple { - background-color: #673ab7 !important; -} - -.c-deeppurple { - color: #673ab7 !important; -} - -.bgm-lightblue { - background-color: #03a9f4 !important; -} - -.c-lightblue { - color: #03a9f4 !important; -} - -.bgm-cyan { - background-color: #00bcd4 !important; -} - -.c-cyan { - color: #00bcd4 !important; -} - -.bgm-teal { - background-color: #009688 !important; -} - -.c-teal { - color: #009688 !important; -} - -.bgm-green { - background-color: #4caf50 !important; -} - -.c-green { - color: #4caf50 !important; -} - -.bgm-lightgreen { - background-color: #8bc34a !important; -} - -.c-lightgreen { - color: #8bc34a !important; -} - -.bgm-lime { - background-color: #cddc39 !important; -} - -.c-lime { - color: #cddc39 !important; -} - -.bgm-yellow { - background-color: #ffeb3b !important; -} - -.c-yellow { - color: #ffeb3b !important; -} - -.bgm-amber { - background-color: #ffc107 !important; -} - -.c-amber { - color: #ffc107 !important; -} - -.bgm-orange { - background-color: #ff9800 !important; -} - -.c-orange { - color: #ff9800 !important; -} - -.bgm-deeporange { - background-color: #ff5722 !important; -} - -.c-deeporange { - color: #ff5722 !important; -} - -.bgm-gray { - background-color: #9e9e9e !important; -} - -.c-gray { - color: #9e9e9e !important; -} - -.bgm-bluegray { - background-color: #607d8b !important; -} - -.c-bluegray { - color: #607d8b !important; -} - -.bgm-indigo { - background-color: #3f51b5 !important; -} - -.c-indigo { - color: #3f51b5 !important; -} - -/* - * Background Colors - */ - -.bg-black-trp { - background-color: rgba(0, 0, 0, 0.1) !important; -} - -/* - * Border - */ - -.b-0 { - border: 0 !important; -} - -/* - * width - */ - -.w-100 { - width: 100% !important; -} - -/* - * Media - Overriding the Media object to 3.2 version in order to prevent issues like text overflow. - */ - -.media { - overflow: visible; -} - - .media:before, - .media:after { - content: " "; - display: table; - } - - .media:after { - clear: both; - } - - .media:before, - .media:after { - content: " "; - display: table; - } - - .media:after { - clear: both; - } - - .media > .pull-left { - padding-right: 15px; - } - - .media > .pull-right { - padding-left: 15px; - } - -.media-heading { - font-size: 14px; - margin-bottom: 10px; -} - -.media-body { - zoom: 1; - display: block; - width: auto; -} - -.media-object { - border-radius: 2px; -} - -.close { - opacity: 0.5; - filter: alpha(opacity=50); - font-weight: normal; - text-shadow: none; -} - - .close:hover { - color: inherit; - opacity: 1; - filter: alpha(opacity=100); - } - -.dl-horizontal dt { - text-align: left; -} - -*, -button, -input, -i, -a { - -webkit-font-smoothing: antialiased; -} - - *, - *:active, - *:hover { - outline: none !important; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important; - } - -html, -body { - min-height: 100vh; -} - -html { - overflow-x: hidden\0/; - -ms-overflow-style: none; -} - -body { - font-weight: 400; - padding-top: 65px; - -webkit-animation-name: fadeIn; - animation-name: fadeIn; - -webkit-animation-duration: 1000ms; - animation-duration: 1000ms; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -audio, -video { - outline: none; -} - -p { - margin-bottom: 20px; -} - -small { - font-size: 11px; -} - -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small { - font-size: 12px; -} - -/* - * Ordered Lists - */ - -.clist { - list-style: none; -} - - .clist > li:before { - font-family: 'Material Design Iconic Font'; - margin: 0 10px 0 -20px; - vertical-align: middle; - } - - .clist.clist-angle > li:before { - content: "\f1b6"; - } - - .clist.clist-check > li:before { - content: "\f299"; - } - - .clist.clist-star > li:before { - content: "\f2e5"; - } - -#main { - position: relative; -} - -body #content { - padding: 30px 0; -} - -@media (min-width: 1200px) { - body .sw-toggled #content { - padding: 30px 0 30px 250px; - } -} - -@media (min-width: 1200px) { - body .sw-toggled #content > .container { - width: calc(100% - 30px); - } -} - -#header { - background: #4285F4; - box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3); - height: 65px; - position: fixed; - z-index: 1001; - width: 100%; - left: 0; - padding-right: 10px; - top: 0; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - - #header:not(.sidebar-toggled).header-up { - -webkit-transform: translate3d(0, -70px, 0); - transform: translate3d(0, -70px, 0); - } - -.header-inner { - list-style: none; - padding: 15px 0; -} - - .header-inner > li { - display: inline-block; - vertical-align: top; - } - - .header-inner > li:not(:last-child) { - margin-right: -2px; - } - - .header-inner .logo a { - color: #fff; - text-transform: uppercase; - padding: 6px 10px; - display: block; - font-size: 16px; - font-weight: 100; - } - -#menu-trigger { - width: 65px; - height: 35px; - cursor: pointer; -} - - #menu-trigger .line-wrap .line { - background-color: #fff; - } - - #menu-trigger:before { - content: ""; - position: absolute; - top: 9px; - left: 7px; - width: 45px; - height: 45px; - border-radius: 50%; - background: rgba(255, 255, 255, 0.22); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - z-index: 0; - } - - #menu-trigger.open:before { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - -.top-menu { - list-style: none; - padding: 0; -} - - .top-menu > li { - display: inline-block; - } - -@media (max-width: 767px) { - .top-menu > li { - position: static !important; - } -} - -.top-menu > li .dropdown-menu-lg { - padding: 0; -} - - .top-menu > li .dropdown-menu-lg .lv-body { - height: 275px; - overflow-y: auto; - } - -@media (min-width: 768px) { - .top-menu > li:not(#toggle-width) { - position: relative; - } - - .top-menu > li:not(#toggle-width):before { - left: 0; - top: 0; - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-transform: scale3d(0, 0, 0); - -moz-transform: scale3d(0, 0, 0); - -ms-transform: scale3d(0, 0, 0); - -o-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - background-color: rgba(0, 0, 0, 0.12); - z-index: 0; - border-radius: 2px; - opacity: 0; - filter: alpha(opacity=0); - } - - .top-menu > li:not(#toggle-width):hover:before { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - -ms-transform: scale3d(1, 1, 1); - -o-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; - filter: alpha(opacity=100); - } - - .top-menu > li:not(#toggle-width).open:before { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - opacity: 1; - filter: alpha(opacity=100); - } -} - -.top-menu > li > a { - height: 35px; - min-width: 50px; - display: inline-block; - background-position: center; - background-repeat: no-repeat; - position: relative; - z-index: 1; -} - - .top-menu > li > a > .tmn-counts { - position: absolute; - color: #FFF; - font-style: normal; - background: #f44336; - padding: 1px 5px; - border-radius: 2px; - right: 7px; - top: -3px; - font-size: 10px; - -webkit-animation-name: wobble; - animation-name: wobble; - -webkit-animation-duration: 500ms; - animation-duration: 500ms; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - } - - .top-menu > li > a.tm-log { - background-image: url("img/icons/menu-2.png"); - } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .top-menu > li > a.tm-log { - background-image: url("img/icons/menu-2@2x.png"); - background-size: 18px 12px; - } -} - -.top-menu > li > a.tm-settings { - background-image: url("img/icons/ellipsis.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .top-menu > li > a.tm-settings { - background-image: url("img/icons/ellipsis@2x.png"); - background-size: 24px 24px; - } -} - -.top-menu > li > a.tm-notification { - background-image: url("img/icons/notification.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .top-menu > li > a.tm-notification { - background-image: url("img/icons/notification@2x.png"); - background-size: 24px 24px; - } -} - -.top-menu > li > a.tm-message { - background-image: url("img/icons/message.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .top-menu > li > a.tm-message { - background-image: url("img/icons/message@2x.png"); - background-size: 24px 24px; - } -} - -.top-menu > li > a.tm-search { - background-image: url("img/icons/search.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .top-menu > li > a.tm-search { - background-image: url("img/icons/search@2x.png"); - background-size: 24px 24px; - } -} - -.top-menu > li > a.tm-task { - background-image: url("img/icons/task.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .top-menu > li > a.tm-task { - background-image: url("img/icons/task@2x.png"); - background-size: 24px 24px; - } -} - -.top-menu > li:before { - top: -1px !important; -} - -@media (max-width: 767px) { - .top-menu .dropdown-menu-lg { - width: calc(100% - 28px) !important; - } - - .top-menu .dropdown-menu { - right: 14px; - top: 55px; - } -} - -@media (min-width: 1200px) { - .top-menu #toggle-width .toggle-switch { - margin: -12px 30px 0 0; - } - - .top-menu #toggle-width .toggle-switch .ts-helper { - height: 11px; - width: 33px; - } - - .top-menu #toggle-width .toggle-switch .ts-helper:before { - width: 20px; - height: 20px; - top: -5px; - } - - .top-menu #toggle-width .toggle-switch input:checked + .ts-helper { - background: rgba(0, 0, 0, 0.26); - } - - .top-menu #toggle-width .toggle-switch input:checked + .ts-helper:before { - left: 18px; - background: #fff; - } -} - -@media (max-width: 1200px) { - .top-menu #toggle-width { - display: none; - } -} - -#notifications { - position: relative; -} - - #notifications .lv-body { - overflow-x: hidden; - } - - #notifications:before { - content: ""; - position: absolute; - width: 100%; - height: calc(100% - 70px); - background: url(img/notifications.png) no-repeat center; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 400ms; - transition-duration: 400ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: scale(0) rotate(-180deg); - -ms-transform: scale(0) rotate(-180deg); - -o-transform: scale(0) rotate(-180deg); - transform: scale(0) rotate(-180deg); - opacity: 0; - filter: alpha(opacity=0); - top: 42px; - } - - #notifications.empty:before { - -webkit-transform: scale(1) rotate(0deg); - -ms-transform: scale(1) rotate(0deg); - -o-transform: scale(1) rotate(0deg); - transform: scale(1) rotate(0deg); - opacity: 1; - filter: alpha(opacity=100); - } - -#top-search-wrap { - position: absolute; - top: -65px; - left: 0; - width: 100%; - height: 65px; - background: #4285F4; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - opacity: 0; - filter: alpha(opacity=0); - z-index: 10; -} - -@media (min-width: 768px) { - #top-search-wrap { - text-align: center; - } -} - -#top-search-wrap input[type="text"] { - border: 0; - height: 40px; - padding: 0 10px 0 40px; - font-size: 18px; - margin: 12px; - width: 500px; - border-radius: 2px; - color: rgba(51, 51, 51, 0.69); - background-color: rgba(255, 255, 255, 0.26); - background-image: url("img/icons/search.png"); - background-repeat: no-repeat; - background-position: 10px center; -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - #top-search-wrap input[type="text"] { - background-image: url("img/icons/search@2x.png"); - background-size: 24px 24px; - } -} - -#top-search-wrap input[type="text"]:focus { - background-color: rgba(255, 255, 255, 0.4); -} - -@media (max-width: 767px) { - #top-search-wrap input[type="text"] { - width: calc(100% - 60px); - } -} - -#top-search-wrap #top-search-close { - position: absolute; - top: 16px; - font-size: 23px; - font-style: normal; - color: rgba(0, 0, 0, 0.38); - width: 35px; - text-align: center; - border-radius: 2px; - cursor: pointer; - right: 20px; -} - - #top-search-wrap #top-search-close:hover { - background-color: rgba(0, 0, 0, 0.15); - color: #000; - } - -@media (max-width: 767px) { - #top-search-wrap #top-search-close { - right: 7px; - } -} - -.search-toggled #top-search-wrap { - top: 0; - opacity: 1; - filter: alpha(opacity=100); -} - -/* - * Full Width Layout - */ - -@media (min-width: 1200px) { - .sw-toggled #header { - padding-left: 15px; - } - - .sw-toggled #menu-trigger { - display: none; - } -} - -/* - * For Stupid IE9 - */ - -.ie9 #header:not(.sidebar-toggled).header-up { - display: none; -} - -:-webkit-full-screen [data-action="fullscreen"] { - display: none; -} - -:-moz-full-screen [data-action="fullscreen"] { - display: none; -} - -:-ms-fullscreen [data-action="fullscreen"] { - display: none; -} - -:full-screen [data-action="fullscreen"] { - display: none; -} - -:fullscreen [data-action="fullscreen"] { - display: none; -} - -#sidebar { - position: fixed; - background: #fff; - box-shadow: 0 0 10px rgba(51, 51, 51, 0.38); - top: 65px; - height: calc(100% - 65px); - -webkit-transform: translate3d(-250px, 0, 0); - transform: translate3d(-250px, 0, 0); - z-index: 5; - width: 268px; - overflow: hidden; - opacity: 0; - filter: alpha(opacity=0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; -} - - #sidebar .sidebar-inner { - height: 100%; - box-sizing: border-box; - width: 268px; - } - - #sidebar .sidebar-inner .si-inner { - width: 268px; - } - - #sidebar.toggled { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - opacity: 1; - filter: alpha(opacity=100); - } - - #sidebar .profile-menu > a { - display: block; - height: 129px; - margin-bottom: 5px; - width: 100%; - background: url(img/profile-menu.png) no-repeat left top; - background-size: 100%; - } - - #sidebar .profile-menu > a .profile-pic { - padding: 12px; - } - - #sidebar .profile-menu > a .profile-pic > img { - width: 47px; - height: 47px; - border-radius: 50%; - border: 3px solid rgba(0, 0, 0, 0.14); - box-sizing: content-box; - } - - #sidebar .profile-menu > a .profile-info { - background: rgba(0, 0, 0, 0.37); - padding: 7px 14px; - color: #fff; - margin-top: 20px; - position: relative; - } - - #sidebar .profile-menu > a .profile-info > i { - font-size: 19px; - line-height: 100%; - position: absolute; - right: 5px; - top: 7px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - #sidebar .profile-menu .main-menu { - display: none; - margin: 0 0 0; - border-bottom: 1px solid #E6E6E6; - } - - #sidebar .profile-menu:before, - #sidebar .profile-menu:after { - content: " "; - display: table; - } - - #sidebar .profile-menu:after { - clear: both; - } - - #sidebar .profile-menu:before, - #sidebar .profile-menu:after { - content: " "; - display: table; - } - - #sidebar .profile-menu:after { - clear: both; - } - - #sidebar .profile-menu.toggled .profile-info > i { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - } - - #sidebar .main-menu { - list-style: none; - padding-left: 0; - margin: 20px 0 0 0; - } - - #sidebar .main-menu > li > a { - padding: 14px 20px 14px 52px; - display: block; - color: #4C4C4C; - font-weight: 500; - position: relative; - } - - #sidebar .main-menu > li > a:hover { - color: #262626; - background-color: #f7f7f7; - } - - #sidebar .main-menu > li > a > i { - position: absolute; - left: 16px; - font-size: 20px; - top: 0; - width: 25px; - text-align: center; - padding: 9px 0; - } - - #sidebar .main-menu > li.sub-menu > a:before, - #sidebar .main-menu > li.sub-menu > a:after { - position: absolute; - right: 10px; - top: 12px; - color: #575757; - font-family: 'Material Design Iconic Font'; - font-size: 17px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - } - - #sidebar .main-menu > li.sub-menu > a:before { - content: "\f0fb"; - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - - #sidebar .main-menu > li.sub-menu > a:after { - content: "\f111"; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - } - - #sidebar .main-menu > li.sub-menu > ul { - list-style: none; - background: #f7f7f7; - display: none; - padding: 0; - } - - #sidebar .main-menu > li.sub-menu > ul > li > a { - color: #7f7f7f; - padding: 8px 20px 8px 50px; - font-weight: 500; - display: block; - } - - #sidebar .main-menu > li.sub-menu > ul > li > a.active, - #sidebar .main-menu > li.sub-menu > ul > li > a:hover { - color: #000; - } - - #sidebar .main-menu > li.sub-menu > ul > li:first-child > a { - padding-top: 14px; - } - - #sidebar .main-menu > li.sub-menu > ul > li:last-child > a { - padding-bottom: 16px; - } - - #sidebar .main-menu > li.sub-menu.toggled > a:before { - content: "\f0fb"; - -webkit-transform: scale(0) rotate(-90deg); - -ms-transform: scale(0) rotate(-90deg); - -o-transform: scale(0) rotate(-90deg); - transform: scale(0) rotate(-90deg); - } - - #sidebar .main-menu > li.sub-menu.toggled > a:after { - content: "\f111"; - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - - #sidebar .main-menu > li.sub-menu.active > ul { - display: block; - } - - #sidebar .main-menu > li.active > a { - color: #262626; - background-color: #F4F4F4; - } - -/* - * Full width layout - */ - -body:not(.sw-toggled) #sidebar { - box-shadow: 0 0 10px rgba(51, 51, 51, 0.38); -} - -@media (min-width: 1200px) { - body .sw-toggled #sidebar { - -webkit-transform: translate3d(0, 0, 0) !important; - transform: translate3d(0, 0, 0) !important; - opacity: 1 !important; - filter: alpha(opacity=100) !important; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - } -} - -@media (max-width: 1200px) { - body .sw-toggled #sidebar { - box-shadow: 0 0 10px rgba(51, 51, 51, 0.38); - } -} - -/* - * For Stupid IE9 - */ - -@media (min-width: 1200px) { - .ie9 body .sw-toggled #sidebar { - display: block; - } -} - -.ie9 body:not(.sw-toggled) #sidebar:not(.toggled) { - display: none; -} - -input:active, -input:focus { - outline: 0; - box-shadow: none !important; -} - -.form-control { - box-shadow: none; - border: 0; - border-bottom: 1px solid #e0e0e0; -} - - .form-control:active, - .form-control:focus { - border-bottom-color: #b4b4b4; - } - -.dropdown-menu { - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - margin-top: 1px; -} - - .dropdown-menu > li > a { - padding: 8px 17px; - -webkit-transition: background-color; - -o-transition: background-color; - transition: background-color; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - font-family: roboto; - } - - .dropdown-menu.dropdown-menu-lg { - width: 300px; - } - - .dropdown-menu.dropdown-menu-sm { - width: 150px; - } - - .dropdown-menu.dropdown-menu-right { - right: 0; - left: auto; - } - - .dropdown-menu.dropdown-menu-right > li > a { - } - - .dropdown-menu.dm-icon > li > a > .md { - line-height: 100%; - vertical-align: top; - font-size: 18px; - width: 28px; - } - - .dropdown-menu:not([class*="bgm-"]) > li > a { - color: #4C4C4C; - } - - .dropdown-menu:not([class*="bgm-"]) > li > a:hover { - color: #000; - } - - .dropdown-menu[class*="bgm-"] > li > a { - font-weight: 300; - color: #fff; - } - -.dropdown:not([data-animation]) .dropdown-menu, -.btn-group:not([data-animation]) .dropdown-menu { - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - opacity: 0; - filter: alpha(opacity=0); - display: block; -} - -.dropdown .dropdown-menu:not([data-animation]).pull-right, -.bootstrap-select .dropdown-menu:not([data-animation]).pull-right, -.btn-group .dropdown-menu:not([data-animation]).pull-right, -.dropdown .dropdown-menu:not([data-animation]).dropdown-menu-right, -.bootstrap-select .dropdown-menu:not([data-animation]).dropdown-menu-right, -.btn-group .dropdown-menu:not([data-animation]).dropdown-menu-right { - -webkit-transform-origin: top right; - -moz-transform-origin: top right; - -ms-transform-origin: top right; - transform-origin: top right; -} - -.dropdown .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right), -.bootstrap-select .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right), -.btn-group .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right) { - -webkit-transform-origin: top left; - -moz-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; -} - -.dropup .dropdown-menu:not([data-animation]).pull-right, -.dropup .dropdown-menu:not([data-animation]).dropdown-menu-right { - -webkit-transform-origin: bottom right; - -moz-transform-origin: bottom right; - -ms-transform-origin: bottom right; - transform-origin: bottom right; -} - -.dropup .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right) { - -webkit-transform-origin: bottom left; - -moz-transform-origin: bottom left; - -ms-transform-origin: bottom left; - transform-origin: bottom left; -} - -.dropdown.open .dropdown-menu:not([data-animation]), -.dropup.open .dropdown-menu:not([data-animation]), -.bootstrap-select.open .dropdown-menu:not([data-animation]), -.btn-group.open .dropdown-menu:not([data-animation]) { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - opacity: 1; - filter: alpha(opacity=100); -} - -.dropdown-header { - padding: 3px 17px; - margin-top: 10px; - color: #b1b1b1; - text-transform: uppercase; - font-weight: normal; -} - -.btn-group.open .dropdown-toggle { - box-shadow: none; -} - -.listview { - position: relative; -} - - .listview:not(.lv-lg):not(.lv-message) .lv-item { - padding: 10px 15px; - } - -@media (min-width: 480px) { - .listview.lv-lg .lv-item { - padding: 17px 35px 17px 25px; - } -} - -@media (max-width: 767px) { - .listview.lv-lg .lv-item { - padding: 17px 35px 17px 20px; - } -} - -.listview.lv-lg .lv-item:hover { - background-color: #FFFFDB; -} - -.listview .lv-item { - position: relative; - display: block; - -webkit-transition: background-color; - -o-transition: background-color; - transition: background-color; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; -} - - .listview .lv-item .lv-small { - font-size: 12px; - color: #A9A9A9; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: block; - width: 100%; - } - - .listview .lv-item .checkbox, - .listview .lv-item.media { - margin: 0; - } - - .listview .lv-item .lv-actions { - position: absolute; - } - -@media (min-width: 480px) { - .listview .lv-item .lv-actions { - right: 15px; - height: 30px; - margin-top: -15px; - top: 50%; - } -} - -@media (max-width: 767px) { - .listview .lv-item .lv-actions { - right: 7px; - top: 10px; - } -} - -.listview .lv-title { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: block; -} - -.listview a.lv-item:hover { - background: #ECF9FF; -} - -.listview [class*="lv-img"] { - border-radius: 50%; -} - -.listview .lv-img { - width: 50px; - height: 50px; -} - -.listview .lv-img-sm { - width: 35px; - height: 35px; -} - -.listview .lv-header { - text-align: center; - padding: 15px 10px 13px; - line-height: 100%; - text-transform: uppercase; - border-bottom: 1px solid #F0F0F0; - font-weight: 500; - color: #4C4C4C; -} - - .listview .lv-header .actions { - position: absolute; - top: 6px; - right: 8px; - z-index: 10; - } - -.listview .lv-header-alt { - background: #f8f8f8; - padding: 12px; - border-bottom: 1px solid #EEE; -} - - .listview .lv-header-alt:before, - .listview .lv-header-alt:after { - content: " "; - display: table; - } - - .listview .lv-header-alt:after { - clear: both; - } - - .listview .lv-header-alt:before, - .listview .lv-header-alt:after { - content: " "; - display: table; - } - - .listview .lv-header-alt:after { - clear: both; - } - - .listview .lv-header-alt .lv-actions { - z-index: 3; - float: right; - margin-top: 3px; - position: relative; - } - - .listview .lv-header-alt .lv-actions > li > a { - margin: 0 3px; - } - -.listview .lvh-label { - color: #818181; - display: inline-block; - margin: 0; - font-size: 14px; - font-weight: normal; - padding: 0 10px; - line-height: 33px; - vertical-align: middle; -} - -.listview .lv-footer { - display: block; - text-align: center; - padding: 7px 10px 8px; - border-top: 1px solid #F0F0F0; - line-height: 100%; - font-size: 11px; - margin-top: 20px; - color: #828282; -} - -.listview a.lv-footer:hover { - color: #050505; -} - -.listview.lv-bordered .lv-item:not(:last-child) { - border-bottom: 1px solid #f0f0f0; -} - -.listview .lv-attrs { - list-style: none; - padding: 0; - margin: 5px 0 0 0; -} - - .listview .lv-attrs > li { - display: inline-block; - padding: 2px 10px 3px; - font-size: 12px; - margin-top: 5px; - margin-right: 2px; - } - - .listview .lv-attrs > li:not(.info):not(.primary):not(.warning):not(.danger) { - border: 1px solid #dedede; - background: #ffffff; - color: #5e5e5e; - } - - .listview .lv-attrs > li.info { - border: 1px solid #00bcd4; - background: #00bcd4; - color: #ffffff; - } - - .listview .lv-attrs > li.primary { - border: 1px solid #2196f3; - background: #2196f3; - color: #ffffff; - } - - .listview .lv-attrs > li.warning { - border: 1px solid #ff9800; - background: #ff9800; - color: #ffffff; - } - - .listview .lv-attrs > li.danger { - border: 1px solid #f44336; - background: #f44336; - color: #ffffff; - } - - .listview .lv-attrs > li > a { - display: block; - } - -.listview:not(.lv-message) .lv-title { - color: #000; -} - -/* - * Inside Card will have more padding - */ - -.card-body .lv-item { - padding: 12px 20px; -} - -.progress { - box-shadow: none; - border-radius: 0; - height: 5px; - margin-bottom: 0; -} - - .progress .progress-bar { - box-shadow: none; - } - -#action-center { - position: fixed; - background: #fff; - padding: 20px 0; - width: 260px; - box-shadow: 0 0 10px rgba(51, 51, 51, 0.38); - height: calc(100% - 65px); - right: -280px; - top: 65px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - z-index: 5; - opacity: 0; - filter: alpha(opacity=0); -} - - #action-center.toggled { - right: 0; - opacity: 1; - filter: alpha(opacity=100); - } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { -} - -/* - * Chat Status Icons - */ - -[class*="chat-status"] { - position: absolute; - width: 10px; - height: 10px; - border-radius: 50%; - top: -3px; - right: 12px; - border: 2px solid #FFF; -} - -/* Simple Mixin */ - -.chat-status-online { - box-shadow: 0 0 0 1px #1ec01e; - background: #1ec01e; -} - -.chat-status-offline { - box-shadow: 0 0 0 1px #e73f3f; - background: #e73f3f; -} - -.chat-status-busy { - box-shadow: 0 0 0 1px #ffa500; - background: #ffa500; -} - -/* - * For Stupid IE9 - */ - -.ie9 #action-center { - right: 0; -} - - .ie9 #action-center:not(.toggled) { - display: none; - } - -.nav-tabs { - list-style: none; - padding: 0; - white-space: nowrap; - margin: 0; - overflow: hidden; - box-shadow: inset 0 -2px 0 0 #eeeeee; -} - - .nav-tabs > li { - display: inline-block; - vertical-align: top; - } - - .nav-tabs > li > a { - display: inline-block; - color: #7a7a7a; - text-transform: uppercase; - position: relative; - width: 100%; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - font-weight: 500; - } - - .nav-tabs > li > a:after { - content: ""; - height: 2px; - position: absolute; - width: 100%; - left: 0; - bottom: 0; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - } - -@media (min-width: 768px) { - .nav-tabs > li > a { - padding: 15px; - } -} - -@media (max-width: 768px) { - .nav-tabs > li > a { - padding: 15px 8px; - } -} - -.nav-tabs > li.active > a { - color: #000; -} - - .nav-tabs > li.active > a:after { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - -.nav-tabs.nav-tabs-right { - text-align: right; -} - -.nav-tabs.tn-justified > li { - display: table-cell; - width: 1%; - text-align: center; -} - -.nav-tabs.tn-icon > li .md { - font-size: 22px; - line-height: 100%; - min-height: 25px; -} - -.nav-tabs:not([data-tab-color]) > li > a:after { - background: #2196f3; -} - -.nav-tabs[data-tab-color="green"] > li > a:after { - background: #4caf50; -} - -.nav-tabs[data-tab-color="red"] > li > a:after { - background: #f44336; -} - -.nav-tabs[data-tab-color="teal"] > li > a:after { - background: #009688; -} - -.nav-tabs[data-tab-color="amber"] > li > a:after { - background: #ffc107; -} - -.nav-tabs[data-tab-color="black"] > li > a:after { - background: #000000; -} - -.nav-tabs[data-tab-color="cyan"] > li > a:after { - background: #00bcd4; -} - -.tab-content { - padding: 20px 0; -} - -.card { - position: relative; - background: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - margin-bottom: 30px; -} - - .card .card-header { - position: relative; - } - -@media screen and (min-width: 768px) { - .card .card-header:not(.ch-alt) { - padding: 23px 26px; - } -} - -@media screen and (max-width: 991px) { - .card .card-header:not(.ch-alt) { - padding: 18px; - } -} - -.card .card-header h2 { - margin: 0; - line-height: 100%; - font-size: 17px; - font-weight: 400; -} - - .card .card-header h2 small { - display: block; - margin-top: 8px; - color: #AEAEAE; - line-height: 160%; - } - -@media screen and (min-width: 768px) { - .card .card-header.ch-alt { - padding: 23px 26px; - } -} - -@media screen and (max-width: 991px) { - .card .card-header.ch-alt { - padding: 18px 18px 28px; - } -} - -.card .card-header.ch-alt:not([class*="bgm-"]) { - background-color: #f7f7f7; -} - -.card .card-header[class*="bgm-"] h2, -.card .card-header[class*="bgm-"] h2 small { - color: #fff; -} - -.card .card-header .actions { - position: absolute; - right: 10px; - z-index: 2; - top: 15px; -} - -.card .card-header .btn-float { - right: 25px; - bottom: -23px; - z-index: 1; -} - -@media screen and (min-width: 768px) { - .card .card-body.card-padding { - padding: 23px 26px; - } -} - -@media screen and (max-width: 991px) { - .card .card-body.card-padding { - padding: 18px; - } -} - -.card .card-body.card-padding-sm { - padding: 15px; -} - -.chart-edge { - margin: 20px -8px 0 -10px; - overflow: hidden; -} - - .chart-edge .flot-chart { - bottom: -14px; - } - -.charts-row { - margin-top: 50px; - margin-bottom: 20px; -} - -.mini-charts-item { - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - position: relative; - margin-bottom: 30px; -} - - .mini-charts-item .chart { - padding: 15px; - float: left; - } - - .mini-charts-item .chart.chart-pie { - margin: 0 20px; - } - - .mini-charts-item .count { - overflow: hidden; - color: rgba(255, 255, 255, 0.9); - padding: 16px 12px; - } - - .mini-charts-item .count > h2 { - margin: 0; - line-height: 100%; - font-size: 22px; - font-weight: 300; - color: #fff; - } - - .mini-charts-item .count > small { - margin-bottom: 2px; - display: block; - } - - .mini-charts-item .count > h2, - .mini-charts-item .count > small { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .mini-charts-item > .clearfix, - .mini-charts-item > .dl-horizontal dd, - .mini-charts-item > .container, - .mini-charts-item > .container-fluid, - .mini-charts-item > .row, - .mini-charts-item > .form-horizontal .form-group, - .mini-charts-item > .btn-toolbar, - .mini-charts-item > .btn-group-vertical > .btn-group, - .mini-charts-item > .nav, - .mini-charts-item > .navbar, - .mini-charts-item > .navbar-header, - .mini-charts-item > .navbar-collapse, - .mini-charts-item > .pager, - .mini-charts-item > .panel-body, - .mini-charts-item > .modal-footer { - position: relative; - z-index: 1; - } - - .mini-charts-item:before { - -webkit-transition: width; - -o-transition: width; - transition: width; - -webkit-transition-duration: 500ms; - transition-duration: 500ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - content: ""; - width: 113px; - height: 100%; - background: rgba(0, 0, 0, 0.1); - position: absolute; - left: 0; - top: 0; - } - - .mini-charts-item:hover .count { - color: #fff !important; - } - - .mini-charts-item:hover:before { - width: 100%; - } - -/* - * Sparkline Tooltip - */ - -#jqstooltip { - min-width: 21px; - min-height: 23px; - text-align: center; - border: 0; - background: #fff; - box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); - background-color: #fff; -} - - #jqstooltip .jqsfield { - font-size: 12px; - font-weight: 700; - font-family: inherit; - text-align: center; - color: #333; - } - - #jqstooltip .jqsfield > span { - display: none; - } - -/* - * Easy Pie Charts - */ - -.epc-item { - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - position: relative; - margin-bottom: 30px; - padding: 30px 20px; - text-align: center; -} - -.easy-pie { - display: inline-block; - position: relative; - padding: 0 5px 10px; -} - - .easy-pie .percent { - position: absolute; - font-weight: 300; - width: 100%; - line-height: 100%; - left: 0; - } - - .easy-pie .percent:after { - content: "%"; - } - - .easy-pie.main-pie .percent { - margin-top: 49px; - font-size: 50px; - text-align: center; - } - - .easy-pie.main-pie .percent:not([class*="c-"]) { - color: rgba(255, 255, 255, 0.7); - } - - .easy-pie.main-pie .percent:after { - font-size: 30px; - } - - .easy-pie.main-pie .pie-title { - color: #fff; - } - - .easy-pie:not(.main-pie) .percent { - font-size: 26px; - margin-top: 37px; - } - - .easy-pie:not(.main-pie) .percent:after { - font-size: 20px; - } - - .easy-pie .pie-title { - position: absolute; - width: 100%; - text-align: center; - bottom: -3px; - left: 0; - } - -/* - * Recet Items Table Chart - */ - -#recent-items-chart { - width: calc(100% + 19px); - height: 150px; - margin: -20px -10px 0; - bottom: -10px; -} - -/* - * Flot Chart - */ - -[class*="flot-chart"] { - width: 100%; - display: block; -} - -.flot-chart { - height: 200px; -} - -.flot-chart-pie { - height: 300px; -} - -@media (min-width: 768px) { - .flot-chart-pie { - margin-bottom: 20px; - } -} - -.flot-tooltip, -#flotTip { - position: absolute; - color: #333; - display: none; - font-size: 12px; - box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); - padding: 3px 10px; - background-color: #fff; - z-index: 99999; -} - -[class*="flc-"] { - text-align: center; - margin: 10px 0 5px; -} - - [class*="flc-"] table { - display: inline-block; - } - - [class*="flc-"] .legendColorBox > div { - border: #fff !important; - } - - [class*="flc-"] .legendColorBox > div > div { - border-radius: 50%; - } - - [class*="flc-"] .legendLabel { - padding: 0 8px 0 3px; - } - -.dash-widget-item { - position: relative; - min-height: 380px; - margin-bottom: 30px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); -} - - .dash-widget-item .dash-widget-header { - position: relative; - } - - .dash-widget-item .dash-widget-header .actions { - display: none; - position: absolute; - right: 4px; - top: 6px; - padding: 0; - list-style: none; - } - - .dash-widget-item .dash-widget-header .actions > li { - display: inline-block; - vertical-align: baseline; - } - - .dash-widget-item .dash-widget-header .actions > li > a { - color: #fff; - font-size: 20px; - } - - .dash-widget-item .dash-widget-footer { - position: absolute; - left: 0; - bottom: 0; - width: 100%; - } - - .dash-widget-item .dash-widget-title { - padding: 12px 20px; - position: absolute; - width: 100%; - left: 0; - font-weight: 300; - } - - .dash-widget-item:hover .dash-widget-header .actions { - display: block; - } - - - - -.btn { - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - border: 0; - text-transform: uppercase; -} - - .btn[class*="bgm-"] { - color: #fff; - } - - .btn:not(.btn-link):not(.btn-float):not(.command-edit):not(.command-delete):not(.selectpicker) { - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - } - - .btn:not(.btn-link):not(.btn-float):not(.command-edit):not(.command-delete):not(.selectpicker):hover { - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); - } - - .btn .caret { - margin-top: -3px; - } - -.btn-group:not(.bootstrap-select), -.btn-group-vertical:not(.bootstrap-select) { - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.3); -} - -.btn-group .btn, -.btn-group-vertical .btn, -.btn-group .btn:active, -.btn-group-vertical .btn:active, -.btn-group .btn:focus, -.btn-group-vertical .btn:focus, -.btn-group .btn-group, -.btn-group-vertical .btn-group { - box-shadow: none !important; -} - -.btn-group .btn, -.btn-group-vertical .btn { - margin: 0; -} - -.btn-xs, -.btn-group-xs > .btn { - padding: 2px 5px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} - -.btn-link { - color: #797979; - text-decoration: none; - border-radius: 2px; -} - - .btn-link:hover { - color: #0a0a0a; - } - - .btn-link:hover, - .btn-link:active, - .btn-link:focus { - text-decoration: none; - } - -.btn-inverse { - color: #ffffff; - background-color: #454545; - border-color: transparent; -} - - .btn-inverse:hover, - .btn-inverse:focus, - .btn-inverse.focus, - .btn-inverse:active, - .btn-inverse.active, - .open > .dropdown-toggle.btn-inverse { - color: #ffffff; - background-color: #2b2b2b; - border-color: rgba(0, 0, 0, 0); - } - - .btn-inverse:active, - .btn-inverse.active, - .open > .dropdown-toggle.btn-inverse { - background-image: none; - } - - .btn-inverse.disabled, - .btn-inverse[disabled], - fieldset[disabled] .btn-inverse, - .btn-inverse.disabled:hover, - .btn-inverse[disabled]:hover, - fieldset[disabled] .btn-inverse:hover, - .btn-inverse.disabled:focus, - .btn-inverse[disabled]:focus, - fieldset[disabled] .btn-inverse:focus, - .btn-inverse.disabled.focus, - .btn-inverse[disabled].focus, - fieldset[disabled] .btn-inverse.focus, - .btn-inverse.disabled:active, - .btn-inverse[disabled]:active, - fieldset[disabled] .btn-inverse:active, - .btn-inverse.disabled.active, - .btn-inverse[disabled].active, - fieldset[disabled] .btn-inverse.active { - background-color: #454545; - border-color: transparent; - } - - .btn-inverse .badge { - color: #454545; - background-color: #ffffff; - } - - .btn-inverse:hover, - .btn-inverse:focus, - .btn-inverse.focus, - .btn-inverse:active, - .open > .dropdown-toggle.btn-inverse { - color: #ffffff; - background-color: #454545; - border-color: transparent; - } - - .btn-inverse:active, - .btn-inverse.active, - .open > .dropdown-toggle.btn-inverse { - background-image: none; - } - - .btn-inverse.disabled, - .btn-inverse[disabled], - fieldset[disabled] .btn-inverse, - .btn-inverse.disabled:hover, - .btn-inverse[disabled]:hover, - fieldset[disabled] .btn-inverse:hover, - .btn-inverse.disabled:focus, - .btn-inverse[disabled]:focus, - fieldset[disabled] .btn-inverse:focus, - .btn-inverse.disabled.focus, - .btn-inverse[disabled].focus, - fieldset[disabled] .btn-inverse.focus, - .btn-inverse.disabled:active, - .btn-inverse[disabled]:active, - fieldset[disabled] .btn-inverse:active { - background-color: #454545; - border-color: transparent; - } - - .btn-inverse .badge { - color: #454545; - background-color: #ffffff; - } - -.btn-icon { - border-radius: 50%; - width: 40px; - height: 40px; - padding: 0; - text-align: center; - position: relative; -} - - .btn-icon:before { - left: 0; - top: 0; - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-transform: scale3d(0, 0, 0); - -moz-transform: scale3d(0, 0, 0); - -ms-transform: scale3d(0, 0, 0); - -o-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - background-color: 50%; - z-index: 0; - border-radius: 300ms; - opacity: 0; - filter: alpha(opacity=0); - } - - .btn-icon:hover:before { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - -ms-transform: scale3d(1, 1, 1); - -o-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; - filter: alpha(opacity=100); - } - - .btn-icon .md { - font-size: 17px; - } - - .btn-icon.btn-default:hover { - background: #fff; - } - -.btn-icon-text > .md, -.btn-icon-text > .socicon { - font-size: 15px; - vertical-align: top; - display: inline-block; - margin-top: 1px; - line-height: 100%; - margin-right: 5px; -} - -.btn-float { - width: 50px; - height: 50px; - border-radius: 50%; - position: absolute !important; - line-height: 38px; -} - - .btn-float:hover { - box-shadow: 0 2px 7px rgba(0, 0, 0, 0.18); - } - - .btn-float i { - font-size: 23px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 500ms; - transition-duration: 500ms; - } - - .btn-float:hover i { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } - - .btn-float:not(.bgm-white):not(.bgm-gray) > i { - color: #fff; - } - - .btn-float.bgm-white > i, - .btn-float.bgm-gray > i { - color: #333; - } - -.open .btn { - outline: none !important; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important; -} - - .open .btn:focus, - .open .btn:active { - outline: none !important; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important; - } - -/* - * Checkbox and Radio - */ - -.checkbox label, -.radio label { - padding-left: 30px; - position: relative; -} - -.checkbox input, -.radio input { - top: 0; - left: 0; - margin-left: 0 !important; - z-index: 1; - cursor: pointer; - opacity: 0; - filter: alpha(opacity=0); - margin-top: 0; -} - -.checkbox .input-helper:before, -.radio .input-helper:before, -.checkbox .input-helper:after, -.radio .input-helper:after { - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - position: absolute; - content: ""; -} - -.checkbox .input-helper:before, -.radio .input-helper:before { - left: 0; - border: 1px solid #ccc; -} - -.checkbox.disabled, -.radio.disabled { - opacity: 0.6; - filter: alpha(opacity=60); -} - -.checkbox input { - width: 17px; - height: 17px; -} - - .checkbox input:checked + .input-helper:before { - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - } - - .checkbox input:checked + .input-helper:after { - -webkit-transform: scale(1) rotate(-50deg); - -ms-transform: scale(1) rotate(-50deg); - -o-transform: scale(1) rotate(-50deg); - transform: scale(1) rotate(-50deg); - opacity: 1; - filter: alpha(opacity=100); - } - -.checkbox .input-helper:before { - top: 0; - width: 17px; - height: 17px; -} - -.checkbox .input-helper:after { - opacity: 0; - filter: alpha(opacity=0); - -webkit-transform: scale(0) rotate(80deg); - -ms-transform: scale(0) rotate(80deg); - -o-transform: scale(0) rotate(80deg); - transform: scale(0) rotate(80deg); - width: 22px; - height: 9px; - border-bottom: 2px solid #009688; - border-left: 2px solid #009688; - border-bottom-left-radius: 2px; - left: -1px; - top: 1px; -} - -.has-error .checkbox .input-helper:before { - border-color: #f99d97; -} - -.has-error .checkbox .input-helper:after { - border-bottom-color: #f77066; - border-left-color: #f77066; -} - -.has-success .checkbox .input-helper:before { - border-color: #92cf94; -} - -.has-success .checkbox .input-helper:after { - border-bottom-color: #6ec071; - border-left-color: #6ec071; -} - -.has-warning .checkbox .input-helper:before { - border-color: #ffdb6d; -} - -.has-warning .checkbox .input-helper:after { - border-bottom-color: #ffce3a; - border-left-color: #ffce3a; -} - -.radio input { - width: 19px; - height: 19px; -} - - .radio input:checked + .input-helper:after { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - -.radio .input-helper:before { - top: -1px; - width: 19px; - height: 19px; - border-radius: 50%; -} - -.radio .input-helper:after { - width: 11px; - height: 11px; - background: #009688; - border-radius: 50%; - top: 3px; - left: 4px; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); -} - -.checkbox-inline, -.radio-inline { - vertical-align: top; - margin-top: 0; - padding-left: 25px; -} - -/* - * Select - */ - -html:not(.ie9) .select { - position: relative; -} - - html:not(.ie9) .select:before { - position: absolute; - top: 0; - content: ""; - height: calc(100% - 2px); - width: 30px; - background-color: #FFF; - background-position: right calc(100% - 7px); - background-repeat: no-repeat; - background-image: url("img/select.png"); - pointer-events: none; - z-index: 5; - } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - html:not(.ie9) .select:before { - background-image: url("img/select@2x.png"); - background-size: 12px 12px; - } -} - -html:not(.ie9) .select:not(.fg-line):before { - right: 0; -} - -html:not(.ie9) .select.fg-line:before { - right: 10px; -} - -/* - * Input Group - */ - -.input-group-addon { - border-width: 0px 0px 1px 0px; -} - -/* - * Input Feilds - */ - -.fg-line { - position: relative; - vertical-align: top; - /* Validation Stats */ -} - - .fg-line:not(.form-group) { - display: inline-block; - width: 100%; - } - - .fg-line .form-control { - resize: none; - } - - .fg-line .form-control:not(:disabled) { - color: #000; - } - - .fg-line .form-control:disabled { - color: #9d9d9d; - background: transparent; - } - - .fg-line:not(.disabled):after, - .fg-line:not(.readonly):after { - position: absolute; - z-index: 3; - bottom: 0; - left: 0; - height: 2px; - width: 0; - content: ""; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - .fg-line:not([class*=has-]):after { - background: #2196f3; - } - - .fg-line.input-toggled:after { - width: 100%; - } - - .fg-line.readonly .form-control { - color: #9d9d9d; - background: transparent; - } - - .fg-line.fg-toggled:after { - width: 100%; - } - - .fg-line.has-success:after { - background: #4caf50; - } - - .fg-line.has-warning:after { - background: #ffc107; - } - - .fg-line.has-error:after { - background: #f44336; - } - -/* Validation Stats for inner fg-line*/ - -.has-success .fg-line:after { - background: #4caf50; -} - -.has-warning .fg-line:after { - background: #ffc107; -} - -.has-error .fg-line:after { - background: #f44336; -} - -.fg-float { - margin-top: 2px; - position: relative; -} - - .fg-float .form-control { - position: relative; - background: transparent; - z-index: 1; - } - - .fg-float .form-control::-moz-placeholder { - color: #ffffff; - opacity: 1; - } - - .fg-float .form-control:-ms-input-placeholder { - color: #ffffff; - } - - .fg-float .form-control::-webkit-input-placeholder { - color: #ffffff; - } - - .fg-float .fg-label { - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - position: absolute; - top: 5px; - font-weight: 400; - color: #959595; - pointer-events: none; - z-index: 0; - left: 0; - white-space: nowrap; - } - - .fg-float .input-lg + .fg-label { - font-size: 17px; - } - - .fg-float .input-sm + .fg-label { - font-size: 11px; - } - - .fg-float .fg-toggled + .fg-label { - top: -20px; - font-size: 11px; - } - -.form-control { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - padding: 0; - border-radius: 0; -} - - .form-control:focus { - box-shadow: none; - } - - .form-control.auto-size { - padding-top: 6px; - } - -.form-group { - margin-bottom: 20px; -} - -/* - * Validation - */ - -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #4caf50; -} - -.has-success .form-control { - border-color: #b5dfb7; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - - .has-success .form-control:focus { - border-color: #92cf94; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #fcfefc; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #fcfefc; - } - -.has-success .input-group-addon { - color: #4caf50; - border-color: #b5dfb7; - background-color: #ffffff; -} - -.has-success .form-control-feedback { - color: #4caf50; -} - -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #ff9800; -} - -.has-warning .form-control { - border-color: #ffd699; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - - .has-warning .form-control:focus { - border-color: #ffc166; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - } - -.has-warning .input-group-addon { - color: #ff9800; - border-color: #ffd699; - background-color: #ffffff; -} - -.has-warning .form-control-feedback { - color: #ff9800; -} - -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #f44336; -} - -.has-error .form-control { - border-color: #fccbc7; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - - .has-error .form-control:focus { - border-color: #f99d97; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - } - -.has-error .input-group-addon { - color: #f44336; - border-color: #fccbc7; - background-color: #ffffff; -} - -.has-error .form-control-feedback { - color: #f44336; -} - -.has-success .form-control, -.has-warning .form-control, -.has-error .form-control { - box-shadow: none; -} - -.form-control-feedback { - font-size: 20px; -} - -.control-label { - font-weight: normal; -} - -/* - * Input Groups - */ - -.input-group { - /* Mixin for Input Group */ -} - - .input-group .input-group-addon { - vertical-align: bottom; - padding: 0; - } - - .input-group .input-group-addon .md { - line-height: 100%; - } - - .input-group:not(.input-group-lg):not(.input-group-sm) .input-group-addon:not(.last) { - padding-right: 10px; - } - - .input-group:not(.input-group-lg):not(.input-group-sm) .input-group-addon.last { - padding-left: 10px; - } - - .input-group:not(.input-group-lg):not(.input-group-sm) .input-group-addon .md { - font-size: 23px; - } - - .input-group.input-group-lg .input-group-addon:not(.last) { - padding-right: 15px; - } - - .input-group.input-group-lg .input-group-addon.last { - padding-left: 15px; - } - - .input-group.input-group-lg .input-group-addon .md { - font-size: 30px; - } - - .input-group.input-group-sm .input-group-addon:not(.last) { - padding-right: 5px; - } - - .input-group.input-group-sm .input-group-addon.last { - padding-left: 5px; - } - - .input-group.input-group-sm .input-group-addon .md { - font-size: 18px; - } - - .input-group > [class*="col-"] { - padding: 0; - } - - .input-group .fg-line { - padding: 0 10px; - } - - .input-group .fg-line:after { - left: 10px; - } - - .input-group .fg-line.fg-toggled:after { - width: calc(100% - 20px); - } - -/* - * Toggle Switch - */ - -.toggle-switch { - display: inline-block; - vertical-align: top; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - - .toggle-switch .ts-label { - display: inline-block; - margin: 0 20px 0 0; - vertical-align: top; - -webkit-transition: color 0.56s cubic-bezier(0.4, 0, 0.2, 1); - transition: color 0.56s cubic-bezier(0.4, 0, 0.2, 1); - } - - .toggle-switch .ts-helper { - display: inline-block; - position: relative; - width: 40px; - height: 16px; - border-radius: 8px; - background: rgba(0, 0, 0, 0.26); - -webkit-transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1); - transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1); - vertical-align: middle; - cursor: pointer; - } - - .toggle-switch .ts-helper:before { - content: ''; - position: absolute; - top: -4px; - left: -4px; - width: 24px; - height: 24px; - background: #fafafa; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28); - border-radius: 50%; - webkit-transition: left 0.28s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); - transition: left 0.28s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); - } - - .toggle-switch:not(.disabled) .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(128, 128, 128, 0.1); - } - - .toggle-switch input { - position: absolute; - z-index: 1; - width: 46px; - margin: 0 0 0 -4px; - height: 24px; - opacity: 0; - filter: alpha(opacity=0); - cursor: pointer; - } - - .toggle-switch input:checked + .ts-helper:before { - left: 20px; - } - - .toggle-switch:not([data-ts-color]) input:not(:disabled):checked + .ts-helper { - background: rgba(0, 150, 136, 0.5); - } - - .toggle-switch:not([data-ts-color]) input:not(:disabled):checked + .ts-helper:before { - background: #009688; - } - - .toggle-switch:not([data-ts-color]) input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(0, 150, 136, 0.2); - } - - .toggle-switch.disabled { - opacity: 0.6; - filter: alpha(opacity=60); - } - - .toggle-switch[data-ts-color="red"] input:not(:disabled):checked + .ts-helper { - background: rgba(244, 67, 54, 0.5); - } - - .toggle-switch[data-ts-color="red"] input:not(:disabled):checked + .ts-helper:before { - background: #f44336; - } - - .toggle-switch[data-ts-color="red"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(244, 67, 54, 0.2); - } - - .toggle-switch[data-ts-color="blue"] input:not(:disabled):checked + .ts-helper { - background: rgba(33, 150, 243, 0.5); - } - - .toggle-switch[data-ts-color="blue"] input:not(:disabled):checked + .ts-helper:before { - background: #2196f3; - } - - .toggle-switch[data-ts-color="blue"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(33, 150, 243, 0.2); - } - - .toggle-switch[data-ts-color="amber"] input:not(:disabled):checked + .ts-helper { - background: rgba(255, 193, 7, 0.5); - } - - .toggle-switch[data-ts-color="amber"] input:not(:disabled):checked + .ts-helper:before { - background: #ffc107; - } - - .toggle-switch[data-ts-color="amber"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(255, 193, 7, 0.2); - } - - .toggle-switch[data-ts-color="purple"] input:not(:disabled):checked + .ts-helper { - background: rgba(156, 39, 176, 0.5); - } - - .toggle-switch[data-ts-color="purple"] input:not(:disabled):checked + .ts-helper:before { - background: #9c27b0; - } - - .toggle-switch[data-ts-color="purple"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(156, 39, 176, 0.2); - } - - .toggle-switch[data-ts-color="pink"] input:not(:disabled):checked + .ts-helper { - background: rgba(233, 30, 99, 0.5); - } - - .toggle-switch[data-ts-color="pink"] input:not(:disabled):checked + .ts-helper:before { - background: #e91e63; - } - - .toggle-switch[data-ts-color="pink"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(233, 30, 99, 0.2); - } - - .toggle-switch[data-ts-color="lime"] input:not(:disabled):checked + .ts-helper { - background: rgba(205, 220, 57, 0.5); - } - - .toggle-switch[data-ts-color="lime"] input:not(:disabled):checked + .ts-helper:before { - background: #cddc39; - } - - .toggle-switch[data-ts-color="lime"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(205, 220, 57, 0.2); - } - - .toggle-switch[data-ts-color="cyan"] input:not(:disabled):checked + .ts-helper { - background: rgba(0, 188, 212, 0.5); - } - - .toggle-switch[data-ts-color="cyan"] input:not(:disabled):checked + .ts-helper:before { - background: #00bcd4; - } - - .toggle-switch[data-ts-color="cyan"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(0, 188, 212, 0.2); - } - - .toggle-switch[data-ts-color="green"] input:not(:disabled):checked + .ts-helper { - background: rgba(76, 175, 80, 0.5); - } - - .toggle-switch[data-ts-color="green"] input:not(:disabled):checked + .ts-helper:before { - background: #4caf50; - } - - .toggle-switch[data-ts-color="green"] input:not(:disabled):checked + .ts-helper:active:before { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(76, 175, 80, 0.2); - } - -.pagination { - border-radius: 0; -} - - .pagination > li { - margin: 0 2px; - display: inline-block; - vertical-align: top; - } - - .pagination > li > a, - .pagination > li > span { - border-radius: 50% !important; - padding: 0; - width: 40px; - height: 40px; - line-height: 38px; - text-align: center; - font-size: 14px; - z-index: 1; - position: relative; - } - - .pagination > li > a > .md, - .pagination > li > span > .md { - font-size: 22px; - } - - .pagination > li > a:before, - .pagination > li > span:before { - left: 0; - top: 0; - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-transform: scale3d(0, 0, 0); - -moz-transform: scale3d(0, 0, 0); - -ms-transform: scale3d(0, 0, 0); - -o-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - background-color: rgba(0, 0, 0, 0.1); - z-index: 0; - border-radius: 50%; - opacity: 0; - filter: alpha(opacity=0); - } - - .pagination > li > a:hover:before, - .pagination > li > span:hover:before { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - -ms-transform: scale3d(1, 1, 1); - -o-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; - filter: alpha(opacity=100); - } - - .pagination > li.disabled { - opacity: 0.5; - filter: alpha(opacity=50); - } - -/* - * Listview Pagination - */ - -.lv-pagination { - width: 100%; - text-align: center; - padding: 40px 0; - border-top: 1px solid #F0F0F0; - margin-top: 0; - margin-bottom: 0; -} - -.popover { - box-shadow: 0 2px 30px rgba(0, 0, 0, 0.2); -} - -.popover-title { - border-bottom: 0; - padding: 15px; - font-size: 12px; - text-transform: uppercase; -} - -.popover-content { - padding: 0 15px 15px; -} - - .popover-content p { - margin-bottom: 0; - } - -.fw-container .tab-content { - padding: 25px 0; -} - -.fw-container .fw-footer { - text-align: center; - margin: 30px 0 0; - width: 100%; - border-top: 2px solid #eee; - padding: 15px 0; -} - -.alert { - padding-left: 30px; - font-size: 13px; -} - - .alert span { - cursor: pointer; - } - - .alert:not(.alert-dismissible) { - padding-right: 30px; - } - - .alert.alert-dismissable { - padding-right: 44px; - } - -.alert-inverse { - background: rgba(51, 51, 51, 0.9); - box-shadow: 0 0 5px rgba(51, 51, 51, 0.5); - color: #fff; -} - - .alert-inverse a { - color: #fff; - } - -.growl-animated { - border: 0; - color: #fff; -} - - .growl-animated.alert-info { - background: rgba(33, 150, 243, 0.8); - box-shadow: 0 0 5px rgba(33, 150, 243, 0.5); - } - - .growl-animated.alert-success { - background: rgba(76, 175, 80, 0.8); - box-shadow: 0 0 5px rgba(76, 175, 80, 0.5); - } - - .growl-animated.alert-warning { - background: rgba(255, 152, 0, 0.8); - box-shadow: 0 0 5px rgba(255, 152, 0, 0.5); - } - - .growl-animated.alert-danger { - background: rgba(244, 67, 54, 0.8); - box-shadow: 0 0 5px rgba(244, 67, 54, 0.5); - } - -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #e0e0e0; - box-shadow: 0 0 6px #EAEAEA; -} - -/* - * Lightbox - */ - -.lightbox .lightbox-item { - position: relative; -} - - .lightbox .lightbox-item > img { - width: 100%; - } - - .lightbox .lightbox-item:before { - left: 0; - top: 0; - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-transform: scale3d(0, 0, 0); - -moz-transform: scale3d(0, 0, 0); - -ms-transform: scale3d(0, 0, 0); - -o-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - background-color: rgba(0, 0, 0, 0.1); - z-index: 0; - border-radius: 0; - opacity: 0; - filter: alpha(opacity=0); - } - - .lightbox .lightbox-item:hover:before { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - -ms-transform: scale3d(1, 1, 1); - -o-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; - filter: alpha(opacity=100); - } - - .lightbox .lightbox-item:hover { - cursor: pointer; - } - -.lightbox [data-src]:before, -.lightbox [data-src]:after { - content: " "; - display: table; -} - -.lightbox [data-src]:after { - clear: both; -} - -.lightbox [data-src]:before, -.lightbox [data-src]:after { - content: " "; - display: table; -} - -.lightbox [data-src]:after { - clear: both; -} - -.lightbox .lightbox-item:not(.p-item) { - position: relative; -} - -/* - * Carousel - */ - -.carousel .carousel-control { - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - opacity: 0; - filter: alpha(opacity=0); -} - - .carousel .carousel-control .md { - position: absolute; - top: 50%; - left: 50%; - line-height: 100%; - } - -@media screen and (min-width: 768px) { - .carousel .carousel-control .md { - font-size: 60px; - width: 60px; - height: 60px; - margin-top: -30px; - margin-left: -30px; - } -} - -@media screen and (max-width: 991px) { - .carousel .carousel-control .md { - width: 24px; - height: 24px; - margin-top: -12px; - margin-left: -12px; - } -} - -.carousel:hover .carousel-control { - opacity: 1; - filter: alpha(opacity=100); -} - -.carousel .carousel-caption { - background: rgba(0, 0, 0, 0.6); - left: 0; - right: 0; - bottom: 0; - width: 100%; - padding-bottom: 50px; -} - - .carousel .carousel-caption > h3 { - color: #fff; - margin: 0 0 5px; - font-weight: 300; - } - - .carousel .carousel-caption > p { - margin: 0; - } - -@media screen and (max-width: 991px) { - .carousel .carousel-caption { - display: none; - } -} - -.carousel .carousel-indicators { - bottom: 10px; - margin: 0; - left: 0; - bottom: 0; - width: 100%; - padding: 0 0 6px; - background: rgba(0, 0, 0, 0.6); -} - - .carousel .carousel-indicators li { - border-radius: 0; - width: 15px; - border: 0; - background: #fff; - height: 3px; - margin: 0; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - } - - .carousel .carousel-indicators li.active { - width: 25px; - height: 3px; - background: #ff9800; - } - -.modal .modal-content { - box-shadow: 0 5px 20px rgba(0, 0, 0, 0.31); - border-radius: 3px; - border: 0; -} - -.modal .modal-header { - padding: 23px 26px; -} - -.modal .modal-body { - padding: 0 26px 10px; -} - -.modal .modal-footer .btn-link { - font-size: 14px; - color: #000; - font-weight: 500; -} - - .modal .modal-footer .btn-link:hover { - background-color: #eee; - } - -.modal:not([data-modal-color]) .modal-footer .btn-link { - font-weight: 500; -} - - .modal:not([data-modal-color]) .modal-footer .btn-link:hover { - background-color: #eee; - } - -.modal[data-modal-color] { - color: #fff; -} - - .modal[data-modal-color] .modal-title, - .modal[data-modal-color] .modal-footer .btn-link { - color: #fff; - } - - .modal[data-modal-color] .modal-footer { - background: rgba(0, 0, 0, 0.1); - } - - .modal[data-modal-color] .modal-backdrop { - background: #fff; - } - - .modal[data-modal-color] .modal-footer .btn-link { - font-weight: 400; - } - - .modal[data-modal-color] .modal-footer .btn-link:hover { - background-color: rgba(0, 0, 0, 0.1); - } - -.modal[data-modal-color="blue"] .modal-content { - background: #2196f3; -} - -.modal[data-modal-color="cyan"] .modal-content { - background: #00bcd4; -} - -.modal[data-modal-color="green"] .modal-content { - background: #4caf50; -} - -.modal[data-modal-color="lightgreen"] .modal-content { - background: #8bc34a; -} - -.modal[data-modal-color="lightblue"] .modal-content { - background: #03a9f4; -} - -.modal[data-modal-color="amber"] .modal-content { - background: #ffc107; -} - -.modal[data-modal-color="teal"] .modal-content { - background: #009688; -} - -.modal[data-modal-color="orange"] .modal-content { - background: #ff9800; -} - -.modal[data-modal-color="bluegray"] .modal-content { - background: #607d8b; -} - -.modal[data-modal-color="red"] .modal-content { - background: #f44336; -} - -.modal-backdrop { - z-index: 10; -} - -.panel { - box-shadow: none; - border: 0; -} - -.panel-heading { - padding: 0; -} - -.panel-title > a { - padding: 10px 15px; - display: block; - font-size: 13px; -} - -.panel-collapse .panel-heading { - position: relative; -} - - .panel-collapse .panel-heading .panel-title > a { - padding: 8px 5px 16px 30px; - color: #000; - position: relative; - } - - .panel-collapse .panel-heading .panel-title > a:after, - .panel-collapse .panel-heading .panel-title > a:before { - position: absolute; - bottom: 0; - left: 0; - height: 2px; - width: 100%; - content: ""; - } - - .panel-collapse .panel-heading .panel-title > a:after { - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - } - - .panel-collapse .panel-heading:not(.active) .panel-title > a:before { - background: #eee; - } - - .panel-collapse .panel-heading:before, - .panel-collapse .panel-heading:after { - font-family: 'Material Design Iconic Font'; - font-size: 17px; - position: absolute; - left: 0; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - top: 4px; - } - - .panel-collapse .panel-heading:before { - content: "\f0fb"; - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - - .panel-collapse .panel-heading:after { - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - content: "\f111"; - } - - .panel-collapse .panel-heading.active .panel-title > a:after { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - - .panel-collapse .panel-heading.active:before { - -webkit-transform: scale(0) rotate(-90deg); - -ms-transform: scale(0) rotate(-90deg); - -o-transform: scale(0) rotate(-90deg); - transform: scale(0) rotate(-90deg); - } - - .panel-collapse .panel-heading.active:after { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - } - -.panel-collapse .panel-body { - border-top: 0 !important; - padding-left: 5px; - padding-right: 5px; -} - -.panel-group:not([data-collapse-color]) .panel-collapse .panel-heading.active .panel-title > a:after { - background: #2196f3; -} - -.panel-group[data-collapse-color="red"] .panel-collapse .panel-heading.active .panel-title > a:after { - background: #f44336; -} - -.panel-group[data-collapse-color="green"] .panel-collapse .panel-heading.active .panel-title > a:after { - background: #4caf50; -} - -.panel-group[data-collapse-color="amber"] .panel-collapse .panel-heading.active .panel-title > a:after { - background: #ffc107; -} - -.panel-group[data-collapse-color="teal"] .panel-collapse .panel-heading.active .panel-title > a:after { - background: #009688; -} - -.panel-group[data-collapse-color="black"] .panel-collapse .panel-heading.active .panel-title > a:after { - background: #000000; -} - -.panel-group[data-collapse-color="cyan"] .panel-collapse .panel-heading.active .panel-title > a:after { - background: #00bcd4; -} - -.tooltip-inner { - border-radius: 1px; - padding: 3px 10px 5px; -} - -.breadcrumb { - border-bottom: 1px solid #E5E5E5; - border-radius: 0; -} - - .breadcrumb > li > a { - color: #A9A9A9; - } - - .breadcrumb > li > a:hover { - color: #7c7c7c; - } - -@media (min-width: 768px) { - body:not(.sw-toggled) .breadcrumb { - padding: 10px 33px 11px; - } -} - -@media (min-width: 1199px) { - body .sw-toggled .breadcrumb { - padding: 10px 33px 11px 280px; - } -} - -#messages-main { - position: relative; -} - - #messages-main:before, - #messages-main:after { - content: " "; - display: table; - } - - #messages-main:after { - clear: both; - } - - #messages-main:before, - #messages-main:after { - content: " "; - display: table; - } - - #messages-main:after { - clear: both; - } - - #messages-main .ms-block { - padding: 23px 20px 0; - } - - #messages-main .ms-menu { - position: absolute; - left: 0; - top: 0; - background: #F8F8F8; - border-right: 1px solid #EEE; - padding-bottom: 50px; - height: 100%; - width: 240px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - } - -@media (max-width: 767px) { - #messages-main .ms-menu { - height: calc(100% - 58px); - -webkit-transform: translate3d(-240px, 58px, 0); - transform: translate3d(-240px, 58px, 0); - opacity: 0; - filter: alpha(opacity=0); - z-index: 1; - } - - #messages-main .ms-menu.toggled { - -webkit-transform: translate3d(0, 58px, 0); - transform: translate3d(0, 58px, 0); - opacity: 1; - filter: alpha(opacity=100); - } -} - -#messages-main .ms-menu .lv-item { - padding-left: 20px; - padding-right: 20px; -} - - #messages-main .ms-menu .lv-item.active { - background: #fff; - } - - #messages-main .ms-menu .lv-item:not(.active):hover { - background: #F2F2F2; - cursor: pointer; - } - -@media (min-width: 768px) { - #messages-main .ms-body { - padding-left: 240px; - } -} - -@media (max-width: 767px) { - #messages-main .ms-body { - overflow: hidden; - } -} - -#messages-main .ms-user:before, -#messages-main .ms-user:after { - content: " "; - display: table; -} - -#messages-main .ms-user:after { - clear: both; -} - -#messages-main .ms-user:before, -#messages-main .ms-user:after { - content: " "; - display: table; -} - -#messages-main .ms-user:after { - clear: both; -} - -#messages-main .ms-user > img { - border-radius: 50%; - width: 40px; - float: left; -} - -#messages-main .ms-user > div { - overflow: hidden; - padding: 7px 5px 7px 15px; - font-size: 11px; -} - -#messages-main #ms-compose { - position: fixed; - bottom: 120px; - z-index: 1; - right: 30px; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); -} - -#ms-menu-trigger { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - float: left; - margin: 1px 0 0 -7px; -} - -@media (min-width: 768px) { - #ms-menu-trigger { - display: none; - } -} - -#ms-menu-trigger .line-wrap .line { - background-color: #717171; -} - -/* - * For Message - */ - -.lv-message .lv-item { - padding: 20px; -} - - .lv-message .lv-item.right { - text-align: right; - } - - .lv-message .lv-item.right .lv-avatar { - margin-right: 0; - margin-left: 15px; - } - - .lv-message .lv-item:not(.right) .ms-item { - background: #ffc107; - color: #fff; - } - - .lv-message .lv-item.right .ms-item { - background: #eee; - } - -.lv-avatar { - width: 35px; - height: 35px; - border-radius: 50%; - color: #FFF; - text-align: center; - line-height: 34px; - font-size: 15px; - margin-right: 15px; - padding: 0 !important; - text-transform: uppercase; -} - - .lv-avatar > img { - width: 35px; - height: 35px; - border-radius: 50%; - vertical-align: top; - } - -.ms-item { - padding: 13px 19px 15px; - border-radius: 2px; - display: inline-block; -} - -@media (min-width: 768px) { - .ms-item { - max-width: 70%; - } -} - -.ms-date { - display: block; - color: #B3B3B3; - margin-top: 7px; -} - - .ms-date > i { - font-size: 14px; - vertical-align: bottom; - line-height: 100%; - } - -.ms-reply { - box-shadow: 0 -20px 20px -5px #ffffff; - position: relative; - margin: 0 !important; -} - - .ms-reply textarea { - width: 100%; - font-size: 13px; - border: 0; - padding: 10px 8px; - resize: none; - height: 60px; - } - - .ms-reply button { - position: absolute; - top: 0; - right: 0; - border: 0; - height: 100%; - width: 60px; - font-size: 25px; - background: #F5F5F5; - color: #2196f3; - } - - .ms-reply button:hover { - background: #f2f2f2; - } - -.four-zero-content { - background: #fff; - padding: 20px; -} - - .four-zero-content:before { - height: 50%; - width: 100%; - position: absolute; - top: 0; - left: 0; - background: #EDECEC; - content: ""; - } - -.four-zero { - background: #00bcd4; - box-shadow: 0 1px 11px rgba(0, 0, 0, 0.27); - border-radius: 2px; - position: absolute; - top: 50%; - margin-top: -150px; - color: #fff; - text-align: center; - padding: 15px; - height: 300px; - width: 500px; - left: 50%; - margin-left: -250px; -} - - .four-zero h2 { - font-size: 130px; - } - -@media (max-width: 767px) { - .four-zero { - width: calc(100% - 40px); - left: 20px; - margin-left: 0; - height: 260px; - margin-top: -130px; - } - - .four-zero h2 { - font-size: 90px; - } -} - -.four-zero h2 { - line-height: 100%; - color: #fff; - font-weight: 100; -} - -.four-zero small { - display: block; - font-size: 26px; - margin-top: -10px; -} - -.four-zero footer { - background: rgba(0, 0, 0, 0.13); - position: absolute; - left: 0; - bottom: 0; - width: 100%; - padding: 10px; -} - - .four-zero footer > a { - font-size: 21px; - display: inline-block; - color: #FFF; - margin: 0 1px; - line-height: 40px; - width: 40px; - height: 40px; - background: rgba(0, 0, 0, 0.09); - border-radius: 50%; - text-align: center; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - .four-zero footer > a:hover { - background: rgba(0, 0, 0, 0.2); - } - -.login-content { - overflow: hidden; - height: 100%; -} - - .login-content .lc-block { - background: #fff; - box-shadow: 0 1px 11px rgba(0, 0, 0, 0.27); - border-radius: 2px; - padding: 35px 55px 35px; - width: 500px; - display: inline-block; - margin-top: -60px; - vertical-align: middle; - position: relative; - } - -@media (max-width: 767px) { - .login-content .lc-block { - padding: 15px 35px 25px 20px; - width: calc(100% - 60px); - } -} - -.login-content .lc-block .checkbox { - margin: 5px 0 0 42px; - text-align: left; -} - -.login-content .lc-block .btn-login { - position: fixed; - top: 50%; - margin-top: -25px; - right: -25px; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); -} - -.login-content .lc-block:not(.toggled) { - display: none; -} - -.login-content .lc-block.toggled { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; - -webkit-animation-duration: 200ms; - animation-duration: 200ms; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - z-index: 10; -} - -.login-content .login-navigation { - list-style: none; - padding: 0; - margin: 0; - position: absolute; - width: 100%; - text-align: center; - left: 0%; - bottom: -45px; -} - - .login-content .login-navigation > li { - display: inline-block; - margin: 0 2px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 150ms; - transition-duration: 150ms; - cursor: pointer; - vertical-align: top; - color: #fff; - line-height: 16px; - min-width: 16px; - min-height: 16px; - text-transform: uppercase; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - } - - .login-content .login-navigation > li > span { - opacity: 0; - filter: alpha(opacity=0); - } - - .login-content .login-navigation > li:not(:hover) { - font-size: 0px; - border-radius: 100%; - } - - .login-content .login-navigation > li:hover { - border-radius: 10px; - padding: 0 5px; - font-size: 8px; - } - - .login-content .login-navigation > li:hover > span { - opacity: 1; - filter: alpha(opacity=100); - } - -body .login-content { - text-align: center; -} - - body .login-content:after { - content: ""; - vertical-align: middle; - display: inline-block; - width: 1px; - height: 100%; - } - - body .login-content:before { - height: 50%; - width: 100%; - position: absolute; - top: 0; - left: 0; - background: #00bcd4; - content: ""; - z-index: 0; - } - -#profile-main { - min-height: 500px; - position: relative; -} - - #profile-main .pm-overview { - overflow-y: auto; - } - -@media (min-width: 1200px) { - #profile-main .pm-overview { - width: 300px; - } -} - -@media (min-width: 768px) and (max-width: 1200px) { - #profile-main .pm-overview { - width: 250px; - } -} - -@media (min-width: 768px) { - #profile-main .pm-overview { - position: absolute; - left: 0; - top: 0; - height: 100%; - background: #f8f8f8; - border-right: 1px solid #eee; - } -} - -@media (max-width: 767px) { - #profile-main .pm-overview { - width: 100%; - background: #333; - text-align: center; - } -} - -@media (min-width: 1200px) { - #profile-main .pm-body { - padding-left: 300px; - } -} - -@media (min-width: 768px) and (max-width: 1200px) { - #profile-main .pm-body { - padding-left: 250px; - } -} - -@media (max-width: 767px) { - #profile-main .pm-body { - padding-left: 0; - } -} - -#profile-main .pmo-pic { - position: relative; - margin: 20px; -} - -@media (min-width: 768px) { - #profile-main .pmo-pic img { - width: 100%; - border-radius: 2px 2px 0 0; - } -} - -@media (max-width: 767px) { - #profile-main .pmo-pic img { - width: 180px; - display: inline-block; - height: 180px; - border-radius: 50%; - border: 4px solid #fff; - box-shadow: 0 8px 17px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.19); - } -} - -#profile-main .pmo-pic .pmo-stat { - border-radius: 0 0 2px 2px; - color: #fff; - text-align: center; - padding: 30px 5px 0; -} - -@media (min-width: 768px) { - #profile-main .pmo-pic .pmo-stat { - background: #ffc107; - padding-bottom: 15px; - } -} - -#profile-main .pmo-pic .pmop-edit { - position: absolute; - top: 0; - left: 0; - color: #fff; - background: rgba(0, 0, 0, 0.38); - text-align: center; - padding: 10px 10px 7px; - -webkit-transition: opacity; - -o-transition: opacity; - transition: opacity; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; -} - - #profile-main .pmo-pic .pmop-edit:hover { - background: rgba(0, 0, 0, 0.8); - } - - #profile-main .pmo-pic .pmop-edit i { - font-size: 18px; - vertical-align: middle; - margin-top: -3px; - } - -@media (min-width: 768px) { - #profile-main .pmo-pic .pmop-edit { - width: 100%; - opacity: 0; - filter: alpha(opacity=0); - } - - #profile-main .pmo-pic .pmop-edit i { - margin-right: 4px; - } -} - -#profile-main .pmo-pic:hover .pmop-edit { - opacity: 1; - filter: alpha(opacity=100); -} - -#profile-main .pmo-pic .pmop-message { - position: absolute; - bottom: 27px; - left: 50%; - margin-left: -25px; -} - - #profile-main .pmo-pic .pmop-message .dropdown-menu { - padding: 5px 0 55px; - left: -90px; - width: 228px; - height: 150px; - top: -74px; - -webkit-transform-origin: center; - -moz-transform-origin: center; - -ms-transform-origin: center; - transform-origin: center; - } - - #profile-main .pmo-pic .pmop-message .dropdown-menu textarea { - width: 100%; - height: 95px; - border: 0; - resize: none; - padding: 10px 19px; - } - - #profile-main .pmo-pic .pmop-message .dropdown-menu button { - position: absolute; - bottom: 5px; - left: 93px; - } - -#profile-main .pmb-block { - margin-bottom: 20px; -} - -@media (min-width: 1200px) { - #profile-main .pmb-block { - padding: 40px 42px 0; - } -} - -@media (max-width: 1199px) { - #profile-main .pmb-block { - padding: 30px 20px 0; - } -} - -#profile-main .pmb-block:last-child { - margin-bottom: 50px; -} - -#profile-main .pmb-block .pmbb-header { - margin-bottom: 25px; - position: relative; -} - - #profile-main .pmb-block .pmbb-header .actions { - position: absolute; - top: -2px; - right: 0; - } - - #profile-main .pmb-block .pmbb-header h2 { - margin: 0; - font-weight: 100; - font-size: 20px; - } - -#profile-main .pmb-block .pmbb-edit { - position: relative; - z-index: 1; - display: none; -} - -#profile-main .pmb-block .pmbb-edit, -#profile-main .pmb-block .pmbb-view { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; - -webkit-animation-duration: 1000ms; - animation-duration: 1000ms; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -#profile-main .pmb-block.toggled .pmbb-edit { - display: block; -} - -#profile-main .pmb-block.toggled .pmbb-view { - display: none; -} - -#profile-main .pmo-block { - padding: 25px; -} - - #profile-main .pmo-block > h2 { - font-size: 16px; - margin: 0 0 15px; - } - -#profile-main .pmo-items .pmob-body { - padding: 0 10px; -} - -#profile-main .pmo-items a { - display: block; - padding: 4px; -} - - #profile-main .pmo-items a img { - width: 100%; - } - -#profile-main .pmo-contact ul { - list-style: none; - margin: 0; - padding: 0; -} - - #profile-main .pmo-contact ul li { - position: relative; - padding: 8px 0 8px 35px; - } - - #profile-main .pmo-contact ul li i { - font-size: 18px; - vertical-align: top; - line-height: 100%; - position: absolute; - left: 0; - } - -@media (max-width: 767px) { - .c-timeline { - background: #edecec; - box-shadow: none; - } - - .c-timeline .nav-tabs { - background: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - } -} - -.timeline { - position: relative; -} - -@media (min-width: 768px) { - .timeline { - padding: 50px; - padding-left: 100px; - } -} - -@media (max-width: 767px) { - .timeline { - margin-top: 30px; - } -} - -.t-view { - border: 1px solid #eee; - position: relative; - margin-bottom: 35px; -} - -@media (max-width: 767px) { - .t-view { - background: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - } -} - -.t-view .tv-header { - padding: 16px 18px; - border-bottom: 1px solid #eee; - background: #F9F9F9; -} - - .t-view .tv-header .actions { - position: absolute; - top: 5px; - right: 10px; - } - -.t-view .tv-body { - padding: 23px 25px; -} - - .t-view .tv-body .tvb-lightbox { - margin: 0 -8px 15px; - } - - .t-view .tv-body .tvb-lightbox [data-src] { - padding: 0 5px; - margin-bottom: 5px; - } - -.t-view .tvh-user { - display: block; -} - - .t-view .tvh-user img { - width: 46px; - height: 46px; - border-radius: 50%; - } - -.t-view:before { - position: absolute; - width: 40px; - height: 40px; - border-radius: 50%; - left: -70px; - top: 0; - border: 3px solid #FFF; - text-align: center; - font-size: 20px; - line-height: 34px; - color: #FFF; - font-family: 'Material Design Iconic Font'; - z-index: 1; -} - -.t-view:after { - content: ""; - position: absolute; - top: 0; - left: -50px; - width: 1px; - height: calc(100% + 37px); -} - -.t-view[data-tv-type="text"]:before { - content: "\f11b"; - background: #00bcd4; - box-shadow: 0 0 0 1px #00bcd4; -} - -.t-view[data-tv-type="text"]:after { - background: #00bcd4; -} - -.t-view[data-tv-type="image"]:before { - content: "\f224"; - background: #4caf50; - box-shadow: 0 0 0 1px #4caf50; -} - -.t-view[data-tv-type="image"]:after { - background: #4caf50; -} - -.t-view[data-tv-type="video"]:before { - content: "\f0cc"; - background: #ffc107; - box-shadow: 0 0 0 1px #ffc107; -} - -.t-view[data-tv-type="video"]:after { - background: #ffc107; -} - -.t-view .tvb-stats { - list-style: none; - padding: 0; - margin: 10px 0 20px; -} - - .t-view .tvb-stats > li { - display: inline-block; - padding: 5px 10px 6px; - border: 1px solid #ccc; - margin-right: 2px; - } - - .t-view .tvb-stats > li i { - font-size: 15px; - line-height: 100%; - vertical-align: top; - margin-top: 2px; - } - - .t-view .tvb-stats > li.tvbs-comments { - border-color: #4caf50; - color: #4caf50; - } - - .t-view .tvb-stats > li.tvbs-likes { - border-color: #03a9f4; - color: #03a9f4; - } - - .t-view .tvb-stats > li.tvbs-views { - border-color: #ff9800; - color: #ff9800; - } - -.tv-comments .tvc-lists { - padding: 0; - list-style: none; - margin: 0; -} - - .tv-comments .tvc-lists > li { - padding: 15px 20px; - margin: 0; - border-top: 1px solid #eee; - } - -.tvc-more { - color: #333; - display: block; - margin-bottom: -10px; -} - - .tvc-more:hover { - color: #000; - } - - .tvc-more i { - vertical-align: middle; - margin-right: 5px; - } - -.p-header { - position: relative; - margin: 0 -7px; -} - - .p-header .actions { - position: absolute; - top: -18px; - right: 0; - } - -.p-menu { - list-style: none; - padding: 0 5px; - margin: 0 0 30px; -} - - .p-menu > li { - display: inline-block; - vertical-align: top; - } - - .p-menu > li > a { - display: block; - padding: 5px 20px 5px 0; - font-weight: 500; - text-transform: uppercase; - font-size: 15px; - } - - .p-menu > li > a > i { - margin-right: 4px; - font-size: 20px; - vertical-align: middle; - margin-top: -5px; - } - - .p-menu > li:not(.active) > a { - color: #4285F4; - } - - .p-menu > li:not(.active) > a:hover { - color: #333; - } - - .p-menu > li.active > a { - color: #000; - } - -@media (max-width: 991px) { - .p-menu .pm-search { - margin: 20px 2px 30px; - display: block; - } - - .p-menu .pm-search input[type="text"] { - width: 100%; - border: 1px solid #ccc; - } -} - -.p-menu .pms-inner { - margin: -3px 0 0; - position: relative; - top: -2px; - overflow: hidden; - white-space: nowrap; -} - - .p-menu .pms-inner i { - vertical-align: top; - font-size: 20px; - line-height: 100%; - position: absolute; - left: 9px; - top: 7px; - } - - .p-menu .pms-inner input[type="text"] { - height: 35px; - border-radius: 2px; - padding: 0 10px 0 40px; - } - -@media (min-width: 768px) { - .p-menu .pms-inner input[type="text"] { - border: 1px solid #fff; - width: 50px; - background: transparent; - position: relative; - z-index: 1; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - .p-menu .pms-inner input[type="text"]:focus { - border-color: #DFDFDF; - width: 200px; - } -} - -.photos .p-item { - margin-bottom: 24px; - position: relative; -} - - .photos .p-item:before { - left: 0; - top: 0; - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-transform: scale3d(0, 0, 0); - -moz-transform: scale3d(0, 0, 0); - -ms-transform: scale3d(0, 0, 0); - -o-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - background-color: rgba(0, 0, 0, 0.5); - z-index: 0; - border-radius: 0; - opacity: 0; - filter: alpha(opacity=0); - } - - .photos .p-item:hover:before { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - -ms-transform: scale3d(1, 1, 1); - -o-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; - filter: alpha(opacity=100); - } - - .photos .p-item img { - width: 100%; - border-radius: 2px; - } - -.photos .btn-float { - z-index: 1; - bottom: 40px; - right: 40px; - position: fixed; -} - -.contacts .c-item { - border: 1px solid #e2e2e2; - border-radius: 2px; - margin-bottom: 24px; -} - - .contacts .c-item .ci-avatar { - display: block; - } - - .contacts .c-item .ci-avatar img { - width: 100%; - border-radius: 2px 2px 0 0; - } - -.contacts .ci-avatar { - margin: -1px -1px 0; -} - -.contacts .c-info { - text-align: center; - margin-top: 15px; - padding: 0 5px; -} - - .contacts .c-info strong { - color: #000; - font-size: 14px; - font-weight: 500; - } - - .contacts .c-info small { - color: #999; - margin-top: 3px; - } - - .contacts .c-info strong, - .contacts .c-info small { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: block; - } - -.contacts .c-footer { - border-top: 1px solid #e2e2e2; - margin-top: 18px; -} - - .contacts .c-footer > button { - padding: 4px 10px 3px; - display: block; - width: 100%; - text-align: center; - color: #333; - font-weight: 500; - border-radius: 2px; - background: #fff; - border: 0; - } - - .contacts .c-footer > button > i { - font-size: 16px; - vertical-align: middle; - margin-top: -3px; - } - -.z-depth-1 { - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.16), 0 2px 10px rgba(0, 0, 0, 0.12); -} - -.z-depth-1-top { - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12); -} - -.z-depth-1-bottom { - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.16); -} - -.z-depth-2 { - box-shadow: 0 8px 17px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.19); -} - -.z-depth-2-top { - box-shadow: 0 6px 20px rgba(0, 0, 0, 0.19); -} - -.z-depth-2-bottom { - box-shadow: 0 8px 17px rgba(0, 0, 0, 0.2); -} - -.z-depth-3 { - box-shadow: 0 12px 15px rgba(0, 0, 0, 0.24), 0 17px 50px rgba(0, 0, 0, 0.19); -} - -.z-depth-3-top { - box-shadow: 0 17px 50px rgba(0, 0, 0, 0.19); -} - -.z-depth-3-bottom { - box-shadow: 0 12px 15px rgba(0, 0, 0, 0.24); -} - -.z-depth-4 { - box-shadow: 0 16px 28px rgba(0, 0, 0, 0.22), 0 25px 55px rgba(0, 0, 0, 0.21); -} - -.z-depth-4-top { - box-shadow: 0 25px 55px rgba(0, 0, 0, 0.21); -} - -.z-depth-4-bottom { - box-shadow: 0 16px 28px rgba(0, 0, 0, 0.22); -} - -.z-depth-5 { - box-shadow: 0 27px 24px rgba(0, 0, 0, 0.2), 0 40px 77px rgba(0, 0, 0, 0.22); -} - -.z-depth-5-top { - box-shadow: 0 40px 77px rgba(0, 0, 0, 0.22); -} - -.z-depth-5-bottom { - box-shadow: 0 27px 24px rgba(0, 0, 0, 0.2); -} - -.z-depth-animation .z-depth-1, -.z-depth-animation .z-depth-2, -.z-depth-animation .z-depth-3, -.z-depth-animation .z-depth-4, -.z-depth-animation .z-depth-5 { - transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); -} - -/* - * Block Header - * Used for Heading outside the Cards. - */ - -.block-header { - margin-bottom: 25px; - position: relative; -} - -@media screen and (min-width: 768px) { - .block-header { - padding: 0 22px; - } -} - -@media screen and (max-width: 991px) { - .block-header { - padding: 0 18px; - } -} - -.block-header > h2 { - font-size: 15px; - color: #777; - margin: 0; - font-weight: 400; - text-transform: uppercase; -} - - .block-header > h2 > small { - display: block; - text-transform: none; - margin-top: 8px; - margin-bottom: 20px; - color: #9E9E9E; - line-height: 140%; - } - -.block-header .actions { - position: absolute; - right: 10px; - top: -5px; - z-index: 3; -} - -/* - * Header Actions - */ - -.actions { - list-style: none; - padding: 0; - z-index: 2; - margin: 0; -} - - .actions > li { - display: inline-block; - vertical-align: baseline; - } - - .actions > li > a, - .actions > a { - width: 30px; - height: 30px; - line-height: 29px; - display: inline-block; - text-align: center; - position: relative; - } - - .actions > li > a > i, - .actions > a > i { - -webkit-transition: color; - -o-transition: color; - transition: color; - -webkit-transition-duration: 1300ms; - transition-duration: 1300ms; - color: #adadad; - font-size: 20px; - } - - .actions > li > a:hover > i, - .actions > a:hover > i { - color: #000; - } - - .actions > li > a:before, - .actions > a:before { - left: 0; - top: 0; - content: ""; - position: absolute; - width: 100%; - height: 100%; - -webkit-transform: scale3d(0, 0, 0); - -moz-transform: scale3d(0, 0, 0); - -ms-transform: scale3d(0, 0, 0); - -o-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - background-color: rgba(0, 0, 0, 0.1); - z-index: 0; - border-radius: 50%; - opacity: 0; - filter: alpha(opacity=0); - } - - .actions > li > a:hover:before, - .actions > a:hover:before { - -webkit-transform: scale3d(1, 1, 1); - -moz-transform: scale3d(1, 1, 1); - -ms-transform: scale3d(1, 1, 1); - -o-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - opacity: 1; - filter: alpha(opacity=100); - } - - .actions > li.open > a > i, - .actions.open > a > i { - color: #000; - } - - .actions > li.open > a:before, - .actions.open > a:before { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - opacity: 1; - filter: alpha(opacity=100); - } - - .actions.actions-alt > li > a > i { - color: #fff; - } - - .actions.actions-alt > li > a > i:hover { - color: #fff; - } - - .actions.actions-alt > li.open > a > i { - color: #fff; - } - - .actions.open { - z-index: 3; - } - -/* - * Collapse Menu Icons - */ - -.line-wrap { - width: 18px; - height: 12px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - margin: 10px 20px; -} - - .line-wrap .line { - width: 18px; - height: 2px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - .line-wrap .line.center { - margin: 3px 0; - } - -.open .line-wrap { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); -} - - .open .line-wrap .line.top { - width: 12px; - transform: translateX(8px) translateY(1px) rotate(45deg); - -webkit-transform: translateX(8px) translateY(1px) rotate(45deg); - } - - .open .line-wrap .line.bottom { - width: 12px; - transform: translateX(8px) translateY(-1px) rotate(-45deg); - -webkit-transform: translateX(8px) translateY(-1px) rotate(-45deg); - } - -/* - * Social Icons - */ - -.socicon { - font-family: 'socicon' !important; -} - -/* - * Load More - */ - -.load-more { - text-align: center; - margin-top: 30px; -} - - .load-more a { - padding: 5px 10px 3px; - display: inline-block; - background-color: #f44336; - color: #FFF; - border-radius: 2px; - white-space: nowrap; - } - - .load-more a i { - font-size: 20px; - vertical-align: middle; - position: relative; - margin-top: -2px; - } - - .load-more a:hover { - background-color: #ea1c0d; - } - -.ie-warning { - position: fixed; - top: 0; - left: 0; - z-index: 9999; - background: #000000; - width: 100%; - height: 100%; - text-align: center; - color: #fff; - font-family: "Courier New", Courier, monospace; - padding: 50px 0; -} - - .ie-warning p { - font-size: 17px; - } - - .ie-warning .iew-download { - background: #fff; - list-style: none; - padding: 30px 0; - margin: 50px -50px; - } - - .ie-warning .iew-download > li { - display: inline; - zoom: 1; - vertical-align: top; - } - - .ie-warning .iew-download > li > a { - display: block; - color: #000; - width: 140px; - font-size: 15px; - padding: 15px 0; - } - - .ie-warning .iew-download > li > a > div { - margin-top: 10px; - } - - .ie-warning .iew-download > li > a:hover { - background-color: #eee; - } - -/* - * Vendor Overrides - */ - -.mejs-container { - outline: none; -} - - .mejs-container .mejs-controls { - background: #ec592f; - height: 50px; - padding: 10px 5px 0; - } - - .mejs-container .mejs-controls div { - height: 5px; - } - - .mejs-container .mejs-controls div.mejs-time-rail { - position: absolute; - left: 0; - top: 0; - padding: 0; - width: 100% !important; - } - - .mejs-container .mejs-controls div.mejs-time-rail .mejs-time-total { - margin: 0; - width: 100% !important; - background: #ec592f; - } - - .mejs-container .mejs-controls div.mejs-time-rail .mejs-time-loaded { - background: #D04B25; - } - - .mejs-container .mejs-controls div.mejs-time-rail .mejs-time-current { - background: #ffea00; - } - - .mejs-container .mejs-controls div.mejs-time-rail .mejs-time-buffering { - background: #ec592f; - } - - .mejs-container .mejs-controls div.mejs-time-rail span:not(.mejs-time-float), - .mejs-container .mejs-controls div.mejs-time-rail a { - border-radius: 0; - height: 3px; - } - - .mejs-container .mejs-controls .mejs-button button { - background-color: #ec592f; - width: 15px; - height: 15px; - background-position: center; - } - - .mejs-container .mejs-controls .mejs-button button:focus { - outline: none !important; - } - - .mejs-container .mejs-controls .mejs-volume-button { - position: absolute; - right: 35px; - } - - .mejs-container .mejs-controls .mejs-play button { - background-image: url("img/icons/play.png"); - } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .mejs-container .mejs-controls .mejs-play button { - background-image: url("img/icons/play@2x.png"); - background-size: 15px 15px; - } -} - -.mejs-container .mejs-controls .mejs-pause button { - background-image: url("img/icons/pause.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .mejs-container .mejs-controls .mejs-pause button { - background-image: url("img/icons/pause@2x.png"); - background-size: 15px 15px; - } -} - -.mejs-container .mejs-controls .mejs-mute button { - background-image: url("img/icons/speaker.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .mejs-container .mejs-controls .mejs-mute button { - background-image: url("img/icons/speaker@2x.png"); - background-size: 15px 15px; - } -} - -.mejs-container .mejs-controls .mejs-unmute button { - background-image: url("img/icons/speaker-2.png"); -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .mejs-container .mejs-controls .mejs-unmute button { - background-image: url("img/icons/speaker-2@2x.png"); - background-size: 15px 15px; - } -} - -.mejs-container .mejs-controls .mejs-fullscreen-button { - position: absolute; - right: 5px; -} - - .mejs-container .mejs-controls .mejs-fullscreen-button button { - background-image: url("img/icons/fullscreen.png"); - } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .mejs-container .mejs-controls .mejs-fullscreen-button button { - background-image: url("img/icons/fullscreen@2x.png"); - background-size: 15px 15px; - } -} - -/** CALENDAR WIDGET **/ - -#calendar-widget { - margin-bottom: 30px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); -} - -#fc-actions { - position: absolute; - top: 24px; - right: 12px; -} - -.fc { - background-color: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); - margin-bottom: 30px; -} - - .fc td { - border-color: #f0f0f0; - text-align: center !important; - } - - .fc th { - background: #f32c1e; - color: rgba(255, 255, 255, 0.9); - font-weight: 400; - padding: 6px 0; - } - - .fc table tr > td:first-child { - border-left-width: 0; - } - - .fc .ui-widget-header { - border-width: 0; - } - -.fc-toolbar { - background-color: #f44336; - margin-bottom: 0; - padding: 20px 7px 19px; - position: relative; -} - - .fc-toolbar h2 { - color: rgba(255, 255, 255, 0.9); - margin-top: 7px; - font-size: 20px; - font-weight: 300; - text-transform: uppercase; - } - - .fc-toolbar .ui-button { - border: 0; - background: 0 0; - padding: 0; - outline: none !important; - text-align: center; - } - - .fc-toolbar .ui-button > span { - position: relative; - font-family: 'Material Design Iconic Font'; - font-size: 20px; - color: #FFF; - line-height: 100%; - width: 30px; - padding-top: 5px; - display: block; - margin-top: 2px; - } - - .fc-toolbar .ui-button > span:before { - position: relative; - z-index: 1; - } - - .fc-toolbar .ui-button > span.ui-icon-circle-triangle-w:before { - content: "\f297"; - } - - .fc-toolbar .ui-button > span.ui-icon-circle-triangle-e:before { - content: "\f298"; - } - - .fc-toolbar .ui-button > span:after { - content: ""; - width: 0; - position: absolute; - top: 50%; - height: 0; - border-radius: 50%; - left: 50%; - z-index: 0; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - } - - .fc-toolbar .ui-button:hover > span:after { - width: 31px; - height: 31px; - left: 0; - top: 0; - background: rgba(0, 0, 0, 0.2); - } - -.fc-event { - padding: 0; - font-size: 11px; - border-radius: 0; - border: 0; - border-radius: 2px; -} - - .fc-event .fc-title { - padding: 2px 0; - display: block; - } - - .fc-event .fc-time { - float: left; - background: rgba(0, 0, 0, 0.2); - padding: 2px 6px; - margin: 0 0 0 -1px; - } - -.fc-view, -.fc-view > table { - border: 0; - overflow: hidden; - /* - @media @min-992 { - width: ~"calc(100% + 1px)"; - } - */ -} - - .fc-view > table > tbody > tr > .ui-widget-content { - border-top: 0; - } - -div.fc-row { - margin-right: 0 !important; - border: 0 !important; -} - -/* Even Tag Color */ - -.event-tag { - margin-top: 5px; -} - - .event-tag > span { - border-radius: 50%; - width: 30px; - height: 30px; - margin-right: 3px; - position: relative; - display: inline-block; - cursor: pointer; - } - - .event-tag > span:hover { - opacity: 0.8; - filter: alpha(opacity=80); - } - - .event-tag > span.selected:before { - font-family: 'Material Design Iconic Font'; - content: "\f299"; - position: absolute; - text-align: center; - top: 3px; - width: 100%; - font-size: 17px; - color: #FFF; - } - -.bootgrid-footer .infoBar, -.bootgrid-header .actionBar { - text-align: left; -} - -.bootgrid-footer .search, -.bootgrid-header .search { - vertical-align: top; -} - -.bootgrid-header { - padding: 0 25px 10px; -} - - .bootgrid-header .search { - border: 1px solid #e0e0e0; - } - - .bootgrid-header .search .form-control, - .bootgrid-header .search .input-group-addon { - border: 0; - } - - .bootgrid-header .search .glyphicon-search { - vertical-align: top; - padding: 10px 10px 0; - } - - .bootgrid-header .search .glyphicon-search:before { - content: "\f05f"; - font-family: 'Material Design Iconic Font'; - font-size: 17px; - vertical-align: top; - line-height: 100%; - } - -@media (min-width: 480px) { - .bootgrid-header .search { - width: 300px; - } -} - -@media (max-width: 480px) { - .bootgrid-header .search { - width: 100%; - padding-right: 90px; - } -} - -.bootgrid-header .actions { - box-shadow: none; -} - - .bootgrid-header .actions .btn-group { - border: 1px solid #e0e0e0; - } - - .bootgrid-header .actions .btn-group .btn { - height: 35px; - box-shadow: none !important; - background: transparent; - } - - .bootgrid-header .actions .btn-group .dropdown-menu { - padding: 10px 20px; - } - - .bootgrid-header .actions .btn-group .dropdown-menu .dropdown-item { - padding: 0 0 0 27px !important; - } - - .bootgrid-header .actions .btn-group .dropdown-menu .dropdown-item:hover { - background-color: #fff !important; - } - -@media (min-width: 768px) { - .bootgrid-header .actions .btn-group .dropdown-menu { - left: 0; - -webkit-transform-origin: top left; - -moz-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - margin-top: 1px; - } -} - -.bootgrid-header .actions .btn-group .caret { - display: none; -} - -.bootgrid-header .actions .btn-group .md { - line-height: 100%; - font-size: 18px; - vertical-align: top; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 250ms; - transition-duration: 250ms; -} - -.bootgrid-header .actions .btn-group.open .md { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); -} - -@media (max-width: 480px) { - .bootgrid-header .actions { - position: absolute; - top: 0; - right: 15px; - } -} - -.bootgrid-table th > .column-header-anchor > .icon { - top: 0px; - font-size: 20px; - line-height: 100%; -} - -.bootgrid-footer .col-sm-6 { - padding: 10px 30px 20px; -} - -@media (max-width: 768px) { - .bootgrid-footer .col-sm-6 { - text-align: center; - } -} - -@media (max-width: 768px) { - .bootgrid-footer .infoBar { - display: none; - } -} - -.bootgrid-footer .infoBar .infos { - border: 1px solid #EEE; - display: inline-block; - float: right; - padding: 7px 30px; - font-size: 12px; - margin-top: 5px; -} - -.select-cell .checkbox { - margin: 0; -} - -.command-edit, -.command-delete { - background: #fff; - border: 1px solid #eee !important; -} - -.bootstrap-select > .btn-default { - background: none !important; - border-bottom: 1px solid #e0e0e0 !important; - border-radius: 0; - padding-left: 0; - padding-right: 0; -} - - .bootstrap-select > .btn-default:before { - position: absolute; - top: 0; - right: 0; - content: ""; - height: calc(100% - 2px); - width: 30px; - background-color: #FFF; - background-position: right calc(100% - 7px); - background-repeat: no-repeat; - background-image: url("img/select.png"); - pointer-events: none; - z-index: 5; - } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .bootstrap-select > .btn-default:before { - background-image: url("img/select@2x.png"); - background-size: 12px 12px; - } -} - -.bootstrap-select > .btn-default:after { - position: absolute; - z-index: 3; - bottom: -1px; - left: 0; - height: 2px; - width: 0; - content: ""; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; -} - -.bootstrap-select > .btn-default:not(.disabled):after, -.bootstrap-select > .btn-default:not(.readonly):after { - background: #2196f3; -} - -.bootstrap-select > .btn-default.disabled:after, -.bootstrap-select > .btn-default.readonly:after { - background: #ccc; -} - -.bootstrap-select.open > .selectpicker:after { - width: 100%; -} - -.bootstrap-select .bs-searchbox { - padding: 0 18px; - margin: 5px 0 10px; - position: relative; -} - - .bootstrap-select .bs-searchbox:before { - position: absolute; - left: 14px; - top: 2px; - width: 30px; - height: 100%; - content: "\f05f"; - font-family: 'Material Design Iconic Font'; - font-size: 25px; - } - - .bootstrap-select .bs-searchbox input { - padding-left: 25px; - border: 0; - } - -.bootstrap-select.btn-group .dropdown-menu li a.opt { - padding-left: 17px; -} - -.bootstrap-select .check-mark { - margin-top: -5px !important; - font-size: 19px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - display: block !important; - position: absolute; - top: 11px; - right: 15px; -} - - .bootstrap-select .check-mark:before { - content: "\f023"; - font-family: 'Material Design Iconic Font'; - } - -.bootstrap-select .selected .check-mark { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); -} - -.bootstrap-select .notify { - bottom: 0 !important; - margin: 0 !important; - width: 100% !important; - border: 0 !important; - background: #f44336 !important; - color: #fff !important; - text-align: center; -} - -.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) { - width: 100%; -} - -/* Chosen */ -/* Chosen v1.4.2 | (c) 2011-2015 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */ - -.chosen-container { - position: relative; - display: inline-block; - vertical-align: middle; - font-size: 13px; - zoom: 1; - *display: inline; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - - .chosen-container * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - - .chosen-container .chosen-drop { - position: absolute; - top: 100%; - left: -9999px; - z-index: 1010; - width: 100%; - border: 1px solid #aaa; - border-top: 0; - background: #fff; - box-shadow: 0 4px 5px rgba(0,0,0,.15); - } - - .chosen-container.chosen-with-drop .chosen-drop { - left: 0; - } - - .chosen-container a { - cursor: pointer; - } - - .chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name { - margin-right: 4px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-weight: 400; - color: #999; - } - - .chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after { - content: ":"; - padding-left: 2px; - vertical-align: top; - } - -.chosen-container-single .chosen-single { - position: relative; - display: block; - overflow: hidden; - padding: 0 0 0 8px; - height: 25px; - border: 1px solid #aaa; - border-radius: 5px; - background-color: #fff; - background: -webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4)); - background: -webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%); - background: -moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%); - background: -o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%); - background: linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%); - background-clip: padding-box; - box-shadow: 0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1); - color: #444; - text-decoration: none; - white-space: nowrap; - line-height: 24px; -} - -.chosen-container-single .chosen-default { - color: #999; -} - -.chosen-container-single .chosen-single span { - display: block; - overflow: hidden; - margin-right: 26px; - text-overflow: ellipsis; - white-space: nowrap; -} - -.chosen-container-single .chosen-single-with-deselect span { - margin-right: 38px; -} - -.chosen-container-single .chosen-single abbr { - position: absolute; - top: 6px; - right: 26px; - display: block; - width: 12px; - height: 12px; - background: url(chosen-sprite.png) -42px 1px no-repeat; - font-size: 1px; -} - - .chosen-container-single .chosen-single abbr:hover { - background-position: -42px -10px; - } - -.chosen-container-single.chosen-disabled .chosen-single abbr:hover { - background-position: -42px -10px; -} - -.chosen-container-single .chosen-single div { - position: absolute; - top: 0; - right: 0; - display: block; - width: 18px; - height: 100%; -} - - .chosen-container-single .chosen-single div b { - display: block; - width: 100%; - height: 100%; - background: url(chosen-sprite.png) no-repeat 0 2px; - } - -.chosen-container-single .chosen-search { - position: relative; - z-index: 1010; - margin: 0; - padding: 3px 4px; - white-space: nowrap; -} - - .chosen-container-single .chosen-search input[type=text] { - margin: 1px 0; - padding: 4px 20px 4px 5px; - width: 100%; - height: auto; - outline: 0; - border: 1px solid #aaa; - background: #fff url(chosen-sprite.png) no-repeat 100% -20px; - background: url(chosen-sprite.png) no-repeat 100% -20px; - font-size: 1em; - font-family: sans-serif; - line-height: normal; - border-radius: 0; - } - -.chosen-container-single .chosen-drop { - margin-top: -1px; - border-radius: 0 0 4px 4px; - background-clip: padding-box; -} - -.chosen-container-single.chosen-container-single-nosearch .chosen-search { - position: absolute; - left: -9999px; -} - -.chosen-container .chosen-results { - color: #444; - position: relative; - overflow-x: hidden; - overflow-y: auto; - margin: 0 4px 4px 0; - padding: 0 0 0 4px; - max-height: 240px; - -webkit-overflow-scrolling: touch; -} - - .chosen-container .chosen-results li { - display: none; - margin: 0; - padding: 5px 6px; - list-style: none; - line-height: 15px; - word-wrap: break-word; - -webkit-touch-callout: none; - } - - .chosen-container .chosen-results li.active-result { - display: list-item; - cursor: pointer; - } - - .chosen-container .chosen-results li.disabled-result { - display: list-item; - color: #ccc; - cursor: default; - } - - .chosen-container .chosen-results li.highlighted { - background-color: #3875d7; - background-image: -webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc)); - background-image: -webkit-linear-gradient(#3875d7 20%,#2a62bc 90%); - background-image: -moz-linear-gradient(#3875d7 20%,#2a62bc 90%); - background-image: -o-linear-gradient(#3875d7 20%,#2a62bc 90%); - background-image: linear-gradient(#3875d7 20%,#2a62bc 90%); - color: #fff; - } - - .chosen-container .chosen-results li.no-results { - color: #777; - display: list-item; - background: #f4f4f4; - } - - .chosen-container .chosen-results li.group-result { - display: list-item; - font-weight: 700; - cursor: default; - } - - .chosen-container .chosen-results li.group-option { - padding-left: 15px; - } - - .chosen-container .chosen-results li em { - font-style: normal; - text-decoration: underline; - } - -.chosen-container-multi .chosen-choices { - position: relative; - overflow: hidden; - margin: 0; - padding: 0 5px; - width: 100%; - height: auto!important; - height: 1%; - border: 1px solid #aaa; - background-color: #fff; - background-image: -webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff)); - background-image: -webkit-linear-gradient(#eee 1%,#fff 15%); - background-image: -moz-linear-gradient(#eee 1%,#fff 15%); - background-image: -o-linear-gradient(#eee 1%,#fff 15%); - background-image: linear-gradient(#eee 1%,#fff 15%); - cursor: text; -} - - .chosen-container-multi .chosen-choices li { - float: left; - list-style: none; - } - - .chosen-container-multi .chosen-choices li.search-field { - margin: 0; - padding: 0; - white-space: nowrap; - } - - .chosen-container-multi .chosen-choices li.search-field input[type=text] { - margin: 1px 0; - padding: 0; - height: 25px; - outline: 0; - border: 0!important; - background: transparent!important; - box-shadow: none; - color: #999; - font-size: 100%; - font-family: sans-serif; - line-height: normal; - border-radius: 0; - } - - .chosen-container-multi .chosen-choices li.search-choice { - position: relative; - margin: 3px 5px 3px 0; - padding: 3px 20px 3px 5px; - border: 1px solid #aaa; - max-width: 100%; - border-radius: 3px; - background-color: #eee; - background-image: -webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee)); - background-image: -webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-image: -moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-image: -o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-image: linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-size: 100% 19px; - background-repeat: repeat-x; - background-clip: padding-box; - box-shadow: 0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05); - color: #333; - line-height: 13px; - cursor: default; - } - - .chosen-container-multi .chosen-choices li.search-choice span { - word-wrap: break-word; - } - - .chosen-container-multi .chosen-choices li.search-choice .search-choice-close { - position: absolute; - top: 4px; - right: 3px; - display: block; - width: 12px; - height: 12px; - background: url(chosen-sprite.png) -42px 1px no-repeat; - font-size: 1px; - } - - .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { - background-position: -42px -10px; - } - - .chosen-container-multi .chosen-choices li.search-choice-disabled { - padding-right: 5px; - border: 1px solid #ccc; - background-color: #e4e4e4; - background-image: -webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee)); - background-image: -webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-image: -moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-image: -o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - background-image: linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%); - color: #666; - } - - .chosen-container-multi .chosen-choices li.search-choice-focus { - background: #d4d4d4; - } - - .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close { - background-position: -42px -10px; - } - -.chosen-container-multi .chosen-results { - margin: 0; - padding: 0; -} - -.chosen-container-multi .chosen-drop .result-selected { - display: list-item; - color: #ccc; - cursor: default; -} - -.chosen-container-active .chosen-single { - border: 1px solid #5897fb; - box-shadow: 0 0 5px rgba(0,0,0,.3); -} - -.chosen-container-active.chosen-with-drop .chosen-single { - border: 1px solid #aaa; - -moz-border-radius-bottomright: 0; - border-bottom-right-radius: 0; - -moz-border-radius-bottomleft: 0; - border-bottom-left-radius: 0; - background-image: -webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff)); - background-image: -webkit-linear-gradient(#eee 20%,#fff 80%); - background-image: -moz-linear-gradient(#eee 20%,#fff 80%); - background-image: -o-linear-gradient(#eee 20%,#fff 80%); - background-image: linear-gradient(#eee 20%,#fff 80%); - box-shadow: 0 1px 0 #fff inset; -} - - .chosen-container-active.chosen-with-drop .chosen-single div { - border-left: 0; - background: transparent; - } - - .chosen-container-active.chosen-with-drop .chosen-single div b { - background-position: -18px 2px; - } - -.chosen-container-active .chosen-choices { - border: 1px solid #5897fb; - box-shadow: 0 0 5px rgba(0,0,0,.3); -} - - .chosen-container-active .chosen-choices li.search-field input[type=text] { - color: #222!important; - } - -.chosen-disabled { - opacity: .5!important; - cursor: default; -} - - .chosen-disabled .chosen-single { - cursor: default; - } - - .chosen-disabled .chosen-choices .search-choice .search-choice-close { - cursor: default; - } - -.chosen-rtl { - text-align: right; -} - - .chosen-rtl .chosen-single { - overflow: visible; - padding: 0 8px 0 0; - } - - .chosen-rtl .chosen-single span { - margin-right: 0; - margin-left: 26px; - direction: rtl; - } - - .chosen-rtl .chosen-single-with-deselect span { - margin-left: 38px; - } - - .chosen-rtl .chosen-single div { - right: auto; - left: 3px; - } - - .chosen-rtl .chosen-single abbr { - right: auto; - left: 26px; - } - - .chosen-rtl .chosen-choices li { - float: right; - } - - .chosen-rtl .chosen-choices li.search-field input[type=text] { - direction: rtl; - } - - .chosen-rtl .chosen-choices li.search-choice { - margin: 3px 5px 3px 0; - padding: 3px 5px 3px 19px; - } - - .chosen-rtl .chosen-choices li.search-choice .search-choice-close { - right: auto; - left: 4px; - } - - .chosen-rtl.chosen-container-single-nosearch .chosen-search, .chosen-rtl .chosen-drop { - left: 9999px; - } - - .chosen-rtl.chosen-container-single .chosen-results { - margin: 0 0 4px 4px; - padding: 0 4px 0 0; - } - - .chosen-rtl .chosen-results li.group-option { - padding-right: 15px; - padding-left: 0; - } - - .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div { - border-right: 0; - } - - .chosen-rtl .chosen-search input[type=text] { - padding: 4px 5px 4px 20px; - background: #fff url(chosen-sprite.png) no-repeat -30px -20px; - background: url(chosen-sprite.png) no-repeat -30px -20px; - direction: rtl; - } - - .chosen-rtl.chosen-container-single .chosen-single div b { - background-position: 6px 2px; - } - - .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b { - background-position: -12px 2px; - } - -@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx) { - .chosen-rtl .chosen-search input[type=text], .chosen-container-single .chosen-single abbr, .chosen-container-single .chosen-single div b, .chosen-container-single .chosen-search input[type=text], .chosen-container-multi .chosen-choices .search-choice .search-choice-close, .chosen-container .chosen-results-scroll-down span, .chosen-container .chosen-results-scroll-up span { - background-image: url(chosen-sprite@2x.png)!important; - background-size: 52px 37px!important; - background-repeat: no-repeat!important; - } -} - -.chosen-container { - width: 100%; -} - - .chosen-container .chosen-drop { - border: 0; - } - - .chosen-container:after { - position: absolute; - z-index: 3; - bottom: 0; - left: 0; - height: 2px; - width: 0; - content: ""; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - background: #2196f3; - } - - .chosen-container .chosen-drop { - margin-top: 1px; - display: block; - left: 0; - width: 100%; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - opacity: 0; - filter: alpha(opacity=0); - } - - .chosen-container:not(.chosen-right) .chosen-drop { - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - } - - .chosen-container.chosen-right .chosen-drop { - -webkit-transform-origin: 100% 0; - -moz-transform-origin: 100% 0; - -ms-transform-origin: 100% 0; - transform-origin: 100% 0; - } - - .chosen-container.chosen-container-active .chosen-drop { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - opacity: 1; - filter: alpha(opacity=100); - } - - .chosen-container .chosen-results { - padding: 0; - margin: 0; - } - - .chosen-container .chosen-results > li { - padding: 8px 17px; - color: #4C4C4C; - -webkit-transition: background-color; - -o-transition: background-color; - transition: background-color; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - .chosen-container .chosen-results > li:not(.disabled-result):not(.result-selected):not(.group-result) { - color: #262626; - } - - .chosen-container .chosen-results > li:not(.disabled-result):not(.result-selected):not(.group-result):not(:hover) { - background: #fff !important; - } - - .chosen-container .chosen-results > li:not(.disabled-result):not(.result-selected):not(.group-result):hover { - background-color: #e4e4e4; - color: #262626; - } - - .chosen-container .chosen-results > li.disabled-result { - color: #e4e4e4; - } - - .chosen-container .chosen-results > li.result-selected { - background: #2196f3; - color: #fff; - } - - .chosen-container .chosen-results > li.highlighted { - background: #eee; - color: #333; - } - - .chosen-container .chosen-results > li.group-result { - padding: 3px 16px; - margin-top: 10px; - color: #b1b1b1; - font-weight: normal; - } - - .chosen-container .chosen-results > li.group-result:not(:first-child) { - border-top: 1px solid rgba(0, 0, 0, 0.08); - padding-top: 15px; - } - - .chosen-container .chosen-choices { - border-left: 0; - border-top: 0; - border-right: 0; - } - - .chosen-container .chosen-choices .search-field input[type=text] { - height: 34px; - } - - .chosen-container .chosen-choices .chosen-single-with-deselect:before { - font-family: 'Material Design Iconic Font'; - content: "\f29a"; - font-size: 13px; - color: #696969; - margin-right: 8px; - content: ""; - } - -.chosen-container-single:before { - position: absolute; - top: 0; - height: 100%; - width: 13px; - right: 0; - z-index: 1; - background-image: url("img/select.png"); - background-position: right; - background-repeat: no-repeat; - content: ""; -} - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { - .chosen-container-single:before { - background-image: url("img/select@2x.png"); - background-size: 12px 12px; - } -} - -.chosen-container-single .chosen-single { - padding: 0 16px 0 0; - border-left: 0; - border-top: 0; - border-right: 0; - border-radius: 0; - background: transparent; - border-bottom: 1px solid #e0e0e0; - box-shadow: none; - height: 28px; -} - - .chosen-container-single .chosen-single div b { - background: none; - } - -.chosen-container-single .chosen-search { - padding: 0 18px; - margin: 10px 0 15px; - position: relative; -} - - .chosen-container-single .chosen-search:before { - position: absolute; - left: 14px; - top: 2px; - width: 30px; - height: 100%; - content: "\f05f"; - font-family: 'Material Design Iconic Font'; - font-size: 25px; - } - - .chosen-container-single .chosen-search input[type=text] { - border: 0; - padding-top: 8px; - padding-left: 30px; - } - -.chosen-container-active.chosen-with-drop .chosen-single { - border-top: 0; - border-left: 0; - border-right: 0; - border-color: #e0e0e0; - background: none; -} - -.chosen-container-active:after { - width: 100%; -} - -.chosen-container-active .chosen-choices { - box-shadow: none; -} - -.chosen-container-multi .chosen-choices { - border: 0; - border-bottom: 1px solid #e0e0e0; - background: none; - padding: 0; -} - - .chosen-container-multi .chosen-choices li.search-choice { - border: 0; - padding: 6px 25px 5px 7px; - margin: 0 5px 5px 0; - background: #eee; - border-radius: 2px; - box-shadow: none; - } - - .chosen-container-multi .chosen-choices li.search-choice .search-choice-close { - right: 7px; - top: 6px; - background: none; - } - - .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { - font-family: 'Material Design Iconic Font'; - content: "\f29a"; - font-size: 13px; - color: #696969; - margin-right: 8px; - } - -.chosen-search input[type=text] { - background: none !important; -} - -.noUi-target { - border-radius: 0; - box-shadow: none; - border: 0; -} - -.noUi-background { - background: #d4d4d4; - box-shadow: none; -} - -.noUi-horizontal { - height: 3px; -} - - .noUi-horizontal .noUi-handle { - top: -8px; - } - -.noUi-vertical { - width: 3px; -} - - .noUi-horizontal .noUi-handle, - .noUi-vertical .noUi-handle { - width: 19px; - height: 19px; - border: 0; - border-radius: 100%; - box-shadow: none; - -webkit-transition: box-shadow; - -o-transition: box-shadow; - transition: box-shadow; - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - cursor: pointer; - position: relative; - } - - .noUi-horizontal .noUi-handle:before, - .noUi-vertical .noUi-handle:before, - .noUi-horizontal .noUi-handle:after, - .noUi-vertical .noUi-handle:after { - display: none; - } - - .noUi-horizontal .noUi-handle:active, - .noUi-vertical .noUi-handle:active { - background: #ccc !important; - } - - .noUi-horizontal .noUi-handle .is-tooltip, - .noUi-vertical .noUi-handle .is-tooltip { - position: absolute; - bottom: 32px; - height: 35px; - border-radius: 2px; - color: #fff; - text-align: center; - line-height: 33px; - width: 50px; - left: 50%; - margin-left: -25px; - padding: 0 10px; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 200ms; - transition-duration: 200ms; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - opacity: 0; - filter: alpha(opacity=0); - -webkit-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - } - - .noUi-horizontal .noUi-handle .is-tooltip:after, - .noUi-vertical .noUi-handle .is-tooltip:after { - width: 0; - height: 0; - border-style: solid; - border-width: 15px 10px 0 10px; - position: absolute; - bottom: -8px; - left: 50%; - margin-left: -9px; - content: ""; - } - - .noUi-horizontal .noUi-active, - .noUi-vertical .noUi-active { - box-shadow: 0 0 0 13px rgba(0, 0, 0, 0.1); - } - - .noUi-horizontal .noUi-active .is-tooltip, - .noUi-vertical .noUi-active .is-tooltip { - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - bottom: 40px; - opacity: 1; - filter: alpha(opacity=100); - } - -.input-slider:not([data-is-color]) .noUi-handle, -.input-slider-range:not([data-is-color]) .noUi-handle, -.input-slider-values:not([data-is-color]) .noUi-handle, -.input-slider:not([data-is-color]) .noUi-connect, -.input-slider-range:not([data-is-color]) .noUi-connect, -.input-slider-values:not([data-is-color]) .noUi-connect { - background: #009688 !important; -} - -.input-slider:not([data-is-color]) .is-tooltip, -.input-slider-range:not([data-is-color]) .is-tooltip, -.input-slider-values:not([data-is-color]) .is-tooltip { - background: #009688; -} - - .input-slider:not([data-is-color]) .is-tooltip:after, - .input-slider-range:not([data-is-color]) .is-tooltip:after, - .input-slider-values:not([data-is-color]) .is-tooltip:after { - border-color: #009688 transparent transparent transparent; - } - -.input-slider[data-is-color=red] .noUi-handle, -.input-slider-range[data-is-color=red] .noUi-handle, -.input-slider-values[data-is-color=red] .noUi-handle, -.input-slider[data-is-color=red] .noUi-connect, -.input-slider-range[data-is-color=red] .noUi-connect, -.input-slider-values[data-is-color=red] .noUi-connect { - background: #f44336 !important; -} - -.input-slider[data-is-color=blue] .noUi-handle, -.input-slider-range[data-is-color=blue] .noUi-handle, -.input-slider-values[data-is-color=blue] .noUi-handle, -.input-slider[data-is-color=blue] .noUi-connect, -.input-slider-range[data-is-color=blue] .noUi-connect, -.input-slider-values[data-is-color=blue] .noUi-connect { - background: #2196f3 !important; -} - -.input-slider[data-is-color=cyan] .noUi-handle, -.input-slider-range[data-is-color=cyan] .noUi-handle, -.input-slider-values[data-is-color=cyan] .noUi-handle, -.input-slider[data-is-color=cyan] .noUi-connect, -.input-slider-range[data-is-color=cyan] .noUi-connect, -.input-slider-values[data-is-color=cyan] .noUi-connect { - background: #00bcd4 !important; -} - -.input-slider[data-is-color=amber] .noUi-handle, -.input-slider-range[data-is-color=amber] .noUi-handle, -.input-slider-values[data-is-color=amber] .noUi-handle, -.input-slider[data-is-color=amber] .noUi-connect, -.input-slider-range[data-is-color=amber] .noUi-connect, -.input-slider-values[data-is-color=amber] .noUi-connect { - background: #ffc107 !important; -} - -.input-slider[data-is-color=green] .noUi-handle, -.input-slider-range[data-is-color=green] .noUi-handle, -.input-slider-values[data-is-color=green] .noUi-handle, -.input-slider[data-is-color=green] .noUi-connect, -.input-slider-range[data-is-color=green] .noUi-connect, -.input-slider-values[data-is-color=green] .noUi-connect { - background: #4caf50 !important; -} - -.input-slider .noUi-origin { - background: #d4d4d4; -} - -.input-slider:not([data-is-color]) .noUi-base { - background: #009688 !important; -} - -.input-slider[data-is-color=red] .noUi-base { - background: #f44336 !important; -} - -.input-slider[data-is-color=blue] .noUi-base { - background: #2196f3 !important; -} - -.input-slider[data-is-color=cyan] .noUi-base { - background: #00bcd4 !important; -} - -.input-slider[data-is-color=amber] .noUi-base { - background: #ffc107 !important; -} - -.input-slider[data-is-color=green] .noUi-base { - background: #4caf50 !important; -} - -.cp-container { - position: relative; -} - - .cp-container > .input-group input.cp-value { - color: #000 !important; - background: transparent !important; - } - - .cp-container > .input-group .dropdown-menu { - padding: 20px; - margin-left: 10px; - } - - .cp-container i.cp-value { - border-radius: 2px 5px 5px 2px; - height: 30px; - position: absolute; - right: 1px; - top: 1px; - width: 25px; - } - -.note-editor, -.note-popover { - border-color: #e4e4e4; -} - - .note-editor .note-toolbar, - .note-popover .note-toolbar, - .note-editor .popover-content, - .note-popover .popover-content { - background: #fff; - border-color: #e4e4e4; - margin: 0; - padding: 10px 0 15px; - text-align: center; - } - - .note-editor .note-toolbar > .btn-group, - .note-popover .note-toolbar > .btn-group, - .note-editor .popover-content > .btn-group, - .note-popover .popover-content > .btn-group { - display: inline-block; - float: none; - box-shadow: none; - } - - .note-editor .note-toolbar > .btn-group .btn, - .note-popover .note-toolbar > .btn-group .btn, - .note-editor .popover-content > .btn-group .btn, - .note-popover .popover-content > .btn-group .btn { - margin: 0 1px; - } - - .note-editor .note-toolbar > .btn-group > .active, - .note-popover .note-toolbar > .btn-group > .active, - .note-editor .popover-content > .btn-group > .active, - .note-popover .popover-content > .btn-group > .active { - background: #00bcd4; - color: #fff; - } - - .note-editor .note-toolbar .btn, - .note-popover .note-toolbar .btn, - .note-editor .popover-content .btn, - .note-popover .popover-content .btn { - height: 40px; - border-radius: 2px !important; - box-shadow: none !important; - } - - .note-editor .note-toolbar .btn:active, - .note-popover .note-toolbar .btn:active, - .note-editor .popover-content .btn:active, - .note-popover .popover-content .btn:active { - box-shadow: none; - } - - .note-editor .note-toolbar .note-palette-title, - .note-popover .note-toolbar .note-palette-title, - .note-editor .popover-content .note-palette-title, - .note-popover .popover-content .note-palette-title { - margin: 0 !important; - padding: 10px 0 !important; - font-size: 13px !important; - text-align: center !important; - border: 0 !important; - } - - .note-editor .note-toolbar .note-color-reset, - .note-popover .note-toolbar .note-color-reset, - .note-editor .popover-content .note-color-reset, - .note-popover .popover-content .note-color-reset { - padding: 0 0 10px !important; - margin: 0 !important; - background: none; - text-align: center; - } - - .note-editor .note-toolbar .note-color .dropdown-menu, - .note-popover .note-toolbar .note-color .dropdown-menu, - .note-editor .popover-content .note-color .dropdown-menu, - .note-popover .popover-content .note-color .dropdown-menu { - min-width: 335px; - } - - .note-editor .note-statusbar .note-resizebar, - .note-popover .note-statusbar .note-resizebar { - border-color: #E8E8E8; - } - - .note-editor .note-statusbar .note-resizebar .note-icon-bar, - .note-popover .note-statusbar .note-resizebar .note-icon-bar { - border-color: #BCBCBC; - } - - .note-editor .fa, - .note-popover .fa { - font-style: normal; - font-size: 20px; - vertical-align: middle; - } - - .note-editor .fa:before, - .note-popover .fa:before { - font-family: 'Material Design Iconic Font'; - } - - .note-editor .fa.fa-magic:before, - .note-popover .fa.fa-magic:before { - content: "\f11b"; - } - - .note-editor .fa.fa-bold:before, - .note-popover .fa.fa-bold:before { - content: "\f17a"; - } - - .note-editor .fa.fa-italic:before, - .note-popover .fa.fa-italic:before { - content: "\f181"; - } - - .note-editor .fa.fa-underline:before, - .note-popover .fa.fa-underline:before { - content: "\f18b"; - } - - .note-editor .fa.fa-font:before, - .note-popover .fa.fa-font:before { - content: "\f17e"; - } - - .note-editor .fa.fa-list-ul:before, - .note-popover .fa.fa-list-ul:before { - content: "\f183"; - } - - .note-editor .fa.fa-list-ol:before, - .note-popover .fa.fa-list-ol:before { - content: "\f184"; - } - - .note-editor .fa.fa-align-left:before, - .note-popover .fa.fa-align-left:before { - content: "\f178"; - } - - .note-editor .fa.fa-align-left:before, - .note-popover .fa.fa-align-left:before { - content: "\f178"; - } - - .note-editor .fa.fa-align-right:before, - .note-popover .fa.fa-align-right:before { - content: "\f179"; - } - - .note-editor .fa.fa-align-center:before, - .note-popover .fa.fa-align-center:before { - content: "\f176"; - } - - .note-editor .fa.fa-align-justify:before, - .note-popover .fa.fa-align-justify:before { - content: "\f177"; - } - - .note-editor .fa.fa-indent:before, - .note-popover .fa.fa-indent:before { - content: "\f180"; - } - - .note-editor .fa.fa-outdent:before, - .note-popover .fa.fa-outdent:before { - content: "\f17f"; - } - - .note-editor .fa.fa-text-height:before, - .note-popover .fa.fa-text-height:before { - content: "\f182"; - } - - .note-editor .fa.fa-table:before, - .note-popover .fa.fa-table:before { - content: "\f21e"; - } - - .note-editor .fa.fa-link:before, - .note-popover .fa.fa-link:before { - content: "\f10d"; - } - - .note-editor .fa.fa-picture-o:before, - .note-popover .fa.fa-picture-o:before { - content: "\f224"; - } - - .note-editor .fa.fa-minus:before, - .note-popover .fa.fa-minus:before { - content: "\f16e"; - } - - .note-editor .fa.fa-arrows-alt:before, - .note-popover .fa.fa-arrows-alt:before { - content: "\f29f"; - } - - .note-editor .fa.fa-code:before, - .note-popover .fa.fa-code:before { - content: "\f066"; - } - - .note-editor .fa.fa-question:before, - .note-popover .fa.fa-question:before { - content: "\f033"; - } - - .note-editor .fa.fa-eraser:before, - .note-popover .fa.fa-eraser:before { - content: "\f17b"; - } - - .note-editor .fa.fa-square:before, - .note-popover .fa.fa-square:before { - content: "\f1f4"; - } - - .note-editor .fa.fa-circle-o:before, - .note-popover .fa.fa-circle-o:before { - content: "\f2e3"; - } - - .note-editor .fa.fa-times:before, - .note-popover .fa.fa-times:before { - content: "\f29a"; - } - - .note-editor .note-air-popover .arrow, - .note-popover .note-air-popover .arrow { - left: 20px; - } - - .note-editor .note-editable { - padding: 20px 23px; - } - -.bootstrap-datetimepicker-widget { - margin-top: 0 !important; -} - - .bootstrap-datetimepicker-widget.top { - -webkit-transform-origin: 0 100% !important; - -moz-transform-origin: 0 100% !important; - -ms-transform-origin: 0 100% !important; - transform-origin: 0 100% !important; - } - - .bootstrap-datetimepicker-widget:before, - .bootstrap-datetimepicker-widget:after { - display: none !important; - } - - .bootstrap-datetimepicker-widget .picker-switch.accordion-toggle span { - background: #fff; - border-radius: 0; - } - - .bootstrap-datetimepicker-widget .picker-switch.accordion-toggle span:hover { - background: #fff; - } - - .bootstrap-datetimepicker-widget .datepicker-days table { - margin-bottom: 20px; - } - - .bootstrap-datetimepicker-widget .timepicker .md { - font-size: 25px; - } - - .bootstrap-datetimepicker-widget .glyphicon { - color: #333; - } - - .bootstrap-datetimepicker-widget .active { - background: #2196f3 !important; - } - -.fileinput { - position: relative; - padding-right: 35px; -} - - .fileinput .close { - position: absolute; - top: 5px; - font-size: 12px; - float: none; - opacity: 1; - font-weight: 500; - border: 1px solid #ccc; - width: 19px; - text-align: center; - height: 19px; - line-height: 15px; - border-radius: 50%; - right: 0; - } - - .fileinput .close:hover { - background: #eee; - } - - .fileinput .input-group-addon { - padding: 0 10px; - vertical-align: middle; - } - - .fileinput .fileinput-preview { - width: 200px; - height: 150px; - position: relative; - } - - .fileinput .fileinput-preview img { - display: inline-block; - vertical-align: middle; - margin-top: -13px; - } - - .fileinput .fileinput-preview:after { - content: ""; - display: inline-block; - vertical-align: middle; - } - -#lg-outer { - background: rgba(255, 255, 255, 0.95); -} - - #lg-outer .object { - box-shadow: 0 8px 17px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.19); - border-radius: 2px; - } - -#lg-close { - display: none; -} - -#lg-action { - top: 0; - width: 100%; - left: 0; - margin-left: 0 !important; - height: 40px; - border-bottom: 1px solid #eee; - text-align: center; -} - - #lg-action > a { - background: transparent; - color: #9D9D9D; - font-size: 18px; - width: 28px; - height: 37px; - } - - #lg-action > a:hover { - background: transparent; - color: #000; - } - - #lg-action .cl-thumb { - position: fixed; - right: 20px; - bottom: 20px; - width: 50px; - height: 50px; - border-radius: 50%; - line-height: 38px; - background: #f44336; - -webkit-transition: all; - -o-transition: all; - transition: all; - -webkit-transition-duration: 300ms; - transition-duration: 300ms; - } - - #lg-action .cl-thumb:after { - text-align: center; - left: 16px !important; - bottom: 6px !important; - color: #fff; - } - - #lg-action .cl-thumb:hover { - background: #f32c1e; - } - -#lg-gallery .thumb-cont { - background: #f44336; - text-align: center; -} - - #lg-gallery .thumb-cont .thumb-info { - background: #f44336; - } - - #lg-gallery .thumb-cont .thumb-info .count { - display: none; - } - - #lg-gallery .thumb-cont .thumb-info .close { - width: 14px; - margin-top: 0; - background: none; - } - - #lg-gallery .thumb-cont .thumb-info .close:hover { - background: none; - } - - #lg-gallery .thumb-cont .thumb { - opacity: 1; - filter: alpha(opacity=100); - } - - #lg-gallery .thumb-cont .thumb-inner { - display: inline-block; - padding: 12px 12px 15px; - } - -.lg-slide { - background: none !important; -} - - .lg-slide:after { - content: ""; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - height: 50px; - width: 50px; - border-radius: 100%; - border: 2px solid #2196f3; - -webkit-animation: ball-scale-ripple 1s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8); - animation: ball-scale-ripple 1s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8); - position: absolute; - left: 50%; - margin-left: -25px; - top: 50%; - margin-top: -25px; - z-index: -1; - } - - .lg-slide em { - font-style: normal; - } - - .lg-slide em h3 { - margin-bottom: 5px; - } - - .lg-slide .video-cont { - box-shadow: 0 8px 17px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.19); - } - -@-webkit-keyframes ball-scale-ripple { - 0% { - -webkit-transform: scale(0.1); - transform: scale(0.1); - opacity: 1; - } - - 70% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.7; - } - - 100% { - opacity: 0.0; - } -} - -@keyframes ball-scale-ripple { - 0% { - -webkit-transform: scale(0.1); - transform: scale(0.1); - opacity: 1; - } - - 70% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.7; - } - - 100% { - opacity: 0.0; - } -} - -.waves-effect { - position: relative; - cursor: pointer; - overflow: hidden; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; -} - -#loading-bar, -#loading-bar-spinner { - pointer-events: none; - -webkit-pointer-events: none; - -webkit-transition: linear all; - -o-transition: linear all; - transition: linear all; - -webkit-transition-duration: 350ms; - transition-duration: 350ms; -} - -#loading-bar.ng-enter, -#loading-bar.ng-leave.ng-leave-active, -#loading-bar-spinner.ng-enter, -#loading-bar-spinner.ng-leave.ng-leave-active { - opacity: 0; - filter: alpha(opacity=0); -} - -#loading-bar.ng-enter.ng-enter-active, -#loading-bar.ng-leave, -#loading-bar-spinner.ng-enter.ng-enter-active, -#loading-bar-spinner.ng-leave { - opacity: 1; - filter: alpha(opacity=100); -} - -#loading-bar .bar { - -webkit-transition: width; - -o-transition: width; - transition: width; - -webkit-transition-duration: 350ms; - transition-duration: 350ms; - background: rgba(0, 0, 0, 0.15); - position: fixed; - z-index: 10002; - top: 0; - left: 0; - width: 100%; - height: 70px; - border-bottom-right-radius: 1px; - border-top-right-radius: 1px; -} - -/* Fancy blur effect */ - -#loading-bar .peg { - position: absolute; - width: 70px; - right: 0; - top: 0; - height: 2px; - opacity: 0.45; - filter: alpha(opacity=45); - box-shadow: #fff 1px 0 6px 1px; - border-radius: 100%; - z-index: 99999; -} - -#loading-bar-spinner { - width: 56px; - height: 56px; - text-align: center; - padding: 14px; - border-radius: 50%; - position: fixed; - top: 105px; - left: 50%; - margin-left: -28px; - background: #fff; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.16), 0 2px 10px rgba(0, 0, 0, 0.12); -} - -#loading-bar-spinner .spinner-icon { - display: inline-block; - width: 28px; - height: 28px; - margin: 0; - float: left; - background: transparent !important; - border: 2px solid #00bcd4; - border-bottom-color: transparent !important; - border-radius: 100%; - -webkit-animation: ball-clip-rotate 0.75s linear infinite; - -o-animation: ball-clip-rotate 0.75s linear infinite; - animation: ball-clip-rotate 0.75s linear infinite; -} - -#loading-bar-spinner:before, -#loading-bar-spinner:after { - content: " "; - display: table; -} - -#loading-bar-spinner:after { - clear: both; -} - -#loading-bar-spinner:before, -#loading-bar-spinner:after { - content: " "; - display: table; -} - -#loading-bar-spinner:after { - clear: both; -} - - - -.jspContainer { - overflow: hidden; - position: relative; -} - -.jspPane { - position: absolute; -} - -.jspVerticalBar { - position: absolute; - top: 0; - right: 0; - width: 11px; - height: 100%; - background: none; -} - -.jspHorizontalBar { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 11px; - background: none; -} - - .jspVerticalBar *, - .jspHorizontalBar * { - margin: 0; - padding: 0; - } - -.jspCap { - display: none; -} - -.jspHorizontalBar .jspCap { - float: left; -} - -.jspTrack { - background: transparent; - position: relative; -} - -.jspVerticalBar .jspTrack { - width: 5px; - margin: 0 0 0 3px; -} - -.jspHorizontalBar .jspTrack { - height: 5px; - margin: 3px 0 3px 0; -} - -.jspVerticalBar .jspCap { - display: block; - height: 3px; - width: 11px; -} - -.jspHorizontalBar .jspCap { - display: block; - width: 3px; - height: 11px; -} - -.jspDrag { - position: relative; - top: 0; - left: 0; - border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - opacity: .75; - background: rgba(0, 0, 0, 0.5); - cursor: default; -} - -.jspHorizontalBar .jspTrack, -.jspHorizontalBar .jspDrag { - float: left; - height: 5px; -} - -.clear { - clear:both; -} - -body > #Form.showControlBar { - margin-top: 0 !important; -} - -/* - * Animation - */ - -@-webkit-keyframes ball-clip-rotate { - 0% { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - - 50% { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - } - - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@-moz-keyframes ball-clip-rotate { - 0% { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - - 50% { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - } - - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@-o-keyframes ball-clip-rotate { - 0% { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - - 50% { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - } - - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes ball-clip-rotate { - 0% { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - - 50% { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - } - - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -/* Make clicks pass-through */ \ No newline at end of file +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*,:before,:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn > .caret,.dropup > .btn > .caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(fonts/glyphicons-halflings-regular.eot);src:url(fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(fonts/glyphicons-halflings-regular.woff) format("woff"),url(fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:roboto;font-size:13px;line-height:1.42857143;color:#5e5e5e;background-color:#edecec!important}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2196f3;text-decoration:none}a:hover,a:focus{color:#0a6ebd;text-decoration:none}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;outline:none!important}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail > img,.thumbnail a > img,.carousel-inner > .item > img,.carousel-inner > .item > a > img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:2px}.img-thumbnail{padding:3px;line-height:1.42857143;background-color:#fff;border:1px solid #ededed;border-radius:2px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:18px;margin-bottom:18px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:#000}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:18px;margin-bottom:9px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:9px;margin-bottom:9px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:33px}h2,.h2{font-size:27px}h3,.h3{font-size:23px}h4,.h4{font-size:17px}h5,.h5{font-size:13px}h6,.h6{font-size:12px}p{margin:0 0 9px}.lead{margin-bottom:18px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#2196f3}a.text-primary:hover{color:#0c7cd5}.text-success{color:#4caf50}a.text-success:hover{color:#3d8b40}.text-info{color:#2196f3}a.text-info:hover{color:#0c7cd5}.text-warning{color:#ff9800}a.text-warning:hover{color:#cc7a00}.text-danger{color:#f44336}a.text-danger:hover{color:#ea1c0d}.bg-primary{color:#fff;background-color:#2196f3}a.bg-primary:hover{background-color:#0c7cd5}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:8px;margin:36px 0 18px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:9px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:18px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:9px 18px;margin:0 0 18px;font-size:16.25px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:18px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:2px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:2px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width: 768px){.container{width:calc(100% - 30px)}}@media (min-width: 992px){.container{width:calc(100% - 30px)}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:10px;padding-bottom:10px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:18px}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{padding:10px;line-height:1.42857143;vertical-align:top;border-top:1px solid #f0f0f0}.table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #f0f0f0}.table > caption + thead > tr:first-child > th,.table > colgroup + thead > tr:first-child > th,.table > thead:first-child > tr:first-child > th,.table > caption + thead > tr:first-child > td,.table > colgroup + thead > tr:first-child > td,.table > thead:first-child > tr:first-child > td{border-top:0}.table > tbody + tbody{border-top:2px solid #f0f0f0}.table .table{background-color:#edecec}.table-condensed > thead > tr > th,.table-condensed > tbody > tr > th,.table-condensed > tfoot > tr > th,.table-condensed > thead > tr > td,.table-condensed > tbody > tr > td,.table-condensed > tfoot > tr > td{padding:7px}.table-bordered{border:1px solid #f0f0f0}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #f0f0f0}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px}.table-striped > tbody > tr:nth-of-type(odd){background-color:#f4f4f4}.table-hover > tbody > tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table > thead > tr > td.active,.table > tbody > tr > td.active,.table > tfoot > tr > td.active,.table > thead > tr > th.active,.table > tbody > tr > th.active,.table > tfoot > tr > th.active,.table > thead > tr.active > td,.table > tbody > tr.active > td,.table > tfoot > tr.active > td,.table > thead > tr.active > th,.table > tbody > tr.active > th,.table > tfoot > tr.active > th{background-color:#fffcbe}.table-hover > tbody > tr > td.active:hover,.table-hover > tbody > tr > th.active:hover,.table-hover > tbody > tr.active:hover > td,.table-hover > tbody > tr:hover > .active,.table-hover > tbody > tr.active:hover > th{background-color:#fffba4}.table > thead > tr > td.success,.table > tbody > tr > td.success,.table > tfoot > tr > td.success,.table > thead > tr > th.success,.table > tbody > tr > th.success,.table > tfoot > tr > th.success,.table > thead > tr.success > td,.table > tbody > tr.success > td,.table > tfoot > tr.success > td,.table > thead > tr.success > th,.table > tbody > tr.success > th,.table > tfoot > tr.success > th{background-color:#dff0d8}.table-hover > tbody > tr > td.success:hover,.table-hover > tbody > tr > th.success:hover,.table-hover > tbody > tr.success:hover > td,.table-hover > tbody > tr:hover > .success,.table-hover > tbody > tr.success:hover > th{background-color:#d0e9c6}.table > thead > tr > td.info,.table > tbody > tr > td.info,.table > tfoot > tr > td.info,.table > thead > tr > th.info,.table > tbody > tr > th.info,.table > tfoot > tr > th.info,.table > thead > tr.info > td,.table > tbody > tr.info > td,.table > tfoot > tr.info > td,.table > thead > tr.info > th,.table > tbody > tr.info > th,.table > tfoot > tr.info > th{background-color:#d9edf7}.table-hover > tbody > tr > td.info:hover,.table-hover > tbody > tr > th.info:hover,.table-hover > tbody > tr.info:hover > td,.table-hover > tbody > tr:hover > .info,.table-hover > tbody > tr.info:hover > th{background-color:#c4e3f3}.table > thead > tr > td.warning,.table > tbody > tr > td.warning,.table > tfoot > tr > td.warning,.table > thead > tr > th.warning,.table > tbody > tr > th.warning,.table > tfoot > tr > th.warning,.table > thead > tr.warning > td,.table > tbody > tr.warning > td,.table > tfoot > tr.warning > td,.table > thead > tr.warning > th,.table > tbody > tr.warning > th,.table > tfoot > tr.warning > th{background-color:#fcf8e3}.table-hover > tbody > tr > td.warning:hover,.table-hover > tbody > tr > th.warning:hover,.table-hover > tbody > tr.warning:hover > td,.table-hover > tbody > tr:hover > .warning,.table-hover > tbody > tr.warning:hover > th{background-color:#faf2cc}.table > thead > tr > td.danger,.table > tbody > tr > td.danger,.table > tfoot > tr > td.danger,.table > thead > tr > th.danger,.table > tbody > tr > th.danger,.table > tfoot > tr > th.danger,.table > thead > tr.danger > td,.table > tbody > tr.danger > td,.table > tfoot > tr.danger > td,.table > thead > tr.danger > th,.table > tbody > tr.danger > th,.table > tfoot > tr.danger > th{background-color:#f2dede}.table-hover > tbody > tr > td.danger:hover,.table-hover > tbody > tr > th.danger:hover,.table-hover > tbody > tr.danger:hover > td,.table-hover > tbody > tr:hover > .danger,.table-hover > tbody > tr.danger:hover > th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}table > tbody > tr.active{background-color:#f4f4f4;cursor:pointer}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:13.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #f0f0f0}.table-responsive > .table{margin-bottom:0}.table-responsive > .table > thead > tr > th,.table-responsive > .table > tbody > tr > th,.table-responsive > .table > tfoot > tr > th,.table-responsive > .table > thead > tr > td,.table-responsive > .table > tbody > tr > td,.table-responsive > .table > tfoot > tr > td{white-space:nowrap}.table-responsive > .table-bordered{border:0}.table-responsive > .table-bordered > thead > tr > th:first-child,.table-responsive > .table-bordered > tbody > tr > th:first-child,.table-responsive > .table-bordered > tfoot > tr > th:first-child,.table-responsive > .table-bordered > thead > tr > td:first-child,.table-responsive > .table-bordered > tbody > tr > td:first-child,.table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0}.table-responsive > .table-bordered > thead > tr > th:last-child,.table-responsive > .table-bordered > tbody > tr > th:last-child,.table-responsive > .table-bordered > tfoot > tr > th:last-child,.table-responsive > .table-bordered > thead > tr > td:last-child,.table-responsive > .table-bordered > tbody > tr > td:last-child,.table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0}.table-responsive > .table-bordered > tbody > tr:last-child > th,.table-responsive > .table-bordered > tfoot > tr:last-child > th,.table-responsive > .table-bordered > tbody > tr:last-child > td,.table-responsive > .table-bordered > tfoot > tr:last-child > td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:18px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;outline:none!important}output{display:block;padding-top:7px;font-size:13px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:35px;padding:6px 12px;font-size:13px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #e0e0e0;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#b4b4b4;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(180,180,180,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(180,180,180,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:35px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:40px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:18px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio + .radio,.checkbox + .checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline + .radio-inline,.checkbox-inline + .checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:31px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}select.form-group-sm .form-control{height:30px;line-height:30px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;min-height:30px}.input-lg{height:40px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:0}select.input-lg{height:40px;line-height:40px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:40px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:0}select.form-group-lg .form-control{height:40px;line-height:40px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:40px;padding:10px 16px;font-size:17px;line-height:1.3333333;min-height:35px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:43.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:35px;height:35px;line-height:35px;text-align:center;pointer-events:none}.input-lg + .form-control-feedback{width:40px;height:40px;line-height:40px}.input-sm + .form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#4caf50}.has-success .form-control{border-color:#4caf50;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#3d8b40;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94}.has-success .input-group-addon{color:#4caf50;border-color:#4caf50;background-color:#dff0d8}.has-success .form-control-feedback{color:#4caf50}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ff9800}.has-warning .form-control{border-color:#ff9800;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#cc7a00;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166}.has-warning .input-group-addon{color:#ff9800;border-color:#ff9800;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#ff9800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#f44336}.has-error .form-control{border-color:#f44336;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#ea1c0d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f99d97;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f99d97}.has-error .input-group-addon{color:#f44336;border-color:#f44336;background-color:#f2dede}.has-error .form-control-feedback{color:#f44336}.has-feedback label ~ .form-control-feedback{top:23px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#9e9e9e}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group > .form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:25px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:13px;line-height:1.42857143;border-radius:2px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;outline:none!important}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.open > .dropdown-toggle.btn-default{color:#333;background-color:#fff;border-color:transparent}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#2196f3;border-color:#0d8aee}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#0c7cd5;border-color:#0a68b4}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2196f3;border-color:#0d8aee}.btn-primary .badge{color:#2196f3;background-color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#2196f3;border-color:transparent}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active{background-color:#2196f3;border-color:#0d8aee}.btn-primary .badge{color:#2196f3;background-color:#fff}.btn-success{color:#fff;background-color:#4caf50;border-color:#449d48}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#3d8b40;border-color:#327334}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#4caf50;border-color:#449d48}.btn-success .badge{color:#4caf50;background-color:#fff}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#4caf50;border-color:transparent}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active{background-color:#4caf50;border-color:#449d48}.btn-success .badge{color:#4caf50;background-color:#fff}.btn-info{color:#fff;background-color:#00bcd4;border-color:#00a5bb}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#008fa1;border-color:#006f7d}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#00bcd4;border-color:#00a5bb}.btn-info .badge{color:#00bcd4;background-color:#fff}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#00bcd4;border-color:transparent}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active{background-color:#00bcd4;border-color:#00a5bb}.btn-info .badge{color:#00bcd4;background-color:#fff}.btn-warning{color:#fff;background-color:#ff9800;border-color:#e68900}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#cc7a00;border-color:#a86400}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff9800;border-color:#e68900}.btn-warning .badge{color:#ff9800;background-color:#fff}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#ff9800;border-color:transparent}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active{background-color:#ff9800;border-color:#e68900}.btn-warning .badge{color:#ff9800;background-color:#fff}.btn-danger{color:#fff;background-color:#f44336;border-color:#f32c1e}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#ea1c0d;border-color:#c8180b}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#f44336;border-color:#f32c1e}.btn-danger .badge{color:#f44336;background-color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#f44336;border-color:transparent}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active{background-color:#f44336;border-color:#f32c1e}.btn-danger .badge{color:#f44336;background-color:#fff}.btn-link{color:#2196f3;font-weight:400;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0a6ebd;text-decoration:none;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg > .btn{padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:2px}.btn-sm,.btn-group-sm > .btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:2px}.btn-block{display:block;width:100%}.btn-block + .btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody .collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:9;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:13px;text-align:left;background-color:#fff;border:1px solid transparent;border-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 0;overflow:hidden;background-color:rgba(0,0,0,0.08)}.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#333;background-color:rgba(0,0,0,0.075)}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#333;text-decoration:none;outline:0;background-color:rgba(0,0,0,0.075)}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#e4e4e4}.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open > .dropdown-menu{display:block}.open > a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:-1}.pull-right > .dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group > .btn,.btn-group-vertical > .btn{position:relative;float:left}.btn-group > .btn:hover,.btn-group-vertical > .btn:hover,.btn-group > .btn:focus,.btn-group-vertical > .btn:focus,.btn-group > .btn:active,.btn-group-vertical > .btn:active,.btn-group > .btn.active,.btn-group-vertical > .btn.active{z-index:2}.btn-group .btn + .btn,.btn-group .btn + .btn-group,.btn-group .btn-group + .btn,.btn-group .btn-group + .btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar > .btn,.btn-toolbar > .btn-group,.btn-toolbar > .input-group{margin-left:5px}.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group > .btn:first-child{margin-left:0}.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group > .btn-group{float:left}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group > .btn-lg + .dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical > .btn,.btn-group-vertical > .btn-group,.btn-group-vertical > .btn-group > .btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical > .btn-group > .btn{float:none}.btn-group-vertical > .btn + .btn,.btn-group-vertical > .btn + .btn-group,.btn-group-vertical > .btn-group + .btn,.btn-group-vertical > .btn-group + .btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical > .btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical > .btn:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical > .btn:last-child:not(:first-child){border-bottom-left-radius:2px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0}.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified > .btn,.btn-group-justified > .btn-group{float:none;display:table-cell;width:1%}.btn-group-justified > .btn-group .btn{width:100%}.btn-group-justified > .btn-group .dropdown-menu{left:auto}[data-toggle="buttons"] > .btn input[type="radio"],[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],[data-toggle="buttons"] > .btn input[type="checkbox"],[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg > .form-control,.input-group-lg > .input-group-addon,.input-group-lg > .input-group-btn > .btn{height:40px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:0}select.input-group-lg > .form-control,select.input-group-lg > .input-group-addon,select.input-group-lg > .input-group-btn > .btn{height:40px;line-height:40px}textarea.input-group-lg > .form-control,textarea.input-group-lg > .input-group-addon,textarea.input-group-lg > .input-group-btn > .btn,select[multiple].input-group-lg > .form-control,select[multiple].input-group-lg > .input-group-addon,select[multiple].input-group-lg > .input-group-btn > .btn{height:auto}.input-group-sm > .form-control,.input-group-sm > .input-group-addon,.input-group-sm > .input-group-btn > .btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}select.input-group-sm > .form-control,select.input-group-sm > .input-group-addon,select.input-group-sm > .input-group-btn > .btn{height:30px;line-height:30px}textarea.input-group-sm > .form-control,textarea.input-group-sm > .input-group-addon,textarea.input-group-sm > .input-group-btn > .btn,select[multiple].input-group-sm > .form-control,select[multiple].input-group-sm > .input-group-addon,select[multiple].input-group-sm > .input-group-btn > .btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:13px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:transparent;border:1px solid transparent;border-radius:2px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:2px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:2px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group > .btn,.input-group-btn:first-child > .dropdown-toggle,.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child > .btn-group:not(:last-child) > .btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group > .btn,.input-group-btn:last-child > .dropdown-toggle,.input-group-btn:first-child > .btn:not(:first-child),.input-group-btn:first-child > .btn-group:not(:first-child) > .btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn > .btn{position:relative}.input-group-btn > .btn + .btn{margin-left:-1px}.input-group-btn > .btn:hover,.input-group-btn > .btn:focus,.input-group-btn > .btn:active{z-index:2}.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group{margin-right:-1px}.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav > li{position:relative;display:block}.nav > li > a{position:relative;display:block;padding:10px 15px}.nav > li > a:hover,.nav > li > a:focus{text-decoration:none;background-color:#eee}.nav > li.disabled > a{color:#777}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#eee;border-color:#2196f3}.nav .nav-divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.nav > li > a > img{max-width:none}.nav-tabs{border-bottom:1px solid #fff}.nav-tabs > li{float:left;margin-bottom:-1px}.nav-tabs > li > a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:2px 2px 0 0}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#555;background-color:transparent;border:1px solid #fff;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified > li{float:none}.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-tabs.nav-justified > li{display:table-cell;width:1%}.nav-tabs.nav-justified > li > a{margin-bottom:0}}.nav-tabs.nav-justified > li > a{margin-right:0;border-radius:2px}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs.nav-justified > li > a{border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border-bottom-color:#edecec}}.nav-pills > li{float:left}.nav-pills > li > a{border-radius:2px}.nav-pills > li + li{margin-left:2px}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#fff;background-color:#2196f3}.nav-stacked > li{float:none}.nav-stacked > li + li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified > li{float:none}.nav-justified > li > a{text-align:center;margin-bottom:5px}.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified > li{display:table-cell;width:1%}.nav-justified > li > a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified > li > a{margin-right:0;border-radius:2px}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified > li > a{border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border-bottom-color:#edecec}}.tab-content > .tab-pane{display:none}.tab-content > .active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:18px;border:1px solid transparent}@media (min-width: 768px){.navbar{border-radius:2px}}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:16px 15px;font-size:17px;line-height:18px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand > img{display:block}@media (min-width: 768px){.navbar > .container .navbar-brand,.navbar > .container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:2px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar + .icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:8px -15px}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:18px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu > li > a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu > li > a{line-height:18px}.navbar-nav .open .dropdown-menu > li > a:hover,.navbar-nav .open .dropdown-menu > li > a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav > li{float:left}.navbar-nav > li > a{padding-top:16px;padding-bottom:16px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin:7.5px -15px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group > .form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:2px;border-top-left-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7.5px;margin-bottom:7.5px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:16px;margin-bottom:16px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav > li > a{color:#777}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav > .disabled > a,.navbar-default .navbar-nav > .disabled > a:hover,.navbar-default .navbar-nav > .disabled > a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav > .open > a,.navbar-default .navbar-nav > .open > a:hover,.navbar-default .navbar-nav > .open > a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu > li > a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu > .active > a,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav > li > a{color:#9d9d9d}.navbar-inverse .navbar-nav > li > a:hover,.navbar-inverse .navbar-nav > li > a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav > .active > a,.navbar-inverse .navbar-nav > .active > a:hover,.navbar-inverse .navbar-nav > .active > a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav > .disabled > a,.navbar-inverse .navbar-nav > .disabled > a:hover,.navbar-inverse .navbar-nav > .disabled > a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav > .open > a,.navbar-inverse .navbar-nav > .open > a:hover,.navbar-inverse .navbar-nav > .open > a:focus{background-color:#080808;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 20px;margin-bottom:18px;list-style:none;background-color:transparent;border-radius:2px}.breadcrumb > li{display:inline-block}.breadcrumb > li + li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb > .active{color:#7c7c7c}.pagination{display:inline-block;padding-left:0;position:relative;margin:18px 0;border-radius:2px}.pagination > li{display:inline}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#7e7e7e;background-color:#e2e2e2;background-image:none;border:1px solid #fff;margin-left:-1px}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:2px;border-top-left-radius:2px}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{color:#333;background-color:#d7d7d7;border-color:#fff}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:2;color:#fff;background-color:#00bcd4;border-color:#fff;cursor:default}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#777;background-color:#e2e2e2;border-color:#fff;cursor:not-allowed}.pagination-lg > li > a,.pagination-lg > li > span{padding:10px 16px;font-size:17px}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px}.pagination-sm > li > a,.pagination-sm > li > span{padding:5px 10px;font-size:12px}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px}.pager{padding-left:0;margin:18px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li > a,.pager li > span{display:inline-block;padding:5px 14px;background-color:#e2e2e2;border:1px solid #fff;border-radius:15px}.pager li > a:hover,.pager li > a:focus{text-decoration:none;background-color:#d7d7d7}.pager .next > a,.pager .next > span{float:right}.pager .previous > a,.pager .previous > span{float:left}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#777;background-color:#e2e2e2;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#2196f3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#0c7cd5}.label-success{background-color:#4caf50}.label-success[href]:hover,.label-success[href]:focus{background-color:#3d8b40}.label-info{background-color:#00bcd4}.label-info[href]:hover,.label-info[href]:focus{background-color:#008fa1}.label-warning{background-color:#ff9800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc7a00}.label-danger{background-color:#f44336}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#ea1c0d}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:400;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#2196f3;border-radius:2px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs > .btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active > .badge,.nav-pills > .active > a > .badge{color:#fff;background-color:#2196f3}.list-group-item > .badge{float:right}.list-group-item > .badge + .badge{margin-right:5px}.nav-pills > li > a > .badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#f7f7f7}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron > hr{border-top-color:#dedede}.container .jumbotron,.container-fluid .jumbotron{border-radius:2px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:58.5px}}.thumbnail{display:block;padding:3px;margin-bottom:18px;line-height:1.42857143;background-color:#fff;border:1px solid #ededed;border-radius:2px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail > img,.thumbnail a > img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2196f3}.thumbnail .caption{padding:9px;color:#5e5e5e}.alert{padding:15px;margin-bottom:18px;border:1px solid transparent;border-radius:2px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert > p,.alert > ul{margin-bottom:0}.alert > p + p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#dff0d8;color:#4caf50}.alert-success hr{border-top-color:#d0e9c6}.alert-success .alert-link{color:#3d8b40}.alert-info{background-color:#d9edf7;border-color:#d9edf7;color:#2196f3}.alert-info hr{border-top-color:#c4e3f3}.alert-info .alert-link{color:#0c7cd5}.alert-warning{background-color:rgba(255,193,7,0.7);border-color:transparent;color:#fff}.alert-warning hr{border-top-color:#ffe2bd}.alert-warning .alert-link{color:#cc7a00}.alert-danger{background-color:rgba(244,67,54,0.7);border-color:transparent;color:#fff}.alert-danger hr{border-top-color:#ebcccc}.alert-danger .alert-link{color:#ea1c0d}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f5f5f5;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:18px;color:#fff;text-align:center;background-color:#2196f3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#4caf50}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#00bcd4}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#ff9800}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#f44336}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media > .pull-right{padding-left:10px}.media-left,.media > .pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #e9e9e9}.list-group-item:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#fff;color:#b5b4b4;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b5b4b4}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#000;background-color:#f5f5f5;border-color:#e9e9e9}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading > small,.list-group-item.active:hover .list-group-item-heading > small,.list-group-item.active:focus .list-group-item-heading > small,.list-group-item.active .list-group-item-heading > .small,.list-group-item.active:hover .list-group-item-heading > .small,.list-group-item.active:focus .list-group-item-heading > .small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#fff}.list-group-item-success{color:#4caf50;background-color:#dff0d8}a.list-group-item-success{color:#4caf50}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#4caf50;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#4caf50;border-color:#4caf50}.list-group-item-info{color:#2196f3;background-color:#d9edf7}a.list-group-item-info{color:#2196f3}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#2196f3;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#2196f3;border-color:#2196f3}.list-group-item-warning{color:#ff9800;background-color:#fcf8e3}a.list-group-item-warning{color:#ff9800}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#ff9800;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#ff9800;border-color:#ff9800}.list-group-item-danger{color:#f44336;background-color:#f2dede}a.list-group-item-danger{color:#f44336}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#f44336;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#f44336;border-color:#f44336}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:18px;background-color:#fff;border:1px solid transparent;border-radius:2px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:1px;border-top-left-radius:1px}.panel-heading > .dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title > a,.panel-title > small,.panel-title > .small,.panel-title > small > a,.panel-title > .small > a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel > .list-group,.panel > .panel-collapse > .list-group{margin-bottom:0}.panel > .list-group .list-group-item,.panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0}.panel > .list-group:first-child .list-group-item:first-child,.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:1px;border-top-left-radius:1px}.panel > .list-group:last-child .list-group-item:last-child,.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel-heading + .list-group .list-group-item:first-child{border-top-width:0}.list-group + .panel-footer{border-top-width:0}.panel > .table,.panel > .table-responsive > .table,.panel > .panel-collapse > .table{margin-bottom:0}.panel > .table caption,.panel > .table-responsive > .table caption,.panel > .panel-collapse > .table caption{padding-left:15px;padding-right:15px}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:1px;border-top-left-radius:1px}.panel > .table:first-child > thead:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:1px;border-top-right-radius:1px}.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:1px}.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:1px}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel > .table:last-child > tbody:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-left-radius:1px;border-bottom-right-radius:1px}.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:1px}.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:1px}.panel > .panel-body + .table,.panel > .panel-body + .table-responsive,.panel > .table + .panel-body,.panel > .table-responsive + .panel-body{border-top:1px solid #f0f0f0}.panel > .table > tbody:first-child > tr:first-child th,.panel > .table > tbody:first-child > tr:first-child td{border-top:0}.panel > .table-bordered,.panel > .table-responsive > .table-bordered{border:0}.panel > .table-bordered > thead > tr > th:first-child,.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.panel > .table-bordered > tbody > tr > th:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.panel > .table-bordered > tfoot > tr > th:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.panel > .table-bordered > thead > tr > td:first-child,.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.panel > .table-bordered > tbody > tr > td:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.panel > .table-bordered > tfoot > tr > td:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0}.panel > .table-bordered > thead > tr > th:last-child,.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.panel > .table-bordered > tbody > tr > th:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.panel > .table-bordered > tfoot > tr > th:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.panel > .table-bordered > thead > tr > td:last-child,.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.panel > .table-bordered > tbody > tr > td:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.panel > .table-bordered > tfoot > tr > td:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0}.panel > .table-bordered > thead > tr:first-child > td,.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.panel > .table-bordered > tbody > tr:first-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.panel > .table-bordered > thead > tr:first-child > th,.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.panel > .table-bordered > tbody > tr:first-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0}.panel > .table-bordered > tbody > tr:last-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.panel > .table-bordered > tfoot > tr:last-child > td,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.panel > .table-bordered > tbody > tr:last-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.panel > .table-bordered > tfoot > tr:last-child > th,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0}.panel > .table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:18px}.panel-group .panel{margin-bottom:0;border-radius:2px}.panel-group .panel + .panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading + .panel-collapse > .panel-body,.panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default > .panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ddd}.panel-default > .panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#2196f3}.panel-primary > .panel-heading{color:#fff;background-color:#2196f3;border-color:#2196f3}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2196f3}.panel-primary > .panel-heading .badge{color:#2196f3;background-color:#fff}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2196f3}.panel-success{border-color:#d6e9c6}.panel-success > .panel-heading{color:#4caf50;background-color:#dff0d8;border-color:#d6e9c6}.panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#d6e9c6}.panel-success > .panel-heading .badge{color:#dff0d8;background-color:#4caf50}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info > .panel-heading{color:#2196f3;background-color:#d9edf7;border-color:#bce8f1}.panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#bce8f1}.panel-info > .panel-heading .badge{color:#d9edf7;background-color:#2196f3}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning > .panel-heading{color:#ff9800;background-color:#fcf8e3;border-color:#faebcc}.panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#faebcc}.panel-warning > .panel-heading .badge{color:#fcf8e3;background-color:#ff9800}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger > .panel-heading{color:#f44336;background-color:#f2dede;border-color:#ebccd1}.panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ebccd1}.panel-danger > .panel-heading .badge{color:#f2dede;background-color:#f44336}.panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:2px}.well-sm{padding:9px;border-radius:2px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid transparent;border-radius:2px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid transparent;min-height:#0f0f0f}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:transparent}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid transparent}.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn + .btn{margin-left:-1px}.modal-footer .btn-block + .btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:roboto;font-size:12px;font-weight:400;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#fa1414;border-radius:2px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#737373}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#737373}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#737373}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#fa1414}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#737373}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#737373}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#737373}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#737373}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:roboto;font-size:13px;font-weight:400;line-height:1.42857143;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #fff;border-radius:2px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:13px;background-color:#fff;border-bottom:1px solid #f2f2f2;border-radius:1px 1px 0 0}.popover-content{padding:9px 14px}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover > .arrow{border-width:11px}.popover > .arrow:after{border-width:10px;content:""}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#ccc;border-top-color:#fff;bottom:-11px}.popover.top > .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#ccc;border-right-color:#fff}.popover.right > .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#ccc;border-bottom-color:#fff;top:-11px}.popover.bottom > .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left > .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#ccc;border-left-color:#fff}.popover.left > .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner > .item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner > .item > img,.carousel-inner > .item > a > img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner > .item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000px}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner > .active,.carousel-inner > .next,.carousel-inner > .prev{display:block}.carousel-inner > .active{left:0}.carousel-inner > .next,.carousel-inner > .prev{position:absolute;top:0;width:100%}.carousel-inner > .next{left:100%}.carousel-inner > .prev{left:-100%}.carousel-inner > .next.left,.carousel-inner > .prev.right{left:0}.carousel-inner > .active.left{left:-100%}.carousel-inner > .active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical > .btn-group:before,.btn-group-vertical > .btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical > .btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width: 767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width: 767px){.visible-xs-block{display:block!important}}@media (max-width: 767px){.visible-xs-inline{display:inline!important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width: 1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width: 1200px){.visible-lg-block{display:block!important}}@media (min-width: 1200px){.visible-lg-inline{display:inline!important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width: 767px){.hidden-xs{display:none!important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none!important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none!important}}@media (min-width: 1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}@font-face{font-family:"roboto";font-style:normal;font-weight:300;src:url(fonts/Roboto-Light-webfont.eot?#iefix) format("embedded-opentype"),url(fonts/Roboto-Light-webfont.woff) format("woff"),url(fonts/Roboto-Light-webfont.ttf) format("truetype"),url(fonts/Roboto-Light-webfont.svg#icon) format("svg")}@font-face{font-family:"roboto";font-style:normal;font-weight:400;src:url(fonts/Roboto-Regular-webfont.eot?#iefix) format("embedded-opentype"),url(fonts/Roboto-Regular-webfont.woff) format("woff"),url(fonts/Roboto-Regular-webfont.ttf) format("truetype"),url(fonts/Roboto-Regular-webfont.svg#icon) format("svg")}@font-face{font-family:"roboto";font-style:normal;font-weight:500;src:url(fonts/Roboto-Medium-webfont.eot?#iefix) format("embedded-opentype"),url(fonts/Roboto-Medium-webfont.woff) format("woff"),url(fonts/Roboto-Medium-webfont.ttf) format("truetype"),url(fonts/Roboto-Medium-webfont.svg#icon) format("svg")}@font-face{font-family:"roboto";font-style:normal;font-weight:700;src:url(fonts/Roboto-Bold-webfont.eot?#iefix) format("embedded-opentype"),url(fonts/Roboto-Bold-webfont.woff) format("woff"),url(fonts/Roboto-Bold-webfont.ttf) format("truetype"),url(fonts/Roboto-Bold-webfont.svg#icon) format("svg")}@font-face{font-family:'shadowsintolight';src:url(data:font-woff;base64,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) format("woff");font-weight:400;font-style:normal}@font-face{font-family:weather-icons;src:url(fonts/weather-icons/weather-icons.eot);src:url(fonts/weather-icons/weather-icons.eot?#iefix) format("embedded-opentype"),url(fonts/weather-icons/weather-icons.woff) format("woff"),url(fonts/weather-icons/weather-icons.ttf) format("truetype"),url(fonts/weather-icons/weather-icons.svg#icon) format("svg");font-weight:400;font-style:normal}#weather-widget [class*="icon-"]{font-family:'weather-icons';font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-0:before{content:":"}.icon-1:before{content:"p"}.icon-2:before{content:"S"}.icon-3:before{content:"Q"}.icon-4:before{content:"S"}.icon-5:before{content:"W"}.icon-6:before{content:"W"}.icon-7:before{content:"W"}.icon-8:before{content:"W"}.icon-9:before{content:"I"}.icon-10:before{content:"W"}.icon-11:before{content:"I"}.icon-12:before{content:"I"}.icon-13:before{content:"I"}.icon-14:before{content:"I"}.icon-15:before{content:"W"}.icon-16:before{content:"I"}.icon-17:before{content:"W"}.icon-18:before{content:"U"}.icon-19:before{content:"Z"}.icon-20:before{content:"Z"}.icon-21:before{content:"Z"}.icon-22:before{content:"Z"}.icon-23:before{content:"Z"}.icon-24:before{content:"E"}.icon-25:before{content:"E"}.icon-26:before{content:"3"}.icon-27:before{content:"a"}.icon-28:before{content:"A"}.icon-29:before{content:"a"}.icon-30:before{content:"A"}.icon-31:before{content:"6"}.icon-32:before{content:"1"}.icon-33:before{content:"6"}.icon-34:before{content:"1"}.icon-35:before{content:"W"}.icon-36:before{content:"1"}.icon-37:before{content:"S"}.icon-38:before{content:"S"}.icon-39:before{content:"S"}.icon-40:before{content:"M"}.icon-41:before{content:"W"}.icon-42:before{content:"I"}.icon-43:before{content:"W"}.icon-44:before{content:"a"}.icon-45:before{content:"S"}.icon-46:before{content:"U"}.icon-47:before{content:"S"}.btn-file{overflow:hidden;position:relative;vertical-align:middle}.btn-file > input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);font-size:23px;height:100%;width:100%;direction:ltr;cursor:pointer}.fileinput{margin-bottom:9px;display:inline-block}.fileinput .form-control{padding-top:7px;padding-bottom:5px;display:inline-block;margin-bottom:0;vertical-align:middle;cursor:text}.fileinput .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center}.fileinput .thumbnail > img{max-height:100%}.fileinput .btn{vertical-align:middle}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-exists{display:none}.fileinput-inline .fileinput-controls{display:inline}.fileinput-filename{vertical-align:middle;display:inline-block;overflow:hidden}.form-control .fileinput-filename{vertical-align:bottom}.fileinput.input-group{display:table}.fileinput.input-group > *{position:relative;z-index:2}.fileinput.input-group > .btn-file{z-index:1}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-file{border-radius:0 2px 2px 0}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-sm{border-radius:0 2px 2px 0}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lg{border-radius:0 2px 2px 0}.form-group.has-warning .fileinput .fileinput-preview{color:#ff9800}.form-group.has-warning .fileinput .thumbnail{border-color:#faebcc}.form-group.has-error .fileinput .fileinput-preview{color:#f44336}.form-group.has-error .fileinput .thumbnail{border-color:#ebccd1}.form-group.has-success .fileinput .fileinput-preview{color:#4caf50}.form-group.has-success .fileinput .thumbnail{border-color:#d6e9c6}.input-group-addon:not(:first-child){border-left:0}.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:100px;height:100px;margin-top:-50px;margin-left:-50px;opacity:0;background:rgba(0,0,0,0.2);background:-webkit-radial-gradient(rgba(0,0,0,0.2) 0,rgba(0,0,0,0.3) 40%,rgba(0,0,0,0.4) 50%,rgba(0,0,0,0.5) 60%,rgba(255,255,255,0) 70%);background:-o-radial-gradient(rgba(0,0,0,0.2) 0,rgba(0,0,0,0.3) 40%,rgba(0,0,0,0.4) 50%,rgba(0,0,0,0.5) 60%,rgba(255,255,255,0) 70%);background:-moz-radial-gradient(rgba(0,0,0,0.2) 0,rgba(0,0,0,0.3) 40%,rgba(0,0,0,0.4) 50%,rgba(0,0,0,0.5) 60%,rgba(255,255,255,0) 70%);background:radial-gradient(rgba(0,0,0,0.2) 0,rgba(0,0,0,0.3) 40%,rgba(0,0,0,0.4) 50%,rgba(0,0,0,0.5) 60%,rgba(255,255,255,0) 70%);-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-o-transition:all .5s ease-out;transition:all .5s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0) translate(0,0);-moz-transform:scale(0) translate(0,0);-ms-transform:scale(0) translate(0,0);-o-transform:scale(0) translate(0,0);transform:scale(0) translate(0,0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background:rgba(255,255,255,0.4);background:-webkit-radial-gradient(rgba(255,255,255,0.2) 0,rgba(255,255,255,0.3) 40%,rgba(255,255,255,0.4) 50%,rgba(255,255,255,0.5) 60%,rgba(255,255,255,0) 70%);background:-o-radial-gradient(rgba(255,255,255,0.2) 0,rgba(255,255,255,0.3) 40%,rgba(255,255,255,0.4) 50%,rgba(255,255,255,0.5) 60%,rgba(255,255,255,0) 70%);background:-moz-radial-gradient(rgba(255,255,255,0.2) 0,rgba(255,255,255,0.3) 40%,rgba(255,255,255,0.4) 50%,rgba(255,255,255,0.5) 60%,rgba(255,255,255,0) 70%);background:radial-gradient(rgba(255,255,255,0.2) 0,rgba(255,255,255,0.3) 40%,rgba(255,255,255,0.4) 50%,rgba(255,255,255,0.5) 60%,rgba(255,255,255,0) 70%)}.waves-effect.waves-classic .waves-ripple{background:rgba(0,0,0,0.2)}.waves-effect.waves-classic.waves-light .waves-ripple{background:rgba(255,255,255,0.4)}.waves-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.waves-button,.waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 100%)}.waves-button,.waves-button:hover,.waves-button:visited,.waves-button-input{white-space:nowrap;vertical-align:middle;cursor:pointer;border:none;outline:none;color:inherit;background-color:rgba(0,0,0,0);font-size:1em;line-height:1em;text-align:center;text-decoration:none;z-index:1}.waves-button{padding:.85em 1.1em;border-radius:.2em}.waves-button-input{margin:0;padding:.85em 1.1em}.waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.waves-input-wrapper.waves-button{padding:0}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%}.waves-float{-webkit-mask-image:none;-webkit-box-shadow:0 1px 1.5px 1px rgba(0,0,0,0.12);box-shadow:0 1px 1.5px 1px rgba(0,0,0,0.12);-webkit-transition:all 300ms;-moz-transition:all 300ms;-o-transition:all 300ms;transition:all 300ms}.waves-float:active{-webkit-box-shadow:0 8px 20px 1px rgba(0,0,0,0.3);box-shadow:0 8px 20px 1px rgba(0,0,0,0.3)}.waves-block{display:block}a.waves-effect .waves-ripple{z-index:-1}.m-0{margin:0!important}.m-t-0{margin-top:0!important}.m-b-0{margin-bottom:0!important}.m-l-0{margin-left:0!important}.m-r-0{margin-right:0!important}.m-5{margin:5px!important}.m-t-5{margin-top:5px!important}.m-b-5{margin-bottom:5px!important}.m-l-5{margin-left:5px!important}.m-r-5{margin-right:5px!important}.m-10{margin:10px!important}.m-t-10{margin-top:10px!important}.m-b-10{margin-bottom:10px!important}.m-l-10{margin-left:10px!important}.m-r-10{margin-right:10px!important}.m-15{margin:15px!important}.m-t-15{margin-top:15px!important}.m-b-15{margin-bottom:15px!important}.m-l-15{margin-left:15px!important}.m-r-15{margin-right:15px!important}.m-20{margin:20px!important}.m-t-20{margin-top:20px!important}.m-b-20{margin-bottom:20px!important}.m-l-20{margin-left:20px!important}.m-r-20{margin-right:20px!important}.m-25{margin:25px!important}.m-t-25{margin-top:25px!important}.m-b-25{margin-bottom:25px!important}.m-l-25{margin-left:25px!important}.m-r-25{margin-right:25px!important}.m-30{margin:30px!important}.m-t-30{margin-top:30px!important}.m-b-30{margin-bottom:30px!important}.m-l-30{margin-left:30px!important}.m-r-30{margin-right:30px!important}.p-0{padding:0!important}.p-t-0{padding-top:0!important}.p-b-0{padding-bottom:0!important}.p-l-0{padding-left:0!important}.p-r-0{padding-right:0!important}.p-5{padding:5px!important}.p-t-5{padding-top:5px!important}.p-b-5{padding-bottom:5px!important}.p-l-5{padding-left:5px!important}.p-r-5{padding-right:5px!important}.p-10{padding:10px!important}.p-t-10{padding-top:10px!important}.p-b-10{padding-bottom:10px!important}.p-l-10{padding-left:10px!important}.p-r-10{padding-right:10px!important}.p-15{padding:15px!important}.p-t-15{padding-top:15px!important}.p-b-15{padding-bottom:15px!important}.p-l-15{padding-left:15px!important}.p-r-15{padding-right:15px!important}.p-20{padding:20px!important}.p-t-20{padding-top:20px!important}.p-b-20{padding-bottom:20px!important}.p-l-20{padding-left:20px!important}.p-r-20{padding-right:20px!important}.p-25{padding:25px!important}.p-t-25{padding-top:25px!important}.p-b-25{padding-bottom:25px!important}.p-l-25{padding-left:25px!important}.p-r-25{padding-right:25px!important}.p-30{padding:30px!important}.p-t-30{padding-top:30px!important}.p-b-30{padding-bottom:30px!important}.p-l-30{padding-left:30px!important}.p-r-30{padding-right:30px!important}.f-300{font-weight:300!important}.f-400{font-weight:400!important}.f-500{font-weight:500!important}.f-700{font-weight:700!important}.p-relative{position:relative!important}.p-absolute{position:absolute!important}.p-fixed{position:fixed!important}.p-static{position:static!important}.o-hidden{overflow:hidden!important}.o-visible{overflow:visible!important}.o-auto{overflow:auto!important}.d-block{display:block!important}.di-block{display:inline-block!important}.bgm-white{background-color:#fff!important}.c-white{color:#fff!important}.bgm-black{background-color:#000!important}.c-black{color:#000!important}.bgm-brown{background-color:#795548!important}.c-brown{color:#795548!important}.bgm-pink{background-color:#e91e63!important}.c-pink{color:#e91e63!important}.bgm-red{background-color:#f44336!important}.c-red{color:#f44336!important}.bgm-blue{background-color:#2196f3!important}.c-blue{color:#2196f3!important}.bgm-purple{background-color:#9c27b0!important}.c-purple{color:#9c27b0!important}.bgm-deeppurple{background-color:#673ab7!important}.c-deeppurple{color:#673ab7!important}.bgm-lightblue{background-color:#03a9f4!important}.c-lightblue{color:#03a9f4!important}.bgm-cyan{background-color:#00bcd4!important}.c-cyan{color:#00bcd4!important}.bgm-teal{background-color:#009688!important}.c-teal{color:#009688!important}.bgm-green{background-color:#4caf50!important}.c-green{color:#4caf50!important}.bgm-lightgreen{background-color:#8bc34a!important}.c-lightgreen{color:#8bc34a!important}.bgm-lime{background-color:#cddc39!important}.c-lime{color:#cddc39!important}.bgm-yellow{background-color:#ffeb3b!important}.c-yellow{color:#ffeb3b!important}.bgm-amber{background-color:#ffc107!important}.c-amber{color:#ffc107!important}.bgm-orange{background-color:#ff9800!important}.c-orange{color:#ff9800!important}.bgm-deeporange{background-color:#ff5722!important}.c-deeporange{color:#ff5722!important}.bgm-gray{background-color:#9e9e9e!important}.c-gray{color:#9e9e9e!important}.bgm-bluegray{background-color:#607d8b!important}.c-bluegray{color:#607d8b!important}.bgm-indigo{background-color:#3f51b5!important}.c-indigo{color:#3f51b5!important}.bg-black-trp{background-color:rgba(0,0,0,0.1)!important}.b-0{border:0!important}.w-100{width:100%!important}.media{overflow:visible}.media:before,.media:after{content:" ";display:table}.media:after{clear:both}.media:before,.media:after{content:" ";display:table}.media:after{clear:both}.media > .pull-left{padding-right:15px}.media > .pull-right{padding-left:15px}.media-heading{font-size:14px;margin-bottom:10px}.media-body{zoom:1;display:block;width:auto}.media-object{border-radius:2px}.close{opacity:.5;filter:alpha(opacity=50);font-weight:400;text-shadow:none}.close:hover{color:inherit;opacity:1;filter:alpha(opacity=100)}.dl-horizontal dt{text-align:left}*,button,input,i,a{-webkit-font-smoothing:antialiased}*,:active,:hover{outline:none!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}html,body{min-height:100vh}html{overflow-x:hidden\0/;-ms-overflow-style:none}body{font-weight:400;padding-top:65px;-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}audio,video{outline:none}p{margin-bottom:20px}small{font-size:11px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small{font-size:12px}.clist{list-style:none}.clist > li:before{font-family:'Material Design Iconic Font';margin:0 10px 0 -20px;vertical-align:middle}.clist.clist-angle > li:before{content:"\f1b6"}.clist.clist-check > li:before{content:"\f299"}.clist.clist-star > li:before{content:"\f2e5"}#main{position:relative}body #content{padding:30px 0}@media (min-width: 1200px){body .sw-toggled #content{padding:30px 0 30px 250px}}@media (min-width: 1200px){body .sw-toggled #content > .container{width:calc(100% - 30px)}}#header{background:#4285F4;box-shadow:0 1px 4px rgba(0,0,0,0.3);height:65px;position:fixed;z-index:1001;width:100%;left:0;padding-right:10px;top:0;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#header:not(.sidebar-toggled).header-up{-webkit-transform:translate3d(0,-70px,0);transform:translate3d(0,-70px,0)}.header-inner{list-style:outside none none;margin:0;padding:10px 0 15px}.header-inner > li{display:inline-block;vertical-align:top}.header-inner > li.pull-right,.header-inner > li#menu-trigger{margin-top:5px}.header-inner > li:not(:last-child){margin-right:-2px}.header-inner .logo a{color:#fff;text-transform:uppercase;padding:6px 10px;display:block;font-size:16px;font-weight:100}#menu-trigger{width:65px;height:35px;cursor:pointer}#menu-trigger .line-wrap .line{background-color:#fff}#menu-trigger:before{content:"";position:absolute;top:9px;left:7px;width:45px;height:45px;border-radius:50%;background:rgba(255,255,255,0.22);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);z-index:0}#menu-trigger.open:before{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.top-menu{list-style:none;padding:0}.top-menu > li{display:inline-block}@media (max-width: 767px){.top-menu > li{position:static!important}}.top-menu > li .dropdown-menu-lg{padding:0}.top-menu > li .dropdown-menu-lg .lv-body{height:275px;overflow-y:auto}@media (min-width: 768px){.top-menu > li:not(#toggle-width){position:relative}.top-menu > li:not(#toggle-width):before{left:0;top:0;content:"";position:absolute;width:100%;height:100%;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);transform:scale3d(0,0,0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,0.12);z-index:0;border-radius:2px;opacity:0;filter:alpha(opacity=0)}.top-menu > li:not(#toggle-width):hover:before{-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1;filter:alpha(opacity=100)}.top-menu > li:not(#toggle-width).open:before{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);opacity:1;filter:alpha(opacity=100)}}.top-menu > li > a{height:35px;min-width:50px;display:inline-block;background-position:center;background-repeat:no-repeat;position:relative;z-index:1}.top-menu > li > a > .tmn-counts{position:absolute;color:#FFF;font-style:normal;background:#f44336;padding:1px 5px;border-radius:2px;right:7px;top:-3px;font-size:10px;-webkit-animation-name:wobble;animation-name:wobble;-webkit-animation-duration:500ms;animation-duration:500ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}.top-menu > li > a.tm-log{background-image:url(img/icons/menu-2.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.top-menu > li > a.tm-log{background-image:url(img/icons/menu-2@2x.png);background-size:18px 12px}}.top-menu > li > a.tm-settings{background-image:url(img/icons/ellipsis.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.top-menu > li > a.tm-settings{background-image:url(img/icons/ellipsis@2x.png);background-size:24px 24px}}.top-menu > li > a.tm-notification{background-image:url(img/icons/notification.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.top-menu > li > a.tm-notification{background-image:url(img/icons/notification@2x.png);background-size:24px 24px}}.top-menu > li > a.tm-message{background-image:url(img/icons/message.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.top-menu > li > a.tm-message{background-image:url(img/icons/message@2x.png);background-size:24px 24px}}.top-menu > li > a.tm-search{background-image:url(img/icons/search.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.top-menu > li > a.tm-search{background-image:url(img/icons/search@2x.png);background-size:24px 24px}}.top-menu > li > a.tm-task{background-image:url(img/icons/task.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.top-menu > li > a.tm-task{background-image:url(img/icons/task@2x.png);background-size:24px 24px}}.top-menu > li:before{top:-1px!important}@media (max-width: 767px){.top-menu .dropdown-menu-lg{width:calc(100% - 28px)!important}.top-menu .dropdown-menu{right:14px;top:55px}}@media (min-width: 1200px){.top-menu #toggle-width .toggle-switch{margin:-12px 30px 0 0}.top-menu #toggle-width .toggle-switch .ts-helper{height:11px;width:33px}.top-menu #toggle-width .toggle-switch .ts-helper:before{width:20px;height:20px;top:-5px}.top-menu #toggle-width .toggle-switch input:checked + .ts-helper{background:rgba(0,0,0,0.26)}.top-menu #toggle-width .toggle-switch input:checked + .ts-helper:before{left:18px;background:#fff}}@media (max-width: 1200px){.top-menu #toggle-width{display:none}}#notifications{position:relative}#notifications .lv-body{overflow-x:hidden}#notifications:before{content:"";position:absolute;width:100%;height:calc(100% - 70px);background:url(img/notifications.png) no-repeat center;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0) rotate(-180deg);-ms-transform:scale(0) rotate(-180deg);-o-transform:scale(0) rotate(-180deg);transform:scale(0) rotate(-180deg);opacity:0;filter:alpha(opacity=0);top:42px}#notifications.empty:before{-webkit-transform:scale(1) rotate(0deg);-ms-transform:scale(1) rotate(0deg);-o-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg);opacity:1;filter:alpha(opacity=100)}#top-search-wrap{position:absolute;top:-65px;left:0;width:100%;height:65px;background:#4285F4;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;opacity:0;filter:alpha(opacity=0);z-index:10}@media (min-width: 768px){#top-search-wrap{text-align:center}}#top-search-wrap input[type="text"]{border:0;height:40px;padding:0 10px 0 40px;font-size:18px;margin:12px;width:500px;border-radius:2px;color:rgba(51,51,51,0.69);background-color:rgba(255,255,255,0.26);background-image:url(img/icons/search.png);background-repeat:no-repeat;background-position:10px center}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#top-search-wrap input[type="text"]{background-image:url(img/icons/search@2x.png);background-size:24px 24px}}#top-search-wrap input[type="text"]:focus{background-color:rgba(255,255,255,0.4)}@media (max-width: 767px){#top-search-wrap input[type="text"]{width:calc(100% - 60px)}}#top-search-wrap #top-search-close{position:absolute;top:16px;font-size:23px;font-style:normal;color:rgba(0,0,0,0.38);width:35px;text-align:center;border-radius:2px;cursor:pointer;right:20px}#top-search-wrap #top-search-close:hover{background-color:rgba(0,0,0,0.15);color:#000}@media (max-width: 767px){#top-search-wrap #top-search-close{right:7px}}.search-toggled #top-search-wrap{top:0;opacity:1;filter:alpha(opacity=100)}@media (min-width: 1200px){.sw-toggled #header{padding-left:0}.sw-toggled #menu-trigger{display:none}}.ie9 #header:not(.sidebar-toggled).header-up{display:none}:-webkit-full-screen [data-action="fullscreen"]{display:none}:-moz-full-screen [data-action="fullscreen"]{display:none}:-ms-fullscreen [data-action="fullscreen"]{display:none}:full-screen [data-action="fullscreen"]{display:none}:fullscreen [data-action="fullscreen"]{display:none}#sidebar{position:fixed;background:#fff;box-shadow:0 0 10px rgba(51,51,51,0.38);top:65px;height:calc(100% - 65px);-webkit-transform:translate3d(-250px,0,0);transform:translate3d(-250px,0,0);z-index:5;width:268px;overflow:hidden;opacity:0;filter:alpha(opacity=0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}#sidebar .sidebar-inner{height:100%;box-sizing:border-box;width:268px}#sidebar .sidebar-inner .si-inner{width:268px}#sidebar.toggled{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;filter:alpha(opacity=100)}#sidebar .profile-menu > a{display:block;height:129px;margin-bottom:5px;width:100%;background:url(img/profile-menu.png) no-repeat left top;background-size:100%}#sidebar .profile-menu > a .profile-pic{padding:12px}#sidebar .profile-menu > a .profile-pic > img{width:47px;height:47px;border-radius:50%;border:3px solid rgba(0,0,0,0.14);box-sizing:content-box}#sidebar .profile-menu > a .profile-info{background:rgba(0,0,0,0.37);padding:7px 14px;color:#fff;margin-top:20px;position:relative}#sidebar .profile-menu > a .profile-info > i{font-size:19px;line-height:100%;position:absolute;right:5px;top:7px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}#sidebar .profile-menu .main-menu{display:none;margin:0;border-bottom:1px solid #E6E6E6}#sidebar .profile-menu:before,#sidebar .profile-menu:after{content:" ";display:table}#sidebar .profile-menu:after{clear:both}#sidebar .profile-menu:before,#sidebar .profile-menu:after{content:" ";display:table}#sidebar .profile-menu:after{clear:both}#sidebar .profile-menu.toggled .profile-info > i{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}#sidebar .main-menu{list-style:none;padding-left:0;margin:10px 0 0}#sidebar .main-menu > li > a{padding:14px 20px 14px 52px;display:block;color:#4C4C4C;font-weight:500;position:relative}#sidebar .main-menu > li > a:hover{color:#262626;background-color:#f7f7f7}#sidebar .main-menu > li > a > i{position:absolute;left:16px;font-size:20px;top:0;width:25px;text-align:center;padding:9px 0}#sidebar .main-menu > li.sub-menu > a:before,#sidebar .main-menu > li.sub-menu > a:after{position:absolute;right:10px;top:12px;color:#575757;font-family:'Material Design Iconic Font';font-size:17px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}#sidebar .main-menu > li.sub-menu > a:before{content:"\f0fb";-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}#sidebar .main-menu > li.sub-menu > a:after{content:"\f111";-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}#sidebar .main-menu > li.sub-menu > ul{list-style:none;background:#f7f7f7;display:none;padding:0;margin:0}#sidebar .main-menu > li.sub-menu > ul > li > a{color:#7f7f7f;padding:8px 20px 8px 50px;font-weight:500;display:block}#sidebar .main-menu > li.sub-menu > ul > li > a.active,#sidebar .main-menu > li.sub-menu > ul > li > a:hover{color:#000}#sidebar .main-menu > li.sub-menu > ul > li:first-child > a{padding-top:14px}#sidebar .main-menu > li.sub-menu > ul > li:last-child > a{padding-bottom:16px}#sidebar .main-menu > li.sub-menu.toggled > a:before{content:"\f0fb";-webkit-transform:scale(0) rotate(-90deg);-ms-transform:scale(0) rotate(-90deg);-o-transform:scale(0) rotate(-90deg);transform:scale(0) rotate(-90deg)}#sidebar .main-menu > li.sub-menu.toggled > a:after{content:"\f111";-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}#sidebar .main-menu > li.sub-menu.active > ul{display:block}#sidebar .main-menu > li.active > a{color:#262626;background-color:#F4F4F4}body:not(.sw-toggled) #sidebar{box-shadow:0 0 10px rgba(51,51,51,0.38)}@media (min-width: 1200px){body .sw-toggled #sidebar{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important;opacity:1!important;filter:alpha(opacity=100)!important;box-shadow:0 1px 1px rgba(0,0,0,0.15)}}@media (max-width: 1200px){body .sw-toggled #sidebar{box-shadow:0 0 10px rgba(51,51,51,0.38)}}@media (min-width: 1200px){.ie9 body .sw-toggled #sidebar{display:block}}.ie9 body:not(.sw-toggled) #sidebar:not(.toggled){display:none}input:active,input:focus{outline:0;box-shadow:none!important}.form-control{box-shadow:none;border:0;border-bottom:1px solid #e0e0e0}.form-control:active,.form-control:focus{border-bottom-color:#b4b4b4}.dropdown-menu{box-shadow:0 2px 10px rgba(0,0,0,0.2);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;margin-top:1px}.dropdown-menu > li > a{padding:8px 17px;-webkit-transition:background-color;-o-transition:background-color;transition:background-color;-webkit-transition-duration:300ms;transition-duration:300ms;font-family:roboto}.dropdown-menu.dropdown-menu-lg{width:300px}.dropdown-menu.dropdown-menu-sm{width:150px}.dropdown-menu.dropdown-menu-right{right:0;left:auto}.dropdown-menu.dm-icon > li > a > .md{line-height:100%;vertical-align:top;font-size:18px;width:28px}.dropdown-menu:not([class*="bgm-"]) > li > a{color:#4C4C4C}.dropdown-menu:not([class*="bgm-"]) > li > a:hover{color:#000}.dropdown-menu[class*="bgm-"] > li > a{font-weight:300;color:#fff}.dropdown:not([data-animation]) .dropdown-menu,.btn-group:not([data-animation]) .dropdown-menu{-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);opacity:0;filter:alpha(opacity=0);display:block}.dropdown .dropdown-menu:not([data-animation]).pull-right,.bootstrap-select .dropdown-menu:not([data-animation]).pull-right,.btn-group .dropdown-menu:not([data-animation]).pull-right,.dropdown .dropdown-menu:not([data-animation]).dropdown-menu-right,.bootstrap-select .dropdown-menu:not([data-animation]).dropdown-menu-right,.btn-group .dropdown-menu:not([data-animation]).dropdown-menu-right{-webkit-transform-origin:top right;-moz-transform-origin:top right;-ms-transform-origin:top right;transform-origin:top right}.dropdown .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right),.bootstrap-select .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right),.btn-group .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right){-webkit-transform-origin:top left;-moz-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left}.dropup .dropdown-menu:not([data-animation]).pull-right,.dropup .dropdown-menu:not([data-animation]).dropdown-menu-right{-webkit-transform-origin:bottom right;-moz-transform-origin:bottom right;-ms-transform-origin:bottom right;transform-origin:bottom right}.dropup .dropdown-menu:not([data-animation]):not(.pull-right):not(.dropdown-menu-right){-webkit-transform-origin:bottom left;-moz-transform-origin:bottom left;-ms-transform-origin:bottom left;transform-origin:bottom left}.dropdown.open .dropdown-menu:not([data-animation]),.dropup.open .dropdown-menu:not([data-animation]),.bootstrap-select.open .dropdown-menu:not([data-animation]),.btn-group.open .dropdown-menu:not([data-animation]){-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);opacity:1;filter:alpha(opacity=100)}.dropdown-header{padding:3px 17px;margin-top:10px;color:#b1b1b1;text-transform:uppercase;font-weight:400}.btn-group.open .dropdown-toggle{box-shadow:none}.listview{position:relative}.listview:not(.lv-lg):not(.lv-message) .lv-item{padding:10px 15px}@media (min-width: 480px){.listview.lv-lg .lv-item{padding:17px 35px 17px 25px}}@media (max-width: 767px){.listview.lv-lg .lv-item{padding:17px 35px 17px 20px}}.listview.lv-lg .lv-item:hover{background-color:#FFFFDB}.listview .lv-item{position:relative;display:block;-webkit-transition:background-color;-o-transition:background-color;transition:background-color;-webkit-transition-duration:300ms;transition-duration:300ms}.listview .lv-item .lv-small{font-size:12px;color:#A9A9A9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;width:100%}.listview .lv-item .checkbox,.listview .lv-item.media{margin:0}.listview .lv-item .lv-actions{position:absolute}@media (min-width: 480px){.listview .lv-item .lv-actions{right:15px;height:30px;margin-top:-15px;top:50%}}@media (max-width: 767px){.listview .lv-item .lv-actions{right:7px;top:10px}}.listview .lv-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.listview a.lv-item:hover{background:#ECF9FF}.listview [class*="lv-img"]{border-radius:50%}.listview .lv-img{width:50px;height:50px}.listview .lv-img-sm{width:35px;height:35px}.listview .lv-header{text-align:center;padding:15px 10px 13px;line-height:100%;text-transform:uppercase;border-bottom:1px solid #F0F0F0;font-weight:500;color:#4C4C4C}.listview .lv-header .actions{position:absolute;top:6px;right:8px;z-index:10}.listview .lv-header-alt{background:#f8f8f8;padding:12px;border-bottom:1px solid #EEE}.listview .lv-header-alt:before,.listview .lv-header-alt:after{content:" ";display:table}.listview .lv-header-alt:after{clear:both}.listview .lv-header-alt:before,.listview .lv-header-alt:after{content:" ";display:table}.listview .lv-header-alt:after{clear:both}.listview .lv-header-alt .lv-actions{z-index:3;float:right;margin-top:3px;position:relative}.listview .lv-header-alt .lv-actions > li > a{margin:0 3px}.listview .lvh-label{color:#818181;display:inline-block;margin:0;font-size:14px;font-weight:400;padding:0 10px;line-height:33px;vertical-align:middle}.listview .lv-footer{display:block;text-align:center;padding:7px 10px 8px;border-top:1px solid #F0F0F0;line-height:100%;font-size:11px;margin-top:20px;color:#828282}.listview a.lv-footer:hover{color:#050505}.listview.lv-bordered .lv-item:not(:last-child){border-bottom:1px solid #f0f0f0}.listview .lv-attrs{list-style:none;padding:0;margin:5px 0 0}.listview .lv-attrs > li{display:inline-block;padding:2px 10px 3px;font-size:12px;margin-top:5px;margin-right:2px}.listview .lv-attrs > li:not(.info):not(.primary):not(.warning):not(.danger){border:1px solid #dedede;background:#fff;color:#5e5e5e}.listview .lv-attrs > li.info{border:1px solid #00bcd4;background:#00bcd4;color:#fff}.listview .lv-attrs > li.primary{border:1px solid #2196f3;background:#2196f3;color:#fff}.listview .lv-attrs > li.warning{border:1px solid #ff9800;background:#ff9800;color:#fff}.listview .lv-attrs > li.danger{border:1px solid #f44336;background:#f44336;color:#fff}.listview .lv-attrs > li > a{display:block}.listview:not(.lv-message) .lv-title{color:#000}.card-body .lv-item{padding:12px 20px}.progress{box-shadow:none;border-radius:0;height:5px;margin-bottom:0}.progress .progress-bar{box-shadow:none}#action-center{position:fixed;background:#fff;padding:20px 0;width:260px;box-shadow:0 0 10px rgba(51,51,51,0.38);height:calc(100% - 65px);right:-280px;top:65px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;z-index:5;opacity:0;filter:alpha(opacity=0)}#action-center.toggled{right:0;opacity:1;filter:alpha(opacity=100)}[class*="chat-status"]{position:absolute;width:10px;height:10px;border-radius:50%;top:-3px;right:12px;border:2px solid #FFF}.chat-status-online{box-shadow:0 0 0 1px #1ec01e;background:#1ec01e}.chat-status-offline{box-shadow:0 0 0 1px #e73f3f;background:#e73f3f}.chat-status-busy{box-shadow:0 0 0 1px orange;background:orange}.ie9 #action-center{right:0}.ie9 #action-center:not(.toggled){display:none}.nav-tabs{list-style:none;padding:0;white-space:nowrap;margin:0;overflow:hidden;box-shadow:inset 0 -2px 0 0 #eee}.nav-tabs > li{display:inline-block;vertical-align:top}.nav-tabs > li > a{display:inline-block;color:#7a7a7a;text-transform:uppercase;position:relative;width:100%;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;font-weight:500}.nav-tabs > li > a:after{content:"";height:2px;position:absolute;width:100%;left:0;bottom:0;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}@media (min-width: 768px){.nav-tabs > li > a{padding:15px}}@media (max-width: 768px){.nav-tabs > li > a{padding:15px 8px}}.nav-tabs > li.active > a{color:#000}.nav-tabs > li.active > a:after{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.nav-tabs.nav-tabs-right{text-align:right}.nav-tabs.tn-justified > li{display:table-cell;width:1%;text-align:center}.nav-tabs.tn-icon > li .md{font-size:22px;line-height:100%;min-height:25px}.nav-tabs:not([data-tab-color]) > li > a:after{background:#2196f3}.nav-tabs[data-tab-color="green"] > li > a:after{background:#4caf50}.nav-tabs[data-tab-color="red"] > li > a:after{background:#f44336}.nav-tabs[data-tab-color="teal"] > li > a:after{background:#009688}.nav-tabs[data-tab-color="amber"] > li > a:after{background:#ffc107}.nav-tabs[data-tab-color="black"] > li > a:after{background:#000}.nav-tabs[data-tab-color="cyan"] > li > a:after{background:#00bcd4}.tab-content{padding:20px 0}.card{position:relative;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.15);margin-bottom:30px}.card .card-header{position:relative}@media screen and (min-width: 768px){.card .card-header:not(.ch-alt){padding:23px 26px}}@media screen and (max-width: 991px){.card .card-header:not(.ch-alt){padding:18px}}.card .card-header h2{margin:0;line-height:100%;font-size:17px;font-weight:400}.card .card-header h2 small{display:block;margin-top:8px;color:#AEAEAE;line-height:160%}@media screen and (min-width: 768px){.card .card-header.ch-alt{padding:23px 26px}}@media screen and (max-width: 991px){.card .card-header.ch-alt{padding:18px 18px 28px}}.card .card-header.ch-alt:not([class*="bgm-"]){background-color:#f7f7f7}.card .card-header[class*="bgm-"] h2,.card .card-header[class*="bgm-"] h2 small{color:#fff}.card .card-header .actions{position:absolute;right:10px;z-index:2;top:15px}.card .card-header .btn-float{right:25px;bottom:-23px;z-index:1}@media screen and (min-width: 768px){.card .card-body.card-padding{padding:23px 26px}}@media screen and (max-width: 991px){.card .card-body.card-padding{padding:18px}}.card .card-body.card-padding-sm{padding:15px}.chart-edge{margin:20px -8px 0 -10px;overflow:hidden}.chart-edge .flot-chart{bottom:-14px}.charts-row{margin-top:50px;margin-bottom:20px}.mini-charts-item{box-shadow:0 1px 1px rgba(0,0,0,0.15);position:relative;margin-bottom:30px}.mini-charts-item .chart{padding:15px;float:left}.mini-charts-item .chart.chart-pie{margin:0 20px}.mini-charts-item .count{overflow:hidden;color:rgba(255,255,255,0.9);padding:16px 12px}.mini-charts-item .count > h2{margin:0;line-height:100%;font-size:22px;font-weight:300;color:#fff}.mini-charts-item .count > small{margin-bottom:2px;display:block}.mini-charts-item .count > h2,.mini-charts-item .count > small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-charts-item > .clearfix,.mini-charts-item > .dl-horizontal dd,.mini-charts-item > .container,.mini-charts-item > .container-fluid,.mini-charts-item > .row,.mini-charts-item > .form-horizontal .form-group,.mini-charts-item > .btn-toolbar,.mini-charts-item > .btn-group-vertical > .btn-group,.mini-charts-item > .nav,.mini-charts-item > .navbar,.mini-charts-item > .navbar-header,.mini-charts-item > .navbar-collapse,.mini-charts-item > .pager,.mini-charts-item > .panel-body,.mini-charts-item > .modal-footer{position:relative;z-index:1}.mini-charts-item:before{-webkit-transition:width;-o-transition:width;transition:width;-webkit-transition-duration:500ms;transition-duration:500ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;content:"";width:113px;height:100%;background:rgba(0,0,0,0.1);position:absolute;left:0;top:0}.mini-charts-item:hover .count{color:#fff!important}.mini-charts-item:hover:before{width:100%}#jqstooltip{min-width:21px;min-height:23px;text-align:center;border:0;background:#fff;box-shadow:2px 2px 5px rgba(0,0,0,0.3);background-color:#fff}#jqstooltip .jqsfield{font-size:12px;font-weight:700;font-family:inherit;text-align:center;color:#333}#jqstooltip .jqsfield > span{display:none}.epc-item{box-shadow:0 1px 1px rgba(0,0,0,0.15);position:relative;margin-bottom:30px;padding:30px 20px;text-align:center}.easy-pie{display:inline-block;position:relative;padding:0 5px 10px}.easy-pie .percent{position:absolute;font-weight:300;width:100%;line-height:100%;left:0}.easy-pie .percent:after{content:"%"}.easy-pie.main-pie .percent{margin-top:49px;font-size:50px;text-align:center}.easy-pie.main-pie .percent:not([class*="c-"]){color:rgba(255,255,255,0.7)}.easy-pie.main-pie .percent:after{font-size:30px}.easy-pie.main-pie .pie-title{color:#fff}.easy-pie:not(.main-pie) .percent{font-size:26px;margin-top:37px}.easy-pie:not(.main-pie) .percent:after{font-size:20px}.easy-pie .pie-title{position:absolute;width:100%;text-align:center;bottom:-3px;left:0}#recent-items-chart{width:calc(100% + 19px);height:150px;margin:-20px -10px 0;bottom:-10px}[class*="flot-chart"]{width:100%;display:block}.flot-chart{height:200px}.flot-chart-pie{height:300px}@media (min-width: 768px){.flot-chart-pie{margin-bottom:20px}}.flot-tooltip,#flotTip{position:absolute;color:#333;display:none;font-size:12px;box-shadow:2px 2px 5px rgba(0,0,0,0.1);padding:3px 10px;background-color:#fff;z-index:99999}[class*="flc-"]{text-align:center;margin:10px 0 5px}[class*="flc-"] table{display:inline-block}[class*="flc-"] .legendColorBox > div{border:#fff!important}[class*="flc-"] .legendColorBox > div > div{border-radius:50%}[class*="flc-"] .legendLabel{padding:0 8px 0 3px}.dash-widget-item{position:relative;min-height:380px;margin-bottom:30px;box-shadow:0 1px 1px rgba(0,0,0,0.15)}.dash-widget-item .dash-widget-header{position:relative}.dash-widget-item .dash-widget-header .actions{display:none;position:absolute;right:4px;top:6px;padding:0;list-style:none}.dash-widget-item .dash-widget-header .actions > li{display:inline-block;vertical-align:baseline}.dash-widget-item .dash-widget-header .actions > li > a{color:#fff;font-size:20px}.dash-widget-item .dash-widget-footer{position:absolute;left:0;bottom:0;width:100%}.dash-widget-item .dash-widget-title{padding:12px 20px;position:absolute;width:100%;left:0;font-weight:300}.dash-widget-item:hover .dash-widget-header .actions{display:block}.btn{-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;border:0;text-transform:uppercase}.btn[class*="bgm-"]{color:#fff}.btn:not(.btn-link):not(.btn-float):not(.command-edit):not(.command-delete):not(.selectpicker){box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.btn:not(.btn-link):not(.btn-float):not(.command-edit):not(.command-delete):not(.selectpicker):hover{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15)}.btn .caret{margin-top:-3px}.btn-group:not(.bootstrap-select),.btn-group-vertical:not(.bootstrap-select){box-shadow:0 1px 4px 0 rgba(0,0,0,0.3)}.btn-group .btn,.btn-group-vertical .btn,.btn-group .btn:active,.btn-group-vertical .btn:active,.btn-group .btn:focus,.btn-group-vertical .btn:focus,.btn-group .btn-group,.btn-group-vertical .btn-group{box-shadow:none!important}.btn-group .btn,.btn-group-vertical .btn{margin:0}.btn-xs,.btn-group-xs > .btn{padding:2px 5px;font-size:11px;line-height:1.5;border-radius:2px}.btn-link{color:#797979;text-decoration:none;border-radius:2px}.btn-link:hover{color:#0a0a0a}.btn-link:hover,.btn-link:active,.btn-link:focus{text-decoration:none}.btn-inverse{color:#fff;background-color:#454545;border-color:transparent}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse.focus,.btn-inverse:active,.btn-inverse.active,.open > .dropdown-toggle.btn-inverse{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0)}.btn-inverse:active,.btn-inverse.active,.open > .dropdown-toggle.btn-inverse{background-image:none}.btn-inverse.disabled,.btn-inverse[disabled],fieldset[disabled] .btn-inverse,.btn-inverse.disabled:hover,.btn-inverse[disabled]:hover,fieldset[disabled] .btn-inverse:hover,.btn-inverse.disabled:focus,.btn-inverse[disabled]:focus,fieldset[disabled] .btn-inverse:focus,.btn-inverse.disabled.focus,.btn-inverse[disabled].focus,fieldset[disabled] .btn-inverse.focus,.btn-inverse.disabled:active,.btn-inverse[disabled]:active,fieldset[disabled] .btn-inverse:active,.btn-inverse.disabled.active,.btn-inverse[disabled].active,fieldset[disabled] .btn-inverse.active{background-color:#454545;border-color:transparent}.btn-inverse .badge{color:#454545;background-color:#fff}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse.focus,.btn-inverse:active,.open > .dropdown-toggle.btn-inverse{color:#fff;background-color:#454545;border-color:transparent}.btn-inverse:active,.btn-inverse.active,.open > .dropdown-toggle.btn-inverse{background-image:none}.btn-inverse.disabled,.btn-inverse[disabled],fieldset[disabled] .btn-inverse,.btn-inverse.disabled:hover,.btn-inverse[disabled]:hover,fieldset[disabled] .btn-inverse:hover,.btn-inverse.disabled:focus,.btn-inverse[disabled]:focus,fieldset[disabled] .btn-inverse:focus,.btn-inverse.disabled.focus,.btn-inverse[disabled].focus,fieldset[disabled] .btn-inverse.focus,.btn-inverse.disabled:active,.btn-inverse[disabled]:active,fieldset[disabled] .btn-inverse:active{background-color:#454545;border-color:transparent}.btn-inverse .badge{color:#454545;background-color:#fff}.btn-icon{border-radius:50%;width:40px;height:40px;padding:0;text-align:center;position:relative}.btn-icon:before{left:0;top:0;content:"";position:absolute;width:100%;height:100%;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);transform:scale3d(0,0,0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;background-color:#50%;z-index:0;border-radius:300ms;opacity:0;filter:alpha(opacity=0)}.btn-icon:hover:before{-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1;filter:alpha(opacity=100)}.btn-icon .md{font-size:17px}.btn-icon.btn-default:hover{background:#fff}.btn-icon-text > .md,.btn-icon-text > .socicon{font-size:15px;vertical-align:top;display:inline-block;margin-top:1px;line-height:100%;margin-right:5px}.btn-float{width:50px;height:50px;border-radius:50%;position:absolute!important;line-height:38px}.btn-float:hover{box-shadow:0 2px 7px rgba(0,0,0,0.18)}.btn-float i{font-size:23px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:500ms;transition-duration:500ms}.btn-float:hover i{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}.btn-float:not(.bgm-white):not(.bgm-gray) > i{color:#fff}.btn-float.bgm-white > i,.btn-float.bgm-gray > i{color:#333}.open .btn{outline:none!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}.open .btn:focus,.open .btn:active{outline:none!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}.checkbox label,.radio label{padding-left:30px;position:relative}.checkbox input,.radio input{top:0;left:0;margin-left:0!important;z-index:1;cursor:pointer;opacity:0;filter:alpha(opacity=0);margin-top:0}.checkbox .input-helper:before,.radio .input-helper:before,.checkbox .input-helper:after,.radio .input-helper:after{-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;position:absolute;content:""}.checkbox .input-helper:before,.radio .input-helper:before{left:0;border:1px solid #ccc}.checkbox.disabled,.radio.disabled{opacity:.6;filter:alpha(opacity=60)}.checkbox input{width:17px;height:17px}.checkbox input:checked + .input-helper:before{-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.checkbox input:checked + .input-helper:after{-webkit-transform:scale(1) rotate(-50deg);-ms-transform:scale(1) rotate(-50deg);-o-transform:scale(1) rotate(-50deg);transform:scale(1) rotate(-50deg);opacity:1;filter:alpha(opacity=100)}.checkbox .input-helper:before{top:0;width:17px;height:17px}.checkbox .input-helper:after{opacity:0;filter:alpha(opacity=0);-webkit-transform:scale(0) rotate(80deg);-ms-transform:scale(0) rotate(80deg);-o-transform:scale(0) rotate(80deg);transform:scale(0) rotate(80deg);width:22px;height:9px;border-bottom:2px solid #009688;border-left:2px solid #009688;border-bottom-left-radius:2px;left:-1px;top:1px}.has-error .checkbox .input-helper:before{border-color:#f99d97}.has-error .checkbox .input-helper:after{border-bottom-color:#f77066;border-left-color:#f77066}.has-success .checkbox .input-helper:before{border-color:#92cf94}.has-success .checkbox .input-helper:after{border-bottom-color:#6ec071;border-left-color:#6ec071}.has-warning .checkbox .input-helper:before{border-color:#ffdb6d}.has-warning .checkbox .input-helper:after{border-bottom-color:#ffce3a;border-left-color:#ffce3a}.radio input{width:19px;height:19px}.radio input:checked + .input-helper:after{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.radio .input-helper:before{top:-1px;width:19px;height:19px;border-radius:50%}.radio .input-helper:after{width:11px;height:11px;background:#009688;border-radius:50%;top:3px;left:4px;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.checkbox-inline,.radio-inline{vertical-align:top;margin-top:0;padding-left:25px}html:not(.ie9) .select{position:relative}html:not(.ie9) .select:before{position:absolute;top:0;content:"";height:calc(100% - 2px);width:30px;background-color:#FFF;background-position:right calc(100% - 7px);background-repeat:no-repeat;background-image:url(img/select.png);pointer-events:none;z-index:5}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){html:not(.ie9) .select:before{background-image:url(img/select@2x.png);background-size:12px 12px}}html:not(.ie9) .select:not(.fg-line):before{right:0}html:not(.ie9) .select.fg-line:before{right:10px}.input-group-addon{border-width:0 0 1px}.fg-line{position:relative;vertical-align:top}.fg-line:not(.form-group){display:inline-block;width:100%}.fg-line .form-control{resize:none}.fg-line .form-control:not(:disabled){color:#000}.fg-line .form-control:disabled{color:#9d9d9d;background:transparent}.fg-line:not(.disabled):after,.fg-line:not(.readonly):after{position:absolute;z-index:3;bottom:0;left:0;height:2px;width:0;content:"";-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}.fg-line:not([class*=has-]):after{background:#2196f3}.fg-line.input-toggled:after{width:100%}.fg-line.readonly .form-control{color:#9d9d9d;background:transparent}.fg-line.fg-toggled:after{width:100%}.fg-line.has-success:after{background:#4caf50}.fg-line.has-warning:after{background:#ffc107}.fg-line.has-error:after{background:#f44336}.has-success .fg-line:after{background:#4caf50}.has-warning .fg-line:after{background:#ffc107}.has-error .fg-line:after{background:#f44336}.fg-float{margin-top:2px;position:relative}.fg-float .form-control{position:relative;background:transparent;z-index:1}.fg-float .form-control::-moz-placeholder{color:#fff;opacity:1}.fg-float .form-control:-ms-input-placeholder{color:#fff}.fg-float .form-control::-webkit-input-placeholder{color:#fff}.fg-float .fg-label{-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:200ms;transition-duration:200ms;position:absolute;top:5px;font-weight:400;color:#959595;pointer-events:none;z-index:0;left:0;white-space:nowrap}.fg-float .input-lg + .fg-label{font-size:17px}.fg-float .input-sm + .fg-label{font-size:11px}.fg-float .fg-toggled + .fg-label{top:-20px;font-size:11px}.form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border-radius:0}.form-control:focus{box-shadow:none}.form-control.auto-size{padding-top:6px}.form-group{margin-bottom:20px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#4caf50}.has-success .form-control{border-color:#b5dfb7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#92cf94;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fcfefc;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fcfefc}.has-success .input-group-addon{color:#4caf50;border-color:#b5dfb7;background-color:#fff}.has-success .form-control-feedback{color:#4caf50}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ff9800}.has-warning .form-control{border-color:#ffd699;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#ffc166;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ff9800;border-color:#ffd699;background-color:#fff}.has-warning .form-control-feedback{color:#ff9800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#f44336}.has-error .form-control{border-color:#fccbc7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#f99d97;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#f44336;border-color:#fccbc7;background-color:#fff}.has-error .form-control-feedback{color:#f44336}.has-success .form-control,.has-warning .form-control,.has-error .form-control{box-shadow:none}.form-control-feedback{font-size:20px}.control-label{font-weight:400}.input-group .input-group-addon{vertical-align:bottom;padding:0}.input-group .input-group-addon .md{line-height:100%}.input-group:not(.input-group-lg):not(.input-group-sm) .input-group-addon:not(.last){padding-right:10px}.input-group:not(.input-group-lg):not(.input-group-sm) .input-group-addon.last{padding-left:10px}.input-group:not(.input-group-lg):not(.input-group-sm) .input-group-addon .md{font-size:23px}.input-group.input-group-lg .input-group-addon:not(.last){padding-right:15px}.input-group.input-group-lg .input-group-addon.last{padding-left:15px}.input-group.input-group-lg .input-group-addon .md{font-size:30px}.input-group.input-group-sm .input-group-addon:not(.last){padding-right:5px}.input-group.input-group-sm .input-group-addon.last{padding-left:5px}.input-group.input-group-sm .input-group-addon .md{font-size:18px}.input-group > [class*="col-"]{padding:0}.input-group .fg-line{padding:0 10px}.input-group .fg-line:after{left:10px}.input-group .fg-line.fg-toggled:after{width:calc(100% - 20px)}.toggle-switch{display:inline-block;vertical-align:top;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.toggle-switch .ts-label{display:inline-block;margin:0 20px 0 0;vertical-align:top;-webkit-transition:color .56s cubic-bezier(0.4,0,0.2,1);transition:color .56s cubic-bezier(0.4,0,0.2,1)}.toggle-switch .ts-helper{display:inline-block;position:relative;width:40px;height:16px;border-radius:8px;background:rgba(0,0,0,0.26);-webkit-transition:background .28s cubic-bezier(0.4,0,0.2,1);transition:background .28s cubic-bezier(0.4,0,0.2,1);vertical-align:middle;cursor:pointer}.toggle-switch .ts-helper:before{content:'';position:absolute;top:-4px;left:-4px;width:24px;height:24px;background:#fafafa;box-shadow:0 2px 8px rgba(0,0,0,0.28);border-radius:50%;webkit-transition:left .28s cubic-bezier(0.4,0,0.2,1),background .28s cubic-bezier(0.4,0,0.2,1),box-shadow .28s cubic-bezier(0.4,0,0.2,1);transition:left .28s cubic-bezier(0.4,0,0.2,1),background .28s cubic-bezier(0.4,0,0.2,1),box-shadow .28s cubic-bezier(0.4,0,0.2,1)}.toggle-switch:not(.disabled) .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(128,128,128,0.1)}.toggle-switch input{position:absolute;z-index:1;width:46px;margin:0 0 0 -4px;height:24px;opacity:0;filter:alpha(opacity=0);cursor:pointer}.toggle-switch input:checked + .ts-helper:before{left:20px}.toggle-switch:not([data-ts-color]) input:not(:disabled):checked + .ts-helper{background:rgba(0,150,136,0.5)}.toggle-switch:not([data-ts-color]) input:not(:disabled):checked + .ts-helper:before{background:#009688}.toggle-switch:not([data-ts-color]) input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(0,150,136,0.2)}.toggle-switch.disabled{opacity:.6;filter:alpha(opacity=60)}.toggle-switch[data-ts-color="red"] input:not(:disabled):checked + .ts-helper{background:rgba(244,67,54,0.5)}.toggle-switch[data-ts-color="red"] input:not(:disabled):checked + .ts-helper:before{background:#f44336}.toggle-switch[data-ts-color="red"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(244,67,54,0.2)}.toggle-switch[data-ts-color="blue"] input:not(:disabled):checked + .ts-helper{background:rgba(33,150,243,0.5)}.toggle-switch[data-ts-color="blue"] input:not(:disabled):checked + .ts-helper:before{background:#2196f3}.toggle-switch[data-ts-color="blue"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(33,150,243,0.2)}.toggle-switch[data-ts-color="amber"] input:not(:disabled):checked + .ts-helper{background:rgba(255,193,7,0.5)}.toggle-switch[data-ts-color="amber"] input:not(:disabled):checked + .ts-helper:before{background:#ffc107}.toggle-switch[data-ts-color="amber"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(255,193,7,0.2)}.toggle-switch[data-ts-color="purple"] input:not(:disabled):checked + .ts-helper{background:rgba(156,39,176,0.5)}.toggle-switch[data-ts-color="purple"] input:not(:disabled):checked + .ts-helper:before{background:#9c27b0}.toggle-switch[data-ts-color="purple"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(156,39,176,0.2)}.toggle-switch[data-ts-color="pink"] input:not(:disabled):checked + .ts-helper{background:rgba(233,30,99,0.5)}.toggle-switch[data-ts-color="pink"] input:not(:disabled):checked + .ts-helper:before{background:#e91e63}.toggle-switch[data-ts-color="pink"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(233,30,99,0.2)}.toggle-switch[data-ts-color="lime"] input:not(:disabled):checked + .ts-helper{background:rgba(205,220,57,0.5)}.toggle-switch[data-ts-color="lime"] input:not(:disabled):checked + .ts-helper:before{background:#cddc39}.toggle-switch[data-ts-color="lime"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(205,220,57,0.2)}.toggle-switch[data-ts-color="cyan"] input:not(:disabled):checked + .ts-helper{background:rgba(0,188,212,0.5)}.toggle-switch[data-ts-color="cyan"] input:not(:disabled):checked + .ts-helper:before{background:#00bcd4}.toggle-switch[data-ts-color="cyan"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(0,188,212,0.2)}.toggle-switch[data-ts-color="green"] input:not(:disabled):checked + .ts-helper{background:rgba(76,175,80,0.5)}.toggle-switch[data-ts-color="green"] input:not(:disabled):checked + .ts-helper:before{background:#4caf50}.toggle-switch[data-ts-color="green"] input:not(:disabled):checked + .ts-helper:active:before{box-shadow:0 2px 8px rgba(0,0,0,0.28),0 0 0 20px rgba(76,175,80,0.2)}.pagination{border-radius:0}.pagination > li{margin:0 2px;display:inline-block;vertical-align:top}.pagination > li > a,.pagination > li > span{border-radius:50%!important;padding:0;width:40px;height:40px;line-height:38px;text-align:center;font-size:14px;z-index:1;position:relative}.pagination > li > a > .md,.pagination > li > span > .md{font-size:22px}.pagination > li > a:before,.pagination > li > span:before{left:0;top:0;content:"";position:absolute;width:100%;height:100%;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);transform:scale3d(0,0,0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,0.1);z-index:0;border-radius:50%;opacity:0;filter:alpha(opacity=0)}.pagination > li > a:hover:before,.pagination > li > span:hover:before{-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1;filter:alpha(opacity=100)}.pagination > li.disabled{opacity:.5;filter:alpha(opacity=50)}.lv-pagination{width:100%;text-align:center;padding:40px 0;border-top:1px solid #F0F0F0;margin-top:0;margin-bottom:0}.popover{box-shadow:0 2px 30px rgba(0,0,0,0.2)}.popover-title{border-bottom:0;padding:15px;font-size:12px;text-transform:uppercase}.popover-content{padding:0 15px 15px}.popover-content p{margin-bottom:0}.fw-container .tab-content{padding:25px 0}.fw-container .fw-footer{text-align:center;margin:30px 0 0;width:100%;border-top:2px solid #eee;padding:15px 0}.alert{padding-left:30px;font-size:13px}.alert span{cursor:pointer}.alert:not(.alert-dismissible){padding-right:30px}.alert.alert-dismissable{padding-right:44px}.alert-inverse{background:rgba(51,51,51,0.9);box-shadow:0 0 5px rgba(51,51,51,0.5);color:#fff}.alert-inverse a{color:#fff}.growl-animated{border:0;color:#fff}.growl-animated.alert-info{background:rgba(33,150,243,0.8);box-shadow:0 0 5px rgba(33,150,243,0.5)}.growl-animated.alert-success{background:rgba(76,175,80,0.8);box-shadow:0 0 5px rgba(76,175,80,0.5)}.growl-animated.alert-warning{background:rgba(255,152,0,0.8);box-shadow:0 0 5px rgba(255,152,0,0.5)}.growl-animated.alert-danger{background:rgba(244,67,54,0.8);box-shadow:0 0 5px rgba(244,67,54,0.5)}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#e0e0e0;box-shadow:0 0 6px #EAEAEA}.lightbox .lightbox-item{position:relative}.lightbox .lightbox-item > img{width:100%}.lightbox .lightbox-item:before{left:0;top:0;content:"";position:absolute;width:100%;height:100%;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);transform:scale3d(0,0,0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,0.1);z-index:0;border-radius:0;opacity:0;filter:alpha(opacity=0)}.lightbox .lightbox-item:hover:before{-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1;filter:alpha(opacity=100)}.lightbox .lightbox-item:hover{cursor:pointer}.lightbox [data-src]:before,.lightbox [data-src]:after{content:" ";display:table}.lightbox [data-src]:after{clear:both}.lightbox [data-src]:before,.lightbox [data-src]:after{content:" ";display:table}.lightbox [data-src]:after{clear:both}.lightbox .lightbox-item:not(.p-item){position:relative}.carousel .carousel-control{-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;opacity:0;filter:alpha(opacity=0)}.carousel .carousel-control .md{position:absolute;top:50%;left:50%;line-height:100%}@media screen and (min-width: 768px){.carousel .carousel-control .md{font-size:60px;width:60px;height:60px;margin-top:-30px;margin-left:-30px}}@media screen and (max-width: 991px){.carousel .carousel-control .md{width:24px;height:24px;margin-top:-12px;margin-left:-12px}}.carousel:hover .carousel-control{opacity:1;filter:alpha(opacity=100)}.carousel .carousel-caption{background:rgba(0,0,0,0.6);left:0;right:0;bottom:0;width:100%;padding-bottom:50px}.carousel .carousel-caption > h3{color:#fff;margin:0 0 5px;font-weight:300}.carousel .carousel-caption > p{margin:0}@media screen and (max-width: 991px){.carousel .carousel-caption{display:none}}.carousel .carousel-indicators{bottom:10px;margin:0;left:0;bottom:0;width:100%;padding:0 0 6px;background:rgba(0,0,0,0.6)}.carousel .carousel-indicators li{border-radius:0;width:15px;border:0;background:#fff;height:3px;margin:0;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms}.carousel .carousel-indicators li.active{width:25px;height:3px;background:#ff9800}.modal .modal-content{box-shadow:0 5px 20px rgba(0,0,0,0.31);border-radius:3px;border:0}.modal .modal-header{padding:23px 26px}.modal .modal-body{padding:0 26px 10px}.modal .modal-footer .btn-link{font-size:14px;color:#000;font-weight:500}.modal .modal-footer .btn-link:hover{background-color:#eee}.modal:not([data-modal-color]) .modal-footer .btn-link{font-weight:500}.modal:not([data-modal-color]) .modal-footer .btn-link:hover{background-color:#eee}.modal[data-modal-color]{color:#fff}.modal[data-modal-color] .modal-title,.modal[data-modal-color] .modal-footer .btn-link{color:#fff}.modal[data-modal-color] .modal-footer{background:rgba(0,0,0,0.1)}.modal[data-modal-color] .modal-backdrop{background:#fff}.modal[data-modal-color] .modal-footer .btn-link{font-weight:400}.modal[data-modal-color] .modal-footer .btn-link:hover{background-color:rgba(0,0,0,0.1)}.modal[data-modal-color="blue"] .modal-content{background:#2196f3}.modal[data-modal-color="cyan"] .modal-content{background:#00bcd4}.modal[data-modal-color="green"] .modal-content{background:#4caf50}.modal[data-modal-color="lightgreen"] .modal-content{background:#8bc34a}.modal[data-modal-color="lightblue"] .modal-content{background:#03a9f4}.modal[data-modal-color="amber"] .modal-content{background:#ffc107}.modal[data-modal-color="teal"] .modal-content{background:#009688}.modal[data-modal-color="orange"] .modal-content{background:#ff9800}.modal[data-modal-color="bluegray"] .modal-content{background:#607d8b}.modal[data-modal-color="red"] .modal-content{background:#f44336}.modal-backdrop{z-index:10}.panel{box-shadow:none;border:0}.panel-heading{padding:0}.panel-title > a{padding:10px 15px;display:block;font-size:13px}.panel-collapse .panel-heading{position:relative}.panel-collapse .panel-heading .panel-title > a{padding:8px 5px 16px 30px;color:#000;position:relative}.panel-collapse .panel-heading .panel-title > a:after,.panel-collapse .panel-heading .panel-title > a:before{position:absolute;bottom:0;left:0;height:2px;width:100%;content:""}.panel-collapse .panel-heading .panel-title > a:after{-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.panel-collapse .panel-heading:not(.active) .panel-title > a:before{background:#eee}.panel-collapse .panel-heading:before,.panel-collapse .panel-heading:after{font-family:'Material Design Iconic Font';font-size:17px;position:absolute;left:0;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;top:4px}.panel-collapse .panel-heading:before{content:"\f0fb";-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.panel-collapse .panel-heading:after{-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);content:"\f111"}.panel-collapse .panel-heading.active .panel-title > a:after{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.panel-collapse .panel-heading.active:before{-webkit-transform:scale(0) rotate(-90deg);-ms-transform:scale(0) rotate(-90deg);-o-transform:scale(0) rotate(-90deg);transform:scale(0) rotate(-90deg)}.panel-collapse .panel-heading.active:after{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.panel-collapse .panel-body{border-top:0!important;padding-left:5px;padding-right:5px}.panel-group:not([data-collapse-color]) .panel-collapse .panel-heading.active .panel-title > a:after{background:#2196f3}.panel-group[data-collapse-color="red"] .panel-collapse .panel-heading.active .panel-title > a:after{background:#f44336}.panel-group[data-collapse-color="green"] .panel-collapse .panel-heading.active .panel-title > a:after{background:#4caf50}.panel-group[data-collapse-color="amber"] .panel-collapse .panel-heading.active .panel-title > a:after{background:#ffc107}.panel-group[data-collapse-color="teal"] .panel-collapse .panel-heading.active .panel-title > a:after{background:#009688}.panel-group[data-collapse-color="black"] .panel-collapse .panel-heading.active .panel-title > a:after{background:#000}.panel-group[data-collapse-color="cyan"] .panel-collapse .panel-heading.active .panel-title > a:after{background:#00bcd4}.tooltip-inner{border-radius:1px;padding:3px 10px 5px}.breadcrumb{border-bottom:1px solid #E5E5E5;border-radius:0}.breadcrumb > li > a{color:#A9A9A9}.breadcrumb > li > a:hover{color:#7c7c7c}@media (min-width: 768px){body:not(.sw-toggled) .breadcrumb{padding:10px 33px 11px}}@media (min-width: 1199px){body .sw-toggled .breadcrumb{padding:10px 33px 11px 280px}}#messages-main{position:relative}#messages-main:before,#messages-main:after{content:" ";display:table}#messages-main:after{clear:both}#messages-main:before,#messages-main:after{content:" ";display:table}#messages-main:after{clear:both}#messages-main .ms-block{padding:23px 20px 0}#messages-main .ms-menu{position:absolute;left:0;top:0;background:#F8F8F8;border-right:1px solid #EEE;padding-bottom:50px;height:100%;width:240px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms}@media (max-width: 767px){#messages-main .ms-menu{height:calc(100% - 58px);-webkit-transform:translate3d(-240px,58px,0);transform:translate3d(-240px,58px,0);opacity:0;filter:alpha(opacity=0);z-index:1}#messages-main .ms-menu.toggled{-webkit-transform:translate3d(0,58px,0);transform:translate3d(0,58px,0);opacity:1;filter:alpha(opacity=100)}}#messages-main .ms-menu .lv-item{padding-left:20px;padding-right:20px}#messages-main .ms-menu .lv-item.active{background:#fff}#messages-main .ms-menu .lv-item:not(.active):hover{background:#F2F2F2;cursor:pointer}@media (min-width: 768px){#messages-main .ms-body{padding-left:240px}}@media (max-width: 767px){#messages-main .ms-body{overflow:hidden}}#messages-main .ms-user:before,#messages-main .ms-user:after{content:" ";display:table}#messages-main .ms-user:after{clear:both}#messages-main .ms-user:before,#messages-main .ms-user:after{content:" ";display:table}#messages-main .ms-user:after{clear:both}#messages-main .ms-user > img{border-radius:50%;width:40px;float:left}#messages-main .ms-user > div{overflow:hidden;padding:7px 5px 7px 15px;font-size:11px}#messages-main #ms-compose{position:fixed;bottom:120px;z-index:1;right:30px;box-shadow:0 0 4px rgba(0,0,0,0.14),0 4px 8px rgba(0,0,0,0.28)}#ms-menu-trigger{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;float:left;margin:1px 0 0 -7px}@media (min-width: 768px){#ms-menu-trigger{display:none}}#ms-menu-trigger .line-wrap .line{background-color:#717171}.lv-message .lv-item{padding:20px}.lv-message .lv-item.right{text-align:right}.lv-message .lv-item.right .lv-avatar{margin-right:0;margin-left:15px}.lv-message .lv-item:not(.right) .ms-item{background:#ffc107;color:#fff}.lv-message .lv-item.right .ms-item{background:#eee}.lv-avatar{width:35px;height:35px;border-radius:50%;color:#FFF;text-align:center;line-height:34px;font-size:15px;margin-right:15px;padding:0!important;text-transform:uppercase}.lv-avatar > img{width:35px;height:35px;border-radius:50%;vertical-align:top}.ms-item{padding:13px 19px 15px;border-radius:2px;display:inline-block}@media (min-width: 768px){.ms-item{max-width:70%}}.ms-date{display:block;color:#B3B3B3;margin-top:7px}.ms-date > i{font-size:14px;vertical-align:bottom;line-height:100%}.ms-reply{box-shadow:0 -20px 20px -5px #fff;position:relative;margin:0!important}.ms-reply textarea{width:100%;font-size:13px;border:0;padding:10px 8px;resize:none;height:60px}.ms-reply button{position:absolute;top:0;right:0;border:0;height:100%;width:60px;font-size:25px;background:#F5F5F5;color:#2196f3}.ms-reply button:hover{background:#f2f2f2}.four-zero-content{background:#fff;padding:20px}.four-zero-content:before{height:50%;width:100%;position:absolute;top:0;left:0;background:#EDECEC;content:""}.four-zero{background:#00bcd4;box-shadow:0 1px 11px rgba(0,0,0,0.27);border-radius:2px;position:absolute;top:50%;margin-top:-150px;color:#fff;text-align:center;padding:15px;height:300px;width:500px;left:50%;margin-left:-250px}.four-zero h2{font-size:130px}@media (max-width: 767px){.four-zero{width:calc(100% - 40px);left:20px;margin-left:0;height:260px;margin-top:-130px}.four-zero h2{font-size:90px}}.four-zero h2{line-height:100%;color:#fff;font-weight:100}.four-zero small{display:block;font-size:26px;margin-top:-10px}.four-zero footer{background:rgba(0,0,0,0.13);position:absolute;left:0;bottom:0;width:100%;padding:10px}.four-zero footer > a{font-size:21px;display:inline-block;color:#FFF;margin:0 1px;line-height:40px;width:40px;height:40px;background:rgba(0,0,0,0.09);border-radius:50%;text-align:center;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}.four-zero footer > a:hover{background:rgba(0,0,0,0.2)}.login-content{overflow:hidden;height:100%}.login-content .lc-block{background:#fff;box-shadow:0 1px 11px rgba(0,0,0,0.27);border-radius:2px;padding:35px 55px;width:500px;display:inline-block;margin-top:-60px;vertical-align:middle;position:relative}@media (max-width: 767px){.login-content .lc-block{padding:15px 35px 25px 20px;width:calc(100% - 60px)}}.login-content .lc-block .checkbox{margin:5px 0 0 42px;text-align:left}.login-content .lc-block .btn-login{position:fixed;top:50%;margin-top:-25px;right:-25px;box-shadow:0 0 4px rgba(0,0,0,0.14),0 4px 8px rgba(0,0,0,0.28)}.login-content .lc-block:not(.toggled){display:none}.login-content .lc-block.toggled{-webkit-animation-name:fadeInRight;animation-name:fadeInRight;-webkit-animation-duration:200ms;animation-duration:200ms;-webkit-animation-fill-mode:both;animation-fill-mode:both;z-index:10}.login-content .login-navigation{list-style:none;padding:0;margin:0;position:absolute;width:100%;text-align:center;left:0;bottom:-45px}.login-content .login-navigation > li{display:inline-block;margin:0 2px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:150ms;transition-duration:150ms;cursor:pointer;vertical-align:top;color:#fff;line-height:16px;min-width:16px;min-height:16px;text-transform:uppercase;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.login-content .login-navigation > li > span{opacity:0;filter:alpha(opacity=0)}.login-content .login-navigation > li:not(:hover){font-size:0;border-radius:100%}.login-content .login-navigation > li:hover{border-radius:10px;padding:0 5px;font-size:8px}.login-content .login-navigation > li:hover > span{opacity:1;filter:alpha(opacity=100)}body .login-content{text-align:center}body .login-content:after{content:"";vertical-align:middle;display:inline-block;width:1px;height:100%}body .login-content:before{height:50%;width:100%;position:absolute;top:0;left:0;background:#00bcd4;content:"";z-index:0}#profile-main{min-height:500px;position:relative}#profile-main .pm-overview{overflow-y:auto}@media (min-width: 1200px){#profile-main .pm-overview{width:300px}}@media (min-width: 768px) and (max-width: 1200px){#profile-main .pm-overview{width:250px}}@media (min-width: 768px){#profile-main .pm-overview{position:absolute;left:0;top:0;height:100%;background:#f8f8f8;border-right:1px solid #eee}}@media (max-width: 767px){#profile-main .pm-overview{width:100%;background:#333;text-align:center}}@media (min-width: 1200px){#profile-main .pm-body{padding-left:300px}}@media (min-width: 768px) and (max-width: 1200px){#profile-main .pm-body{padding-left:250px}}@media (max-width: 767px){#profile-main .pm-body{padding-left:0}}#profile-main .pmo-pic{position:relative;margin:20px}@media (min-width: 768px){#profile-main .pmo-pic img{width:100%;border-radius:2px 2px 0 0}}@media (max-width: 767px){#profile-main .pmo-pic img{width:180px;display:inline-block;height:180px;border-radius:50%;border:4px solid #fff;box-shadow:0 8px 17px rgba(0,0,0,0.2),0 6px 20px rgba(0,0,0,0.19)}}#profile-main .pmo-pic .pmo-stat{border-radius:0 0 2px 2px;color:#fff;text-align:center;padding:30px 5px 0}@media (min-width: 768px){#profile-main .pmo-pic .pmo-stat{background:#ffc107;padding-bottom:15px}}#profile-main .pmo-pic .pmop-edit{position:absolute;top:0;left:0;color:#fff;background:rgba(0,0,0,0.38);text-align:center;padding:10px 10px 7px;-webkit-transition:opacity;-o-transition:opacity;transition:opacity;-webkit-transition-duration:250ms;transition-duration:250ms}#profile-main .pmo-pic .pmop-edit:hover{background:rgba(0,0,0,0.8)}#profile-main .pmo-pic .pmop-edit i{font-size:18px;vertical-align:middle;margin-top:-3px}@media (min-width: 768px){#profile-main .pmo-pic .pmop-edit{width:100%;opacity:0;filter:alpha(opacity=0)}#profile-main .pmo-pic .pmop-edit i{margin-right:4px}}#profile-main .pmo-pic:hover .pmop-edit{opacity:1;filter:alpha(opacity=100)}#profile-main .pmo-pic .pmop-message{position:absolute;bottom:27px;left:50%;margin-left:-25px}#profile-main .pmo-pic .pmop-message .dropdown-menu{padding:5px 0 55px;left:-90px;width:228px;height:150px;top:-74px;-webkit-transform-origin:center;-moz-transform-origin:center;-ms-transform-origin:center;transform-origin:center}#profile-main .pmo-pic .pmop-message .dropdown-menu textarea{width:100%;height:95px;border:0;resize:none;padding:10px 19px}#profile-main .pmo-pic .pmop-message .dropdown-menu button{position:absolute;bottom:5px;left:93px}#profile-main .pmb-block{margin-bottom:20px}@media (min-width: 1200px){#profile-main .pmb-block{padding:40px 42px 0}}@media (max-width: 1199px){#profile-main .pmb-block{padding:30px 20px 0}}#profile-main .pmb-block:last-child{margin-bottom:50px}#profile-main .pmb-block .pmbb-header{margin-bottom:25px;position:relative}#profile-main .pmb-block .pmbb-header .actions{position:absolute;top:-2px;right:0}#profile-main .pmb-block .pmbb-header h2{margin:0;font-weight:100;font-size:20px}#profile-main .pmb-block .pmbb-edit{position:relative;z-index:1;display:none}#profile-main .pmb-block .pmbb-edit,#profile-main .pmb-block .pmbb-view{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}#profile-main .pmb-block.toggled .pmbb-edit{display:block}#profile-main .pmb-block.toggled .pmbb-view{display:none}#profile-main .pmo-block{padding:25px}#profile-main .pmo-block > h2{font-size:16px;margin:0 0 15px}#profile-main .pmo-items .pmob-body{padding:0 10px}#profile-main .pmo-items a{display:block;padding:4px}#profile-main .pmo-items a img{width:100%}#profile-main .pmo-contact ul{list-style:none;margin:0;padding:0}#profile-main .pmo-contact ul li{position:relative;padding:8px 0 8px 35px}#profile-main .pmo-contact ul li i{font-size:18px;vertical-align:top;line-height:100%;position:absolute;left:0}@media (max-width: 767px){.c-timeline{background:#edecec;box-shadow:none}.c-timeline .nav-tabs{background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.15)}}.timeline{position:relative}@media (min-width: 768px){.timeline{padding:50px;padding-left:100px}}@media (max-width: 767px){.timeline{margin-top:30px}}.t-view{border:1px solid #eee;position:relative;margin-bottom:35px}@media (max-width: 767px){.t-view{background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.15)}}.t-view .tv-header{padding:16px 18px;border-bottom:1px solid #eee;background:#F9F9F9}.t-view .tv-header .actions{position:absolute;top:5px;right:10px}.t-view .tv-body{padding:23px 25px}.t-view .tv-body .tvb-lightbox{margin:0 -8px 15px}.t-view .tv-body .tvb-lightbox [data-src]{padding:0 5px;margin-bottom:5px}.t-view .tvh-user{display:block}.t-view .tvh-user img{width:46px;height:46px;border-radius:50%}.t-view:before{position:absolute;width:40px;height:40px;border-radius:50%;left:-70px;top:0;border:3px solid #FFF;text-align:center;font-size:20px;line-height:34px;color:#FFF;font-family:'Material Design Iconic Font';z-index:1}.t-view:after{content:"";position:absolute;top:0;left:-50px;width:1px;height:calc(100% + 37px)}.t-view[data-tv-type="text"]:before{content:"\f11b";background:#00bcd4;box-shadow:0 0 0 1px #00bcd4}.t-view[data-tv-type="text"]:after{background:#00bcd4}.t-view[data-tv-type="image"]:before{content:"\f224";background:#4caf50;box-shadow:0 0 0 1px #4caf50}.t-view[data-tv-type="image"]:after{background:#4caf50}.t-view[data-tv-type="video"]:before{content:"\f0cc";background:#ffc107;box-shadow:0 0 0 1px #ffc107}.t-view[data-tv-type="video"]:after{background:#ffc107}.t-view .tvb-stats{list-style:none;padding:0;margin:10px 0 20px}.t-view .tvb-stats > li{display:inline-block;padding:5px 10px 6px;border:1px solid #ccc;margin-right:2px}.t-view .tvb-stats > li i{font-size:15px;line-height:100%;vertical-align:top;margin-top:2px}.t-view .tvb-stats > li.tvbs-comments{border-color:#4caf50;color:#4caf50}.t-view .tvb-stats > li.tvbs-likes{border-color:#03a9f4;color:#03a9f4}.t-view .tvb-stats > li.tvbs-views{border-color:#ff9800;color:#ff9800}.tv-comments .tvc-lists{padding:0;list-style:none;margin:0}.tv-comments .tvc-lists > li{padding:15px 20px;margin:0;border-top:1px solid #eee}.tvc-more{color:#333;display:block;margin-bottom:-10px}.tvc-more:hover{color:#000}.tvc-more i{vertical-align:middle;margin-right:5px}.p-header{position:relative;margin:0 -7px}.p-header .actions{position:absolute;top:-18px;right:0}.p-menu{list-style:none;padding:0 5px;margin:0 0 30px}.p-menu > li{display:inline-block;vertical-align:top}.p-menu > li > a{display:block;padding:5px 20px 5px 0;font-weight:500;text-transform:uppercase;font-size:15px}.p-menu > li > a > i{margin-right:4px;font-size:20px;vertical-align:middle;margin-top:-5px}.p-menu > li:not(.active) > a{color:#4285F4}.p-menu > li:not(.active) > a:hover{color:#333}.p-menu > li.active > a{color:#000}@media (max-width: 991px){.p-menu .pm-search{margin:20px 2px 30px;display:block}.p-menu .pm-search input[type="text"]{width:100%;border:1px solid #ccc}}.p-menu .pms-inner{margin:-3px 0 0;position:relative;top:-2px;overflow:hidden;white-space:nowrap}.p-menu .pms-inner i{vertical-align:top;font-size:20px;line-height:100%;position:absolute;left:9px;top:7px}.p-menu .pms-inner input[type="text"]{height:35px;border-radius:2px;padding:0 10px 0 40px}@media (min-width: 768px){.p-menu .pms-inner input[type="text"]{border:1px solid #fff;width:50px;background:transparent;position:relative;z-index:1;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}.p-menu .pms-inner input[type="text"]:focus{border-color:#DFDFDF;width:200px}}.photos .p-item{margin-bottom:24px;position:relative}.photos .p-item:before{left:0;top:0;content:"";position:absolute;width:100%;height:100%;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);transform:scale3d(0,0,0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,0.5);z-index:0;border-radius:0;opacity:0;filter:alpha(opacity=0)}.photos .p-item:hover:before{-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1;filter:alpha(opacity=100)}.photos .p-item img{width:100%;border-radius:2px}.photos .btn-float{z-index:1;bottom:40px;right:40px;position:fixed}.contacts .c-item{border:1px solid #e2e2e2;border-radius:2px;margin-bottom:24px}.contacts .c-item .ci-avatar{display:block}.contacts .c-item .ci-avatar img{width:100%;border-radius:2px 2px 0 0}.contacts .ci-avatar{margin:-1px -1px 0}.contacts .c-info{text-align:center;margin-top:15px;padding:0 5px}.contacts .c-info strong{color:#000;font-size:14px;font-weight:500}.contacts .c-info small{color:#999;margin-top:3px}.contacts .c-info strong,.contacts .c-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.contacts .c-footer{border-top:1px solid #e2e2e2;margin-top:18px}.contacts .c-footer > button{padding:4px 10px 3px;display:block;width:100%;text-align:center;color:#333;font-weight:500;border-radius:2px;background:#fff;border:0}.contacts .c-footer > button > i{font-size:16px;vertical-align:middle;margin-top:-3px}.z-depth-1{box-shadow:0 2px 5px rgba(0,0,0,0.16),0 2px 10px rgba(0,0,0,0.12)}.z-depth-1-top{box-shadow:0 2px 10px rgba(0,0,0,0.12)}.z-depth-1-bottom{box-shadow:0 2px 5px rgba(0,0,0,0.16)}.z-depth-2{box-shadow:0 8px 17px rgba(0,0,0,0.2),0 6px 20px rgba(0,0,0,0.19)}.z-depth-2-top{box-shadow:0 6px 20px rgba(0,0,0,0.19)}.z-depth-2-bottom{box-shadow:0 8px 17px rgba(0,0,0,0.2)}.z-depth-3{box-shadow:0 12px 15px rgba(0,0,0,0.24),0 17px 50px rgba(0,0,0,0.19)}.z-depth-3-top{box-shadow:0 17px 50px rgba(0,0,0,0.19)}.z-depth-3-bottom{box-shadow:0 12px 15px rgba(0,0,0,0.24)}.z-depth-4{box-shadow:0 16px 28px rgba(0,0,0,0.22),0 25px 55px rgba(0,0,0,0.21)}.z-depth-4-top{box-shadow:0 25px 55px rgba(0,0,0,0.21)}.z-depth-4-bottom{box-shadow:0 16px 28px rgba(0,0,0,0.22)}.z-depth-5{box-shadow:0 27px 24px rgba(0,0,0,0.2),0 40px 77px rgba(0,0,0,0.22)}.z-depth-5-top{box-shadow:0 40px 77px rgba(0,0,0,0.22)}.z-depth-5-bottom{box-shadow:0 27px 24px rgba(0,0,0,0.2)}.z-depth-animation .z-depth-1,.z-depth-animation .z-depth-2,.z-depth-animation .z-depth-3,.z-depth-animation .z-depth-4,.z-depth-animation .z-depth-5{transition:box-shadow .28s cubic-bezier(0.4,0,0.2,1)}.block-header{margin-bottom:25px;position:relative}@media screen and (min-width: 768px){.block-header{padding:0 22px}}@media screen and (max-width: 991px){.block-header{padding:0 18px}}.block-header > h2{font-size:15px;color:#777;margin:0;font-weight:400;text-transform:uppercase}.block-header > h2 > small{display:block;text-transform:none;margin-top:8px;margin-bottom:20px;color:#9E9E9E;line-height:140%}.block-header .actions{position:absolute;right:10px;top:-5px;z-index:3}.actions{list-style:none;padding:0;z-index:2;margin:0}.actions > li{display:inline-block;vertical-align:baseline}.actions > li > a,.actions > a{width:30px;height:30px;line-height:29px;display:inline-block;text-align:center;position:relative}.actions > li > a > i,.actions > a > i{-webkit-transition:color;-o-transition:color;transition:color;-webkit-transition-duration:1300ms;transition-duration:1300ms;color:#adadad;font-size:20px}.actions > li > a:hover > i,.actions > a:hover > i{color:#000}.actions > li > a:before,.actions > a:before{left:0;top:0;content:"";position:absolute;width:100%;height:100%;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);transform:scale3d(0,0,0);-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,0.1);z-index:0;border-radius:50%;opacity:0;filter:alpha(opacity=0)}.actions > li > a:hover:before,.actions > a:hover:before{-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1;filter:alpha(opacity=100)}.actions > li.open > a > i,.actions.open > a > i{color:#000}.actions > li.open > a:before,.actions.open > a:before{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);opacity:1;filter:alpha(opacity=100)}.actions.actions-alt > li > a > i{color:#fff}.actions.actions-alt > li > a > i:hover{color:#fff}.actions.actions-alt > li.open > a > i{color:#fff}.actions.open{z-index:3}.line-wrap{width:18px;height:12px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;margin:10px 20px}.line-wrap .line{width:18px;height:2px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}.line-wrap .line.center{margin:3px 0}.open .line-wrap{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.open .line-wrap .line.top{width:12px;transform:translateX(8px) translateY(1px) rotate(45deg);-webkit-transform:translateX(8px) translateY(1px) rotate(45deg)}.open .line-wrap .line.bottom{width:12px;transform:translateX(8px) translateY(-1px) rotate(-45deg);-webkit-transform:translateX(8px) translateY(-1px) rotate(-45deg)}.socicon{font-family:'socicon'!important}.load-more{text-align:center;margin-top:30px}.load-more a{padding:5px 10px 3px;display:inline-block;background-color:#f44336;color:#FFF;border-radius:2px;white-space:nowrap}.load-more a i{font-size:20px;vertical-align:middle;position:relative;margin-top:-2px}.load-more a:hover{background-color:#ea1c0d}.ie-warning{position:fixed;top:0;left:0;z-index:9999;background:#000;width:100%;height:100%;text-align:center;color:#fff;font-family:"Courier New",Courier,monospace;padding:50px 0}.ie-warning p{font-size:17px}.ie-warning .iew-download{background:#fff;list-style:none;padding:30px 0;margin:50px -50px}.ie-warning .iew-download > li{display:inline;zoom:1;vertical-align:top}.ie-warning .iew-download > li > a{display:block;color:#000;width:140px;font-size:15px;padding:15px 0}.ie-warning .iew-download > li > a > div{margin-top:10px}.ie-warning .iew-download > li > a:hover{background-color:#eee}.mejs-container{outline:none}.mejs-container .mejs-controls{background:#ec592f;height:50px;padding:10px 5px 0}.mejs-container .mejs-controls div{height:5px}.mejs-container .mejs-controls div.mejs-time-rail{position:absolute;left:0;top:0;padding:0;width:100%!important}.mejs-container .mejs-controls div.mejs-time-rail .mejs-time-total{margin:0;width:100%!important;background:#ec592f}.mejs-container .mejs-controls div.mejs-time-rail .mejs-time-loaded{background:#D04B25}.mejs-container .mejs-controls div.mejs-time-rail .mejs-time-current{background:#ffea00}.mejs-container .mejs-controls div.mejs-time-rail .mejs-time-buffering{background:#ec592f}.mejs-container .mejs-controls div.mejs-time-rail span:not(.mejs-time-float),.mejs-container .mejs-controls div.mejs-time-rail a{border-radius:0;height:3px}.mejs-container .mejs-controls .mejs-button button{background-color:#ec592f;width:15px;height:15px;background-position:center}.mejs-container .mejs-controls .mejs-button button:focus{outline:none!important}.mejs-container .mejs-controls .mejs-volume-button{position:absolute;right:35px}.mejs-container .mejs-controls .mejs-play button{background-image:url(img/icons/play.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.mejs-container .mejs-controls .mejs-play button{background-image:url(img/icons/play@2x.png);background-size:15px 15px}}.mejs-container .mejs-controls .mejs-pause button{background-image:url(img/icons/pause.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.mejs-container .mejs-controls .mejs-pause button{background-image:url(img/icons/pause@2x.png);background-size:15px 15px}}.mejs-container .mejs-controls .mejs-mute button{background-image:url(img/icons/speaker.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.mejs-container .mejs-controls .mejs-mute button{background-image:url(img/icons/speaker@2x.png);background-size:15px 15px}}.mejs-container .mejs-controls .mejs-unmute button{background-image:url(img/icons/speaker-2.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.mejs-container .mejs-controls .mejs-unmute button{background-image:url(img/icons/speaker-2@2x.png);background-size:15px 15px}}.mejs-container .mejs-controls .mejs-fullscreen-button{position:absolute;right:5px}.mejs-container .mejs-controls .mejs-fullscreen-button button{background-image:url(img/icons/fullscreen.png)}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.mejs-container .mejs-controls .mejs-fullscreen-button button{background-image:url(img/icons/fullscreen@2x.png);background-size:15px 15px}}#calendar-widget{margin-bottom:30px;box-shadow:0 1px 1px rgba(0,0,0,0.15)}#fc-actions{position:absolute;top:24px;right:12px}.fc{background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.15);margin-bottom:30px}.fc td{border-color:#f0f0f0;text-align:center!important}.fc th{background:#f32c1e;color:rgba(255,255,255,0.9);font-weight:400;padding:6px 0}.fc table tr > td:first-child{border-left-width:0}.fc .ui-widget-header{border-width:0}.fc-toolbar{background-color:#f44336;margin-bottom:0;padding:20px 7px 19px;position:relative}.fc-toolbar h2{color:rgba(255,255,255,0.9);margin-top:7px;font-size:20px;font-weight:300;text-transform:uppercase}.fc-toolbar .ui-button{border:0;background:0 0;padding:0;outline:none!important;text-align:center}.fc-toolbar .ui-button > span{position:relative;font-family:'Material Design Iconic Font';font-size:20px;color:#FFF;line-height:100%;width:30px;padding-top:5px;display:block;margin-top:2px}.fc-toolbar .ui-button > span:before{position:relative;z-index:1}.fc-toolbar .ui-button > span.ui-icon-circle-triangle-w:before{content:"\f297"}.fc-toolbar .ui-button > span.ui-icon-circle-triangle-e:before{content:"\f298"}.fc-toolbar .ui-button > span:after{content:"";width:0;position:absolute;top:50%;height:0;border-radius:50%;left:50%;z-index:0;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.fc-toolbar .ui-button:hover > span:after{width:31px;height:31px;left:0;top:0;background:rgba(0,0,0,0.2)}.fc-event{padding:0;font-size:11px;border-radius:0;border:0;border-radius:2px}.fc-event .fc-title{padding:2px 0;display:block}.fc-event .fc-time{float:left;background:rgba(0,0,0,0.2);padding:2px 6px;margin:0 0 0 -1px}.fc-view,.fc-view > table{border:0;overflow:hidden}.fc-view > table > tbody > tr > .ui-widget-content{border-top:0}div.fc-row{margin-right:0!important;border:0!important}.event-tag{margin-top:5px}.event-tag > span{border-radius:50%;width:30px;height:30px;margin-right:3px;position:relative;display:inline-block;cursor:pointer}.event-tag > span:hover{opacity:.8;filter:alpha(opacity=80)}.event-tag > span.selected:before{font-family:'Material Design Iconic Font';content:"\f299";position:absolute;text-align:center;top:3px;width:100%;font-size:17px;color:#FFF}.bootgrid-footer .infoBar,.bootgrid-header .actionBar{text-align:left}.bootgrid-footer .search,.bootgrid-header .search{vertical-align:top}.bootgrid-header{padding:0 25px 10px}.bootgrid-header .search{border:1px solid #e0e0e0}.bootgrid-header .search .form-control,.bootgrid-header .search .input-group-addon{border:0}.bootgrid-header .search .glyphicon-search{vertical-align:top;padding:10px 10px 0}.bootgrid-header .search .glyphicon-search:before{content:"\f05f";font-family:'Material Design Iconic Font';font-size:17px;vertical-align:top;line-height:100%}@media (min-width: 480px){.bootgrid-header .search{width:300px}}@media (max-width: 480px){.bootgrid-header .search{width:100%;padding-right:90px}}.bootgrid-header .actions{box-shadow:none}.bootgrid-header .actions .btn-group{border:1px solid #e0e0e0}.bootgrid-header .actions .btn-group .btn{height:35px;box-shadow:none!important;background:transparent}.bootgrid-header .actions .btn-group .dropdown-menu{padding:10px 20px}.bootgrid-header .actions .btn-group .dropdown-menu .dropdown-item{padding:0 0 0 27px !important}.bootgrid-header .actions .btn-group .dropdown-menu .dropdown-item:hover{background-color:#fff!important}@media (min-width: 768px){.bootgrid-header .actions .btn-group .dropdown-menu{left:0;-webkit-transform-origin:top left;-moz-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;margin-top:1px}}.bootgrid-header .actions .btn-group .caret{display:none}.bootgrid-header .actions .btn-group .md{line-height:100%;font-size:18px;vertical-align:top;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:250ms;transition-duration:250ms}.bootgrid-header .actions .btn-group.open .md{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}@media (max-width: 480px){.bootgrid-header .actions{position:absolute;top:0;right:15px}}.bootgrid-table th > .column-header-anchor > .icon{top:0;font-size:20px;line-height:100%}.bootgrid-footer .col-sm-6{padding:10px 30px 20px}@media (max-width: 768px){.bootgrid-footer .col-sm-6{text-align:center}}@media (max-width: 768px){.bootgrid-footer .infoBar{display:none}}.bootgrid-footer .infoBar .infos{border:1px solid #EEE;display:inline-block;float:right;padding:7px 30px;font-size:12px;margin-top:5px}.select-cell .checkbox{margin:0}.command-edit,.command-delete{background:#fff;border:1px solid #eee!important}.bootstrap-select > .btn-default{background:none!important;border-bottom:1px solid #e0e0e0!important;border-radius:0;padding-left:0;padding-right:0}.bootstrap-select > .btn-default:before{position:absolute;top:0;right:0;content:"";height:calc(100% - 2px);width:30px;background-color:#FFF;background-position:right calc(100% - 7px);background-repeat:no-repeat;background-image:url(img/select.png);pointer-events:none;z-index:5}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.bootstrap-select > .btn-default:before{background-image:url(img/select@2x.png);background-size:12px 12px}}.bootstrap-select > .btn-default:after{position:absolute;z-index:3;bottom:-1px;left:0;height:2px;width:0;content:"";-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}.bootstrap-select > .btn-default:not(.disabled):after,.bootstrap-select > .btn-default:not(.readonly):after{background:#2196f3}.bootstrap-select > .btn-default.disabled:after,.bootstrap-select > .btn-default.readonly:after{background:#ccc}.bootstrap-select.open > .selectpicker:after{width:100%}.bootstrap-select .bs-searchbox{padding:0 18px;margin:5px 0 10px;position:relative}.bootstrap-select .bs-searchbox:before{position:absolute;left:14px;top:2px;width:30px;height:100%;content:"\f05f";font-family:'Material Design Iconic Font';font-size:25px}.bootstrap-select .bs-searchbox input{padding-left:25px;border:0}.bootstrap-select.btn-group .dropdown-menu li a.opt{padding-left:17px}.bootstrap-select .check-mark{margin-top:-5px!important;font-size:19px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);display:block!important;position:absolute;top:11px;right:15px}.bootstrap-select .check-mark:before{content:"\f023";font-family:'Material Design Iconic Font'}.bootstrap-select .selected .check-mark{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.bootstrap-select .notify{bottom:0!important;margin:0!important;width:100%!important;border:0!important;background:#f44336!important;color:#fff!important;text-align:center}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:100%}.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container .search-choice .group-name,.chosen-container .chosen-single .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .search-choice .group-name:after,.chosen-container .chosen-single .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(chosen-sprite.png) no-repeat 100% -20px;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:transparent}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single-nosearch .chosen-search,.chosen-rtl .chosen-drop{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(chosen-sprite.png) no-repeat -30px -20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-rtl .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-container-single .chosen-search input[type=text],.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}.chosen-container{width:100%}.chosen-container .chosen-drop{border:0}.chosen-container:after{position:absolute;z-index:3;bottom:0;left:0;height:2px;width:0;content:"";-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;background:#2196f3}.chosen-container .chosen-drop{margin-top:1px;display:block;left:0;width:100%;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);opacity:0;filter:alpha(opacity=0)}.chosen-container:not(.chosen-right) .chosen-drop{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.chosen-container.chosen-right .chosen-drop{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.chosen-container.chosen-container-active .chosen-drop{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);opacity:1;filter:alpha(opacity=100)}.chosen-container .chosen-results{padding:0;margin:0}.chosen-container .chosen-results > li{padding:8px 17px;color:#4C4C4C;-webkit-transition:background-color;-o-transition:background-color;transition:background-color;-webkit-transition-duration:300ms;transition-duration:300ms}.chosen-container .chosen-results > li:not(.disabled-result):not(.result-selected):not(.group-result){color:#262626}.chosen-container .chosen-results > li:not(.disabled-result):not(.result-selected):not(.group-result):not(:hover){background:#fff!important}.chosen-container .chosen-results > li:not(.disabled-result):not(.result-selected):not(.group-result):hover{background-color:#e4e4e4;color:#262626}.chosen-container .chosen-results > li.disabled-result{color:#e4e4e4}.chosen-container .chosen-results > li.result-selected{background:#2196f3;color:#fff}.chosen-container .chosen-results > li.highlighted{background:#eee;color:#333}.chosen-container .chosen-results > li.group-result{padding:3px 16px;margin-top:10px;color:#b1b1b1;font-weight:400}.chosen-container .chosen-results > li.group-result:not(:first-child){border-top:1px solid rgba(0,0,0,0.08);padding-top:15px}.chosen-container .chosen-choices{border-left:0;border-top:0;border-right:0}.chosen-container .chosen-choices .search-field input[type=text]{height:34px}.chosen-container .chosen-choices .chosen-single-with-deselect:before{font-family:'Material Design Iconic Font';content:"\f29a";font-size:13px;color:#696969;margin-right:8px}.chosen-container-single:before{position:absolute;top:0;height:100%;width:13px;right:0;z-index:1;background-image:url(img/select.png);background-position:right;background-repeat:no-repeat;content:""}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 21),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){.chosen-container-single:before{background-image:url(img/select@2x.png);background-size:12px 12px}}.chosen-container-single .chosen-single{padding:0 16px 0 0;border-left:0;border-top:0;border-right:0;border-radius:0;background:transparent;border-bottom:1px solid #e0e0e0;box-shadow:none;height:28px}.chosen-container-single .chosen-single div b{background:none}.chosen-container-single .chosen-search{padding:0 18px;margin:10px 0 15px;position:relative}.chosen-container-single .chosen-search:before{position:absolute;left:14px;top:2px;width:30px;height:100%;content:"\f05f";font-family:'Material Design Iconic Font';font-size:25px}.chosen-container-single .chosen-search input[type=text]{border:0;padding-top:8px;padding-left:30px}.chosen-container-active.chosen-with-drop .chosen-single{border-top:0;border-left:0;border-right:0;border-color:#e0e0e0;background:none}.chosen-container-active:after{width:100%}.chosen-container-active .chosen-choices{box-shadow:none}.chosen-container-multi .chosen-choices{border:0;border-bottom:1px solid #e0e0e0;background:none;padding:0}.chosen-container-multi .chosen-choices li.search-choice{border:0;padding:6px 25px 5px 7px;margin:0 5px 5px 0;background:#eee;border-radius:2px;box-shadow:none}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{right:7px;top:6px;background:none}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{font-family:'Material Design Iconic Font';content:"\f29a";font-size:13px;color:#696969;margin-right:8px}.chosen-search input[type=text]{background:none!important}.noUi-target{border-radius:0;box-shadow:none;border:0}.noUi-background{background:#d4d4d4;box-shadow:none}.noUi-horizontal{height:3px}.noUi-horizontal .noUi-handle{top:-8px}.noUi-vertical{width:3px}.noUi-horizontal .noUi-handle,.noUi-vertical .noUi-handle{width:19px;height:19px;border:0;border-radius:100%;box-shadow:none;-webkit-transition:box-shadow;-o-transition:box-shadow;transition:box-shadow;-webkit-transition-duration:200ms;transition-duration:200ms;cursor:pointer;position:relative}.noUi-horizontal .noUi-handle:before,.noUi-vertical .noUi-handle:before,.noUi-horizontal .noUi-handle:after,.noUi-vertical .noUi-handle:after{display:none}.noUi-horizontal .noUi-handle:active,.noUi-vertical .noUi-handle:active{background:#ccc!important}.noUi-horizontal .noUi-handle .is-tooltip,.noUi-vertical .noUi-handle .is-tooltip{position:absolute;bottom:32px;height:35px;border-radius:2px;color:#fff;text-align:center;line-height:33px;width:50px;left:50%;margin-left:-25px;padding:0 10px;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;opacity:0;filter:alpha(opacity=0);-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.noUi-horizontal .noUi-handle .is-tooltip:after,.noUi-vertical .noUi-handle .is-tooltip:after{width:0;height:0;border-style:solid;border-width:15px 10px 0;position:absolute;bottom:-8px;left:50%;margin-left:-9px;content:""}.noUi-horizontal .noUi-active,.noUi-vertical .noUi-active{box-shadow:0 0 0 13px rgba(0,0,0,0.1)}.noUi-horizontal .noUi-active .is-tooltip,.noUi-vertical .noUi-active .is-tooltip{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);bottom:40px;opacity:1;filter:alpha(opacity=100)}.input-slider:not([data-is-color]) .noUi-handle,.input-slider-range:not([data-is-color]) .noUi-handle,.input-slider-values:not([data-is-color]) .noUi-handle,.input-slider:not([data-is-color]) .noUi-connect,.input-slider-range:not([data-is-color]) .noUi-connect,.input-slider-values:not([data-is-color]) .noUi-connect{background:#009688!important}.input-slider:not([data-is-color]) .is-tooltip,.input-slider-range:not([data-is-color]) .is-tooltip,.input-slider-values:not([data-is-color]) .is-tooltip{background:#009688}.input-slider:not([data-is-color]) .is-tooltip:after,.input-slider-range:not([data-is-color]) .is-tooltip:after,.input-slider-values:not([data-is-color]) .is-tooltip:after{border-color:#009688 transparent transparent}.input-slider[data-is-color=red] .noUi-handle,.input-slider-range[data-is-color=red] .noUi-handle,.input-slider-values[data-is-color=red] .noUi-handle,.input-slider[data-is-color=red] .noUi-connect,.input-slider-range[data-is-color=red] .noUi-connect,.input-slider-values[data-is-color=red] .noUi-connect{background:#f44336!important}.input-slider[data-is-color=blue] .noUi-handle,.input-slider-range[data-is-color=blue] .noUi-handle,.input-slider-values[data-is-color=blue] .noUi-handle,.input-slider[data-is-color=blue] .noUi-connect,.input-slider-range[data-is-color=blue] .noUi-connect,.input-slider-values[data-is-color=blue] .noUi-connect{background:#2196f3!important}.input-slider[data-is-color=cyan] .noUi-handle,.input-slider-range[data-is-color=cyan] .noUi-handle,.input-slider-values[data-is-color=cyan] .noUi-handle,.input-slider[data-is-color=cyan] .noUi-connect,.input-slider-range[data-is-color=cyan] .noUi-connect,.input-slider-values[data-is-color=cyan] .noUi-connect{background:#00bcd4!important}.input-slider[data-is-color=amber] .noUi-handle,.input-slider-range[data-is-color=amber] .noUi-handle,.input-slider-values[data-is-color=amber] .noUi-handle,.input-slider[data-is-color=amber] .noUi-connect,.input-slider-range[data-is-color=amber] .noUi-connect,.input-slider-values[data-is-color=amber] .noUi-connect{background:#ffc107!important}.input-slider[data-is-color=green] .noUi-handle,.input-slider-range[data-is-color=green] .noUi-handle,.input-slider-values[data-is-color=green] .noUi-handle,.input-slider[data-is-color=green] .noUi-connect,.input-slider-range[data-is-color=green] .noUi-connect,.input-slider-values[data-is-color=green] .noUi-connect{background:#4caf50!important}.input-slider .noUi-origin{background:#d4d4d4}.input-slider:not([data-is-color]) .noUi-base{background:#009688!important}.input-slider[data-is-color=red] .noUi-base{background:#f44336!important}.input-slider[data-is-color=blue] .noUi-base{background:#2196f3!important}.input-slider[data-is-color=cyan] .noUi-base{background:#00bcd4!important}.input-slider[data-is-color=amber] .noUi-base{background:#ffc107!important}.input-slider[data-is-color=green] .noUi-base{background:#4caf50!important}.cp-container{position:relative}.cp-container > .input-group input.cp-value{color:#000!important;background:transparent!important}.cp-container > .input-group .dropdown-menu{padding:20px;margin-left:10px}.cp-container i.cp-value{border-radius:2px 5px 5px 2px;height:30px;position:absolute;right:1px;top:1px;width:25px}.note-editor,.note-popover{border-color:#e4e4e4}.note-editor .note-toolbar,.note-popover .note-toolbar,.note-editor .popover-content,.note-popover .popover-content{background:#fff;border-color:#e4e4e4;margin:0;padding:10px 0 15px;text-align:center}.note-editor .note-toolbar > .btn-group,.note-popover .note-toolbar > .btn-group,.note-editor .popover-content > .btn-group,.note-popover .popover-content > .btn-group{display:inline-block;float:none;box-shadow:none}.note-editor .note-toolbar > .btn-group .btn,.note-popover .note-toolbar > .btn-group .btn,.note-editor .popover-content > .btn-group .btn,.note-popover .popover-content > .btn-group .btn{margin:0 1px}.note-editor .note-toolbar > .btn-group > .active,.note-popover .note-toolbar > .btn-group > .active,.note-editor .popover-content > .btn-group > .active,.note-popover .popover-content > .btn-group > .active{background:#00bcd4;color:#fff}.note-editor .note-toolbar .btn,.note-popover .note-toolbar .btn,.note-editor .popover-content .btn,.note-popover .popover-content .btn{height:40px;border-radius:2px!important;box-shadow:none!important}.note-editor .note-toolbar .btn:active,.note-popover .note-toolbar .btn:active,.note-editor .popover-content .btn:active,.note-popover .popover-content .btn:active{box-shadow:none}.note-editor .note-toolbar .note-palette-title,.note-popover .note-toolbar .note-palette-title,.note-editor .popover-content .note-palette-title,.note-popover .popover-content .note-palette-title{margin:0!important;padding:10px 0!important;font-size:13px!important;text-align:center!important;border:0!important}.note-editor .note-toolbar .note-color-reset,.note-popover .note-toolbar .note-color-reset,.note-editor .popover-content .note-color-reset,.note-popover .popover-content .note-color-reset{padding:0 0 10px!important;margin:0!important;background:none;text-align:center}.note-editor .note-toolbar .note-color .dropdown-menu,.note-popover .note-toolbar .note-color .dropdown-menu,.note-editor .popover-content .note-color .dropdown-menu,.note-popover .popover-content .note-color .dropdown-menu{min-width:335px}.note-editor .note-statusbar .note-resizebar,.note-popover .note-statusbar .note-resizebar{border-color:#E8E8E8}.note-editor .note-statusbar .note-resizebar .note-icon-bar,.note-popover .note-statusbar .note-resizebar .note-icon-bar{border-color:#BCBCBC}.note-editor .fa,.note-popover .fa{font-style:normal;font-size:20px;vertical-align:middle}.note-editor .fa:before,.note-popover .fa:before{font-family:'Material Design Iconic Font'}.note-editor .fa.fa-magic:before,.note-popover .fa.fa-magic:before{content:"\f11b"}.note-editor .fa.fa-bold:before,.note-popover .fa.fa-bold:before{content:"\f17a"}.note-editor .fa.fa-italic:before,.note-popover .fa.fa-italic:before{content:"\f181"}.note-editor .fa.fa-underline:before,.note-popover .fa.fa-underline:before{content:"\f18b"}.note-editor .fa.fa-font:before,.note-popover .fa.fa-font:before{content:"\f17e"}.note-editor .fa.fa-list-ul:before,.note-popover .fa.fa-list-ul:before{content:"\f183"}.note-editor .fa.fa-list-ol:before,.note-popover .fa.fa-list-ol:before{content:"\f184"}.note-editor .fa.fa-align-left:before,.note-popover .fa.fa-align-left:before{content:"\f178";content:\f178}.note-editor .fa.fa-align-right:before,.note-popover .fa.fa-align-right:before{content:"\f179"}.note-editor .fa.fa-align-center:before,.note-popover .fa.fa-align-center:before{content:"\f176"}.note-editor .fa.fa-align-justify:before,.note-popover .fa.fa-align-justify:before{content:"\f177"}.note-editor .fa.fa-indent:before,.note-popover .fa.fa-indent:before{content:"\f180"}.note-editor .fa.fa-outdent:before,.note-popover .fa.fa-outdent:before{content:"\f17f"}.note-editor .fa.fa-text-height:before,.note-popover .fa.fa-text-height:before{content:"\f182"}.note-editor .fa.fa-table:before,.note-popover .fa.fa-table:before{content:"\f21e"}.note-editor .fa.fa-link:before,.note-popover .fa.fa-link:before{content:"\f10d"}.note-editor .fa.fa-picture-o:before,.note-popover .fa.fa-picture-o:before{content:"\f224"}.note-editor .fa.fa-minus:before,.note-popover .fa.fa-minus:before{content:"\f16e"}.note-editor .fa.fa-arrows-alt:before,.note-popover .fa.fa-arrows-alt:before{content:"\f29f"}.note-editor .fa.fa-code:before,.note-popover .fa.fa-code:before{content:"\f066"}.note-editor .fa.fa-question:before,.note-popover .fa.fa-question:before{content:"\f033"}.note-editor .fa.fa-eraser:before,.note-popover .fa.fa-eraser:before{content:"\f17b"}.note-editor .fa.fa-square:before,.note-popover .fa.fa-square:before{content:"\f1f4"}.note-editor .fa.fa-circle-o:before,.note-popover .fa.fa-circle-o:before{content:"\f2e3"}.note-editor .fa.fa-times:before,.note-popover .fa.fa-times:before{content:"\f29a"}.note-editor .note-air-popover .arrow,.note-popover .note-air-popover .arrow{left:20px}.note-editor .note-editable{padding:20px 23px}.bootstrap-datetimepicker-widget{margin-top:0!important}.bootstrap-datetimepicker-widget.top{-webkit-transform-origin:0 100%!important;-moz-transform-origin:0 100%!important;-ms-transform-origin:0 100%!important;transform-origin:0 100%!important}.bootstrap-datetimepicker-widget:before,.bootstrap-datetimepicker-widget:after{display:none!important}.bootstrap-datetimepicker-widget .picker-switch.accordion-toggle span{background:#fff;border-radius:0}.bootstrap-datetimepicker-widget .picker-switch.accordion-toggle span:hover{background:#fff}.bootstrap-datetimepicker-widget .datepicker-days table{margin-bottom:20px}.bootstrap-datetimepicker-widget .timepicker .md{font-size:25px}.bootstrap-datetimepicker-widget .glyphicon{color:#333}.bootstrap-datetimepicker-widget .active{background:#2196f3!important}.fileinput{position:relative;padding-right:35px}.fileinput .close{position:absolute;top:5px;font-size:12px;float:none;opacity:1;font-weight:500;border:1px solid #ccc;width:19px;text-align:center;height:19px;line-height:15px;border-radius:50%;right:0}.fileinput .close:hover{background:#eee}.fileinput .input-group-addon{padding:0 10px;vertical-align:middle}.fileinput .fileinput-preview{width:200px;height:150px;position:relative}.fileinput .fileinput-preview img{display:inline-block;vertical-align:middle;margin-top:-13px}.fileinput .fileinput-preview:after{content:"";display:inline-block;vertical-align:middle}#lg-outer{background:rgba(255,255,255,0.95)}#lg-outer .object{box-shadow:0 8px 17px rgba(0,0,0,0.2),0 6px 20px rgba(0,0,0,0.19);border-radius:2px}#lg-close{display:none}#lg-action{top:0;width:100%;left:0;margin-left:0!important;height:40px;border-bottom:1px solid #eee;text-align:center}#lg-action > a{background:transparent;color:#9D9D9D;font-size:18px;width:28px;height:37px}#lg-action > a:hover{background:transparent;color:#000}#lg-action .cl-thumb{position:fixed;right:20px;bottom:20px;width:50px;height:50px;border-radius:50%;line-height:38px;background:#f44336;-webkit-transition:all;-o-transition:all;transition:all;-webkit-transition-duration:300ms;transition-duration:300ms}#lg-action .cl-thumb:after{text-align:center;left:16px!important;bottom:6px!important;color:#fff}#lg-action .cl-thumb:hover{background:#f32c1e}#lg-gallery .thumb-cont{background:#f44336;text-align:center}#lg-gallery .thumb-cont .thumb-info{background:#f44336}#lg-gallery .thumb-cont .thumb-info .count{display:none}#lg-gallery .thumb-cont .thumb-info .close{width:14px;margin-top:0;background:none}#lg-gallery .thumb-cont .thumb-info .close:hover{background:none}#lg-gallery .thumb-cont .thumb{opacity:1;filter:alpha(opacity=100)}#lg-gallery .thumb-cont .thumb-inner{display:inline-block;padding:12px 12px 15px}.lg-slide{background:none!important}.lg-slide:after{content:"";-webkit-animation-fill-mode:both;animation-fill-mode:both;height:50px;width:50px;border-radius:100%;border:2px solid #2196f3;-webkit-animation:ball-scale-ripple 1s 0 infinite cubic-bezier(0.21,0.53,0.56,0.8);animation:ball-scale-ripple 1s 0 infinite cubic-bezier(0.21,0.53,0.56,0.8);position:absolute;left:50%;margin-left:-25px;top:50%;margin-top:-25px;z-index:-1}.lg-slide em{font-style:normal}.lg-slide em h3{margin-bottom:5px}.lg-slide .video-cont{box-shadow:0 8px 17px rgba(0,0,0,0.2),0 6px 20px rgba(0,0,0,0.19)}@-webkit-keyframes ball-scale-ripple{0%{-webkit-transform:scale(0.1);transform:scale(0.1);opacity:1}70%{-webkit-transform:scale(1);transform:scale(1);opacity:.7}100%{opacity:0}}@keyframes ball-scale-ripple{0%{-webkit-transform:scale(0.1);transform:scale(0.1);opacity:1}70%{-webkit-transform:scale(1);transform:scale(1);opacity:.7}100%{opacity:0}}.waves-effect{position:relative;cursor:pointer;overflow:hidden;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#loading-bar,#loading-bar-spinner{pointer-events:none;-webkit-pointer-events:none;-webkit-transition:linear all;-o-transition:linear all;transition:linear all;-webkit-transition-duration:350ms;transition-duration:350ms}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0;filter:alpha(opacity=0)}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1;filter:alpha(opacity=100)}#loading-bar .bar{-webkit-transition:width;-o-transition:width;transition:width;-webkit-transition-duration:350ms;transition-duration:350ms;background:rgba(0,0,0,0.15);position:fixed;z-index:10002;top:0;left:0;width:100%;height:70px;border-bottom-right-radius:1px;border-top-right-radius:1px}#loading-bar .peg{position:absolute;width:70px;right:0;top:0;height:2px;opacity:.45;filter:alpha(opacity=45);box-shadow:#fff 1px 0 6px 1px;border-radius:100%;z-index:99999}#loading-bar-spinner{width:56px;height:56px;text-align:center;padding:14px;border-radius:50%;position:fixed;top:105px;left:50%;margin-left:-28px;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,0.16),0 2px 10px rgba(0,0,0,0.12)}#loading-bar-spinner .spinner-icon{display:inline-block;width:28px;height:28px;margin:0;float:left;background:transparent!important;border:2px solid #00bcd4;border-bottom-color:transparent!important;border-radius:100%;-webkit-animation:ball-clip-rotate .75s linear infinite;-o-animation:ball-clip-rotate .75s linear infinite;animation:ball-clip-rotate .75s linear infinite}#loading-bar-spinner:before,#loading-bar-spinner:after{content:" ";display:table}#loading-bar-spinner:after{clear:both}#loading-bar-spinner:before,#loading-bar-spinner:after{content:" ";display:table}#loading-bar-spinner:after{clear:both}.jspContainer{overflow:hidden;position:relative}.jspPane{position:absolute}.jspVerticalBar{position:absolute;top:0;right:0;width:11px;height:100%;background:none}.jspHorizontalBar{position:absolute;bottom:0;left:0;width:100%;height:11px;background:none}.jspVerticalBar *,.jspHorizontalBar *{margin:0;padding:0}.jspCap{display:none}.jspHorizontalBar .jspCap{float:left}.jspTrack{background:transparent;position:relative}.jspVerticalBar .jspTrack{width:5px;margin:0 0 0 3px}.jspHorizontalBar .jspTrack{height:5px;margin:3px 0}.jspVerticalBar .jspCap{display:block;height:3px;width:11px}.jspHorizontalBar .jspCap{display:block;width:3px;height:11px}.jspDrag{position:relative;top:0;left:0;border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;opacity:.75;background:rgba(0,0,0,0.5);cursor:default}.jspHorizontalBar .jspTrack,.jspHorizontalBar .jspDrag{float:left;height:5px}.clear{clear:both}body > #Form.showControlBar{margin-top:0!important}@-webkit-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}} \ No newline at end of file diff --git a/LiveChat/Templates/Default/style.css b/LiveChat/Templates/Default/style.css index 6254cba..81323f2 100644 --- a/LiveChat/Templates/Default/style.css +++ b/LiveChat/Templates/Default/style.css @@ -563,6 +563,15 @@ margin-top: -5px; } + .livechat .agent-istyping { + bottom: 88px; + color: #a3a0a0; + font-style: italic; + position: absolute; + text-align: center; + width: 100%; + } + .livechat .livechat-tools { border-top: 1px solid #eee; box-sizing: border-box; @@ -764,7 +773,7 @@ .livechat-minbutton.livechat-minbutton-Left { - left: 1px !important; + left: 0 !important; right: auto !important; } @@ -775,17 +784,17 @@ .livechat-minbutton.livechat-minbutton-Right { left: auto !important; - right: 1px !important; + right: 0 !important; } .livechat-minbutton.livechat-minbutton-Top { - top: 1px !important; + top: 0 !important; bottom: auto !important; } .livechat-minbutton.livechat-minbutton-Bottom { top: auto !important; - bottom: 1px !important; + bottom: 0 !important; } .livechat-minbutton.livechat-minbutton-Center2 { diff --git a/LiveChat/Templates/Default/view.html b/LiveChat/Templates/Default/view.html index 55799ae..f033f72 100644 --- a/LiveChat/Templates/Default/view.html +++ b/LiveChat/Templates/Default/view.html @@ -87,6 +87,9 @@ +
+ {{localizeString["AgentIsTyping.Text"]}} +
diff --git a/LiveChat/Views/AdminPanel/AdminPanel.cshtml b/LiveChat/Views/AdminPanel/AdminPanel.cshtml index a4d1f61..1d7fb8c 100644 --- a/LiveChat/Views/AdminPanel/AdminPanel.cshtml +++ b/LiveChat/Views/AdminPanel/AdminPanel.cshtml @@ -3,129 +3,135 @@ @using DotNetNuke.Web.Client.ClientResourceManagement @inherits DotNetNuke.Web.Mvc.Framework.DnnWebViewPage -@{ - //Styles - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/style.css", DotNetNuke.Web.Client.FileOrder.Css.SkinCss); - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/animate.min.css"); - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/material-design-iconic-font.min.css"); - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/socicon.min.css"); - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/custom.css"); - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/livechat-agent.css"); - - //Bootstrap - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap/bootstrap.min.js"); - - //AngularJS & Libraries - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular.min.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-route.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-resource.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-sanitize.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-animate.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/loading-bar.min.js"); - - //Ui Bootstrap For Angularjs - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/ui-bootstrap/ui-bootstrap-tpls.min.js"); - - //sweetalert - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angular-farbtastic/farbtastic.css"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angular-farbtastic/angular-farbtastic.js"); - - //moment js - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/moment.js/moment.min.js"); - - //Jquery Plugins - - //sweetalert - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/sweetalert/sweetalert.min.css"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/sweetalert/sweetalert.min.js"); - - //nicescroll - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.nicescroll/jquery.nicescroll.min.js"); - - //jquery jscrollpane - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.jscrollpane/jquery.jscrollpane.min.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.jscrollpane/jquery.mousewheel.js"); - - //bootstrap-growl - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-growl/bootstrap-growl.min.js"); - - //waves material effect - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/waves/waves.min.js"); - - //chosen jquery - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/chosen.jquery/chosen.jquery.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/chosen.jquery/chosen.js"); - - //jquery numeric - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.numeric/jquery.numeric.js"); - - //bootstrap-select - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-select/bootstrap-select.min.css"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-select/bootstrap-select.min.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-select/angular-bootstrap-select.min.js"); - - //ua-parser user agent - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/ua-parser/ua-parser.min.js"); - - //SignalR - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/signalr/jquery.signalR-2.1.0.min.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/signalr/hubs"); - - //Custom AngularJS Services - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/ng-mydnn-services.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/signalr.service.js"); - - //Custom AngularJS App - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/app.js"); - - ////Custom AngularJS Controllers - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/home-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/visitorlist-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/history-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/department-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/agent-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/setting-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/widgetsetting-controller.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/livechat-agent-controller.js"); - - //bootstrap datetime picker - ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"); - ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-datetimepicker/datetimepickerDirective.js"); - - //Admin Panel UI Custom Scripts +@{ + //Styles + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/style.css", DotNetNuke.Web.Client.FileOrder.Css.SkinCss); + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/animate.min.css"); + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/material-design-iconic-font.min.css"); + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/socicon.min.css"); + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/custom.css"); + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Styles/livechat-agent.css"); + + //Bootstrap + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap/bootstrap.min.js"); + + //AngularJS & Libraries + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular.min.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-route.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-resource.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-sanitize.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/angular-animate.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angularjs/loading-bar.min.js"); + + //Ui Bootstrap For Angularjs + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/ui-bootstrap/ui-bootstrap-tpls.min.js"); + + //ng-file-upload Angularjs plugin + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/ng-file-upload/ng-file-upload.min.js"); + + //ngAudio Angularjs plugin + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/ngAudio/angular.audio.js"); + + //sweetalert + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angular-farbtastic/farbtastic.css"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/angular-farbtastic/angular-farbtastic.js"); + + //moment js + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/moment.js/moment.min.js"); + + //Jquery Plugins + + //sweetalert + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/sweetalert/sweetalert.min.css"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/sweetalert/sweetalert.min.js"); + + //nicescroll + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.nicescroll/jquery.nicescroll.min.js"); + + //jquery jscrollpane + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.jscrollpane/jquery.jscrollpane.min.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.jscrollpane/jquery.mousewheel.js"); + + //bootstrap-growl + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-growl/bootstrap-growl.min.js"); + + //waves material effect + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/waves/waves.min.js"); + + //chosen jquery + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/chosen.jquery/chosen.jquery.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/chosen.jquery/chosen.js"); + + //jquery numeric + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/jquery.numeric/jquery.numeric.js"); + + //bootstrap-select + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-select/bootstrap-select.min.css"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-select/bootstrap-select.min.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-select/angular-bootstrap-select.min.js"); + + //ua-parser user agent + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/ua-parser/ua-parser.min.js"); + + //SignalR + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/signalr/jquery.signalR-2.1.1.min.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/signalr/hubs"); + + //Custom AngularJS Services + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/ng-mydnn-services.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Services/signalr.service.js"); + + //Custom AngularJS App + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/app.js"); + + ////Custom AngularJS Controllers + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/home-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/visitorlist-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/history-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/department-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/agent-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/setting-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/widgetsetting-controller.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientApp/Controllers/livechat-agent-controller.js"); + + //bootstrap datetime picker + ClientResourceManager.RegisterStyleSheet(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"); + ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/ClientComponents/bootstrap-datetimepicker/datetimepickerDirective.js"); + + //Admin Panel UI Custom Scripts ClientResourceManager.RegisterScript(Dnn.DnnPage, "~/DesktopModules/MVC/MyDnnSupport/LiveChat/Scripts/functions.js"); } @{
- @if (!Model.VisitorsOnlineEnabled) + @if (!Model.VisitorsOnlineEnabled) { @Dnn.LocalizeString("VisitorsEnabledAlert") - + } - @if (!Model.LiveChatEnabled) + @if (!Model.LiveChatEnabled) { - @Dnn.LocalizeString("VisitorsEnabledAlert") - + @Dnn.LocalizeString("LiveChatEnabledAlert") + } - @if (!Model.BasicSettingsUpdated) + @if (!Model.BasicSettingsUpdated) { @Dnn.LocalizeString("BasicSettingsUpdatedAlert") - + } - @if (!Model.WidgetSettingsUpdated) + @if (!Model.WidgetSettingsUpdated) { - @Dnn.LocalizeString("BasicSettingsUpdatedAlert") - + @Dnn.LocalizeString("WidgetSettingsUpdatedAlert") + }
} @@ -140,8 +146,10 @@
-
    • @@ -256,26 +264,26 @@ { } diff --git a/LiveChat/Views/AdminPanel/_LiveChats.cshtml b/LiveChat/Views/AdminPanel/_LiveChats.cshtml index 72199a6..c7bcbb3 100644 --- a/LiveChat/Views/AdminPanel/_LiveChats.cshtml +++ b/LiveChat/Views/AdminPanel/_LiveChats.cshtml @@ -80,6 +80,7 @@
      {{message.SenderDisplayName}}

      {{message.Message}}

      + {{message.MsgTime}}
    diff --git a/LiveChat/Views/AdminPanel/_WidgetSettings.cshtml b/LiveChat/Views/AdminPanel/_WidgetSettings.cshtml index 5ca3501..6223f83 100644 --- a/LiveChat/Views/AdminPanel/_WidgetSettings.cshtml +++ b/LiveChat/Views/AdminPanel/_WidgetSettings.cshtml @@ -87,6 +87,26 @@
  • +
    + +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +
    + + +
    +
    @@ -171,13 +191,13 @@
    -
    -