﻿//*************************************************************************************************
//**  WebcastViewClass
//**  author: jack@inex.nl
//**  (c) 2006 Companywebcast.nl
//*************************************************************************************************

function WebcastViewClass(aName){
  
  var mObjectName=aName;     
  var mSelectedTab = ''; 
  
  var mTabArray = new Array();
  var mInfoPanelArray = new Array();
  //var initialized=false;
  
  
  this.AddInfoPanel   = AddInfoPanel;
  this.RemoveInfoPanel= RemoveInfoPanel;
  this.RemoveAllInfoPanels = RemoveAllInfoPanels;
  this.ToggleInfoPanel= ToggleInfoPanel;
  this.AddTab         = AddTab;
  this.RemoveTab      = RemoveTab;      
  this.ShowTab        = ShowTab;  
  this.HideAllTabs    = HideAllTabs;
  this.ShowTabHead    = ShowTabHead;
  this.ShowFirstTab   = ShowFirstTab;
  this.HideTabs       = HideTabs;    
  this.Paint          = Paint;
  this.GetInfoPanelStatus   = GetInfoPanelStatus;
  
  
  this.ShowInfoPanel  = ShowInfoPanel;
  this.HideInfoPanel  = HideInfoPanel;
  this.ShowPopup      = ShowPopup;
  this.HidePopup      = HidePopup;

  function Paint() {
    theVideoPlayer.SetSize(document.getElementById( "cwc_videoPlayerPanel").offsetWidth, document.getElementById( "cwc_videoPlayerPanel").offsetHeight);

    var w = document.getElementById("cwc_tabContentPanel").offsetWidth - document.getElementById("cwc_contentTopLeft").offsetWidth - 20; //todo replace '20' by padding of .cwc_tabContent if possible
    var h = document.getElementById( "cwc_tabContentPanel").offsetHeight - document.getElementById( "cwc_contentBottomLeft").offsetHeight;
            
    for(var i=0;i<mTabArray.length;i++){
        try{
            eval("Addon_"+mTabArray[i]+"_Resize( " + w + ", " + h +")" );
        }catch(e){}
    }
  }
  
  function AddInfoPanel(aName,aCaption,aContent, aPlaceAtTop){
    if( !mInfoPanelArray.contains(aName) ){
        var outp = ' <div class="cwc_infoPanelDiv" id="cwc_infoPanel_' + aName + '">' +
                '<div id="cwc_infoPanelTitel_' + aName + '" class="cwc_infoPanelTitel">' + aCaption + '</div>' +
                '<div id="cwc_infoPanelContent_' + aName + '" class="cwc_infoPanelContent"><br /></div>' +
                '<div class="cwc_infoPanelTopLeft"></div><div class="cwc_infoPanelTopRight"></div><div class="cwc_infoPanelBottomLeft"></div><div class="cwc_infoPanelBottomRight"></div></div>';
         if(aPlaceAtTop)
            document.getElementById("cwc_infoPanel").innerHTML=outp + document.getElementById("cwc_infoPanel").innerHTML;
         else
            document.getElementById("cwc_infoPanel").innerHTML=document.getElementById("cwc_infoPanel").innerHTML + outp;
      mInfoPanelArray.push( aName );
    }
      
    if(aContent.length>4){
       document.getElementById("cwc_infoPanelContent_"+ aName).innerHTML=aContent.substr(4,aContent.length-4);
	}
    document.getElementById("cwc_infoPanel_"+aName).style.display = "none";
  }
  
  function ShowInfoPanel(aName){
        var obj=document.getElementById("cwc_infoPanel_"+aName).innerHTML;
        document.getElementById("cwc_infoPanel_"+aName).style.display = "";
        document.getElementById("cwc_infoPanel_"+aName).style.overflow = "visible";
        if(theClientInfo.org=="microsoft" && theClientInfo.version<7)
            document.getElementById("cwc_infoPanel_"+aName).style.height = "50px";
        else
            document.getElementById("cwc_infoPanel_"+aName).style.height = "";
        if(theClientInfo.org=="microsoft" && theClientInfo.version>6)Paint();
  }
  
  function HideInfoPanel(aName){
    document.getElementById("cwc_infoPanel_"+aName).style.display = "none";
    document.getElementById("cwc_infoPanel_"+aName).style.overflow = "hidden";
    document.getElementById("cwc_infoPanel_"+aName).style.height= "0px";
  }
  
  function ToggleInfoPanel(aName){
    var myContentDiv =document.getElementById('cwc_infoPanel_' + aName)
    var myToggleDiv=document.getElementById('cwc_infoPanelToggle_' + aName);
    if ( myToggleDiv.className=="cwc_infoPanelClose"){
      myToggleDiv.className="cwc_infoPanelOpen";
      myContentDiv.style.height=(mInfoPanelTitelHeight+6)+"px"; 
      myContentDiv.style.display="none";
      myContentDiv.style.overflow="hidden";
    }else{
      myToggleDiv.className="cwc_infoPanelClose";
      myContentDiv.style.display="none";
      myContentDiv.style.overflow="visible";
      //myContentDiv.style.height="100px";
    }
  }
  
  function RemoveInfoPanel(aName){
    if(mInfoPanelArray.contains(aName)){
      mInfoPanelArray.remove(aName);
      var mydiv = document.getElementById("cwc_infoPanel_"+aName);
      mydiv.parentElement.removeChild(mydiv);    
    }
  }
  
  function RemoveAllInfoPanels(){
    for(var i=0;i<mInfoPanelArray.length;i++)
      RemoveInfoPanel( mInfoPanelArray[i] );
  }
  
  function GetInfoPanelStatus(aInfoPanelName){
    if( !mInfoPanelArray.contains(aInfoPanelName) )return "not found";
    if( document.getElementById( "cwc_infoPanel_"+aInfoPanelName).style.display != "none" ) return "on";
    return "off";
  }  
                  
  function AddTab(aName, aCaption, aContent){  
    if( !mTabArray.contains(aName) ){
      
      //var col = "zz<div  id='cwc_tab_" + aName + "' >" +
      //  " <a  onclick=" + mObjectName + ".ShowTab('" + aName + "');><span >" + aCaption + "</span></a></div>";
       var tab =' <span id="cwc_tab_' + aName + '" class="cwc_Tab"  onclick=' + mObjectName + '.ShowTab("' + aName + '");>'+
                '<span class="cwc_tabLeft"></span>'+
                '<span class="cwc_tabTitle ' + aName + '">' + aCaption + '</span>'+
                '<span class="cwc_tabRight"></span>  '+
            '</span>';
      document.getElementById("cwc_tabsPanel").innerHTML=tab+document.getElementById("cwc_tabsPanel").innerHTML;
      document.getElementById("cwc_tabContentPanel").innerHTML +=
        "<div id='cwc_tabContent_" + aName + "' style='display:none' class='cwc_tabContent'></div>";

      mTabArray.push( aName );

      if (aContent != '') {
          if (aContent.toString().length > 4) {
            var myType= aContent.toString().substr(0, 4);
              var myContent = aContent.toString().substr(4);
              if (myType  == "div:")
                document.getElementById('cwc_tabContent_' + aName).innerHTML = document.getElementById(myContent).innerHTML
              else if(myType == "txt:")
                document.getElementById('cwc_tabContent_' + aName).innerHTML = myContent;
          }
      }
    }
  }
  
  function RemoveTab(aName){
    if(mTabArray.contains(aName)){
      mTabArray.remove(aName);
      if(mSelectedTab==aName){
        if(mTabArray.length>0)mSelected = mTabArray[0]; else mSelected='';
        ShowTab(mSelected);
      }
      var mydiv = document.getElementById("cwc_tab_"+aName);
      mydiv.parentNode.removeChild(mydiv);
      mydiv = document.getElementById("cwc_tabContent_"+aName);
      mydiv.parentNode.removeChild(mydiv);    
    }
  }
    
  function HideAllTabs(){
        for(var i=0;i<mTabArray.length;i++){
            if(mTabArray[i]!="Debug"){
                try{
                    document.getElementById( "cwc_tab_"+mTabArray[i]).style.overflow="hidden";
                    document.getElementById( "cwc_tab_"+mTabArray[i]).style.display="none";
                    document.getElementById( "cwc_tab_"+mTabArray[i]).style.height="0px";
                    document.getElementById( "cwc_tab_"+mTabArray[i]).style.width="0px";
                    document.getElementById( "cwc_tabContent_"+mTabArray[i]).style.display="none";
                }catch(ex){}
            }
        }
  }
  
  function ShowTabHead(aTabName){
    if(mTabArray.contains(aTabName)){
            document.getElementById( "cwc_tab_"+aTabName).style.overflow="visible";
            document.getElementById( "cwc_tab_"+aTabName).style.display="";
            document.getElementById( "cwc_tab_"+aTabName).style.height="";
            document.getElementById( "cwc_tab_"+aTabName).style.width="";
    }
  }
  
  function ShowFirstTab(){
    for(var i=0;i<mTabArray.length;i++){
      if(document.getElementById("cwc_tab_"+mTabArray[i]).style.display!="none"){
        ShowTab(mTabArray[i]);
        break;
      }
    }
  }
  
  function HideTabs(aTabNameArr){
      if(aTabNameArr.length>0){
        for(var i=0;i<mTabArray.length;i++){ 
            document.getElementById( "cwc_tab_"+mTabArray[i]).style.overflow="visible";
            document.getElementById( "cwc_tab_"+mTabArray[i]).style.display="";
            document.getElementById( "cwc_tab_"+mTabArray[i]).style.height="";
            document.getElementById( "cwc_tab_"+mTabArray[i]).style.width="";
        }
        for(var i=0;i<aTabNameArr.length;i++){
            if(mTabArray.contains(aTabNameArr[i])){
                document.getElementById( "cwc_tab_"+aTabNameArr[i]).style.overflow="hidden";
                document.getElementById( "cwc_tab_"+aTabNameArr[i]).style.display="none";
                document.getElementById( "cwc_tab_"+aTabNameArr[i]).style.height="0px";
                document.getElementById( "cwc_tab_"+aTabNameArr[i]).style.width="0px";
            }
        }
    }
  }

  function ShowTab(aTabName) {
        try{
            eval("Addon_"+mSelectedTab+"_DeActivate();")
        }catch(Ex){}
        
        if(mTabArray.contains(aTabName) &&  document.getElementById( "cwc_tab_"+aTabName).style.display!="none" ){
            for(var i=0;i<mTabArray.length;i++){
                if( document.getElementById( "cwc_tab_"+mTabArray[i]).style.display!="none"){
                    document.getElementById( "cwc_tab_"+mTabArray[i]).className="cwc_Tab";
                    document.getElementById( "cwc_tabContent_"+mTabArray[i]).style.display="none";
                }
            }
            document.getElementById( "cwc_tab_"+aTabName).className="cwc_Tab_o";
            document.getElementById( "cwc_tabContent_"+aTabName).style.display="";
            mSelectedTab=aTabName;

            try{
                eval("Addon_"+aTabName+"_Activate();")
            }
            catch (Ex) {
                DoDebug("Addon_" + aTabName + "_Activate Error:" + Ex.message);
            }
         }
    } 
    
    function ShowPopup1(aTitle,aContent){
        if(aTitle!=0 && aContent!=0){
            document.getElementById("cwc_popupTitel").innerHTML=aTitle;
            document.getElementById("cwc_popupContent").innerHTML=aContent;
        }
        
        document.getElementById("cwc_popupDiv").style.display="";
    }

    var popupOffset = 0;
    var popupArr = new Array();

    function ShowPopup(aTitle, aContent, aId) {
        popupArr.push(aId);
        if (aId == "disclaimer") {
            document.getElementById("cwc_popupDiv").style.display = "";
        } else {
            var popupElement = document.getElementById("popup_" + aId);
            if (!popupElement) {
                popupElement = document.createElement("div");
                popupElement.setAttribute("id", "popup_" + aId);
                document.body.appendChild(popupElement);

                popupElement.style.position = "absolute";
                popupElement.style.width = 500 + "px";
                popupElement.style.height = 500 + "px";

                if (theClientInfo.org == "microsoft") {
                    popupElement.style.pixelLeft = document.getElementById("cwc_videoPlayerPanel").offsetWidth + 50 + popupOffset;
                    popupElement.style.pixelTop = 100 + popupOffset;
                } else {
                    popupElement.style.left = document.getElementById("cwc_videoPlayerPanel").offsetWidth + 50 + popupOffset + "px";
                    popupElement.style.top = 100 + popupOffset + "px";
                }
                popupOffset += 20;
                if (popupOffset > 100) popupOffset = 0;
            }
            popupElement.innerHTML = document.getElementById("cwc_popupDiv").innerHTML;
            popupElement.style.display = "";
            popupElement.onclick = function() { PopupToFront(aId); }

            var divs = popupElement.getElementsByTagName("div");
            for (var i = 0; i < divs.length; i++) {
                if (divs[i].id == "cwc_popupTitel") { divs[i].innerHTML = aTitle; }
                if (divs[i].id == "cwc_popupContent") divs[i].innerHTML = aContent;
                if (divs[i].id == "cwc_popupTopRight") {
                    divs[i].onclick = function() { HidePopup(aId); }
                    //divs[i].attributes.onclick.nodeValue = "alert('1');"; //"theView.HidePopup(" + aId + ");theView.Paint();";
                }
            }
            PopupToFront(aId);
        }
    }

    function PopupToFront(aId) {
        for (var i = 0; i < popupArr.length; i++) {
            var popupElement = document.getElementById("popup_" + popupArr[i]);
            if(popupElement)popupElement.style.zIndex = 10000 + i;
        }
        document.getElementById("popup_" + aId).style.zIndex = 10000 + popupArr.length;
    }

    function HidePopup(value) {
        if (popupArr.contains(value)) {
            var popupElement = document.getElementById("popup_" + value);
            if (!popupElement) {
                DoDebug("could not hide popup since it was not found: " + value);
                //this line is for backwards compatibility:
                document.getElementById("cwc_popupDiv").style.display = "none";
            } else {
                popupElement.innerHTML = '';
                popupElement.style.display = "none";
                DoDebug("hide popup: " + value);
            }
            popupArr.remove(value);
        }
    }
}
