/*
 *渲染器
 * */
var ARender = {
    render:function(/*dom-node*/dom_object){
        ARender._renderInputs_(dom_object);        
    },
    _renderInputs_:function(/*dom-node*/dom_object){
        var inputs = (dom_object || document).getElementsByTagName('input');
        var i=0, length=inputs.length;
        for(;i<length;++i){
            switch(inputs[i].type.toLowerCase()){
                case 'text':
                    switch(inputs[i].getAttribute('render')){
                        case 'text-render':
                            ATextRender.render(inputs[i]);
                            break;
                        case 'numeric-render':
                            ANumericRender.render(inputs[i]);
                            break;
                    }
                    break;                            
            }
        }
    }
};
/**
 *输入框渲染器
 *使用实例:
 *    <input class='text-input' type='text' render='text-render' tip='请输入...' nil-class='text-input nil-text-input'/>
 * render：指定渲染器
 * tip：输入框中值为空是的提示语
 * nil-class：出现提示语时输入框的样式
 *开放接口：
 *1. render   
        参数：dom_object      要渲染的dom对象
 * */
var ATextRender = {
	render:function(/*dom-node*/dom_object){
		if(!dom_object.rendered && dom_object.getAttribute('render')=='text-render'){
            dom_object.hasValue = dom_object.value==''?false:true;
			dom_object.defaultClass = dom_object.className;
			dom_object.nilClass = dom_object.getAttribute('nil-class');
            var tip = dom_object.getAttribute('tip');
            dom_object.onblur = function(){
				this.hasValue = this.value==''?false:true;
				if(!this.hasValue){
                    this.value = tip;
                }
				ATextRender._textClassTransform_.call(this);
            };
            dom_object.onfocus = function(){
				if(!this.hasValue){
                    this.value = '';
                }
				this.className = this.defaultClass;
            };
            dom_object.onkeypress = function(){
                this.hasValue = this.value==''?false:true;
            };
			dom_object.ondrop = function(){
				if(!this.hasValue){
					var event = arguments[0]||window.event;
					this.value = event.dataTransfer.getData('text');
					this.hasValue = true;
					ATextRender._textClassTransform_.call(this);
					if(window.ActiveXObject)
						return false;
				}
            };
			if(!dom_object.hasValue){
				ATextRender._textClassTransform_.call(dom_object);
				dom_object.value = tip;
			}
            dom_object.rendered = true;
        }
    },
	_textClassTransform_:function(){ //不开放
		this.className = this.hasValue?this.defaultClass:this.nilClass;
	}
};
/**
 *数字输入框渲染器
 * 使用实例：
 * <input class='numeric-input' type='text' render='numeric-render' />
 * */
var ANumericRender = {
    regexp:/^\-?\d+(\.\d+)?$/,
    stack:[],
    render:function(/*dom-node*/dom_object){
        if(!dom_object.rendered && dom_object.getAttribute('render')=='numeric-render'){
            dom_object.hasValue = ANumericRender.regexp.test(dom_object.value);
            dom_object.onblur = function(){
                this.hasValue = ANumericRender.regexp.test(this.value);
                if(!this.hasValue)
                    this.value = '';
            };
            dom_object.onkeypress = function(){
                var event = arguments[0]||window.event;
                var char = /^[\-\d\.]$/.exec(String.fromCharCode(event.keyCode || event.which));
                if(char==null)
                    return false;
                else{
                    if((char=='-' && this.value.length>0) || (char=='.' && !/^\-?\d+$/.test(this.value))){
                        return false;
                    }
                    this.hasValue = ANumericRender.regexp.test(this.value);
                    return true;
                }                
            };
            dom_object.ondrop = function(){
				if(!this.hasValue){
					var event = arguments[0]||window.event;
                    if(ANumericRender.regexp.test(event.dataTransfer.getData('text'))){
    					this.value = event.dataTransfer.getData('text');
	    				this.hasValue = true;
                    }
                    else{
                        event.returnValue = false;
                        return false;
                    }
					if(window.ActiveXObject)
						return false;
				}
            };
            dom_object.style.imeMode = 'disabled';
            dom_object.rendered = true;
        }
    }
};
/**
 *下拉框渲染器
 * 使用实例：
 * <select render='combo-box-render'><option value='1'>No.1</option></select>
 * */
var AComboBoxRender = {
    render:function(/*dom-node*/dom_object){
           
    }
};

