// Copyright (c) Kaspersky Lab 1997-2006. Portions Copyright (c) Lan Crypto.  All rights reserved.

/*-------------------------------------------------------------------------
 *	EULA PANEL
 *-------------------------------------------------------------------------*/
var detect = navigator.userAgent.toLowerCase();
var OS, browser, version, total, thestring;
var initTimer = 0;		// identifier that cancels the init timer
var timeout = 0;		// wait to load ActiveX
var started = 0;		// ActiveX is started

function checkVersion()
{
	// detect browser used and version
	
	if( checkIt('konqueror') )
	{
		browser = "Konqueror";
		OS = "Linux";
	}
	else if( checkIt('safari') ) browser = "Safari";
	else if( checkIt('omniweb') ) browser = "OmniWeb";
	else if( checkIt('opera') ) browser = "Opera";
	else if( checkIt('webtv') ) browser = "WebTV";
	else if( checkIt('icab') ) browser = "iCab";
	else if( checkIt('msie') ) browser = "Internet Explorer";
	else if( !checkIt('compatible') )
	{
		browser = "Netscape Navigator"
		version = detect.charAt(8);
	}
	else browser = "unknown";

	if( !version ) version = detect.charAt(place + thestring.length);

	if( !OS )
	{
		if( checkIt('linux') ) OS = "Linux";
		else if( checkIt('x11') ) OS = "Unix";
		else if( checkIt('mac') ) OS = "Mac";
		else if( checkIt('win') ) OS = "Microsoft Windows";
		else OS = "unknown";
	}

	if( browser != "Internet Explorer" ) {
		alert( CKECK_BROWSER_VERSION_NOT_IE_1 + OS + CKECK_BROWSER_VERSION_NOT_IE_2 + browser + CKECK_BROWSER_VERSION_NOT_IE_3 );
		window.close();
	}
	else {
		document.all.item('eulaPage').style.display='none';
		document.all.item('kwsPage').style.visibility='visible';
		document.body.bgColor="#EFEBDE";

		progress_bar(document.all.item('progressInit'), 'progressInit', 20);
		progress_bar(document.all.item('progressUpdate'), 'progressUpdate', 20);
		progress_bar(document.all.item('progressScan'), 'progressScan', 32);

		var text = "";
		var indx = detect.indexOf("windows") + 8;
		var osVer = detect.substr(indx, 2);

		text += "<OBJECT id='kavscanner' codebase='";

		text += "kavwebscan_unicode.cab";

		text += "#version=5,0,98,0' classid='CLSID:0EB0E74A-2A76-4AB3-A7FB-9BD8C29F7F75' style='font:normal 8pt Arial; width:100%; height:30px'></OBJECT>";

		document.all.item("kwsActiveXScanner").outerHTML = text;
		initTimer = window.setInterval("initialize()", 1000);
		
		progress_init("progressInit", 20);
		progressTimer = window.setInterval("progress_roll()", 200); 	// start progress bar
	}

	return false;
}

function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

/*-------------------------------------------------------------------------
 *	Initialize and Download PANEL
 *-------------------------------------------------------------------------*/

var updating = 1;		// updating KAV Bases
var scanning = 0;		// scan process started
var stopscan = 0;		// scan has been stopped
var oInterval = "";		// show statistics interval
var scanTime = 0;		// scan time counter
var rptUpdScroll = 0;	// auto scroll report Update window
var eventsTimerID = 0;	// identifier that cancels the events timer

var progressTimer = 0;		// identifier that cancels the timer
var progressEnd = 20;		// number of progress bar blue rectangles
var progressName = "";		// name of the working progress bar

window.onunload = function()
{
	if( eventsTimerID != 0 ) window.clearInterval(eventsTimerID);
	if( progressTimer != 0 ) window.clearInterval(progressTimer);
	if( oInterval != 0 ) window.clearInterval(oInterval);
	if( initTimer != 0 ) window.clearInterval(initTimer);
}

