﻿// JScript File
(function($){
$.IIRCMessageBox = function(data, klass){
   $.IIRCMessageBox.loading()
   
   if (data.width) {
   $.IIRCMessageBox.settings.width = data.width
   $('#IIRCMessageBox .body').width($.IIRCMessageBox.settings.width)
   } 
 
   if (data.ajax) FillIIRCMessageBoxFromAjax(data.ajax, klass)
   else if (data.image) FillIIRCMessageBoxFromImage(data.image, klass)
   else if (data.div) FillIIRCMessageBoxFromHref(data.div, klass)
   else if ($.isFunction(data)) data.call($)
   else $.IIRCMessageBox.reveal(data, klass)
}

$.extend($.IIRCMessageBox, {
settings: {
   opacity:0,
   overlay:true,
   width:'400', 
   loadingImage:'./Images/popup/loading.gif',
   closeImage:'./Images/popup/closelabel.gif',
   imageTypes: ['png','jpg','jpeg','gif'],
   IIRCMessageBoxHtml: '\
   <div id="IIRCMessageBox" style="display:none;">  \
     <div class="PopUp">  \
        <table> \
           <tbody> \
              <tr> \
                <td class="tl" /><td class="b" /><td class="tr" /> \
              </tr> \
              <tr> \
                <td class="b" />  \
                <td class="body">  \
                   <div class="content"> \
                   </div> \
                     <div class="footer" style="border-top:2px solid #eeeeee;padding-top:3px;margin-top:30px;"> \
                     <a href="#" class="close"> \
                       <img src="./Images/popup/closelabel.gif" title="close" class="close_image" /> \
                     </a> \
                   </div> \
                </td>  \
                <td class="b" /> \
             </tr> \
             <tr> \
               <td class="bl" /><td class="b" /><td class="br" />  \
            </tr> \
           </tbody> \
        </table> \
     </div>  \
  </div> '
},

loading: function(){
init()

if ($('#IIRCMessageBox .loading').length == 1) return true
showOverlay()

$('#IIRCMessageBox .content').empty()
$('#IIRCMessageBox .body').children().hide().end().append('<div class="loading"><img src="' + $.IIRCMessageBox.settings.loadingImage + '" /></div>')

/*
* Code added to position IIRCMessageBox relative to the cursor
*/
if(!$.IIRCMessageBox.settings.top) $.IIRCMessageBox.settings.top = getPageScroll()[1] + (getPageHeight() / 10)
if(!$.IIRCMessageBox.settings.left) $.IIRCMessageBox.settings.left = 385.5

$('#IIRCMessageBox').css({
 top:  $.IIRCMessageBox.settings.top,  
 left: $.IIRCMessageBox.settings.left
 }).show()
      
$(document).bind('keydown.IIRCMessageBox', function(e){  
  if (e.keyCode == 27) $.IIRCMessageBox.close()
  return true
})
$(document).trigger('loading.IIRCMessageBox')

},

reveal: function(data, klass){

$(document).trigger('beforeReveal.IIRCMessageBox')
if (klass) $('#IIRCMessageBox .content').addClass(klass)
$('#IIRCMessageBox .content').append(data)
$('#IIRCMessageBox .loading').remove()
$('#IIRCMessageBox .body').children().fadeIn('normal')
$('#IIRCMessageBox').css('left',$(window).width() / 2 - ($('#IIRCMessageBox table').width() / 2))
$(document).trigger('reveal.IIRCMessageBox').trigger('afterReveal.IIRCMessageBox')
},
close:function(){
$(document).trigger('close.IIRCMessageBox')
return false 
}
})


$.fn.IIRCMessageBox = function(settings){
  init(settings) 
  
  function clickHandler(){  
   $.IIRCMessageBox.loading(true)
   
   var klass = this.rel.match(/IIRCMessageBox\[?\.(\w+)\]?/)
   if (klass) klass = klass[1]
   
   FillIIRCMessageBoxFromHref(this.href, klass)
   return false
  }   
  return this.click(clickHandler)
}



function init(settings){
if($.IIRCMessageBox.settings.inited) return true
else $.IIRCMessageBox.settings.inited = true

$(document).trigger('init.IIRCMessageBox')

var ImageTypes = $.IIRCMessageBox.settings.imageTypes.join('|')
$.IIRCMessageBox.settings.imageTypesRegExp = new RegExp('\.' + ImageTypes + '$','i')

if(settings) $.extend($.IIRCMessageBox.settings,settings)
$('body').append($.IIRCMessageBox.settings.IIRCMessageBoxHtml)

var preLoad = [new Image(), new Image()]
preLoad[0].src = $.IIRCMessageBox.settings.closeImage
preLoad[1].src = $.IIRCMessageBox.settings.loadingImage


$('#IIRCMessageBox').find('.b:first, .bl, .br, .tl, .tr').each(function(){
  preLoad.push(new Image())
  preLoad.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/,'$1')  
})

$('#IIRCMessageBox .close').click($.IIRCMessageBox.close)
$('#IIRCMessageBox .close_image').attr('src',$.IIRCMessageBox.settings.closeImage)

$('#IIRCMessageBox .body').width($.IIRCMessageBox.settings.width) 
 
}


// getPageScroll() by quirksmode.com
function getPageScroll() {
 var xScroll, yScroll;
 if (self.pageYOffset) {
    yScroll = self.pageYOffset;
    xScroll = self.pageXOffset;
  } else if (document.documentElement && document.documentElement.scrollTop) {   // Explorer 6 Strict
    yScroll = document.documentElement.scrollTop;
    xScroll = document.documentElement.scrollLeft;
  } else if (document.body) { // all other Explorers
    yScroll = document.body.scrollTop;
    xScroll = document.body.scrollLeft;  
  }
  return new Array(xScroll,yScroll)
}
 
// Adapted from getPageSize() by quirksmode.com
function getPageHeight() {
  var windowHeight
  if (self.innerHeight) {  // all except Explorer
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowHeight = document.body.clientHeight;
  }  
  return windowHeight
}

function FillIIRCMessageBoxFromHref(href, klass){
if(href.match(/#/)){
 var url = window.location.href.split('#')[0]
 var target = href.replace(url,'')
 $.IIRCMessageBox.reveal($(target).clone().show(), klass)
} else if(href.match($.IIRCMessageBox.settings.imageTypesRegexp)){
  FillIIRCMessageBoxFromImage(href, klass)
} else {
 FillIIRCMessageBoxFromAjax(href, klass)
}
}

function FillIIRCMessageBoxFromImage(href, klass){
  var image = new Image()
  image.onload = function(){
    $.IIRCMessageBox.reveal('<div class="image"><img src="' + image.src + '" /></div>',klass)
  }
 image.src = href
}


function FillIIRCMessageBoxFromAjax(href, klass){
 $.get(href, function(data) {$.IIRCMessageBox.reveal(data, klass) })
}



function skipOverlay() {
  return $.IIRCMessageBox.settings.overlay == false || $.IIRCMessageBox.settings.opacity === null
}

function showOverlay() {
  if(skipOverlay()) return
  
  if($('#IIRCMessageBox_Overlay').length == 0)
    $('body').append('<div id="IIRCMessageBox_Overlay" class="IIRCMessageBox_Hide"></div>')
  
  $('#IIRCMessageBox_Overlay').hide().addClass("IIRCMessageBox_OverlayBG")
      .css('opacity',$.IIRCMessageBox.settings.opacity)
      .click(function(){$(document).trigger('close.IIRCMessageBox')})
      .fadeIn(200)
  return false
}

function hideOverlay(){    
    if (skipOverlay()) return   
     
    $('#IIRCMessageBox_Overlay').fadeOut(200, function(){         
      $("#IIRCMessageBox_Overlay").removeClass("IIRCMessageBox_OverlayBG")       
      $("#IIRCMessageBox_Overlay").addClass("IIRCMessageBox_Hide")       
      $("#IIRCMessageBox_Overlay").remove()
    })
    
    return false
}
 
$(document).bind('close.IIRCMessageBox', function(){   
  $(document).unbind('keydown.IIRCMessageBox')
  $('#IIRCMessageBox').fadeOut(function(){     
     $('#IIRCMessageBox .content').removeClass().addClass('content')     
     hideOverlay()
     $('#IIRCMessageBox .loading').remove()
  })
})

$(document).bind('click.IIRCMessageBox',function(e){
   $.IIRCMessageBox.settings.top = e.pageY + 20
   $.IIRCMessageBox.settings.left = e.pageX   
})
})(jQuery);

