<!DOCTYPE html>
<html>

  <head>
    <script data-require="jquery@*" data-semver="2.1.1" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link data-require="bootstrap@*" data-semver="3.2.0" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.css" />
    <script data-require="bootstrap@*" data-semver="3.2.0" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.js"></script>
    <script data-require="angular.js@*" data-semver="1.2.0" src="https://code.angularjs.org/1.2.0/angular.js"></script>
    <script data-require="ui-router@*" data-semver="0.2.10" src="https://rawgit.com/angular-ui/ui-router/0.2.10/release/angular-ui-router.js"></script>
    <link rel="stylesheet" href="style.css" />
  </head>

  <body ng-app="uiTestMod">
    <nav class="navbar navbar-default" role="navigation">
      <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="">Acme Corp</a>
        </div>
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav">
            <li class="active">
              <a>home</a>
            </li>
            <li>
              <a href="javascript:alert(' This link does shit');">One more link</a>
            </li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown                                                                                 <span class="caret"></span>
              </a>
              <ul class="dropdown-menu" role="menu">
                <li>
                  <a>Action</a>
                </li>
                <li>
                  <a>Another action</a>
                </li>
                <li>
                  <a>Something else here</a>
                </li>
                <li class="divider"></li>
                <li>
                  <a>Separated link</a>
                </li>
                <li class="divider"></li>
                <li>
                  <a>One more separated link</a>
                </li>
              </ul>
            </li>
          </ul>
          <form class="navbar-form navbar-left" role="search">
            <div class="form-group">
              <input type="text" class="form-control" placeholder="Search" />
            </div>
            <button type="submit" class="btn btn-default">Submit</button>
          </form>
          <ul class="nav navbar-nav navbar-right">
            <li>
              <a>Link</a>
            </li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown                                                                                 <span class="caret"></span>
              </a>
              <ul class="dropdown-menu" role="menu">
                <li>
                  <a>Action</a>
                </li>
                <li>
                  <a>Another action</a>
                </li>
                <li>
                  <a>Something else here</a>
                </li>
                <li class="divider"></li>
                <li>
                  <a>Separated link</a>
                </li>
              </ul>
            </li>
          </ul>
        </div>
        <!-- /.navbar-collapse -->
      </div>
      <!-- /.container-fluid -->
    </nav>
    <div class="container-fluid">
      <div style="padding-top:10px;" ui-view=""></div>
    </div>
    <script src="uiTestMod.js"></script>
    <script src="ct-ui-router-extras.min.js"></script>
    <script src="layouts.mod.js"></script>
    <script src="uiTest.route.js"></script>
    <script src="clientDetailCtrl.js"></script>
    <script src="solutionsCtrl.js"></script>
    <script src="solutionDetailCtrl.js"></script>
    <script src="sidebarCtrl.js"></script>
    <script src="clientCtrl.js"></script>
  </body>

</html>
(function ()
{
  

angular.module('uiTestMod',['ui.router','layouts','ct.ui.router.extras'] );

})();
/* Styles go here */


.scrollable-select {
   /* height: auto;
    max-height: 600px;
    overflow-x: hidden;
    overflow-y: scroll;*/
 width: 400px;
  height: 500px;
  overflow-y: scroll;

    
}

