﻿var MessageBox = new Class({
	options: 
	{
	},		
	initialize: function(options)
	{	    
		this.setOptions(options);
		
		this.clientState = 0;
		
        var cssMessageBox = "messagebox";
        var cssMessageBoxText = "messagebox_text";
        var cssMessageBoxButton = "messagebox_button";
        if($defined(this.options.cssMessageBox))
        {
            cssMessageBox = this.options.cssMessageBox;
        }
        if($defined(this.options.cssMessageBoxText))
        {
            cssMessageBoxText = this.options.cssMessageBoxText;
        }
        if($defined(this.options.cssMessageBoxButton))
        {
            cssMessageBoxButton = this.options.cssMessageBoxButton;
        } 
                               
        this.messageBox = new Element('div', {'id':this.options.id,'class': cssMessageBox, 'styles': {'position':'absolute','left': 10, 'top': 10, 'visibility':'hidden','z-index':8888888}}).injectInside(document.body);            
        var content = new Element('div').injectInside(this.messageBox);
        this.text = new Element('div', {'class': cssMessageBoxText}).injectInside(content)         
        var buttonWrapper = new Element('div').injectInside(content);                 
        this.button = new Element('button', {'class': cssMessageBoxButton}).injectInside(buttonWrapper)                
        this.button.addEvent('click',function(){this.hide()}.bind(this));
        this.fx = this.messageBox.effects({duration: 300,transition: Fx.Transitions.linear,wait: false}); 		 				       	    		    	                                                                          
                           
		if (this.options.initialize) 
		{
		    this.options.initialize.call(this);
		}
	},
    show:function(messageText,buttonCaption,parent,position,offsetX,offsetY)
    {                                
        this.clientState = 1;
    
        var coords = parent.getCoordinates();                                                            
        var size = this.messageBox.getSize().size;
        var top = 0;
        var left = 0;
                                           
        if(position.toLowerCase() == 'center')
        {
            top = coords.top + coords.height/2 - size.y/2 + offsetY;
            left = coords.left + coords.width/2 - size.x/2 + offsetX;                                             
        }
        this.messageBox.setStyles({'top':top,'left':left});
        this.text.setHTML(messageText);
        this.button.setHTML(buttonCaption);
        this.messageBox.setOpacity(1);            	    
    },      
    hide:function()
    {
        this.clientState = 0;
        this.fx.start({'opacity':0});        
    },	
    button:function()
    {
        return this.button;
    },
    getClientState:function()
    {
        return this.clientState;
    }    
});

MessageBox.implement(new Options);	

