HEX
Server: Apache/2.4.59 (Debian)
System: Linux skycube.cz 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64
User: ilya (534)
PHP: 7.3.31-1~deb10u7
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: /var/www/ilya/data/www/kamforum.ru/jscripts/ipb_forum.js
//------------------------------------------
// Invision Power Board v2.1
// Forums JS File
// (c) 2005 Invision Power Services, Inc.
//
// http://www.invisionboard.com
//------------------------------------------

/*--------------------------------------------*/
// INIT
/*--------------------------------------------*/

var topic_dates      = {};
var topic_flags      = {};
var forum_mark_time;
var newer_topics     = new Array;
var newer_count      = 0;
var flags_count      = 0;
var forum_id;
var url_extra        = '';
var start_int        = 0;
var forum_mark_sent  = 0;
var span_html        = new Array;
var desc_html        = new Array;
var text_html        = new Array;
var folders          = new Array;
var _desc_clicked    = 0;
var topic_links_init = 0;

var tid_date    = new Array();

var click_delay = 1200; //microseconds (1.2 seconds)

/*--------------------------------------------*/
// Pop up mod options
/*--------------------------------------------*/

function forum_mod_pop( fid )
{
	try
	{
		menu_action_close();
	}
	catch(e) { }
	
	PopUp( ipb_var_base_url + 'act=mod&CODE=prune_start&f='+fid+'&auth_key='+ipb_md5_check, 'PRUNE', 600,500);
}

/*--------------------------------------------*/
// INIT topic links...
/*--------------------------------------------*/

function forum_init_topic_links()
{
	//----------------------------------
	// Get page links...
	// Gah.. another safari bug
	//----------------------------------
	
	var pagelinks = document.getElementsByTagName('a');
	
	//----------------------------------
	// Sort through and grab topic links
	//----------------------------------
	
	for ( var i = 0 ; i <= pagelinks.length ; i++ )
	{
		try
		{
			if ( ! pagelinks[i].id )
			{
				continue;
			}
		}
		catch(e)
		{
			continue;
		}
		
		var linkid   = pagelinks[i].id;
		var linkname = linkid.replace( /^(.*)-(\d+)$/, "$1" );
		
		if ( linkname == 'tid-link' )
		{
			pagelinks[i].onmousedown  = topic_link_event_mousedown;
			pagelinks[i].onmouseup    = topic_link_event_mouseup;
			//pagelinks[i].style.cursor = 'text';
			
			if ( ! topic_links_init )
			{
				pagelinks[i].title = pagelinks[i].title + '. ' + lang_clickhold;
			}
		}
	}
	
	topic_links_init = 1;
}

/*--------------------------------------------*/
// Mousedown, start timer
/*--------------------------------------------*/

function topic_link_event_mousedown( event )
{
	//----------------------------------
	// Prevent link loading
	//----------------------------------
	
	event = global_cancel_bubble( event, true );
	
	//----------------------------------
	// Get TID
	//----------------------------------
	
	var tid = _get_tid_from_id( this.id );
	
	//----------------------------------
	// Start...
	//----------------------------------
	
	tid_date[ tid ] = _get_time_now();

	//----------------------------------
	// Start loop
	//----------------------------------
	
	setTimeout( "topic_link_event_timer("+tid+")", 5 );
}

/*--------------------------------------------*/
// Event, loop
/*--------------------------------------------*/

function topic_link_event_timer( tid )
{
	//----------------------------------
	// Get time now
	//----------------------------------

	var timenow = _get_time_now();
	
	//----------------------------------
	// Click held for 1.5 s+?
	//----------------------------------
	
	if ( timenow > 0 && tid_date[tid] > 0 && ( (timenow - tid_date[tid] ) > click_delay ) )
	{
		//----------------------------------
		// Yeah.. wipe tid time and convert
		//----------------------------------
		
		tid_date[tid] = 0;
		span_to_input( tid );
		return false;
	}
	
	//----------------------------------
	// Not wiped? loop on!
	//----------------------------------
	
	if ( tid_date[tid] > 0 )
	{
		setTimeout( "topic_link_event_timer("+tid+")", 5 );
	}
	else
	{
		return false;
	}
}