(function ()
{
  

angular.module('layouts',[]);

})();
(function ()
{

angular.module('uiTestMod')
  .config(myrouterConfig);
  
  
  // myrouterConfig.$inject = ['$stateProvider','$urlRouterProvider','$location'];
  
  function myrouterConfig($stateProvider,$stickyStateProvider,$urlRouterProvider)
  {

//$stickyStateProvider.enableDebug(true);

  


    $stateProvider
        .state('top', {
            url: '/',
            templateUrl: 'sidebarnav.html'
        })
.state('top.clients', {
            url: 'clients',
            views: {
                'clientTab@top':{
                 templateUrl: 'home.clients.html'
                 }
            },
             deepStateRedirect: true,
             sticky: true
           })
.state('top.clients.id', {
            url: '/:clientID',
            templateUrl: 'home.clientDetail.html'
           })           

.state('top.solutions', {
            url: 'solutions',
            views: {
                'solutionTab@top':{
                 templateUrl: 'home.solutions.html'
                 }
            },
             deepStateRedirect: true,
             sticky: true
           })
        .state('top.solutions.id', {
            url: '/:solutionID',
            templateUrl: 'home.client.solutions.detail.html'
        });
    
      $urlRouterProvider.otherwise('/');  
    
  }
  

})();
  <div class="row" ng-controller="clientCtrl">
    <div class="col-md-3 div-outline  scrollable-select">
      <ul class="nav nav-pills nav-stacked">
        <li ng-repeat="client in clients" ui-sref-active-eq="active" > 
            <a ui-sref=".id({clientID:client.id})" >{{client.name}}</a>
        </li>
        </ul>
       
      </div>
      <!--<div ng-cloak class="well col-md-9">-->
          <div class="col-md-9" ui-view ></div>
      <!--</div>-->
          <!--comment-->
  </div>

<div ng-controller="clientDetailCtrl as clientDetail">
  
      Client details for {{clientDetail.clientDetailsID}} 
<div class="alert alert-success" role="alert">$location output: {{clientDetail.loc}}</div>
<h4>$state.current output:</h4>
<pre>{{clientDetail.state}}</pre>

</div>
(function (){
  'use strict';
angular
    .module('layouts')
    .controller('clientDetailCtrl',clientDetailCtrl);
  
 clientDetailCtrl.$inject = ['$scope','$location','$state','$stateParams'];
  
  function clientDetailCtrl($scope, $location, $state, $stateParams)
  {
    /* jshint validthis: true */
    var viewData = this;
    
    viewData.clientDetailsID = $stateParams.clientID;
    viewData.state = $state.current;
    viewData.loc = $location.path();
    
    
    
    
    onActivation($location);
    
  }
  
  function onActivation($location)
  {
   
    
  }
  
  
})();
<div class="container-fluid" ng-controller="sideBarCtrl as sidebar">
  <div class="row">
    <div class="col-md-3">


      <ul id="menuPills" class="nav nav-pills">
        <li ng-click="sidebar.setVisibleTab('client')" ui-sref-active="active">
          <a ui-sref="top.clients">Clients</a>
        </li>
        <li ng-click="sidebar.setVisibleTab('solution')" ui-sref-active="active">
          <a ui-sref="top.solutions">Solutions</a>
        </li>

      </ul>
      <pre>
            {{sidebar.clientState}}
            {{sidebar.showClient}}
            {{sidebar.showSolution}}
           
      </pre>
       <p>
            value of <b>$state.includes('top.clients')</b> = {{sidebar.c}} <br>
            value of <b>$state.includes('top.solutions')</b> = {{sidebar.s}}
      </p>

      <hr>
    </div>
  </div>

  <div class="tabcontent" ui-view="clientTab" ng-show="sidebar.showClient" ></div>
  <div class="tabcontent" ui-view="solutionTab" ng-show="sidebar.showSolution"  ></div>

<!--
ng-show="sidebar.showClient"
ng-show="sidebar.showSolution"
ng-show="$state.includes('top.clients')"
ng-show="$state.includes('top.solutions')"



-->






</div>
(function (){
  'use strict';
angular
    .module('layouts')
    .controller('solutionsCtrl',solutionsCtrl);
  
 solutionsCtrl.$inject = ['$scope','$location','$state','$stateParams'];
  
  function solutionsCtrl($scope, $location, $state, $stateParams)
  {
    /* jshint validthis: true */
    var vm = this;
    vm.solutions = [];
    
    
     for(var i=1; i<=10; i++)
    {
      //var x = i;
      var solution = {};
      solution.name= "Solution "+i;
      solution.id = i;
        
      
      vm.solutions.push(solution);
      
    }
   
    
    
    
    
    onActivation($location);
    
  }
  
  function onActivation($location)
  {
   //alert('hi');
    
  }
  
  
})();
  <div class="row" ng-controller="solutionsCtrl as solCtrl">
    <div class="col-md-3 div-outline  scrollable-select">
      <ul class="nav nav-pills nav-stacked">
        <li ng-repeat="solution in solCtrl.solutions" ui-sref-active-eq="active" > 
            <a ui-sref=".id({solutionID:solution.id})" >{{solution.name}}</a>
        </li>
        </ul>
       
      </div>
      <!--<div ng-cloak class="well col-md-9">-->
          <div class=" col-md-9" ui-view></div>
      <!--</div>-->
          <!--comment-->
  </div>
  
