﻿var IsPostBack = true;

var ProjectVideosURL = '';
var ProjectImagesURL = '';
var ProjectHtmlUrl = '';
var ProjectMiniPreviewUrl = '';

var DefaultVideoURL = '';
var DefaultVideoID = 0;
var DefaultIntroURL = '';
var DefaultHtmlUrl = '';
var EmptyHtmlUrl = '';
var AutoStartDefaultVideo = false;
var AutoStartDefaultHtml = false;
var PlayDefaultIntro = false;


var Player = null;

var CurrentThemeID;
var VideoTable;
var HtmlDiv;

var ProjectVideosURL = '';
var ProjectImagesURL = '';
var ProjectHtmlUrl = '';
var ProjectMiniPreviewUrl = '';

var DefaultVideoURL = '';
var DefaultHtmlUrl = '';
var EmptyHtmlUrl = '';
var AutoStartDefaultVideo = false;
var AutoStartDefaultHtml = false;

var StartVideoURL = '';
var StartHtmlUrl = '';
var PersonalVideoURL = '';
var StartVideoID = 0;
var PersonalVideoID = 0;
var ActiveVideoId = 0;

var Player = null;
///<remarks> Optimierung, sts, 03.06.2009 "myConfirm nach rechts verschieben, da es hinter dem Player lag (zur Hälfte),da das setzten von zIndex kleiner als den von myConfirm bei den Player Panels erfolglos" </remarks>
///<remarks> Update, sts, 19.05.2009 "scaling: 'fit' nun auch beim DefaultIntro" </remarks>
///<remarks> Update, sts, 12.05.2009 "scaling: 'fit' für den Player gesetzt um eine Verzerrung des Videos zu verhindern" </remarks>
function InitPlayer() {

    VideoTable = document.getElementById(IDPRAEFIX + 'VideoTable');
    HtmlDiv = document.getElementById(IDPRAEFIX + 'TaskHtmlPanel');

    var panel = document.getElementById(IDPRAEFIX + 'PlayerPanel');
    
    var IntroClip = { scaling: 'fit' };
    var ClipConfig = { scaling: 'fit' };
    var PrivateIntroClip = { scaling: 'fit' };

    var PlayList = new Array();

    ClipConfig.autoPlay = false;
    if (StartVideoURL != '') {
        ActiveVideoId = StartVideoID;
        getVideoZuordnung();
        ClipConfig.url = ProjectVideosURL + StartVideoURL;
        ClipConfig.autoPlay = true;
        if (PersonalVideoURL != '') {
            PrivateIntroClip.url = ProjectVideosURL + PersonalVideoURL;
            PrivateIntroClip.autoPlay = true;
            PlayList.push(PrivateIntroClip);
            PlayList.push(ClipConfig);
        } else PlayList.push(ClipConfig); 
    } else {

        if (DefaultVideoURL.length > 0) {
            ClipConfig.url = DefaultVideoURL;
            ClipConfig.autoPlay = AutoStartDefaultVideo;
            if (DefaultIntroURL != '' & PlayDefaultIntro == true) {
                IntroClip.url = DefaultIntroURL;
                IntroClip.autoPlay = ClipConfig.autoPlay;
                PlayList.push(IntroClip);
                PlayList.push(ClipConfig);
            } else PlayList.push(ClipConfig); 
        }
    }
    
    if (StartVideoID > 0) SetSendVideoLink(StartVideoID);

    var CanvasConfig = { backgroundColor: '#003870', backgroundGradient: 'high', scaling: 'fit' };

    var PlayerConfig = { playlist: PlayList, canvas: CanvasConfig, key: '#$c3c366926fb8d35de35' }
    Player = flowplayer(panel.id, "../flash/flowplayer/flowplayer.commercial-3.1.0.swf", PlayerConfig);

    if (StartHtmlUrl != '') ShowHtmlHelp(ProjectHtmlUrl + StartHtmlUrl);

    if (GetAktiveImageObject(0) == null) {
         var img = GetFirstImageObject(0);
         if (img) {
             img.src = img.getAttribute('aktiv', 0);
             GetThemeVideos(img.getAttribute('ThemeID', 0), img.getAttribute('HtmlUrl', 0), img, 0); 
        }
    }
    var myconfirmdiv = document.getElementById("myconfirmDiv1");
    myconfirmdiv.style.left = "230px";
}

