Server : Apache
System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,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_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/saimikebio.com/mobile/include/fckeditor/editor/dialog/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/saimikebio.com/mobile/include/fckeditor/editor/dialog/fck_replace.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<!--

 * 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 ==

 *

 * "Find" and "Replace" dialog box window.

-->

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

	<title></title>

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

	<meta content="noindex, nofollow" name="robots" />

	<script src="common/fck_dialog_common.js" type="text/javascript"></script>

	<script type="text/javascript">



var dialog	= window.parent ;

var oEditor = dialog.InnerDialogLoaded() ;

var dialogArguments = dialog.Args() ;



var FCKLang = oEditor.FCKLang ;

var FCKDomTools = oEditor.FCKDomTools ;

var FCKDomRange = oEditor.FCKDomRange ;

var FCKListsLib = oEditor.FCKListsLib ;

var FCKTools = oEditor.FCKTools ;

var EditorDocument = oEditor.FCK.EditorDocument ;

var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' )  ;



dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;

dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;

var idMap = {} ;



function OnDialogTabChange( tabCode )

{

	ShowE( 'divFind', ( tabCode == 'Find' ) ) ;

	ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ;

	idMap['FindText'] = 'txtFind' + tabCode ;

	idMap['CheckCase'] = 'chkCase' + tabCode ;

	idMap['CheckWord'] = 'chkWord' + tabCode ;



	if ( tabCode == 'Replace' )

		dialog.SetAutoSize( true ) ;

}



GetNextNonEmptyTextNode = function( node, stopNode )

{

	while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )

		1 ;

	return node ;

}



CharacterCursor = function( arg )

{

	if ( arg.nodeType && arg.nodeType == 9 )

	{

		this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;

		this._offset = 0 ;

		this._doc = arg ;

	}

	else

	{

		this._textNode = arguments[0] ;

		this._offset = arguments[1] ;

		this._doc = FCKTools.GetElementDocument( arguments[0] ) ;

	}

}

CharacterCursor.prototype =

{

	GetCharacter : function()

	{

		return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;

	},



	// Non-normalized.

	GetTextNode : function()

	{

		return this._textNode ;

	},



	// Non-normalized.

	GetIndex : function()

	{

		return this._offset ;

	},



	// Return value means whehther we've crossed a line break or a paragraph boundary.

	MoveNext : function()

	{

		if ( this._offset < this._textNode.length - 1 )

		{

			this._offset++ ;

			return false ;

		}



		var crossed = false ;

		var curNode = this._textNode ;

		while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )

				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )

		{

			var tag = curNode.nodeName.toLowerCase() ;

			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )

				crossed = true ;

		}



		this._textNode = curNode ;

		this._offset = 0 ;

		return crossed ;

	},



	// Return value means whehther we've crossed a line break or a paragraph boundary.

	MoveBack : function()

	{

		if ( this._offset > 0 && this._textNode.length > 0 )

		{

			this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;

			return false ;

		}



		var crossed = false ;

		var curNode = this._textNode ;

		while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )

				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )

		{

			var tag = curNode.nodeName.toLowerCase() ;

			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )

				crossed = true ;

		}



		this._textNode = curNode ;

		this._offset = curNode.length - 1 ;

		return crossed ;

	},



	Clone : function()

	{

		return new CharacterCursor( this._textNode, this._offset ) ;

	}

} ;



CharacterRange = function( initCursor, maxLength )

{

	this._cursors = initCursor.push ? initCursor : [initCursor] ;

	this._maxLength = maxLength ;

	this._highlightRange = null ;

}

CharacterRange.prototype =