<div ng-controller="solutionDetailCtrl as solutionDetail">
  
      Client details for {{solution.solutionDetailsID}} 
<div class="alert alert-success" role="alert">$location output: {{solutionDetail.loc}}</div>
<h4>$state.current output:</h4>
<pre>{{solutionDetail.state}}</pre>

</div>
(function (){
  'use strict';
angular
    .module('layouts')
    .controller('solutionDetailCtrl',solutionDetailCtrl);
  
 solutionDetailCtrl.$inject = ['$scope','$location','$state','$stateParams'];
  
  function solutionDetailCtrl($scope, $location, $state, $stateParams)
  {
    /* jshint validthis: true */
    var viewData = this;
    
    viewData.solutionDetailsID = $stateParams.solutionID;
    viewData.state = $state.current;
    viewData.loc = $location.path();
    
    
    
    
    onActivation($location);
    
  }
  
  function onActivation($location)
  {
   
    
  }
  
  
})();
/*! ui-router-extras - v0.0.11 - 2014-11-21 */!function(a,b,c){function d(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function e(a){if(Object.keys)return Object.keys(a);var c=[];return b.forEach(a,function(a,b){c.push(b)}),c}function f(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function g(a,b,c,g){var h,i=d(c,g),j={},k=[];for(var l in i)if(i[l].params&&(h=r(i[l].params)?i[l].params:e(i[l].params),h.length))for(var m in h)f(k,h[m])>=0||(k.push(h[m]),j[h[m]]=a[h[m]]);return q({},j,b)}function h(a,b){return q(new(q(function(){},{prototype:a})),b)}function i(){n=c}function j(){var a={},c={};this.registerStickyState=function(a){c[a.name]=a},this.enableDebug=function(a){o=a},this.$get=["$rootScope","$state","$stateParams","$injector","$log",function(c,d,e,f,h){function i(){var c={};return b.forEach(a,function(a){for(var b=j(a),d=0;d<b.length;d++){var e=b[d].parent;c[e.name]=c[e.name]||[],c[e.name].push(a)}c[""]&&(c.__inactives=c[""])}),c}function j(a){var b=[];if(!a)return b;do a.sticky&&b.push(a),a=a.parent;while(a);return b.reverse(),b}function k(a,b,c){if(a[c]===b[c])return{from:!1,to:!1};var d=c<a.length&&a[c].self.sticky,e=c<b.length&&b[c].self.sticky;return{from:d,to:e}}function l(b,c,d){if(d)return"updateStateParams";var e=a[b.self.name];if(!e)return"enter";var f=n(c,e.locals.globals.$stateParams,b.ownParams);return f?"reactivate":"updateStateParams"}function m(b,c){var d=a[b.name];if(!d)return null;if(!c)return d;var e=n(c,d.locals.globals.$stateParams,b.ownParams);return e?d:null}function n(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e<c.length;e++){var f=c[e];if(a[f]!=b[f])return!1}return!0}var p={getInactiveStates:function(){var c=[];return b.forEach(a,function(a){c.push(a)}),c},getInactiveStatesByParent:function(){return i()},processTransition:function(a){var c={inactives:[],enter:[],exit:[],keep:0},f=a.fromState.path,h=a.fromParams,j=a.toState.path,m=a.toParams,o=a.options,p=0,q=j[p];for(o.inherit&&(m=g(e,m||{},d.$current,a.toState));q&&q===f[p]&&n(m,h,q.ownParams);)q=j[++p];c.keep=p;var r,t,u,v={},w=k(f,j,p),x=!1;for(r=p;r<j.length;r++){var y=w.to?l(j[r],a.toParams,x):"enter";x=x||"updateStateParams"==y,c.enter[r]=y,"reactivate"==y&&(u=v[j[r].name]=j[r]),"updateStateParams"==y&&(t=j[r])}u=u?u.self.name+".":"",t=t?t.self.name+".":"";var z=i(),A=[""].concat(s(f.slice(0,p),function(a){return a.self.name}));for(b.forEach(A,function(a){for(var b=z[a],d=0;b&&d<b.length;d++){var e=b[d];v[e.name]||u&&0===e.self.name.indexOf(u)||t&&0===e.self.name.indexOf(t)||c.inactives.push(e)}}),r=p;r<f.length;r++){var B="exit";w.from&&(c.inactives.push(f[r]),B="inactivate"),c.exit[r]=B}return c},stateInactivated:function(b){a[b.self.name]=b,b.self.status="inactive",b.self.onInactivate&&f.invoke(b.self.onInactivate,b.self,b.locals.globals)},stateReactivated:function(b){a[b.self.name]&&delete a[b.self.name],b.self.status="entered",b.self.onReactivate&&f.invoke(b.self.onReactivate,b.self,b.locals.globals)},stateExiting:function(c,d,e){var g={};b.forEach(d,function(a){g[a.self.name]=!0}),b.forEach(a,function(d,e){!g[e]&&d.includes[c.name]&&(o&&h.debug("Exiting "+e+" because it's a substate of "+c.name+" and wasn't found in ",g),d.self.onExit&&f.invoke(d.self.onExit,d.self,d.locals.globals),b.forEach(d.locals,function(a,b){delete x.locals[b]}),d.locals=null,d.self.status="exited",delete a[e])}),e&&f.invoke(e,c.self,c.locals.globals),c.locals=null,c.self.status="exited",delete a[c.self.name]},stateEntering:function(a,b,c){var d=m(a);if(d&&!m(a,b)){var e=a.locals;this.stateExiting(d),a.locals=e}a.self.status="entered",c&&f.invoke(c,a.self,a.locals.globals)},reset:function(a,b){var e=d.get(a),f=m(e,b);return f?(p.stateExiting(f),c.$broadcast("$viewContentLoading"),!0):!1}};return p}]}function k(a){return{resolve:{},locals:{globals:v&&v.locals&&v.locals.globals},views:{},self:{},params:{},ownParams:A.hasParamSet?{$$equals:function(){return!0}}:[],surrogateType:a}}function l(a,c,d){function e(a,b,c){return a[b]?a[b].toUpperCase()+": "+c.self.name:"("+c.self.name+")"}var f=s(d.inactives,function(a){return a.self.name}),g=s(c.toState.path,function(a,b){return e(d.enter,b,a)}),h=s(c.fromState.path,function(a,b){return e(d.exit,b,a)}),i=c.fromState.self.name+": "+b.toJson(c.fromParams)+":  -> "+c.toState.self.name+": "+b.toJson(c.toParams);a.debug("   Current transition: ",i),a.debug("Before transition, inactives are:   : ",s(u.getInactiveStates(),function(a){return a.self.name})),a.debug("After transition,  inactives will be: ",f),a.debug("Transition will exit:  ",h),a.debug("Transition will enter: ",g)}function m(a,b,c){a.debug("Current state: "+b.self.name+", inactive states: ",s(u.getInactiveStates(),function(a){return a.self.name}));for(var d=function(a,b){return"'"+b+"' ("+a.$$state.name+")"},e=function(a,b){return"globals"!=b&&"resolve"!=b},f=function(a){var b=s(t(a.locals,e),d).join(", ");return"("+(a.self.name?a.self.name:"root")+".locals"+(b.length?": "+b:"")+")"},g=f(b),h=b.parent;h&&h!==b;)""===h.self.name&&(g=f(c.$current.path[0])+" / "+g),g=f(h)+" / "+g,b=h,h=b.parent;a.debug("Views: "+g)}b.module("ct.ui.router.extras",["ui.router"]);var n,o=!1,p=b.forEach,q=b.extend,r=b.isArray,s=function(a,b){"use strict";var c=[];return p(a,function(a,d){c.push(b(a,d))}),c},t=function(a,b){"use strict";var c={};return p(a,function(a,d){b(a,d)&&(c[d]=a)}),c};b.module("ct.ui.router.extras").config(["$provide",function(a){var b;a.decorator("$state",["$delegate","$q",function(a,c){return b=a.transitionTo,a.transitionTo=function(d,e,f){return f.ignoreDsr&&(n=f.ignoreDsr),b.apply(a,arguments).then(function(a){return i(),a},function(a){return i(),c.reject(a)})},a}])}]),b.module("ct.ui.router.extras").service("$deepStateRedirect",["$rootScope","$state","$injector",function(a,d,e){function f(a){var b=a.name;return k.hasOwnProperty(b)?k[b]:void h(b)}function g(a){var c=a.deepStateRedirect;if(!c)return{dsr:!1};var d={dsr:!0};return b.isFunction(c)?d.fn=c:b.isObject(c)&&(d=b.extend(d,c)),d.fn||(d.fn=["$dsr$",function(a){return a.redirect.state!=a.to.state}]),d}function h(a){var b=d.get(a);if(!b)return!1;var e=g(b);e.dsr&&(k[b.name]=l,j[a]===c&&(j[a]={}));var f=b.$$state&&b.$$state().parent;if(f){var i=h(f.self.name);i&&k[b.name]===c&&(k[b.name]=m)}return k[b.name]||!1}function i(a,d){function e(a){return a?a.toString():a}d===!0&&(d=Object.keys(a)),(null===d||d===c)&&(d=[]);var f={};return b.forEach(d.sort(),function(b){f[b]=e(a[b])}),b.toJson(f)}var j={},k={},l="Redirect",m="AncestorRedirect";return a.$on("$stateChangeStart",function(a,b,c){if(!n&&f(b)===l){var h=g(b),k=i(c,h.params),m=j[b.name][k];if(m){var o={redirect:{state:m.state,params:m.params},to:{state:b.name,params:c}},p=e.invoke(h.fn,b,{$dsr$:o});p&&(p.state&&(m=p),a.preventDefault(),d.go(m.state,m.params))}}}),a.$on("$stateChangeSuccess",function(a,c,e){var h=f(c);if(h){var k=c.name;b.forEach(j,function(a,c){var f=g(d.get(c)),h=i(e,f.params);(k==c||-1!=k.indexOf(c+"."))&&(j[c][h]={state:k,params:b.copy(e)})})}}),{reset:function(a){if(a){var c=d.get(a);if(!c)throw new Error("Unknown state: "+a);j[c.name]&&(j[c.name]={})}else b.forEach(j,function(a,b){j[b]={}})}}}]),b.module("ct.ui.router.extras").run(["$deepStateRedirect",function(){}]),j.$inject=["$stateProvider"],b.module("ct.ui.router.extras").provider("$stickyState",j);var u,v,w,x,y={},z=[],A={hasParamSet:!1};b.module("ct.ui.router.extras").run(["$stickyState",function(a){u=a}]),b.module("ct.ui.router.extras").config(["$provide","$stateProvider","$stickyStateProvider","$urlMatcherFactoryProvider",function(a,d,e,f){A.hasParamSet=!!f.ParamSet,x=b.extend(new k("__inactives"),{self:{name:"__inactives"}}),v=w=c,z=[],d.decorator("parent",function(a,b){return y[a.self.name]=a,a.self.$$state=function(){return y[a.self.name]},a.self.sticky===!0&&e.registerStickyState(a.self),b(a)});var g;a.decorator("$state",["$delegate","$log","$q",function(a,d,e){return v=a.$current,y[""]=v,v.parent=x,x.parent=c,v.locals=h(x.locals,v.locals),delete x.locals.globals,g=a.transitionTo,a.transitionTo=function(c,f,h){function i(a){var c=b.extend(new k("reactivate_phase1"),{locals:a.locals});return c.self=b.extend({},a.self),c}function j(a){var c=b.extend(new k("reactivate_phase2"),a),d=c.self.onEnter;return c.resolve={},c.views={},c.self.onEnter=function(){c.locals=a.locals,u.stateReactivated(a)},K.addRestoreFunction(function(){a.self.onEnter=d}),c}function n(a){var b=new k("inactivate");b.self=a.self;var c=a.self.onExit;return b.self.onExit=function(){u.stateInactivated(a)},K.addRestoreFunction(function(){a.self.onExit=c}),b}function p(a,b){var c=a.self.onEnter;return a.self.onEnter=function(){u.stateEntering(a,b,c)},K.addRestoreFunction(function(){a.self.onEnter=c}),a}function q(a){var b=a.self.onExit;return a.self.onExit=function(){u.stateExiting(a,I,b)},K.addRestoreFunction(function(){a.self.onExit=b}),a}x.locals||(x.locals=v.locals);var r=z.length;w&&(w(),o&&d.debug("Restored paths from pending transition"));var t,A,B,C,D=a.$current,E=a.params,F=h&&h.relative||a.$current,G=a.get(c,F),H=[],I=[],J=function(){},K=function(){t&&(L.path=t,t=null),A&&(D.path=A,A=null),b.forEach(K.restoreFunctions,function(a){a()}),K=J,w=null,z.splice(r,1)};if(K.restoreFunctions=[],K.addRestoreFunction=function(a){this.restoreFunctions.push(a)},G){var L=y[G.name];if(L){t=L.path,A=D.path;var M={toState:L,toParams:f||{},fromState:D,fromParams:E||{},options:h};z.push(M),w=K,B=u.processTransition(M),o&&l(d,M,B);var N=L.path.slice(0,B.keep),O=D.path.slice(0,B.keep);b.forEach(x.locals,function(a,b){-1!=b.indexOf("@")&&delete x.locals[b]});for(var P=0;P<B.inactives.length;P++){var Q=B.inactives[P].locals;b.forEach(Q,function(a,b){Q.hasOwnProperty(b)&&-1!=b.indexOf("@")&&(x.locals[b]=a)})}if(b.forEach(B.enter,function(a,b){var c;"reactivate"===a?(c=i(L.path[b]),N.push(c),O.push(c),H.push(j(L.path[b])),C=c):"updateStateParams"===a?(c=p(L.path[b]),N.push(c),C=c):"enter"===a&&N.push(p(L.path[b]))}),b.forEach(B.exit,function(a,b){var c=D.path[b];"inactivate"===a?(O.push(n(c)),I.push(c)):"exit"===a&&(O.push(q(c)),I.push(c))}),H.length&&b.forEach(H,function(a){N.push(a)}),C){var R=C.self.name+".",S=u.getInactiveStates(),T=[];S.forEach(function(a){0===a.self.name.indexOf(R)&&T.push(a)}),T.sort(),T.reverse(),O=O.concat(s(T,function(a){return q(a)})),I=I.concat(T)}L.path=N,D.path=O;var U=function(a){return(a.surrogateType?a.surrogateType+":":"")+a.self.name};o&&d.debug("SurrogateFromPath: ",s(O,U)),o&&d.debug("SurrogateToPath:   ",s(N,U))}}var V=g.apply(a,arguments);return V.then(function(b){return K(),o&&m(d,y[b.name],a),b.status="active",b},function(a){return K(),o&&"transition prevented"!==a.message&&"transition aborted"!==a.message&&"transition superseded"!==a.message&&(d.debug("transition failed",a),console.log(a.stack)),e.reject(a)})},a}])}]),b.module("ct.ui.router.extras").provider("$futureState",["$stateProvider","$urlRouterProvider","$urlMatcherFactoryProvider",function(a,c,d){function e(a,c){var d=b.isObject(a)?a.name:a;return c?k[d]:y[d]}function f(a,b){if(b.name){var c=b.name.split(/\./);for("."===b.name.charAt(0)&&(c[0]=a.current.name);c.length;){var d=c.join(".");if(a.get(d,{relative:a.current}))return null;if(k[d])return k[d];c.pop()}}if(b.url){var e=[];for(var f in k)k[f].urlMatcher.exec(b.url)&&e.push(k[f]);for(var g=e.slice(0),h=e.length-1;h>=0;h--)for(var i=0;i<g.length;i++)e[h]===g[i].parentFutureState&&e.splice(h,1);return e[0]}}function g(a,b){var c=a.get("$q");if(!b){var d=c.defer();return d.reject("No lazyState passed in "+b),d.promise}var e=c.when([]),f=b.parentFutureState;f&&k[f.name]&&(e=g(a,k[f.name]));var h=b.type,i=j[h];if(!i)throw Error("No state factory for futureState.type: "+(b&&b.type));return e.then(function(c){var d=a.invoke(i,i,{futureState:b});return d.then(function(a){return a&&c.push(a),c})})["finally"](function(){delete k[b.name]})}function h(b,c){var d=!1,e=["$rootScope","$urlRouter","$state",function(e,h,j){if(!n)return i().then(function(){d=!0,h.sync(),d=!1}),void(n=!0);var k=f(j,{url:c.path()});return k?(l=!0,void g(b,k).then(function(b){b.forEach(function(b){b&&(!j.get(b)||b.name&&!j.get(b.name))&&a.state(b)}),d=!0,h.sync(),d=!1,l=!1},function(){return l=!1,b.invoke(p)})):b.invoke(p)}];if(!l){var h=d?p:e;return b.invoke(h)}}var i,j={},k={},l=!1,m=[],n=!1,o=this;this.addResolve=function(a){m.push(a)},this.stateFactory=function(a,b){j[a]=b},this.futureState=function(a){a.stateName&&(a.name=a.stateName),a.urlPrefix&&(a.url="^"+a.urlPrefix),k[a.name]=a;var c,f=a.name.split(/\./).slice(0,-1).join("."),g=e(a.parent||f);if(g)c=g.navigable.url;else if(""===f)c=d.compile("");else{var h=e(a.parent||f,!0);if(!h)throw new Error("Couldn't determine parent state of future state. FutureState:"+b.toJson(a));var i=h.urlMatcher.source.replace(/\*rest$/,"");c=d.compile(i),a.parentFutureState=h}a.urlMatcher="^"===a.url.charAt(0)?d.compile(a.url.substring(1)+"*rest"):c.concat(a.url+"*rest")},this.get=function(){return b.extend({},k)};var p=["$log","$location",function(a,b){a.debug("Unable to map "+b.path())}];c.otherwise(h),c.otherwise=function(a){if(b.isString(a)){var d=a;a=function(){return d}}else if(!b.isFunction(a))throw new Error("'rule' must be a function");return p=a,c};var q={getResolvePromise:function(){return i()}};this.$get=["$injector","$state","$q","$rootScope","$urlRouter","$timeout","$log",function(c,d,e,h,j,k,n){function p(){if(h.$on("$stateNotFound",function(b,e,h,i){if(!l){n.debug("event, unfoundState, fromState, fromParams",b,e,h,i);var j=f(d,{name:e.to});if(j){b.preventDefault(),l=!0;var k=g(c,j);k.then(function(b){b.forEach(function(b){b&&(!d.get(b)||b.name&&!d.get(b.name))&&a.state(b)}),d.go(e.to,e.toParams),l=!1},function(a){console.log("failed to lazy load state ",a),d.go(h,i),l=!1})}}}),!i){var o=[];b.forEach(m,function(a){o.push(c.invoke(a))}),i=function(){return e.all(o)}}i().then(function(){k(function(){d.transition?d.transition.then(j.sync,j.sync):j.sync()})})}return p(),q.state=a.state,q.futureState=o.futureState,q.get=o.get,q}]}]),b.module("ct.ui.router.extras").run(["$futureState",function(){}]),b.module("ct.ui.router.extras").service("$previousState",["$rootScope","$state",function(a,b){var c=null,d={},e=null;a.$on("$stateChangeStart",function(a,b,d,f,g){e=c,c={state:f,params:g}}),a.$on("$stateChangeError",function(){c=e,e=null}),a.$on("$stateChangeSuccess",function(){e=null});var f={get:function(a){return a?d[a]:c},go:function(a,c){var d=f.get(a);return b.go(d.state,d.params,c)},memo:function(a,e,f){d[a]=c||{state:b.get(e),params:f}},forget:function(a){delete d[a]}};return f}]),b.module("ct.ui.router.extras").run(["$previousState",function(){}]),b.module("ct.ui.router.extras").config(["$provide",function(a){a.decorator("$state",["$delegate","$rootScope","$q","$injector",function(a,c,d,e){function f(a){var c=e.invoke,d=e.instantiate;return e.invoke=function(d,e,f){return c(d,e,b.extend({$transition$:a},f))},e.instantiate=function(c,e){return d(c,b.extend({$transition$:a},e))},function(){e.invoke=c,e.instantiate=d}}function g(){m.pop()(),l.pop(),k--}function h(a,b){return function(d){return g(),c.$broadcast("$transitionSuccess",b),a.resolve(d)}}function i(a,b){return function(d){return g(),c.$broadcast("$transitionError",b,d),a.reject(d)}}var j=a.transitionTo,k=-1,l=[],m=[];return a.transitionTo=function(){var b=d.defer(),c=l[++k]={promise:b.promise};m[k]=function(){};var e=j.apply(a,arguments);return e.then(h(b,c),i(b,c))},c.$on("$stateChangeStart",function(a,d,e,g,h){var i=k,j=b.extend(l[i],{to:{state:d,params:e},from:{state:g,params:h}}),n=f(j);m[i]=n,c.$broadcast("$transitionStart",j)}),a}])}])}(window,window.angular);
(function (){
  'use strict';
angular
    .module('layouts')
    .controller('sideBarCtrl',sideBarCtrl);
  
 sideBarCtrl.$inject = ['$scope','$location','$state','$stateParams','$rootScope'];

 function sideBarCtrl($scope,$location,$state,$stateParams,$rootScope){

 	/* jshint validthis: true */
 	var vm = this;
 	vm.clientState=$state.$current.name;
 	 vm.showClient = false;
 	  vm.showSolution = false;
 	  
 	  vm.c =$state.includes('top.clients');
 	  vm.s =$state.includes('top.solutions');
 	  
 	vm.setVisibleTab = function(tab){
 	 
 	   vm.c =$state.includes('top.clients');
 	   vm.s =$state.includes('top.solutions');
 	   
 	     if(tab ==="client"){
 	          vm.showClient = true;
 	        vm.showSolution = false;
 	  
 	     }
 	     else
 	     {
 	        vm.showClient = false;
 	        vm.showSolution = true;
 	  
 	     }
 	     
 	  
 	  
 	};
 	

  $rootScope.$on('$stateChangeSuccess', function() {
    	//set location for client
    	vm.clientState = $state.$current.name;

    });

    /*$rootScope.$on('changeClientState', function() {
    	//set location for client
    	vm.clientState = $location.path();

    })


   $rootScope.$on('$locationChangeSuccess', function(){
   		//alert('new location= '+ $location.path() + ' state Params = '+ $stateParams.clientID);

   		if($stateParams.clientID != undefined   )
   		{
   			vm.clientState =$location.path();
   		}
   		else if($location.path() =='/home/client' && vm.clientState !="")
   		{	
   				vm.setClientLocation();		
   		}
   		else{
   			 //$location.path('home/client');
   		}

   });;*/
}





 
 })();
(function() {
  'use strict';

  angular
    .module('layouts')
    .controller('clientCtrl', clientCtrl);

  clientCtrl.$inject = ['$scope', '$location', '$rootScope'];

  function clientCtrl($scope, $location, $rootScope, stateService) {
    /* jshint validthis: true */
    //    var $scope = this;
    //$scope.currlocation = $location.path();
    $scope.selClient = {};

    $scope.clients = [];

    for (var i = 1; i <= 100; i++) {
      //var x = i;
      var client = {};
      client.name = "Client " + i;
      client.id = i;



      $scope.clients.push(client);

    }
    $scope.selectClient = function(client) {


      $scope.selClient = client;
      //var m = stateService.scrollTop;
      //alert('value of scrollTop from stateService '+m);

      //$rootScope.$broadcast('changeClientState',"/home/client/"+$scope.selClient.id)//, author);

    };

    onActivation($location);

  }

  function onActivation($location) {
    // alert('yes client ctrl active');


  }


})();