$(document).ready(function()
{
var closeModal = function(hash)
  {
   var $modalWindow = $(hash.w);
   $modalWindow.fadeOut('2000', function()
    {
    hash.o.remove();
    //refresh parent
    if (hash.refreshAfterClose == true)
      {
      window.location.href = document.location.href;
      }
    });
  };
  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;
    // hard-coded width and height
    var newWidth = '600';
    var newHeight = '300'
    if (queryString != null && typeof queryString != 'undefined')
      {
      var queryVarsArray = queryString.split("&");
      for (var i = 0; i < queryVarsArray.length; i++)
        {
        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();
          //newHeight = '70%';
          }
          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
  });
});