
var current_supported_version = "3.0.40624.0";

var hasCheched = false;

function ChechSLVersion() {
    if (hasCheched) {
        return "success";
    }

    if (!Silverlight.isInstalled(null)) {
        return "needInstalling";
    }

    if (!Silverlight.isInstalled(current_supported_version)) {
        return "needUpdating";
    }

    hasCheched = true;

    return "success";
}

function writeSLPlayer(locImage, id, locExtends) {
   Silverlight.createObject(locImage + "scripts/slplayer.xap", 
                            document.getElementById(id), 
                            "iptvslembed", 
                            writeProperties("onSilverlightLoad"), 
                            writeEvents(), 
                            writePlayerInitParameter(locImage, locExtends));
}

function writeProperties(load) {

    var properties = {};

    properties.version = current_supported_version;

    properties.width = "100%";

    properties.height = "100%";

    properties.onLoad = load;

    properties.onerror = "onSilverlightError";

    properties.background = "black";

    properties.autoUpgrade = "true";

    properties.minRuntimeVersion = current_supported_version;

    properties.enableHtmlAccess = "true";

    return properties;
}

function writeEvents() {

    var events = {};

    return events;
}

function writePlayerInitParameter(locImage, locExtends) {
    var initParameters = {};

    if (locExtends) {
        initParameters.extends_path = locImage != "" ? locImage + 'scripts/' + locExtends : locExtends;
    }

    var count = 0;

    for (var name in initParameters) {
        count++;
    }

    if (count <= 0) return null;

    return initParameters;
}

function writeSLPrerollPlayerInitParameter() {
    var initParameters = {};
    var count = 0;

    for (var name in initParameters) {
        count++;
    }

    if (count <= 0) return null;

    return initParameters;
}

function onSilverlightLoad(sender, args) {
  PlayerMessenger.IsPlugInLoad();
}

function writeSLPrerollPlayer(locImage, id)
{
    Silverlight.createObject(locImage + "scripts/slplayer.xap", 
                             document.getElementById(id),
                             "iptvslprembed", 
                             writeProperties("onSilverlightPrerollLoad"), 
                             writeEvents(), 
                             writeSLPrerollPlayerInitParameter());
}

function onSilverlightPrerollLoad(sender, args)
{
    //PrerollMessenger.IsPlugInLoad();
}

function slShowHide(show, w, h)
{
	var sl = document.getElementById("slpane");
	
	if(show)
	{
		slPrerollShowHide(false);
		if (w) sl.style.width = w + "px";
		if (h) sl.style.height = h + "px";
		sl.style.left = "0px";
	}
	else
	{
		sl.style.width = "1px";
		sl.style.height = "1px";
		sl.style.left = "-100px";
	}
}

function slPrerollShowHide(show, w, h)
{
	var sl = document.getElementById("slprpane");
	if(show)
	{
		slShowHide(false);
		if (w) sl.style.width = w + "px";
		if (h) sl.style.height = h + "px";
		sl.style.left = "0px";
	}
	else
	{
		sl.style.width = "1px";
		sl.style.height = "1px";
		sl.style.left = "-100px";
	}
}

function playSL(path, x, y, volume, islive, w, h)
{
	slShowHide(true, w, h);
    PlayerMessenger.PlayVideo(path, volume, islive);
}

function playAdaptiveSL(path, x, y, volume, trackId, trackName, startTime, endTime)
{
	slShowHide(true, w, h);
    //PlayerMessenger.playAdaptiveVideo(path, volume, startTime, endTime);
}

function playPrerollSL(path, x, y, volume, w, h)
{
	slPrerollShowHide(true, w, h);
    //PrerollMessenger.playPrerollVideo(path, volume);
}

// call silverlight function from flex application
function slProxy(action, value)
{
	switch(action)
	{
	case "stop":
		PlayerMessenger.Stop();
		break;
	case "pause":
		PlayerMessenger.Pause();
		break;
	case "play":
		PlayerMessenger.Play();
		break;
	case "replay":
		slShowHide(true, value[0], value[1]);
		PlayerMessenger.Replay();
		break;
	case "setvolume": 
		PlayerMessenger.SetVolume(value[0], value[1]);
		break;
	case "getvolume": 
		return PlayerMessenger.GetVolume();
		break;
	case "share":			// can be shared or not
		PlayerMessenger.UpdateShare(value);
		break;
	case "shareshow":
	    PlayerMessenger.Pause();
		slShowHide(false);
		break;
	case "sharehide":
        PlayerMessenger.Play();
		slShowHide(true);
		break;
	case "position":
		var p = document.getElementById("slpane");
		p.style.left = value[0] + "px";
		p.style.top = value[1] + "px";
		break;
	case "hide":			// while program play to end, we need stop and hide sl and then ready to UI and play AD
		PlayerMessenger.Stop();
		slShowHide(false);
		break;
	case "updateprevnext":	// update the prev/next button disable status
		PlayerMessenger.UpdatePrevNext(value[0], value[1]);
		break;
	case "switchaudio":		// switch audio, 0 home, 1 away
		PlayerMessenger.SwitchAudio(value, g_disable_balance);
		break;
	case "changediv":		// change player div size (show, w, h)
	    slShowHide(value[0], value[1], value[2]);
		break;
	case "playerLoaded": 
		return PlayerMessenger.IsLoaded;
		break;
	}
}

