亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fcktools.js

?? 強大的個人日志系統,界面華麗
?? JS
?? 第 1 頁 / 共 2 頁
字號:
?/*
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2008 Frederico Caldeira Knabben
 *
 * == BEGIN LICENSE ==
 *
 * Licensed under the terms of any of the following licenses at your
 * choice:
 *
 *  - GNU General Public License Version 2 or later (the "GPL")
 *    http://www.gnu.org/licenses/gpl.html
 *
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 *    http://www.gnu.org/licenses/lgpl.html
 *
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
 *    http://www.mozilla.org/MPL/MPL-1.1.html
 *
 * == END LICENSE ==
 *
 * Utility functions.
 */

var FCKTools = new Object() ;

FCKTools.CreateBogusBR = function( targetDocument )
{
	var eBR = targetDocument.createElement( 'br' ) ;
//	eBR.setAttribute( '_moz_editor_bogus_node', 'TRUE' ) ;
	eBR.setAttribute( 'type', '_moz' ) ;
	return eBR ;
}

/**
 * Fixes relative URL entries defined inside CSS styles by appending a prefix
 * to them.
 * @param (String) cssStyles The CSS styles definition possibly containing url()
 *		paths.
 * @param (String) urlFixPrefix The prefix to append to relative URLs.
 */
FCKTools.FixCssUrls = function( urlFixPrefix, cssStyles )
{
	if ( !urlFixPrefix || urlFixPrefix.length == 0 )
		return cssStyles ;

	return cssStyles.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g, function( match, opener, path, closer )
		{
			if ( /^\/|^\w?:/.test( path ) )
				return match ;
			else
				return 'url(' + opener + urlFixPrefix + path + closer + ')' ;
		} ) ;
}

FCKTools._GetUrlFixedCss = function( cssStyles, urlFixPrefix )
{
	var match = cssStyles.match( /^([^|]+)\|([\s\S]*)/ ) ;

	if ( match )
		return FCKTools.FixCssUrls( match[1], match[2] ) ;
	else
		return cssStyles ;
}

/**
 * Appends a <link css> or <style> element to the document.
 * @param (Object) documentElement The DOM document object to which append the
 *		stylesheet.
 * @param (Variant) cssFileOrDef A String pointing to the CSS file URL or an
 *		Array with many CSS file URLs or the CSS definitions for the <style>
 *		element.
 * @return {Array} An array containing all elements created in the target
 *		document. It may include <link> or <style> elements, depending on the
 *		value passed with cssFileOrDef.
 */
FCKTools.AppendStyleSheet = function( domDocument, cssFileOrArrayOrDef )
{
	if ( !cssFileOrArrayOrDef )
		return [] ;

	if ( typeof( cssFileOrArrayOrDef ) == 'string' )
	{
		// Test if the passed argument is an URL.
		if ( /[\\\/\.][^{}]*$/.test( cssFileOrArrayOrDef ) )
		{
			// The string may have several URLs separated by comma.
			return this.AppendStyleSheet( domDocument, cssFileOrArrayOrDef.split(',') ) ;
		}
		else
			return [ this.AppendStyleString( domDocument, FCKTools._GetUrlFixedCss( cssFileOrArrayOrDef ) ) ] ;
	}
	else
	{
		var styles = [] ;
		for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
			styles.push( this._AppendStyleSheet( domDocument, cssFileOrArrayOrDef[i] ) ) ;
		return styles ;
	}
}

FCKTools.GetStyleHtml = (function()
{
	var getStyle = function( styleDef, markTemp )
	{
		if ( styleDef.length == 0 )
			return '' ;

		var temp = markTemp ? ' _fcktemp="true"' : '' ;
		return '<' + 'style type="text/css"' + temp + '>' + styleDef + '<' + '/style>' ;
	}

	var getLink = function( cssFileUrl, markTemp )
	{
		if ( cssFileUrl.length == 0 )
			return '' ;

		var temp = markTemp ? ' _fcktemp="true"' : '' ;
		return '<' + 'link href="' + cssFileUrl + '" type="text/css" rel="stylesheet" ' + temp + '/>' ;
	}

	return function( cssFileOrArrayOrDef, markTemp )
	{
		if ( !cssFileOrArrayOrDef )
			return '' ;

		if ( typeof( cssFileOrArrayOrDef ) == 'string' )
		{
			// Test if the passed argument is an URL.
			if ( /[\\\/\.][^{}]*$/.test( cssFileOrArrayOrDef ) )
			{
				// The string may have several URLs separated by comma.
				return this.GetStyleHtml( cssFileOrArrayOrDef.split(','), markTemp ) ;
			}
			else
				return getStyle( this._GetUrlFixedCss( cssFileOrArrayOrDef ), markTemp ) ;
		}
		else
		{
			var html = '' ;

			for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
				html += getLink( cssFileOrArrayOrDef[i], markTemp ) ;

			return html ;
		}
	}
})() ;

