document.onmouseover = hideMenus;
var timeOn;

var dmTime = new Date();
var dmUpdate = 1;
var dmLastUpdate = dmTime.getTime() / 1000;
var dmRequested = 0;
var dmLastRequest = 0;
var dmWaitingRequest = 1;
var dmLastRequestKey = "MAD";

var tCount = 0;
var lTimeBegin = 0;
var lTimeOriginal = 0;

var dmRequestFrequency = 1;
var dmForcedFrequency = 2;

var fCount = 4;

var noticeMeTime = 0;
var noticeMeState = -1;
var wantReload = 0;

var ajaxPageRequest = null;




function dmTick()
{
	var d = new Date();

	if( ( d.getTime() / 1000 ) - dmLastRequest > dmRequestFrequency )
	{
		dmLastUpdate = d.getTime() / 1000;
		dmWaitingRequest = 0;
		dmRequestUpdate();
	}
	else
	{
		dmWaitingRequest = 1;
	}

	// delete d;
}


function dmRequestUpdate()
{
dmsg( "dmRequestUpdate() " + dmUpdate + " " + dmRequested );
	if( dmUpdate == 1 )
	{
		if( dmRequested == 0 )
		{
			var d = new Date();
			dmLastRequest = d.getTime() / 1000;

			// window.ksUpdate.document.updateProcess.submit();			
			ajax_asyncRequestPage( "ajax_update/" + dmLastRequestKey + "/" + dmLastRequest + "/", "ajax_updateResponse", "ajax_timeoutEvent", 15000 );
			
			dmRequested = 1;

			// delete d;
		}
		// else we're already updating, so let's ignore this
	}
}


function getTimeStr( a, t, c )
{
	var p = t * 2;

	if( c != 1 )
		p++;

	if( a == 1 )
		return lLongTime[ p ];
	else
		return lShortTime[ p ];
}


function pad( v, l, c )
{
	var p = v + "";

	while( p.length < l )
	{
		p = c + p;
	}

	return p;
}