function RegisterOnClick(pRegisterID, pRegisterCount, pHtmlUrl) {

    if (Player != null) Player.stop();
    SetRegisterAktive(pRegisterID, pRegisterCount, null);
    SetImagePanelVisible(pRegisterID);
	var AktivImg = GetAktiveImageObject(pRegisterID);

	if (AktivImg == null) {
         var img = GetFirstImageObject(pRegisterID);
         if (img) {
             img.src = img.getAttribute('aktiv', 0); 
            GetThemeVideos(img.getAttribute('ThemeID', 0), img.getAttribute('HtmlUrl', 0), img, pRegisterID); }
	 } else {
	    GetThemeVideos(AktivImg.getAttribute('ThemeID', 0), AktivImg.getAttribute('HtmlUrl', 0), AktivImg, pRegisterID);
	 }

	 if (IsPostBack == false & StartVideoID > 0) {} else ShowHtmlHelp(pHtmlUrl);
}

function GetThemeVideos(pThemeID, pHtmlUrl, pImageObject, pRegisterID) {

    if (Player != null) Player.stop();
    CurrentThemeID = pThemeID;
    SetThemeImageAktiv(pImageObject, pRegisterID);
    if (IsPostBack == false & StartVideoID > 0) { } else ShowHtmlHelp(pHtmlUrl);
    var ThemeTitel = $get(IDPRAEFIX + 'ThemeTitelPanel');
    if (ThemeTitel) ThemeTitel.innerHTML = pImageObject.getAttribute('ThemeTitel', 0);
    COSService.GetWebcastVideoTable(pThemeID, OnGetWebcastVideoTable);

}
/* OnGetWebcastVideoTable
/// <remarks> Optimierung, sts, 17.06.2009, "Die styles der ersten Zeile in jeder neu erstellten Zeile übernehmen & Zellen über Methode CreateVideoTabelCells erstellen, damit FF und Chrome die Tabelle korrekt anzeigen"</remarks>
*/
function OnGetWebcastVideoTable(pDataTable) {

    RemoveVideoTableRows();

    if (pDataTable.rows != null && pDataTable.rows.length > 0) {

        for (var i = 0; i < pDataTable.rows.length; i++) {

            var DataRow = pDataTable.rows[i];

            var VideoIdx = DataRow[pDataTable.columns[0].name];
            var ThemeID = DataRow[pDataTable.columns[1].name];
            var VideoUrl = DataRow[pDataTable.columns[2].name];
            var HtmlUrl = DataRow[pDataTable.columns[3].name];
            var PreviewImageUrl = DataRow[pDataTable.columns[4].name];
            var MiniPreviewImageUrl = DataRow[pDataTable.columns[5].name];
            var Text = DataRow[pDataTable.columns[6].name];
            var Titel = DataRow[pDataTable.columns[7].name];

            VideoUrl = ProjectVideosURL + VideoUrl;
            MiniPreviewImageUrl = ProjectImagesURL + MiniPreviewImageUrl;

            if (HtmlUrl != null & HtmlUrl != '') {
                HtmlUrl = ProjectHtmlUrl + HtmlUrl;
            } else if (EmptyHtmlUrl != '') {
                HtmlUrl = EmptyHtmlUrl;
            } else HtmlUrl = '';

            var row;
            var cellindex;

            if (i < 2) {
                row = VideoTable.rows[0];
                if (i == 0) cellindex = 1; else cellindex = 3;
            } else {
                if (i % 2 == 0) {
                    row = VideoTable.insertRow(VideoTable.rows.length);
                    row.style.height = VideoTable.rows[0].style.height;
                    row.style.display = VideoTable.rows[0].style.display;
//                    VideoTable.style["table-layout"] = "fixed";
//                    row.style["table-layout"] = "fixed";
                    cellindex = 1;
                    CreateVideoTabelCells(row);
                } else {
                    row = VideoTable.rows[VideoTable.rows.length - 1];
                    cellindex = 3;
                }
            }

            // Aus - und wieder einblenden, damit row auf jeden Fall sichtbar wird 29.05.2009 mw
            row.style.display = 'none';
            row.style.display = 'inline';
            // **

            var href = 'javascript:' + 'ShowHtmlHelp("' + HtmlUrl + '"); PlayVideo("' + VideoUrl + '",' + VideoIdx + ');';

            var cell = row.cells[cellindex];
            var img = document.createElement('img');
            img.src = MiniPreviewImageUrl;
            img.border = 0;

            var a = document.createElement('a');
            a.href = href;
            a.appendChild(img);
            cell.appendChild(a);

            cell = row.cells[cellindex + 1];
            cell.title = Titel;
            var a = document.createElement('a');
            a.href = href;
            a.innerText = Text;
            cell.appendChild(a);
        }
    }
    /* CreateVideoTabelCells
    /// <summary> "Methode zum erstellen der Zellen in die übergebene Reihe, Zellen styles und breite & höhe aus der ersten Spalte übernehmen, damit FF und Chrome die Tabelle korrekt anzeigen" </summary>
    /// <created> sts, 17.06.2009 </created>
    */
    function CreateVideoTabelCells(pRow) {
        for (var i = 4; i >= 0; i--) {
            var rowCell = pRow.insertCell(0);
            rowCell.width = VideoTable.rows[0].cells[i].width;
            rowCell.heigth = VideoTable.rows[0].cells[i].heigth;
            rowCell.style["vertical-align"] = "top";
            rowCell.style["min-width"] = VideoTable.rows[0].cells[i].style["min-width"];
            rowCell.style.width = VideoTable.rows[0].cells[i].style.width;
        }
    }
    /* IsWebcastHelpAdmin
    /// <remarks> Optimierung, sts, 17.06.2009, "Die styles der ersten Zeile in jeder neu erstellten Zeile übernehmen & Zellen über Methode CreateVideoTabelCells erstellen, damit FF und Chrome die Tabelle korrekt anzeigen"</remarks>
    */
    // nur Admin darf bearbeiten
    COSService.IsWebcastHelpAdmin(CurrentThemeID, function(pIsAdmin) {
        if (pIsAdmin == false) return;
        var row = VideoTable.insertRow(VideoTable.rows.length);
        row.style.display = VideoTable.rows[0].style.display;
        row.style.height = VideoTable.rows[0].style.height;
        CreateVideoTabelCells(row);

        var href = 'javascript:' + 'OpenListForm("' + 'fmWebcastHelpUpload","' + 'ThemeID=' + CurrentThemeID + '");';

        cell = row.cells[2];
        cell.title = "Videos hinzufuegen und bearbeiten";
        var a = document.createElement('a');
        a.href = href;
        a.innerText = cell.title;
        cell.appendChild(a);

        var href = 'javascript:' + 'OpenViewForm("' + 'fmWebcastHelpThemeEdit",' + CurrentThemeID + ',1' + ');';

        cell = row.cells[4];
        cell.title = "Thema bearbeiten";
        var a = document.createElement('a');
        a.href = href;
        a.innerText = cell.title;
        cell.appendChild(a);

        var row = VideoTable.insertRow(VideoTable.rows.length);
        row.style.display = VideoTable.rows[0].style.display;
        row.style.height = VideoTable.rows[0].style.height;
        CreateVideoTabelCells(row);

        var href = 'javascript:' + 'OpenViewForm("' + 'fmWebcastHelpRangeEdit",' + CurrentThemeID + ',1' + ');';

        cell = row.cells[2];
        cell.title = "Bereich bearbeiten";
        var a = document.createElement('a');
        a.href = href;
        a.innerText = cell.title;
        cell.appendChild(a);

        var href = 'javascript:' + 'OpenViewForm("' + 'fmWebcastHelpProjectEdit",' + CurrentThemeID + ',1' + ');';

        cell = row.cells[4];
        cell.title = "Projekt bearbeiten";
        var a = document.createElement('a');
        a.href = href;
        a.innerText = cell.title;
        cell.appendChild(a);

    });
}

