/*
* Thickbox 3.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
*/

var TB_OPENER = "";
var TB_OPENER_X = 0;
var TB_OPENER_Y = 0;
var TB_NAVI_X = 0;
var TB_NAVI_Y = 0;
var i = 0;

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
$(document).ready(function()
{
    tb_init('a.thickbox'); //pass where to apply thickbox
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk)
{
    if (!(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
        $(domChunk).click(function()
        {
            if ($("#TB_window").css("display") != "block") {
                var a = this.href || this.alt;
                tb_show(a);
                this.blur();
                return false;
            }
        });
    }
}

function tb_show(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
        }

        $("body").append("<div id='TB_load'></div>"); //add loader to the page
        $('#TB_load').show(); //show loader

        var baseURL;
        if (url.indexOf("?") !== -1) { //ff there is a query string involved
            baseURL = url.substr(0, url.indexOf("?"));
        } else {
            baseURL = url;
        }

        var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
        var urlType = baseURL.toLowerCase().match(urlString);
        var queryString = url.replace(/^[^\?]+\??/, '');
        var params = tb_parseQuery(queryString);

        TB_WIDTH = (params['width'] * 1) || 1000; //defaults to 630 if no paramaters were added to URL
        TB_HEIGHT = (params['height'] * 1) || 440; //defaults to 440 if no paramaters were added to URL

        if (url.indexOf('TB_iframe') != -1) {// either iframe or ajax window
            urlNoQuery = url.split('TB_');
            $("#TB_iframeContent").remove();
            if (params['modal'] != "true") {//iframe no modal
                $("#TB_window").append("<iframe frameborder='0' hspace='0' src='" + urlNoQuery[0] + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random() * 1000) + "' onload='tb_showIframe()' style='width:" + (TB_WIDTH + 29) + "px;height:" + (TB_HEIGHT + 17) + "px;' > </iframe>");
            } else {//iframe modal
                $("#TB_overlay").unbind();
                $("#TB_window").append("<iframe frameborder='0' hspace='0' src='" + urlNoQuery[0] + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random() * 1000) + "' onload='tb_showIframe()' style='width:" + (TB_WIDTH + 29) + "px;height:" + (TB_HEIGHT + 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_ajaxNavi'></div><div id='TB_ajaxContent'></div>");
                }
            } else {//this means the window is already up, we are just loading new content via ajax
                $("#" + TB_OPENER).css({ display: 'none', marginLeft: '' + parseInt(0) + 'px' });
            }
        }
        for (var i = 0; i < 10; i++) {
            $('#TB_closeWindowButton-' + i).click(tb_remove);
        }

        if (url.indexOf('TB_inline') != -1) {
            TB_OPENER = params['inlineId'];
            TB_NAVI_X = getPositionLeft('navi-1');
            TB_NAVI_Y = getPositionTop('navi-1');
            TB_OPENER_X = getPositionLeft('parent-' + TB_OPENER);
            TB_OPENER_Y = TB_NAVI_Y + document.getElementById('level-1').offsetHeight + 1;

            $("#TB_ajaxNavi").append($('#navi-1').children());
            if ($('#' + TB_OPENER).length == 0) {
            } else {
                $("#TB_ajaxContent").append($('#' + TB_OPENER));
            }

            $("#TB_window").unload(function()
            {
                $('#navi-1').append($('#level-1')); // move elements back when you're finished
                for (var i = 0; i < 10; i++) {
                    $('#box-' + i).css({ display: 'none', marginLeft: '' + parseInt(0) + 'px' });
                    $('#parent-box-' + i).append($('#box-' + i));
                }
            });
            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
    }
}

//helper functions below
function tb_showIframe()
{
    $("#TB_load").remove();
    $("#TB_window").css({ display: "block" });
}

function tb_remove()
{
    $("#TB_imageOff").unbind("click");
    $("#TB_closeWindowButton").unbind("click");
    $("#TB_window").fadeOut("fast", function() { $('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").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({ left: '' + parseInt(TB_NAVI_X) + 'px', top: '' + parseInt(TB_NAVI_Y) + 'px' });
    $("#" + TB_OPENER).css({ display: 'block', marginLeft: '' + parseInt(TB_OPENER_X - TB_NAVI_X) + '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_getPageSize()
{
    var de = document.documentElement;
    var w = window.innerWidth || self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
    var h = window.innerHeight || self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;
    arrayPageSize = [w, h];
    return arrayPageSize;
}

function tb_detectMacXFF()
{
    var userAgent = navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox') != -1) {
        return true;
    }
}

function getPositionTop(layerId)
{
    var iReturnValue = 0;
    elementid = document.getElementById(layerId)
    while (elementid != null) {
        iReturnValue += elementid.offsetTop;
        elementid = elementid.offsetParent;
    }
    return iReturnValue;
}

function getPositionLeft(layerId)
{
    var iReturnValue = 0;
    elementid = document.getElementById(layerId)
    while (elementid != null) {
        iReturnValue += elementid.offsetLeft;
        elementid = elementid.offsetParent;
    }
    return iReturnValue;
}
