define [
	"base"
	"ide/permissions/PermissionsManager"
], (App, PermissionsManager) ->
	
	POLLING_INTERVAL = 15
	ONE_MIN_MILI = 1000 * 60

	cachedState =
		gotLinkStatus: false
		startedLinkProcess: false
		userIsLinkedToDropbox: false
		hasDropboxFeature: false


	App.controller "DropboxController", ($scope, $modal, ide) ->
		$scope.openDropboxModal = () ->

			$modal.open {
				templateUrl: "dropboxModalTemplate"
				controller: "DropboxModalController"
				scope:$scope
			}

	App.controller "DropboxModalController", ($scope, $modalInstance, ide, $timeout) ->
		user_id = ide.$scope.user.id

		$scope.dbState = cachedState
		$scope.dbState.hasDropboxFeature = $scope.project.features.dropbox
		
		calculatePollTime = ->
			ide.socket.emit "getLastTimePollHappned", (err, lastTimePollHappened)=>
				milisecondsSinceLastPoll = new Date().getTime() - lastTimePollHappened
				roundedMinsSinceLastPoll = Math.round(milisecondsSinceLastPoll / ONE_MIN_MILI)

				$scope.dbState.minsTillNextPoll = POLLING_INTERVAL - roundedMinsSinceLastPoll
				$scope.dbState.percentageLeftTillNextPoll = ((roundedMinsSinceLastPoll / POLLING_INTERVAL) * 100)
				$timeout calculatePollTime, 60 * 1000

		ide.socket.emit "getUserDropboxLinkStatus", user_id, (err, status)=>
			if status.registered 
				calculatePollTime()
				$scope.dbState.userIsLinkedToDropbox = true
				$scope.dbState.gotLinkStatus = true
				cachedState = $scope.dbState
		
		$scope.linkToDropbox = ->
			window.open("/user/settings#dropboxSettings")
			$scope.startedLinkProcess = true

		$scope.cancel = () ->
			$modalInstance.dismiss()
