/*
 * thickboxA 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='Schlie&szlig;en';
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 tba_pathToImage = "/module/jscript/lib/thickbox/loadingAnimation.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
//on page load call tba_init
jQuery(document).ready(function(){
   tba_init('a.thickboxA, area.thickboxA, input.thickboxA');//pass where to apply thickboxA
   imgLoader = new Image();// preload image
   imgLoader.src = tba_pathToImage;
});
//add thickboxA to href & area elements that have a class of .thickboxA
function tba_init(domChunk){
   jQuery(domChunk).click(function(){
      var t = this.title || this.name || null;
      var a = this.href || this.alt;
      var g = this.rel || false;
      tba_show(t,a,g);
      this.blur();
      return false;
   });
}
function tba_show(caption, url, imageGroup) {//function called when the user clicks on a thickboxA 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("TBA_HideSelect") === null) {//iframe to hide select elements in ie6
            jQuery("body").append("<iframe id='TBA_HideSelect'></iframe><div id='TBA_overlay'></div><div id='TBA_window'></div>");
            jQuery("#TBA_overlay").click(tba_remove);
         }
      }else{//all others
         if(document.getElementById("TBA_overlay") === null){
            jQuery("body").append("<div id='TBA_overlay'></div><div id='TBA_window'></div>");
            jQuery("#TBA_overlay").click(tba_remove);
         }
      }

      if(tba_detectMacXFF()){
         jQuery("#TBA_overlay").addClass("TBA_overlayMacFFBGHack");//use png overlay so hide flash
      }else{
         jQuery("#TBA_overlay").addClass("TBA_overlayBG");//use background and opacity
      }

      if(caption===null){
         caption="";
      }
      jQuery("body").append("<div id='TBA_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
      jQuery('#TBA_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

         TBA_PrevCaption = "";
         TBA_PrevURL = "";
         TBA_PrevHTML = "";
         TBA_NextCaption = "";
         TBA_NextURL = "";
         TBA_NextHTML = "";
         TBA_imageCount = "";
         TBA_FoundURL = false;
         if(imageGroup){
            TBA_TempArray = jQuery("a[@rel="+imageGroup+"]").get();
            for (TBA_Counter = 0; ((TBA_Counter < TBA_TempArray.length) && (TBA_NextHTML === "")); TBA_Counter++) {
               var urlTypeTemp = TBA_TempArray[TBA_Counter].href.toLowerCase().match(urlString);
               if (!(TBA_TempArray[TBA_Counter].href == url)) {
                  if (TBA_FoundURL) {
                     TBA_NextCaption = TBA_TempArray[TBA_Counter].title;
                     TBA_NextURL = TBA_TempArray[TBA_Counter].href;
                     TBA_NextHTML = "<span id='TBA_next'>&nbsp;&nbsp;<a href='#'>"+overwriteTBNextText+" &gt;</a></span>";
                  } else {
                     TBA_PrevCaption = TBA_TempArray[TBA_Counter].title;
                     TBA_PrevURL = TBA_TempArray[TBA_Counter].href;
                     TBA_PrevHTML = "<span id='TBA_prev'>&nbsp;&nbsp;<a href='#'>&lt; "+overwriteTBPrevText+"</a></span>";
                  }
               } else {
                  TBA_FoundURL = true;
                  TBA_imageCount = overwriteTBImageText+" " + (TBA_Counter + 1) +" "+overwriteTBOfText+" "+ (TBA_TempArray.length);
               }
            }
         }
         imgPreloader = new Image();
         imgPreloader.onload = function(){
            imgPreloader.onload = null;

            // Resizing large images - orginal by Christian Montoya edited by me.
            var pagesize = tba_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

            TBA_WIDTH = imageWidth + 30;
            TBA_HEIGHT = imageHeight + 60;
            jQuery("#TBA_window").append("<a href='' id='TBA_ImageOff' title='"+overwriteTBCloseText+"'><img id='TBA_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TBA_caption'>"+caption+"<div id='TBA_secondLine'>" + TBA_imageCount + TBA_PrevHTML + TBA_NextHTML + "</div></div><div id='TBA_closeWindow'><a href='#' id='TBA_closeWindowButton' title='"+overwriteTBCloseText+"'>"+overwriteTBCloseText+"</a></div>");

            jQuery("#TBA_closeWindowButton").click(tba_remove);

            if (!(TBA_PrevHTML === "")) {
               function goPrev(){
                  if(jQuery(document).unbind("click",goPrev)){
                     jQuery(document).unbind("click",goPrev);
                  }
                  jQuery("#TBA_window").remove();
                  jQuery("body").append("<div id='TBA_window'></div>");
                  tba_show(TBA_PrevCaption, TBA_PrevURL, imageGroup);
                  return false;
               }
               jQuery("#TBA_prev").click(goPrev);
            }

            if (!(TBA_NextHTML === "")) {
               function goNext(){
                  jQuery("#TBA_window").remove();
                  jQuery("body").append("<div id='TBA_window'></div>");
                  tba_show(TBA_NextCaption, TBA_NextURL, imageGroup);
                  return false;
               }
               jQuery("#TBA_next").click(goNext);

            }
            document.onkeydown = function(e){
               if (e == null) { // ie
                  keycode = event.keyCode;
               } else { // mozilla
                  keycode = e.which;
               }
               if(keycode == 27){ // close
                  tba_remove();
               } else if(keycode == 190){ // display previous image
                  if(!(TBA_NextHTML == "")){
                     document.onkeydown = "";
                     goNext();
                  }
               } else if(keycode == 188){ // display next image
                  if(!(TBA_PrevHTML == "")){
                     document.onkeydown = "";
                     goPrev();
                  }
               }
            };

            tba_position();
            jQuery("#TBA_load").remove();
            jQuery("#TBA_ImageOff").click(tba_remove);
            jQuery("#TBA_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 = tba_parseQuery( queryString );
         TBA_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
         TBA_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
         ajaxContentW = TBA_WIDTH - 30;
         ajaxContentH = TBA_HEIGHT - 45;

         if(url.indexOf('TBA_iframe') != -1){// either iframe or ajax window
            urlNoQuery = url.split('TBA_');
            jQuery("#TBA_iframeContent").remove();
            if(params['modal'] != "true"){//iframe no modal
               jQuery("#TBA_window").append("<div id='TBA_title'><div id='TBA_ajaxWindowTitle'>"+caption+"</div><div id='TBA_closeAjaxWindow'><a href='#' id='TBA_closeWindowButton' title='"+overwriteTBCloseText+"'>"+overwriteTBCloseText+"</a> or Esc Key</div></div><div class='ie_close_hack_thickbox'><img src='http://data.heimat.de/common/close_black.gif' onclick='closeThickbox();'/></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TBA_iframeContent' name='TBA_iframeContent"+Math.round(Math.random()*1000)+"' onload='tba_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
            }else{//iframe modal
               jQuery("#TBA_overlay").unbind();
               jQuery("#TBA_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='TBA_iframeContent' name='TBA_iframeContent"+Math.round(Math.random()*1000)+"' onload='tba_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH - 18)+"px;'> </iframe>");
            }
         }else{// not an iframe, ajax
            if(jQuery("#TBA_window").css("display") != "block"){
               if(params['modal'] != "true"){//ajax no modal
                  jQuery("#TBA_window").append("<div id='TBA_title'><div id='TBA_ajaxWindowTitle'>"+caption+"</div><div id='TBA_closeAjaxWindow'><a href='#' id='TBA_closeWindowButton'>"+overwriteTBCloseText+"</a> or Esc Key</div></div><div id='TBA_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
               }else{//ajax modal
                  jQuery("#TBA_overlay").unbind();
                  jQuery("#TBA_window").append("<div id='TBA_ajaxContent' class='TBA_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("#TBA_ajaxContent")[0].style.width = ajaxContentW +"px";
               jQuery("#TBA_ajaxContent")[0].style.height = ajaxContentH +"px";
               jQuery("#TBA_ajaxContent")[0].scrollTop = 0;
               jQuery("#TBA_ajaxWindowTitle").html(caption);
            }
         }

         jQuery("#TBA_closeWindowButton").click(tba_remove);

         if(url.indexOf('TBA_inline') != -1){
            jQuery("#TBA_ajaxContent").append(jQuery('#' + params['inlineId']).children());
            jQuery("#TBA_window").unload(function () {
               jQuery('#' + params['inlineId']).append( jQuery("#TBA_ajaxContent").children() ); // move elements back when you're finished
            });
            tba_position();
            jQuery("#TBA_load").remove();
            jQuery("#TBA_window").css({
               display:"block"
            });
         }else if(url.indexOf('TBA_iframe') != -1){
            tba_position();
            if(jQuery.browser.safari){//safari needs help because it will not fire iframe onload
               jQuery("#TBA_load").remove();
               jQuery("#TBA_window").css({
                  display:"block"
               });
            }
         }else{
            jQuery("#TBA_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
               tba_position();
               jQuery("#TBA_load").remove();
               tba_init("#TBA_ajaxContent a.thickboxA");
               jQuery("#TBA_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
               tba_remove();
            }
         };
      }
      if ($.browser.msie && $.browser.version < 7) {
         $('#TBA_window').css('top', document.documentElement.scrollTop + parseInt($('#TBA_window').css('top'))-240);
      }

   } catch(e) {
   //nothing here
   }
}
//helper functions below
function tba_showIframe(){
   jQuery("#TBA_load").remove();
   jQuery("#TBA_window").css({
      display:"block"
   });
}
function tba_remove() {
   jQuery("#TBA_imageOff").unbind("click");
   jQuery("#TBA_closeWindowButton").unbind("click");
   jQuery("#TBA_window").fadeOut("fast",function(){
      jQuery('#TBA_window,#TBA_overlay,#TBA_HideSelect').trigger("unload").unbind().remove();
   });
   jQuery("#TBA_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 tba_position() {
   jQuery("#TBA_window").css({
      marginLeft: '-' + parseInt((TBA_WIDTH / 2),10) + 'px',
      width: TBA_WIDTH + 'px'
      });
   if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
      jQuery("#TBA_window").css({
         marginTop: '-' + parseInt((TBA_HEIGHT / 2),10) + 'px'
         });
   }
}
function tba_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 tba_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 tba_detectMacXFF() {
   var userAgent = navigator.userAgent.toLowerCase();
   if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
      return true;
   }
}

