// UbiCast overlay script

var overlay_resources = {};
overlay_resources.enable_effects = false;
overlay_resources.loading_mesage = "Loading ...";
overlay_resources.error_message = "Image not Found";
overlay_resources.tooltip_message = "";
// background_image
overlay_resources.background_image = null;
// loading_image
overlay_resources.loading_image = null;
// warning_image
overlay_resources.warning_image = null;
// overlay table
var overlay_table = new Object();

function overlay_onresize(overlay_id) {
    try {
        overlay_table[overlay_id]['max_width'] = $(window).width() - 20; // 20 for margin
        overlay_table[overlay_id]['max_height'] = $(window).height() - 20;
        if(overlay_table[overlay_id]['overlay_init_done']) {
            $('#'+overlay_id+' div.ubicast-overlay-element').css('max_width', overlay_table[overlay_id]['max_width']+'px');
            $('#'+overlay_id+' div.ubicast-overlay-element').css('max_height', overlay_table[overlay_id]['max_height']+'px');
            $('#'+overlay_id+' div.ubicast-overlay-element img').css('max-width', overlay_table[overlay_id]['max_width']+'px');
            $('#'+overlay_id+' div.ubicast-overlay-element img').css('max-height', overlay_table[overlay_id]['max_height']+'px');
        }
    }
    catch (e) { }
}

function overlay_prepare(enable_effects, loading_mesage, error_message, tooltip_message, background_image, loading_image, warning_image) {
    overlay_resources.enable_effects = enable_effects;
    overlay_resources.loading_mesage = loading_mesage;
    overlay_resources.error_message = error_message;
    overlay_resources.tooltip_message = tooltip_message;
    // background_image
    overlay_resources.background_image = new Image();
    overlay_resources.background_image.source = background_image;
    overlay_resources.background_image.src = background_image;
    // loading_image
    overlay_resources.loading_image = new Image();
    overlay_resources.loading_image.source = loading_image;
    overlay_resources.loading_image.src = loading_image;
    // warning_image
    overlay_resources.warning_image = new Image();
    overlay_resources.warning_image.source = warning_image;
    overlay_resources.warning_image.src = warning_image;
}

function overlay_init(overlay_id) {
    overlay_table[overlay_id] = new Object();
    overlay_table[overlay_id]['max_width'] = $(window).width() - 20; // 20 for margin
    overlay_table[overlay_id]['max_height'] = $(window).height() - 20;
    
    var html_base = '';
    html_base += '<div class=\"ubicast-overlay-bg\" onclick=\"javascript: overlay_hide(\''+overlay_id+'\');\"></div>';
    html_base += '<table class=\"ubicast-overlay-table\"><tr><td><div class=\"ubicast-overlay-element\" onclick=\"javascript: overlay_hide(\''+overlay_id+'\');\">';
    html_base += '<p class=\"loading\" onclick=\"javascript: overlay_hide(\''+overlay_id+'\');\">'+overlay_resources.loading_mesage+'</p>';
    html_base += '</div></td></tr></table>';
    $('#'+overlay_id).html(html_base);
    
    var html_loading = '<p class=\"loading\" onclick=\"javascript: overlay_hide(\''+overlay_id+'\');\">'+overlay_resources.loading_mesage+'</p>';
    
    var html_error = '<p class=\"error\" onclick=\"javascript: overlay_hide(\''+overlay_id+'\');\">'+overlay_resources.error_message+'</p>';
    
    $('#'+overlay_id+' div.ubicast-overlay-element').css('max_width', overlay_table[overlay_id]['max_width']+'px');
    $('#'+overlay_id+' div.ubicast-overlay-element').css('max_height', overlay_table[overlay_id]['max_height']+'px');
    $('#'+overlay_id+' div.ubicast-overlay-element img').css('max-width', overlay_table[overlay_id]['max_width']+'px');
    $('#'+overlay_id+' div.ubicast-overlay-element img').css('max-height', overlay_table[overlay_id]['max_height']+'px');
    
    overlay_table[overlay_id]['overlay_displayed'] = false;
    overlay_table[overlay_id]['new_command_send'] = '';
    overlay_table[overlay_id]['new_image_source'] = '';
    overlay_table[overlay_id]['overlay_init_done'] = true;
    overlay_table[overlay_id]['overlay_on_change'] = false;
    overlay_table[overlay_id]['html_loading'] = html_loading;
    overlay_table[overlay_id]['html_error'] = html_error;
    overlay_table[overlay_id]['html_image'] = '';
    overlay_table[overlay_id]['image'] = new Image();
}

