﻿var pf_isBrowserIEOP = navigator.userAgent.toLowerCase().indexOf("msie") != -1 || navigator.userAgent.toLowerCase().indexOf("opera") != -1;

var pf_overlayPlayersCollection = new Array();
var pf_currentDraggablePlayer = null;
var pf_divMaximalZIndex = 230; 

function pf_PixelFishOverlayPlayer(sID, sOT, sV, sSRV, sVSRV, sW, sH, bPreview, bAllowM, bAllowR)
{
    var posInArray = -1;
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            posInArray = i;
            //Item already created
            break;
        }
    }
 
    if(posInArray != -1)
    { 
        return;        
    }
    
    posInArray = pf_overlayPlayersCollection.length;
     
    var pf_overlayPlayer = new Object();
    pf_overlayPlayer.ID = sID;
    var oDim = pf_getWindowDimensions();
    var itop = oDim.scrH/2 - sH/2 + oDim.scrollY;
    var ileft = oDim.scrW/2 - sW/2 + oDim.scrollX;
    //We need to store initial object's declaration because IE kills all flashvars after rendering and we will not be able to restore player correctly
    var sPFOverlayObject = "";
    var sPFOverlayDiv = "<div id='pf_overlayPlayer"+posInArray+"' style='position:absolute;width:" + sW + "px;height:" + sH + "px;top:" + itop + "px;left:" + ileft + "px;" + 
        "visibility:hidden;display:none;z-index:230;border:solid 0px none;margin:0px;padding:0px;background:Transparent none no-repeat fixed left top;'" + 
        ">";
    sPFOverlayObject += "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" width=\"100%\" height=\"100%\" id=\"FLVPlayer"+posInArray+"\">";
    sPFOverlayObject += "<param name=\"wmode\" value=\"transparent\">";
    sPFOverlayObject += "<param name=\"allowScriptAccess\" value=\"always\" />";
    sPFOverlayObject += "<param name=\"movie\" value=\"http://"+ sSRV +"/Files/pixelfishPlayer.swf\" />";
    sPFOverlayObject += "<param name=\"flashvars\" value=\"version="+sV+"&object_id="+sID+"&object_type="+sOT+"&server="+sVSRV+"&player_type=overlay";
    if(bPreview == true)
    {
        sPFOverlayObject += "&preview=1"
    }
    sPFOverlayObject += "\" />";
    sPFOverlayObject += "<param name=\"quality\" value=\"high\" />";
    sPFOverlayObject += "<param name=\"base\" value=\".\" />";
    sPFOverlayObject += "<embed src=\"http://"+ sSRV +"/Files/pixelfishPlayer.swf\" " + 
        "flashvars=\"version="+sV+"&object_id="+sID+"&object_type="+sOT+"&server="+sVSRV+"&player_type=overlay";
    if(bPreview == true)
    {
        sPFOverlayObject += "&preview=1"
    }
    sPFOverlayObject += "\" wmode=\"transparent\" quality=\"high\" width=\"100%\" height=\"100%\" name=\"FLVPlayer"+posInArray+"\" allowScriptAccess=\"always\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" base=\".\"/> ";
    sPFOverlayObject += "</object>";
    
    if(bAllowM == true)
        sPFOverlayObject += "<img src=\"http://"+ sSRV +"/Files/spacer.gif\" border='0' style=\"position:absolute;cursor:move;left:1px;top:1px;width:1px;height:1px;\" id='pf_overlayPlayer_movingArea"+posInArray+"' border='0' onmousedown='pf_overlayPlayerStartDrag(event,\"" + sID + "\")'>";
    if(bAllowR == true)
        sPFOverlayObject += "<img src=\"http://"+ sSRV +"/Files/spacer.gif\" border='0' style=\"position:absolute;right:0px;bottom:0px;width:0px;height:0px;cursor:se-resize;\" id='pf_overlayPlayer_resizeArea"+posInArray+"' border='0' onmousedown='pf_overlayPlayerStartResize(event,\"" + sID + "\")'>";
    sPFOverlayDiv += sPFOverlayObject;
    sPFOverlayDiv += "</div>";
    document.write(sPFOverlayDiv);
    pf_overlayPlayer.startW  = parseInt(sW,10);
    pf_overlayPlayer.startH  = parseInt(sH,10);
    pf_overlayPlayer.resizeArea = new Object();
    pf_overlayPlayer.resizeArea.size = 0;
    pf_overlayPlayer.movingArea = new Object();
    pf_overlayPlayer.movingArea.x = 0;
    pf_overlayPlayer.movingArea.y = 0;
    pf_overlayPlayer.movingArea.w = 0;
    pf_overlayPlayer.movingArea.h = 0;
    pf_overlayPlayer.objectDeclaration = sPFOverlayObject;
    pf_overlayPlayersCollection[posInArray] = pf_overlayPlayer;
}

