(function() {
    var removeClassName = function( e, cn ) {
        var r = new RegExp( "(^|\\s+)" + cn + "(\\s+|$)", "g" );
        e.className = e.className.replace( r, "" );
    };
    
    var addClassName = function( e, cn ) {
        removeClassName( e, cn );
        e.className = e.className + " " + cn;
    };
    
    var onFocus = function( evt ) {
        evt = evt || window.event;
        var e = evt.target || evt.srcElement;
        var p = e.getAttribute( "placeholder" );
        removeClassName( e, "placeholder" );
        if( e.value == p )
            e.value = "";
    };
    
    var onBlur = function( evt ) {
        evt = evt || window.event;
        var e = evt.target || evt.srcElement;
        var p = e.getAttribute( "placeholder" );
        removeClassName( e, "placeholder" );
        if( e.value.match( /^\s+$|^$/ ) ) {
            e.value = p;
            addClassName( e, "placeholder" );
        }
    };
    
    var es = document.getElementsByTagName( "input" );
    for( var i = 0; i < es.length; i++ ) {
        var e = es[ i ];
        var t = e.type.toLowerCase();
        var ta = e.getAttribute( "type" ).toLowerCase();
        var p = e.getAttribute( "placeholder" );
        if( t == "text" && ta == "search" ) {
            e.onfocus = onFocus;
            e.onblur = onBlur;
            e.onblur( { target: e } );
        }
    }
})();

