var xmlHttpVideo = new Array();
var videoObjectContainer = new Object();

videoGadget = function(numitems) {
   this.response = false;
   this.elementVideo = false;
   this.direction = 'next';
   this.boundaryString = 'rn9012';
   this.ajaxLoadVideo = false;
   this.numitems = numitems;
   this.ie6 = false;

   this.getVideos = function(instance, viewformat, filter, userFlag, userId, id_gadget, direction) {
      var loadingIdVideo = 0;
      xmlHttpVideo[instance] = false;

      if(countVideos[instance] == 0) {
         document.getElementById('nextButtonVideo_' + instance).style.visibility = 'hidden';
         document.getElementById('prevButtonVideo_' + instance).style.visibility = 'hidden';
         document.getElementById('nextButtonVideo_' + instance).style.display = 'none';
         document.getElementById('prevButtonVideo_' + instance).style.display = 'none';

         return;
      }
   
      if (typeof XMLHttpRequest != 'undefined') {
         xmlHttpVideo[instance] = new XMLHttpRequest();
      }
      if (!xmlHttpVideo[instance]) {
         // Internet Explorer 6 und aelter...
         this.ie6 = true;
         try {
            xmlHttpVideo[instance]  = new ActiveXObject("Msxml2.XMLHTTP");
         } catch(e) {
            try {
               xmlHttpVideo[instance]  = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
               xmlHttpVideo[instance]  = null;
            }
         }
      }

      chromeName = 'chrome';
      operaName = 'opera';
      ieName = 'msie 7';
      chromeName = chromeName.toString();
      operaName = operaName.toString();
      ieName = ieName.toString();
      var userAgent = navigator.userAgent.toLowerCase();
      if(this.ie6 || userAgent.indexOf(chromeName) >- 1 || userAgent.indexOf(operaName) >- 1 || userAgent.indexOf(ieName) >- 1) {
         this.uri = "/ext/Video/GetVideosFromArray/&instance=" + instance + "&viewformat=" + viewformat + "&filter=" + filter + "&userFlag=" + userFlag + "&userid=" + userId + "&explorer=1&gadget_id=" + id_gadget;
         xmlHttpVideo[instance].open('POST', this.uri, false);
      } else {
         this.uri = "/ext/Video/GetVideosFromArray/&instance=" + instance + "&viewformat=" + viewformat + "&filter=" + filter + "&userFlag=" + userFlag + "&userid=" + userId + "&explorer=0&gadget_id=" + id_gadget;
         xmlHttpVideo[instance].multipart = true;
         xmlHttpVideo[instance].open('POST', this.uri, true);
      }

      videoObjectContainer = this;
      xmlHttpVideo[instance].onreadystatechange = function(event) {
         if(xmlHttpVideo[instance].readyState == 4) {
            this.response = xmlHttpVideo[instance].responseText.toString();
            if(this.response == '')
               return false;

            this.response = this.response.replace(/--rn9012--/g, '');
            this.response = this.response.replace(/--rn9012/g, '');
            this.response = this.response.replace(/\s*Content-type:\s+text\/html/g, '');
            try {
               eval(this.response);
            } catch(err) {
               alert("ERRORS Occured " + err.line + " Errors occured, please check the embedded Codes.\n" + err.description + "\nIndex identified: " + loadingIdVideo);
            }

            // Die Events der Pager Buttons festlegen.
            var prevButton = document.getElementById('prevButtonVideo_' + instance);
            if(prevButton) {
               prevButton.videoObject = videoObjectContainer;
               prevButton.onclick = function() {
                  prevButton.videoObject.switchElementVideo('prev', instance);
               }
            }
            var nextButton = document.getElementById('prevButtonVideo_' + instance);
            if(nextButton) {
               nextButton.videoObject = videoObjectContainer;
               nextButton.onclick = function() {
                  nextButton.videoObject.switchElementVideo('next', instance);
               }
            }

            document.getElementById('boxLoadingVideo_' + instance).style.display = 'none';

            return true;
         }
      }
      xmlHttpVideo[instance].send(null);

      if(countVideos[instance] > 1) {
         document.getElementById('boxLoadingVideo_' + instance).style.background = 'blue';
         document.getElementById('boxLoadingVideo_' + instance).innerHTML = 'Laden...';
         document.getElementById('boxLoadingVideo_' + instance).style.display = 'block';
      }

      return true;
   }

   this.switchElementVideo = function(direction, instance) {
      var loadingRounds = 0;
      if(direction == 'next') {
         loadingRounds = 0;
         VideoIndex[instance]++;
         if(VideoIndex[instance] > countVideos[instance] - 1)
            VideoIndex[instance] = 0;
      }
      if(direction == 'prev') {
         loadingRounds = 0;
         VideoIndex[instance]--;
         if(VideoIndex[instance] < 0)
            VideoIndex[instance] = countVideos[instance] - 1;
      }
      /*
      if(direction == 'tryagain') {
         loadingRounds = 0;
      }
      */

      this.setVideoDisplay(direction, instance);

      return true;
   }

   this.setVideoDisplay = function(direction, instance) {
      var loadingRounds = 0;
      var startpunkt = 0;
      var endpunkt = 0;
      var startstring = false;
      var endstring = false;
      var shortTitle = false;
      var comefrom = false;
      var nextVid = false;
      var direction1 = direction;

      var elementVideo = document.getElementById('videoElement_' + instance);
      var elementVideoName = document.getElementById('videoName_' + instance);
      var elementVideosCounter = document.getElementById('videosCounter_' + instance);


      if((!arrVideos[instance][VideoIndex[instance]] && !arrEmbedded[instance][VideoIndex[instance]]) || (arrVideos[instance][VideoIndex[instance]] == undefined && arrEmbedded[instance][VideoIndex[instance]] == undefined)) {
         loadingRounds++;
         if(loadingRounds > 100) {
            loadingRounds = 0;
            document.getElementById('boxLoadingVideo_' + instance).style.background = 'red';
            document.getElementById('boxLoadingVideo_' + instance).innerHTML = 'Fehler<br /><span onclick="videoGadgetObject.switchElementVideo(\'tryagain\', ' + instance + '); document.getElementById(\'boxLoadingVideo_' + instance + '\').style.background = \'blue\'; document.getElementById(\'boxLoadingVideo_' + instance + '\').innerHTML = \'Loading\';" style="cursor:pointer; text-decoration:underline;">aktualisieren</span><br /><span onclick="videoGadgetObject.switchElementVideo(\'next\', ' + instance + ');" style="cursor:pointer; text-decoration:underline;">n&auml;chstes Video</span>';

            return false;
         } else {
            if(loadingRounds > 40) {
               document.getElementById('boxLoadingVideo_' + instance).style.background = 'red';
               document.getElementById('boxLoadingVideo_' + instance).innerHTML = 'bitte warten...';
               setTimeout("videoGadgetObject[" + instance + "].switchElementVideo('tryagain', '" + instance + "');", 5000);
            } else {
               setTimeout("videoGadgetObject[" + instance + "].switchElementVideo('tryagain', '" + instance + "');", 500);
               return;
            }
         }
      }

      // Die Events der Pager Buttons festlegen.
      var prevButton = document.getElementById('prevButtonVideo_' + instance);
      if(prevButton) {
         prevButton.videoObject = videoObjectContainer;
         prevButton.onclick = function() {
            prevButton.videoObject.switchElementVideo('prev', instance);
         }
      }
      var nextButton = document.getElementById('nextButtonVideo_' + instance);
      if(nextButton) {
         nextButton.videoObject = videoObjectContainer;
         nextButton.onclick = function() {
            nextButton.videoObject.switchElementVideo('next', instance);
         }
      }

      loadingRounds = 0;
      startpunkt = VideoIndex[instance] + 1;
      startstring = startpunkt.toString(10);
      endpunkt = countVideos[instance];
      endstring = endpunkt.toString(10);
      if(startstring.length < 3) {
         if(startstring.length == 1)
            startstring = "00" + startstring;
         if(startstring.length == 2)
            startstring = "0" + startstring;
      }
      if(endstring.length < 3) {
         if(endstring.length == 1)
            endstring = "00" + endstring;
         if(startstring.length == 2)
            endstring = "0" + endstring;
      }
      elementVideosCounter.innerHTML = startstring + "/" + endstring;
      if(arrVideoNames[instance][VideoIndex[instance]].length > 20) {
         shortTitle = arrVideoNames[instance][VideoIndex[instance]].substring(0, 20);
         shortTitle = shortTitle + "...";
         arrVideoNames[instance][VideoIndex[instance]] = shortTitle;
      }

      if(direction == 'next') {
         if(VideoIndex[instance] == 0) {
            if(arrEmbedded[instance][countVideos[instance] - 1] == '' || arrEmbedded[instance][countVideos[instance] - 1] == undefined)
               comefrom = "flvplayer";
            else
               comefrom = "embedded";
         } else {
	    if(arrEmbedded[instance][VideoIndex[instance]] == '' || arrEmbedded[instance][countVideos[instance]] == undefined)
               comefrom = "flvplayer";
            else
               comefrom = "embedded";
	 }
      } else {
         if(VideoIndex[instance] == 0) {
            if(arrEmbedded[instance][VideoIndex[instance] + 1] == '' || arrEmbedded[instance][VideoIndex[instance] + 1] == undefined)
               comefrom = "flvplayer";
            else
               comefrom = "embedded";
         } else {
            if(arrEmbedded[instance][VideoIndex[instance]] == '' || arrEmbedded[instance][VideoIndex[instance]] == undefined)
               comefrom = "flvplayer";
            else
               comefrom = "embedded";
         }
      }

      if(arrEmbedded[instance][VideoIndex[instance]] == '' || arrEmbedded[instance][VideoIndex[instance]] == undefined)
         nextVid = "flvplayer";
      else
         nextVid = "embedded";

      if(nextVid == "embedded") {
         elementVideo.innerHTML = '';
         if(!this.ie6) {
            elementVideo.innerHTML = arrEmbedded[instance][VideoIndex[instance]];
         } else {
            elementVideo.innerHTML = 'Dieses Video kann auf Ihrem Browser nur nach einer Sicherheitsabfrage gezeigt werden. <a href="/ext/Video/Detail/&id_video=' + arrVideoIds[instance][VideoIndex[instance]] + '&fav=0&id_user=&id_cat=0">Anzeigen</a>';
         }
         elementVideoName.innerHTML  = arrVideoNames[instance][VideoIndex[instance]];
      } else if(nextVid == "flvplayer") {
         if(running) {
            if(comefrom == "flvplayer") {
               elementVideoName.innerHTML = arrVideoNames[instance][VideoIndex[instance]];
            } else {
               elementVideo.innerHTML = '';
               elementVideo.innerHTML = arrVideos[instance][VideoIndex[instance]];
               elementVideoName.innerHTML = arrVideoNames[instance][VideoIndex[instance]];
            }
            try {
               eval(arrUpdateScripts[instance][VideoIndex[instance]]);
            } catch(err) {
               alert("updatescript loading failes " + err);
            }
         } else {
            elementVideo.innerHTML = '';
            elementVideo.innerHTML = arrVideos[instance][VideoIndex[instance]];
            elementVideoName.innerHTML = arrVideoNames[instance][VideoIndex[instance]];
         }
      }

      if(document.getElementById('videoRating_' + instance)) {
          initRatingMo('videoRating_' + instance);
          dhtml.init();
       }

      document.getElementById('boxLoadingVideo_' + instance).style.display = 'none';
   }
}

function wrapGetVideos(cg_i_instance, cg_e_viewformat, cg_e_filter, userflag, userid, countVideosx, direction, numitems, id_gadget) {
   countVideos[cg_i_instance] = countVideosx;
   videoGadgetObject[cg_i_instance] = new videoGadget(numitems);
   videoGadgetObject[cg_i_instance].getVideos(cg_i_instance, cg_e_viewformat, cg_e_filter, userflag, userid, id_gadget, direction);
   if(direction == 'next')
      videoGadgetObject[cg_i_instance].switchElementVideo('next', cg_i_instance);
   else
      videoGadgetObject[cg_i_instance].switchElementVideo('prev', cg_i_instance);
}
