www.gusucode.com > 界面漂亮的JSP论坛系统源码程序 > 界面漂亮的JSP论坛系统/Helloer/Helloer/Helloer(2.5.0)安装程序/fckeditor/editor/dialog/fck_image/fck_image.js

    ??/*

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

 *

 * Scripts related to the Image dialog window (see fck_image.html).

 */



var dialog		= window.parent ;

var oEditor		= dialog.InnerDialogLoaded() ;

var FCK			= oEditor.FCK ;

var FCKLang		= oEditor.FCKLang ;

var FCKConfig	= oEditor.FCKConfig ;

var FCKDebug	= oEditor.FCKDebug ;

var FCKTools	= oEditor.FCKTools ;



var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;



//#### Dialog Tabs



// Set the dialog tabs.

dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;



if ( FCKConfig.ImageUpload )

	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;



// Function called when a dialog tag is selected.

function OnDialogTabChange( tabCode )

{

	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;

	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;

}



// Get the selected image (if available).

var oImage = dialog.Selection.GetSelectedElement() ;



if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )

	oImage = null ;



// Get the active link.

var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;



var oImageOriginal ;



function UpdateOriginal( resetSize )

{

	if ( !eImgPreview )

		return ;



	if ( GetE('txtUrl').value.length == 0 )

	{

		oImageOriginal = null ;

		return ;

	}



	oImageOriginal = document.createElement( 'IMG' ) ;	// new Image() ;



	if ( resetSize )

	{

		oImageOriginal.onload = function()

		{

			this.onload = null ;

			ResetSizes() ;

		}

	}



	oImageOriginal.src = eImgPreview.src ;

}



var bPreviewInitialized ;



window.onload = function()

{

	// Translate the dialog box texts.

	oEditor.FCKLanguageManager.TranslatePage(document) ;



	GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;

	GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;



	// Load the selected element information (if any).

	LoadSelection() ;



	// Show/Hide the "Browse Server" button.

	GetE('tdBrowse').style.display				= FCKConfig.ImageBrowser	? '' : 'none' ;

	GetE('divLnkBrowseServer').style.display	= FCKConfig.LinkBrowser		? '' : 'none' ;



	UpdateOriginal() ;



	// Set the actual uploader URL.

	if ( FCKConfig.ImageUpload )

		GetE('frmUpload').action = FCKConfig.ImageUploadURL ;



	dialog.SetAutoSize( true ) ;



	// Activate the "OK" button.

	dialog.SetOkButton( true ) ;



	SelectField( 'txtUrl' ) ;

}



function LoadSelection()

{

	if ( ! oImage ) return ;



	var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;

	if ( sUrl == null )

		sUrl = GetAttribute( oImage, 'src', '' ) ;



	GetE('txtUrl').value    = sUrl ;

	GetE('txtAlt').value    = GetAttribute( oImage, 'alt', '' ) ;

	GetE('txtVSpace').value	= GetAttribute( oImage, 'vspace', '' ) ;

	GetE('txtHSpace').value	= GetAttribute( oImage, 'hspace', '' ) ;

	GetE('txtBorder').value	= GetAttribute( oImage, 'border', '' ) ;

	GetE('cmbAlign').value	= GetAttribute( oImage, 'align', '' ) ;



	var iWidth, iHeight ;



	var regexSize = /^\s*(\d+)px\s*$/i ;



	if ( oImage.style.width )

	{

		var aMatchW  = oImage.style.width.match( regexSize ) ;

		if ( aMatchW )

		{

			iWidth = aMatchW[1] ;

			oImage.style.width = '' ;

			SetAttribute( oImage, 'width' , iWidth ) ;

		}

	}



	if ( oImage.style.height )

	{

		var aMatchH  = oImage.style.height.match( regexSize ) ;

		if ( aMatchH )

		{

			iHeight = aMatchH[1] ;

			oImage.style.height = '' ;

			SetAttribute( oImage, 'height', iHeight ) ;

		}

	}



	GetE('txtWidth').value	= iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;

	GetE('txtHeight').value	= iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;



	// Get Advances Attributes

	GetE('txtAttId').value			= oImage.id ;

	GetE('cmbAttLangDir').value		= oImage.dir ;

	GetE('txtAttLangCode').value	= oImage.lang ;

	GetE('txtAttTitle').value		= oImage.title ;

	GetE('txtLongDesc').value		= oImage.longDesc ;



	if ( oEditor.FCKBrowserInfo.IsIE )

	{

		GetE('txtAttClasses').value = oImage.className || '' ;

		GetE('txtAttStyle').value = oImage.style.cssText ;

	}

	else

	{

		GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;

		GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;

	}



	if ( oLink )

	{

		var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;

		if ( sLinkUrl == null )

			sLinkUrl = oLink.getAttribute('href',2) ;



		GetE('txtLnkUrl').value		= sLinkUrl ;

		GetE('cmbLnkTarget').value	= oLink.target ;

	}



	UpdatePreview() ;

}



