﻿var WatermarkText = {
    __WATERMARK_CSS_CLASS: "enableWatermark",
    Add: function( options ) {
        if( ! WatermarkText.__INIT ) {
            WatermarkText.__ELEMENTS = [];
            window.addEvent('domready', WatermarkText.Init );
            WatermarkText.__INIT = true;
        };

        WatermarkText.__ELEMENTS.push( options );
    },
    Init: function() {
        var handleEvent = function( options, event ) {
            if( ! event || event.type == "blur" ) {
                if( this.value.length == 0 || this.value == options.Text ) {
                    this.addClass( WatermarkText.__WATERMARK_CSS_CLASS );
                    this.value = options.Text;
                } else {
                    this.removeClass( WatermarkText.__WATERMARK_CSS_CLASS );
                };
            } else if( event.type == "focus" ) {
                if( this.value == options.Text ) {
                    this.value = "";
                    this.removeClass( WatermarkText.__WATERMARK_CSS_CLASS );
                };
            }
        };
        
        WatermarkText.__ELEMENTS.each( function( options ) {     
            var ele = $(options.Id);
            if( ele.type == "password" ) {
            
                var fakeEle = new Element('input', { 
                    'type': 'text',
                    'class': ele.getProperty('class') + " " + WatermarkText.__WATERMARK_CSS_CLASS,
                    'value': options.Text,
                    'tabindex': ele.getProperty('tabindex')
                }).injectAfter( ele );
                
                ele.removeProperty('tabindex');
                
                ele.addClass('hidden');
                
                ele.addEvent('blur', function(e) { 
                    if( this.value.length == 0 ) {
                        fakeEle.removeClass('hidden');
                        this.addClass('hidden');
                    } 
                });
                
                fakeEle.addEvent('focus', function(e){ 
                    this.addClass('hidden');
                    ele.removeClass('hidden');
                    ele.focus();
                });
            } else { 
                ele.addEvent('focus', function(e) {
                    handleEvent.bind( this, [ options, new Event(e) ] )();
                });
                ele.addEvent('blur', function(e) {
                    handleEvent.bind( this, [ options, new Event(e) ] )();
                });
            
                handleEvent.bind( ele, [ options ] )();
            }
        });
    }
};