/*--------------------------------------------*/
// Mouseup? Cancel timer to kill the loop
/*--------------------------------------------*/

function topic_link_event_mouseup( event )
{
	//----------------------------------
	// Prevent link loading
	//----------------------------------
	
	event = global_cancel_bubble( event, true );
	
	//----------------------------------
	// Get TID
	//----------------------------------
	
	var tid = _get_tid_from_id( this.id );
	
	//----------------------------------
	// Reset timer
	//----------------------------------
	
	tid_date[tid] = 0;
}

/*--------------------------------------------*/
// Get time now
/*--------------------------------------------*/

function _get_time_now()
{
	var mydate = new Date();
	return mydate.getTime();
}

/*--------------------------------------------*/
// Get TID from ID
/*--------------------------------------------*/

function _get_tid_from_id( id )
{
	return id.replace( /.*\-(\d+)/, "$1" );
}


/*--------------------------------------------*/
// Turn topic title into text input
/*--------------------------------------------*/

function topic_toggle_folder( tid )
{
	//----------------------------------
	// Using fancy js?
	//----------------------------------
	
	if ( ! use_enhanced_js )
	{
		return false;
	}
	
	//----------------------------------
	// Can edit?
	//----------------------------------
	
	if ( ! perm_can_open && ! perm_can_close )
	{
		return false;
	}
	
	var td_content = document.getElementById( 'tid-folder-' + tid ).innerHTML;
	var state;
	
	if ( td_content.match( new RegExp( "/("+img_folder_closed+")([\"'])", "i" ) ) )
	{
		//----------------------------------
		// Can?
		//----------------------------------
		
		if ( ! perm_can_open )
		{
			return false;
		}
		
		//----------------------------------
		// Topic is locked
		//----------------------------------
		
		if ( folders[ tid ] )
		{
			td_content = folders[ tid ];
		}
		else
		{
			td_content = td_content.replace( new RegExp( "([\"'])(.*)/(.+?)([\"'])"), "$1$2/"+img_folder_normal+"$4" );
		}
		
		state = 'open';
	}
	else
	{
		//----------------------------------
		// Can?
		//----------------------------------
		
		if ( ! perm_can_close )
		{
			return false;
		}
		
		//----------------------------------
		// Topic isn't locked
		//----------------------------------
		
		folders[ tid ] = td_content;
		td_content     = td_content.replace( new RegExp( "([\"'])(.*)/(.+?)([\"'])"), "$1$2/"+img_folder_closed+"$4" );
		state          = 'closed';
	}
	
	document.getElementById( 'tid-folder-' + tid ).innerHTML = td_content;

	/*--------------------------------------------*/
	// Main function to do on request
	// Must be defined first!!
	/*--------------------------------------------*/
	
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			// Could do a little loading graphic here?
			return;
		}
		
		//----------------------------------
		// INIT
		//----------------------------------
		
		var returned = xmlobj.xmlhandler.responseText;
	}
	
	//----------------------------------
	// LOAD XML
	//----------------------------------
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	
	xmlobj.process( ipb_var_base_url + 'act=xmlout&do=save-topic&type=openclose&name='+state+'&md5check='+ipb_md5_check+'&tid='+tid );
	
	return false;
}

/*--------------------------------------------*/
// Turn topic title into text input
/*--------------------------------------------*/