function updateBid( nm, bID, bUT, bType, useHighlight, lastBidTime )
{
	var d = new Date();
	// d.setTime( bUT * 1000 );

	var el = document.getElementById( nm );

	if( el == null )
		return;

	// var sl = new Number( bUT - ( d.getTime() / 1000 ) );
	// var sl = new Number( bUT - lTimestamp );
	//		( lTimestamp + ( d.getTime() / 1000 ) - lTimeBegin ) 

	var sl = new Number( bUT - 
			( lTimestamp + ( ( d.getTime() / 1000 ) - lTimeBegin ) )  
			// ( lTimestamp +  - lTimeBegin ) 
		);


	var tStr = "";

	switch( bType )
	{
	default:
	case 0: // seconds
		tStr = sl.toFixed( 0 );
		break;

	case 1: // hour counter
		if( bUT == 0 )
		{
			tStr = "<span class='bid_time'>" + lLongTime[ 11 ] + "<\/span>";
		}
		else
		{
			var l = sl.toFixed( 0 );

			if( ( l == 2 ) || ( l == 5 ) || ( l == 10 ) )
				dmTick();

			if( l > 0 )
			{
				var hours = Math.floor( l / ( 60 * 60 ) );

				l -= ( hours * 60 * 60 );
				var minutes = Math.floor( l / 60 );

				l -= ( minutes * 60 );
				var seconds = Math.floor( l );

				if( hours > 0 )
				{
					if( useHighlight == 1 )
						tStr += "<span class='bid_time_highlight'>" + hours + "<\/span><span class='bid_time'> " + getTimeStr( 1, 2, hours ) + " <\/span>";
					else
						tStr += "<span class='hl_bid_time_highlight'>" + hours + "<\/span><span class='hl_bid_time'> " + getTimeStr( 1, 2, hours ) + " <\/span>"; // hours + " " + getTimeStr( 1, 2, hours ) + " ";
				}

				if( ( minutes > 0 ) || ( hours > 0 ) )
				{
					if( useHighlight == 1 )
						tStr += "<span class='bid_time_highlight'>" + minutes + "<\/span><span class='bid_time'> " + getTimeStr( 1, 1, minutes ) + " <\/span>";
					else
						tStr += "<span class='hl_bid_time_highlight'>" + minutes + "<\/span><span class='hl_bid_time'> " + getTimeStr( 1, 1, minutes ) + " <\/span>";// minutes + " " + getTimeStr( 1, 1, minutes ) + " ";
				}

				if( hours < 1 )
				{
					if( useHighlight == 1 )
						tStr += "<span class='bid_time_highlight'>" + seconds + "<\/span><span class='bid_time'> " + getTimeStr( 1, 0, seconds ) + "<\/span>";
					else
						tStr += "<span class='hl_bid_time_highlight'>" + seconds + "<\/span><span class='hl_bid_time'> " + getTimeStr( 1, 0, seconds ) + "<\/span>"; // seconds + " " + getTimeStr( 1, 0, seconds );
				}
				
				
				if( d.getTime() - lastBidTime < 400 )
				{
					tStr = "<span class='bid_time_wrapper_new_bid'>&nbsp;" + tStr + "&nbsp;<\/span>";
				}
				else
				{
					if( sl.toFixed( 0 ) <= 10 )
						tStr = "<span class='bid_time_wrapper_critical'>&nbsp;" + tStr + "&nbsp;<\/span>";
					else
						tStr = "<span class='bid_time_wrapper'>" + tStr + "<\/span>";
				}
			}
			else
			{
				dmTick();
				tStr = lLongTime[ 8 ];
			}
		}
		break;


	case 2: // day counter
		if( bUT == 0 )
		{
			tStr = lShortTime[ 11 ];
		}
		else
		{
			var l = sl.toFixed( 0 );

			if( l > 0 )
			{
				var days = Math.floor( l / ( 60 * 60 * 24 ) );

				l -= ( days * 60 * 60 * 24 );
				var hours = Math.floor( l / ( 60 * 60 ) );

				l -= ( hours * 60 * 60 );
				var minutes = Math.floor( l / 60 );

				l -= ( minutes * 60 );
				var seconds = Math.floor( l );

				if( useHighlight == 1 )
				{
					tStr = "<span class='bid_time_highlight'>" + days + "<\/span>" + getTimeStr( 2, 3, days ) + ", " + 
							"<span class='bid_time_highlight'>" + hours + "<\/span>" + getTimeStr( 2, 2, hours ) + ", " +
							"<span class='bid_time_highlight'>" + minutes + "<\/span>" + getTimeStr( 2, 1, minutes ) + ", " + 
							"<span class='bid_time_highlight'>" + seconds + "<\/span>" + getTimeStr( 2, 0, seconds );
				}
				else
				{					
					tStr = days + getTimeStr( 2, 3, days ) + ", " + hours + getTimeStr( 2, 2, hours ) + ", " +
							minutes + getTimeStr( 2, 1, minutes ) + ", " + seconds + getTimeStr( 2, 0, seconds );
				}
			}
			else
			{
				tStr = "<span class='bid_time'>" + lShortTime[ 8 ] + "<\/span>";
			}
		}
		break;


	case 10: // sleeping
		var l = bUT;
		tStr = lLongTime[ 10 ] + " ";

		var hours = Math.floor( l / ( 60 * 60 ) );

		l -= ( hours * 60 * 60 );
		var minutes = Math.floor( l / 60 );

		l -= ( minutes * 60 );
		var seconds = Math.floor( l );

		if( hours > 0 )
			tStr += hours + " " + getTimeStr( 1, 2, hours ) + " ";

		if( ( minutes > 0 ) || ( hours > 0 ) )
			tStr += minutes + " " + getTimeStr( 1, 1, minutes ) + " ";

		if( hours < 1 )
			tStr += seconds + " " + getTimeStr( 1, 0, seconds );
			
		tStr = "<span class='bid_time'>" + tStr + "<\/span>";

		break;


	case 20: // opening in...
		// do nothing		
		break;
		
		
	case 61: // paused
		tStr = "<span class='bid_time'>" + lShortTime[ 12 ] + "<\/span>";		
		break;


	case 99: // closed
		tStr = "<span class='bid_time'>" + lShortTime[ 9 ] + "<\/span>";
		break;
	}


	if( tStr != "" )
	{
		el.innerHTML = tStr;
	}

	// delete d;
}


function tick()
{
	var d = new Date();
	tCount++;
	var i = 0;

	if( dmUpdate == 1 )
		if( ( ( d.getTime() / 1000 ) - dmLastUpdate > dmForcedFrequency ) || ( dmWaitingRequest == 1 ) )
			dmTick();


	if( wantReload == 1 )
	{
		if( ( d.getTime() / 1000 ) - lTimeOriginal >= 120 )
		{
			wantReload = 0;
			forceReload();
		}
	}	


	for( i = 0; i < ni; i++ )
	{
		if( iType[ i ] != 10 ) // paused / sleeping
		{
			var nm = "tCounter_" + iID[ i ];
			updateBid( nm, iID[ i ], iUT[ i ], iType[ i ], 1, iLastBid[ i ] );
		}
	}

	if( useHL == 1 )
		if( hlType != 10 ) // paused / sleeping
			updateBid( "hlCounter_" + hlID, hlID, hlUT, hlType, 0, hlLastBid );

	// delete d;
}


