/**
 * @category  Application
 * @package   reisen.de
 * @author    Unister GmbH <teamleitung-dev@unister-gmbh.de>
 * @version   $Id: overlay.js 10213 2010-10-13 10:32:25Z v.andres $
 * @copyright Copyright (c) 2006-2008, Unister GmbH
 * @license   this code is property of company Unister GmbH and unterlays internal rules of company.
 * @link      http://www.reisen.de
 */
(function($){
    var dialog = null;
    var config = {
        template:     '<div id="@tplId@">'
                    + '<div class="@tplClass@" style="width:@width@">'
                    + '<h3>@title@</h3>'
                    + '@message@'
                    + '@buttons@</div></div>',
        buttons:      '<div class="buttons">'
                    + '<input type="button" value="@buttontext@" id="overlay_close" />'
                    + '</div>',
        buttonText: 'OK',
        tplId:      'overlayBody',
        tplClass:   'cnt',
        title:      '',
        message:    '',
        delay:      0,
        width:      'auto',
        modal:      true
    };
    var dialogConfig = {
        autoOpen:   false,
        minHeight:  50,
        closeText:  '',
        resizable:  false
    };

    var init = function(params) {
        config = $.extend(config, params);

        if (jQuery('#'+config.tplId).length > 0) {
            jQuery('#'+config.tplId).remove();
        }

        if (jQuery('#ui-dialog-cover').length > 0) {
            jQuery('#ui-dialog-cover').remove();
        }

        var tpl = config.template;
        tpl     = tpl.replace(/@buttons@/,     config.buttons);
        tpl     = tpl.replace(/@buttontext@/,  config.buttonText);
        tpl     = tpl.replace(/@tplId@/,       config.tplId);
        tpl     = tpl.replace(/@tplClass@/,    config.tplClass);
        tpl     = tpl.replace(/@title@/,       config.title);
        tpl     = tpl.replace(/@message@/,     config.message);
        tpl     = tpl.replace(/@width@/,       config.width);


        if (config.width !== 'auto') {
            dialogConfig.width = config.width;
        }

        if (config.modal === true) {
            dialogConfig.modal = true;

            // append an iframe for ie6
            if (jQuery.browser.msie && jQuery.browser.version < 7) {
                jQuery('body').append('<iframe id="ui-dialog-cover" class="ui-widget-overlay" />');
            }
        }

        dialog = jQuery(tpl).dialog(dialogConfig);
        jQuery('#overlay_close', dialog).click(function() {
            close();
        });
        dialog.dialog({
            close: function(event, ui) {
                jQuery(document).trigger('overlayer:closed');
            }
        });
    };

    var show = function(params) {
        init(params);

        if (dialog === null) {
            return;
        }
        dialog.dialog('open');

        // strange behavior in IE -> after opening the dialog,
        // IE jumps to the bottom of the page
        if (jQuery.browser.msie) {
            var offsetHeight  = $('#overlayBody').offset().top;
            offsetHeight     -= parseInt($(window).height() / 2, 10);
            if (offsetHeight < 0) {
                offsetHeight = 0;
            }
            offsetHeight     += parseInt($('#overlayBody').height() / 2, 10);

            window.scrollTo(0, offsetHeight);
        }

        if ((config.delay*1)>0) {
            window.setTimeout(function() {close();}, config.delay);
        }
    };

    var close = function() {
        if (dialog === null) {
            return;
        }
        if (jQuery('#ui-dialog-cover').length > 0) {
            jQuery('#ui-dialog-cover').remove();
        }
        dialog.dialog('close');
    };

    $.overlay = {
        show  : function(params) {
            show(params);
        },
        showDialog  : function(params) {
            show(params);
        },
        showDelayed  : function(params) {
            params.delay = params.delay*1;
            if(params.delay <= 0) {
                params.delay = 3000;
            }

            show(params);
        },
        showLoading  : function(params) {
            params.message  += '<div style="background: url('+HOME_URL+'img/ladebalken.gif)'
                            +  ' no-repeat center center; height: 20px;margin-top:10px;"></div>';
            params.buttons   = '';
            show(params);
        },
        showErrors  : function(params) {
            params.width    = 500;
            params.title    = 'Fehler';
            params.message  = 'Bitte überprüfen Sie folgende Felder, um Ihre Buchung fortzusetzen: <br />'
                            + '<a href="javascript:void(0)" id="errorOverlayToggle" class="errorHidden" onclick="jQuery(\'#errorOverlay\').toggle();jQuery(this).toggleClass(\'errorHidden\');return false;">Details</a>'
                            + '<div id="errorOverlay" style="display:none">Folgende Felder enthalten Fehler: <br /><br />'
                            + '<pre>'+params.message+'</pre></div>';
            show(params);
        },
        showDialogNoLayer  : function(params) {
            params.modal = false;
            show(params);
        },
        close : function() {
            close();
        }
    };
})(jQuery);