// call silverlight preroll function from flex application
function slPrerollProxy(action, value)
{
	switch(action)
	{
	case "position":
		var p = document.getElementById("slprpane");
		p.style.left = value[0] + "px";
		p.style.top = value[1] + "px";
		break;
	case "hide":
		try
		{
			document.getElementById("iptvslprembed").content.Page.stop();
		}
		catch(e){}
		slPrerollShowHide(false);
		break;
	}
}

// call flex function from silverlight application
// share, next/prev program, sns (twitter, facebook)
// videostart, videocomplete, half, videoduration, volumechange, muted
function slCallback(action, value)
{
	var obj = document.getElementById("console");
	if(obj!=null && obj.slCallback!=null)
	{
		if(action=="shareshow")
			slShowHide(false);
		obj.slCallback(action, value);
	}
}

// call flex / silverlight player function from silverlight preroll application
// videostart, videocomplete, half, prerollerror, prerollclick
function slPrerollCallback(action, value)
{
	var obj = document.getElementById("console");
	if(obj!=null && obj.slPrerollCallback!=null)
	{
		obj.slPrerollCallback(action, value);
		if(action=="videocomplete" || action=="prerollerror")
		{
			slPrerollShowHide(false);
			// may be we need flex / silverlight player to do something, e.g. player actural program
		}
	}
}

// show companion image ads
function iptvShowCompanions(playerX, playerY, companions)
{
	for(var i=0;i<companions.length;i++)
	{
		var adsize = companions[i][0];
		switch(adsize)
		{
			case "300x250":
				iptvShowSideCompanion(companions[i]);
				break;
		}
	}
}

// show 300x250 companion image ad
function iptvShowSideCompanion(companion)
{
	var oDiv=document.getElementById("iptvAdDiv");
	if (oDiv==null)
	{
		oDiv = document.createElement("div");
		oDiv.id = "iptvAdDiv";
		oDiv.style.width = "300px";
		oDiv.style.height = "250px";
		oDiv.style.position = "absolute";
		oDiv.style.top = "120px";
		oDiv.style.left = "600px";
		document.getElementById("player").appendChild(oDiv);
	}
	
	var strAdHTML = findBannerHTML(companion[2],companion[3],companion[1]);
	oDiv.style.display = "";
	oDiv.innerHTML = strAdHTML;
}

function findBannerHTML(img1Tag,img1Href,img1Type) {
    var bannerHTML = "";
    if (img1Type == "img")
    {
        bannerHTML = '<HTML><IFRAME src="' + img1Tag + '" frameborder="0" scrolling="no" width="300" height="250" marginwidth="0" marginheight="0"></iframe></HTML>';
    }
    else if (img1Type == "fimg")
    {
        bannerHTML = '<HTML><CENTER><A HREF="' + img1Href + '" target="_blank"><IMG SRC="' + img1Tag + '" border="0"></A></CENTER></HTML>';
    }
    else if (img1Type == "fswf")
    {
    	bannerHTML = '<object width="300" height="250" id="embed" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">'
    	            + '<param name="movie" value="' + img1Tag + '" />'
    	            + '<embed name="embed" pluginspage="http://www.adobe.com/go/getflashplayer" src="'
    	            + img1Tag + '" type="application/x-shockwave-flash" width="300" height="250"></embed>'
    	            + '</object>';
    }
    else {
        bannerHTML = '<HTML>' + img1Tag + '</HTML>';
    }
    
    //alert("findBannerHTML type - " + img1Type + ", html - " + bannerHTML);
    return bannerHTML;
}

// hide 300x250 companion image ad
function hideAdCompAd()
{
	var oDiv = document.getElementById("iptvAdDiv");
	if(oDiv != null) oDiv.style.display = "none";
}
