/// <reference path="jquery-1.3.2-vsdoc2.js"/>

// object to hold language strings.
$tbox = {
    lang: {
        of: 'of',
        prev: '&lt; Previous',
        next: 'Next &gt;',
        close: 'Close'
    },
    loader: '/images/thickbox/loadingAnimation.gif'
};

/*
$tbox.lang = {
of: 'de',
prev: '&lt; Pr&eacute;c&eacute;dente',
next: 'Suivante &gt;',
close: 'Fermer'
};
*/

/*
* Thickbox 3.1.1 - One Box To Rule Them All.
* By Cody Lindley (http://www.codylindley.com)
* Copyright (c) 2007 cody lindley
* Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
$(document).ready(function() {
    tb_init('a.thickbox, area.thickbox, input.thickbox'); //pass where to apply thickbox
    imgLoader = new Image(); // preload image
    imgLoader.src = $tbox.loader;
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk) {
    $(domChunk).click(function() {
        var t = this.title || this.name || null;
        var a = this.href || this.alt;
        tb_show(t, a);
        this.blur();
        return false;
    });
}

function tb_show(caption, url) {//function called when the user clicks on a thickbox link
    try {
        if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
            $("body", "html").css({ height: "100%", width: "100%" });
            $("html").css("overflow", "hidden");
            if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
                $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
                //$("#TB_overlay").click(tb_remove);
            }
        }
        else {//all others
            if (document.getElementById("TB_overlay") === null) {
                $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
                //$("#TB_overlay").click(tb_remove);
            }
        }

        if (tb_detectMacXFF()) {
            $("#TB_overlay").addClass("TB_overlayMacFFBGHack"); //use png overlay so hide flash
        } else {
            $("#TB_overlay").addClass("TB_overlayBG"); //use background and opacity
        }

        if (caption === null) { caption = ""; }
        $("body").append("<div id='TB_load'><img src='" + $tbox.loader + "' /></div>"); //add loader to the page
        $('#TB_load').show(); //show loader

        var queryString = url.replace(/^[^\?]+\??/, '');
        var params = tb_parseQuery(queryString);

        TB_WIDTH = (params['width'] * 1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
        TB_HEIGHT = (params['height'] * 1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
        ajaxContentW = TB_WIDTH - 30;
        ajaxContentH = TB_HEIGHT - 45;

        //
        realWidth = (params['width'] * 1) || 600;
        realHeight = (params['height'] * 1) || 400;

        TB_WIDTH = realWidth;
        TB_HEIGHT = realHeight;

        //alert(TB_WIDTH + 'x' + TB_HEIGHT);
        //alert(ajaxContentW + 'x' + ajaxContentH);
        //alert(realWidth + 'x' + realHeight);

        if (url.indexOf('TB_iframe') != -1) {// either iframe or ajax window		
            urlNoQuery = url.split('TB_')[0];
            urlNoQuery = urlNoQuery.substr(0, urlNoQuery.length - 1);

            $("#TB_iframeContent").remove();
            if (params['modal'] != "true") {//iframe no modal

                var opt = {
                    html: "<iframe frameborder='0' hspace='0' src='" + urlNoQuery + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random() * 1000) + "' onload='tb_showIframe()' style='width:" + (realWidth - 55) + "px;height:" + (realHeight - 55) + "px;'> </iframe>",
                    width: (realWidth - 55),
                    height: (realHeight - 55),
                    prefix: 'TB'
                };

                var wrap = $.wrapper(opt);

                $("#TB_window").append(wrap);

            } else {//iframe modal
                $("#TB_overlay").unbind();
                $("#TB_window").append("<iframe frameborder='0' hspace='0' src='" + urlNoQuery + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random() * 1000) + "' onload='tb_showIframe()' style='width:" + (ajaxContentW + 29) + "px;height:" + (ajaxContentH + 17) + "px;'> </iframe>");
            }
        } else {// not an iframe, ajax
            if ($("#TB_window").css("display") != "block") {
                if (params['modal'] != "true") {//ajax no modal
                    $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>" + caption + "</div><div id='TB_closeAjaxWindow'><a id='TB_closeWindowButton' href='javascript:void(0);' title='" + $tbox.lang.close + "'></a></div></div><div id='TB_ajaxContent' style='width:" + ajaxContentW + "px;height:" + ajaxContentH + "px'></div>");
                } else {//ajax modal
                    $("#TB_overlay").unbind();
                    $("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:" + ajaxContentW + "px;height:" + ajaxContentH + "px;'></div>");
                }
            } else {//this means the window is already up, we are just loading new content via ajax
                $("#TB_ajaxContent")[0].style.width = ajaxContentW + "px";
                $("#TB_ajaxContent")[0].style.height = ajaxContentH + "px";
                $("#TB_ajaxContent")[0].scrollTop = 0;
                $("#TB_ajaxWindowTitle").html(caption);
            }
        }

        //$("#TB_closeWindowButton").click(tb_remove);

        if (url.indexOf('TB_inline') != -1) {
            $("#TB_ajaxContent").append($('#' + params['inlineId']).children());
            $("#TB_window").unload(function() {
                $('#' + params['inlineId']).append($("#TB_ajaxContent").children()); // move elements back when you're finished
            });
            tb_position();
            $("#TB_load").remove();
            $("#TB_window").css({ display: "block" });
        } else if (url.indexOf('TB_iframe') != -1) {
            tb_position();
            if ($.browser.safari) {//safari needs help because it will not fire iframe onload
                $("#TB_load").remove();
                $("#TB_window").css({ display: "block" });
            }
        } else {
            $("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()), function() {//to do a post change this load method
                tb_position();
                $("#TB_load").remove();
                tb_init("#TB_ajaxContent a.thickbox");
                $("#TB_window").css({ display: "block" });
            });
        }

        if (!params['modal']) {
            document.onkeyup = function(e) {
                if (e == null) { // ie
                    keycode = event.keyCode;
                } else { // mozilla
                    keycode = e.which;
                }
                if (keycode == 27) { // close
                    tb_remove();
                }
            };
        }

    } catch (e) {
        //nothing here
        //alert(e.name);
    }
}

//helper functions below
function tb_showIframe() {
    $("#TB_load").remove();
    $("#TB_window").css({ display: "block" });
}

function tb_remove() {

    var closeModal = true;

    if (typeof (onModalClose) == 'function') {
        closeModal = onModalClose();
    }

    if (closeModal) {
        $("#TB_imageOff").unbind("click");
        $("#TB_closeWindowButton").unbind("click");
        $("#TB_closeGalleryWindowButton").unbind("click");
        //$("#TB_window").fadeOut("fast", function() {

        //    if ($('#TB_window').attr('unload') !== undefined) {
        //        $('#TB_window').trigger("unload")
        //    }
        //    $('#TB_window,#TB_overlay,#TB_HideSelect').unbind().remove();

        //});
        if ($('#TB_window').attr('unload') !== undefined) {
            $('#TB_window').trigger("unload")
        }
        $('#TB_window,#TB_overlay,#TB_HideSelect').unbind().remove();

        $("#TB_load").remove();
        if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
            $("body", "html").css({ height: "auto", width: "auto" });
            $("html").css("overflow", "");
        }
        document.onkeydown = "";
        document.onkeyup = "";
    }
    return false;
}

function tb_position() {
    $("#TB_window").css({ marginLeft: '-' + parseInt((TB_WIDTH / 2), 10) + 'px', width: TB_WIDTH + 'px' });
    if (!(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
        $("#TB_window").css({ marginTop: '-' + parseInt((TB_HEIGHT / 2), 10) + 'px' });
    }
}

function tb_parseQuery(query) {
    var Params = {};
    if (!query) { return Params; } // return empty object
    var Pairs = query.split(/[;&]/);
    for (var i = 0; i < Pairs.length; i++) {
        var KeyVal = Pairs[i].split('=');
        if (!KeyVal || KeyVal.length != 2) { continue; }
        var key = unescape(KeyVal[0]);
        var val = unescape(KeyVal[1]);
        val = val.replace(/\+/g, ' ');
        Params[key] = val;
    }
    return Params;
}

function tb_detectMacXFF() {
    var userAgent = navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox') != -1) {
        return true;
    }
}

/*-- [Custom] --*/
function tb_window(win)//win = { 'width':0, 'height':0, 'title':'title', 'content':'<b>content</b>' };
{
    if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
        $("body", "html").css({ height: "100%", width: "100%" });
        $("html").css("overflow", "hidden");
        if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
            $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
            //$("#TB_overlay").click(tb_remove);
        }
    } else {//all others
        if (document.getElementById("TB_overlay") === null) {
            $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
            //$("#TB_overlay").click(tb_remove);
        }
    }

    if (tb_detectMacXFF()) {
        $("#TB_overlay").addClass("TB_overlayMacFFBGHack"); //use png overlay so hide flash
    } else {
        $("#TB_overlay").addClass("TB_overlayBG"); //use background and opacity
    }

    //$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>" + win.title + "</div><div id='TB_closeAjaxWindow'><a id='TB_closeWindowButton' href='javascript:void(0);' title='" + $tbox.lang.close + "'></a></div></div><div id='TB_ajaxContent' style='width:" + win.width + "px;height:" + win.height + "px; overflow:hidden; padding:15px;'></div>");
    //$("#TB_closeWindowButton").click(tb_remove);

    var opt = {
        html: "<div id='TB_ajaxContent' style='width:" + (win.width - 85) + "px;height:" + (win.height - 72) + "px;'></div>",
        width: (win.width - 55),
        height: (win.height - 55),
        prefix: 'TB'
    };

    var wrap = $.wrapper(opt);

    $("#TB_window").append(wrap);

    $("#TB_window").css({ marginLeft: '-' + parseInt((win.width / 2), 10) + 'px', width: win.width + 'px' });
    if (!(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
        $("#TB_window").css({ marginTop: '-' + parseInt((win.height / 2), 10) + 'px' });
    }

    $("#TB_ajaxContent").html(win.content);

    $("#TB_window").css({ display: "block" });
}

/*-- [Custom] --*/
function tb_resize(width, height) {
    var oldHeight = $('#TB_iframeContent').css('height');

    $("#TB_window").css({ marginLeft: '-' + parseInt((width / 2), 10) + 'px', 'width': width + 'px' });

    $('#TB_iframeContent').css({ 'width': width, 'height': height });

    if (parseInt(oldHeight, 10) != parseInt(height, 10)) {
        if (!(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
            $("#TB_window").css({ marginTop: '-' + parseInt((height / 2), 10) + 'px' });
        }
    }
}