window.onresize = function()
{
	var bIsSP2 = (window.navigator.userAgent.indexOf("SV1")!= -1);
	window.resizeTo(755, 620 + (bIsSP2 ? 30 : 0));
}

document.onkeydown = function()
{
	// block Ctrl+N
	if ((event.keyCode == 78) && (event.ctrlKey)) {
		event.cancelBubble = true;
		event.returnValue = false;
		event.keyCode = false;
		return false;
	}
}

function initialize()
{
	if( (document.kavscan.kavscanner.readyState == 4) && 
	    	(typeof(document.kavscan.kavscanner.state) != "undefined") && 
			(typeof(document.kavscan.kavscanner.state) != "unknown") ) {
		if( document.kavscan.kavscanner.state == 200 ) { // started

			sendDataToKWS();

			document.all.item("kwsActiveXReport").outerHTML = "<OBJECT id='kavreport' style='position:absolute; font:normal 8pt Arial; width:0px; height:0px' classid=CLSID:6117669B-8C2D-41FA-A6D9-9E484B999CF0></OBJECT>";
			document.kavscan.kavscanner.initializeReport(document.kavscan.kavreport);
			
			window.clearInterval(initTimer);
			progress_stop('progressInit', 20, true);

			// set statistics Server address
			document.kavscan.kavscanner.statisticsServer="http://192.168.0.2/kavwebscan";

			document.all.item("imgCheckInit").src="images/enabled.gif";
			updateReport("reportUpdate", INIT_SUCCESS_DO_UPDATE);

			// update KAV bases
			progress_init("progressUpdate", 20);
			oInterval = window.setInterval("ShowUpdateStats()", 200);
			eventsTimerID = window.setInterval("checkEvents()", 1);
			document.kavscan.kavscanner.update();

			started = 1;
		}
		else {
			if( document.kavscan.kavscanner.state == 3 ) { // error
				errorUnknown(0);
			}
		}
	}
	else {
		if( timeout <= 300000 ) {
			timeout += 1000;
			return;
		}
		else {
			window.clearInterval(initTimer);
			progress_stop('progressInit', 20, true);
			document.all.item("imgCheckInit").src="images/disabled.gif";
			updateReport("reportUpdate", INIT_FAILED_REPORT);
			document.kavscan.btNextInit.value=BUTTON_EXIT;
			document.kavscan.btNextInit.disabled=false;
		}
	}
}

function onNextInit()
{
	if( started == 0 || updating == 1 ) {
		window.close();
	}
	else {
		document.all.item("panelInit").style.visibility="hidden";
		document.all.item("panelTarget").style.visibility="visible";
	}
}

function ShowUpdateStats()
{
	progress_to("progressUpdate", 20, document.kavscan.kavscanner.updProcent);
	document.all.item("kwsUpdateProgress").innerText = ' [' + document.kavscan.kavscanner.updProcent + '%]';
}

/*-------------------------------------------------------------------------
 *	Target Selection PANEL
 *-------------------------------------------------------------------------*/

function setScanTarget(target)
{
	var tergetSelected = 0;
	tergetSelected = document.kavscan.kavscanner.setTarget(target);

	if( tergetSelected == 1 ) {
		document.all.item("panelTarget").style.visibility="hidden";
		document.all.item("panelScan").style.visibility="visible";
		document.all.item("kwsScanProgress").style.visibility="visible";
		
		// start to scan
		document.all.item("selectedTarget").innerHTML=document.kavscan.kavscanner.list;
		scanning = 1;
		scanTime = 0;
		progress_init("progressScan", 32);
		progressTimer = window.setInterval("progress_roll()", 200); 	// start progress bar
		document.all.item("scanLabel").innerHTML="<b>" + SCAN_INITIALIZE + "</b>";
		eventsTimerID = window.setInterval("checkEvents()", 100);
		document.kavscan.kavscanner.scan(1);
	}

	return false;
}

