⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vbulletin_global.js

📁 这是从网上下载下来的一个计算程序
💻 JS
📖 第 1 页 / 共 3 页
字号:
// ensure SESSIONURL existsif (typeof(SESSIONURL) == "undefined"){	var SESSIONURL = "";}// ensure vbphrase existsif (typeof(vbphrase) == "undefined"){	var vbphrase = new Array();}// Array of message editor objectsvar vB_Editor = new Array();// Ignore characters within [quote] tags in messages for length checkvar ignorequotechars = false;// Number of pagenav items dealt with so farvar pagenavcounter = 0;// #############################################################################// Browser detection and limitation workarounds// Define the browser we have instead of multiple calls throughout the filevar userAgent = navigator.userAgent.toLowerCase();var is_opera  = ((userAgent.indexOf('opera') != -1) || (typeof(window.opera) != 'undefined'));var is_saf    = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));var is_webtv  = (userAgent.indexOf('webtv') != -1);var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));var is_ie4    = ((is_ie) && (userAgent.indexOf('msie 4.') != -1));var is_ie7    = ((is_ie) && (userAgent.indexOf('msie 7.') != -1));var is_moz    = ((navigator.product == 'Gecko') && (!is_saf));var is_kon    = (userAgent.indexOf('konqueror') != -1);var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));var is_mac    = (userAgent.indexOf('mac') != -1);// Catch possible bugs with WebTV and other older browsersvar is_regexp = (window.RegExp) ? true : false;// Is the visiting browser compatible with AJAX?var AJAX_Compatible = false;// Help out old versions of IE that don't understand element.style.cursor = 'pointer'var pointer_cursor = (is_ie ? 'hand' : 'pointer');/*** Workaround for heinous IE bug - add special vBlength property to all strings* This method is applied to ALL string objects automatically** @return	integer*/String.prototype.vBlength = function(){	return (is_ie && this.indexOf('\n') != -1) ? this.replace(/\r?\n/g, '_').length : this.length;}if ('1234'.substr(-2, 2) == '12') // (which would be incorrect){	String.prototype.substr_orig = String.prototype.substr;	/**	* Overrides IE's original String.prototype.substr to accept negative values	*	* @param	integer	Substring start position	* @param	integer	Substring length	*	* @return	string	*/	String.prototype.substr = function(start, length)	{		return this.substr_orig( (start < 0 ? this.length + start : start), length);	};}/*** Pop function for browsers that don't have it built in** @param	array	Array from which to pop** @return	mixed	null on empty, value on success*/function array_pop(a){	if (typeof a != 'object' || !a.length)	{		return null;	}	else	{		var response = a[a.length - 1];		a.length--;		return response;	}}if (typeof Array.prototype.shift === 'undefined'){	Array.prototype.shift = function()	{		for(var i = 0, b = this[0], l = this.length-1; i < l; i++)		{			this[i] = this[i + 1];		}		this.length--;		return b;	};}/*** Push function for browsers that don't have it built in** @param	array	Array onto which to push* @param	mixed	Value(s) to push onto - you may use multiple arguments here, eg: array_push(myArray, 1, 2, 3, 4, ...)** @return	integer	Length of array*/function array_push(a, values){	for (var i = 1; i < arguments.length; i++)	{		a[a.length] = arguments[i];	}	return a.length;}/*** Function to emulate document.getElementById** @param	string	Object ID** @return	mixed	null if not found, object if found*/function fetch_object(idname){	if (document.getElementById)	{		return document.getElementById(idname);	}	else if (document.all)	{		return document.all[idname];	}	else if (document.layers)	{		return document.layers[idname];	}	else	{		return null;	}}/*** Function to emulate document.getElementsByTagName** @param	object	Parent object (eg: document)* @param	string	Tag type (eg: 'td')** @return	array*/function fetch_tags(parentobj, tag){	if (parentobj == null)	{		return new Array();	}	else if (typeof parentobj.getElementsByTagName != 'undefined')	{		return parentobj.getElementsByTagName(tag);	}	else if (parentobj.all && parentobj.all.tags)	{		return parentobj.all.tags(tag);	}	else	{		return new Array();	}}/*** Function to count the number of tags in an object** @param	object	Parent object (eg: document)* @param	string	Tag type (eg: 'td')** @return	integer*/function fetch_tag_count(parentobj, tag){	return fetch_tags(parentobj, tag).length;}// #############################################################################// Event handlers/*** Handles the different event models of different browsers and prevents event bubbling** @param	event	Event object** @return	event*/function do_an_e(eventobj){	if (!eventobj || is_ie)	{		window.event.returnValue = false;		window.event.cancelBubble = true;		return window.event;	}	else	{		eventobj.stopPropagation();		eventobj.preventDefault();		return eventobj;	}}/*** Handles the different event models of different browsers and prevents event bubbling in a lesser way than do_an_e()** @param	event	Event object** @return	event*/function e_by_gum(eventobj){	if (!eventobj || is_ie)	{		window.event.cancelBubble = true;		return window.event;	}	else	{		if (eventobj.target.type == 'submit')		{			// naughty safari			eventobj.target.form.submit();		}		eventobj.stopPropagation();		return eventobj;	}}// #############################################################################// Message manipulation and validation/*** Checks that a message is valid for submission to PHP** @param	string	Message text* @param	mixed	Either subject text (if you want to make sure it exists) or 0 if you don't care* @param	integer	Minimum acceptable character limit for the message** @return	boolean*/function validatemessage(messagetext, subjecttext, minchars){	if (is_kon || is_saf || is_webtv)	{		// ignore less-than-capable browsers		return true;	}	else if (subjecttext.length < 1)	{		// subject not specified		alert(vbphrase['must_enter_subject']);		return false;	}	else	{		var stripped = PHP.trim(stripcode(messagetext, false, ignorequotechars));		if (stripped.length < minchars)		{			// minimum message length not met			alert(construct_phrase(vbphrase['message_too_short'], minchars));			return false;		}		else if (typeof(document.forms.vbform) != 'undefined' && typeof(document.forms.vbform.imagestamp) != 'undefined')		{						// This form has image verification enabled			document.forms.vbform.imagestamp.failed = false;						if (document.forms.vbform.imagestamp.value.length != 6)			{				alert(vbphrase['complete_image_verification']);				document.forms.vbform.imagestamp.failed = true;				document.forms.vbform.imagestamp.focus();				return false;			}			else			{				return true;			}		}		else		{			// everything seems ok			return true;		}	}}/*** Strips quotes and bbcode tags from text** @param	string	Text to manipulate* @param	boolean	If true, strip <x> otherwise strip [x]* @param	boolean	If true, strip all [quote]...contents...[/quote]** @return	string*/function stripcode(str, ishtml, stripquotes){	if (!is_regexp)	{		return str;	}	if (stripquotes)	{		var start_time = new Date().getTime();		while ((startindex = PHP.stripos(str, '[quote')) !== false)		{			if (new Date().getTime() - start_time > 2000)			{				// while loop has been running for over 2 seconds and has probably gone infinite				break;			}			if ((stopindex = PHP.stripos(str, '[/quote]')) !== false)			{				fragment = str.substr(startindex, stopindex - startindex + 8);				str = str.replace(fragment, '');			}			else			{				break;			}			str = PHP.trim(str);		}	}	if (ishtml)	{		// exempt image tags -- they need to count as characters in the string		// as the do as BB codes		str = str.replace(/<img[^>]+src="([^"]+)"[^>]*>/gi, '$1');		var html1 = new RegExp("<(\\w+)[^>]*>", 'gi');		var html2 = new RegExp("<\\/\\w+>", 'gi');		str = str.replace(html1, '');		str = str.replace(html2, '');		var html3 = new RegExp('(&nbsp;)', 'gi');		str = str.replace(html3, ' ');	}	else	{		var bbcode1 = new RegExp("\\[(\\w+)[^\\]]*\\]", 'gi');		var bbcode2 = new RegExp("\\[\\/(\\w+)\\]", 'gi');		str = str.replace(bbcode1, '');		str = str.replace(bbcode2, '');	}	return str;}// #############################################################################// vB_PHP_Emulator class// #############################################################################/*** PHP Function Emulator Class*/function vB_PHP_Emulator(){}// =============================================================================// vB_PHP_Emulator Methods/*** Find a string within a string (case insensitive)** @param	string	Haystack* @param	string	Needle* @param	integer	Offset** @return	mixed	Not found: false / Found: integer position*/vB_PHP_Emulator.prototype.stripos = function(haystack, needle, offset){	if (typeof offset == 'undefined')	{		offset = 0;	}	index = haystack.toLowerCase().indexOf(needle.toLowerCase(), offset);	return (index == -1 ? false : index);}/*** Trims leading whitespace** @param	string	String to trim** @return	string*/vB_PHP_Emulator.prototype.ltrim = function(str){	return str.replace(/^\s+/g, '');}/*** Trims trailing whitespace** @param	string	String to trim** @return	string*/vB_PHP_Emulator.prototype.rtrim = function(str){	return str.replace(/(\s+)$/g, '');}/*** Trims leading and trailing whitespace** @param	string	String to trim** @return	string*/vB_PHP_Emulator.prototype.trim = function(str){	return this.ltrim(this.rtrim(str));}/*** Emulation of PHP's preg_quote()** @param	string	String to process** @return	string*/vB_PHP_Emulator.prototype.preg_quote = function(str){	// replace + { } ( ) [ ] | / ? ^ $ \ . = ! < > : * with backslash+character	return str.replace(/(\+|\{|\}|\(|\)|\[|\]|\||\/|\?|\^|\$|\\|\.|\=|\!|\<|\>|\:|\*)/g, "\\$1");}/*** Emulates PHP's preg_match_all()... sort of** @param	string	Haystack* @param	string	Regular expression - to be inserted into RegExp(x)** @return	mixed	Array on match, false on no match*/vB_PHP_Emulator.prototype.match_all = function(string, regex){	var gmatch = string.match(RegExp(regex, "gim"));	if (gmatch)	{		var matches = new Array();		var iregex = new RegExp(regex, "im");		for (var i = 0; i < gmatch.length; i++)		{			matches[matches.length] = gmatch[i].match(iregex);		}		return matches;	}	else	{		return false;	}}/*** Emulates unhtmlspecialchars in vBulletin** @param	string	String to process** @return	string*/vB_PHP_Emulator.prototype.unhtmlspecialchars = function(str){	f = new Array(/&lt;/g, /&gt;/g, /&quot;/g, /&amp;/g);	r = new Array('<', '>', '"', '&');	for (var i in f)	{		str = str.replace(f[i], r[i]);	}	return str;}/*** Unescape CDATA from vB_AJAX_XML_Builder PHP class** @param	string	Escaped CDATA** @return	string*/vB_PHP_Emulator.prototype.unescape_cdata = function(str){	var r1 = /<\=\!\=\[\=C\=D\=A\=T\=A\=\[/g;	var r2 = /\]\=\]\=>/g;	return str.replace(r1, '<![CDATA[').replace(r2, ']]>');}/*** Emulates PHP's htmlspecialchars()** @param	string	String to process** @return	string*/vB_PHP_Emulator.prototype.htmlspecialchars = function(str){	//var f = new Array(/&(?!#[0-9]+;)/g, /</g, />/g, /"/g);	var f = new Array(		(is_mac && is_ie ? new RegExp('&', 'g') : new RegExp('&(?!#[0-9]+;)', 'g')),		new RegExp('<', 'g'),		new RegExp('>', 'g'),		new RegExp('"', 'g')	);	var r = new Array(		'&amp;',		'&lt;',		'&gt;',		'&quot;'	);	for (var i = 0; i < f.length; i++)	{		str = str.replace(f[i], r[i]);	}	return str;}/*** Searches an array for a value** @param	string	Needle* @param	array	Haystack* @param	boolean	Case insensitive** @return	integer	Not found: -1 / Found: integer index*/vB_PHP_Emulator.prototype.in_array = function(ineedle, haystack, caseinsensitive){	var needle = new String(ineedle);	if (caseinsensitive)	{		needle = needle.toLowerCase();		for (var i in haystack)		{			if (haystack[i].toLowerCase() == needle)			{				return i;			}		}	}	else	{		for (var i in haystack)		{			if (haystack[i] == needle)			{				return i;			}		}	}	return -1;}/*** Emulates PHP's strpad()** @param	string	Text to pad* @param	integer	Length to pad* @param	string	String with which to pad** @return	string*/vB_PHP_Emulator.prototype.str_pad = function(text, length, padstring){	text = new String(text);	padstring = new String(padstring);	if (text.length < length)	{		padtext = new String(padstring);		while (padtext.length < (length - text.length))		{			padtext += padstring;		}		text = padtext.substr(0, (length - text.length)) + text;	}	return text;}/*** A sort of emulation of PHP's urlencode - not 100% the same, but accomplishes the same thing** @param	string	String to encode** @return	string*/vB_PHP_Emulator.prototype.urlencode = function(text){	text = escape(text.toString()).replace(/\+/g, "%2B");	// this escapes 128 - 255, as JS uses the unicode code points for them.	// This causes problems with submitting text via AJAX with the UTF-8 charset.	var matches = text.match(/(%([0-9A-F]{2}))/gi);	if (matches)	{		for (var matchid = 0; matchid < matches.length; matchid++)		{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -