/* text-prompt.js  */
(function(){
    var TextPrompt = function(el,attr){
        attr = attr || {};
        this.constructor.superclass.constructor.call(this, el, attr);
        _init.call(this);
    };
    YAHOO.extend(TextPrompt, YAHOO.util.Element);
    var proto = TextPrompt.prototype;
    var $E = YAHOO.util.Event;
    var $D = YAHOO.util.Dom;
    // 有哪些屬性供設定
    proto.initAttributes = function(attr){
        attr = attr || {};
        var el = this.get('element');
        var self = this;
        this.constructor.superclass.initAttributes.call(this, attr);
        this.setAttributeConfig('value', {
            value:attr.value || el.value
        });
        this.setAttributeConfig('promptText', {
            value:attr.promptText || ''
        });
        this.setAttributeConfig('clearTrigger', {
            value:attr.clearTrigger || null
        });
        this.setAttributeConfig('promptColor', {
            value:attr.promptColor || '#999'
        });
    };
    // 依內容改變顏色
    proto.update = function() {
        var el = this.get('element');
        var text = YAHOO.lang.trim(el.value);
        var tip = YAHOO.lang.trim(this.get('promptText'));
        if (tip === text || !text) {
            el.value = this.get('promptText');
            $D.setStyle(el, 'color', this.get('promptColor'));
            return;
        }; 
        $D.setStyle(el, 'color', ((YAHOO.env.ua.ie) ? '' : 'inherit'));
    };
    // 清除文字內容
    proto.clean = function(){
        var el = this.get('element');
        var text = YAHOO.lang.trim(el.value);
        var tip = YAHOO.lang.trim(this.get('promptText'));
        if (text === tip) {
            el.value = '';
            $D.setStyle(el, 'color', ((YAHOO.env.ua.ie) ? '' : 'inherit'));
        };
    };
    // 改變提示的文字
    proto.changePrompt = function(msg){
        var el = this.get('element');
        var text = YAHOO.lang.trim(el.value);
        var tip = YAHOO.lang.trim(this.get('promptText'));
        var msg = YAHOO.lang.trim(msg); 
        if (msg === tip) {
            return;
        }; 
        if (text === tip) {
            el.value = '';
        };
        this.set('promptText', msg);
        this.update();
    };
    // 初始化
    var _init = function() {
        var self = this;
        var el = this.get('element');
        self.update();
        if (this.get('clearTrigger')) {
            var triggerEl = this.get('clearTrigger');
            var triggerClick = function(e) {
                var text = YAHOO.lang.trim(el.value);
                var tip = YAHOO.lang.trim(this.get('promptText'));
                el.value = (text === tip) ? '' : el.value;
                self.set('value', el.value);
            };
            $E.on(triggerEl,'click',triggerClick);
            $E.on(triggerEl,'change',triggerClick);
        };
        $E.on(el.form, 'submit', function(e) {
            self.clean();
        }, self);
        $E.on(el, 'focus', function(e) {
            self.clean();
        },self);
        $E.on(el,'blur',function(e){
            self.set('value', el.value);
            self.update();
        });
    };
    YAHOO.util.TextPrompt = TextPrompt;
}());


