/* Thickbox Plus - One resizing box to rule them all.
* Based on original Thickbox script by Cody Lindley (http://www.codylindley.com)
* Modified by Christian Montoya (http://www.christianmontoya.com)
* For information, visit http://lab.christianmontoya.com/thickbox-plus/
* Under an Attribution, Share Alike License
* Download by http://www.jb51.net
* Thickbox is built on top of the very light weight jquery library.
* Modifications must keep attribution for both Christian Montoya and Cody Lindley.
*/

$(document).ready(TB_launch);

// function for adding Thickbox to elements of class .thickbox
// wrapped by Christian Montoya for uses other than $(document).ready
function TB_launch() {
    $("a.thickbox").click(function () {
        var t = this.title || this.innerHTML || this.href;
        TB_show(t, this.href);
        this.blur();
        return false;
    });
}

function TB_show(caption, url) { //function called when the user clicks on a thickbox link
    try {
        $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
        $("#TB_overlay").css("opacity", "0.6");
        $("#TB_overlay").css("filter", "alpha(opacity=60)");
        $("#TB_overlay").css("-moz-opacity", "0.6");
        $("#TB_overlay").click(TB_remove);
        $(window).resize(TB_position);
        $("body").append("<div id='TB_load'><div id='TB_loadContent'><img src='/cms/css/images/35.gif' /></div></div>");
        $("#TB_overlay").show();

        var urlString = /.jpg|.jpeg|.png|.gif|.html|.htm|.aspx/g;
        var urlType = url.match(urlString);

        if (urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif') {//code to show images

            var imgPreloader = new Image();
            imgPreloader.onload = function () {

                // Resizing large images added by Christian Montoya
                var de = document.documentElement;
                var x = (self.innerWidth || (de && de.clientWidth) || document.body.clientWidth) - 50;
                var y = (self.innerHeight || (de && de.clientHeight) || document.body.clientHeight) - 80;
                if (imgPreloader.width > x) {
                    imgPreloader.height = imgPreloader.height * (x / imgPreloader.width);
                    imgPreloader.width = x;
                    if (imgPreloader.height > y) {
                        imgPreloader.width = imgPreloader.width * (y / imgPreloader.height);
                        imgPreloader.height = y;
                    }
                }
                else if (imgPreloader.height > y) {
                    imgPreloader.width = imgPreloader.width * (y / imgPreloader.height);
                    imgPreloader.height = y;
                    if (imgPreloader.width > x) {
                        imgPreloader.height = imgPreloader.height * (x / imgPreloader.width);
                        imgPreloader.width = x;
                    }
                }
                // End Resizing

                TB_WIDTH = imgPreloader.width + 30;
                TB_HEIGHT = imgPreloader.height + 60;
                $("#TB_window").append("<img id='TB_Image' src='" + url + "' width='" + imgPreloader.width + "' height='" + imgPreloader.height + "' alt='" + caption + "'/>"
								 + "<div id='TB_caption'>" + caption + "</div><div id='TB_closeWindow'><a href='javascript:;' id='TB_closeWindowButton'>¹Ø±Õ</a></div>");
                $("#TB_closeWindowButton").click(TB_remove);
                $("#TB_Image").click(TB_remove); // close when image clicked added by Christian Montoya
                TB_position();
                $("#TB_load").remove();
                $("#TB_window").slideDown("normal");
            }

            imgPreloader.src = url;
        }

        if (urlType == '.htm' || urlType == '.html' || urlType == '.aspx') {//code to show html pages

            var queryString = url.replace(/^[^\?]+\??/, '');
            var params = parseQuery(queryString);

            TB_WIDTH = (params['width'] * 1) + 30;
            TB_HEIGHT = (params['height'] * 1) + 40;
            TB_scrolling = params['scrolling'];
            ajaxContentW = TB_WIDTH;
            ajaxContentH = TB_HEIGHT - 35;
            $("#TB_window").append("<div id='TB_closeAjaxWindow'><div style='float:left;'>" + caption + "</div><div style='float:right;'><a href='javascript:;' style='text-decoration: none;' id='TB_closeWindowButton'>¹Ø±Õ</a></div></div><div id='TB_ajaxContent' style='width:" + ajaxContentW + "px;height:" + ajaxContentH + "px;'></div>");
            //$("#TB_window").easydrag();
            $("#TB_closeWindowButton").click(TB_remove);
            $("#TB_ajaxContent").html("<iframe id=\"TB_iframeContent\" style='width:" + ajaxContentW + "px;height:" + ajaxContentH + "px;padding: 0;margin: 0;' style=\"border: 0px;\" scrolling=\"" + TB_scrolling + "\" frameborder=\"0\" src=\"" + url + "\"></iframe>");
            TB_position();
            $("#TB_load").remove();
            $("#TB_window").fadeIn("600");
        }

    } catch (e) {
        alert(e);
    }
}

//helper functions below

function TB_remove() {
    // #TB_load removal added by Christian Montoya; solves bug when overlay is closed before image loads
    $("#TB_window").fadeOut("600", function () { $('#TB_window,#TB_overlay,#TB_load').remove(); });
    return false;
}

function TB_position() {
    var de = document.documentElement;
    var w = self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
    var h = self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;

    if (window.innerHeight && window.scrollMaxY) {
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        yScroll = document.body.scrollHeight;
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
        yScroll = document.body.offsetHeight;
    }

    $("#TB_window").css({ width: TB_WIDTH + "px", height: TB_HEIGHT + "px",
        left: ((w - TB_WIDTH) / 2) + "px", top: ((h - TB_HEIGHT) / 2) + "px"
    });
    $("#TB_overlay").css("height", yScroll + "px");
}

function parseQuery(query) {
    var Params = new Object();
    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;
}

