// Init section
obj_float_div = false;
active_img_mark = null;
show_delay = null;
preloads = new Object;
act_img_width = 250;
act_img_height = 250;
show_div_prw = false;

//gags = new Array;
//window.onerror = function() { return true; }

function run_after_body() {
    var IE = document.all ? true : false;
    if (!IE) document.captureEvents(Event.MOUSEMOVE)
    document.onmousemove = document_onmousemove;

    if (window.onscroll) { window.onscroll = hide_div(); }
    document.write('<div class="previewfloat" id="divPreview"><div class="previewimage"><table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%"><tr align="center" valign="middle"><td><img id="imgPreview" /></td></tr></table></div><div class="previewcopyright" id="divCopyright"></div><div id="divCaption" class="previewcaption"></div></div>');
    setInterval("changer();", 100);
    preloads['loader_1'] = new Image;
    preloads['loader_1'].src = '../Images/blank.gif';
    preloads['loader_1'].width = 200;
    preloads['loader_1'].height = 150;
    preloads['loader_1'].caption = 'N/A';
    preloads['loader_1'].copyright = '&copy; N/A';
}

function get_obj(id_name) {
    if (document.getElementById) {
        return document.getElementById(id_name);
    } else if (document.all) {
        return document.all[id_name];
    } else {
        return null;
    }
}

function document_onmousemove(e) {

    if (!obj_float_div) return;

    var pos_X = 0;
    var pos_Y = 0;

    if (!e) { e = window.event; }

    if (e) {
        if (typeof (e.pageX) == 'number') {
            pos_X = e.pageX;
            pos_Y = e.pageY;
        } else if (typeof (e.clientX) == 'number') {
            pos_X = e.clientX;
            pos_Y = e.clientY;
            if (document.body && (document.body.scrollTop || document.body.scrollLeft) && !(window.opera || window.debug || navigator.vendor == 'KDE')) {
                pos_X += document.body.scrollLeft;
                pos_Y += document.body.scrollTop;
            } else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft) && !(window.opera || window.debug || navigator.vendor == 'KDE')) {
                pos_X += document.documentElement.scrollLeft;
                pos_Y += document.documentElement.scrollTop;
            }
        }
    }

    var scroll_X = 0, scroll_Y = 0;
    if (document.body && (document.body.scrollTop || document.body.scrollLeft) && !(window.debug || navigator.vendor == 'KDE')) {
        scroll_X = document.body.scrollLeft;
        scroll_Y = document.body.scrollTop;
    } else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft) && !(window.debug || navigator.vendor == 'KDE')) {
        scroll_X = document.documentElement.scrollLeft;
        scroll_Y = document.documentElement.scrollTop;
    }

    var win_size_X = 0, win_size_Y = 0;
    if (window.innerWidth && window.innerHeight) {
        win_size_X = window.innerWidth;
        win_size_Y = window.innerHeight;
    } else if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {
        win_size_X = document.documentElement.clientWidth;
        win_size_Y = document.documentElement.clientHeight;
    } else if (document.body && document.body.clientWidth && document.body.clientHeight) {
        win_size_X = document.body.clientWidth;
        win_size_Y = document.body.clientHeight;
    }

    pos_X += 15; pos_Y += 15;

    if (obj_float_div.offsetWidth && obj_float_div.offsetHeight) {
        if (pos_X - scroll_X + obj_float_div.offsetWidth + 5 > win_size_X) pos_X -= (obj_float_div.offsetWidth + 25);
        if (pos_Y - scroll_Y + obj_float_div.offsetHeight + 5 > win_size_Y) pos_Y -= (obj_float_div.offsetHeight + 20);
    }
    else if (obj_float_div.offsetWidth == 0 || obj_float_div.offsetHeight == 0) {
        if (pos_X - scroll_X + 270 + 5 > win_size_X) pos_X -= (270 + 25);
        if (pos_Y - scroll_Y + 310 + 5 > win_size_Y) pos_Y -= (310 + 20);
    }
    obj_float_div.style.left = pos_X + "px";
    obj_float_div.style.top = pos_Y + "px";
}