function span_to_input( tid )
{
	//----------------------------------
	// Using fancy js?
	//----------------------------------
	
	if ( ! use_enhanced_js )
	{
		return false;
	}
	
	//----------------------------------
	// Can?
	//----------------------------------
	
	if ( ! perm_can_edit )
	{
		return false;
	}
	
	//----------------------------------
	// Prevent double click when desc open
	//----------------------------------
	
	if ( _desc_clicked )
	{
		return false;
	}
		
	span_html[ tid ] = document.getElementById( 'tid-span-' + tid ).innerHTML;
	text_html[ tid ] = document.getElementById( 'tid-link-' + tid ).innerHTML;
	
	//----------------------------------
	// Topic title
	//----------------------------------
	
	perm_max_length = perm_max_length ? perm_max_length : 50;
	
	document.getElementById( 'tid-span-' + tid ).innerHTML = '<input id="edit-'+tid+'" class="dny-edit-title" maxlength="'+perm_max_length+'" type="text" size="40" value="'+text_html[ tid ].replace( /"/g, '&quot;') +'" />'; //"'
	document.getElementById( 'edit-' + tid ).onkeyup       = function( event ) { tid_keypress(event, tid) }
	document.getElementById( 'edit-' + tid ).onblur        = function( event ) { tid_blur(tid) }
	document.getElementById( 'edit-' + tid ).focus();
	
	return false;
}

/*--------------------------------------------*/
// Turn topic DESC into text input
/*--------------------------------------------*/

function span_desc_to_input( tid )
{
	//----------------------------------
	// Using fancy js?
	//----------------------------------
	
	if ( ! use_enhanced_js )
	{
		return false;
	}
	
	//----------------------------------
	// Can?
	//----------------------------------
	
	if ( ! perm_can_edit )
	{
		return false;
	}
	
	//----------------------------------
	// Prevent double click when desc open
	//----------------------------------
	
	if ( _desc_clicked )
	{
		return false;
	}
	
	_desc_clicked = 1;
	
	desc_html[ tid ] = document.getElementById( 'tid-desc-' + tid ).innerHTML;
	
	//----------------------------------
	// Topic desc
	//----------------------------------
	
	perm_max_length = perm_max_length ? perm_max_length : 50;
	
	document.getElementById( 'tid-desc-' + tid ).innerHTML = '<input id="edit-'+tid+'" maxlength="'+perm_max_length+'" class="dny-edit-title" type="text" size="40" onblur="tid_blur(\''+tid+'\', \'desc\')" onkeypress="tid_keypress(event, \''+tid+'\',\'desc\')" value="'+desc_html[ tid ].replace( /"/g, '&quot;')+'" />'; //"'
	document.getElementById( 'edit-'     + tid ).focus();
	
	return false;
}

/*--------------------------------------------*/
// BLUR HANDLER
/*--------------------------------------------*/

tid_blur = function( tid, type )
{
	new_text = document.getElementById( 'edit-' + tid ).value;
	
	if( type == 'desc' )
	{
		tid_save( tid, new_text, type );
	}
	else
	{
		if ( new_text != "" )
		{
			tid_save( tid, new_text, type );
		}
	}
}

/*--------------------------------------------*/
// KEY PRESS HANDLER
/*--------------------------------------------*/

tid_keypress = function( evt, tid, type )
{
	if ( is_safari )
	{
		return false;
	}
	
	evt      = evt ? evt : window.event;
	new_text = document.getElementById( 'edit-' + tid ).value;
	
	if ( ( evt.keyCode == 13 || evt.keyCode == 3 ) && new_text != "" )
	{
		tid_save( tid, new_text, type );
	}
}

/*--------------------------------------------*/
// UDPATE DB
/*--------------------------------------------*/

tid_save = function( tid, new_text, type )
{
	var donotedit = 0;
	
	if ( type == 'desc' )
	{
		if ( new_text == desc_html[ tid ] )
		{
			donotedit = 1;
		}
		
		_desc_clicked = 0;
		
		document.getElementById( 'tid-desc-' + tid ).innerHTML = new_text;
	}
	else
	{
		if ( new_text == text_html[ tid ] )
		{
			donotedit = 1;
		}
		
		type = 'title';
		document.getElementById( 'tid-span-' + tid ).innerHTML = span_html[ tid ];
		document.getElementById( 'tid-link-' + tid ).innerHTML = new_text;
		
		//----------------------------------
		// Re-check topic links
		//----------------------------------
		
		forum_init_topic_links();
	}
	
	if ( donotedit )
	{
		return false;
	}
	
	var url    = ipb_var_base_url + 'act=xmlout&do=save-topic&type='+type+'&md5check='+ipb_md5_check+'&tid='+tid;
	var fields = new Array();

	//----------------------------------
	// Populate fields
	//----------------------------------
	
	fields['md5check'] = ipb_md5_check;
	fields['tid']      = tid;
	fields['act']      = 'xmlout';
	fields['do']       = 'save-topic';
	fields['type']     = type;
	fields['name']     = new_text;
	
	/*--------------------------------------------*/
	// Main function to do on request
	// Must be defined first!!
	/*--------------------------------------------*/
	
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			// Could do a little loading graphic here?
			return;
		}
		
		//----------------------------------
		// INIT
		//----------------------------------
		
		var returned = xmlobj.xmlhandler.responseText;
		
		if ( type != 'desc' && ! returned.match( /<null>s<\/null>/ ) )
		{
			document.getElementById( 'tid-link-' + tid ).innerHTML = returned;
		}

	}
	
	//----------------------------------
	// LOAD XML
	//----------------------------------
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	xmlobj.process( url, 'POST', xmlobj.format_for_post(fields) );

	
	return false;
}