{

	ToDomRange : function()

	{

		var firstCursor = this._cursors[0] ;

		var lastCursor = this._cursors[ this._cursors.length - 1 ] ;

		var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;

		var w3cRange = domRange._Range = domRange.CreateRange() ;

		w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;

		w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;

		domRange._UpdateElementInfo() ;

		return domRange ;

	},



	Highlight : function()

	{

		if ( this._cursors.length < 1 )

			return ;



		var domRange = this.ToDomRange() ;

		HighlightStyle.ApplyToRange( domRange, false, true ) ;

		this._highlightRange = domRange ;



		var charRange = CharacterRange.CreateFromDomRange( domRange ) ;

		var focusNode = domRange.StartNode ;

		if ( focusNode.nodeType != 1 )

			focusNode = focusNode.parentNode ;

		FCKDomTools.ScrollIntoView( focusNode, false ) ;

		this._cursors = charRange._cursors ;

	},



	RemoveHighlight : function()

	{

		if ( this._highlightRange )

		{

			HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;

			var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;

			this._cursors = charRange._cursors ;

			this._highlightRange = null ;

		}

	},



	GetHighlightDomRange : function()

	{

		return this._highlightRange;

	},



	MoveNext : function()

	{

		var next = this._cursors[ this._cursors.length - 1 ].Clone() ;

		var retval = next.MoveNext() ;

		if ( retval )

			this._cursors = [] ;

		this._cursors.push( next ) ;

		if ( this._cursors.length > this._maxLength )

			this._cursors.shift() ;

		return retval ;

	},



	MoveBack : function()

	{

		var prev = this._cursors[0].Clone() ;

		var retval = prev.MoveBack() ;

		if ( retval )

			this._cursors = [] ;

		this._cursors.unshift( prev ) ;

		if ( this._cursors.length > this._maxLength )

			this._cursors.pop() ;

		return retval ;

	},



	GetEndCharacter : function()

	{

		if ( this._cursors.length < 1 )

			return null ;

		var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;

		return retval ;

	},



	GetNextRange : function( len )

	{

		if ( this._cursors.length == 0 )

			return null ;

		var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;

		cur.MoveNext() ;

		return new CharacterRange( cur, len ) ;

	},



	GetCursors : function()

	{

		return this._cursors ;

	}

} ;



CharacterRange.CreateFromDomRange = function( domRange )

{

	var w3cRange = domRange._Range ;

	var startContainer = w3cRange.startContainer ;

	var endContainer = w3cRange.endContainer ;

	var startTextNode, startIndex, endTextNode, endIndex ;



	if ( startContainer.nodeType == 3 )

	{

		startTextNode = startContainer ;

		startIndex = w3cRange.startOffset ;

	}

	else if ( domRange.StartNode.nodeType == 3 )

	{

		startTextNode = domRange.StartNode ;

		startIndex = 0 ;

	}

	else

	{

		startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;

		if ( !startTextNode )

			return null ;

		startIndex = 0 ;

	}



	if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )

	{

		endTextNode = endContainer ;

		endIndex = w3cRange.endOffset - 1 ;

	}

	else

	{

		endTextNode = domRange.EndNode ;

		while ( endTextNode.nodeType != 3 )

			endTextNode = endTextNode.lastChild ;

		endIndex = endTextNode.length - 1 ;

	}



	var cursors = [] ;

	var current = new CharacterCursor( startTextNode, startIndex ) ;

	cursors.push( current ) ;

	if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )

	{

		do

		{

			current = current.Clone() ;

			current.MoveNext() ;

			cursors.push( current ) ;

		}

		while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;

	}



	return new CharacterRange( cursors, cursors.length ) ;

}



// Knuth-Morris-Pratt Algorithm for stream input

KMP_NOMATCH = 0 ;

KMP_ADVANCED = 1 ;

KMP_MATCHED = 2 ;

KmpMatch = function( pattern, ignoreCase )

{

	var overlap = [ -1 ] ;

	for ( var i = 0 ; i < pattern.length ; i++ )

	{

		overlap.push( overlap[i] + 1 ) ;

		while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) )

			overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ;

	}

	this._Overlap = overlap ;

	this._State = 0 ;

	this._IgnoreCase = ( ignoreCase === true ) ;

	if ( ignoreCase )

		this.Pattern = pattern.toLowerCase();

	else

		this.Pattern = pattern ;

}

