/**
 * MxPopOver - PopOver, skladnia prototype.js. Na podstawie Dgo.
 * @author Jakub Biczkowski <jakub.biczkowski@dreamlab.pl>,
           Kuba Niegowski <jakub.niegowski@dreamlab.pl>
 * Utworzono: 2007-12-20
 *
 */


var MxPopOver = Class.create(
{
   initialize: function(obname)
   {
      this.obname           = obname;
      this.elem             = this;
      this.id               = 'popover_okno';
      this.glass            = $('glass');
      this.maxindex         = window.MaxIndex=20;
      this.popcontent       = 'pop_content';
      this.isdragging       = 0;
      this.copycontent      = null;
      this.req              = null;
      this.handle           = 'handle_popover';
   },

   show: function(w, h, header, contid, url, imgclose)
   {
      this.width            = w;
      this.height           = h;
      this.header           = header;
      this.cont             = contid;
      this.xhrurl           = url;
      this.imgclose         = typeof imgclose == 'undefined' ? '_d/popover/popclose.gif' : imgclose;

      if (typeof this.onshow == 'function')
      {
         this.onshow();
      }

      this.create_container(w, h, header);

      if (this.xhrurl != '')
      {
         this.get_data(this.xhrurl, this.cont);
      }
      else
      {
         this.copyme(this.cont)
      }
      this.on(this.id);
   },

   message: function(header, t, c)
   {
      this.header = header;

      if (typeof this.onshow == 'function')
      {
         this.onshow();
      }
      this.create_container(660, 80, this.header);

      this.fill_message(t, c, 'popover_' + this.header);
      this.on(this.id);
   },

   on: function(obj)
   {
      obj = $(obj);
      obj.style.display = 'inline';
      this.center(obj);
      this.bg_dis(obj);
      obj.style.zIndex = this.maxindex++;

      this.eventMouseDown = this.initDrag.bindAsEventListener(this);
      Event.observe(this.handle, 'mousedown', this.eventMouseDown);

      MxPopOver.regDrag(this);
   },

   off: function()
   {
      Event.stopObserving(this.handle, 'mousedown', this.eventMouseDown);

      MxPopOver.unregDrag(this);

      if (this.header != 'gwiazdy' && this.header != 'info' && this.header != 'error')
      {
         if (this.copycontent)
         {
            $(this.cont).appendChild(this.copycontent);
            this.copycontent = null;
         }
         if (this.req)
         {
            this.req.options.onSuccess = null;
            this.req.transport.abort();
            document.body.style.cursor = 'default';
            this.req = null;
         }
         if ($(this.popcontent).firstChild)
         {
            $(this.popcontent).removeChild($(this.popcontent).firstChild);
         }
      }
      obj = $(this.id);
      obj.parentNode.removeChild(obj);
      this.bg_ena(obj);
   },

   center: function(obj)
   {
      var windim = document.viewport.getDimensions();
      var objdim = obj.getDimensions();

      this.pos = [
         (windim.width - objdim.width) / 2,
         (windim.height - objdim.height) / 2
      ];

      this.pos = [
         this.pos[0] < 0 ? 0 : this.pos[0],
         this.pos[1] < 0 ? 0 : this.pos[1]
      ];

      obj.style.left = Math.round(this.pos[0]) + 'px';
      obj.style.top = Math.round(this.pos[1]) + 'px';
   },

   center_move: function(obj)
   {
      if (!this.isdragging)
      {
         if (typeof this.pos != 'undefined')
         {
            var winpos = document.viewport.getScrollOffsets();

            obj.style.left = Math.round(winpos[0] + this.pos[0]) + 'px';
            obj.style.top = Math.round(winpos[1] + this.pos[1]) + 'px';
         }
      }
   },

   bg_dis: function()
   {
      this.glass.style.display  = 'block';
      if (this.header == 'gwiazdy' || this.header == 'info' || this.header == 'error')
      {
         this.glass.setStyle({
            opacity: 0.0
         });
      }
      else
      {
         this.glass.setStyle({
            opacity: 0.6
         });
      }
      this.glass.style.height = document.body.scrollHeight + 'px';
   },

   bg_ena: function()
   {
      this.glass.style.display = 'none';
   },

   copyme: function(cont)
   {
      var node = $(cont).firstChild;
      this.copycontent = node.cloneNode(true);
      $(this.popcontent).insertBefore(node, $(this.popcontent).firstChild);
   },

   get_data: function(url,divid)
   {
      var idpopcon = this.popcontent;
      var d = divid;
      this.req = new Ajax.Updater($(idpopcon), url, {
         method: 'get',
         evalScripts: true,
         onLoading: function()
         {
            document.body.style.cursor = 'wait';
         },
         onSuccess: function()
         {
            document.body.style.cursor = 'default';
            this.req = null;
         }.bind(this),
         onComplete: function(transport)
         {
            if(d!='')
            {
               document.body.style.cursor = 'default';
               var place = $(d);
               place.innerHTML=transport.responseText;
            }
         }
      });
   },

   fill_message: function(tit, msg, cls)
   {
      var html = '';
      html += '<div class="ie_padding">';
         html += '<div class="' + cls + '">';
            html += '<h1>' + tit+ '</h1>';
            html += '<h2>' + msg + '</h2>';
         html += '</div>';
      html += '</div>';
      $(this.popcontent).innerHTML = html;
   },

   initDrag: function(event)
   {
      if (Event.isLeftClick(event))
      {
         var pointer = [Event.pointerX(event), Event.pointerY(event)];
         var winpos = document.viewport.getScrollOffsets();
         this.offset = [pointer[0] - winpos[0] - this.pos[0], pointer[1] - winpos[1] - this.pos[1]];
         MxPopOver.activeDraggable = this;
         Event.stop(event);
      }
   },

   updateDrag: function(event, pointer)
   {
      if (!this.isdragging)
      {
         this.isdragging = true;
      }
      this.draw(pointer);
      Event.stop(event);
   },

   endDrag: function(event)
   {
      if (!this.isdragging) return;
      this.isdragging = false;
      this.activeDraggable = null;
      Event.stop(event);
   },

   draw: function(point)
   {
      var el = $(this.id);
      var winpos = document.viewport.getScrollOffsets();

      this.pos[0] = point[0] - winpos[0] - this.offset[0];
      this.pos[1] = point[1] - winpos[1] - this.offset[1];

      if (el.style.position == 'fixed')
      {
         el.style.left = this.pos[0] + 'px';
         el.style.top = this.pos[1] + 'px';
      }
      else
      {
         el.style.left = (this.pos[0] + winpos[0]) + 'px';
         el.style.top = (this.pos[1] + winpos[1]) + 'px';
      }
   },

   create_container: function(w, h, header)
   {
      //div glowny
      this.header = header;

      var mainclass = 'popover_container';
      if(this.header == 'gwiazdy')
      {
         mainclass = 'popovergwiazdy_container';
      }
      else if(this.header == 'info')
      {
         mainclass = 'popover_container_info';
      }
      else if(this.header == 'error')
      {
         mainclass = 'popover_container_error';
      }
      else if(this.header == 'embed')
      {
         mainclass = 'pop_embed';
      }

      var width  = "width:"+w+"px; ";
      var height = "height:"+h+"px;";
      var st = width+height+" position: fixed; -ie: expression(this.style.position = 'absolute', "+this.obname+".center_move(this))";
      var my_div = '';
      try
      {
         my_div = document.createElement('<div id="'+this.id+'" class="'+mainclass+'" style="'+st+'">');
      }
      catch(e)
      {
         var my_div = document.createElement('div');
         my_div.setAttribute("id", this.id);
         my_div.setAttribute("class", mainclass);
         my_div.setAttribute("style", st);
      }

      document.body.appendChild(my_div);

      if (this.header == 'gwiazdy')
      {
         this.gwiazdy_header(this.id);
      }
      else
      {
         this.standard_header(this.id);
      }

      var contentm = '';
      try
      {
         contentm = document.createElement("<div id='"+this.popcontent+"' class='popcont'>");
         if(this.header == 'error')
         {
            $(contentm).observe("click", this.off.bindAsEventListener(this));
         }
      }
      catch(e)
      {
         contentm = document.createElement('div');
         contentm.setAttribute("id", this.popcontent);
         contentm.setAttribute("class", "popcont");
         if(this.header == 'error')
         {
            $(contentm).observe("click", this.off.bindAsEventListener(this));
         }
      }

      var bcorner_left = '';
      try
      {
         bcorner_left = document.createElement("<div class='bcorner_left'>");
      }
      catch(e)
      {
         bcorner_left = document.createElement('div');
         bcorner_left.setAttribute("class", "bcorner_left");
      }

      var bcorner_right = '';
      try
      {
         bcorner_right = document.createElement("<div class='bcorner_right'>");
      }
      catch(e)
      {
         bcorner_right = document.createElement('div');
         bcorner_right.setAttribute("class", "bcorner_right");
      }

      var bcorner_middle = '';
      try
      {
         bcorner_middle = document.createElement("<div class='bcorner_middle'>");
      }
      catch(e)
      {
         bcorner_middle = document.createElement('div');
         bcorner_middle.setAttribute("class", "bcorner_middle");
      }

      var cont = '';
      try
      {
         cont = document.createElement("<div class='cont1'>");
      }
      catch(e)
      {
         cont = document.createElement('div');
         cont.setAttribute("class", "cont1");
      }


      my_div.appendChild(contentm);
      if(this.header == 'gwiazdy')
      {
         my_div.appendChild(cont);
         cont.appendChild(bcorner_left);
         cont.appendChild(bcorner_middle);
         cont.appendChild(bcorner_right);
      }
   },

   standard_header: function(elid)
   {
      var my_div = $(elid);

      var movediv='';
      try
      {
         movediv = document.createElement("<div id='"+this.handle+"' class='movediv'>");
      }
      catch(e)
      {
         movediv = document.createElement('div');
         movediv.setAttribute("class", "movediv");
         movediv.setAttribute("id", this.handle);
      }

      var closeob='';
      try
      {
         closeob = document.createElement("<img src='"+this.imgclose+"' title='zamknij' class='close'>");
      }
      catch(e)
      {
         closeob = document.createElement('img');
         closeob.setAttribute("class", "close");
         closeob.setAttribute("title", "zamknij");
         closeob.setAttribute("src", this.imgclose);
      }

      my_div.appendChild(movediv);
      movediv.appendChild(closeob);



      var ob = this;
      var eclose = $(this.id).getElementsByClassName('close')[0];
      eclose.onclick = function(){ob.off()};
   },

   gwiazdy_header: function(elid)
   {
      var my_div = $(elid);

      var cdiv='';
      try
      {
         cdiv = document.createElement("<div class='cdiv'>");
      }
      catch(e)
      {
         cdiv = document.createElement('div');
         cdiv.setAttribute("class", "cdiv");
      }

      var movediv='';
      try
      {
         movediv = document.createElement("<div class='gwdiv' id='"+this.handle+"' >");
      }
      catch(e)
      {
         movediv = document.createElement('div');
         movediv.setAttribute("class", "gwdiv");
         movediv.setAttribute("id", this.handle);
      }

      var corner_left = '';
      try
      {
         corner_left = document.createElement("<div class='corner_left'>");
      }
      catch(e)
      {
         corner_left = document.createElement('div');
         corner_left.setAttribute("class", "corner_left");
      }

      var corner_right = '';
      try
      {
         corner_right = document.createElement("<div class='corner_right'>");
      }
      catch(e)
      {
         corner_right = document.createElement('div');
         corner_right.setAttribute("class", "corner_right");
      }

      var crboth = '';
      try
      {
         crboth = document.createElement("<div class='clear_both'>");
      }
      catch(e)
      {
         crboth = document.createElement('div');
         crboth.setAttribute("class", "clear_both");
      }

      var titlediv = '';
      try
      {
         titlediv = document.createElement("<div class='titdiv' id='titid' >");
      }
      catch(e)
      {
         titlediv = document.createElement('div');
         titlediv.setAttribute("class", "titdiv");
         titlediv.setAttribute("id", "titid");
      }

      var closediv = '';
      try
      {
         closediv = document.createElement("<div class='closediv'>");
      }
      catch(e)
      {
         closediv = document.createElement('div');
         closediv.setAttribute("class", "closediv");
      }

      var cboth = '';
      try
      {
         cboth = document.createElement("<div class='clear_both'>");
      }
      catch(e)
      {
         cboth = document.createElement('div');
         cboth.setAttribute("class", "clear_both");
      }

      var closeob = '';
      try
      {
         closeob = document.createElement("<img class='close2' title='zamknij' src='_g/tvn/_d/plejada/gwiazdy/popover/popclose2.gif'>");
      }
      catch(e)
      {
         closeob = document.createElement('img');
         closeob.setAttribute("class", "close2");
         closeob.setAttribute("title", "zamknij");
         closeob.setAttribute("src", "_g/tvn/_d/plejada/gwiazdy/popover/popclose2.gif");
      }

      my_div.appendChild(cdiv);

      cdiv.appendChild(corner_left);
      cdiv.appendChild(movediv);
      cdiv.appendChild(corner_right);
      cdiv.appendChild(crboth);

      closediv.appendChild(closeob);
      movediv.appendChild(closediv);
      movediv.appendChild(titlediv);
      movediv.appendChild(cboth);
      //var titledivtresc = '';
      //new Insertion.Top(titlediv, titledivtresc)


      var ob = this;
      var eclose = $(this.id).getElementsByClassName('close2')[0];
      eclose.onclick = function(){ob.off()};
   },
   
   submitMail: function()
   {
      var errors = 0;
      var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
      
      $('l_elm_imie').style.color = 'white';
      $('l_elm_email').style.color = 'white';
      $('l_elm_comment').style.color = 'white';
 
      if($F('elm_imie').length < 3)
      {
         $('l_elm_imie').style.color = 'red';
         errors = 1;
      }
      if(!regex.test($F('elm_email'))) 
      {
         $('l_elm_email').style.color = 'red';
         errors = 1;
      } 
      if($F('elm_comment').length < 3)
      {
         $('l_elm_comment').style.color = 'red';
         errors = 1;
      }
      
      if(errors == 0)
      {
	      new Ajax.Updater(this.popcontent, '/index.html?args=redakcjawyslij.html', {
	         method: 'get',
	         parameters: {
	            elm_imie: $F('elm_imie'), 
	            elm_email: $F('elm_email'), 
	            elm_address: $F('elm_address'), 
	            elm_comment: $F('elm_comment'),
	            elm_sendcopy: $F('elm_sendcopy')
	         }
	      });
      }
   }

});