/*--------------------------------------------*/
// Who posted
/*--------------------------------------------*/

function who_posted(tid)
{
	window.open("index.php?act=Stats&CODE=who&t="+tid, "WhoPosted", "toolbar=no,scrollbars=yes,resizable=yes,width=230,height=300");
}

/*--------------------------------------------*/
// Check delete
/*--------------------------------------------*/

function checkdelete()
{
	if ( ! document.modform.selectedtids.value )
	{
		return false;
	}
	
	isDelete = document.modform.tact.options[document.modform.tact.selectedIndex].value;
	
	if (isDelete == 'delete')
	{
		formCheck = confirm( lang_suredelete );
		
		if (formCheck == true)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}

/*--------------------------------------------*/
// Toggle selection
/*--------------------------------------------*/

function forum_toggle_tid( tid )
{
	saved = new Array();
	clean = new Array();
	add   = 1;
	
	//-----------------------------------
	// Get form info
	//-----------------------------------
	
	tmp = document.modform.selectedtids.value;
	
	if( tmp != "" )
	{
		saved = tmp.split(",");
	}
	
	//-----------------------------------
	// Remove bit if exists
	//-----------------------------------
	
	for( i = 0 ; i < saved.length; i++ )
	{
		if ( saved[i] != "" )
		{
			if ( saved[i] == tid )
			{
				 add = 0;
			}
			else
			{
				clean[clean.length] = saved[i];
			}
		}
	}
	
	//-----------------------------------
	// Add?
	//-----------------------------------
	
	if ( add )
	{
		clean[ clean.length ] = tid;
		eval("document.img"+tid+".src=selectedbutton");
	}
	else
	{
		eval(" document.img"+tid+".src=unselectedbutton");
	}
	
	newvalue = clean.join(',');
	
	my_setcookie( 'modtids', newvalue, 0 );
	
	document.modform.selectedtids.value = newvalue;
	
	newcount = stacksize(clean);
	
	document.modform.gobutton.value = lang_gobutton + '(' + newcount + ')';
	
	return false;
}

/*--------------------------------------------*/
// Do multi page jump
/*--------------------------------------------*/

function multi_page_jump( url_bit, total_posts, per_page )
{
	pages = 1;
	cur_st = ipb_var_st;
	cur_page  = 1;
	
	if ( total_posts % per_page == 0 )
	{
		pages = total_posts / per_page;
	}
	else
	{
		pages = Math.ceil( total_posts / per_page );
	}
	
	msg = ipb_lang_tpl_q1 + " " + pages;
	
	if ( cur_st > 0 )
	{
		cur_page = cur_st / per_page; cur_page = cur_page -1;
	}
	
	show_page = 1;
	
	if ( cur_page < pages )
	{
		show_page = cur_page + 1;
	}
	
	if ( cur_page >= pages )
	{
		show_page = cur_page - 1;
	}
 	else
 	{
 		show_page = cur_page + 1;
 	}
 	
	userPage = prompt( msg, show_page );
	
	if ( userPage > 0  )
	{
		if ( userPage < 1 )     {    userPage = 1;  }
		if ( userPage > pages ) { userPage = pages; }
		if ( userPage == 1 )    {     start = 0;    }
		else { start = (userPage - 1) * per_page; }
	
		window.location = url_bit + "&st=" + start;
	}
}