KmpMatch.prototype = {

	FeedCharacter : function( c )

	{

		if ( this._IgnoreCase )

			c = c.toLowerCase();



		while ( true )

		{

			if ( c == this.Pattern.charAt( this._State ) )

			{

				this._State++ ;

				if ( this._State == this.Pattern.length )

				{

					// found a match, start over, don't care about partial matches involving the current match

					this._State = 0;

					return KMP_MATCHED;

				}

				return KMP_ADVANCED ;

			}

			else if ( this._State == 0 )

				return KMP_NOMATCH;

			else

				this._State = this._Overlap[ this._State ];

		}



		return null ;

	},



	Reset : function()

	{

		this._State = 0 ;

	}

};



// Place a range at the start of document.

function OnLoad()

{

	// First of all, translate the dialog box texts.

	oEditor.FCKLanguageManager.TranslatePage( document ) ;



	// Show the appropriate tab at startup.

	if ( dialogArguments.CustomValue == 'Find' )

	{

		dialog.SetSelectedTab( 'Find' ) ;

		dialog.SetAutoSize( true ) ;

	}

	else

		dialog.SetSelectedTab( 'Replace' ) ;



	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;

}



function btnStat()

{

	GetE('btnReplace').disabled =

		GetE('btnReplaceAll').disabled =

			GetE('btnFind').disabled =

				( GetE(idMap["FindText"]).value.length == 0 ) ;

}



function btnStatDelayed()

{

	setTimeout( btnStat, 1 ) ;

}



function GetSearchString()

{

	return GetE(idMap['FindText']).value ;

}



function GetReplaceString()

{

	return GetE("txtReplace").value ;

}



function GetCheckCase()

{

	return !! ( GetE(idMap['CheckCase']).checked ) ;

}



function GetMatchWord()

{

	return !! ( GetE(idMap['CheckWord']).checked ) ;

}



/* Is this character a unicode whitespace or a punctuation mark?

 * References:

 * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)

 * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)

 */

function CheckIsWordSeparator( c )

{

	var code = c.charCodeAt( 0 );

	if ( code >= 9 && code <= 0xd )

		return true;

	if ( code >= 0x2000 && code <= 0x200a )

		return true;

	switch ( code )

	{

		case 0x20:

		case 0x85:

		case 0xa0:

		case 0x1680:

		case 0x180e:

		case 0x2028:

		case 0x2029:

		case 0x202f:

		case 0x205f:

		case 0x3000:

			return true;

		default:

	}

	return /[.,"'?!;:]/.test( c ) ;

}



FindRange = null ;

function _Find()

{

	var searchString = GetSearchString() ;

	if ( !FindRange )

		FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;

	else

	{

		FindRange.RemoveHighlight() ;

		FindRange = FindRange.GetNextRange( searchString.length ) ;

	}

	var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;

	var matchState = KMP_NOMATCH ;

	var character = '%' ;



	while ( character != null )

	{

		while ( ( character = FindRange.GetEndCharacter() ) )

		{

			matchState = matcher.FeedCharacter( character ) ;

			if ( matchState == KMP_MATCHED )

				break ;

			if ( FindRange.MoveNext() )

				matcher.Reset() ;

		}



		if ( matchState == KMP_MATCHED )

		{

			if ( GetMatchWord() )

			{

				var cursors = FindRange.GetCursors() ;

				var head = cursors[ cursors.length - 1 ].Clone() ;

				var tail = cursors[0].Clone() ;

				if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )

					continue ;

				if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )

					continue ;

			}



			FindRange.Highlight() ;

			return true ;

		}

	}



	FindRange = null ;

	return false ;

}



function Find()

{

	if ( ! _Find() )

		alert( FCKLang.DlgFindNotFoundMsg ) ;

}