function OnAfterCOSLoginSucceeded() {
    COSService.IsWebcastHelpAdmin(CurrentThemeID, function(pIsAdmin) {
        if (pIsAdmin == true) {
            var link = document.getElementById(IDPRAEFIX + 'UploadPrivateVideoLink');
            if (link) {
                link.style.visibility = '';            }
        }
    });
}


function PlayVideo(pVideoUrl, pVideoID) {
    ActiveVideoId = pVideoID;
    Player.onError(function(errorCode, errorMessage) { alert('error: ' + errorCode + ' : ' + errorMessage); return false; });

    var Videoclip = { url: pVideoUrl, scaling: 'fit' };
    var IntroClip = { url: DefaultIntroURL, scaling: 'fit' };

    if (DefaultIntroURL != '' & PlayDefaultIntro == true) Player.play([IntroClip, Videoclip]); else Player.play(Videoclip);
    
    COSService.AddWebcastHelpVideoLog(pVideoID, function() { });
    SetSendVideoLink(pVideoID);
    getVideoZuordnung();
}
function getVideoZuordnung() {
    if (ActiveVideoId == 0) return;
    var con = $get(IDPRAEFIX + 'config_panel');
    if (con) {
        con.style.display = '';
        COSService.GetWebcastZuordnung(ActiveVideoId, onGetWebcastZuordnung);
    }
}
function SetWebcastZuordnung() {
    var a = $get(IDPRAEFIX + 'T_Webcasthelp_Formname');
    COSService.SetWebcastZuordnung(a.value, ActiveVideoId, onSetWebcastZuordnung);
}
function onSetWebcastZuordnung() {
    PCE_T_Webcasthelp_Formname_OnFilter();
}

