var requestArr = Array;

shoutboxGadget = function() {
   this.ajaxLoadShoutbox = false;
   this.xmlHttpRead = false;
   this.xmlHttpWrite = false;

   this.getData = function(instance, myPageBox, sessionId, gadget_id, user_id, gadgetType) {
      if(myPageBox == "[myPageBox]") {
         myPageBox = 'no';
      }

      this.xmlHttpRead = new XMLHttpRequest();
      uri = "/ext/Shoutbox/BaseHandlers/&sb_t_cmd=read&sb_i_instance=" + instance + "&session_name=" + sessionId + "&id_gadget=" + gadget_id + "&userId=" + user_id;
      this.xmlHttpRead.instance = instance;
      this.xmlHttpRead.myPageBox = myPageBox;
      if(this.xmlHttpRead != null) {
         this.xmlHttpRead.multipart = true;
         this.xmlHttpRead.open("GET", uri, true);
         this.xmlHttpRead.onreadystatechange = function() {
            if(this.readyState == 3) {
               var response = this.responseText.toString();
               if(response && !response.match(/^\s$/)) {
                  response = response.replace(/--rn9014--/g, '');
                  response = response.replace(/--rn9014/g, '');
                  response = response.replace(/\s*Content-type:\s+text\/html/g, '');
                  response = response.replace(/\n/g, '');
                  try {
                    response = decodeURI(response);
                    messages = document.getElementById('shoutbox_' + instance).innerHTML;
                    document.getElementById('shoutbox_' + instance).innerHTML =  response + messages;
                  } catch(err) {
                     alert(err + " " + err.errorMessage + " " + err.line);
                  }
               }
            }
         }
         requestArr[instance] = this.xmlHttpRead;
         this.xmlHttpRead.send(null);
      } else {
         alert("Your browser does not support XMLHTTP.");
      }
   }

   this.getDataIE = function(instance, myPageBox, sessionId, gadget_id, user_id) {
	   if(myPageBox == "[myPageBox]") {
         myPageBox = 'no';
      }

      if (typeof XMLHttpRequest != 'undefined') {
         this.xmlHttpRead = new XMLHttpRequest();
      }

      if (!this.xmlHttpRead) {
         // Internet Explorer 6 und aelter
         try {
            this.xmlHttpRead  = new ActiveXObject("Msxml2.XMLHTTP");
         } catch(e) {
            try {
               this.xmlHttpRead  = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
               this.xmlHttpRead  = null;
            }
         }
      }

      uri = "/ext/Shoutbox/BaseHandlers/&sb_t_cmd=read&sb_i_instance=" + instance + "&session_name=" + sessionId + "&iexplore=1&id_gadget=" + gadget_id + "&userId=" + user_id + "&iexplore=1";
      if(this.xmlHttpRead != null) {
         this.xmlHttpRead.open("GET", uri, true);
         this.xmlHttpRead.onreadystatechange = function() {
            if(requestArr[instance].readyState == 4) {
               var response = requestArr[instance].responseText.toString();
               if(response) {
                  response = response.replace(/--rn9014--/g, '');
                  response = response.replace(/--rn9014/g, '');
                  response = response.replace(/\s*Content-type:\s+text\/html/g, '');
                  response = response.replace(/\n/g, '');
                  try {
                     response = decodeURI(response);
                     messages = document.getElementById('shoutbox_' + instance).innerHTML;
                     document.getElementById('shoutbox_' + instance).innerHTML = response + messages;
                     setTimeout("gadget.getDataIE('" + instance + "', '" + myPageBox + "', '" + sessionId + "', '" + gadget_id + "', '" + user_id + "');", 100);
                  } catch(err) {
                     alert(err + " " + err.errorMessage + " " + err.line);
                  }
               }
            }
         }
         requestArr[instance] = this.xmlHttpRead;
         this.xmlHttpRead.send(null);
      } else {
         alert("Your browser does not support XMLHTTP.");
      }
   }

   sendData = function(instance, myPageBox, sessionId, gadget_id, user_id) {
      msg = document.getElementById('sb_t_msg_' + instance).value;
      if(msg == "") {
         return;
      }

      if(myPageBox == "[myPageBox]") {
         myPageBox = 'no';
      }
      document.getElementById('shoutboxLoadingScreen_' + instance).style.display = 'block';

      msg = msg.toString();
      msg = msg.replace(/\?/g, '..fragezeichen..');
      msg = msg.replace(/\#/g, '..raute..');
      msg = msg.replace(/\&/g, '..and..');
      msg = msg.replace(/\+/g, '..plus..');
      msg = msg.replace(/\%/g, '..percent..');
      msg = msg.replace(/\//g, '..slash..');
      msg = msg.replace(/\\/g, '..backslash..');
      msg = msg.replace(/\*/g, '..star..');
      msg = msg.replace(/ü/g, '..ue..');
      msg = msg.replace(/ä/g, '..ae..');
      msg = msg.replace(/ö/g, '..oe..');
      msg = msg.replace(/ß/g, '..sz..');
      msg = msg.replace(/</g, '..lt..');
      msg = msg.replace(/>/g, '..gt..');

      if(typeof XMLHttpRequest != 'undefined') {
          this.xmlHttpWrite = new XMLHttpRequest();
      }

      if(!this.xmlHttpWrite) {
         // Internet Explorer 6 und aelter
         try {
            this.xmlHttpWrite  = new ActiveXObject("Msxml2.XMLHTTP");
         } catch(e) {
            try {
               this.xmlHttpWrite  = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
               this.xmlHttpWrite  = null;
            }
         }
      }

      uri = "/ext/Shoutbox/BaseHandlers/&sb_t_cmd=write&sb_i_instance=" + instance + "&sb_t_msg=" + encodeURI(msg) + "&session_name=" + sessionId + "&id_gadget=" + gadget_id + "&userId=" + user_id;
      if(this.xmlHttpWrite != null) {
         this.xmlHttpWrite.open("GET", uri, true);
         this.xmlHttpWrite.onreadystatechange = function() {
            if(requestArr['send_' + instance].readyState == 4 && requestArr['send_' + instance].status == 200) {
               document.getElementById('shoutboxLoadingScreen_' + instance).style.display = 'none';
               textField = document.getElementById("sb_t_msg_" + instance);
               textField.value = "";
            }
         }
         requestArr['send_' + instance] = this.xmlHttpWrite;
         this.xmlHttpWrite.send(null);
      } else {
         alert("Your browser does not support XMLHTTP.");
      }
   }
}

function wrapGetData(instance, myPageBox, sessionId, gadget_id, user_id) {
   gadget = new shoutboxGadget();
   operaName = 'opera';
   operaName = operaName.toString();
   chromeName = 'chrome';
   chromeName = chromeName.toString();
   var operaAgent = navigator.userAgent.toLowerCase();
   var chromeAgent = navigator.userAgent.toLowerCase();

   // Wenn noch offene Verbindungen bestehen, abbrechen!
   if(requestArr[instance])
      requestArr[instance].abort();
   if(requestArr['send_' + instance])
      requestArr['send_' + instance].abort();

   // Chrome, IE und Opera routieren...
   if(document.all || operaAgent.indexOf(operaName.toLowerCase()) >- 1 || chromeAgent.indexOf(chromeName.toLowerCase()) >- 1) {
      textField = document.getElementById("sb_t_msg_" + instance);
      if(textField) {
         document.getElementById("sb_t_msg_" + instance).value = "Bitte warten";
         document.getElementById("sb_t_msg_" + instance).readOnly = true;
         document.getElementById("sb_t_msg_" + instance).value = "Bitte warten";
      }
      setTimeout("gadget.getDataIE('" + instance + "', '" + myPageBox + "', '" + sessionId + "', '" + gadget_id + "', '" + user_id + "');", 3000);
      if(textField) {
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').value = 'Bitte warten.';", 1500);
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').value = 'Bitte warten..';", 2500);
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').value = 'Bitte warten...';", 4000);
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').readOnly = false; document.getElementById('sb_t_msg_" + instance + "').value = '';", 5500);
      }
   // Firefox Browser Pushen...
   } else {
      textField = document.getElementById("sb_t_msg_" + instance);
      if(textField) {
         document.getElementById("sb_t_msg_" + instance).value = "Bitte warten";
         document.getElementById("sb_t_msg_" + instance).readOnly = true;
      }

      gadget.getData(instance, myPageBox, sessionId, gadget_id, user_id);

      if(textField) {
         document.getElementById("sb_t_msg_" + instance).value = "Bitte warten";
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').value = 'Bitte warten.';", 500);
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').value = 'Bitte warten..';", 1000);
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').value = 'Bitte warten...';", 1500);
         setTimeout("document.getElementById('sb_t_msg_" + instance + "').readOnly = false; document.getElementById('sb_t_msg_" + instance + "').value = '';", 2000);
      }
      
   }

   return true;
}

function cleanBox(instance, myPageBox, gadget_id, user_id) {
   document.getElementById('shoutbox_' + instance).innerHTML = '';
   if (typeof XMLHttpRequest != 'undefined') {
      this.xmlHttpWrite = new XMLHttpRequest();
   }
   if (!this.xmlHttpWrite) {
      // Internet Explorer 6 und aelter
      try {
         this.xmlHttpWrite  = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(e) {
         try {
            this.xmlHttpWrite  = new ActiveXObject("Microsoft.XMLHTTP");
         } catch(e) {
            this.xmlHttpWrite  = null;
         }
      }
   }

   var uri = "/ext/Shoutbox/BaseHandlers/&sb_t_cmd=clean&sb_i_instance=" + instance + "&myPageBox=" + myPageBox + "&id_gadget=" + gadget_id + "&userId=" + user_id;
   if(this.xmlHttpWrite != null) {
      this.xmlHttpWrite.open("GET", uri, true);
      this.xmlHttpWrite.onreadystatechange = function() {
         if(this.readyState == 4) {
            document.getElementById('shoutboxLoadingScreen_' + instance).style.display = 'none';

            return true;
         }
      }
      this.xmlHttpWrite.send(null);
   } else {
      alert("Your browser does not support XMLHTTP.");
   }
}