/*

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

Очень сильная переработка.
Copyright (c) 2009 Onlyweb Studio | http://www.onlyweb.ru/
Author: Michael Zimin

Примеры использования:

<script type="text/javascript">
myWindow = new PopupWindow({window: '#TB_window', modal: false});
</script>
...
<span onclick="myWindow.popupShow()">Показать</span>
<span onclick="myWindow.popupRemove();">Закрыть</span>


TODO: В настоящее время не работает с параметром modal: true
Исправить.

*/

PopupWindow = newClass();
PopupWindow.prototype = {

  init: function(params) {
    var t = this;
    t.params = params;
    t.window = $(params['window']);
    t.isModal = params['modal'] || false;
    t.windowId = "#"+t.window.attr("id");
    t.showed = false;
  },

  popupShow: function() {
    var t = this;
    if(t.showed) return false;
    t.showed = true;
    // Если модальное окно, то показываем overlay слой
    if (t.isModal) {

      if (typeof document.body.style.maxHeight === "undefined") { // if IE 6
    		if (document.getElementById("TB_HideSelect") === null) { // iframe to hide select elements in ie6
          $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div>");
    		}
    	} else { //all others
    		if(document.getElementById("TB_overlay") === null){
    			$("body").append("<div id='TB_overlay'></div>");
    		}
    	}
      $("#TB_overlay").click(function() {
        t.popupRemove();
      });

    	if(t.detectMacXFF()){
    		$("#TB_overlay").addClass("TB_overlayMacFFBGHack"); // use png overlay so hide flash
    	} else {
    		$("#TB_overlay").addClass("TB_overlayBG"); // use background and opacity
    	}

    }

    // Закрываем окно при нажатии Esc
    document.onkeyup = function(e) {
      if (e == null) { // ie
        keycode = event.keyCode;
      } else { // mozilla
        keycode = e.which;
      }
      if (keycode == 27){ // close
        t.popupRemove();
      }
  	};


    // При нажатии не на окно, оно будет закрыто
    setTimeout(function() {
      $('body').click(function(e) {
        var el = $(e.target);
       // Если клик не на окне
        if (!(el.add(el.parents()).is('.OBWindow'))) {
          t.popupRemove();
        }
      });
    }, 30);

    // Показываем наше окно
    t.window.css('display', 'block');
		/*
    t.window.find('.OBCloseButton').click(function() {
      t.popupRemove();
    });
    */
  },

  popupRemove: function() {
    var t = this;
    if(!t.showed) return false;
    t.showed = false;
    $('body').unbind("click");

  	t.window.find('.CloseWindowButton').unbind("click");

    $(t.windowId).fadeOut('fast', function() {
      if(t.isModal) {
        $('#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();
      }
    });

    // Отключаем события клавиатуры
    document.onkeydown = "";
  	document.onkeyup = "";
  	return false;
  },

  detectMacXFF: function() {
    var userAgent = navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
      return true;
    }
  }

}