Object.extend(MxPopOver,
{
   drags: [],

   regDrag: function(obj)
   {
      if (MxPopOver.drags.length == 0)
      {
         MxPopOver.eventMouseUp = MxPopOver.endDrag.bindAsEventListener(MxPopOver);
         Event.observe(document, 'mouseup', MxPopOver.eventMouseUp);

         MxPopOver.eventMouseMove = MxPopOver.updateDrag.bindAsEventListener(MxPopOver);
         Event.observe(document, 'mousemove', MxPopOver.eventMouseMove);
      }
      MxPopOver.drags.push(obj);
   },

   unregDrag: function(obj)
   {
      MxPopOver.drags = MxPopOver.drags.reject(function(d) { return d == obj });
      if (MxPopOver.drags.length == 0)
      {
         Event.stopObserving(document, 'mouseup', MxPopOver.eventMouseUp);
         Event.stopObserving(document, 'mousemove', MxPopOver.eventMouseMove);
      }
   },

   updateDrag: function(event)
   {
      if (!MxPopOver.activeDraggable) return;
      var pointer = [Event.pointerX(event), Event.pointerY(event)];
      if (MxPopOver._lastPointer && MxPopOver._lastPointer[0] == pointer[0] && MxPopOver._lastPointer[1] == pointer[1])
      {
         return;
      }
      MxPopOver._lastPointer = pointer;
      MxPopOver.activeDraggable.updateDrag(event, pointer);
   },

   endDrag: function(event)
   {
      if (!MxPopOver.activeDraggable) return;
      MxPopOver._lastPointer = null;
      MxPopOver.activeDraggable.endDrag(event);
      MxPopOver.activeDraggable = null;
   }

});

var embed_popover = Class.create({
   html_169: null,
   html_43: null,

   initialize: function(e169,e43) {
     this.html_169 = e169;
     this.html_43 = e43;
   },
   select_all: function(elm)
   {
      elm.focus();
      elm.select();
   },
   change_content: function(typ,elm)
   {

      if(typ==1)
      {
         $(elm).value = this.html_169;
      }
      if(typ==2)
      {
         $(elm).value = this.html_43;
      }
   },
   ClipBoard: function(elm)
   {
      $(elm).focus();
      $(elm).select();
      if(document.selection)
      {
         CopiedTxt = document.selection.createRange();
         CopiedTxt.execCommand("Copy");
      }
   }

});