function onScanSettings()
{
	document.all.item("kavdatabases")[document.kavscan.kavscanner.getAVdatabase].checked=true;
	
	document.all.item("bArchives").checked = document.kavscan.kavscanner.getScanArch;
	document.all.item("bMailBases").checked = document.kavscan.kavscanner.getScanMail;
/*	
	// Statistics disabled

	document.all.item("bEnableStat").checked = document.kavscan.kavscanner.getEnableStat;
	document.all.item("bPromptStat").checked = document.kavscan.kavscanner.getPromptStat;
*/
	document.all.item("kwsTable").style.display="none";
	document.all.item("kwsScanSettings").style.visibility='visible';
}

/*-------------------------------------------------------------------------
 *	Scan Settings PANEL
 *-------------------------------------------------------------------------*/

function onSettingsOK()
{
	document.all.item("kwsTable").style.display="block";
	document.all.item("kwsScanSettings").style.visibility='hidden';
}

/*-------------------------------------------------------------------------
 *	Scan and Report PANEL
 *-------------------------------------------------------------------------*/

var expandedReport = 0;
var firstShowStats = true;
var report_item = null;
var report_saved = false;

function ShowStats()
{
	if( firstShowStats == true ) {
		progress_init("progressScan", 32);
		document.all.item("scanLabel").innerHTML="<b>" + SCAN_PROGRESS + "</b> [<span id=\"kwsProgress\"></span>%]:";
		firstShowStats = false;
	}
	progress_to("progressScan", 32, document.kavscan.kavscanner.nrProcent);
	if( document.all.item("kwsProgress") != null )
		document.all.item("kwsProgress").innerText=document.kavscan.kavscanner.nrProcent;
	
	document.all.item("nr_objs").innerText=document.kavscan.kavscanner.nrObjs;
	document.all.item("nr_body").innerText=document.kavscan.kavscanner.nrBody;
	document.all.item("nr_infe").innerText=document.kavscan.kavscanner.nrInfe;
	document.all.item("nr_susp").innerText=document.kavscan.kavscanner.nrSusp;

	if( document.all.item("nr_body").innerText != 0 ) {
		document.all.item("nr_body").style.color="#FF0000";
		document.all.item("nr_body_text").style.color="#FF0000";
	}
	if( document.all.item("nr_infe").innerText != 0 ) {
		document.all.item("nr_infe").style.color="#FF0000";
		document.all.item("nr_infe_text").style.color="#FF0000";
	}
	if( document.all.item("nr_susp").innerText != 0 ) {
		document.all.item("nr_susp").style.color="#FF0000";
		document.all.item("nr_susp_text").style.color="#FF0000";
	}

	if (scanning != 1) {
		document.all.item("nr_time").innerText=formatTime(Math.floor(document.kavscan.kavscanner.nrTime/1000));
	}
	else {
		document.all.item("nr_time").innerText=formatTime(scanTime++);
	}
}

function getSelectedNumber()
{
	var count = document.kavscan.kavreport.getSelectedObjectsCount();
	document.all.item("selectedObjects").innerText = count;
}

