(function(){

  angular
	.module("iz.core")
    .service("$hyphenator",$hyphenator)
	.service("UtilService",UtilService)
	.factory("TemplateService",TemplateService);



$hyphenator.$inject = [];
UtilService.$inject = ['$hyphenator'];
TemplateService.$inject = ['$http','Logger'];



function $hyphenator(){
  
  var languageHasBeenLoaded = false;
 
   return {
  	 hyphenate:hyphenate
   }; 
  
 function hyphenate(longTextOrDom,lang){
	
	if(!longTextOrDom){
		return "";
	}
	
	if(Hyphenator.languages&&Hyphenator.languages.de){
		languageHasBeenLoaded = true;
	}else{
		languageHasBeenLoaded = false;
	}
			
	return languageHasBeenLoaded ? Hyphenator.hyphenate(longTextOrDom, lang) : longTextOrDom;
  }
 
}

function UtilService($hyphenator){
  
     return {
		chunkArray : chunkArray,
  		hyphenateText : hyphenateText
 	 };
  
	 function hyphenateText(longText){
			return $hyphenator.hyphenate(longText, "de");
	 }
  
     function chunkArray(arr, len) {
		var chunks = [],
			i = 0,
			n = arr.length;
		while (i < n) {
		  chunks.push(arr.slice(i, i += len));
		}
		return chunks;
	  }
    
}

function TemplateService($http,Logger) {
	return {
		get: get,
	    getTemplateContentById: getTemplateContentById,
		getTemplateContentByName: getTemplateContentByName 
	};
	
	
	function get(id) {
		var request = {
				method: 'GET',
				url: "/api/templates/" + id
		}
		
		return $http(request).then(success);
		
		function success(response) {
			return response.data;
		}
	}

	function getTemplateContentById(templateId){
		var request = {
				method: 'GET',
				url: '/api/templates/'+templateId+'/render'
		};

		return $http(request).then(success);

		function success(response) {
			return response.data;
		}
	}
  
  	function getTemplateContentByName(name){
		var request = {
				method: 'GET',
				url: '/api/templates/name/'+name+'/render'
		};

		return $http(request).then(success);

		function success(response) {
			return response.data;
		}
	}
}
  
  
  
  
}());