function overlay_is_displayed(overlay_id) {
    try {
        if(overlay_table[overlay_id]['overlay_displayed'] == true) return true;
        else return false;
    }
    catch (e) {
        return false;
    }
}

function overlay_change_image(overlay_id, image_src) {
    if(overlay_table[overlay_id]['overlay_on_change'] == false) {
        overlay_table[overlay_id]['overlay_on_change'] = true;
        if(overlay_resources.enable_effects) {
            $('#'+overlay_id+' div.ubicast-overlay-element').fadeOut("fast", function() {
                overlay_change_image_step1(overlay_id, image_src);
                $('#'+overlay_id+' div.ubicast-overlay-element').fadeIn("fast", function() {
                    overlay_change_image_step2(overlay_id, image_src);
                });
            });
        }
        else {
            overlay_change_image_step1(overlay_id, image_src);
            overlay_change_image_step2(overlay_id, image_src);
        }
    }
    else {
        overlay_table[overlay_id]['new_image_source'] = image_src;
        overlay_table[overlay_id]['new_command_send'] = 'change';
    }
}
function overlay_change_image_step1(overlay_id, image_src) {
    $('#'+overlay_id+' div.ubicast-overlay-element').html(overlay_table[overlay_id]['html_loading']);
    
    //creation du code de l'image pour l'adapter a la taille de l'ecran
    var html_image = '<img src=\"'+image_src+'\" alt=\"\" title=\"'+overlay_resources.tooltip_message+'\" ';
    html_image += 'onClick=\"javascript: overlay_hide(\''+overlay_id+'\');\"/\>';
    overlay_table[overlay_id]['html_image'] = html_image;
    //mise en cache de l'image
    overlay_table[overlay_id]['image'] = new Image();
    overlay_table[overlay_id]['image'].source = image_src;
    overlay_table[overlay_id]['image'].src = image_src;
    if (overlay_table[overlay_id]['image'].complete != null && overlay_table[overlay_id]['image'].complete == true) {
        overlay_display_image(overlay_id);
    }
    else {
        overlay_table[overlay_id]['image'].onload = function () {
            overlay_display_image(overlay_id);
        }
        overlay_table[overlay_id]['image'].onabort = function () {
            overlay_display_image(overlay_id);
        }
        overlay_table[overlay_id]['image'].onerror = function () {
            $('#'+overlay_id+' div.ubicast-overlay-element').html(overlay_table[overlay_id]['html_error']);
        }
    }
}
function overlay_change_image_step2(overlay_id, image_src) {
    overlay_table[overlay_id]['overlay_on_change'] = false;
    if(overlay_table[overlay_id]['new_command_send'] == 'show' | overlay_table[overlay_id]['new_command_send'] == 'change') {
        overlay_change_image(overlay_id, overlay_table[overlay_id]['new_image_source']);
    }
}

