/*
 * 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
*/
jQuery.noConflict();

var tb_pathToImage = "/img/loadingAnimation.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
jQuery(document).ready(function(){
  tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
  imgLoader = new Image();// preload image
  imgLoader.src = tb_pathToImage;
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk){
  jQuery(domChunk).click(function(){
  var t = this.title || this.name || null;
  var a = this.href || this.alt;
  var g = this.rel || false;
  tb_show(t,a,g);
  this.blur();
  return false;
  });
}
var TB_POSITION_WIDE = false;
function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
  TB_POSITION_WIDE = false;
  jQuery("#TB_window").css({visibility:'hidden'});
  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("TB_HideSelect") === null) {//iframe to hide select elements in ie6
        jQuery("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
        jQuery("#TB_overlay").click(tb_remove);
      }
    }else{//all others
      if(document.getElementById("TB_overlay") === null){
        jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
        jQuery("#TB_overlay").click(tb_remove);
      }
    }

    if(tb_detectMacXFF()){
      jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
    }else{
      jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
    }

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

    if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images

      TB_PrevCaption = "";
      TB_PrevURL = "";
      TB_PrevHTML = "";
      TB_NextCaption = "";
      TB_NextURL = "";
      TB_NextHTML = "";
      TB_imageCount = "";
      TB_FoundURL = false;
      if(imageGroup){
        TB_TempArray = jQuery("a[@rel="+imageGroup+"]").get();
        for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
          var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
            if (!(TB_TempArray[TB_Counter].href == url)) {
              if (TB_FoundURL) {
                TB_NextCaption = TB_TempArray[TB_Counter].title;
                TB_NextURL = TB_TempArray[TB_Counter].href;
                TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
              } else {
                TB_PrevCaption = TB_TempArray[TB_Counter].title;
                TB_PrevURL = TB_TempArray[TB_Counter].href;
                TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
              }
            } else {
              TB_FoundURL = true;
              TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);
            }
        }
      }

      imgPreloader = new Image();
      imgPreloader.onload = function(){
      imgPreloader.onload = null;

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

      TB_WIDTH = imageWidth + 30;
      TB_HEIGHT = imageHeight + 60;

      // If the intended height is larger than the height of the browser, resize to fit accordingly.
      if(TB_HEIGHT >= pagesize[1]) {
        TB_HEIGHT = pagesize[1];
      }

      jQuery("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_printWindow' title='Print This Page' onclick='tb_print()'>Print This Page</a><a href='#' id='TB_closeWindowButton' title='Close'>Close Window</a></div>");

      jQuery("#TB_closeWindowButton").click(tb_remove);

      if (!(TB_PrevHTML === "")) {
        function goPrev(){
          if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);}
          jQuery("#TB_window").remove();
          jQuery("body").append("<div id='TB_window'></div>");
          tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
          return false;
        }
        jQuery("#TB_prev").click(goPrev);
      }

      if (!(TB_NextHTML === "")) {
        function goNext(){
          jQuery("#TB_window").remove();
          jQuery("body").append("<div id='TB_window'></div>");
          tb_show(TB_NextCaption, TB_NextURL, imageGroup);
          return false;
        }
        jQuery("#TB_next").click(goNext);

      }

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

      tb_position();
      jQuery("#TB_load").remove();
      jQuery("#TB_ImageOff").click(tb_remove);
      jQuery("#TB_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 = tb_parseQuery( queryString );

      // If the intended height is larger than the height of the browser, resize to fit accordingly.
      var de = document.documentElement;
      var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
      var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;

      if(params['width'] == 'auto') {
        if (top.innerWidth > 0 && top.innerWidth < h) {
          w = top.innerWidth - 60;
        }
        params['width'] = w - 60;//if in admin, max width out
        TB_POSITION_WIDE = true;
      }
      if(params['height'] == 'auto') {
        if (top.innerHeight > 0 && top.innerHeight < h) {
          h = top.innerHeight - 30;
        }
        params['height'] = h - 60;//if in admin, max width height
      }

      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

      if(TB_HEIGHT >= h) {
        TB_HEIGHT = h - 30;
      }

      ajaxContentW = TB_WIDTH - 30;
      ajaxContentH = TB_HEIGHT - 45;

      if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window
          urlNoQuery = url.split('TB_');
          jQuery("#TB_iframeContent").remove();
          if(params['modal'] != "true"){//iframe no modal
            jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>Close Window</a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' 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{//iframe modal
          jQuery("#TB_overlay").unbind();
            jQuery("#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:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
          }
      }else{// not an iframe, ajax
          if(jQuery("#TB_window").css("display") != "block"){
            if(params['modal'] != "true"){//ajax no modal
            jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_printWindow' title='Print This Page' onclick='tb_print()'>Print This Page</a><a href='#' id='TB_closeWindowButton'>Close Window</a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
            }else{//ajax modal
            jQuery("#TB_overlay").unbind();
            jQuery("#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
            jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
            jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
            jQuery("#TB_ajaxContent")[0].scrollTop = 0;
            jQuery("#TB_ajaxWindowTitle").html(caption);
          }
      }

      jQuery("#TB_closeWindowButton").click(tb_remove);

        if(url.indexOf('TB_inline') != -1){
          jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children());
          jQuery("#TB_window").unload(function () {
            jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished
          });
          tb_position();
          jQuery("#TB_load").remove();
          jQuery("#TB_window").css({display:"block"});
        }else if(url.indexOf('TB_iframe') != -1){
          tb_position();
          if(jQuery.browser.safari){//safari needs help because it will not fire iframe onload
            jQuery("#TB_load").remove();
            jQuery("#TB_window").css({display:"block"});
          }
        }else{
          jQuery("#TB_ajaxContent").load(url += "&thickbox=true&random=" + (new Date().getTime()),function(){//to do a post change this load method
            tb_position();
            jQuery("#TB_load").remove();
            tb_init("#TB_ajaxContent a.thickbox");
            jQuery("#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(){
  jQuery("#TB_load").remove();
  jQuery("#TB_window").css({display:"block"});
}

function tb_remove() {
  jQuery("#TB_imageOff").unbind("click");
  jQuery("#TB_closeWindowButton").unbind("click");
  jQuery("#TB_window").fadeOut("fast",function(){jQuery('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
  jQuery("#TB_load").remove();
  if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
    jQuery("body","html").css({height: "auto", width: "auto"});
    jQuery("html").css("overflow","");
  }
  document.onkeydown = "";
  document.onkeyup = "";
  return false;
}
var tb_resize_tries = 0;
var tb_resize_timeout;
var tb_resize_iframe_height_delay = 0; // this is an odd one. we set to to the initial 'height' we get from the iframed content. it's usually HUGE. then, when the iframe's css processes, it changes. once it changes from this value & is not 0, we assume it's the real final height.
function tb_resize() {
    clearTimeout(tb_resize_timeout);
    var minimum_height_to_show = 600;
    var inner_height = jQuery("#TB_ajaxContent").height();
    if (!inner_height && jQuery('#TB_iframeContent') && jQuery('#TB_iframeContent').get(0)) {
      jQuery(jQuery('#TB_iframeContent').get(0).contentWindow.document).ready(function(){
        if (tb_resize_iframe_height_delay == 0) {
          tb_resize_iframe_height_delay = jQuery(this.body).height();
        }
        jQuery(this.body).css({height: 0});
      });
      inner_height = jQuery(jQuery('#TB_iframeContent').get(0).contentWindow.document.body).height();
      if (jQuery.browser.msie && jQuery('#TB_iframeContent').get(0).contentWindow.document.body) { //IE6
        inner_height = jQuery('#TB_iframeContent').get(0).contentWindow.document.body.scrollHeight;
      }
      if (inner_height == tb_resize_iframe_height_delay) {
        inner_height = 0;
      }
    }
    var inner_width = jQuery("#TB_ajaxContent").width();
    if (!inner_height) {
      tb_resize_tries++;
      if (tb_resize_tries < 10) { // try for 2.5 seconds
        tb_resize_timeout = setTimeout(tb_resize, 250);
        return;
      }
    }
    if (inner_height < minimum_height_to_show) {
      inner_height = minimum_height_to_show;
    }
    var de = document.documentElement;
    var h = top.innerHeight || window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
    var window_ajax_height_difference = 65; // additional height needed beyond ajaxContent height to calculate full window height
    var margin = 20; // combined top & bottom margin to put around TB_window
    var iframe_padding = 20; // extra space needed for iframes as compared to inner_height
    if (inner_height+window_ajax_height_difference+margin > h) {
      inner_height = (h-window_ajax_height_difference-margin);
    }
    var top_margin = ((inner_height/2)+(window_ajax_height_difference/2));
    jQuery("#TB_window").css({marginTop: '-'+top_margin+'px'});
    jQuery("#TB_ajaxContent").css({height: inner_height+'px'});
    jQuery("#TB_iframeContent").css({height: inner_height+iframe_padding+'px'});

    if (jQuery.browser.msie && jQuery.browser.version < 7) { // IE6
        jQuery("#TB_window").css({marginTop: (h-inner_height-window_ajax_height_difference)/2+'px'});
    }
    jQuery("#TB_window").css({visibility: 'visible'});
}
function tb_position() {
  /*
  var de = document.documentElement;
  var h = top.innerHeight || window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
  var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
  if(TB_HEIGHT >= h) {
    TB_HEIGHT = h;
  }
  if(TB_WIDTH >= w) {
    TB_WIDTH = w;
  }
  */
  if (TB_POSITION_WIDE == true) { // ADMIN SLOT EDITOR THICKBOXES
    jQuery("#TB_window").css({position: 'absolute', top: parent.document.documentElement.scrollTop+'px', left: 10 + 'px', width: TB_WIDTH + 'px'});
  } else {
    jQuery("#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
      jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
    }
  }
  parseLinkTargets();

  if (!(TB_POSITION_WIDE == true)) { // NON-ADMIN SLOT EDITOR THICKBOXES
    // NOTE: This KILLS the height/width settings being passed in
    var de = document.documentElement;
    var h = top.innerHeight || window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
    jQuery("#TB_window").css({visibility: 'hidden'});
    jQuery("#TB_ajaxContent").css({height: 'auto'});
    jQuery("#TB_iframeContent").css({height: '0'});

    // this timeout loop is used because the height is not apparant until it's REALLY fully loaded
    tb_resize_tries = 0;
    tb_resize_iframe_height_delay = 0;
    tb_resize_timeout = setTimeout(tb_resize, 100);
  }
}

function tb_parseQuery ( query ) {
   query=query.replace('?', '&');
   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 tb_print() {
  if (document.getElementById('TB_window')) {
    var iframe = document.createElement('IFRAME');
    var doc = null;
    jQuery(iframe).attr('style','position:absolute;width:0px;height:0px;left:-500px;top:-500px;');
    document.body.appendChild(iframe);
    doc = iframe.contentWindow.document;
    var css = '';
    var href = '';
    parts = window.location.href.split('/');
    href = jQuery(this).attr('href');
    root = '';
    base = '';
    for(i=0; i<(parts.length-1); i++) {
      base += parts[i] + '/';
      if (i == 2) {
        root = base;
      }
    }
    jQuery('head link').each(function(){
      if(jQuery(this).attr('type') == 'text/css') {
        href = jQuery(this).attr('href');
        if (href.substring(0,4) != 'http') {
          //not fq url
          if(href.substring(0,1) == '/') {
            href = root.substring(0, root.length - 1) + href;
          } else {
            href = base + jQuery(this).attr('href');
          }
        }
        css += '<link href="'+href+'" type="'+jQuery(this).attr('type')+'" media="'+jQuery(this).attr('media')+'" rel="'+jQuery(this).attr('rel')+'" />';
      }
    });
    jQuery('style').each(function(){
      css += '<style type="'+jQuery(this).attr('type')+'" media="'+jQuery(this).attr('media')+'">'+jQuery(this).html()+'</style>';
    });
    css += '<style type="text/css">#TB_window { position: static !important; top: 0 !important; left: 0 !important; } #TB_ajaxContent { height: auto !important; } #TB_title { display: none; }</style>';
    doc.write('<html class="'+jQuery('html:first').attr('class')+'" id="'+jQuery('html:first').attr('id')+'"><head>'+css+'</head><body class="'+jQuery('body:first').attr('class')+'" id="'+jQuery('body:first').attr('id')+'"><div id="TB_window" style="display:block">'+jQuery('#TB_window').html()+'</div></body></html>');
    doc.close();

    iframe.contentWindow.focus();
    iframe.contentWindow.print();
    //document.body.removeChild(iframe);
  }
}

jQuery.fn.extend({
  resize:function(params, callback){
    return this.each(function(){
      var clicked=false;
      var start_x;
      var start_y;
      if(params&&params['target']){var resize=params['target'];}
      else{var resize=this;}
      if(params&&typeof(params['y'])!="undefined"){var y=params['y'];}
      else{var y=1;}
      if(params&&typeof(params['x'])!="undefined"){var x=params['x'];}
      else{var x=1;}
      if(params&&typeof(params['min_width'])!="undefined"){var min_w=params['min_width'];}
      else{var min_w=1;}
      if(params&&typeof(params['min_height'])!="undefined"){var min_h=params['min_height'];}
      else{var min_h=1;}
      jQuery(this).hover(function(){
          jQuery(this).css('cursor','move');
        },function(){
          jQuery(this).css('cursor','default');
          clicked=false;
          callback();
      });
      jQuery(this).mousedown(function(e){
        clicked=true;
        start_x=Math.round(e.pageX-jQuery(this).eq(0).offset().left);
        start_y=Math.round(e.pageY-jQuery(this).eq(0).offset().top);
      });
      jQuery(this).mouseup(function(e){
//        clicked=false;
//        callback();
      });
      jQuery(this).mousemove(function(e){
        if(clicked){
          var mouse_x=Math.round(e.pageX-jQuery(this).eq(0).offset().left)-start_x;
          var mouse_y=Math.round(e.pageY-jQuery(this).eq(0).offset().top)-start_y;
          var div_w=jQuery(resize).width();
          var div_h=jQuery(resize).height();
          var new_w=parseInt(div_w)+mouse_x;
          var new_h=parseInt(div_h)+mouse_y;
          if(x==1||(typeof(x)=="number"&&new_w<x&&new_w>min_w)){
            jQuery(resize).css('width',new_w+"px");
          }
          if(y==1||(typeof(y)=="number"&&new_h<y&&new_h>min_h)){
            jQuery(resize).css('height',new_h+"px");
          }
          start_x=Math.round(e.pageX-jQuery(this).eq(0).offset().left);
          start_y=Math.round(e.pageY-jQuery(this).eq(0).offset().top);
        }
      });
    });
  }
});


