/*
 * thickbox2 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
*/
if (typeof(overwriteTBCloseText)=="undefined")
   overwriteTBCloseText='X';
if (typeof(overwriteTBNextText)=="undefined")
   overwriteTBNextText='N&auml;chstes';
if (typeof(overwriteTBPrevText)=="undefined")
   overwriteTBPrevText='Vorheriges';
if (typeof(overwriteTBImageText)=="undefined")
   overwriteTBImageText='Bild';
if (typeof(overwriteTBOfText)=="undefined")
   overwriteTBOfText='von';
var tb2_pathToImage = "/module/jscript/lib/thickbox2/loadingAnimation.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
//on page load call tb2_init
jQuery(document).ready(function(){   
   tb2_init('a.thickbox2, area.thickbox2, input.thickbox2');//pass where to apply thickbox2
   imgLoader = new Image();// preload image
   imgLoader.src = tb2_pathToImage;
});
//add thickbox2 to href & area elements that have a class of .thickbox2
function tb2_init(domChunk){
   jQuery(domChunk).click(function(){
      var t = this.title || this.name || null;
      var a = this.href || this.alt;
      var g = this.rel || false;
      tb2_show(t,a,g);
      this.blur();
      return false;
   });
}
function tb2_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox2 link
   try {
      if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
         jQuery("body","html").css({
            height: "100%",
            width: "100%"
         });
         jQuery("html").css("overflow","hidden");
         if (document.getElementById("TB2_HideSelect") === null) {//iframe to hide select elements in ie6
            jQuery("body").append("<iframe id='TB2_HideSelect'></iframe><div id='TB2_overlay'></div><div id='TB2_window'></div>");
            jQuery("#TB2_overlay").click(tb2_remove);
         }
      }else{//all others
         if(document.getElementById("TB2_overlay") === null){
            jQuery("body").append("<div id='TB2_overlay'></div><div id='TB2_window'></div>");
            jQuery("#TB2_overlay").click(tb2_remove);
         }
      }
    
      if(tb2_detectMacXFF()){
         jQuery("#TB2_overlay").addClass("TB2_overlayMacFFBGHack");//use png overlay so hide flash
      }else{
         jQuery("#TB2_overlay").addClass("TB2_overlayBG");//use background and opacity
      }
    
      if(caption===null){
         caption="";
      }
      jQuery("body").append("<div id='TB2_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
      jQuery('#TB2_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);
      if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
        
         TB2_PrevCaption = "";
         TB2_PrevURL = "";
         TB2_PrevHTML = "";
         TB2_NextCaption = "";
         TB2_NextURL = "";
         TB2_NextHTML = "";
         TB2_imageCount = "";
         TB2_FoundURL = false;
         if(imageGroup){
            TB2_TempArray = jQuery("a[@rel="+imageGroup+"]").get();
            for (TB2_Counter = 0; ((TB2_Counter < TB2_TempArray.length) && (TB2_NextHTML === "")); TB2_Counter++) {
               var urlTypeTemp = TB2_TempArray[TB2_Counter].href.toLowerCase().match(urlString);
               if (!(TB2_TempArray[TB2_Counter].href == url)) {
                  if (TB2_FoundURL) {
                     TB2_NextCaption = TB2_TempArray[TB2_Counter].title;
                     TB2_NextURL = TB2_TempArray[TB2_Counter].href;
                     TB2_NextHTML = "<span id='TB2_next'>&nbsp;&nbsp;<a href='#'>"+overwriteTBNextText+" &gt;</a></span>";
                  } else {
                     TB2_PrevCaption = TB2_TempArray[TB2_Counter].title;
                     TB2_PrevURL = TB2_TempArray[TB2_Counter].href;
                     TB2_PrevHTML = "<span id='TB2_prev'>&nbsp;&nbsp;<a href='#'>&lt; "+overwriteTBPrevText+"</a></span>";
                  }
               } else {
                  TB2_FoundURL = true;
                  TB2_imageCount = overwriteTBImageText+" " + (TB2_Counter + 1) +" "+overwriteTBOfText+" "+ (TB2_TempArray.length);
               }
            }
         }
         imgPreloader = new Image();
         imgPreloader.onload = function(){
            imgPreloader.onload = null;
        
            // Resizing large images - orginal by Christian Montoya edited by me.
            var pagesize = tb2_getPageSize();
            var x = pagesize[0] - 150;
            var y = pagesize[1] - 150;
            var imageWidth = imgPreloader.width;
            var imageHeight = imgPreloader.height;
            if (imageWidth > x) {
               imageHeight = imageHeight * (x / imageWidth);
               imageWidth = x;
               if (imageHeight > y) {
                  imageWidth = imageWidth * (y / imageHeight);
                  imageHeight = y;
               }
            } else if (imageHeight > y) {
               imageWidth = imageWidth * (y / imageHeight);
               imageHeight = y;
               if (imageWidth > x) {
                  imageHeight = imageHeight * (x / imageWidth);
                  imageWidth = x;
               }
            }
            // End Resizing
      
            TB2_WIDTH = imageWidth + 30;
            TB2_HEIGHT = imageHeight + 60;
            jQuery("#TB2_window").append("<a href='' id='TB2_ImageOff' title='"+overwriteTBCloseText+"'><img id='TB2_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB2_caption'>"+caption+"<div id='TB2_secondLine'>" + TB2_imageCount + TB2_PrevHTML + TB2_NextHTML + "</div></div><div id='TB2_closeWindow'><a href='#' id='TB2_closeWindowButton' title='"+overwriteTBCloseText+"'>"+overwriteTBCloseText+"</a></div>");
      
            jQuery("#TB2_closeWindowButton").click(tb2_remove);
      
            if (!(TB2_PrevHTML === "")) {
               function goPrev(){
                  if(jQuery(document).unbind("click",goPrev)){
                     jQuery(document).unbind("click",goPrev);
                  }
                  jQuery("#TB2_window").remove();
                  jQuery("body").append("<div id='TB2_window'></div>");
                  tb2_show(TB2_PrevCaption, TB2_PrevURL, imageGroup);
                  return false;
               }
               jQuery("#TB2_prev").click(goPrev);
            }
      
            if (!(TB2_NextHTML === "")) {
               function goNext(){
                  jQuery("#TB2_window").remove();
                  jQuery("body").append("<div id='TB2_window'></div>");
                  tb2_show(TB2_NextCaption, TB2_NextURL, imageGroup);
                  return false;
               }
               jQuery("#TB2_next").click(goNext);
        
            }
            document.onkeydown = function(e){
               if (e == null) { // ie
                  keycode = event.keyCode;
               } else { // mozilla
                  keycode = e.which;
               }
               if(keycode == 27){ // close
                  tb2_remove();
               } else if(keycode == 190){ // display previous image
                  if(!(TB2_NextHTML == "")){
                     document.onkeydown = "";
                     goNext();
                  }
               } else if(keycode == 188){ // display next image
                  if(!(TB2_PrevHTML == "")){
                     document.onkeydown = "";
                     goPrev();
                  }
               }
            };
      
            tb2_position();
            jQuery("#TB2_load").remove();
            jQuery("#TB2_ImageOff").click(tb2_remove);
            jQuery("#TB2_window").css({
               display:"block"
            }); //for safari using css instead of show
         };
      
         imgPreloader.src = url;
      }else{//code to show html
      
         var queryString = url.replace(/^[^\?]+\??/,'');
         var params = tb2_parseQuery( queryString );
         TB2_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
         TB2_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
         ajaxContentW = TB2_WIDTH - 30;
         ajaxContentH = TB2_HEIGHT - 45;
      
         if(url.indexOf('TB2_iframe') != -1){// either iframe or ajax window
            urlNoQuery = url.split('TB2_');
            jQuery("#TB2_iframeContent").remove();
            if(params['modal'] != "true"){//iframe no modal
               jQuery("#TB2_window").append("<div id='TB2_title'><div id='TB2_ajaxWindowTitle'>"+caption+"</div><div id='TB2_closeAjaxWindow'><a href='#' id='TB2_closeWindowButton' title='"+overwriteTBCloseText+"'>"+overwriteTBCloseText+"</a> or Esc Key</div></div><div class='ie_close_hack_thickbox'><img src='http://data.heimat.de/common/close.gif' onclick='closeThickbox();'/></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB2_iframeContent' name='TB2_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb2_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
            }else{//iframe modal
               jQuery("#TB2_overlay").unbind();
               jQuery("#TB2_window").append("<div class='ie_close_hack_thickbox'><img src='http://data.heimat.de/common/close.gif' onclick='closeThickbox();'/></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB2_iframeContent' name='TB2_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb2_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH - 18)+"px;'> </iframe>");
            }
         }else{// not an iframe, ajax
            if(jQuery("#TB2_window").css("display") != "block"){
               if(params['modal'] != "true"){//ajax no modal
                  jQuery("#TB2_window").append("<div id='TB2_title'><div id='TB2_ajaxWindowTitle'>"+caption+"</div><div id='TB2_closeAjaxWindow'><a href='#' id='TB2_closeWindowButton'>"+overwriteTBCloseText+"</a> or Esc Key</div></div><div id='TB2_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
               }else{//ajax modal
                  jQuery("#TB2_overlay").unbind();
                  jQuery("#TB2_window").append("<div id='TB2_ajaxContent' class='TB2_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
               jQuery("#TB2_ajaxContent")[0].style.width = ajaxContentW +"px";
               jQuery("#TB2_ajaxContent")[0].style.height = ajaxContentH +"px";
               jQuery("#TB2_ajaxContent")[0].scrollTop = 0;
               jQuery("#TB2_ajaxWindowTitle").html(caption);
            }
         }
          
         jQuery("#TB2_closeWindowButton").click(tb2_remove);
      
         if(url.indexOf('TB2_inline') != -1){
            jQuery("#TB2_ajaxContent").append(jQuery('#' + params['inlineId']).children());
            jQuery("#TB2_window").unload(function () {
               jQuery('#' + params['inlineId']).append( jQuery("#TB2_ajaxContent").children() ); // move elements back when you're finished
            });
            tb2_position();
            jQuery("#TB2_load").remove();
            jQuery("#TB2_window").css({
               display:"block"
            });
         }else if(url.indexOf('TB2_iframe') != -1){
            tb2_position();
            if(jQuery.browser.safari){//safari needs help because it will not fire iframe onload
               jQuery("#TB2_load").remove();
               jQuery("#TB2_window").css({
                  display:"block"
               });
            }
         }else{
            jQuery("#TB2_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
               tb2_position();
               jQuery("#TB2_load").remove();
               tb2_init("#TB2_ajaxContent a.thickbox2");
               jQuery("#TB2_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
               tb2_remove();
            }
         };
      }
      if ($.browser.msie && $.browser.version < 7) {
         $('#TB2_window').css('top', document.documentElement.scrollTop + parseInt($('#TB2_window').css('top'))-240);
      }
    
   } catch(e) {
   //nothing here
   }
}
//helper functions below
function tb2_showIframe(){
   jQuery("#TB2_load").remove();
   jQuery("#TB2_window").css({
      display:"block"
   });
}
function tb2_remove() {
   jQuery("#TB2_imageOff").unbind("click");
   jQuery("#TB2_closeWindowButton").unbind("click");
   jQuery("#TB2_window").fadeOut("fast",function(){
      jQuery('#TB2_window,#TB2_overlay,#TB2_HideSelect').trigger("unload").unbind().remove();
   });
   jQuery("#TB2_load").remove();
   if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
      jQuery("body","html").css({
         height: "auto",
         width: "auto"
      });
      jQuery("body, html").css("overflow","");
   }
   document.onkeydown = "";
   document.onkeyup = "";
   return false;
}
function tb2_position() {
   jQuery("#TB2_window").css({
      marginLeft: '-' + parseInt((TB2_WIDTH / 2),10) + 'px',
      width: TB2_WIDTH + 'px'
      });
   if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
      jQuery("#TB2_window").css({
         marginTop: '-' + parseInt((TB2_HEIGHT / 2),10) + 'px'
         });
   }
}
function tb2_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 tb2_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 tb2_detectMacXFF() {
   var userAgent = navigator.userAgent.toLowerCase();
   if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
      return true;
   }
}