function onStopScan()
{
	switch( scanning ) {
		case 1:  // stop scan
			document.kavscan.btStopScan.disabled=true;
			document.kavscan.kavscanner.scan(0);
			stopscan = 1;
			break;

		case 2:  // new scan
			if( (report_saved == false) && 
				((document.all.item("nr_infe").innerText != 0) ||
				(document.all.item("nr_susp").innerText != 0)) ) {
				if( confirm( REPORT_NOT_SAVED ) == false )
					break;
			}

			if( oInterval != 0 ) window.clearInterval(oInterval);

			document.all.item("kwsAdvancedReport").style.visibility="hidden";
			document.all.item("kwsEmptyReport").style.visibility="hidden";
			document.all.item("imgCheckScan").src="images/scan.gif";

			document.all.item("panelScan").style.visibility="hidden";
			document.all.item("panelTarget").style.visibility="visible";

			document.all.item("selectedTarget").innerText="";
			document.all.item("selectedObjects").innerText = 0;

			document.kavscan.kavreport.style.height = 0;
			document.kavscan.kavreport.style.width = 0;	

			document.kavscan.btStopScan.value = BUTTON_STOPSCAN;
			document.kavscan.btStopScan.disabled=false;

			document.all.item("nr_objs").innerText="0";
			document.all.item("nr_body").innerText="0";
			document.all.item("nr_infe").innerText="0";
			document.all.item("nr_susp").innerText="0";
			document.all.item("nr_time").innerText="00:00:00";

			document.all.item("nr_body").style.color="#000000";
			document.all.item("nr_infe").style.color="#000000";
			document.all.item("nr_susp").style.color="#000000";
			document.all.item("nr_body_text").style.color="#000000";
			document.all.item("nr_infe_text").style.color="#000000";
			document.all.item("nr_susp_text").style.color="#000000";
			
			if( document.all.item("kwsProgress") != null )
				document.all.item("kwsProgress").innerText=0;
			progress_init("progressScan", 32);

			scanning = 0;
			stopscan = 0;
			firstShowStats = true;

			break;
			
		case 3: // exit
			window.close();
			break;
	}
	
	return false;
}

function ShowAdvReport()
{
	if( document.kavscan.kavreport.getObjectsCount() == 0 )
	{
		// show empty report
		document.all.item("kwsAdvancedReport").style.visibility="hidden";
		document.all.item("kwsEmptyReport").style.visibility="visible";
		return false;
	}

	var emptyReport = document.all.item("kwsEmptyReport");
	var advancedReport = document.all.item("kwsAdvancedReport");
	advancedReport.style.visibility="visible";

	advancedReport.style.top = 138;
	advancedReport.style.left = 18;
	advancedReport.style.height = emptyReport.offsetHeight;
	advancedReport.style.width = emptyReport.offsetWidth;	

	var advancedReportObj = document.all.item("advancedReport");

	document.kavscan.kavreport.style.top = 158;
	document.kavscan.kavreport.style.left = 18;
	document.kavscan.kavreport.style.height = advancedReportObj.offsetHeight;
	document.kavscan.kavreport.style.width = advancedReportObj.offsetWidth;	
	document.kavscan.kavreport.focus();

	oInterval = window.setInterval("getSelectedNumber()", 500);

	return false;
}

function onSelectAll()
{
	document.kavscan.kavreport.selectAll();
	document.title=PRODUCT_NAME; // fix: IE 5: changes the title when opening a link
	return false;
}

function onSelectNone()
{
	document.kavscan.kavreport.selectNone();
	document.title=PRODUCT_NAME; // fix: IE 5: changes the title when opening a link
	return false;
}

function onSelectSuspicious()
{
	document.kavscan.kavreport.selectSuspicious();
	document.title=PRODUCT_NAME; // fix: IE 5: changes the title when opening a link
	return false;
}

function onSendSelected()
{
	document.kavscan.kavreport.sendSelected();
	return false;
}

function onSaveReport()
{
	report_saved = document.kavscan.kavreport.writeReport();
	
	return false;
}