//#### The OK button was hit.

function Ok()

{

	if ( GetE('txtUrl').value.length == 0 )

	{

		dialog.SetSelectedTab( 'Info' ) ;

		GetE('txtUrl').focus() ;



		alert( FCKLang.DlgImgAlertUrl ) ;



		return false ;

	}



	var bHasImage = ( oImage != null ) ;



	if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )

	{

		if ( confirm( 'Do you want to transform the selected image on a image button?' ) )

			oImage = null ;

	}

	else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )

	{

		if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )

			oImage = null ;

	}



	oEditor.FCKUndo.SaveUndoStep() ;

	if ( !bHasImage )

	{

		if ( bImageButton )

		{

			oImage = FCK.EditorDocument.createElement( 'input' ) ;

			oImage.type = 'image' ;

			oImage = FCK.InsertElement( oImage ) ;

		}

		else

			oImage = FCK.InsertElement( 'img' ) ;

	}



	UpdateImage( oImage ) ;



	var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;



	if ( sLnkUrl.length == 0 )

	{

		if ( oLink )

			FCK.ExecuteNamedCommand( 'Unlink' ) ;

	}

	else

	{

		if ( oLink )	// Modifying an existent link.

			oLink.href = sLnkUrl ;

		else			// Creating a new link.

		{

			if ( !bHasImage )

				oEditor.FCKSelection.SelectNode( oImage ) ;



			oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;



			if ( !bHasImage )

			{

				oEditor.FCKSelection.SelectNode( oLink ) ;

				oEditor.FCKSelection.Collapse( false ) ;

			}

		}



		SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;

		SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;

	}



	return true ;

}



function UpdateImage( e, skipId )

{

	e.src = GetE('txtUrl').value ;

	SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;

	SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;

	SetAttribute( e, "width" , GetE('txtWidth').value ) ;

	SetAttribute( e, "height", GetE('txtHeight').value ) ;

	SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;

	SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;

	SetAttribute( e, "border", GetE('txtBorder').value ) ;

	SetAttribute( e, "align" , GetE('cmbAlign').value ) ;



	// Advances Attributes



	if ( ! skipId )

		SetAttribute( e, 'id', GetE('txtAttId').value ) ;



	SetAttribute( e, 'dir'		, GetE('cmbAttLangDir').value ) ;

	SetAttribute( e, 'lang'		, GetE('txtAttLangCode').value ) ;

	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;

	SetAttribute( e, 'longDesc'	, GetE('txtLongDesc').value ) ;



	if ( oEditor.FCKBrowserInfo.IsIE )

	{

		e.className = GetE('txtAttClasses').value ;

		e.style.cssText = GetE('txtAttStyle').value ;

	}

	else

	{

		SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;

		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;

	}

}



var eImgPreview ;

var eImgPreviewLink ;



function SetPreviewElements( imageElement, linkElement )

{

	eImgPreview = imageElement ;

	eImgPreviewLink = linkElement ;



	UpdatePreview() ;

	UpdateOriginal() ;



	bPreviewInitialized = true ;

}



function UpdatePreview()

{

	if ( !eImgPreview || !eImgPreviewLink )

		return ;



	if ( GetE('txtUrl').value.length == 0 )

		eImgPreviewLink.style.display = 'none' ;

	else

	{

		UpdateImage( eImgPreview, true ) ;



		if ( GetE('txtLnkUrl').value.Trim().length > 0 )

			eImgPreviewLink.href = 'javascript:void(null);' ;

		else

			SetAttribute( eImgPreviewLink, 'href', '' ) ;



		eImgPreviewLink.style.display = '' ;

	}

}