function initTick()
{
	var d = new Date();
	var sl = new Number( d.getTime() / 1000 );
	lTimeBegin = sl.toFixed( 0 );
	lTimeOriginal = lTimeBegin;

	tick();
	setInterval( "tick()", 1000 );
	
	noticeMeTick();
}


function formConfirm( question, url )
{
	if( confirm( question ) )
	{ 
		document.location = url;
	}
}


function selectCol( column )
{
	column.style.backgroundColor = '#be9000';
}


function unselectCol( column )
{
	column.style.backgroundColor = '#ffc827';
}


function showMenu( menuName, eventObject )
{
	hideMenus();

	eventObject.cancelBubble = true;
	return changeObjectVisibility( menuName, 'visible' );
}


function hideMenus()
{
	changeObjectVisibility( 'menu_auctions', 'hidden' );
}


function menuOverTest()
{
	clearTimeout( timeOn );
}


function menuOutTest()
{
	if( document.layers )
	{
		timeOn = setTimeout( "hideMenus()", 400 );
	}
}


function getObjectByID( objectID )
{
	if( document.getElementById )
		return document.getElementById( objectID );
		
	return null; 
}
 

function getStyleObject( objectId )
{
	if( ( document.getElementById ) && ( document.getElementById( objectId ) ) )
	{
		return document.getElementById( objectId ).style;
	}
	else if( ( document.all ) && ( document.all( objectId ) ) )
	{
		return document.all( objectId ).style;
	}
	else if( ( document.layers ) && ( document.layers[ objectId ] ) )
	{
		return document.layers[ objectId ];
	}
	else
	{
		return false;
	}
}


function changeObjectVisibility( objectId, newVisibility )
{
var styleObject = getStyleObject( objectId );

	if( styleObject )
	{
		styleObject.zIndex = 8;
		styleObject.visibility = newVisibility;
		styleObject.zIndex = 8;
		return true;
	}
	else
	{
		return false;
	}
}


function openURL( url )
{
	window.location = url;
}


function selectHowTab( tab )
{
	changeObjectVisibility( 'how_tab_1', 'hidden' );
	changeObjectVisibility( 'how_tab_2', 'hidden' );	

	switch( tab )
	{
	case 0:
		changeObjectVisibility( 'how_tab_1', 'visible' );
		document[ 'how_tab_mid_1' ].src = "images/how_tab_mid_active_inactive.gif";
		break;
	
	case 1:
		changeObjectVisibility( 'how_tab_2', 'visible' );
		document[ 'how_tab_mid_1' ].src = "images/how_tab_mid_inactive_active.gif";
		break;
	}
}


function selectMainTab( tab )
{
	changeObjectVisibility( 'main_tab_1', 'hidden' );
	changeObjectVisibility( 'main_tab_2', 'hidden' );	

	switch( tab )
	{
	case 0:
		changeObjectVisibility( 'main_tab_1', 'visible' );
		document[ 'main_tab_mid_1' ].src = "images/hl_tab_mid_active_inactive.gif";
		document[ 'main_tab_left_corner' ].src = "images/hl_tab_left_active.gif";
		document[ 'main_tab_right_corner' ].src = "images/hl_tab_right_inactive.gif";
		setCssProperty( '.hltab_tab_1', 'background-image', 'url(images/hl_tab_bg_active.gif)' );
		setCssProperty( '.hltab_tab_2', 'background-image', 'url(images/hl_tab_bg_inactive.gif)' );
		setCssProperty( '.hltab_1_link', 'color', '#000000' );
		setCssProperty( '.hltab_2_link', 'color', '#ffffff' );
		setCssProperty( 'a.hltab_1_link:hover', 'color', '#222222' );
		setCssProperty( 'a.hltab_2_link:hover', 'color', '#ffffff' );
		break;
	
	case 1:
		changeObjectVisibility( 'main_tab_2', 'visible' );
		document[ 'main_tab_mid_1' ].src = "images/hl_tab_mid_inactive_active.gif";
		document[ 'main_tab_left_corner' ].src = "images/hl_tab_left_inactive.gif";
		document[ 'main_tab_right_corner' ].src = "images/hl_tab_right_active.gif";
		setCssProperty( '.hltab_tab_1', 'background-image', 'url(images/hl_tab_bg_inactive.gif)' );
		setCssProperty( '.hltab_tab_2', 'background-image', 'url(images/hl_tab_bg_active.gif)' );
		setCssProperty( '.hltab_1_link', 'color', '#ffffff' );
		setCssProperty( '.hltab_2_link', 'color', '#000000' );
		setCssProperty( 'a.hltab_1_link:hover', 'color', '#ffffff' );
		setCssProperty( 'a.hltab_2_link:hover', 'color', '#222222' );
		break;
	}
}