function Replace()

{

	var saveUndoStep = function( selectRange )

	{

		var ieRange ;

		if ( oEditor.FCKBrowserInfo.IsIE )

			ieRange = document.selection.createRange() ;



		selectRange.Select() ;

		oEditor.FCKUndo.SaveUndoStep() ;

		var cloneRange = selectRange.Clone() ;

		cloneRange.Collapse( false ) ;

		cloneRange.Select() ;



		if ( ieRange )

			setTimeout( function(){ ieRange.select() ; }, 1 ) ;

	}



	if ( FindRange && FindRange.GetHighlightDomRange() )

	{

		var range = FindRange.GetHighlightDomRange() ;

		var bookmark = range.CreateBookmark() ;

		FindRange.RemoveHighlight() ;

		range.MoveToBookmark( bookmark ) ;



		saveUndoStep( range ) ;

		range.DeleteContents() ;

		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;

		range._UpdateElementInfo() ;



		FindRange = CharacterRange.CreateFromDomRange( range ) ;

	}

	else

	{

		if ( ! _Find() )

		{

			FindRange && FindRange.RemoveHighlight() ;

			alert( FCKLang.DlgFindNotFoundMsg ) ;

		}

	}

}



function ReplaceAll()

{

	oEditor.FCKUndo.SaveUndoStep() ;

	var replaceCount = 0 ;



	while ( _Find() )

	{

		var range = FindRange.GetHighlightDomRange() ;

		var bookmark = range.CreateBookmark() ;

		FindRange.RemoveHighlight() ;

		range.MoveToBookmark( bookmark) ;



		range.DeleteContents() ;

		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;

		range._UpdateElementInfo() ;



		FindRange = CharacterRange.CreateFromDomRange( range ) ;

		replaceCount++ ;

	}

	if ( replaceCount == 0 )

	{

		FindRange && FindRange.RemoveHighlight() ;

		alert( FCKLang.DlgFindNotFoundMsg ) ;

	}

	dialog.Cancel() ;

}



window.onunload = function()

{

	if ( FindRange )

	{

		FindRange.RemoveHighlight() ;

		FindRange.ToDomRange().Select() ;

	}

}

	</script>

</head>

<body onload="OnLoad()" style="overflow: hidden">

	<div id="divFind" style="display: none">

		<table cellspacing="3" cellpadding="2" width="100%" border="0">

			<tr>

				<td nowrap="nowrap">

					<label for="txtFindFind" fcklang="DlgReplaceFindLbl">

						Find what:</label>

				</td>

				<td width="100%">

					<input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"

						type="text" />

				</td>

				<td>

					<input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();"

						type="button" value="Find" fcklang="DlgFindFindBtn" />

				</td>

			</tr>

			<tr>

				<td valign="bottom" colspan="3">

					&nbsp;<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match

						case</label>

					<br />

					&nbsp;<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match

						whole word</label>

				</td>

			</tr>

		</table>

	</div>

	<div id="divReplace" style="display:none">

		<table cellspacing="3" cellpadding="2" width="100%" border="0">

			<tr>

				<td nowrap="nowrap">

					<label for="txtFindReplace" fcklang="DlgReplaceFindLbl">

						Find what:</label>

				</td>

				<td width="100%">

					<input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"

						type="text" />

				</td>

				<td>

					<input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();"

						type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />

				</td>

			</tr>

			<tr>

				<td valign="top" nowrap="nowrap">

					<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">

						Replace with:</label>

				</td>

				<td valign="top">

					<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />

				</td>

				<td>

					<input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button"

						value="Replace All" fcklang="DlgReplaceReplAllBtn" />

				</td>

			</tr>

			<tr>

				<td valign="bottom" colspan="3">

					&nbsp;<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match

						case</label>

					<br />

					&nbsp;<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match

						whole word</label>

				</td>

			</tr>

		</table>

	</div>

</body>

</html>