function onExpandReport()
{
	var advancedReport = document.all.item("kwsAdvancedReport");
	var reportFrame = null;
	
	if( expandedReport == 0 ) {
		document.kavscan.btExpandReport.value=BUTTON_COLLAPSE;
		
		advancedReport.style.top = 82;
		advancedReport.style.left = 18;

		document.all.item("kwsTable").style.visibility='hidden';
		document.all.item("kwsInfoPanel").style.visibility='hidden';
		document.all.item("panelScan").style.visibility='hidden';
		document.all.item("kwsExpandedReport").style.visibility='visible';

		reportFrame = document.all.item("kwsReportFrame");
	}
	else {

		document.kavscan.btExpandReport.value=BUTTON_EXPAND;

		advancedReport.style.top = 138;
		advancedReport.style.left = 18;

		document.all.item("kwsExpandedReport").style.visibility='hidden';
		document.all.item("kwsTable").style.visibility='visible';
		document.all.item("kwsInfoPanel").style.visibility='visible';
		document.all.item("panelScan").style.visibility='visible';
		
		reportFrame = document.all.item("kwsEmptyReport");
	}

	advancedReport.style.height = reportFrame.offsetHeight;
	advancedReport.style.width = reportFrame.offsetWidth;
	
	advancedReport.style.visibility="visible";

	var advancedReportObj = document.all.item("advancedReport");
	
	document.kavscan.kavreport.style.top = ( expandedReport == 0 ) ? 102 : 158;
	document.kavscan.kavreport.style.height = advancedReportObj.offsetHeight;
	document.kavscan.kavreport.style.width = advancedReportObj.offsetWidth;	
	document.kavscan.kavreport.focus();

	expandedReport = !expandedReport;

	return false;
}

/*-------------------------------------------------------------------------
 *	Common functions
 *-------------------------------------------------------------------------*/

function openPage(page)
{
	window.open(page, "_blank");
	document.title=PRODUCT_NAME; // fix: IE 5: changes the title when opening a link
	return false;
}

function formatTime(nr_seconds)
{
	var s = "";
	var c = ":";
	var hours = 0;
	var minutes = 0;
	var seconds = 0;

	hours = Math.floor(nr_seconds / 3600);
	minutes = Math.floor((nr_seconds % 3600) / 60);
	seconds = nr_seconds % 60;

	if( hours < 10 )
		s += '0';
	s += hours + c;
	if( minutes < 10 )
		s += '0';
	s += minutes + c;
	if( seconds < 10 )
		s += '0';
	s += seconds;

	return s;
}

/*-------------------------------------------------------------------------
 *	ActiveX fired events
 *-------------------------------------------------------------------------*/

function checkEvents()
{
	if( /*( document.readyState != "complete" ) ||*/
		( typeof(document.kavscan.kavscanner) == "undefined") && 
		( typeof(document.kavscan.kavscanner) == "unknown") )
		return;
		
	switch( document.kavscan.kavscanner.state ) {
		case 3: errorUnknown(1)
			break
		case 201: reportupdate();
			break;
		case 202: reportscan();
			break;
		case 203: cancelupdate();
			break;
		case 204: endupdate();
			break;
		case 205: endscansize();
			break;
		case 206: endscan();
			break;
	}

	document.kavscan.kavscanner.state = 0;
}

function errorUnknown(errType)
{
	switch( errType ) {
		case 0: // initialize
			if( initTimer != 0) window.clearInterval(initTimer);
			progress_stop('progressInit', 20, true);
			document.all.item("imgCheckInit").src="images/disabled.gif";
			reportupdate();
			document.kavscan.btNextInit.value=BUTTON_EXIT;
			document.kavscan.btNextInit.disabled=false;
			break;

		case 1: // update or scan
			if( updating == 1 ) {
				if( eventsTimerID != 0 ) window.clearInterval(eventsTimerID);
				if( oInterval != 0 ) window.clearInterval(oInterval);
				progress_stop('progressUpdate', 20, true);
				document.all.item("kwsUpdateProgress").innerText = ' [100%]';
				document.all.item("imgCheckUpdate").src="images/disabled.gif";
				reportupdate();
				document.kavscan.btNextInit.value=BUTTON_EXIT;
				document.kavscan.btNextInit.disabled=false;
			}
			else {
				if( eventsTimerID != 0 ) window.clearInterval(eventsTimerID);
				if( oInterval != 0 ) window.clearInterval(oInterval);
				scanning = 3; // exit
				document.all.item("scanReport").innerHTML=document.kavscan.kavscanner.list;
				progress_stop('progressScan', 32, true);
				if( document.all.item("kwsProgress") != null )
					document.all.item("kwsProgress").innerText=100;
				document.kavscan.btStopScan.innerHTML=BUTTON_EXIT;
				document.kavscan.btStopScan.disabled=false;
			}
			break;
	}

	if( document.kavscan.kavscanner.list != "" )
		alert(document.kavscan.kavscanner.list);
}