function setCssProperty( className, propertyName, propertyValue )
{
var r, i, j, a;

	if( document.all )
		r = 'rules';
	else if( document.getElementById )
		r = 'cssRules';

	
	for( i = 0; i < document.styleSheets.length; i++ )
	{
		a = false;
	
		for( j = 0; j < document.styleSheets[ i ][ r ].length; j++)
		{
			if( document.styleSheets[ i ][ r ][ j ].selectorText == className )
			{
				if( document.styleSheets[ i ][ r ][ j ].style[ propertyName ] )
				{
					document.styleSheets[ i ][ r ][ j ].style[ propertyName ] = propertyValue;
					a = true;
				}
			}
		}
		
		if( a == false )
		{
			if( document.styleSheets[ i ].insertRule )
			{
				document.styleSheets[ i ].insertRule( className + ' { ' + propertyName + ': ' + propertyValue + '; }', document.styleSheets[ i ][ r ].length );
			}
			else if( document.styleSheets[ i ].addRule )
			{
				document.styleSheets[ i ].addRule( className, propertyName + ': ' + propertyValue + ';' );
			}
		}		
	}
}


function selectImage( imgName )
{
	document[ imgName ].src = "images/" + curLanguage + "/" + imgName + "_sel.gif";
}


function unselectImage( imgName )
{
	document[ imgName ].src = "images/" + curLanguage + "/" + imgName + "_norm.gif";
}


function updateImage( imgName, imageURL )
{
	document[ imgName ].src = imageURL;
}


function loadImages( type )
{
	if( type == "front" )
	{
		var imga = new Array( 12 );

		imga[ 0 ] = createImage( "images/hl_tab_mid_inactive_active.gif" );
		imga[ 1 ] = createImage( "images/hl_tab_left_inactive.gif" );
		imga[ 2 ] = createImage( "images/hl_tab_right_active.gif" );
		imga[ 3 ] = createImage( "images/hl_tab_bg_inactive.gif" );
		imga[ 4 ] = createImage( "images/hl_tab_bg_active.gif" );

		imga[ 5 ] = createImage( "images/hl_tab_mid_active_inactive.gif" );
		imga[ 6 ] = createImage( "images/hl_tab_left_active.gif" );
		imga[ 7 ] = createImage( "images/hl_tab_right_inactive.gif" );
		imga[ 8 ] = createImage( "images/hl_tab_bg_active.gif" );
		imga[ 9 ] = createImage( "images/hl_tab_bg_inactive.gif" );
		
		imga[ 10 ] = createImage( "images/how_tab_mid_inactive_active.gif" );
		imga[ 11 ] = createImage( "images/how_tab_mid_active_inactive.gif" );
	}
}


function createImage( imgName )
{
	i = new Image();
	i.src = imgName;
	
	return i;
}


function ajax_createHttpRequest()
{
	if( typeof XMLHttpRequest == "undefined" )
	{
		XMLHttpRequest = function()
		{
		    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
		    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
		    try { return new ActiveXObject("Msxml2.XMLHTTP") }     catch(e) {}
		    try { return new ActiveXObject("Microsoft.XMLHTTP") }  catch(e) {}
		    throw new Error( "This browser does not support XMLHttpRequest or XMLHTTP." )
		};
	}
	
	return new XMLHttpRequest();
}


function ajax_asyncRequestPage( url, callbackFunction, timeoutFunction, timeoutInterval )
{
	dmsg( "ajax_asyncRequestPage( " + url + ")" ); 

	ajaxPageRequest = ajax_createHttpRequest();


	var ajTmOut = setTimeout( 
							function()
							{ 
								eval( timeoutFunction + "( ajaxPageRequest );" );
							}, 
							timeoutInterval 
						);

	
	ajaxPageRequest.onreadystatechange = function()
	{
		if( ajaxPageRequest.readyState == 4 )
		{
			if( ajaxPageRequest.status == 200 )
			{
				eval( callbackFunction + '( url, ajaxPageRequest, ajTmOut );' );
			}
			else
			{
				eval( timeoutFunction + "( ajaxPageRequest );" );
			}		
		}
	};
		
		
	ajaxPageRequest.open( "GET", url, true );
	ajaxPageRequest.send( null );
}


