
/*!
 * jQuery UI Widget-factory plugin boilerplate (for 1.8/9+)
 * Author: @addyosmani
 * Further changes: @peolanha
 * Licensed under the MIT license
 *http://jqueryui.com/demos/widget/
 TIMER
 http://bililite.com/blog/extending-jquery-ui-widgets/ GUTE ADDRESSE
 */



;(function ( $, window, document, undefined ) {
 





	
    $.widget( "CE.SessionStep_MiniRatingVis.js" , $.CE.DataElement,{
	

        options: { 

                ObjName: 'MiniRatingVis',
                ParticipantID: 0,
                ActivRatingSessionID:0,
                debug_it:true,
                RatingModus:'local_pre_rating',
                RelatedIdeaRatings:'',
                isParticipantSelf: false,
                SIGNAL_NAME:'',
                is_global:false,
                enabled: true
        },
        _init: function(){

        	var w=this, e=w.element, o=w.options;
        	
			w._initDataElement();
			
			if(o.isParticipantSelf==true)
			{
				e.addClass('CE-StepSlide-Rating-Mini-isParticipantSelf');
			}
			
			e.append('<div class="CE-StepSlide-Rating-Mini-Left"></div>');
			e.append('<div class="CE-StepSlide-Rating-Mini-Middle"></div>');
			e.append('<div class="CE-StepSlide-Rating-Mini-Right"></div>');
			e.append('<div class="CE-StepSlide-Rating-Mini-Top"></div>');
			
			e.append('<div class="CE-StepSlide-Rating-Mini-Name"></div>');
			
			e.append('<span class="CE-StepSlide-Rating-Mini-Items-AnimatedHandle" AnimatedHandelNr="0"/>');
			e.append('<span class="CE-StepSlide-Rating-Mini-Items-AnimatedHandle" AnimatedHandelNr="1"/>');
			e.append('<span class="CE-StepSlide-Rating-Mini-Items-AnimatedHandle" AnimatedHandelNr="2"/>');
			e.append('<span class="CE-StepSlide-Rating-Mini-Items-AnimatedHandle" AnimatedHandelNr="3"/>');
			e.append('<span class="CE-StepSlide-Rating-Mini-Items-AnimatedHandle" AnimatedHandelNr="4"/>');
			e.append('<span class="CE-StepSlide-Rating-Mini-Items-AnimatedHandle" AnimatedHandelNr="5"/>');
			
			w._createItemsForRelatedIdeaRatings();
			
			
			
			
			e.find('.CE-StepSlide-Rating-Mini-Items-AnimatedHandle').css('opacity', '0');
			
			w._setNameforParticipantID();
			
			//debug(o.ObjName+'_init_forParticipant('+o.ParticipantID+') in ActiveRS('+o.ActivRatingSessionID+')',false,o.debug_it);

        },
        _setNameforParticipantID: function()
        {
        	var w=this, e=w.element, o=w.options;
        	
        	var Name=$('#db_datatables .data_table[DataTableName="Participant"] .data_row[data_DataID="'+o.ParticipantID+'"]').attr('data_ParticipantName');
        	
        	e.find('.CE-StepSlide-Rating-Mini-Name').html('<label>BEWERTER</label> '+Name);
        	
        },
        _createItemsForRelatedIdeaRatings: function()
        {
        	var w=this, e=w.element, o=w.options;

        		
        	o.RelatedIdeaRatings='';
        	
        	switch(o.RatingModus)
        	{
        		case 'local_pre_rating':
        			o.RelatedIdeaRatings=$('#db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_ParticipantID="'+o.ParticipantID+'"][data_SessionID="'+o.ActivRatingSessionID+'"]');
        		break;
        		case 'global_rating':
        			o.RelatedIdeaRatings=$('#db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_ParticipantID="'+o.ParticipantID+'"][data_SessionID="'+o.ActivRatingSessionID+'"]');
        		break;
        		case 'local_post_rating':
        			o.RelatedIdeaRatings=$('#db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_ParticipantID="'+o.ParticipantID+'"], #db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_global_rating="is_global_threshold"][data_SessionID="'+o.ActivRatingSessionID+'"]');
        		break;
        		
        		default:        		
        		break;        	
        	
        	}
        	
        	if(o.RelatedIdeaRatings.length==0 || o.RelatedIdeaRatings==undefined) return false;
        	        	
        	o.RelatedIdeaRatings.each(function(index)
        	{
        		 var IdeaName=w._getIdeaName($(this).attr('data_IdeaID'));
        	     var span='<span class="CE-StepSlide-Rating-Mini-Items" IdeaRatingID="'+$(this).attr('data_DataID')+'" isVisible="false" AnimatedHandelNr="'+index+'">'+IdeaName+'</span>';
        	     
        	     e.find('.CE-StepSlide-Rating-Mini-Middle').append(span);
        	});
        
        	w._updateItems();    
        	
        },_getIdeaName: function(IDEA_ID)
        {
        	var w=this, e=w.element, o=w.options;
        	
        	if(IDEA_ID==undefined || IDEA_ID=='') return '';
        	
        	var IdeaTitle=$('#db_datatables .data_table[DataTableName="Idea"] .data_row[data_DataID="'+IDEA_ID+'"]').attr('data_title'); 
  	

    	
        	if(IdeaTitle==undefined) return '';
        	
        	var IndexOfNr=IdeaTitle.indexOf('Nr');
        	
        	if(IndexOfNr>0)
        	{	
        		var NR=$.trim(IdeaTitle.substring((IndexOfNr+3)));
        		return NR;
        	}       	
        	return '';
        },  
        updateItems: function()
        {
        	var w=this, e=w.element, o=w.options;
        	w._updateItems();
        },      
        _updateItems: function()
        {
        	var w=this, e=w.element, o=w.options;

     		
     		if(o.enabled!=true) return false;
     		
     		
        	switch(o.RatingModus)
        	{
        		case 'local_pre_rating':
        			w._updateItems_local_pre_rating();
        		break;
        		case 'global_rating':
        			w._updateItems_global_rating();
        		break;
        		case 'local_post_rating':
        			w._updateItems_local_post_rating();
        		break;
        		
        		default:        		
        		break;        	
        	
        	}
        	
        	if(o.RatingModus=='local_pre_rating' || o.RatingModus=='local_post_rating' )
        	{
        		w._updateParticipantState();
        	}
        	
        	if(o.RatingModus=='global_rating')
        	{
        		w._updateAfterGettingGlobalRating();
        	
        	}
        },
        _updateItems_local_pre_rating: function()
        {
        	var w=this, e=w.element, o=w.options;

        	
        	o.RelatedIdeaRatings=$('#db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_ParticipantID="'+o.ParticipantID+'"][data_SessionID="'+o.ActivRatingSessionID+'"]');
        	
        	if(o.RelatedIdeaRatings.length==0 || o.RelatedIdeaRatings=='' || o.RelatedIdeaRatings==undefined) return false;

        	
        	o.RelatedIdeaRatings.each(function(index)
        	{       	    
				var IdeaMiniItem=e.find('.CE-StepSlide-Rating-Mini-Items[IdeaRatingID="'+$(this).attr('data_DataID')+'"]'); 
				
        	     IdeaMiniItem.removeClass('RATING_A_is_prereject RATING_A_is_preaccepted RATING_A_is_local_threshold RATING_A_is_not_rated');
        	     IdeaMiniItem.removeClass('GROUPDIS_is_reject GROUPDIS_is_accepted GROUPDIS_is_global_threshold GROUPDIS_is_not_rated GROUPDIS_is_rework');
        	     IdeaMiniItem.removeClass('RATING_B_is_postreject RATING_B_is_postaccepted RATING_B_is_not_rated');
        	    
        	    var RatingClasses='RATING_A_'+$(this).attr('data_local_pre_rating')+' ';
        	     IdeaMiniItem.addClass(RatingClasses);
				
				
				
				
        	     var ZielBereich='';
        	     var state_of_idea=$(this).attr('data_'+o.RatingModus);
        	      
        	      switch (state_of_idea) 
            	{        	
            		case 'is_not_rated':
            			ZielBereich='CE-StepSlide-Rating-Mini-Middle';
            			break;
               		case 'is_local_threshold':
            			ZielBereich='CE-StepSlide-Rating-Mini-Top';
            			break;
            		case 'is_preaccepted':
            			ZielBereich='CE-StepSlide-Rating-Mini-Right';
            			break;
            		case 'is_prereject':
            			ZielBereich='CE-StepSlide-Rating-Mini-Left';
            			break;
            		default:
               	 		ZielBereich='CE-StepSlide-Rating-Mini-Middle';
                	break;
           		}

           		w._moveIdeaInArea($(this).attr('data_DataID'), ZielBereich);

           });
        
        },
        _updateItems_local_post_rating: function()
        {
        	var w=this, e=w.element, o=w.options;

        	
        	o.RelatedIdeaRatings=$('#db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_ParticipantID="'+o.ParticipantID+'"], #db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_global_rating="is_global_threshold"][data_SessionID="'+o.ActivRatingSessionID+'"]');
        	
        	if(o.RelatedIdeaRatings.length==0 || o.RelatedIdeaRatings=='' || o.RelatedIdeaRatings==undefined) return false;
        	
        	o.RelatedIdeaRatings.each(function(index)
        	{
				var IdeaMiniItem=e.find('.CE-StepSlide-Rating-Mini-Items[IdeaRatingID="'+$(this).attr('data_DataID')+'"]'); 
				
        	     IdeaMiniItem.removeClass('RATING_A_is_prereject RATING_A_is_preaccepted RATING_A_is_local_threshold RATING_A_is_not_rated');
        	     IdeaMiniItem.removeClass('GROUPDIS_is_reject GROUPDIS_is_accepted GROUPDIS_is_global_threshold GROUPDIS_is_not_rated GROUPDIS_is_rework');
        	     IdeaMiniItem.removeClass('RATING_B_is_postreject RATING_B_is_postaccepted RATING_B_is_not_rated CE-StepSlide-Rating-Disabled_DragFunction');
        	    
        	     var RatingClasses='RATING_A_'+$(this).attr('data_local_pre_rating') +' GROUPDIS_'+$(this).attr('data_global_rating') +' RATING_B_'+$(this).attr('data_local_post_rating')+' ';
        	    
        	      var ZielBereich='';
        	      var state_of_idea=$(this).attr('data_global_rating');
        	      
        	      switch (state_of_idea) 
            	{        	
            		case 'is_global_threshold':
            			ZielBereich='CE-StepSlide-Rating-Mini-Top';
            			RatingClasses=RatingClasses+' CE-StepSlide-Rating-Disabled_DragFunction';
            			break;
            		case 'is_rework':
            			ZielBereich='CE-StepSlide-Rating-Mini-Middle';
            			break;
            		case 'is_accepted':
            			ZielBereich='CE-StepSlide-Rating-Mini-Right';
            			RatingClasses=RatingClasses+' CE-StepSlide-Rating-Disabled_DragFunction';
            			break;
            		case 'is_reject':
            			ZielBereich='CE-StepSlide-Rating-Mini-Left';
            			RatingClasses=RatingClasses+' CE-StepSlide-Rating-Disabled_DragFunction';
            			break;
            		default:
               	 		ZielBereich='';
                	break;
           		}
           		
           		 IdeaMiniItem.addClass(RatingClasses);
           		
           		
           		
           		if(ZielBereich=='' || state_of_idea=='is_rework')
           		{
           			state_of_idea=$(this).attr('data_local_post_rating');
           			
           			 switch (state_of_idea) 
            		{        	
            		case 'is_postaccepted':
            			ZielBereich='CE-StepSlide-Rating-Mini-Right';
            			break;
            		case 'is_postreject':
            			ZielBereich='CE-StepSlide-Rating-Mini-Left';
            			break;
            		case 'is_not_rated':
            			ZielBereich='CE-StepSlide-Rating-Mini-Middle';
            			break;
            		default:
               	 		ZielBereich='CE-StepSlide-Rating-Mini-Middle';
                	break;
           			}          		
           		}
	
           		w._moveIdeaInArea($(this).attr('data_DataID'), ZielBereich);
        	    
        	}); 	
        
        },
        _updateItems_global_rating: function()
        {
        	var w=this, e=w.element, o=w.options;
        
        	o.RelatedIdeaRatings=$('#db_datatables .data_table[DataTableName="Idea_Rating_Participant"] .data_row[data_ParticipantID="'+o.ParticipantID+'"][data_SessionID="'+o.ActivRatingSessionID+'"]');
        
        	if(o.RelatedIdeaRatings.length==0 || o.RelatedIdeaRatings=='' || o.RelatedIdeaRatings==undefined) return false;
        	if(o.enabled!=true) return false;
        	
        	o.RelatedIdeaRatings.each(function(index)
        	{ 
				var IdeaMiniItem=e.find('.CE-StepSlide-Rating-Mini-Items[IdeaRatingID="'+$(this).attr('data_DataID')+'"]'); 
  				
  				IdeaMiniItem.removeClass('RATING_A_is_prereject RATING_A_is_preaccepted RATING_A_is_local_threshold RATING_A_is_not_rated');
        	     IdeaMiniItem.removeClass('GROUPDIS_is_reject GROUPDIS_is_accepted GROUPDIS_is_global_threshold GROUPDIS_is_not_rated GROUPDIS_is_rework');
        	     IdeaMiniItem.removeClass('RATING_B_is_postreject RATING_B_is_postaccepted RATING_B_is_not_rated');
        	    
        	    var RatingClasses='RATING_A_'+$(this).attr('data_local_pre_rating') +' GROUPDIS_'+$(this).attr('data_global_rating')+' ';
        	     IdeaMiniItem.addClass(RatingClasses);

        	    var ZielBereich='';
        	    var state_of_idea=$(this).attr('data_local_pre_rating');  
        	      
        	      switch (state_of_idea) 
            	{        	
            		case 'is_not_rated':
            			ZielBereich='CE-StepSlide-Rating-Mini-Middle';
            			break;
               		case 'is_local_threshold':
            			ZielBereich='CE-StepSlide-Rating-Mini-Top';
            			break;
            		case 'is_preaccepted':
            			ZielBereich='CE-StepSlide-Rating-Mini-Right';
            			break;
            		case 'is_prereject':
            			ZielBereich='CE-StepSlide-Rating-Mini-Left';
            			break;
            		default:
               	 		ZielBereich='CE-StepSlide-Rating-Mini-Middle';
                	break;
           		}
	
           		w._moveIdeaInArea($(this).attr('data_DataID'), ZielBereich);
        	});
  	
        },       
        _updateParticipantState: function()
        {
        	var w=this, e=w.element, o=w.options;
        	
        	if(o.is_global==true) return false;
        	
        	var hasParticipantSignal=w._hasASpecialParticipantSignal(o.SIGNAL_NAME, o.ParticipantID);
        	
        	if(hasParticipantSignal)
        	{
        		e.addClass('CE-StepSlide-Rating-Mini-hasSignal');
        		e.removeClass('CE-StepSlide-Rating-Mini-hasNoSignal');
        	}else
        	{
        		e.removeClass('CE-StepSlide-Rating-Mini-hasSignal');
        		e.addClass('CE-StepSlide-Rating-Mini-hasNoSignal');
        	
        	}	
        },
        _updateAfterGettingGlobalRating: function()
        {
        	var w=this, e=w.element, o=w.options;
        
        	var thresholdelement=e.find('.RATING_A_is_local_threshold');
        	var GlobalRating=0;
        	
        	if(thresholdelement.hasClass('GROUPDIS_is_reject')) GlobalRating=0;
			if(thresholdelement.hasClass('GROUPDIS_is_accepted')) GlobalRating=4;
			if(thresholdelement.hasClass('GROUPDIS_is_global_threshold')) GlobalRating=3;
			if(thresholdelement.hasClass('GROUPDIS_is_not_rated')) GlobalRating=1;
			
			e.removeClass('CE-StepSlide-Rating-Mini-is_reject').removeClass('CE-StepSlide-Rating-Mini-is_accepted');
			e.removeClass('CE-StepSlide-Rating-Mini-is_global_threshold').removeClass('CE-StepSlide-Rating-Mini-is_not_rated');
			
			switch(GlobalRating)
			{
				case 0:
					e.addClass('CE-StepSlide-Rating-Mini-is_reject');				
				break;
				case 1:
					e.addClass('CE-StepSlide-Rating-Mini-is_not_rated');				
				break;
				case 4:
					e.addClass('CE-StepSlide-Rating-Mini-is_accepted');				
				break;
				case 3:
					e.addClass('CE-StepSlide-Rating-Mini-is_global_threshold');				
				break;
				default:
				
				break;
			}
        
        },    
        _hasASpecialParticipantSignal: function(Signal, PID)
        {
        
        	var w=this, e=w.element, o=w.options;
        
        	var SignalString=$('#db_datatables .data_table[DataTableName="Participant"] .data_row[data_DataID="'+PID+'"]').first().attr('data_array_of_states');	
        	
        	if(SignalString==undefined || SignalString=='0' || SignalString==0 || PID==0 || PID=='0' || PID == undefined)
        	{
        		return false;
        	}
        	
        	SignalString=SignalString.split(',');
        	
        	if(SignalString==false) return false;
     		
     		for(var i=0; i< SignalString.length; i++)
     		{
     			if(SignalString[i]==Signal)
     			{
     				return true;
     			}
     		}
     		
     		return false;
        
        
        },
        _moveIdeaInArea: function(IdeaRatingID, Bereich)
        {
        	w=this, e=w.element, o=w.options;
        	
        	if(o.enabled!=true) return false;
        	
        	var VisibleItem=e.find('span[idearatingid="'+IdeaRatingID+'"]');
        	
        	if(VisibleItem.attr('class')==undefined) return false;
        	
			var ParentOfVisibleItem=VisibleItem.parent();
			
			
			if(VisibleItem.is(':hidden'))
				{
					VisibleItem.fadeIn(10);
				}
			
			
			//debug(o.ObjName+'_moveIdeaInArea(if('+(ParentOfVisibleItem.hasClass(Bereich)!=true)+'))',false,o.debug_it);
			
			if(ParentOfVisibleItem.hasClass(Bereich)!==true)
			{
				
				//debug(o.ObjName+'_moveIdeaInArea('+VisibleItem.html()+'-> '+Bereich+')',false,o.debug_it);
				
				var NextItem=VisibleItem.appendTo(e.find('.'+Bereich));
	
				VisibleItem=NextItem.clone().appendTo(ParentOfVisibleItem);  
				NextItem.css('opacity', '0.15');  
			
        		var PosLeftVisElement=VisibleItem.position().left+VisibleItem.parent().position().left;
        		var PosTopVisElement=VisibleItem.position().top+VisibleItem.parent().position().top;
        		
        		var PosLeftNextElement=NextItem.position().left+NextItem.parent().position().left;
        		var PosTopNextElement=NextItem.position().top+NextItem.parent().position().top;

        		var AnimationElement=e.find('.CE-StepSlide-Rating-Mini-Items-AnimatedHandle[AnimatedHandelNr="'+VisibleItem.attr('AnimatedHandelNr')+'"]');

        		AnimationElement.css('top', PosTopVisElement+'px');
        		AnimationElement.css('left', PosLeftVisElement+'px');
        		
        		VisibleItem.animate(
        		{
        			opacity:0.0
        		}, 200, 
        		function()
        			{
        				VisibleItem.remove();
        				
        			}
        		);

				AnimationElement.animate(
        		{
        			opacity:1
        		}, 200, 
        		function()
        		{
        			AnimationElement.animate(
        			{
        			 	left: PosLeftNextElement+'px',
        			 	top: PosTopNextElement+'px'
        			}, 500, 
        			
        			function()
        			{
						NextItem.animate({opacity:1}, 200, function()
						{
							NextItem.css('opacity', '');  
						
						});
        				AnimationElement.animate({opacity:0}, 200);
        			});
        		});

			}

        		
        },
        _getDataFromDatatables: function(without_looking_on_changenumbers)
        {
        	var w=this, e=w.element, o=w.options;
        	
        	var last_change_number_global=$('#db_datatables').attr('last_change_number');
    	
        	var my_last_changenumber=Math.abs(o.last_change_number);
        	
        	
        	
        	if(my_last_changenumber<last_change_number_global)
        	{
        		//debug('<span style="color:#FFEE00">'+o.ObjName+'_getDataFromDatatables('+my_last_changenumber+' ? '+last_change_number_global+')########</span>',true,o.debug_it);
        		
        		w.setOption('last_change_number',last_change_number_global, true, false); 
        		w._updateItems(); 
        		 
        	}
        }
       
    });
    
    
 
  
 
})( jQuery, window, document );
