/**
 * @author Kalapuc Roman (rkalapuc@gmail.com)
 * @copyright Finport Technologies Inc
 * @since 2006
 * @version 1.0
 */

/**
* класс который наследуют все остальные UIContol-еры
* выполняется влидация 
*/
function wlpUIBaseControl(_name,_value,_parentId,_validators,_params){
	
	this.name = _name;
	this.value = _value;
	this.parentId = _parentId;
	this.ID = _parentId+'_'+_name;
	
	this.validatorStorage = new wlpArrayList(_validators);
	
	this.params = new wlpPropertyList(_params);
};
/**
* установка локального значения элемента
*/
wlpUIBaseControl.prototype.update = function(){	
    // добавил проыерку на наличие объекта 
    // перед тем как осуществлять доступ к его свойтсвам
    var _obj = $(this.ID);
    if(_obj){
    	this.value = $(this.ID).value;
    }
};
/**
* присвоение значения элементу
*/
wlpUIBaseControl.prototype.refresh = function(){
	$(this.ID).value = this.value;
};
/**
* очитска элемента 
* (если установлено дефолтное значение то устанавливается оно)
*/
wlpUIBaseControl.prototype.clear = function(){
	var _default = this.params.get('default');
	if (_default!==false){
		this.value = _default;
	} else {		
		this.value = '';
	}
	this.refresh();
};
/**
* check
*/
wlpUIBaseControl.prototype.validate = function(){
	this.update();	
	var iterator = this.validatorStorage.getIterator();
	
	while (iterator.hasNext){
		if (!iterator.current.name.validate(this.value)){
			return iterator.current.value;			
		}
		iterator.moveNext();
	}
	
	return true;
};

wlpUIBaseControl.prototype.addValidator = function(/*wlpValidator*/ validator){
	this.validatorList.add(validator);
};

wlpUIBaseControl.prototype.asProperty = function(){
	return new wlpProperty(this.name,this.value);
};


