﻿//palyer event switcher
var _cuPlayer;
var _cuPlayerName = "";
var _cuLogerArr = new Array();
var _cuMuteVar = false;
var _cuVolVar = 0;
var _cuposVar = 0;
var _cuDefaulTmbUrl = "images/background.jpg";
var objToolBar;
function _cuGetclientInfo() {
    var client = new Object();
}

function OnPlayStateChangeEvt(NewState) {
    onPlayerEventElementDisplayDispetcher(NewState)
    _cuOnEventMesegesDispatcher(NewState);
    //var noteDiv = document.getElementById ("nottificationsDiv");
    var stateName = "";
    //checkMediaCheng ()
    _cuPushToLoger(translateState(NewState), "OnPlayStateChangeEvt")

    switch (NewState) {
        case 0: //Undefined 	Windows Media Player is in an undefined state.
            _cuPlayerUndefinedOnEvent();
            break
        case 1: //Stopped 	Playback of the current media item is stopped.
            _cuPlayerStopedOnEvent()
            break
        case 2: //Paused 	Playback of the current media item is paused.
            _cuPlayerPausedOnEvent();
            break
        case 3: //Playing 	The current media item is playing.
            _cuPlayerPlayingOnEvent();
            break
        case 4: //ScanForward 	The current media item is fast forwarding.
            _cuPlayerScanForwardOnEvent();
            break
        case 5: // ScanReverse	The current media item is fast rewinding.
            _cuPlayerScanReverseOnEvent();
            break
        case 6: //Buffering 	The current media item is getting additional data from the server.
            _cuPlayerBufferingOnEvent();
            break
        case 7: //Waiting 	Connection is established, but the server is not sending data. Waiting for session to begin.
            _cuPlayerWaitingOnEvent();
            break
        case 8: //MediaEnded 	Media item has completed playback.
            _cuPlayerMediaEndedOnEvent();
            break
        case 9: //Transitioning 	Preparing new media item.
            _cuPlayerTransitioningOnEvent();
            break
        case 10: //Ready 	Ready to begin playing.
            _cuPlayerReadyOnEvent();
            break
        case 11: //Reconnecting 	Reconnecting to stream.
            _cuPlayerReconnectingOnEvent();
            break
    }
}
//palyer event switcher
//player LogerFunction
function _cuPushToLoger(eventName, eventSender) {
    try {
        var media = "-1"
        //alert(_cuPlayer.currentMedia.getItemInfo ("Title"))
        try {
            media = PlayerControlAction("GetMediaMetaData", "");
            media = media.getItemInfo("Title")
        } catch (e) {
            //alert(e);
            media = e;
        }
        _cuLogerArr.push([eventName, timestemp(), eventSender, media])
        document.getElementById("LogDiv").innerHTML += _cuLogerArr[_cuLogerArr.length - 1] + "<br/>";

    }
    catch (e) {
        //alert (e)
    }
}
//player LogerFunction
function timestemp() {
    var NowDate = new Date()
    var NowDateToStr = getShortDateString(NowDate);
    return NowDateToStr;
}
function getShortDateString(dt) {
    var sTime = dt.getDate() + "/" + (Number(dt.getMonth()) + 1) + "/" + dt.getFullYear() + " " + dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
    return sTime;
}
function PlayerControlAction(actionName, actionParam) {
    try {
        //_cuPlayer = document.getElementById(_cuPlayerName);
        if (_cuPlayer == null) {
            return -1;
        }
    }
    catch (e) {
        //alert (e)
    }
    try {
        switch (actionName) {
            case "SetPlayerUrl": //sets player url
                _cuPlayer.URL = actionParam;
                break;
            case "Play": //player play
                _cuPlayer.controls.play();
                break;
            case "Pause": //player play
                if (typeof (_cuPlayer.currentMedia) != "undefined") {
                    _cuPlayer.controls.pause();
                }
                break;
            case "SetMute":
                if (actionParam) {
                    _cuVolVar = _cuPlayer.settings.volume;
                    _cuPlayer.settings.volume = 0;
                    _cuMuteVar = true;

                } else {
                    _cuPlayer.settings.volume = _cuVolVar;
                    _cuMuteVar = false;
                }

                break
            case "GetMute":
                try { return _cuMuteVar; } catch (e) { return -1; }
                break
            case "SetCurrentPosition":
                try {
                    if (typeof (_cuPlayer.currentMedia) != "undefined") {
                        _cuPlayer.controls.currentPosition = actionParam;
                    }
                } catch (e) { return -1; }
                break
            case "GetCurrentPosition":
                try {
                    if (typeof (_cuPlayer.currentMedia) != "undefined") {
                        return _cuPlayer.controls.currentPosition
                    }
                    return -1;
                } catch (e) {
                    return -1;
                }
                //media not ready
                break
            case "GetCurrentDuration":
                try {
                    if (typeof (_cuPlayer.currentMedia) != "undefined") {
                        //				    if (boocmarksExist)
                        //				    {
                        //					    return boocmarksDur;
                        //				    }
                        //				    else
                        //				    {
                        return _cuPlayer.currentMedia.duration;
                        //				    }
                    }
                    return -1;
                } catch (e) {
                    return -1;
                }

                //media not ready
                break
            case "GetCurrentPlaylistCount":
                try {
                    var PlaylistCount = _cuPlayer.currentPlaylist.count;
                    return PlaylistCount;
                } catch (e) { return -1; }
                break
            case "GetCurrentPlaylist":
                try {
                    var Playlist = _cuPlayer.currentPlaylist;
                    return Playlist;
                } catch (e) { return -1; }
                break
            case "FastReverse":
                try {
                    _cuPlayer.controls.fastReverse();
                } catch (e) { return -1; }
                break
            case "FastForward":
                try { _cuPlayer.controls.fastForward(); } catch (e) { return -1; }
                break
            case "Stop":
                try { _cuPlayer.controls.stop(); } catch (e) { return -1; }
                break
            case "Fullscreen":
                try { _cuPlayer.fullScreen = true; } catch (e) { return -1; }
                break
            case "SetVolume":
                try {
                    _cuPlayer.settings.volume = Number(actionParam);
                    _cuVolVar = Number(actionParam);
                    _cuMuteVar = true;
                } catch (e) { return -1; }
                break
            case "SetWidth":
                try {
                    _cuPlayer.width = actionParam;
                }
                catch (e) {
                    return -1;
                }
                break
            case "SetHeight":
                try {
                    _cuPlayer.height = actionParam;
                }
                catch (e) {
                    return -1;
                }
                break
            case "SetCssClass":
                try {
                    _cuPlayer.className = actionParam;
                }
                catch (e) {
                    return -1;
                }
                break
            case "SetCurrentItem":
                try {
                    var PList = _cuPlayer.currentPlaylist;
                    var media = PList.item(actionParam);
                    if ((-1 != navigator.userAgent.indexOf("MSIE"))) {


                        // Make the retrieved playlist the current playlist.
                        _cuPlayer.currentMedia = media;
                    }
                    else {
                        _cuPlayer.controls.playItem(media);
                    }
                    return -1;
                }
                catch (e) {
                    return -1;
                }
                break
            case "GetMediaMetaData":
                try {
                    if (typeof (_cuPlayer.currentMedia) != "undefined") {
                        return _cuPlayer.currentMedia;
                    } else {
                        return -1;
                    }
                }
                catch (e) {
                    return -1
                }
                return -1;
            case "GetItemInfo":
                try {
                    var MetaData = PlayerControlAction("GetMediaMetaData", "");
                    var retStr = MetaData.getItemInfo(actionParam);
                    return retStr;
                }
                catch (e) {
                    return -1;
                }
                return -1;
                //media not ready
                break
            case "GetCurrentStatus":
                try {
                    return _cuPlayer.status
                } catch (e) {
                    return "Undefined";
                }
                break
            case "GetCurrentPlayState":
                try {
                    
                    return _cuPlayer.playState
                } catch (e) {
                    return 0;
                }
                break
            case "GetCurrentUrl":
                try {
                    return _cuPlayer.currentMedia.sourceURL
                } catch (e) {
                    return -1;
                }
                break
            case "GetBuferingProgres":
                try {
                    
                    if (PlayerControlAction("GetCurrentPlayState", "") == 6) {

                        return _cuPlayer.network.bufferingProgress;
                    }

                    else {
                        return 100
                    }
                } catch (e) {
                    return 100
                }
                break
            case "GetMediaColection":
                try {
                    var MediaColection = _cuPlayer.playlistCollection.getAll();
                    return MediaColection;
                } catch (e) {
                    return -1;
                }
                break
        }
    }
    catch (e) {
        //alert (e)
    }
    _cuPushToLoger(actionName, "User Button Action");
    return -1;
}
function playerObjectBilder(PlayerName, width, height, cssClass, uimode, URL, autoStart, balance, enableContextMenu, stretchToFit, windowlessVideo) {
    if ((-1 != navigator.userAgent.indexOf("Firefox"))) {
        if (!isMSFirefoxPlugin()) {
            document.getElementById("NotificationDiv").innerHTML = firefoxPluginInstullNote(URL);
            document.getElementById("NotificationDiv").style.display = "block";
            document.getElementById("areaLoading").innerHTML = ""
        }
    }
    var return_str = "";
    if (navigator.appVersion.indexOf("Mac") != -1) {
        return_str += "<embed type=\"application/x-mplayer2\" filename=\"" + URL + "\" src=\"" + URL + "\"";
        return_str += "showstatusbar=\"true\" showcontrols=\"true\" autostart=\"" + autoStart + "\" strechtofit=\"" + stretchToFit + "\"";
        return_str += " width=\"" + width + "\" height=\"" + height + "\" class=\"" + cssClass + "\">"

        return return_str

    }
    _cuPlayerName = PlayerName;

    return_str += "<OBJECT id=\"" + PlayerName + "\" ";
    if ((-1 != navigator.userAgent.indexOf("MSIE"))) {
        return_str += " classid=\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\"";
    }
    else if (-1 != navigator.userAgent.indexOf("Firefox")) {
        return_str += " type=\"application/x-ms-wmp\"";

    } else if (-1 != navigator.userAgent.indexOf("AppleWebKit")) {
        return_str += " type=\"application/x-ms-wmp\"";

    }
    return_str += " width=\"" + width + "\" height=\"" + height + "\" class=\"" + cssClass + "\">";
    return_str += "<PARAM name=\"uimode\" VALUE=\"" + uimode + "\">";
    return_str += "<PARAM name=\"URL\" VALUE=\"\">";
    
    
    //return_str += "<PARAM name=\"URL\" VALUE=\"" + URL + "\">";
    return_str += "<PARAM name=\"autoStart\" VALUE=\"" + autoStart + "\">";
    return_str += "<PARAM name=\"balance\" VALUE=\"" + balance + "\">";
    return_str += "<PARAM name=\"volume\" VALUE=\"" + _cuVolVar + "\">";
    return_str += "<PARAM name=\"mute\" VALUE=\"" + _cuMuteVar + "\">";
    return_str += "<PARAM name=\"enableContextMenu\" VALUE=\"" + enableContextMenu + "\">";
    return_str += "<PARAM name=\"stretchToFit\" VALUE=\"" + stretchToFit + "\">";
    return_str += "<param name=\"AllowChangeDisplaySize\" value=\"true\" />";
    return_str += "<param name=\"showFrame\" value=\"true\" />";
    
    if ((-1 != navigator.userAgent.indexOf("AppleWebKit"))) {
        return_str += "<PARAM name=\"windowlessVideo \" VALUE=\"" + windowlessVideo + "\">";
    }
    if ((-1 != navigator.userAgent.indexOf("MSIE"))) {
        return_str += "<PARAM name=\"windowlessVideo \" VALUE=\"" + windowlessVideo + "\">";
    }
//    else if (-1 != navigator.userAgent.indexOf("Firefox")) {
//        return_str += "<PARAM name=\"windowlessVideo \" VALUE=\"false\">";
//    }

    return_str += "</OBJECT>";
    return return_str

}

