define(['app'], function (app) {
	'use strict';
	app.controller('MainCtrl', function ($rootScope, $scope, $timeout, $illustration, $t_shirt, $routeParams) {
		//Define and init var
		$('[data-toggle="tooltip"]').tooltip()
		$rootScope.API_URL = 'http://domain.com';
		$scope.designFrameView = 'views/tshirt-design.html?ver='+VERSION;
		$scope.designPartIllustration = 'views/design_part/illustration.html?ver='+VERSION;
		$scope.designPartImage = 'views/design_part/image.html?ver='+VERSION;
		$scope.designPartText = 'views/design_part/text.html?ver='+VERSION;
		$scope.designPartDefault = 'views/design_part/default.html?ver='+VERSION;
		var currentTShirtKey = 0;
		var placeTShirtKey = '';
		var tShirtColorFirstKey = 0;
		$scope.hideReviewDesign = false;
		$scope.tShirtChoiceBackFrontKey = 'front';
		$scope.tShirtColorKey = tShirtColorFirstKey;

		/**
		 * Get param route
		 * @type {any}
		 * @private
		 */
		var _routeParams = $routeParams;
		if(typeof _routeParams.tShirt != 'undefined')
			currentTShirtKey = _routeParams.tShirt - 1;
		if(typeof _routeParams.place != 'undefined')
			placeTShirtKey = _routeParams.place;

		/**
		 * Get all info TShirt
		 * @param: id
		 * @return: object
		 */
		$rootScope.placeTshirt = $t_shirt.getTShirtPlace(currentTShirtKey, placeTShirtKey);
		$scope.tShirtColor = $t_shirt.getTShirtColor(currentTShirtKey);
		$rootScope.tShirtColorCode = $scope.tShirtColor[tShirtColorFirstKey].code;
		$scope.tShirtColorName = $scope.tShirtColor[tShirtColorFirstKey].name;
		$scope.tShirtImgFront = $scope.tShirtColor[tShirtColorFirstKey].img.front;
		$scope.tShirtImgBack = $scope.tShirtColor[tShirtColorFirstKey].img.back;
		$scope.tShirtImg = $scope.tShirtImgFront;

		/**
		 * Set preview size and position
		 */
		function setSizePreViewDesign() {
			var _widthTShirtImage = $('.tshirt-image').width();
			if(typeof $rootScope.placeTshirt.place == 'undefined')
				return;

			var place = $rootScope.placeTshirt.place;
			switch (place) {
				case 't_shirt_p_1' :
					var widthPreview = _widthTShirtImage/2.5;
					var heihtPreview = _widthTShirtImage/2.5;
					break;
				case 't_shirt_p_2' :
					var widthPreview = _widthTShirtImage/2.5;
					var heihtPreview = _widthTShirtImage/4.5;
					break;
				default:
					break;
			}
			$('#preview-design').css({width: widthPreview, height: heihtPreview});
		}
		setSizePreViewDesign();
		$(window).resize(function () {
			setSizePreViewDesign();
		});
		/**
		 * Choice color t-shirt
		 * @param key
		 */
		$scope.choiceTShirtColor = function(key) {
			$scope.tShirtColorKey = key;
			var tShirtColor = $scope.tShirtColor[key];
			$rootScope.tShirtColorCode = tShirtColor.code;
			$scope.tShirtColorName = tShirtColor.name;
			$scope.tShirtImgFront = tShirtColor.img.front;
			$scope.tShirtImgBack = tShirtColor.img.back;
			if($scope.tShirtChoiceBackFrontKey == 'front') {
				$scope.tShirtImg = $scope.tShirtImgFront;
			} else {
				$scope.tShirtImg = $scope.tShirtImgBack;
			}
		};
		/**
		 * Choice back or front t-shirt
		 * @param choice
		 */
		$scope.choiceTShirtBackFront = function(choice) {
			if(choice == 'front') {
				$scope.tShirtImg = $scope.tShirtImgFront;
			} else {
				$scope.tShirtImg = $scope.tShirtImgBack;
			}
			$scope.tShirtChoiceBackFrontKey = choice;
		};

		//safeApply
		$rootScope.safeApply = function(fn) {
			var phase = this.$root.$$phase;
			if(phase == '$apply' || phase == '$digest') {
				if(fn && (typeof(fn) === 'function')) {
					fn();
				}
			} else {
				this.$apply(fn);
			}
		};
		/**
		 * Open modal design
		 */
		$scope.modalTShirtDesign = function() {
			$('#tshirt-design').modal(
				{
					backdrop: 'static',
					keyboard: false
				}
			);

		};
		/**
		 * Close modal design
		 */
		$scope.modalClose = function(){
			$('#tshirt-design').modal('hide');
		};
		/**
		 *Show/Hide review design
		 */
		$scope.hideShowReviewDesign = function () {
			if($scope.hideReviewDesign == true)
				$scope.hideReviewDesign = false;
			else
				$scope.hideReviewDesign = true;
		}


	});
});
