$(document).ready(function(){
  //thickbox replacement
  var closeModal = function(hash){
    var $modalWindow = $(hash.w);
    //$('#jqmContent').attr('src', 'blank.html');
    $modalWindow.fadeOut('2000', function(){
      hash.o.remove();
      //refresh parent
      if (hash.refreshAfterClose === 'true'){
        window.location.href = document.location.href;
      }
   });
};

$(document).keydown( function( e ) {
  if( e.which == 27) {  // escape, close box
    $(".jqmWindow").jqmHide();
  }
});		
		
var openInFrame = function(hash) {
  var $trigger = $(hash.t);
  var $modalWindow = $(hash.w);
  var $modalContainer = $('iframe', $modalWindow);
  var myUrl = $trigger.attr('href');
  var myTitle = $trigger.attr('title');
  var newWidth = 0, newHeight = 0, newLeft = 0, newTop = 0;
  $modalContainer.html('').attr('src', myUrl);
  $('#jqmTitleText').text(myTitle);
  myUrl = (myUrl.lastIndexOf("#") > -1) ? myUrl.slice(0, myUrl.lastIndexOf("#")) : myUrl;
  var queryString = (myUrl.indexOf("?") > -1) ? myUrl.substr(myUrl.indexOf("?") + 1) : null;
  if (queryString != null && typeof queryString != 'undefined') {
    var queryVarsArray = queryString.split("&");
    for (var i = 0; i < queryVarsArray.length; i++){
      if (unescape(queryVarsArray[i].split("=")[0]) == 'width'){
        var newWidth = queryVarsArray[i].split("=")[1];
      }
      if (escape(unescape(queryVarsArray[i].split("=")[0])) == 'height'){
        var newHeight = queryVarsArray[i].split("=")[1];
      }
      if (escape(unescape(queryVarsArray[i].split("=")[0])) == 'jqmRefresh'){
        // if true, launches a "refresh parent window" order after the modal is closed.
        hash.refreshAfterClose = queryVarsArray[i].split("=")[1]
      } else {
        hash.refreshAfterClose = false;
      }
    }
    // let's run through all possible values: 90%, nothing or a value in pixel
    if (newHeight != 0) {
      if (newHeight.indexOf('%') > -1) {
        newHeight = Math.floor(parseInt($(window).height()) * (parseInt(newHeight) / 100));
      }
      var newTop = Math.floor(parseInt($(window).height() - newHeight) / 2);
    } else {
      newHeight = $modalWindow.height();
    }
    if (newWidth != 0) {
      if (newWidth.indexOf('%') > -1) {
        newWidth = Math.floor(parseInt($(window).width() / 100) * parseInt(newWidth));
      }
      var newLeft = Math.floor(parseInt($(window).width() / 2) - parseInt(newWidth) / 2);
    } else {
      newWidth = $modalWindow.width();
    }
    // do the animation so that the windows stays on center of screen despite resizing
    $modalWindow.css({
      width: newWidth,
      height: newHeight,
      opacity: 0
    }).jqmShow().animate({
      width: newWidth,
      height: newHeight,
      top: newTop,
      left: newLeft,
      marginLeft: 0,
      opacity: 1
    }, 'slow');
  } else {
    // don't do animations
    $modalWindow.jqmShow();
  }
}

$('#modalWindow').jqm({
    overlay: 70,
    modal: true,
    trigger: 'a.thickbox',
    target: '#jqmContent',
    onHide: closeModal,
    onShow: openInFrame
  });
});

