/**
 * Paginador
 * @constructor
 */
compono.ListPager = new compono.Object("ListPager");

/**
 * Somente numeros
 */
compono.ListPager.Pattern = /^\d+$/;

/**
 * Controla os eventos adicionados no campo
 * @param {Element} input
 * @param {Function} callback
 * @param {Event} e
 */
compono.ListPager.focus = function(input, callback, e){
	input.select();
	if(!input.observed){
		input.callback = callback;
		this.Event.add("keydown", this.key, input);
		input.observed=true;
	}
}


/**
 * Controla os keyvalues digitados no campo;
 * @param {Object} input
 * @param {Object} e
 */
compono.ListPager.key = function(e){
	if(!e)e=window.event;
	c = compono.ListPager;
	
	switch(e.keyCode){
		case 107: /*Plus*/
		case 34: /*Page Down*/
		case 39: /*Right*/
			c.exec(this, "next", e);
			break;
		case 109: /*Minus*/
		case 33: /*Page Up*/
		case 37: /*Left*/
			c.exec(this, "previous", e);
			break;
		case 36: /*Home*/
		case 38: /*UP*/
			c.exec(this, "first", e);
			break;
		case 35: /*End*/
		case 40: /*DOWN*/
			c.exec(this, "last", e);
			break;
		case 13: /* ENTER */
			c.exec(this, this.value, e);
			c.Event.preventDefault(e);
		default:
			/* Numeros 48 ate 57 e 96 ate 105 */
			if(e.keyCode < 48 && e.keyCode > 57 
				&& e.keyCode < 96 && e.keyCode > 105){
					c.Event.preventDefault(e);
					return false;
			}
			return true;
	}
	return true;
}


/**
 * Executa o callback limpando o ID para a sintaxe do .net;
 * @param {Element} input
 * @param {String} v
 * @param {Event} e
 */
compono.ListPager.exec = function(input, v, e){
	this.Event.preventDefault(e);
	if(input.callback && typeof(input.callback) == "function"){
		var n;
		n = input.name.replace(":input", "");
		n = n.replace(/:/g,"$");
		input.callback(n, v);
	}
}

