function SimpleSpinner( jSelector )
{
    this.__init__( jSelector );
}

SimpleSpinner.getInstance = function()
{
    if ( this.__instance )
        return this.__instance
    this.__instance = new SimpleSpinner();
    return this.__instance;
}

SimpleSpinner.prototype = {
    __init__: function( jSelector )
    {
        this.defaultJSelector = jSelector
        this.defaultSpinnerClass = "default_spinner";
        this.defaultElementName = "div"
        this.__recentSpinner = undefined;
    },
    setJSelector: function( jSelector )
    {
        this.defaultJSelector = jSelector;
    },
    createSpinner: function( spinnerSelector, isDisableSelector )
    {
        if ( typeof(jQuery) == "undefined" ) return false;

        var jSelector = spinnerSelector? spinnerSelector: this.defaultJSelector;
        var element;

        if ( jSelector == undefined ) return false;

        if ( this.__recentSpinner )
            $(this.__recentSpinner).remove();

        element = document.createElement( this.defaultElementName );
        element.setAttribute( "class", this.defaultSpinnerClass );
        $(jSelector).append( element );

        this.__recentSpinner = element;

        if ( isDisableSelector == true )
            $( disableSelector ).attr( 'disabled', 'disabled' );
    },
    removeSpinner: function( spinnerSelector, isUndisable )
    {
        if ( typeof(jQuery) == "undefined" ) return false;

        var tmp, tmpClass = "";
        var jSelector = spinnerSelector? spinnerSelector: this.defaultJSelector;

        if ( jSelector == undefined ) return false;

        tmp = this.defaultSpinnerClass.split( " " );
        if ( tmp.length ) tmpClass = tmp[0];
        $( jSelector ).find( "" + this.defaultElementName + "." + tmpClass ).remove();

        this.__recentSpinner = undefined;

        if ( isUndisable == true )
            $( disableSelector ).attr( 'disabled', '' );
    },
    removeRecentSpinner: function(  )
    {
        if ( typeof(jQuery) == "undefined" || this.__recentSpinner )
            return false;
        $( this.__recentSpinner ).remove();
        this.__recentSpinner = undefined;
    },
    showSpinner: function( spinnerSelector, isDisableSelector )
    {
        
        if ( typeof(jQuery) == "undefined" ) return false;

        var jSelector = spinnerSelector? spinnerSelector: this.defaultJSelector;
        if ( jSelector == undefined ) return false;

        var tmpClass = "";
        var tmp = this.defaultSpinnerClass.split( " " );

        if ( tmp.length ) tmpClass = tmp[0];
        $( spinnerSelector ).find( "" + this.defaultElementName + tmpClass ).removeClass( "hidden" );

        if ( isDisableSelector == true )
            $( disableSelector ).attr( 'disabled', 'disabled' );
    },
    hideSpinner: function( spinnerSelector, isUndisableSelector )
    {
        
        if ( typeof(jQuery) == "undefined" ) return false;

        var jSelector = spinnerSelector? spinnerSelector: this.defaultJSelector;
        if ( jSelector == undefined ) return false;

        var tmpClass = "";
        var tmp = this.defaultSpinnerClass.split( " " );

        if ( tmp.length ) tmpClass = tmp[0];
        $( spinnerSelector ).find( "" + this.defaultElementName + "." + tmpClass ).addClass( "hidden" );

        if ( isUndisableSelector == true )
            $( disableSelector ).attr( 'disabled', '' );
    }
};