var bLockRatio = true ;



function SwitchLock( lockButton )

{

	bLockRatio = !bLockRatio ;

	lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;

	lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;



	if ( bLockRatio )

	{

		if ( GetE('txtWidth').value.length > 0 )

			OnSizeChanged( 'Width', GetE('txtWidth').value ) ;

		else

			OnSizeChanged( 'Height', GetE('txtHeight').value ) ;

	}

}



// Fired when the width or height input texts change

function OnSizeChanged( dimension, value )

{

	// Verifies if the aspect ration has to be maintained

	if ( oImageOriginal && bLockRatio )

	{

		var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;



		if ( value.length == 0 || isNaN( value ) )

		{

			e.value = '' ;

			return ;

		}



		if ( dimension == 'Width' )

			value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;

		else

			value = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;



		if ( !isNaN( value ) )

			e.value = value ;

	}



	UpdatePreview() ;

}



// Fired when the Reset Size button is clicked

function ResetSizes()

{

	if ( ! oImageOriginal ) return ;

	if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )

	{

		setTimeout( ResetSizes, 50 ) ;

		return ;

	}



	GetE('txtWidth').value  = oImageOriginal.width ;

	GetE('txtHeight').value = oImageOriginal.height ;



	UpdatePreview() ;

}



function BrowseServer()

{

	OpenServerBrowser(

		'Image',

		FCKConfig.ImageBrowserURL,

		FCKConfig.ImageBrowserWindowWidth,

		FCKConfig.ImageBrowserWindowHeight ) ;

}



function LnkBrowseServer()

{

	OpenServerBrowser(

		'Link',

		FCKConfig.LinkBrowserURL,

		FCKConfig.LinkBrowserWindowWidth,

		FCKConfig.LinkBrowserWindowHeight ) ;

}



function OpenServerBrowser( type, url, width, height )

{

	sActualBrowser = type ;

	OpenFileBrowser( url, width, height ) ;

}



var sActualBrowser ;



function SetUrl( url, width, height, alt )

{

	if ( sActualBrowser == 'Link' )

	{

		GetE('txtLnkUrl').value = url ;

		UpdatePreview() ;

	}

	else

	{

		GetE('txtUrl').value = url ;

		GetE('txtWidth').value = width ? width : '' ;

		GetE('txtHeight').value = height ? height : '' ;



		if ( alt )

			GetE('txtAlt').value = alt;



		UpdatePreview() ;

		UpdateOriginal( true ) ;

	}



	dialog.SetSelectedTab( 'Info' ) ;

}



function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )

{

	// Remove animation

	window.parent.Throbber.Hide() ;

	GetE( 'divUpload' ).style.display  = '' ;



	switch ( errorNumber )

	{

		case 0 :	// No errors

			alert( '?VGr
N Ob?R' ) ;

			break ;

		case 1 :	// Custom error

			alert( customMsg ) ;

			return ;

		case 101 :	// Custom warning

			alert( customMsg ) ;

			break ;

		case 201 :

			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;

			break ;

		case 202 :

			alert( 'Invalid file type' ) ;

			return ;

		case 203 :

			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;

			return ;

		case 500 :

			alert( 'The connector is disabled' ) ;

			break ;

		default :

			alert( 'Error on file upload. Error number: ' + errorNumber ) ;

			return ;

	}



	sActualBrowser = '' ;

	SetUrl( fileUrl ) ;

	GetE('frmUpload').reset() ;

}



var oUploadAllowedExtRegex	= new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;

var oUploadDeniedExtRegex	= new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;



function CheckUpload()

{

	var sFile = GetE('txtUploadFile').value ;



	if ( sFile.length == 0 )

	{

		alert( 'Please select a file to upload' ) ;

		return false ;

	}



	if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||

		( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )

	{

		OnUploadCompleted( 202 ) ;

		return false ;

	}



	// Show animation

	window.parent.Throbber.Show( 100 ) ;

	GetE( 'divUpload' ).style.display  = 'none' ;



	return true ;

}