function pf_showPlayerWindow(sID) 
{
    //Find pf_overlayPlayer object
    var pf_overlayPlayer = null;
    var posInArray = -1;
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            pf_overlayPlayer = pf_overlayPlayersCollection[i];
            posInArray = i;
            break;
        }
    }
    if(posInArray < 0)
    {
        return;        
    }

    pf_overlayPlayer.dragElement = document.getElementById("pf_overlayPlayer" + posInArray);

    //Restore object's div only for IE
    if(pf_isBrowserIEOP)
    {
        if(pf_overlayPlayer.dragElement.innerHTML == "" && pf_overlayPlayer.objectDeclaration != "")
            pf_overlayPlayer.dragElement.innerHTML = pf_overlayPlayer.objectDeclaration;
    }

    //Restore player's initial dimensions
    pf_overlayPlayer.dragElement.style.width = pf_overlayPlayer.startW + 'px';
    pf_overlayPlayer.dragElement.style.height = pf_overlayPlayer.startH + 'px';
    var oDim = pf_getWindowDimensions();
    var itop = oDim.scrH/2 - pf_overlayPlayer.startH/2 + oDim.scrollY;
    var ileft = oDim.scrW/2 - pf_overlayPlayer.startW/2 + oDim.scrollX;
    pf_overlayPlayer.dragElement.style.left = ileft + 'px';
    pf_overlayPlayer.dragElement.style.top = itop + 'px';
    pf_overlayPlayer.dragElement.style.zIndex = pf_divMaximalZIndex++;
    pf_overlayPlayer.dragElement.style.visibility = "";
    pf_overlayPlayer.dragElement.style.display = "";
    var oMovingArea = document.getElementById("pf_overlayPlayer_movingArea" + posInArray);
    var oResizeArea = document.getElementById("pf_overlayPlayer_resizeArea" + posInArray);
    pf_overlayPlayer.movingArea.dragElement = oMovingArea;
    pf_overlayPlayer.resizeArea.dragElement = oResizeArea;
    if(pf_overlayPlayer.dragElement != null && pf_overlayPlayer.dragElement.style.width != null && pf_overlayPlayer.dragElement.style.height != null)
    {
        pf_resizeMovingArea(pf_overlayPlayer, parseInt(pf_overlayPlayer.dragElement.style.width,10), parseInt(pf_overlayPlayer.dragElement.style.height,10));
    }
    else
    {
        pf_resizeMovingArea(pf_overlayPlayer, pf_overlayPlayer.startW, pf_overlayPlayer.startH);
    }
    pf_resizeResizeArea(pf_overlayPlayer);
}

function pf_closePlayerWindow(sID)
{
    //Find pf_overlayPlayer object
    var pf_overlayPlayer = null;
    var posInArray = -1;
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            pf_overlayPlayer = pf_overlayPlayersCollection[i];
            posInArray = i;
            break;
        }
    }
    if(pf_overlayPlayer == null)
    {
        return;        
    }
    pf_overlayPlayer.dragElement = document.getElementById("pf_overlayPlayer" + posInArray);
    pf_overlayPlayer.dragElement.style.visibility = "hidden";
    pf_overlayPlayer.dragElement.style.display = "none";
    //Remove player's object only for IE
    if(pf_isBrowserIEOP)
    {
        pf_overlayPlayer.dragElement.innerHTML = "";
    }
}

