DG_CF.JsNum=0;
DG_CF.LoadWidgets=function(wcs)
{
	if(!wcs)return;
    for(var i=0;i<wcs.length;i++)
    {
		var w=wcs[i];
		DG_CF.LoadWidget(w);
    }
}
DG_CF.LoadWidget=function(d,dgt,pp,dobj)
{
	if(DG_IsInitClass(d,dgt))return;
	var wr=new DG_WidgetReg(DG_CF.JsNum,d,dgt,pp,dobj);
	DG_CF.Widgets[DG_CF.JsNum]=wr;
	DG_CF.JsNum++;

	wr.CreateScript();
}

function DG_WidgetReg(commId,div,dgType,pp,dobj)
{
	if(!div)throw("");
	this.m_commId=commId;
	this.div=div;
	this.dgType=dgType;
	this.template;
	this.onload=(pp)?pp["onload"]:null;
	var m_time=new Date();
	this.m_data=SplitData(dobj);
	var currentInx=0;
	var m_cacheID="";

	this.OnLoadWidget0=function(i,guid)
	{
		m_cacheID=guid;
		currentInx++;
		var n=this.m_data.lenght;
		if(currentInx<n)
		{
			this.CreateScript();
		}
		else
		{
			this.CreateScript();
		}
	}
	
	this.OnLoadWidget=function(wt)
	{
		var id="dgJS_"+this.m_commId;
		DG_CleanUp(this.div,id);
		this.template=wt;
		var render=new DG_Render(this.template);
		render.Render(this.div);
		if(this.onload)
			this.onload(this.div);	
		
		var n=this.div.getAttributeNode('OnLoadWidget');
		var fnc=(n&&n.value)?n.value:null;
		var fnc1;
//		eval("fnc1=OnLoadWidget");
//		if(fnc1)fnc1(this.div);
//		if(this.div.OnLoadWidget) alert(this.div.OnLoadWidget);
//		this.div.OnLoadWidget(this.div);

		DG_CF.Widgets[this.m_commId]=null;
	}
	
	this.OnLoadWidget2=function(wt)
	{
		alert(wt);
		w.ApplyClass(wt);
	}

	function SplitData(obj)
	{
		var m_size=1024; // IE limit on URL is 2048, and we need some room for our own parameters, say 500 bytes 
		var sobj=DG_CF.Obj2Str(obj);
		var dat=DG_Base64.encode(sobj);
		var len=(dat)?dat.length:0;
		var n=parseInt(len/m_size);if(len>n*m_size)n++;
		var m_msgs=new Array(n);
		var inx=1;
		for(var i=0;i<n;i++)
		{
			var n0=i*m_size;
			m_msgs[i] = dat.substring(n0,n0+m_size);
		}
		return m_msgs; 
	}
	
	this.CreateScript=function()
	{
		var n=this.m_data.length;
		var dgSrv=this.div.getAttributeNode("dgSrv");
		var srv=DG_ImgSrvUrl+"PageServer.ashx?cmd=55";
		if(dgSrv)
			srv=DG_CF.Servers[dgSrv.nodeValue];
		var url=srv+"&guid="+this.dgType+"&cid="+m_cacheID+"&c="+this.m_commId+"&n="+n+"&i="+currentInx+"&ts="+(new Date).getTime();
		var dat=this.m_data[currentInx];
		if(dat)url+="&d="+dat;

		var js=DG_CreateScriptTag("dgJS_"+this.m_commId,this.div);
		js.src=url;
	}
}

DG_CF.Obj2Str=function(o)
{
	if(!o)return "null";
	var	t=typeof(o);
	var	b=(o.length=='undefined');
	if(o.dgType=="array")t="array";
	switch(t)
	{
		case "string":	return "'"+o+"'";
		case "number":	return ""+o;
	case "array":
	{
		var	s="[";
		var	n=o.length;
		for(var	i=0;i<n;i++)
		{
			var	o1=o[i];
			if(i!=0)s+=",";
			s+=DG_CF.Obj2Str(o1);
		}
		return s+"]";
	}
	case "object":
	{
		var	s="{";
		for(var	n in o)
		{
			var	o1=o[n];
			if(typeof(o1)=="function")continue;
			s+=	n+":"+DG_CF.Obj2Str(o1)+",";
		}
		return s+"}";
	}
	case "function": return "";
	default:"?"; break;
	}
}

