classes

EmbedCode.as

Stiahnuť EmbedCode.as

package sk.yoz.html
{
    import flash.display.LoaderInfo;
    import flash.net.URLVariables;
    
    public class EmbedCode extends Object
    {
        private var _params:Object = {};
        private var _flashVars:URLVariables;
        private var _width:uint;
        private var _height:uint;
        private var _url:String;
        
        private var loaderInfo:LoaderInfo;
        private var parameters:Object;
        
        public var encodeAmpersands:Boolean = false;
        
        public function EmbedCode(loaderInfo:LoaderInfo = null, parameters:Object = null)
        {
            super();
            this.loaderInfo = loaderInfo;
            this.parameters = parameters;
            
            useActualURL();
            useActualFlashVars();
        }
        
        public static function suggest(loaderInfo:LoaderInfo = null, parameters:Object = null, 
            encodeAmpersands:Boolean = false):EmbedCode
        {
            var embedCode:EmbedCode = new EmbedCode(loaderInfo, parameters);
            embedCode.encodeAmpersands = encodeAmpersands;
            embedCode.useActualURL();
            embedCode.useActualSize();
            embedCode.useActualFlashVars();
            return embedCode;
        }
        
        public static function containsProtocol(path:String):Boolean
        {
            return path.indexOf("http://") == 0 || path.indexOf("https://") == 0;
        }
        
        public static function urlToDomain(url:String):String
        {
            if(!containsProtocol(url))
                return null;
            var index:int = url.indexOf("/", 9);
            if(index == -1)
                return null;
            return url.substr(0, index);
        }
        
        public function get domain():String
        {
            return urlToDomain(url);
        }
        
        public function addParam(param:String, value:String):void
        {
            _params[param] = value;
        }
        
        public function set params(value:Object):void
        {
            _params = value;
        }
        
        public function get params():Object
        {
            return _params;
        }
        
        public function addFlashVar(variable:String, value:String):void
        {
            if(!flashVars)
                flashVars = new URLVariables();
            _flashVars[variable] = value;
        }
        
        public function set flashVars(value:URLVariables):void
        {
            _flashVars = value;
        }
        
        public function get flashVars():URLVariables
        {
            return _flashVars;
        }
        
        public function get flashVarsQueryString():String
        {
            var queryString:String = flashVars.toString();
            if(encodeAmpersands)
                queryString = queryString.replace(/\&/g, "&");
            return queryString;
        }
        
        public function set width(value:uint):void
        {
            _width = value;
        }
        
        public function get width():uint
        {
            return _width;
        }
        
        public function set height(value:uint):void
        {
            _height = value;
        }
        
        public function get height():uint
        {
            return _height;
        }
        
        public function set url(value:String):void
        {
            _url = value;
        }
        
        public function get url():String
        {
            return _url;
        }
        
        public function toString():String
        {
            var key:String;
            var r:String = '';
            r += '<object width="' + width + '" height="' + height + '">';
            
            r += '<param name="movie" value="' + url + '"></param>';
            for(key in params)
                r += '<param name="' + key + '" value="' + params[key] + '"></param>';
            if(flashVars)
                r += '<param name="FlashVars" value="' + flashVarsQueryString + '"></param>';
                
            r += '<embed src="' + url + '" width="' + width + '" height="' + height + '" type="application/x-shockwave-flash"';
            for(key in params)
                r += ' ' + key + '="' + params[key] + '" ';
            if(flashVars)
                r += ' FlashVars="' + flashVarsQueryString + '" ';
            r += '></embed>';
            
            r += '</object>';
            return r;
        }
        
        public function useActualURL():void
        {
            if(!loaderInfo)
                return;
            url = loaderInfo.url;
        }
        
        public function useActualSize():void
        {
            if(!loaderInfo)
                return;
            width = loaderInfo.width;
            height = loaderInfo.height;
        }
        
        public function useActualFlashVars():void
        {
            flashVars = new URLVariables();
            if(!parameters)
                return;
            for(var key:String in parameters)
                addFlashVar(key, parameters[key]);
        }
    }
}