function SPHost(hostId, brandName, placeHolder, startPageUrl)
{
    var STANDALONE_WINDOW_FEATURES = 'width=540,height=446,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no';

    var CURRENT_POSITION_QS = 'currentPosition';
    var POPPED_QS = 'popped';
    var HOST_ID_QS = 'hostId';
    
    this.hostId;
    this.brandName;
    this.placeHolder;
    this.startPageUrl;

    var _playerIframe;

    SPHost.prototype.createSyndicatedPlayer = function()
    {
        /*  build the header and its children  */
        var header = document.createElement( "div" );
        header.className = 'syndicatedPlayerHeader';

        var header_h3 = document.createElement( "h3" );
        header.appendChild( header_h3 );

        var header_a = document.createElement( "a" );
        this._setInnerText( header_a, this.brandName + " on Sky Player" );
        header_h3.appendChild( header_a );

        /*  build the player container  */
        var container = document.createElement( "div" );
        container.className = 'syndicatedPlayerContainer';

        var divTop = document.createElement( "div" ); divTop.className = "top";
        container.appendChild( divTop );
        var divLeft = document.createElement( "div" ); divLeft.className = "left";
        container.appendChild(  divLeft );

        _playerIframe = document.createElement( "iframe" );
        _playerIframe.className = 'middle';
        _playerIframe.setAttribute( "scrolling", 'no' );
        _playerIframe.setAttribute( "frameBorder", '0' );
        _playerIframe.src = this._buildPlayUrl( this.startPageUrl );
        container.appendChild( _playerIframe );

        divRight = document.createElement( "div" ); divRight.className = "right";
        container.appendChild( divRight );

        /*  add it to the page  */
        this.placeHolder.appendChild( header );
        this.placeHolder.appendChild( container );

    }
    
    this._setInnerText = function(element, value) {
        if(document.all)
           element.innerText = value;
        else
            element.textContent = value;
    }
    
    this._buildPlayUrl = function(baseUrl) {
        
        var qschar = baseUrl.indexOf("?")>=0 ? "&" : "?";
        return baseUrl += qschar + HOST_ID_QS + "=" + this.hostId;
    }
    
    this._buildPlayDetachedUrl = function(baseUrl) {
        
        return this._buildPlayUrl(baseUrl) 
            + "&" + CURRENT_POSITION_QS + '=0' 
            + '&' + POPPED_QS + '=true';
    }
    
    SPHost.prototype.play = function (baseUrl) {
        var fullUrl = this._buildPlayUrl(baseUrl);
        _playerIframe.src = fullUrl;
        return false;
    }
    
    SPHost.prototype.playDetached = function (baseUrl) {
        var fullUrl = this._buildPlayDetachedUrl(baseUrl);
        fullUrl = fullUrl.replace("playSyndicate", "detachedSyndicated");
        var uniqueWindowName = 'syndicatePlayer'+ Math.floor(Math.random() * 1000000);
		window.open( fullUrl, uniqueWindowName, STANDALONE_WINDOW_FEATURES);
        return false;
    }
    
}