FCKTools.GetElementDocument = function ( element )
{
	return element.ownerDocument || element.document ;
}

// Get the window object where the element is placed in.
FCKTools.GetElementWindow = function( element )
{
	return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;
}

FCKTools.GetDocumentWindow = function( document )
{
	// With Safari, there is not way to retrieve the window from the document, so we must fix it.
	if ( FCKBrowserInfo.IsSafari && !document.parentWindow )
		this.FixDocumentParentWindow( window.top ) ;

	return document.parentWindow || document.defaultView ;
}

/*
	This is a Safari specific function that fix the reference to the parent
	window from the document object.
*/
FCKTools.FixDocumentParentWindow = function( targetWindow )
{
	if ( targetWindow.document )
		targetWindow.document.parentWindow = targetWindow ;

	for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
		FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;
}

FCKTools.HTMLEncode = function( text )
{
	if ( !text )
		return '' ;

	text = text.replace( /&/g, '&amp;' ) ;
	text = text.replace( /</g, '&lt;' ) ;
	text = text.replace( />/g, '&gt;' ) ;

	return text ;
}

FCKTools.HTMLDecode = function( text )
{
	if ( !text )
		return '' ;

	text = text.replace( /&gt;/g, '>' ) ;
	text = text.replace( /&lt;/g, '<' ) ;
	text = text.replace( /&amp;/g, '&' ) ;

	return text ;
}

FCKTools._ProcessLineBreaksForPMode = function( oEditor, text, liState, node, strArray )
{
	var closeState = 0 ;
	var blockStartTag = "<p>" ;
	var blockEndTag = "</p>" ;
	var lineBreakTag = "<br />" ;
	if ( liState )
	{
		blockStartTag = "<li>" ;
		blockEndTag = "</li>" ;
		closeState = 1 ;
	}

	// Are we currently inside a <p> tag now?
	// If yes, close it at the next double line break.
	while ( node && node != oEditor.FCK.EditorDocument.body )
	{
		if ( node.tagName.toLowerCase() == 'p' )
		{
			closeState = 1 ;
			break;
		}
		node = node.parentNode ;
	}

	for ( var i = 0 ; i < text.length ; i++ )
	{
		var c = text.charAt( i ) ;
		if ( c == '\r' )
			continue ;

		if ( c != '\n' )
		{
			strArray.push( c ) ;
			continue ;
		}

		// Now we have encountered a line break.
		// Check if the next character is also a line break.
		var n = text.charAt( i + 1 ) ;
		if ( n == '\r' )
		{
			i++ ;
			n = text.charAt( i + 1 ) ;
		}
		if ( n == '\n' )
		{
			i++ ;	// ignore next character - we have already processed it.
			if ( closeState )
				strArray.push( blockEndTag ) ;
			strArray.push( blockStartTag ) ;
			closeState = 1 ;
		}
		else
			strArray.push( lineBreakTag ) ;
	}
}

FCKTools._ProcessLineBreaksForDivMode = function( oEditor, text, liState, node, strArray )
{
	var closeState = 0 ;
	var blockStartTag = "<div>" ;
	var blockEndTag = "</div>" ;
	if ( liState )
	{
		blockStartTag = "<li>" ;
		blockEndTag = "</li>" ;
		closeState = 1 ;
	}

	// Are we currently inside a <div> tag now?
	// If yes, close it at the next double line break.
	while ( node && node != oEditor.FCK.EditorDocument.body )
	{
		if ( node.tagName.toLowerCase() == 'div' )
		{
			closeState = 1 ;
			break ;
		}
		node = node.parentNode ;
	}

	for ( var i = 0 ; i < text.length ; i++ )
	{
		var c = text.charAt( i ) ;
		if ( c == '\r' )
			continue ;

		if ( c != '\n' )
		{
			strArray.push( c ) ;
			continue ;
		}

		if ( closeState )
		{
			if ( strArray[ strArray.length - 1 ] == blockStartTag )
			{
				// A div tag must have some contents inside for it to be visible.
				strArray.push( "&nbsp;" ) ;
			}
			strArray.push( blockEndTag ) ;
		}
		strArray.push( blockStartTag ) ;
		closeState = 1 ;
	}
	if ( closeState )
		strArray.push( blockEndTag ) ;
}

