<% 
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2006 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * 		http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * 		http://www.fckeditor.net/
 * 
 * File Name: fckeditor.afp
 *	This is the integration file for Active FoxPro Pages.
 * 
 * Version:  1.01 
 * Modified: 2006-11-13
 * 
 * File Authors: Soenke Freitag (www.afp-hosting.de)
 * 		

DEFINE CLASS goFckeditor AS CONTAINER OLEPUBLIC

	cInstanceName =""
	BasePath =""
	cWIDTH =""
	cHEIGHT =""
	ToolbarSet =""
	cValue=""
	DIMENSION aConfig(10,2)

&& -----------------------------------------------------------------------
	FUNCTION fckeditor( tcInstanceName )
		LOCAL lnLoop,lnLoop2
		THIS.cInstanceName	= tcInstanceName
		THIS.BasePath	= '/fckeditor/'
		THIS.cWIDTH		= '100%'
		THIS.cHEIGHT	= '200'
		THIS.ToolbarSet	= 'Default'
		THIS.cValue		= ''
		FOR lnLoop=1 TO 10
			FOR lnLoop2=1 TO 2
				THIS.aConfig(lnLoop,lnLoop2)	= ""
			NEXT
		NEXT
		RETURN
	ENDFUNC


&& -----------------------------------------------------------------------
	FUNCTION CREATE()
		? THIS.CreateHtml()
		RETURN
	ENDFUNC

&& -----------------------------------------------------------------------
	FUNCTION CreateHtml()
		LOCAL html
		LOCAL lcLink

		HtmlValue = THIS.cValue		&& HTMLSPECIALCHARS()

		html = [<div>]
		IF THIS.IsCompatible()
			lcLink = THIS.BasePath+[editor/fckeditor.html?InstanceName=]+THIS.cInstanceName

			IF ( !THIS.ToolbarSet == '' )
				lcLink = lcLink + [&Toolbar=]+THIS.ToolbarSet
			ENDIF

			&& Render the LINKED HIDDEN FIELD.
			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[" name="]+THIS.cInstanceName +[" value="]+HtmlValue+[" style="display:none" />]

			&& Render the configurations HIDDEN FIELD.
			html = html + [<input type="hidden" id="]+THIS.cInstanceName +[___Config" value="]+THIS.GetConfigFieldString() + [" style="display:none" />] +CHR(13)+CHR(10)

			&& Render the EDITOR IFRAME.
			html = html + [<iframe id="]+THIS.cInstanceName +[___Frame" src="Link" width="]+THIS.cWIDTH+[" height="]+THIS.cHEIGHT+[" frameborder="0" scrolling="no"></iframe>]
		ELSE
			IF ( AT("%", THIS.cWIDTH)=0 )
				WidthCSS = THIS.cWIDTH + 'px'
			ELSE
				WidthCSS = THIS.cWIDTH
			ENDIF

			IF ( AT("%",THIS.cHEIGHT)=0  )
				HeightCSS = THIS.cHEIGHT + 'px'
			ELSE
				HeightCSS = THIS.cHEIGHT
			ENDIF

			html = html + [<textarea name="]+THIS.cInstanceName +[" rows="4" cols="40" style="width: ]+WidthCSS+[ height: ]+HeightCSS+[">]+HtmlValue+[</textarea>]
		ENDIF

		html = html + [</div>]

		RETURN (html)
	ENDFUNC


&& -----------------------------------------------------------------------
	FUNCTION IsCompatible()
		LOCAL llRetval
		LOCAL sAgent

		llRetval=.F.


		sAgent = LOWER(ALLTRIM(request.servervariables("HTTP_USER_AGENT")))

		IF AT("msie",sAgent) >0 .AND. AT("mac",sAgent)=0 .AND. AT("opera",sAgent)=0
			iVersion=VAL(SUBSTR(sAgent,AT("msie",sAgent)+5,3))
			llRetval= iVersion > 5.5
		ELSE
			IF AT("gecko",sAgent)>0
				iVersion=VAL(SUBSTR(sAgent,AT("gecko/",sAgent)+6,8))
				llRetval =iVersion > 20030210
			ENDIF
		ENDIF
		RETURN (llRetval)
	ENDFUNC

&& -----------------------------------------------------------------------
	FUNCTION GetConfigFieldString()
		LOCAL sParams
		LOCAL bFirst
		LOCAL sKey
		sParams = ""
		bFirst = .T.
		FOR lnLoop=1 TO 10 && ALEN(this.aconfig)
			IF !EMPTY(THIS.aConfig(lnLoop,1))
				IF bFirst = .F.
					sParams = sParams + "&"
				ELSE
					bFirst = .F.
				ENDIF
				sParams = sParams +THIS.aConfig(lnLoop,1)+[=]+THIS.aConfig(lnLoop,2)
			ELSE
				EXIT
			ENDIF
		NEXT
		RETURN(sParams)
	ENDFUNC
ENDDEFINE
%>