function overlay_show(overlay_id, image_src) {
    if(overlay_table[overlay_id]['overlay_on_change'] == false) {
        overlay_table[overlay_id]['overlay_on_change'] = true;
        //mise en place du background
        $('#'+overlay_id).addClass('visible');
        if(overlay_resources.enable_effects) {
            $('#'+overlay_id+' div.ubicast-overlay-bg').fadeIn("fast", function() {
                overlay_show_step1(overlay_id, image_src);
                $('#'+overlay_id+' div.ubicast-overlay-element').fadeIn("fast", function() {
                    overlay_show_step2(overlay_id, image_src);
                });
            });
        }
        else {
            overlay_show_step1(overlay_id, image_src);
            $('#'+overlay_id+' div.ubicast-overlay-element').css('display', 'block');
            overlay_show_step2(overlay_id, image_src);
        }
    }
    else {
        overlay_table[overlay_id]['new_image_source'] = image_src;
        overlay_table[overlay_id]['new_command_send'] = 'show';
    }
}
function overlay_display_image(overlay_id) {
    $('#'+overlay_id+' div.ubicast-overlay-element').html(overlay_table[overlay_id]['html_image']);
    //taille maximale de l'image
    $('#'+overlay_id+' div.ubicast-overlay-element').css('max_width', overlay_table[overlay_id]['max_width']);
    $('#'+overlay_id+' div.ubicast-overlay-element').css('max_height', overlay_table[overlay_id]['max_height']);
    $('#'+overlay_id+' div.ubicast-overlay-element img').css('max-width', overlay_table[overlay_id]['max_width']);
    $('#'+overlay_id+' div.ubicast-overlay-element img').css('max-height', overlay_table[overlay_id]['max_height']);
}
function overlay_show_step1(overlay_id, image_src) {
    //creation du code de l'image pour l'adapter a la taille de l'ecran
    var html_image = '<img src=\"'+image_src+'\" alt=\"\" title=\"'+overlay_resources.tooltip_message+'\" ';
    html_image += 'onClick=\"javascript: overlay_hide(\''+overlay_id+'\');\"/\>';
    overlay_table[overlay_id]['html_image'] = html_image;
    //mise en cache de l'image
    overlay_table[overlay_id]['image'] = new Image();
    overlay_table[overlay_id]['image'].source = image_src;
    overlay_table[overlay_id]['image'].src = image_src;
    if (overlay_table[overlay_id]['image'].complete != null && overlay_table[overlay_id]['image'].complete == true) {
        overlay_display_image(overlay_id);
    }
    else {
        overlay_table[overlay_id]['image'].onload = function () {
            overlay_display_image(overlay_id);
        }
        overlay_table[overlay_id]['image'].onabort = function () {
            overlay_display_image(overlay_id);
        }
        overlay_table[overlay_id]['image'].onerror = function () {
            $('#'+overlay_id+' div.ubicast-overlay-element').html(overlay_table[overlay_id]['html_error']);
        }
    }
}
function overlay_show_step2(overlay_id, image_src) {
    overlay_table[overlay_id]['overlay_displayed'] = true;
    overlay_table[overlay_id]['overlay_on_change'] = false;
    if(overlay_table[overlay_id]['new_command_send'] == 'show' | overlay_table[overlay_id]['new_command_send'] == 'change') {
        overlay_change_image(overlay_id, overlay_table[overlay_id]['new_image_source']);
    }
}

function overlay_hide(overlay_id) {
    if(overlay_table[overlay_id]['overlay_on_change'] == false) {
        overlay_table[overlay_id]['overlay_on_change'] = true;
        if(overlay_resources.enable_effects) {
            $('#'+overlay_id+' div.ubicast-overlay-element').fadeOut("fast", function() {
                $('#'+overlay_id+' div.ubicast-overlay-bg').fadeOut("fast", function() {
                    overlay_hide_step(overlay_id);
                });
            });
        }
        else {
            $('#'+overlay_id+' div.ubicast-overlay-element').css('display', 'none');
            overlay_hide_step(overlay_id);
        }
    }
}
function overlay_hide_step(overlay_id) {
    $('#'+overlay_id).removeClass('visible');
    $('#'+overlay_id+' div.ubicast-overlay-element').html(overlay_table[overlay_id]['html_loading']);
    overlay_table[overlay_id]['overlay_displayed'] = false;
    overlay_table[overlay_id]['overlay_on_change'] = false;
    if(overlay_table[overlay_id]['new_command_send'] == 'show' | overlay_table[overlay_id]['new_command_send'] == 'change') {
        overlay_show(overlay_table[overlay_id]['new_image_source']);
    }
}