FCKTools._ProcessLineBreaksForBrMode = function( oEditor, text, liState, node, strArray )
{
	var closeState = 0 ;
	var blockStartTag = "<br />" ;
	var blockEndTag = "" ;
	if ( liState )
	{
		blockStartTag = "<li>" ;
		blockEndTag = "</li>" ;
		closeState = 1 ;
	}

	for ( var i = 0 ; i < text.length ; i++ )
	{
		var c = text.charAt( i ) ;
		if ( c == '\r' )
			continue ;

		if ( c != '\n' )
		{
			strArray.push( c ) ;
			continue ;
		}

		if ( closeState && blockEndTag.length )
			strArray.push ( blockEndTag ) ;
		strArray.push( blockStartTag ) ;
		closeState = 1 ;
	}
}

FCKTools.ProcessLineBreaks = function( oEditor, oConfig, text )
{
	var enterMode = oConfig.EnterMode.toLowerCase() ;
	var strArray = [] ;

	// Is the caret or selection inside an <li> tag now?
	var liState = 0 ;
	var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
	range.MoveToSelection() ;
	var node = range._Range.startContainer ;
	while ( node && node.nodeType != 1 )
		node = node.parentNode ;
	if ( node && node.tagName.toLowerCase() == 'li' )
		liState = 1 ;

	if ( enterMode == 'p' )
		this._ProcessLineBreaksForPMode( oEditor, text, liState, node, strArray ) ;
	else if ( enterMode == 'div' )
		this._ProcessLineBreaksForDivMode( oEditor, text, liState, node, strArray ) ;
	else if ( enterMode == 'br' )
		this._ProcessLineBreaksForBrMode( oEditor, text, liState, node, strArray ) ;
	return strArray.join( "" ) ;
}

/**
 * Adds an option to a SELECT element.
 */