/* function ajax_asyncRequestPage( url, callbackFunction, timeoutFunction, timeoutInterval )
{
	dmsg( "ajax_asyncRequestPage( " + url + ")" ); 


	var request = ajax_createHttpRequest();
	
	request.onreadystatechange = function()
	{
		if( request.readyState == 4 )
		{
			if( request.status == 200 )
			{
				eval( callbackFunction + '( url, request, ajTmOut );' );
			}		
		}		
	};
		
		
	var ajTmOut = eval( "setTimeout( function() { " + timeoutFunction + "( request ); }, " + timeoutInterval + " )" );
		
	request.open( "GET", url, true );
	request.send( null );
} */


function ajax_asyncRequestField( url, callbackFunction, timeoutFunction, timeoutInterval, fieldName )
{
	var request = ajax_createHttpRequest();
	
	request.onreadystatechange = function()
	{
		if( request.readyState == 4 )
		{
			if( request.status == 200 )
			{
				eval( callbackFunction + '( url, request, ajTmOut, fieldName );' );
			}		
		}		
	};

		
	var ajTmOut = eval( "setTimeout( function() { " + timeoutFunction + "( request ); }, " + timeoutInterval + " )" );
		
	request.open( "GET", url, true );
	request.send( null );
}


function ajax_timeoutCancel( request )
{
	request.abort();
	request = null;
}


function ajax_timeoutEvent( request )
{
dmsg( "ajax_timeoutEvent()\n" );

	if( request != null )
		request.abort();
		
	if( ajaxPageRequest != null )
		ajaxPageRequest.abort();

	request = null;
	ajaxPageRequest = null;

	var d = new Date();
	dmLastUpdate = d.getTime() / 1000;
	dmRequested = 0;
	dmWaitingRequest = 0;
	
	// delete d;	
}


function timer_hlNewBid()
{
	updateBid( "hlCounter_" + hlID, hlID, hlUT, hlType, 0, hlLastBid );
}


function timer_auctionNewBid( index )
{
	var nm = "tCounter_" + iID[ index ];
	updateBid( nm, iID[ index ], iUT[ index ], iType[ index ], 1, iLastBid[ index ] );
}


function event_hlNewBid()
{
	var d = new Date();
	hlLastBid = d.getTime();
	setTimeout( "timer_hlNewBid()", 450 );

	updateBid( "hlCounter_" + hlID, hlID, hlUT, hlType, 0, hlLastBid );
	
	// delete d;
}


function event_hlNewType()
{	
	if( ( hlType == 0 ) || ( hlType == 1 ) || ( hlType == 2 ) || ( hlType == 99 ) )
	{
		var i = getObjectByID( 'hl_auction_action_img_' + hlID );
		
		if( i != null )
			i.src = hlBidImg; 

		var a = getObjectByID( 'hl_auction_action_a_' + hlID );
		
		if( a != null )
			a.href = "bid/" + hlID + "/" + hlBidHrefExt; 
	}
	else
	{
		var i = getObjectByID( 'hl_auction_action_img_' + hlID );
		
		if( i != null )
			i.src = hlRemindImg; 

		var a = getObjectByID( 'hl_auction_action_a_' + hlID );
		
		if( a != null )
			a.href = "remind/" + hlID + "/" + hlRemindHrefExt; 
	}
}


function event_auctionNewBid( index )
{
	var d = new Date();
	iLastBid[ index ] = d.getTime();
	setTimeout( "timer_auctionNewBid(" + index + ")", 450 );
	
	var nm = "tCounter_" + iID[ index ];
	updateBid( nm, iID[ index ], iUT[ index ], iType[ index ], 1, iLastBid[ index ] );
	
	// delete d;
}


function event_auctionNewType( index )
{
	if( ( iType[ index ] == 0 ) || ( iType[ index ] == 1 ) || ( iType[ index ] == 2 ) || ( iType[ index ] == 99 ) )
	{
		var i = getObjectByID( 'auction_action_img_' + iID[ index ] );
		
		if( i != null )
			i.src = iBidImg; 

		var a = getObjectByID( 'auction_action_a_' + iID[ index ] );
		
		if( a != null )
			a.href = "bid/" + iID[ index ] + "/" + iBidHrefExt; 
	}
	else
	{
		var i = getObjectByID( 'auction_action_img_' + iID[ index ] );
		
		if( i != null )
			i.src = iRemindImg; 

		var a = getObjectByID( 'auction_action_a_' + iID[ index ] );
		
		if( a != null )
			a.href = "remind/" + iID[ index ] + "/" + iRemindHrefExt; 
	}
}


function ajax_updateResponse( url, response, timeoutTimer )
{ 
dmsg( "ajax_updateResponse( " + url + ")" );
var j, i, s, cmd, nm, el, d;
var cl = response.responseText.split( "\n" );
var up_iID, up_iUT, up_iType, up_iName, up_iBid;
var up_hlID, up_hlUT, up_hlType, up_hlName, up_hlBid;
var oldType, oldName, oldUT;
var up_lTimestamp;
var hlUpdated = 0;
var found;
var wantRefresh = 0;
var processedCount = 0;
var iLastUT = iUT.slice( 0 );
var hlLastUT = hlUT;

	clearTimeout( timeoutTimer );
	
	
	if( response.responseText.replace( /^\s+|\s+$/g, '' ) == "NOUPDATE" )
	{
		dmsg( "ajax_updateResponse -- NOUPDATE" );
		
		d = new Date();
		dmLastUpdate = d.getTime() / 1000;
		dmRequested = 0;
		dmWaitingRequest = 0;

		// delete d;		
	}
	else
	{
		dmsg( "ajax_updateResponse -- REALUPDATE" );


		for( i = 0; i < cl.length; i++ )
		{
			// s = cl[ i ].trim();
			s = cl[ i ];
			
			if( s.length > 0 )
			{
				cmd = s.split( "\t" );
				
				switch( cmd[ 0 ] )
				{
					case "TK":
						dmLastRequestKey = cmd[ 1 ];
						break;
				
					case "TS":
						up_lTimestamp = parseInt( cmd[ 1 ] );
						break;
						
					case "HL":
						if( useHL == 1 )
						{
							up_hlID = parseInt( cmd[ 1 ] );
							up_hlUT = parseInt( cmd[ 2 ] );
							up_hlType = parseInt( cmd[ 3 ] );
							up_hlName = cmd[ 4 ];
							up_hlBid = cmd[ 5 ];						
							
							if( hlID == up_hlID )
							{
								oldName = hlName;
								oldType = hlType;
								oldUT = hlID;					
								hlUpdated = 1;
								
								hlUT = up_hlUT;
								hlType = up_hlType;
								hlName = up_hlName;
								hlBid = up_hlBid;
					
								nm = "hlCurBidder_" + up_hlID;
								el = document.getElementById( nm );
					
								if( el != null )
								{
									el.innerHTML = up_hlName;
					
									nm = "hlCurBid_" + up_hlID;
									el = document.getElementById( nm );
									el.innerHTML = up_hlBid;
								}
	
								if( ( up_hlName != oldName ) || ( up_hlUT != oldUT ) )
									event_hlNewBid();
									
								if( up_hlType != oldType )
									event_hlNewType();
							}
							else
							{
								// wantRefresh = 1;
							}
						}
						break;
				
					case "B":
						up_iID = parseInt( cmd[ 1 ] );
						up_iUT = parseInt( cmd[ 2 ] );
						up_iType = parseInt( cmd[ 3 ] );
						up_iName = cmd[ 4 ];
						up_iBid = cmd[ 5 ];
						found = 0;
						processedCount++;
	
					
						for( j = 0; j < ni; j++ )
						{
							if( iID[ j ] == up_iID )
							{
								found = 1;
								oldName = iName[ j ];
								oldType = iType[ j ];
								oldUT = iUT[ j ];
								
								iUT[ j ] = up_iUT;
								iType[ j ] = up_iType;
								
								iName[ j ] = up_iName;
								iBid[ j ] = up_iBid;
					
								nm = "tCurBidder_" + up_iID;
								el = document.getElementById( nm );
					
								if( el != null )
								{
									el.innerHTML = up_iName;
					
									nm = "tCurBid_" + up_iID;
									el = document.getElementById( nm );
									el.innerHTML = up_iBid;
								}
	
								
								if( ( up_iName != oldName ) || ( up_iUT != oldUT ) )
									event_auctionNewBid( j );
									
								if( up_iType != oldType )
									event_auctionNewType( j ); 
								
								if( useHL == 1 ) 
								{
									if( ( hlUpdated == 0 ) && ( hlID == up_iID ) )
									{
										oldName = hlName;
										oldType = hlType;									
										hlUpdated = 1;
										
										hlUT = up_iUT;
										hlType = up_iType;
										hlName = up_iName;
										hlBid = up_iBid;
					
										nm = "hlCurBidder_" + up_iID;
										el = document.getElementById( nm );
					
										if( el != null )
										{
											el.innerHTML = up_iName;
					
											nm = "hlCurBid_" + up_iID;
											el = document.getElementById( nm );
											el.innerHTML = up_iBid;
										}
										
										if( oldName != up_iName )
											event_hlNewBid();									
	
										if( oldType != up_iType )
											event_hlNewType(); 
									}
								}
								break;
							}
						}
					
						if( ( found == 0 ) && ( ( up_iType == 0  ) || ( up_iType == 1 ) || ( up_iType == 2 ) || ( up_iType == 10 ) ) )
						{
							wantRefresh = 1;
						}
						break;				
				}		
			} 	
		}



		d = new Date();
		dmLastUpdate = d.getTime() / 1000;
		dmRequested = 0;
		dmWaitingRequest = 0;
	
		dmsg( "ajax_updateResponse -- DM " + dmRequested + " " + dmWaitingRequest );

		lTimestamp = up_lTimestamp;
	
	
		var sl = new Number( d.getTime() / 1000 );
		lTimeBegin = sl.toFixed( 0 );
	
		for( i = 0; i < ni; i++ )
		{
			if( iType[ i ] != 10 ) // paused / sleeping
			{
				if( iLastUT[ i ] != iUT[ i ] )
				{
					var nm = "tCounter_" + iID[ i ];
					updateBid( nm, iID[ i ], iUT[ i ], iType[ i ], 1, iLastBid[ i ] );
				}
			}
		}
	
		if( useHL == 1 )
			if( hlType != 10 ) // paused / sleeping
				if( hlLastUT != hlUT )
					updateBid( "hlCounter_" + hlID, hlID, hlUT, hlType, 0, hlLastBid );
		
	
		
		if( ( wantRefresh == 1 ) && ( useForcedRefresh == 1 ) && ( processedCount > 0 ) )
			timedReload();
	
		// delete d;
	}
	
	ajaxPageRequest.abort();
	ajaxPageRequest = null;
}