function isMSFirefoxPlugin() {
    var isWMPFFPlugin = false;

    try {
        for (var i = 0; navigator.plugins.length; i++) {
            if (navigator.plugins[i].name.indexOf("Windows Media Player Firefox Plugin") > -1) {
                isWMPFFPlugin = true;
                break;
            }
        }
    }
    catch (e) {
        isWMPFFPlugin = false;
    }

    return isWMPFFPlugin;
}
function enableDisableElements() {

}
function firefoxPluginInstullNote(URL) {
    var returnStr = ""


    returnStr += "<TABLE BORDER='0' CELLPADDING='0' CELLSPACING='0'id='NotificationTBL'>"
    returnStr += "<TR>"
    returnStr += "<TD BGCOLOR='#475ccd' VALIGN='MIDDLE' STYLE='padding-left: 15px; padding-top: 5px; font-size: 12px;color: #ffffff;font-family: Arial;text-align: left;'>"
    returnStr += "You must install the <B><I>Windows Media Player Firefox Plugin.</I></B>"
    returnStr += "<BR /><BR />"
    returnStr += "<LI><SPAN STYLE='cursor: pointer;' onclick='window.open(\"http://switch5.castup.net/MS_Plugin_Notes.asp\", \"\", \"width=480, height=380, left=350, top=150, modal=yes\")'><U>Click here</U></SPAN> to download and install the plugin.</LI>"
    returnStr += "<BR />"
    returnStr += "<LI>Or <SPAN STYLE=\"cursor: pointer;\" onclick=\"window.open('" + URL + "')\"><U>click here</U></SPAN> to view the content directly in your Windows Media Player.</LI>"
    returnStr += "</TD>"
    returnStr += "</TR>"
    returnStr += "</TABLE>"
    return returnStr;
}
function getClipAttributes() {

    // Store the current media object.
    var cm = PlayerControlAction("GetMediaMetaData", "");
    var retVal = "";

    // Create arrays to hold each attribute name and value.
    var atNames = new Array();
    var atValues = new Array();

    //alert("attributeCount="+cm.attributeCount);
    // Loop through the attribute list.
    for (var i = 0; i < cm.attributeCount; i++) {

        // Fill the arrays with the attribute info.
        atNames[i] = cm.getAttributeName(i);
        atValues[i] = cm.getItemInfo(atNames[i]);

        retVal += cm.getAttributeName(i).toString() + ": " + cm.getItemInfo(atNames[i]).toString() + "\n";

    }

    return retVal;
}