function updateReport(reportID, text)
{
	if( document.all.item(reportID).innerText.length == 0 )
		document.all.item(reportID).innerText=text;
	else
		document.all.item(reportID).innerText=document.all.item(reportID).innerText + "\r\n" + text;
		
	// scroll to the bottom
	document.all.item(reportID).scrollTop=document.all.item(reportID).scrollHeight;
}

function reportupdate()
{
	updateReport("reportUpdate", document.kavscan.kavscanner.list);
}

function reportscan()
{
	if( document.all.item("selectedTarget").innerHTML.length == 0 )
		document.all.item("selectedTarget").innerHTML=document.kavscan.kavscanner.list;
	else
		document.all.item("selectedTarget").innerHTML=document.all.item("selectedTarget").innerHTML + "<br>" + document.kavscan.kavscanner.list;
}

function cancelupdate()
{
	if( eventsTimerID != 0 ) window.clearInterval(eventsTimerID);
	if( oInterval != 0 ) window.clearInterval(oInterval);

	progress_stop('progressUpdate', 20, true);
	document.all.item("kwsUpdateProgress").innerText = ' [100%]';

	document.all.item("imgCheckUpdate").src="images/disabled.gif";
	reportupdate();
	document.kavscan.btNextInit.value=BUTTON_EXIT;
	document.kavscan.btNextInit.disabled=false;
	alert(document.kavscan.kavscanner.list);
}

function endupdate()
{
	if( eventsTimerID != 0 ) window.clearInterval(eventsTimerID);
	if( oInterval != 0 ) window.clearInterval(oInterval);

	progress_stop('progressUpdate', 20, true);
	document.all.item("kwsUpdateProgress").innerText = ' [100%]';
	
	document.all.item("imgCheckUpdate").src="images/enabled.gif";
	updateReport("reportUpdate", UPDATE_FINISHED);
	updating = 0;
	document.all.item("hostOS").innerText = document.kavscan.kavscanner.getOS();
	document.all.item("kwsVersion").innerText = document.kavscan.kavscanner.getKWSVersion();
	document.all.item("kwsLatestUpdate").innerText = document.kavscan.kavscanner.getLastUpdate();
	document.all.item("kwsNumberViruses").innerText = document.kavscan.kavscanner.getNumberViruses();
	document.all.item("kwsWaitPanel").style.visibility="hidden";
	document.all.item("kwsInfoPanel").style.visibility="visible";
	document.kavscan.btNextInit.disabled=false;
	document.all.item("imgNext").src="images/next.gif";
}

function endscansize()
{
	progress_stop('progressScan', 32, false);
	oInterval = window.setInterval("ShowStats()", 1000);
}