function pf_setMovingArea(sID, x, y, w, h)
{
    //Find pf_overlayPlayer object
    var pf_overlayPlayer = null;
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            pf_overlayPlayer = pf_overlayPlayersCollection[i];
            break;
        }
    }
    if(pf_overlayPlayer == null)
    {
        return;        
    }
    pf_overlayPlayer.movingArea.x = parseInt(x,10);
    pf_overlayPlayer.movingArea.y = parseInt(y,10);
    pf_overlayPlayer.movingArea.w = parseInt(w,10);
    pf_overlayPlayer.movingArea.h = parseInt(h,10);
    if(pf_overlayPlayer.dragElement != null && pf_overlayPlayer.dragElement.style.width != null && pf_overlayPlayer.dragElement.style.height != null)
    {
        pf_resizeMovingArea(pf_overlayPlayer ,parseInt(pf_overlayPlayer.dragElement.style.width,10), parseInt(pf_overlayPlayer.dragElement.style.height,10));
    }
    else
    {
        pf_resizeMovingArea(pf_overlayPlayer, pf_overlayPlayer.startW, pf_overlayPlayer.startH);
    }
}

function pf_setResizeArea(sID, size)
{
    //Find pf_overlayPlayer object
    var pf_overlayPlayer = null;
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            pf_overlayPlayer = pf_overlayPlayersCollection[i];
            break;
        }
    }
    if(pf_overlayPlayer == null)
    {
        return;        
    }
    pf_overlayPlayer.resizeArea.size = parseInt(size,10);
    pf_resizeResizeArea(pf_overlayPlayer);
}

function pf_resizeMovingArea(pf_overlayPlayer, fW, fH)
{
    if(pf_overlayPlayer.movingArea.dragElement != null)
    {
        pf_overlayPlayer.movingArea.dragElement.style.left = pf_overlayPlayer.movingArea.x >= 0 ? pf_overlayPlayer.movingArea.x + 'px' : (fW + pf_overlayPlayer.movingArea.x > 0 ? fW + pf_overlayPlayer.movingArea.x + 'px' : 0 + 'px');
        pf_overlayPlayer.movingArea.dragElement.style.top = pf_overlayPlayer.movingArea.y >= 0 ? pf_overlayPlayer.movingArea.y + 'px' : (fH + pf_overlayPlayer.movingArea.y > 0 ? fH + pf_overlayPlayer.movingArea.y + 'px' : 0 + 'px');
        pf_overlayPlayer.movingArea.dragElement.style.width = pf_overlayPlayer.movingArea.w >= 0 ? pf_overlayPlayer.movingArea.w + 'px' : (fW + pf_overlayPlayer.movingArea.w - parseInt(pf_overlayPlayer.movingArea.dragElement.style.left,10) > 0 ? (fW + pf_overlayPlayer.movingArea.w - parseInt(pf_overlayPlayer.movingArea.dragElement.style.left,10) + 'px') : 0 + 'px');
        pf_overlayPlayer.movingArea.dragElement.style.height = pf_overlayPlayer.movingArea.h >= 0 ? pf_overlayPlayer.movingArea.h + 'px' : (fH + pf_overlayPlayer.movingArea.h - parseInt(pf_overlayPlayer.movingArea.dragElement.style.top,10) > 0 ? (fH + pf_overlayPlayer.movingArea.h - parseInt(pf_overlayPlayer.movingArea.dragElement.style.top,10) + 'px') : 0 + 'px');
    }
}
function pf_resizeResizeArea(pf_overlayPlayer)
{
    var oResizeArea = pf_overlayPlayer.resizeArea.dragElement;
    if(oResizeArea != null)
    {
        oResizeArea.style.right = "0px";
        oResizeArea.style.bottom = "0px";
        oResizeArea.style.width = pf_overlayPlayer.resizeArea.size + "px";
        oResizeArea.style.height = pf_overlayPlayer.resizeArea.size + "px";
    }
}
function pf_closeAllOpenedPlayers()
{
    //Find pf_overlayPlayer object
    var pf_overlayPlayer = null;
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null)
        {
            pf_overlayPlayer = pf_overlayPlayersCollection[i];
            pf_overlayPlayer.dragElement = document.getElementById("pf_overlayPlayer" + i);
            pf_overlayPlayer.dragElement.style.visibility = "hidden";
            pf_overlayPlayer.dragElement.style.display = "none";
            //Remove player's object only for IE
            if(pf_isBrowserIEOP)
            {
                pf_overlayPlayer.dragElement.innerHTML = "";
            }
        }
    }
}
/*---WINDOW MOVING FUNCTIONALITY---*/
function pf_overlayPlayerStartDrag(event, sID)
{
    //Find pf_overlayPlayer object
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            pf_currentDraggablePlayer = pf_overlayPlayersCollection[i];
            break;
        }
    }
    if(pf_currentDraggablePlayer == null)
    {
        return;
    }
    var x, y;
    if(pf_isBrowserIEOP)
    {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    else
    {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }
    
    if(pf_currentDraggablePlayer.dragElement.style.zIndex != pf_divMaximalZIndex)
    {
        pf_currentDraggablePlayer.dragElement.style.zIndex = pf_divMaximalZIndex;
        for(var i=0; i<pf_overlayPlayersCollection.length; i++)
        {
            if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].dragElement != null && pf_overlayPlayersCollection[i].ID != pf_currentDraggablePlayer.ID)
            {
                pf_overlayPlayersCollection[i].dragElement.style.zIndex = parseInt(pf_overlayPlayersCollection[i].dragElement.style.zIndex,10) - 1; 
            }
        }
    }
    
    pf_currentDraggablePlayer.startX = x;
    pf_currentDraggablePlayer.startY = y;
    pf_currentDraggablePlayer.startLeft  = parseInt(pf_currentDraggablePlayer.dragElement.style.left, 10);
    pf_currentDraggablePlayer.startTop   = parseInt(pf_currentDraggablePlayer.dragElement.style.top,  10);

    if (isNaN(pf_currentDraggablePlayer.startLeft)) pf_currentDraggablePlayer.startLeft = 0;
    if (isNaN(pf_currentDraggablePlayer.startTop))  pf_currentDraggablePlayer.startTop = 0;
    
    if (pf_isBrowserIEOP) 
    {
        document.attachEvent("onmousemove", pf_overlayPlayerDrag);
        document.attachEvent("onmouseup",   pf_overlayPlayerDragStop);
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    else 
    {
        document.addEventListener("mousemove", pf_overlayPlayerDrag,   true);
        document.addEventListener("mouseup",   pf_overlayPlayerDragStop, true);
        event.preventDefault();
    }
}

