(function($) {
	
  $.facebox = function(data, klass) {
    $.facebox.init()
    $.facebox.loading()
    $.isFunction(data) ? data.call($) : $.facebox.reveal(data, klass)
  }

  $.facebox.settings = {
  	mode:"iframe",
    loading_image : '/common/img/facebox/loading.gif',
    close_image   : '/common/img/facebox/closelabel.gif',
    close_win   : '/common/img/close.gif',
    image_types   : [ 'png', 'jpg', 'jpeg', 'gif' ],
    facebox_html  : '\
  <div id="facebox" style="display:none;"> \
    <div class="popup"> \
      <table valign="top"> \
        <tbody> \
          <tr> \
            <td class="tl"/><td class="b"/><td class="tr"/> \
          </tr> \
          <tr> \
            <td class="b"/> \
            <td class="body"> \
              <div class="content">\
              </div> \
            </td> \
            <td class="b"/> \
          </tr> \
          <tr> \
            <td class="bl"/><td class="b"/><td class="br"/> \
          </tr> \
        </tbody> \
      </table> \
    </div> \
  </div>'
  }

  $.facebox.loading = function() {
    if ($('#facebox .loading').length == 1) return true
	
    $('#facebox .content').empty()
    $('#facebox .body').children().hide().end().
      append('<div class="loading"><img src="'+$.facebox.settings.loading_image+'"/></div>')

    var pageScroll = $.facebox.getPageScroll()
    oldWidth = $(document).width();
    oldHeight= $(document).height();
    $('#facebox').css({
      top:230,
      left:300
    }).show()
	
	//obj = event.target?event.target:event.srcElement;
	//$('#facebox').top(jQuery(obj).top()+jQuery(obj).height()+3-pageScroll[1]);
	//faceboxLeft = jQuery(obj).left()-$('#facebox').width()/2;
	//if(faceboxLeft<0)
	//	faceboxLeft = 0;
    //$('#facebox').left(faceboxLeft);
    //newWidth = $(document).width();
    //newHeight = $(document).height();
	//caWidth = newWidth - oldWidth;
	//caHeight = newHeight - oldHeight;
	//if(caWidth>0){
	//	$('#facebox').left($('#facebox').left()-caWidth);
	//}
	//if(caHeight>0){
	//	$('#facebox').top($('#facebox').top()-caHeight);
	//}
    //$(document).bind('keydown.facebox', function(e) {
    //  if (e.keyCode == 27) $.facebox.close()
    //})
  }

  $.facebox.reveal = function(data, klass) {
    if (klass) $('#facebox .content').addClass(klass)
    $('#facebox .content').append(data)
    $('#facebox .loading').remove()
    $('#facebox .body').children().fadeIn('normal')
    if($.fn.jqDrag){
    	$('#facebox').jqDrag();
    }
  }

  $.facebox.close = function() {
    $(document).trigger('close.facebox')
    return false
  }

  $(document).bind('close.facebox', function() {
    $(document).unbind('keydown.facebox')
    $('#facebox').fadeOut(function() {
      $('#facebox .content').removeClass().addClass('content')
    })
  })

  $.fn.facebox = function(settings) {
    $.facebox.init(settings)
    
	
   

    function click_handler() {
    
      $.facebox.loading(true)
	   var image_types = $.facebox.settings.image_types.join('|')
    image_types = new RegExp('\.' + image_types + '$', 'i')
      // support for rel="facebox[.inline_popup]" syntax, to add a class
      var klass = this.rel.match(/facebox\[\.(\w+)\]/)
      if (klass) klass = klass[1]

      // div
      if (this.href.match(/#/)) {
        var url    = window.location.href.split('#')[0]
        var target = this.href.replace(url,'')
        $.facebox.reveal($(target).clone().show(), klass)

      // image
      } else if (this.href.match(image_types)) {
        var image = new Image()
        image.onload = function() {
          $.facebox.reveal('<div class="image"><img src="' + image.src + '" /></div>', klass)
        }
        image.src = this.href

      // ajax
      } else {
        $.get(this.href, function(data) { $.facebox.reveal(data, klass) })
        
      }

      return false
    }
	function open_facebox(){
		$.facebox.loading(true);
		
		// support for rel="facebox[.inline_popup]" syntax, to add a class
		data = '';
		if($.facebox.settings.title && $.facebox.settings.title!=''){
			data = '<h2><span class="title">'+$.facebox.settings.title+'</span><img class="close" src="'+$.facebox.settings.close_win+'"/><div class="clear"></div></h2>';
		}
		data+= '<iframe src="' + $.facebox.settings.src + '" frameborder=\"0\"/></iframe>';
		$.facebox.reveal(data);
		if($.facebox.settings.height)
	    	$('#facebox div.popup iframe').css('height',$.facebox.settings.height-60);
	    $('#facebox h2 img.close').click($.facebox.close);
	}
    //this.click(click_handler)
    if($.facebox.settings.mode=='iframe')
    	open_facebox();
    else{
    	$.facebox.loading(true);
    	$.get($.facebox.settings.src, function(data) { $.facebox.reveal(data) });
    }
    return this;
  }

  $.facebox.init = function(settings) {
    if ($.facebox.settings.inited) {
      return true
    } else {
      $.facebox.settings.inited = true
    }
    if (settings) $.extend($.facebox.settings, settings)
    
    $('body').append($.facebox.settings.facebox_html)
	
    if($.facebox.settings.width){
    	$('#facebox').css('width',$.facebox.settings.width+5);
    	$('#facebox div.popup').css('width',$.facebox.settings.width);
    }
    if($.facebox.settings.height){
    	$('#facebox').css('height',$.facebox.settings.height+5);
    	$('#facebox div.popup').css('height',$.facebox.settings.height);
    }

  }

  $.facebox.getPageScroll = function() {
    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) 
  }

  // adapter from getPageSize() by quirksmode.com
  $.facebox.getPageHeight = function() {
    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
  }
})(jQuery);
