/*

  popup JQuery Plugin
  author: Jakub Derdziak

*/

//$.noConflict();
function wsPopup(text,options)
{

  var conf = { 
    width: "auto", 
    height: "auto",
    vpos: "screenmiddle", //possible: top, screenmiddle, pagemiddle, bottom, value in px
    hpos: "center", //possible: left, center, right, value in px
    timeout: false,
    allowMinimize: true
  };
  var isMinimized = false;
  var div_top = 0;
  var div_left = 0;
  var div_width = 0;
  var content_height = 0;
  
  (function($) { 
    $(function() {
    
      function setVerticalPos(vpos)
      {

        switch(vpos)
        {
          case "top":
            $("div#ws-popup-container").css("top",0+"px");
          break;
          
          case "screenmiddle":
            
            win_height = parseInt($(window).height());
            div_height = parseInt($("div#ws-popup-container").attr("offsetHeight"));
            
            div_top = win_height - div_height;
            div_top = div_top/2;

            if( div_top < 0 )
              div_top = 0;
            
            if(navigator.appVersion.indexOf("MSIE 6.0") == -1)
            {
              $("div#ws-popup-container").css("position", "fixed");
              $("div#ws-popup-container").css("top",div_top +"px");
            }
            else
            {
              $("div#ws-popup-container").css("top","100px");
            }
            

          break;
          
          case "pagemiddle":
            div_top = ($("body").height() - $("div#ws-popup-container").attr("offsetHeight") )/2;
            if( div_top < 0 )
              div_top = 0;
            $("div#ws-popup-container").css("top",div_top +"px");
          break;

          case "bottom":
            div_top = $("body").height() - $("div#ws-popup-container").attr("offsetHeight");
            if( div_top < 0 )
              div_top = 0;
            $("div#ws-popup-container").css("top",top +"px");
          break;
          
          default:
            $("div#ws-popup-container").css("top",vpos +"px");
          break;
        }
      }
    
      function setHorizontalPos(hpos)
      {
        switch(hpos)
        {
          case "left":
            $("div#ws-popup-container").css("left","0px");
          break;
          
          case "center":
            //left = ($("body").width() - $("div#ws-popup-container").width()) / 2;  //Not working in Opera because Opera bug
            div_left = ($("body").width() - parseInt($("div#ws-popup-container").attr("offsetWidth"))) / 2;
            $("div#ws-popup-container").css("left", div_left+"px");
          break;
          
          case "bottom":
            div_left = $("body").width() - $("div#ws-popup-container").attr("offsetWidth");
            $("div#ws-popup-container").css("left", div_left+"px");
          break;
        }
      }

      $.extend(conf,options || {});
      
      div = '<div id="ws-popup-container"><div id="ws-popup-buttons"><div id="ws-popus-close">&nbsp;</div>';
      if(conf.allowMinimize)
      {
        div += '<div id="ws-popup-minimize">&nbsp;</div>';
      }
      div += '</div><div id="ws-popup">'+text+'</div></div>';

      $("body").append(div);
      $("div#ws-popup-container").css("position","absolute");
      
      if( conf.width != "auto" )
        $("div#ws-popup-container").css("width",conf.width+"px");
      
      if( conf.height != "auto" )
        $("div#ws-popup-container").css("height",conf.height+"px");
      

      setVerticalPos(conf.vpos);
      setHorizontalPos(conf.hpos);

      //enable closing
      $("div#ws-popus-close").click( function( ) {
        $("div#ws-popup-container").remove();
      } );

      //eneble minimize
      if(conf.allowMinimize)
      {
        function calculateMinimizePosition(vpos)
        {
          switch(vpos)
          {
            case "screenmiddle":
              win_height = parseInt($(window).height());
              div_height = parseInt($("div#ws-popup-buttons").attr("offsetHeight"));

              return win_height - div_height;
            break;

            default:
              return parseInt($("body").height()) - parseInt($("div#ws-popup-buttons").attr("offsetHeight"));
            break;
          }
        }

        $("div#ws-popup-minimize").click( function( ) {
          if(isMinimized)
          {
            $("div#ws-popup-container div#ws-popup").animate({height:content_height+"px"},500);
            $("div#ws-popup-container").animate({top:div_top+"px",left:div_left+"px",width:div_width+"px"},500);
            isMinimized = false;
          }
          else
          {
            div_width = parseInt($("div#ws-popup-container").attr("offsetWidth"));
            content_height = parseInt($("div#ws-popup-container div#ws-popup").attr("offsetHeight"));
            $("div#ws-popup-container div#ws-popup").animate({height:0}, 500);
            $("div#ws-popup-container").animate({top:calculateMinimizePosition(conf.vpos)+"px",left:0,width:"100px"},500);
            isMinimized = true;
          }
        } );
      }

      if( conf.timeout != false && parseInt(conf.timeout) != 0 )
      {
        setTimeout( function() {$("div#ws-popup-container").remove();} , parseInt(conf.timeout) );
      }
      
    });
  })(jQuery);

}

