function formatTime(nSec) {
	var sTm="",nBuf,sLbl="dhms";
	var anSec=new Array(86400,3600,60,1);
	for (var i=0;i<4;++i) {
		if (((nBuf=Math.floor(nSec/anSec[i]+(anSec[i]==1?.5:0)))>0)||(sTm!="")) {
			sTm+=nBuf+sLbl.charAt(i)+" ";
			nSec-=nBuf*anSec[i];
		}
	}
	if (sTm=="") sTm="<1s";
	return sTm;
}

function formatSize(nSize) {
	// find unit
	var asUnit=new Array('B','KB','MB','GB');
	var nBase,sVal="0";
	for (var nExp=asUnit.length-1;nExp>=0;--nExp) {
		if (nSize>=(nBase=Math.pow(1024,nExp))) {
			sVal=(nSize/nBase)+"";
			break;
		}
	}
	// decimal places
	var nDec;
	if ((nDec=sVal.indexOf('.'))==-1) sVal+='.';
	while(sVal.length<nDec+2) sVal+='0';
	if (sVal.length>nDec+2) {
		if (((sVal.substring(0,nDec+2)+'5')*1)<=sVal*1)
			sVal=""+((sVal.substring(0,nDec+2)*1)+.1);
	}
	sVal=sVal.substring(0,nDec+2);
	// return formatted string
	if (nExp<0) nExp=0;
	return sVal + " " + asUnit[nExp];
}

function setCookie(sName,sValue,nSecExpire,sPath) {
	document.cookie=sName+"="+escape(sValue)+((nSecExpire==null)?"":("; expires=" +(new Date((new Date).getTime()+nSecExpire*1000)).toGMTString()))+(sPath?"; path="+sPath:"");
}

function getCookie(sName) {
	var nOfs,nEnd,sCookie=document.cookie;
	if ((nOfs=sCookie.indexOf(sName+"="))!=-1) {
		nOfs+=sName.length+1;
		if ((nEnd=sCookie.indexOf(";",nOfs))==-1)
			nEnd=sCookie.length;
		return unescape(sCookie.substring(nOfs, nEnd));
	} 
}

function setDlTime(FormId) {
	var frm=document.forms['frmDlTime_'+FormId];
	var nSpeed=frm['speed'].value*1;//frm.elements('speed').value*1;
	var sSizes=frm['size'].value;//frm.elements('size').value;
	var optCPath=frm['cpath'];//frm.elements('cpath');
	var sCPath='';
	if (optCPath) sCPath=optCPath.value;
	var optCExpire=frm['cexpire'];//frm.elements('cexpire');
	var nCExpire=null;
	if (optCExpire) nCExpire=optCExpire.value*86400;
	setCookie('dl_speed_'+FormId,nSpeed,nCExpire,sCPath);
	// for every download
	var nOfs=0,nEnd,nSep;
	var sName,nSize;
	var divOut;
	while (nOfs<sSizes.length) {
		if ((nEnd=sSizes.indexOf(',',nOfs))==-1)
			nEnd=sSizes.length;
		if ((nSep=sSizes.indexOf('=',nOfs))!=-1) {
			sName=sSizes.substring(nOfs,nSep);
			nSize=sSizes.substring(nSep+1,nEnd)*1;
			if (divOut=document.getElementById(sName+"_time_"+FormId))
				divOut.innerHTML=formatTime((nSize*8/(nSpeed*1024)));
			if (divOut=document.getElementById(sName+"_size_"+FormId))
				divOut.innerHTML=formatSize(nSize);
		}
		nOfs=nEnd+1;
	}
}

function setDlSpeedByCookie(FormId) {
//	var selSpeed=document.forms["frmDlTime_"+FormId].elements('speed');
	var selSpeed=document.forms["frmDlTime_"+FormId]['speed'];
	var sDlSpeed=getCookie('dl_speed_'+FormId);
	for (i=0;i<selSpeed.options.length;++i) {
		if (selSpeed.item(i).value==sDlSpeed) {
			selSpeed.selectedIndex=i;
			break;
		}
	}
	setDlTime(FormId);
}
/*
// Calls initialization somewhen after the forms...
setDlSpeedByCookie('2k');
setDlSpeedByCookie('98');
*/
