/**
 * @author trixta
 */
(function($){  
	function prepareBuffer()
	{
	    var objNew = document.createElement('p');
	    var objHidden = document.createElement('input');
	
	    objHidden.setAttribute('type', 'hidden');
	    objHidden.setAttribute('value', '1');
	    objHidden.setAttribute('id', 'virtualbufferupdate');
	    objHidden.setAttribute('name', 'virtualbufferupdate');
	    objNew.appendChild(objHidden);
	    document.body.appendChild(objNew);
	}
	function updateBuffer()
	{
	    var objHidden = document.getElementById('virtualbufferupdate');
				
	    if (objHidden)
	    {
	        if (objHidden.getAttribute('value') == '1'){
	            objHidden.setAttribute('value', '0');
			} else {			
	            objHidden.setAttribute('value', '1');
			}
	    }
	}
	
	$(prepareBuffer);
   
     function addTabindex(jElm){  
         if(!jElm.is('a[href], area, input, button, select, textarea')){  
             jElm.attr({tabindex: '-1'});  
         }  
         return jElm;  
     }
	  
	var focusTimer;  
	$.fn.setFocus = function(time){  
		if(!this[0]){return this;}  
		var jElm = $(this[0]);  
		clearTimeout(focusTimer); 
		addTabindex(jElm);
		setTimeout(updateBuffer, 0); 
		focusTimer = setTimeout(function(){  
			try{  
				jElm[0].focus();  
			} catch(e){}  
		}, time || 1);  
		return this;  
	};  
       
})(jQuery); 