function pf_overlayPlayerDrag(event)
{
    if(pf_currentDraggablePlayer == null)
    {
        return;
    }
    
    var x, y;
    if (pf_isBrowserIEOP) 
    {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    else 
    {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }
   
    pf_currentDraggablePlayer.dragElement.style.left = (pf_currentDraggablePlayer.startLeft + x - pf_currentDraggablePlayer.startX) + "px";
    pf_currentDraggablePlayer.dragElement.style.top  = (pf_currentDraggablePlayer.startTop  + y - pf_currentDraggablePlayer.startY) + "px";

    if (pf_isBrowserIEOP) 
    {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    else
    {
        event.preventDefault();
    }
}

function pf_overlayPlayerDragStop(event)
{
    if(pf_currentDraggablePlayer == null)
    {
        return;
    }
    if (pf_isBrowserIEOP) 
    {
        document.detachEvent("onmousemove", pf_overlayPlayerDrag);
        document.detachEvent("onmouseup",   pf_overlayPlayerDragStop);
    }
    else 
    {
        document.removeEventListener("mousemove", pf_overlayPlayerDrag,   true);
        document.removeEventListener("mouseup",   pf_overlayPlayerDragStop, true);
    }
    pf_currentDraggablePlayer = null;
}

/*---WINDOW RESIZE FUNCTIONALITY---*/
function pf_overlayPlayerStartResize(event, sID)
{
    //Find pf_overlayPlayer object
    for(var i=0; i<pf_overlayPlayersCollection.length; i++)
    {
        if(pf_overlayPlayersCollection[i] != null && pf_overlayPlayersCollection[i].ID == sID)
        {
            pf_currentDraggablePlayer = pf_overlayPlayersCollection[i];
            break;
        }
    }
    if(pf_currentDraggablePlayer == null)
    {
        return;
    }

    var x, y;
    if(pf_isBrowserIEOP)
    {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    else
    {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }
    pf_currentDraggablePlayer.startX = x;
    pf_currentDraggablePlayer.startY = y;
    
    pf_currentDraggablePlayer.startW  = parseInt(pf_currentDraggablePlayer.dragElement.style.width, 10);
    pf_currentDraggablePlayer.startH  = parseInt(pf_currentDraggablePlayer.dragElement.style.height,  10);

    if (isNaN(pf_currentDraggablePlayer.startW)) pf_currentDraggablePlayer.startW = 0;
    if (isNaN(pf_currentDraggablePlayer.startH))  pf_currentDraggablePlayer.startH = 0;
    
    if (pf_isBrowserIEOP) 
    {
        document.attachEvent("onmousemove", pf_overlayPlayerResize);
        document.attachEvent("onmouseup",   pf_overlayPlayerResizeStop);
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    else 
    {
        document.addEventListener("mousemove", pf_overlayPlayerResize,   true);
        document.addEventListener("mouseup",   pf_overlayPlayerResizeStop, true);
        event.preventDefault();
    }
}

function pf_overlayPlayerResize(event)
{
    if(pf_currentDraggablePlayer == null)
    {
        return;
    }

    var x, y;
    if (pf_isBrowserIEOP) 
    {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    else 
    {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }
    
    if(pf_currentDraggablePlayer.startW + x - pf_currentDraggablePlayer.startX >= 20)
    {
        pf_currentDraggablePlayer.dragElement.style.width = (pf_currentDraggablePlayer.startW + x - pf_currentDraggablePlayer.startX) + "px";
    }
    if(pf_currentDraggablePlayer.startH + y - pf_currentDraggablePlayer.startY >= 20)
    {
        pf_currentDraggablePlayer.dragElement.style.height  = (pf_currentDraggablePlayer.startH  + y - pf_currentDraggablePlayer.startY) + "px";
    }

    //plus, need to resize moving area
    pf_resizeMovingArea(pf_currentDraggablePlayer, parseInt(pf_currentDraggablePlayer.dragElement.style.width ,10), parseInt(pf_currentDraggablePlayer.dragElement.style.height, 10));

    if (pf_isBrowserIEOP) 
    {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    else
    {
        event.preventDefault();
    }
}

function pf_overlayPlayerResizeStop(event)
{
    if(pf_currentDraggablePlayer == null)
    {
        return;
    }
    if (pf_isBrowserIEOP) 
    {
        document.detachEvent("onmousemove", pf_overlayPlayerResize);
        document.detachEvent("onmouseup",   pf_overlayPlayerResizeStop);
    }
    else 
    {
        document.removeEventListener("mousemove", pf_overlayPlayerResize,   true);
        document.removeEventListener("mouseup",   pf_overlayPlayerResizeStop, true);
    }
    pf_currentDraggablePlayer = null;
}

function pf_getWindowDimensions()
{
    var ret = new Object();
    ret.scrH = screen.height;
    ret.scrW = screen.width;
    ret.scrollX = 0;
    ret.scrollY = 0;
    if(typeof( window.innerWidth ) == 'number') 
    {
        ret.scrW = self.innerWidth;
        ret.scrH = self.innerHeight;
    }
    else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
    {//IE 6 Strict Mode
        ret.scrW = document.documentElement.clientWidth;
        ret.scrH = document.documentElement.clientHeight;
    }
    else if (document.body && (document.body.clientWidth || document.body.clientHeight)) 
    {//Other IE
        ret.scrW = document.body.clientWidth;
        ret.scrH = document.body.clientHeight;
    }
    if (self.pageYOffset) // all except Explorer
    {
	    ret.scrollX = self.pageXOffset;
	    ret.scrollY = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop)
    // Explorer 6 Strict
    {
	    ret.scrollX = document.documentElement.scrollLeft;
	    ret.scrollY = document.documentElement.scrollTop;
    }
    else if (document.body) // all other Explorers
    {
	    ret.scrollX = document.body.scrollLeft;
	    ret.scrollY = document.body.scrollTop;
    }
    return ret;
}