function endscan()
{
	if( eventsTimerID != 0 ) window.clearInterval(eventsTimerID);
	if( oInterval != 0 ) window.clearInterval(oInterval);

	progress_stop('progressScan', 32, true);
	if( document.all.item("kwsProgress") != null )
		document.all.item("kwsProgress").innerText=100;
	scanning = 2;
	report_saved = false;

	document.all.item("kwsScanProgress").style.visibility="hidden";

	ShowStats();
	ShowAdvReport();
	
	document.kavscan.btStopScan.disabled=false;
	document.kavscan.btStopScan.innerHTML = BUTTON_NEW_SCAN + "&nbsp;&nbsp;<img src=\"images/new_scan.gif\" style=\"vertical-align:middle;\">"
	
	var target="";

	if( stopscan == 0 ) {
		target="<b>" + SCAN_FINISHED + "</b><br>";
	}
	else {
		target="<b>" + SCAN_INTERRUPTED + "</b><br>";
	}
	
	if( document.all.item("nr_infe").innerText != 0 || 
		document.all.item("nr_susp").innerText != 0 ) {
		document.all.item("imgCheckScan").src="images/reports_alert.gif";
		target+="<b><font style=\"color='#FF0000'\">" + COMPUTER_INFECTER_1 + "</font></b><br>";
		target+=COMPUTER_INFECTER_2;
	}
	else {
		document.all.item("imgCheckScan").src="images/reports_ok.gif";
		target+="<b><font style=\"color='#009600'\">" + COMPUTER_CLEAN + "</font></b><br>";
	}
	document.all.item("selectedTarget").innerHTML=target;
}

/*-------------------------------------------------------------------------
 *	Progress Bar
 *-------------------------------------------------------------------------*/

var progressAt = 0;		// progress counter
var rollbar_forward = true;
var progressStop = false;

function progress_bar(progressbar, progressbar_name, pbEnd)
{
	var text = "";

	text += "<table align=\"left\"><tr><td>";
	text += "<div style=\"font-size:8pt; padding:2px 2px; border:solid black 1px; border-color:#CCCCCC\">";
	for (var i = 1; i <= pbEnd; i++) 
		text += "<span id=\"" + progressbar_name +  i + "\">&nbsp; &nbsp;</span>&nbsp;";
	text += "</div>";
	text += "</td></tr></table>";
	
	progressbar.innerHTML = text;
}

function progress_init(pbName, pbEnd)
{
	progressAt = 0;
	progressEnd = pbEnd;
	progressName = pbName;
	rollbar_forward = true;
	progressStop = false;
	
	for (var i = 1; i <= pbEnd; i++) {
		document.all.item(pbName + i).style.backgroundColor = 'transparent';
	}
}

function progress_update() 
{
	if( progressStop )
		return;

	progressAt++;
	if (progressAt >= progressEnd) {
		progress_init(progressName, progressEnd);
	}
	else {
		document.all.item(progressName + progressAt).style.backgroundColor = 'blue';
	}
}

function progress_to(pbName, pbEnd, progress)
{
	for (var i = 1; i <= (pbEnd/100*progress); i++) {
		document.all.item(pbName + i).style.backgroundColor = 'blue';
	}
}

function progress_roll()
{
	var rollbar_size = 5;

	if( progressStop )
		return;

	if( rollbar_forward ) {
		progressAt++;
		if( progressAt + rollbar_size - 1 >= progressEnd ) {
			rollbar_forward = false;
		}
		else {
			document.all.item(progressName + (progressAt + rollbar_size)).style.backgroundColor = 'transparent';
		}
		if( progressAt > 1 ) {
			document.all.item(progressName + (progressAt - 1)).style.backgroundColor = 'transparent';
		}
	}
	else {
		progressAt--;
		if( progressAt <= 1 ) {
			rollbar_forward = true;
		}
		else {
			document.all.item(progressName + (progressAt - 1)).style.backgroundColor = 'transparent';
		}
		if( progressAt + rollbar_size - 1 < progressEnd ) {
			document.all.item(progressName + (progressAt + rollbar_size)).style.backgroundColor = 'transparent';
		}
	}

	for (var i = progressAt; i < progressAt+rollbar_size; i++) {
		document.all.item(progressName + i).style.backgroundColor = 'blue';
	}
}

function progress_stop(pbName, pbEnd, pbDisplay)
{
	progressStop = true;
	if( progressTimer != 0 ) {
		window.clearInterval(progressTimer);
	}

	if( pbDisplay ) {
		for (var i = 1; i <= pbEnd; i++) {
			document.all.item(pbName + i).style.backgroundColor = 'blue';
		}
	}
	progressAt = 0;
}
