
var GnxEditor_CustomTagHelper=function(){

	this.context = arguments[0];
}

GnxEditor_CustomTagHelper.prototype = {

	context:null,
		
	properties:{
	
		src:null,
		width:null,
		height:null,
		template:null
	},
	
	ReplaceToCustomTag:function(){
	
		for ( key in this.Components )
			this.Components[key].Replace.call(this,null);		
	},
	
	LoadProperties:function(item){
	
		for ( key in this.properties )
			this.properties[key] = (!System.Util.IsUndefined(item[key])) ? item[key] : null;
	},
	
	AssignComponent:function(item,creator){
		
		item.parentNode.replaceChild(creator.call(this,[]),item);
	},
	
	Components:{
			
		Media:{
			
			Replace:function(){
				
				var items = this.context.getElementsByTagName("GnxMedia");
					
				for ( var i = 0; i < items.length; i++ )
				{
					var item = items[i];
					
					this.LoadProperties(item);
					this.AssignComponent(item,function(){
					
						var ctrl = System.Util.CreateControl
						( 
							[ { 
								id:"g_dvMediaContainer", 
								type:System.Properties.HtmlControl.div, 
								extend:GnxEditor_PlayerHelper.Form 
							} ] 
						);
						
						ctrl.g_dvMediaContainer.CreateControls();
						ctrl.g_dvMediaContainer.InitializeControls();
						
						ctrl.g_dvMediaContainer.SetUrl(this.properties.src);
						
						return ctrl.g_dvMediaContainer;						
					});					
				}
			}
		},
		
		Script:{
		
			Replace:function(){
				
				var items = this.context.getElementsByTagName("GnxScript");
					
				for ( var i = 0; i < items.length; i++ )
				{
					var item = items[i];
					
					this.LoadProperties(item);
					this.AssignComponent(item,function(){
					
						var ctrl = System.Util.CreateControl
						( 
							[ { 
								id:"g_dvMediaContainer", 
								type:System.Properties.HtmlControl.div, 
								extend:GnxEditor_PlayerHelper.Form 
							} ] 
						);
						
						ctrl.g_dvMediaContainer.CreateControls();
						ctrl.g_dvMediaContainer.InitializeControls();
						
						ctrl.g_dvMediaContainer.SetUrl(this.properties.src);
						
						return ctrl.g_dvMediaContainer;						
					});					
				}
			}
		},
		
		StyleSheet:{
		
			Replace:function(){
				
				var items = this.context.getElementsByTagName("GnxStyleSheet");
					
				for ( var i = 0; i < items.length; i++ )
				{
					var item = items[i];
					
					this.LoadProperties(item);
					this.AssignComponent(item,function(){
					
						var ctrl = System.Util.CreateControl
						( 
							[ { 
								id:"g_dvMediaContainer", 
								type:System.Properties.HtmlControl.div, 
								extend:GnxEditor_PlayerHelper.Form 
							} ] 
						);
						
						ctrl.g_dvMediaContainer.CreateControls();
						ctrl.g_dvMediaContainer.InitializeControls();
						
						ctrl.g_dvMediaContainer.SetUrl(this.properties.src);
						
						return ctrl.g_dvMediaContainer;						
					});					
				}
			}
		}		
	}
};
