/*    _____                    _____          
     /\    \                  /\    \         
    /::\    \                /::\    \        
    \:::\    \              /::::\    \       
     \:::\    \            /::::::\    \      
      \:::\    \          /:::/\:::\    \     
       \:::\    \        /:::/  \:::\    \    
       /::::\    \      /:::/    \:::\    \   
      /::::::\    \    /:::/    / \:::\    \  
     /:::/\:::\    \  /:::/    /   \:::\    \ 
    /:::/  \:::\____\/:::/____/     \:::\____\
   /:::/    \::/    /\:::\    \      \::/    /
  /:::/    / \/____/  \:::\    \      \/____/ 
 /:::/    /            \:::\    \             
/:::/    /              \:::\    \            
\::/    /                \:::\    \           
 \/____/                  \:::\    \          
                           \:::\    \         
                            \:::\____\        
                             \::/    /        
                              \/____/         
                             TYPE/CODE        
                         From 2010 till ∞     */

// Dependencies:
// NI.field

(function(window, $) {
	
	var NI = window.NI;

//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

	NI.field.extensions.Counter = function(field, options) {
		var me, o, internal, elements, event_handlers;
		
		me = this;
		o = $.extend({
			max:100,
			difference:0,
			updated:function(e,d){},
			count_element:'.count',
			total_element:'.total'

		}, options);

		internal = {
			name:'TC.field Extension.SimpleTooltip',
			$e:null
		};

		elements = {
			count:(o.count_element instanceof $ ? o.count_element : field.$e.find(o.count_element)),
			total:(o.total_element instanceof $ ? o.total_element : field.$e.find(o.total_element))
		};

		function init(){
			field.event_receiver.bind('focus keyup change', {field:field}, event_handlers.updated);
		};

		event_handlers = {
			updated:function(e,d){
				o.difference = o.max - field.get_val().length;
				
				elements.count.text(o.difference);
				//elements.total.text(o.max);
				
				if (o.difference < 0) {
					elements.count.parent().addClass('too-many')
				} else {
					elements.count.parent().removeClass('too-many')
				};
			}	
		};


		init();

	};

}(this, this.jQuery));