function showPreview(img_src, wp_id, img_w, img_h, img_t, img_c) {
    if (show_delay) {
        clearTimeout(show_delay); show_delay = null;
    }
    else {
        obj_float_div = get_obj('divPreview');
        show_delay = setTimeout('showPreview(\"' + img_src + '\",\"' + wp_id + '\",' + img_w + ',' + img_h + ',\"' + encodeURIComponent(img_t) + '\",\"' + encodeURIComponent(img_c) + '\");', 500);
        return;
    }

    var img_mark = 'img_wp_id_' + wp_id;
    active_img_mark = img_mark;

    if (preloads[img_mark] && preloads[img_mark].complete) {
        swap_img(img_mark);
    }
    else {
        swap_img('loader_1');
    }
    if (!preloads[img_mark]) {
        preloads[img_mark] = new Image;
        preloads[img_mark].src = img_src;
        preloads[img_mark].width = img_w;
        preloads[img_mark].height = img_h;
        preloads[img_mark].caption = decodeURIComponent(img_t);
        preloads[img_mark].copyright = decodeURIComponent(img_c);
        
        act_img_width = img_w;
        act_img_height = img_h;
        //preloads[img_mark].onerror = function() { gag(preloads[img_mark], 200); }
    }
    show_div('divPreview');
}

function changer() {
    if (!obj_float_div || !preloads[active_img_mark] || !get_obj('imgPreview')) return;
    if (get_obj('imgPreview').src != preloads[active_img_mark].src && preloads[active_img_mark].complete) {
        if (preloads[active_img_mark].width > 250 || preloads[active_img_mark].height > 250) {
            //this solves weird problem on preloading. Preload override initial width and height values.
            preloads[active_img_mark].width = act_img_width;
            preloads[active_img_mark].height = act_img_height;
        }

        swap_img(active_img_mark);
    }
}

function swap_img(img_mark) {

    var obj_base_img = get_obj('imgPreview');
    if (!obj_base_img) return;

    obj_base_img.src = preloads[img_mark].src;
    obj_base_img.width = preloads[img_mark].width;
    obj_base_img.height = preloads[img_mark].height;

    var obj_base_caption = get_obj('divCaption');
    if (obj_base_caption) { obj_base_caption.innerHTML = preloads[img_mark].caption; }

    var obj_base_copyright = get_obj('divCopyright');
    if (obj_base_copyright) { obj_base_copyright.innerHTML = preloads[img_mark].copyright; }
}

function show_div(div_mark) {
    if (show_delay) {
        clearTimeout(show_delay); show_delay = null;
    } else {
        obj_float_div = get_obj(div_mark);
        show_delay = setTimeout('show_div("' + div_mark + '");', 200);
        return;
    }
    if (!obj_float_div) return;

    if (obj_float_div.offsetWidth) {
        //obj_float_div.style.width = "auto";
        //obj_float_div.style.height = "auto";
        if (obj_float_div.offsetWidth > 330) {
            obj_float_div.style.width = "270px";
            obj_float_div.style.height = "310px";
        }
    }

    document_onmousemove;

    if (!show_div_prw) {
        $('#' + obj_float_div.id).animate({ height: 'show', opacity: 'show' }, 'slow');
        //$('#' + obj_float_div.id).slideToggle("slow");
        //$('#' + obj_float_div.id).toggle("slow");
    }

    show_div_prw = true;
}

function hide_div() {

    if (show_delay) {
        clearTimeout(show_delay);
        show_delay = null;
        show_div_prw = false;
    } else {
        show_delay = setTimeout('hide_div();', 250);
        return;
    }

    if (!show_div_prw) {
        //swap_img('loader_1');        
        //clearTimeout(show_delay);    
        //show_delay = null;

        if (!obj_float_div) return;

        $('#' + obj_float_div.id).animate({ height: 'hide', opacity: 'hide' }, 400);

        //$('#' + obj_float_div.id).hide(300);        
        //obj_float_div.style.display = 'none';
        //obj_float_div.style.visibility = 'hidden';
        //obj_float_div.style.left = "-3000px";
        obj_float_div = false;
    }


}