FCKTools.AddSelectOption = function( selectElement, optionText, optionValue )
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月婷婷激情综合网| 色婷婷香蕉在线一区二区| 国产成人av电影| 成人精品电影在线观看| 欧美亚洲国产一区二区三区va| 欧美日韩美少妇| 日韩欧美亚洲一区二区| 中文字幕一区二区日韩精品绯色| 亚洲图片欧美一区| 黄页网站大全一区二区| 91热门视频在线观看| 欧美精选在线播放| 中文字幕精品—区二区四季| 亚洲国产色一区| 国产精品白丝jk黑袜喷水| 色综合久久天天| 精品入口麻豆88视频| **网站欧美大片在线观看| 日韩精品乱码免费| bt欧美亚洲午夜电影天堂| 91麻豆精品国产| 亚洲欧洲精品天堂一级 | 99re这里都是精品| 日本伦理一区二区| 亚洲免费大片在线观看| 成人av网址在线| av在线一区二区三区| 欧美一区二区三区四区高清| 国产精品色噜噜| 午夜电影一区二区三区| 国产麻豆日韩欧美久久| 欧美亚洲禁片免费| 亚洲欧美日韩成人高清在线一区| 日本人妖一区二区| 亚洲成人精品一区二区| 欧美一区二区三区在线| 成人国产电影网| 日韩成人午夜精品| 国产精品久久午夜| 欧美大片免费久久精品三p| 大胆亚洲人体视频| 日韩 欧美一区二区三区| 亚洲男人电影天堂| 91精品视频网| 国内成人自拍视频| 一区二区三区精密机械公司| 欧美日高清视频| 老色鬼精品视频在线观看播放| 精品国产凹凸成av人导航| 国产激情视频一区二区三区欧美| 国产精品国产三级国产aⅴ中文| 99re热视频精品| 亚洲成av人片在www色猫咪| 91亚洲国产成人精品一区二三 | 国产成人精品三级| 日韩一区二区在线观看视频 | 欧美女孩性生活视频| 亚洲欧美视频在线观看| 99视频超级精品| 欧美国产日韩亚洲一区| 国产精品综合二区| 欧美不卡一区二区三区| 免费视频最近日韩| 欧美一区二视频| 日韩精品成人一区二区在线| 欧美日韩电影一区| 亚洲第一激情av| 欧美性大战久久久久久久蜜臀| 亚洲精品成人少妇| 日本高清不卡在线观看| 一区二区三区成人| 91激情五月电影| 一区二区三区免费| 在线免费av一区| 午夜精品福利久久久| 欧美二区三区91| 日韩在线播放一区二区| 88在线观看91蜜桃国自产| 国产精品毛片a∨一区二区三区| 久久综合av免费| 国产欧美视频一区二区三区| 久久只精品国产| 欧美吻胸吃奶大尺度电影| 性欧美疯狂xxxxbbbb| 日韩一本二本av| 成人爱爱电影网址| 激情综合网av| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人激情小说网站| 久久国产视频网| 东方aⅴ免费观看久久av| 97aⅴ精品视频一二三区| 色老头久久综合| 欧美成人艳星乳罩| 亚洲综合精品自拍| 韩日av一区二区| 色婷婷av一区二区三区软件 | 欧美mv和日韩mv国产网站| 91在线观看美女| av电影在线不卡| 色婷婷综合久久久久中文一区二区 | 4438x成人网最大色成网站| 国产成人午夜99999| 韩国av一区二区三区在线观看| 欧洲一区二区三区免费视频| 亚洲va欧美va人人爽| 日韩美一区二区三区| 国产成人精品亚洲午夜麻豆| 国产精品久久久久久户外露出 | 亚洲欧洲一区二区在线播放| 色先锋aa成人| 免费欧美日韩国产三级电影| 国产欧美日韩三级| 在线亚洲+欧美+日本专区| 美女一区二区久久| 中文av字幕一区| 欧美日韩国产小视频| 国产一区二区看久久| 亚洲精品国产一区二区精华液| 制服丝袜激情欧洲亚洲| 东方aⅴ免费观看久久av| 亚洲成a人在线观看| 久久亚洲一级片| 欧美亚洲日本一区| 国产成人自拍高清视频在线免费播放| 亚洲婷婷国产精品电影人久久| 欧美美女一区二区| 成人毛片在线观看| 日本不卡一区二区三区| 国产精品久久久99| 欧美一区二区三区男人的天堂| 成人高清视频免费观看| 日本aⅴ精品一区二区三区| 国产精品久久久久影院亚瑟| 777久久久精品| 波多野结衣中文字幕一区 | 日韩精品综合一本久道在线视频| 99在线热播精品免费| 久久精品国产亚洲aⅴ| 亚洲精品高清视频在线观看| 精品久久久久一区| 欧美亚洲日本一区| 99久久99久久精品国产片果冻| 久久国产精品99精品国产| 亚洲精品免费一二三区| 久久噜噜亚洲综合| 91精品国产一区二区| 91极品视觉盛宴| 波多野结衣中文一区| 国产精品一区二区久久不卡| 日韩黄色片在线观看| 一区二区三区欧美| 国产精品成人午夜| 久久丝袜美腿综合| 欧美一区二区三区啪啪| 欧美日韩免费视频| 一本一道综合狠狠老| 成人免费视频一区| 国产黄色精品视频| 国产一区二区三区av电影| 免费成人在线网站| 三级久久三级久久久| 亚洲午夜久久久久久久久久久| 国产精品入口麻豆原神| 2023国产精品自拍| 欧美成人精品福利| 日韩一区二区三| 51精品久久久久久久蜜臀| 欧美视频一区二区三区四区 | 亚洲动漫第一页| 亚洲精品v日韩精品| 国产精品国产馆在线真实露脸 | 国产91清纯白嫩初高中在线观看| 美腿丝袜亚洲综合| 日韩va欧美va亚洲va久久| 亚洲高清视频的网址| 亚洲第一av色| 亚洲高清免费一级二级三级| 亚洲福利国产精品| 亚洲成人自拍偷拍| 性感美女久久精品| 午夜视频一区在线观看| 亚洲v精品v日韩v欧美v专区| 亚洲国产你懂的| 亚洲国产毛片aaaaa无费看| 亚洲自拍与偷拍| 亚洲高清久久久| 五月天婷婷综合| 青青青伊人色综合久久| 日本三级韩国三级欧美三级| 久久国产免费看| 国产一区美女在线| 国产白丝网站精品污在线入口| 福利视频网站一区二区三区| 高清不卡一区二区| 色偷偷88欧美精品久久久| 欧美日韩在线播| 日韩欧美一级二级三级久久久| 久久亚洲二区三区| 国产精品久久久久三级|