/**
    lightBox.js must be included
*/

var ConfirmLightbox = Class.create({
    initialize : function(header,message, agreeButtonText, cancelButtonText, noneDoubleButton, noneFailure){


       ////////////////////////////////////
       //Private section
       ////////////////////////////////////
        var divcontainer = (function(){
            var DIV = document.createElement('DIV');
            DIV = $(DIV);
            DIV.id = 'confirm_divcontainer'+Math.floor(Math.random()*100);
            if(!noneFailure){
                DIV.addClassName('dialog lb-box messages-failure');
            }else{
                DIV.addClassName('dialog lb-box messages-success');
            }
            return DIV;
        })();
        this.eventGenerator = divcontainer;
        if (noneDoubleButton){
            var buttonSetHtml= '<input class="agree_button button ml10" type="button" value="Delete" style="display:none;"/>' +
                               '<input class="cancel_button button ml10" type="button" value="Cancel" />';
        }else{
            var buttonSetHtml='<input class="agree_button button ml10" type="button" value="Delete" />' +
                              '<input class="cancel_button button ml10" type="button" value="Cancel" />';
        }

        var html =  '<h3 class="confirm_header"></h3>' +
                    '<div class="close">' +
                        '<a href="javascript:;" class="close_link"></a>' +
                    '</div>' +
                    '<div class="lb-body">' +
                        '<div class="ins-content confirm_message">' +
                        '</div>' +
                    '</div>' +
                    '<div class="lb-footer">' +
                        buttonSetHtml +
                    '</div>';

       var eventParam = null;

       var _setEventParam = function(value){
            eventParam = value;
       };

       var _getEventParam = function(value){
           return eventParam;
       };

       var _getContainer = function(){
           return divcontainer;
       };

       var _applyParams = function(header,message, agreeButtonText, cancelButtonText){
            var headerText = document.createTextNode(header);
            var messageText = document.createTextNode(message);

            $$('#'+divcontainer.id + ' .confirm_header')[0].appendChild(headerText);
            $$('#'+divcontainer.id +' .confirm_message')[0].appendChild(messageText);
            if(agreeButtonText){
            	$$('#'+divcontainer.id +' .agree_button')[0].value = agreeButtonText;
            }
            if(cancelButtonText){
            	$$('#'+divcontainer.id +' .cancel_button')[0].value = cancelButtonText;
            }

         };

       var _appendContainer = function(){
            document.body.appendChild(divcontainer);
         };

       var _initLightBox = function(){
           this.confirmLightbox = new Lightbox(divcontainer);
       };

       var _initButtons = function() {
           var agreeButton = $$('#'+divcontainer.id +' .agree_button')[0];
           var cancelButton = $$('#'+divcontainer.id +' .cancel_button')[0];
           var closeLink = $$('#'+divcontainer.id +' .close_link')[0];

           agreeButton.observe('click', _agreeClick.bind(this));
           cancelButton.observe('click', _cancelClick.bind(this));
           closeLink.observe('click', _cancelClick.bind(this));

       };

       var _agreeClick = function(){
           var eventParam = _getEventParam();
           this.close();
           this.eventGenerator.fire('confirm:agree',eventParam);
       };

       var _cancelClick = function(){
           var eventParam = _getEventParam();
           this.close();
           this.eventGenerator.fire('confirm:cancel',eventParam);
       };

       divcontainer.innerHTML = html;
        divcontainer.show();
        divcontainer.hide();
        ///////////////////////////////////////////
        //Public section
        //////////////////////////////////////////
        this.confirmLightbox = null;
        
        this.open = function(par){
           _setEventParam(par);
           this.eventGenerator.fire('confirm:beforeopen',par);
           this.confirmLightbox.open();
           this.eventGenerator.fire('confirm:afteropen',par);
        };
        
        this.close = function(){
           var eventParam = _getEventParam();
           this.eventGenerator.fire('confirm:beforeclose',eventParam);
           this.confirmLightbox.close();
           this.eventGenerator.fire('confirm:afterclose',eventParam);
        };
        
        this.observe = function(event,handler){
            this.eventGenerator.observe(event,handler);
        };
        //////////////////////////////////////////
        //Initialize
        //////////////////////////////////////////
        _appendContainer();
        _applyParams(header,message, agreeButtonText, cancelButtonText);
        _initButtons.bind(this)();
        _initLightBox.bind(this)();
    }
    
});

function showError(message, header){
    if(header&&(header!='')){
        var mHeader = header;
    }else{
        var mHeader = 'Error';
    }
    if(message&&(message!='')){
        var mMessage = message;
    }else{
        var mMessage = '';
    }
    var t = new ConfirmLightbox(mHeader, mMessage, 'Cancel','Cancel', true);
    t.open();
};

function showMessage(message, header){
    if(header&&(header!='')){
        var mHeader = header;
    }else{
        var mHeader = 'Message';
    }
    if(message&&(message!='')){
        var mMessage = message;
    }else{
        var mMessage = '';
    }
    var t = new ConfirmLightbox(mHeader, mMessage, 'Ok','Ok', true, true);
    t.open();
};
