/*
	dynamic-text.js
*/
var DynamicText = Obj.extend({
	// private
	_element: null,
	_options: null,
	_parent: null,
	_lastInputTimeoutID: 0,

	ANALYSE_URL_G2_TEXT: function(page, limit, lang){
            return  (lang==null)?
                    ("/service/problems/page/"+page+"/size/"+limit+"/search/criteria/text/visible/xml"):
                    ("/service/problems/page/"+page+"/size/"+limit+"/search/criteria/text/language/"+lang+"/visible/xml");
		},    
    
	// public
	init: function(parent, element, options){
			var self = this;

			this._parent	= parent;
			this._element 	= element;
			this._options	= options;

			// add keydown handler
			$(this._element)
				.keydown(function(){
					self.inputHandler();
			});
	
		},	
		
	inputHandler: function(){
			var self = this;
   			
   			this._options.logHandler("|DynamicText.inputHandler|");
   	
   			this._lastInputTimeoutID++;
   			var localInputTimeoutID = this._lastInputTimeoutID;
   			
   			setTimeout(function(){
   					self._options.logHandler("  inputTimeoutID: "+localInputTimeoutID+"/"+self._lastInputTimeoutID);
   					
   					// analyse text when no more key was pressed
   					if(localInputTimeoutID == self._lastInputTimeoutID){
   						// analyse text when it is no hint
   						if( !($(".description", self._element).hasClass("ui_hint_input")) ){
   							self.analyse(
   								$(self._element).attr("value")
   							);
   						}
   					}
   				},
   				500);
   		},
        
	analyse: function(text){
			this._options.logHandler("|DynamicText.analyse|");
			this._options.logHandler("  text: "+text);			
	
    		var self = this;
    		
            // send request to the server
            this._options
                .ajax.post({
                    path: self.ANALYSE_URL_G2_TEXT(0, this._options.problemLimit, this._options.lang),
                    data: text,
                    success: function(problemsXML){
                        self._parent.textAnalysedHandler(problemsXML);
                    }
                });					
		},
        
    getText: function(){
            return $(this._element).attr("value");
        }
});