function timedReload()
{
	var d = new Date();
	var sl = new Number( d.getTime() / 1000 );
	
	if( sl - lTimeOriginal < 120 )
	{
		wantReload = 1;		
	}
	else
	{	
		forceReload();
	}
}


function forceReload()
{
	dmsg( "forceReload()" ); 
	window.location.reload();
}


function cloneConditionalField( obj, fieldName, insertPos )
{
	var on = new String( obj.name );
	on = on.replace( /[^0-9]/g, '' );

	if( fCount <= parseInt( on.replace( '/[^0-9]/g', '' ) ) )
	{
		cloneField( fieldName, insertPos );
	}
}


function cloneField( fieldName, insertPos )
{
	if( fCount >= 50 )
		return;
	

	var newField = document.getElementById( fieldName ).cloneNode( true );
	fCount++;

	newField.id = '';
	newField.style.display = 'block';

	var nf = newField.childNodes;

	for( var i = 0; i < nf.length; i++ )
	{
		var n = nf[ i ].name;

		if( n )
			nf[ i ].name = n + fCount;
	}

	var ins = document.getElementById( insertPos );
	ins.parentNode.insertBefore( newField, ins );
}


function testVisibility( ctrlObj, spanName, rqVal )
{
	if( ctrlObj[ ctrlObj.selectedIndex ].value == rqVal )
	{
		changeObjectVisibility( spanName, 'visible' );
	}
	else
	{
		changeObjectVisibility( spanName, 'hidden' );
	}
} 


function noticeMeTick()
{
var d = new Date();
var dt = d.getTime() / 1000;
var to = 150; 
var bg, bg2, bg3;

	if( noticeMeState == -1 )
	{
		noticeMeTime = dt;
		noticeMeState = 1;	
	}

	if( dt - noticeMeTime > 60 )
		noticeMeState = 0;
		

	switch( noticeMeState )
	{
	case 0:
		bg = 'transparent';
		bg2 = 'transparent';
		bg3 = 'transparent';

		if( dt - noticeMeTime < 60 )
			to = 3000;
		else
			to = -1;
		break;
		
	case 2:
		bg = 'transparent';
		bg2 = 'transparent';
		bg3 = 'transparent';
		to = 300;
		break;
		
	case 1:
	case 3:
		bg = '#fffd55';
		bg2 = '#ffce20';
		bg3 = '#fffd55';
		to = 120;
		break;		
	}


	var styleObject = getStyleObject( "notice_me" );

	if( styleObject )
		styleObject.backgroundColor = bg;


	styleObject = getStyleObject( "notice_me2" );

	if( styleObject )
		styleObject.backgroundColor = bg2;


	styleObject = getStyleObject( "notice_me3" );

	if( styleObject )
		styleObject.backgroundColor = bg3;

	
	if( to > 0 )
	{
		noticeMeState++;
	
		if( noticeMeState > 3 )
			noticeMeState = 0;
			
		setTimeout( "noticeMeTick()", to );
	}
}


