app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', function ($routeProvider, $httpProvider, $locationProvider, config) {
    var rootPath = config.rootPath;
    var resolve = {
        delay: ['auth',function(auth){
            return auth.get_bind();
        }]
    };
    var makeRoute = function(path, ctrl){
        return {
            templateUrl: rootPath + path,
            controller: ctrl
            //resolve: resolve
        }
    }
    //$locationProvider.html5Mode(true);
    $routeProvider
        .when('/login', {
            templateUrl: rootPath + 'login.html',
            controller: 'LoginController'
        })
        .when('/reg', {
            templateUrl: rootPath + 'reg.html',
            controller: 'RegController'
        })
        .when('/activites', makeRoute('activities.html', 'ActivityController'))
        .when('/issues', makeRoute('issue_detail.html', 'IssueController'))
        .when('/project_discussion', makeRoute('project_discussion.html', 'DiscussionController'))
        .when('/homework', makeRoute('homework_detail.html', 'HomeworkController'))
        .when('/course_notice', makeRoute('course_notice.html', 'CourseNoticeController'))
        .when('/course_discussion', makeRoute('course_discussion.html', 'DiscussionController'))
        .when('/journal_for_message', makeRoute('jour_message_detail.html', 'JournalsController'))
        .when('/blog_comment', makeRoute('blog_detail.html', 'BlogController'))
        .when('/class', makeRoute('class.html', 'ClassController'))
        .when('/new_class', makeRoute('new_class.html', 'NewClassController'))
        .when('/edit_class', makeRoute('edit_class.html', 'EditClassController'))
        .when('/edit_class_group', makeRoute('edit_class_group.html', 'EditClassGroupController'))
        .when('/class_list', makeRoute('class_list.html', 'ClassListController'))
        .when('/edit_class_member', makeRoute('edit_class_member.html', 'EditClassMemberController'))
        .when('/myresource', makeRoute('myresource.html', 'MyResourceController'))
        .when('/invite_code', {templateUrl: rootPath + 'invite_code.html', controller: 'InviteCodeController'})
        .when('/send_class_list', makeRoute('send_class_list.html', 'SendClassListController'))
        .when('/join_class', makeRoute('join_class.html', 'JoinClassController'))
        .when('/join_classgroup', makeRoute('join_classgroup.html', 'JoinClassGroupController'))
        .when('/review_class_member', makeRoute('review_class_member.html', 'ReviewClassMemberController'))
        .when('/select_my_coursegroup', makeRoute('select_my_coursegroup.html', 'SelectMyCourseGroupController'))
        .when('/class_publishnotice', makeRoute('class_publishnotice.html', 'ClassPublishNoticeController'))
        .when('/class_publishissue', makeRoute('class_publishissue.html', 'ClassPublishIssueController'))
        .when('/class_group', makeRoute('class_group.html', 'ClassGroupController'))
        .when('/project_list', makeRoute('project_list.html', 'ProjectListController'))
        .when('/project', makeRoute('project.html', 'ProjectController'))
        .when('/edit_project_member', makeRoute('edit_project_member.html', 'EditProjectMemberController'))
        .when('/new_project', makeRoute('new_project.html', 'NewProjectController'))
        .when('/project_invite_code', {templateUrl: rootPath + 'project_invite_code.html', controller: 'ProjectInviteCodeController'})
        .when('/join_project', makeRoute('join_project.html', 'JoinProjectController'))
        .when('/review_project_member', makeRoute('review_project_member.html', 'ReviewProjectMemberController'))
        .when('/project_publishnote', makeRoute('project_publishnote.html', 'ProjectPublishNoteController'))
        .when('/login_tip', makeRoute('login_tip.html', 'LoginTipController'))
        .when('/edit_userinfo', makeRoute('edit_userinfo.html', 'EditUserInfoController'))
        .otherwise({
            redirectTo: '/activites'
        });

    //监听异步请求,实现加载中显隐标记
    $httpProvider.interceptors.push(['$q', '$rootScope', function ($q, $rootScope) {
        if ($rootScope.activeCalls == undefined) {
            $rootScope.activeCalls = 0;
        }

        return {
            request: function (config) {
                $rootScope.activeCalls += 1;
                return config;
            },
            requestError: function (rejection) {
                $rootScope.activeCalls -= 1;
                return rejection;
            },
            response: function (response) {
              // var data = response.data;
              // if(data && data.status==405){
              //   var rootScope = $injector.get('$rootScope'); 
              //   var state = $injector.get('$rootScope').$state.current.name; 
              //   rootScope.stateBeforLogin = state; 
              //   rootScope.$state.go("login"); 
              //   return $q.reject(response);
              // }
                $rootScope.activeCalls -= 1;
                return response;
            },
            responseError: function (rejection) {
                $rootScope.activeCalls -= 1;
                return rejection;
            }
        };
    }]);
}]);
