亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产午夜亚洲精品午夜鲁丝片| 国产精品一区二区三区四区| 成人黄色国产精品网站大全在线免费观看| 久久―日本道色综合久久| 91在线观看高清| 成人av在线电影| 国内精品久久久久影院色| 国产日韩在线不卡| 高清beeg欧美| 青青草国产精品亚洲专区无| 国产欧美日韩三级| 欧美午夜视频网站| 国产精品中文字幕日韩精品| 亚洲成a人在线观看| 亚洲精品一区二区三区香蕉| av电影在线不卡| 国产综合色精品一区二区三区| 亚洲国产日日夜夜| 亚洲国产精品人人做人人爽| 亚洲精品欧美综合四区| 久久久精品tv| 精品国产污污免费网站入口| 国产精品毛片a∨一区二区三区| 精品少妇一区二区三区日产乱码| 91精品国产综合久久精品图片| 欧美三级中文字幕| 5月丁香婷婷综合| 日韩欧美国产wwwww| 日韩欧美一区二区不卡| 精品日韩一区二区三区免费视频| 日韩视频一区在线观看| 日韩欧美卡一卡二| 久久久91精品国产一区二区精品| 亚洲国产成人在线| 五月婷婷综合在线| 国产福利不卡视频| 色哟哟一区二区在线观看| 欧美高清www午色夜在线视频| 国产欧美日韩卡一| 精品处破学生在线二十三| 国产精品欧美一区喷水| 亚洲国产欧美日韩另类综合 | 国产亚洲人成网站| 国产精品第四页| 一区二区三区免费在线观看| 美国av一区二区| 一本色道a无线码一区v| 日韩午夜中文字幕| 亚洲麻豆国产自偷在线| 久久er精品视频| 欧美丝袜丝交足nylons| 久久综合久色欧美综合狠狠| 亚洲尤物视频在线| 成人理论电影网| 久久一夜天堂av一区二区三区| 成人黄色小视频| 国产欧美日本一区二区三区| 亚洲色图色小说| 国产一区二区看久久| 91精品一区二区三区在线观看| 综合激情成人伊人| 国产成人综合精品三级| 91精品国产入口在线| 亚洲风情在线资源站| 色婷婷亚洲一区二区三区| 久久久不卡网国产精品二区| 久久99精品久久久久| 欧美一区二区三区免费大片| 亚洲香蕉伊在人在线观| 色婷婷一区二区三区四区| 亚洲精品午夜久久久| 99精品热视频| 亚洲尤物视频在线| 69p69国产精品| 久久se精品一区精品二区| 日韩你懂的在线观看| 国产原创一区二区三区| 欧美国产乱子伦| 一本一道久久a久久精品综合蜜臀| 亚洲欧美偷拍另类a∨色屁股| 91蜜桃网址入口| 免费看黄色91| 成人免费一区二区三区视频 | 日韩一区在线免费观看| 在线成人小视频| 黑人巨大精品欧美黑白配亚洲| 久久97超碰色| 日韩久久精品一区| 成人夜色视频网站在线观看| 成人在线综合网站| 国产日韩欧美a| 欧美一区二区三区啪啪| 色综合久久九月婷婷色综合| 一本一道久久a久久精品| 亚洲国产日韩a在线播放性色| 久久综合色播五月| 欧美高清视频一二三区| 91蜜桃网址入口| 成人毛片老司机大片| 国产成人小视频| 日本v片在线高清不卡在线观看| 亚洲欧美乱综合| 欧美国产日韩a欧美在线观看| 欧美一区二区三区日韩| 欧美一区二区黄色| 日韩欧美一区在线| 2024国产精品视频| 精品国产网站在线观看| 久久久蜜桃精品| 中文字幕 久热精品 视频在线| www日韩大片| 国产欧美日本一区视频| 中文字幕一区二区三区不卡| 日本一区二区不卡视频| 国产精品久久久久久久久图文区| 中文字幕中文乱码欧美一区二区| 中文字幕一区二区在线播放| 亚洲韩国精品一区| 日韩成人dvd| 成人午夜激情在线| 欧美视频在线不卡| 日韩精品中文字幕在线一区| 欧美激情一区二区在线| 一区二区高清在线| 麻豆国产精品一区二区三区 | 中文字幕欧美国产| 亚洲大片精品永久免费| 国产乱国产乱300精品| 91搞黄在线观看| 久久影音资源网| 五月天精品一区二区三区| 成人免费视频视频在线观看免费| 91福利社在线观看| 精品理论电影在线观看| 亚洲成人手机在线| 国产不卡免费视频| 欧美一区二区在线观看| 亚洲欧美综合色| 紧缚捆绑精品一区二区| 欧美日韩成人在线一区| 亚洲精品视频在线看| 不卡区在线中文字幕| 欧美mv日韩mv亚洲| 国产91丝袜在线播放九色| 色婷婷久久一区二区三区麻豆| 国产精品欧美久久久久无广告 | 视频在线观看一区二区三区| 99久久精品国产观看| 国产精品久久免费看| 成人免费观看视频| 国产精品久久一级| 一本色道亚洲精品aⅴ| 国产精品无圣光一区二区| 国产成人亚洲综合a∨婷婷图片| 国产日韩欧美综合一区| 岛国av在线一区| 亚洲特黄一级片| 欧美三区在线观看| 激情亚洲综合在线| 国产精品不卡在线| 欧美喷水一区二区| 高清成人免费视频| 亚洲一区免费视频| 欧美不卡一区二区三区四区| 国产原创一区二区| 国产精品久久久久久福利一牛影视 | 欧美日韩在线播放三区四区| 麻豆精品在线视频| 色哟哟国产精品免费观看| 日韩av在线发布| 久久久久久97三级| 欧美日韩在线播放三区四区| 国产激情91久久精品导航| 亚洲美女屁股眼交3| 国产日产欧产精品推荐色 | 亚洲第一搞黄网站| 欧美激情一区三区| 日韩欧美国产一区二区三区 | 国产一区不卡视频| 亚洲va在线va天堂| 日韩伦理免费电影| 久久久亚洲精品石原莉奈| 欧美一级专区免费大片| 91国产丝袜在线播放| 91一区二区在线| 成人av在线资源网站| 国产精品一品二品| 奇米影视在线99精品| 石原莉奈在线亚洲二区| 亚洲成人av在线电影| 樱桃视频在线观看一区| 中文字幕一区二区三区四区| 欧美国产在线观看| 国产人成亚洲第一网站在线播放| 亚洲精品一区在线观看| 久久亚洲春色中文字幕久久久| 日韩欧美亚洲国产精品字幕久久久 | 亚洲色图欧洲色图| 亚洲电影视频在线| 青青草97国产精品免费观看无弹窗版|