function ajax_validateFields( cmd, inputName, inputName2, fieldName )
{
dmsg( "ajax_validateFields( " + cmd + ", " + inputName + ", " + inputName2 + ", " + fieldName + " )" ); 


	var i = document.getElementById( inputName );
	var i2 = document.getElementById( inputName2 );
	
	if( ( i == null ) || ( i2 == null ) )
		return;


	var iv = i.value;
	var iv2 = i2.value;
	
	if( ( iv == "" ) || ( iv2 == "" ) )
	{
		var el = document.getElementById( fieldName );
	
		if( el == null )
			return;
		
		el.innerHTML = "";		
		return;		
	} 

	ajax_asyncRequestField( "/pull/?cmd=" + urlencode( cmd ) + "&" + urlencode( inputName ) + "=" + urlencode( iv ) + "&" + urlencode( inputName2 ) + "=" + urlencode( iv2 ), "ajax_responseToField", "ajax_timeoutCancel", 20000, fieldName );
}


function ajax_validateField( cmd, inputName, fieldName )
{
dmsg( "ajax_validateField( " + cmd + ", " + inputName + ", " + fieldName + " )" ); 

	var i = document.getElementById( inputName );
	
	if( i == null )
		return;


	var iv = i.value;
	
	if( iv == "" )
	{
		var el = document.getElementById( fieldName );
	
		if( el == null )
			return;
		
		el.innerHTML = "";		
		return;		
	} 

	ajax_asyncRequestField( "/pull/?cmd=" + urlencode( cmd ) + "&" + urlencode( cmd ) + "=" + urlencode( iv ), "ajax_responseToField", "ajax_timeoutCancel", 20000, fieldName );
}


function ajax_responseToField( url, response, timeoutTimer, fieldName )
{
dmsg( "ajax_responseToField( " + url + ")" ); 

	clearTimeout( timeoutTimer );
	
	var el = document.getElementById( fieldName );

	if( el == null )
		return;
		
	el.innerHTML = response.responseText;
}


function urlencode( v )
{
	v = escape( v );
	v = v.replace( '+', '%2B' );
	v = v.replace( '@', '%40' );
	v = v.replace( '/', '%2F' );
	v = v.replace( '*', '%2A' );
	v = v.replace( '%20', '+' );

	return v;
}


function comparePasswords( field1, field2, e )
{
	var f1 = document.getElementById( field1 );
	var f2 = document.getElementById( field2 );
	
	if( ( f1 == null ) || ( f2 == null ) )
		return;
		
	p1 = f1.value;
	p2 = f2.value + getEventKey( e );
	
	if( p2 == "" )
	{
		f2.className = 'bg_basic';
	}
	else if( p2 == p1 )
	{
		f2.className = 'bg_success';
	}
	else
	{
		if( p2.length < p1.length )
		{
			if( p2 == p1.substring( 0, p2.length ) )
				f2.className = 'bg_basic';
			else
				f2.className = 'bg_error';
		}
		else
		{
			f2.className = 'bg_error';
		}
	}
}


function testPassword( field, e )
{
	var f = document.getElementById( field );
	
	if( f == null ) 
		return;

	var p = f.value + getEventKey( e );
	
	if( p == "" )
	{
		f.className = 'bg_basic';
	}
	else
	{
		var b = 1;
	
		if( p.match( /[^a-zA-Z0-9]/ ) != null )
			b = 0;

		if( p.match( /[a-zA-Z]/ ) == null )
			b = 0;
			
		if( p.match( /[0-9]/ ) == null )
			b = 0;
			
		if( p.length < 7 )
			b = 0;
			
		if( b == 0 )
			f.className = 'bg_error';
		else
			f.className = 'bg_success';
	}
}


function getEventKey( e )
{
var k;

	if( e == null )
		return "";

	if( window.event )
		k = e.keyCode;
	else if( e.which )
		k = e.which;
	else
		return "";
	
	return String.fromCharCode( k );
}


function dmsg( msg )
{
	var d = new Date();
	
	var h = d.getHours();
	var m = d.getMinutes();
	var s = d.getSeconds();
	
	// super ugly
	h = ( ( h < 10 ) ? "0" : "" ) + h;
	m = ( ( m < 10 ) ? "0" : "" ) + m;
	s = ( ( s < 10 ) ? "0" : "" ) + s;

//	console.log( h + ":" + m + ":" + s + " " + msg );
	// delete d;
}


