(function()
{
  jQuery.fn.setQuestion = function(settings, cancelFunct, okFunct)
    {
      settings = jQuery.extend(
      {
        title                : null,
        questionContainerId  : "questionContainer",
        questionTitleId      : "questionTitle",
        questionWindowId     : "questionWindow",
        questionId           : "question",
        okButtonId           : "okButton",
        cancelButtonId       : "cancelButton",
        questionIconId       : "questionIcon",
        questionIconSrc      : null,
        okButtonText         : "Igen",
        cancelButtonText     : "Mégse",
        closeButtonId        : "close",
        question             : null,
        okFunct              : null,
        cancelFunct          : null
      },settings);


      $(window).bind("keypress", function(e) {
        if (e.keyCode == 27) closeQuestionWindow();
      });

      $(document).click(function()
      {
        return false;
      });
      
      var questionContainer = $("#" + settings.questionContainerId);
      var questionWindow = $("#" + settings.questionWindowId);
      var questionTitleDiv = $("#" + settings.questionTitleId);
      var okButton = $("#" + settings.okButtonId);
      var cancelButton = $("#" + settings.cancelButtonId);
      var questionDiv = $("#" + settings.questionId);
      var closeButton = $("#" + settings.closeButtonId);
      var questionIcon = $("#" + settings.questionIconId);
      

      var closeQuestionWindow = function()
      {
        questionContainer.fadeOut();
        $(document).unbind("click");
        okButton.unbind("mousedown");
        cancelButton.unbind("mousedown");
        okButton.unbind("mouseup");
        cancelButton.unbind("mouseup");
        okButton.unbind("click");
        cancelButton.unbind("click");
      }
      
      var isCancelBtn = (settings.cancelButtonText && settings.cancelButtonText.length > 0);
      var isQuestionIcon = (questionIcon.length > 0 && settings.questionIconSrc && settings.questionIconSrc.length > 0);
      
      if (!isCancelBtn) cancelButton.hide();
      else cancelButton.show();
      if (!isQuestionIcon) questionIcon.hide();
      else
      {
        questionIcon.show();
        questionIcon.attr("src", settings.questionIconSrc);
      }

      /**
       * Letiltjuk a szöveg kijelölését
       */
      questionWindow.disableTextSelect();

      if (settings.question && settings.question.length > 0)
        questionDiv.html("<table style=\"white-space:nowrap;\"><tr><td><span style=\"white-space:nowrap\">" + settings.question + "</span></td></tr></table>");


      if (settings.title && settings.title.length > 0)
        questionTitleDiv.text(settings.title);

      if (settings.okButtonText && settings.okButtonText.length > 0)
        okButton.text(settings.okButtonText);
      
      if (isCancelBtn)
        cancelButton.text(settings.cancelButtonText);

      okButton.mousedown(function()
      {
        $(this).addClass("clicked");
      }).click(function()
      {
        closeQuestionWindow();
        settings.okFunct();
      });

      if (isCancelBtn)
      {
        cancelButton.mousedown(function()
        {
          $(this).addClass("clicked");
        }).click(function ()
        {
          closeQuestionWindow();
          settings.cancelFunct();
        });
      }


      $(document).mouseup(function()
      {
        if (isCancelBtn)
        {
          cancelButton.removeClass("clicked");
          cancelButton.addClass("button");
        }
        okButton.removeClass("clicked");
        okButton.addClass("button");
      });

      questionContainer.css(
      {
        display: 'block',
        visibility: 'hidden'
      });
      
      if (isQuestionIcon) $("table", questionDiv).height(questionIcon.height());
      var w = $("table", questionDiv).width() + questionIcon.width();


      questionContainer.css(
      {
        width: w +
               60 +
               (isQuestionIcon ? parseInt(questionIcon.css("paddingRight").replace("px", '')) : 0) +
               (isQuestionIcon > 0 ? parseInt(questionIcon.css("paddingLeft").replace("px", '')) : 0) +
               "px"
      });
      
      // Még nem töltődött be az ikon
      if (questionIcon.width() == 0)
      {
        var iconLoaded = function()
        {
          if (!iconLoaded.tries) iconLoaded.tries = 0;
          iconLoaded.tries++;
          if (iconLoaded.tries > 50) return;
          if (questionIcon.width() > 0)
          {
            var w = parseInt(questionContainer.css('width'));
            questionContainer.css({width: w + questionIcon.width()});
          }
          else setTimeout(iconLoaded, 100);
        };
        setTimeout(iconLoaded, 100);
      }
      
      
      var positionTop =($(window).height() / 2) - (questionWindow.outerHeight() / 2);
      var positionLeft = ($(window).width() / 2) - (questionWindow.outerWidth() / 2);
      
      /**
       * Scroll pozíciót is beleszámoljuk az ablak helyzetébe
       */
      var sc = { y : typeof window.scrollY != 'undefined' ? window.scrollY : document.documentElement.scrollTop,
                 x : typeof window.scrollX != 'undefined' ? window.scrollX : document.documentElement.scrollLeft
               };
                 
      questionContainer.css(
      {
        top: positionTop + sc.y + "px",
        left: positionLeft + sc.x + "px"
        //top: positionTop + "px",
        //left: positionLeft + "px"
      });

      if (!$("#questionShadow").length)
        questionContainer.append("<div class=\"questionShadow\" id=\"questionShadow\"></div>");

      var questionShadow = $("#questionShadow");
      questionShadow.css(
      {
        height: questionWindow.outerHeight() + "px",
        width: questionWindow.outerWidth() + "px"
      });
      
      questionContainer.css(
      {
        display: 'none',
        opacity: 1,
        visibility: 'visible'
      });

      questionContainer.fadeIn();
      questionContainer.draggable(
      {
        handle: $("#questionWindow .th"),
        opacity: 0.8,
        containment: $("html")
      });
      
      $("#questionWindow .th").mouseup(function()
      {
        questionContainer.css({opacity: 1});
      });

      closeButton.click(function ()
      {
        closeQuestionWindow();
        settings.cancelFunct();
      });
    };
})();