function onGetWebcastZuordnung(pRes) {
    var a = $get(IDPRAEFIX + 'T_Webcasthelp_Formname');
    a.value = pRes;
    PCE_T_Webcasthelp_Formname_OnFilter();
}

function DelWebcastZuordnung() {
    var a = $get(IDPRAEFIX + 'T_Webcasthelp_Formname');
    COSService.SetWebcastZuordnung(a.value, 0, onSetWebcastZuordnung);
}




function SetSendVideoLink(pVideoID) {

    var a = document.getElementById(IDPRAEFIX + 'SendVideoLink');
    var a2 = document.getElementById(IDPRAEFIX + 'SendVideoLink2');
    if (a) {
        var VideoPar = '&Video=' + pVideoID;
        if (location.href.indexOf('?') < 0) VideoPar = '?Video=' + pVideoID;
        var Href = location.href;
        var Pos = Href.toLowerCase().indexOf('&video=');
        if (Pos > 0) Href = location.href.substring(0, Pos);
        var VideoLink = encodeURIComponent(Href + VideoPar);
        a.href = 'mailto:?Subject=Videolink&Body=' + VideoLink;
        a.style.visibility = '';

        if (a2) {
            a2.href = 'mailto:?Subject=Videolink&Body=' + VideoLink;
            a2.style.visibility = '';
        }
    }

}

function ShowHtmlHelp(pHtmlUrl) {
    if (pHtmlUrl == '') {
        HtmlDiv.innerHTML = '';
    } else {
        COSService.GetHTMLFile(pHtmlUrl, function(pResult) { if (pResult.length > 0) HtmlDiv.innerHTML = pResult; else HtmlDiv.innerHTML = ''; });
    }
}

function RemoveVideoTableRows() {

    var count = VideoTable.rows.length;

    for (var i = 0; i < count - 1; i++) {
        VideoTable.deleteRow(1);
    }

    var row = VideoTable.rows[0];

    if (row.cells[1].firstChild != null) row.cells[1].removeChild(row.cells[1].firstChild);
    if (row.cells[2].firstChild != null) row.cells[2].removeChild(row.cells[2].firstChild);
    if (row.cells[3].firstChild != null) row.cells[3].removeChild(row.cells[3].firstChild);
    if (row.cells[4].firstChild != null) row.cells[4].removeChild(row.cells[4].firstChild);

}

function SetThemeImageAktiv(pImageObject,pRegisterID) {
	
	var ImagePanel = document.getElementById(IDPRAEFIX+'IMAGEPANEL'+pRegisterID);
	if (!ImagePanel) return null;
	if (!ImagePanel.childNodes) return null; 
	
	for (var i = 0; i < ImagePanel.childNodes.length; i++) {

	        var img = ImagePanel.childNodes[i]; 
			if (img.tagName && img.tagName.toLowerCase() == 'img')  {
			    if (pImageObject != null && img.id == pImageObject.id) {
			        img.setAttribute('out', img.getAttribute('aktiv', 0), 0)
			        img.src = img.getAttribute('aktiv', 0);
			    } else {
			        img.src = img.getAttribute('altout', 0);
			        img.setAttribute('out', img.src, 0);
				}
			}
    }
}

function SetImagePanelVisible(pID) {
    for (var i = 0; i < 100; i++) {
        var ImagePanel = document.getElementById(IDPRAEFIX + 'IMAGEPANEL' + i.toString());
        if (ImagePanel == null) return;
        if (i.toString() == pID.toString())
            ImagePanel.style.visibility = '';
        else
            ImagePanel.style.visibility = 'hidden';
    }
}

function GetAktiveImageObject(pRegisterID) {
	
	var ImagePanel = document.getElementById(IDPRAEFIX+'IMAGEPANEL'+pRegisterID);
	if (!ImagePanel) return null;
	if (!ImagePanel.childNodes) return null;
	
	for (var i = 0; i < ImagePanel.childNodes.length; i++) {
	
			var img = ImagePanel.childNodes[i];
			if (img.tagName && img.tagName.toLowerCase() == 'img') {
			    if (img.src.toLowerCase() == img.getAttribute('aktiv', 0).toLowerCase()) {return img; }
			}
	}
	
	return null;
}

function GetFirstImageObject(pRegisterID) {
    var ImagePanel = document.getElementById(IDPRAEFIX + 'IMAGEPANEL' + pRegisterID);
    if (!ImagePanel) return null;
    if (!ImagePanel.childNodes) return null;
    for (var i = 0; i < ImagePanel.childNodes.length; i++) {

        var img = ImagePanel.childNodes[i];
        if (img.tagName && img.tagName.toLowerCase() == 'img') return img;
    }

    return null;
}
