Hacked By AnonymousFox

Current Path : C:/AppServ/www/new_msd1/webengine/lib/htmleditor/editor/dialog/fck_link/
Upload File :
Current File : C:/AppServ/www/new_msd1/webengine/lib/htmleditor/editor/dialog/fck_link/fck_link.js

/*

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

 * 

 * "Support Open Source software. What about a donation today?"

 * 

 * File Name: fck_link.js

 * 	Scripts related to the Link dialog window (see fck_link.html).

 * 

 * File Authors:

 * 		Frederico Caldeira Knabben (fredck@fckeditor.net)

 * 		Dominik Pesch ?dom? (empty selection patch) (d.pesch@11com7.de)

 */



var oEditor		= window.parent.InnerDialogLoaded() ;

var FCK			= oEditor.FCK ;

var FCKLang		= oEditor.FCKLang ;

var FCKConfig	= oEditor.FCKConfig ;



//#### Dialog Tabs



// Set the dialog tabs.

window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;



if ( !FCKConfig.LinkDlgHideTarget )

	window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;



if ( FCKConfig.LinkUpload )

	window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;



if ( !FCKConfig.LinkDlgHideAdvanced )

	window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;



// Function called when a dialog tag is selected.

function OnDialogTabChange( tabCode )

{

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

	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;

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

	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;



	window.parent.SetAutoSize( true ) ;

}



//#### Regular Expressions library.

var oRegex = new Object() ;



oRegex.UriProtocol = new RegExp('') ;

oRegex.UriProtocol.compile( '^(((http|https|ftp|news):\/\/)|mailto:)', 'gi' ) ;



oRegex.UrlOnChangeProtocol = new RegExp('') ;

oRegex.UrlOnChangeProtocol.compile( '^(http|https|ftp|news)://(?=.)', 'gi' ) ;



oRegex.UrlOnChangeTestOther = new RegExp('') ;

//oRegex.UrlOnChangeTestOther.compile( '^(javascript:|#|/)', 'gi' ) ;

oRegex.UrlOnChangeTestOther.compile( '^((javascript:)|[#/\.])', 'gi' ) ; 



oRegex.ReserveTarget = new RegExp('') ;

oRegex.ReserveTarget.compile( '^_(blank|self|top|parent)$', 'i' ) ;



oRegex.PopupUri = new RegExp('') ;

oRegex.PopupUri.compile( "^javascript:void\\(\\s*window.open\\(\\s*'([^']+)'\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*\\)\\s*$" ) ;



oRegex.PopupFeatures = new RegExp('') ;

oRegex.PopupFeatures.compile( '(?:^|,)([^=]+)=(\\d+|yes|no)', 'gi' ) ;



//#### Parser Functions



var oParser = new Object() ;



oParser.ParseEMailUrl = function( emailUrl )

{

	// Initializes the EMailInfo object.

	var oEMailInfo = new Object() ;

	oEMailInfo.Address	= '' ;

	oEMailInfo.Subject	= '' ;

	oEMailInfo.Body		= '' ;



	var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;

	if ( oParts )

	{

		// Set the e-mail address.

		oEMailInfo.Address = oParts[1] ;



		// Look for the optional e-mail parameters.

		if ( oParts[2] )

		{

			var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;

			if ( oMatch ) oEMailInfo.Subject = unescape( oMatch[2] ) ;



			oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;

			if ( oMatch ) oEMailInfo.Body = unescape( oMatch[2] ) ;

		}

	}



	return oEMailInfo ;

}



oParser.CreateEMailUri = function( address, subject, body )

{

	var sBaseUri = 'mailto:' + address ;



	var sParams = '' ;



	if ( subject.length > 0 )

		sParams = '?subject=' + escape( subject ) ;



	if ( body.length > 0 )

	{

		sParams += ( sParams.length == 0 ? '?' : '&' ) ;

		sParams += 'body=' + escape( body ) ;

	}



	return sBaseUri + sParams ;

}



//#### Initialization Code



// oLink: The actual selected link in the editor.

var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;

if ( oLink )

	FCK.Selection.SelectNode( oLink ) ;



window.onload = function()

{

	// Translate the dialog box texts.

	oEditor.FCKLanguageManager.TranslatePage(document) ;



	// Fill the Anchor Names and Ids combos.

	LoadAnchorNamesAndIds() ;



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

	LoadSelection() ;



	// Update the dialog box.

	SetLinkType( GetE('cmbLinkType').value ) ;



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

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



	// Show the initial dialog content.

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



	// Set the actual uploader URL.

	if ( FCKConfig.LinkUpload )

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



	// Activate the "OK" button.

	window.parent.SetOkButton( true ) ;

}



var bHasAnchors ;



function LoadAnchorNamesAndIds()

{

	// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon 

	// to edit them. So, we must look for that images now.

	var aAnchors = new Array() ;

	

	var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;

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

	{

		if ( oImages[i].getAttribute('_fckanchor') )

			aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;

	}

	

	var aIds = oEditor.FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;



	bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;



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

	{

		var sName = aAnchors[i].name ;

		if ( sName && sName.length > 0 )

			oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;

	}



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

	{

		oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;

	}



	ShowE( 'divSelAnchor'	, bHasAnchors ) ;

	ShowE( 'divNoAnchor'	, !bHasAnchors ) ;

}



function LoadSelection()

{

	if ( !oLink ) return ;



	var sType = 'url' ;



	// Get the actual Link href.

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

	if ( sHRef == null )

		sHRef = oLink.getAttribute( 'href' , 2 ) + '' ;

	

	// Look for a popup javascript link.

	var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;

	if( oPopupMatch )

	{

		GetE('cmbTarget').value = 'popup' ;

		sHRef = oPopupMatch[1] ;

		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;

		SetTarget( 'popup' ) ;

	}



	// Search for the protocol.

	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;



	if ( sProtocol )

	{

		sProtocol = sProtocol[0].toLowerCase() ;

		GetE('cmbLinkProtocol').value = sProtocol ;



		// Remove the protocol and get the remainig URL.

		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;



		if ( sProtocol == 'mailto:' )	// It is an e-mail link.

		{

			sType = 'email' ;



			var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;

			GetE('txtEMailAddress').value	= oEMailInfo.Address ;

			GetE('txtEMailSubject').value	= oEMailInfo.Subject ;

			GetE('txtEMailBody').value		= oEMailInfo.Body ;

		}

		else				// It is a normal link.

		{

			sType = 'url' ;

			GetE('txtUrl').value = sUrl ;

		}

	}

	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.

	{

		sType = 'anchor' ;

		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;

	}

	else					// It is another type of link.

	{

		sType = 'url' ;



		GetE('cmbLinkProtocol').value = '' ;

		GetE('txtUrl').value = sHRef ;

	}



	if ( !oPopupMatch )

	{

		// Get the target.

		var sTarget = oLink.target ;



		if ( sTarget && sTarget.length > 0 )

		{

			if ( oRegex.ReserveTarget.test( sTarget ) )

			{

				sTarget = sTarget.toLowerCase() ;

				GetE('cmbTarget').value = sTarget ;

			}

			else

				GetE('cmbTarget').value = 'frame' ;

			GetE('txtTargetFrame').value = sTarget ;

		}

	}



	// Get Advances Attributes

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

	GetE('txtAttName').value		= oLink.name ;

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

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

	GetE('txtAttAccessKey').value	= oLink.accessKey ;

	GetE('txtAttTabIndex').value	= oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;

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

	GetE('txtAttContentType').value	= oLink.type ;

	GetE('txtAttCharSet').value		= oLink.charset ;



	if ( oEditor.FCKBrowserInfo.IsIE )

	{

		GetE('txtAttClasses').value	= oLink.getAttribute('className',2) || '' ;

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

	}

	else

	{

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

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

	}



	// Update the Link type combo.

	GetE('cmbLinkType').value = sType ;

}



//#### Link type selection.

function SetLinkType( linkType )

{

	ShowE('divLinkTypeUrl'		, (linkType == 'url') ) ;

	ShowE('divLinkTypeAnchor'	, (linkType == 'anchor') ) ;

	ShowE('divLinkTypeEMail'	, (linkType == 'email') ) ;



	if ( !FCKConfig.LinkDlgHideTarget )

		window.parent.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;



	if ( FCKConfig.LinkUpload )

		window.parent.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;



	if ( !FCKConfig.LinkDlgHideAdvanced )

		window.parent.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;



	if ( linkType == 'email' )

		window.parent.SetAutoSize( true ) ;

}



//#### Target type selection.

function SetTarget( targetType )

{

	GetE('tdTargetFrame').style.display	= ( targetType == 'popup' ? 'none' : '' ) ;

	GetE('tdPopupName').style.display	=

		GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;



	switch ( targetType )

	{

		case "_blank" :

		case "_self" :

		case "_parent" :

		case "_top" :

			GetE('txtTargetFrame').value = targetType ;

			break ;

		case "" :

			GetE('txtTargetFrame').value = '' ;

			break ;

	}



	if ( targetType == 'popup' )

		window.parent.SetAutoSize( true ) ;

}



//#### Called while the user types the URL.

function OnUrlChange()

{

	var sUrl = GetE('txtUrl').value ;

	var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;



	if ( sProtocol )

	{

		sUrl = sUrl.substr( sProtocol[0].length ) ;

		GetE('txtUrl').value = sUrl ;

		GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;

	}

	else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )

	{

		GetE('cmbLinkProtocol').value = '' ;

	}

}



//#### Called while the user types the target name.

function OnTargetNameChange()

{

	var sFrame = GetE('txtTargetFrame').value ;



	if ( sFrame.length == 0 )

		GetE('cmbTarget').value = '' ;

	else if ( oRegex.ReserveTarget.test( sFrame ) )

		GetE('cmbTarget').value = sFrame.toLowerCase() ;

	else

		GetE('cmbTarget').value = 'frame' ;

}



//#### Builds the javascript URI to open a popup to the specified URI.

function BuildPopupUri( uri )

{

	var oReg = new RegExp( "'", "g" ) ;

	var sWindowName = "'" + GetE('txtPopupName').value.replace(oReg, "\\'") + "'" ;



	var sFeatures = '' ;

	var aChkFeatures = document.getElementsByName('chkFeature') ;

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

	{

		if ( i > 0 ) sFeatures += ',' ;

		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;

	}



	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;

	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;

	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;

	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;



	return ( "javascript:void(window.open('" + uri + "'," + sWindowName + ",'" + sFeatures + "'))" ) ;

}



//#### Fills all Popup related fields.

function FillPopupFields( windowName, features )

{

	if ( windowName )

		GetE('txtPopupName').value = windowName ;



	var oFeatures = new Object() ;

	var oFeaturesMatch ;

	while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )

	{

		var sValue = oFeaturesMatch[2] ;

		if ( sValue == ( 'yes' || '1' ) )

			oFeatures[ oFeaturesMatch[1] ] = true ;

		else if ( ! isNaN( sValue ) && sValue != 0 )

			oFeatures[ oFeaturesMatch[1] ] = sValue ;

	}



	// Update all features check boxes.

	var aChkFeatures = document.getElementsByName('chkFeature') ;

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

	{

		if ( oFeatures[ aChkFeatures[i].value ] )

			aChkFeatures[i].checked = true ;

	}



	// Update position and size text boxes.

	if ( oFeatures['width'] )	GetE('txtPopupWidth').value		= oFeatures['width'] ;

	if ( oFeatures['height'] )	GetE('txtPopupHeight').value	= oFeatures['height'] ;

	if ( oFeatures['left'] )	GetE('txtPopupLeft').value		= oFeatures['left'] ;

	if ( oFeatures['top'] )		GetE('txtPopupTop').value		= oFeatures['top'] ;

}



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

function Ok()

{

	var sUri, sInnerHtml ;



	switch ( GetE('cmbLinkType').value )

	{

		case 'url' :

			sUri = GetE('txtUrl').value ;



			if ( sUri.length == 0 )

			{

				alert( FCKLang.DlnLnkMsgNoUrl ) ;

				return false ;

			}



			sUri = GetE('cmbLinkProtocol').value + sUri ;



			if( GetE('cmbTarget').value == 'popup' )

			{

				// Check the window name, according to http://www.w3.org/TR/html4/types.html#type-frame-target (IE throw erros with spaces).

				if ( /(^[^a-zA-Z])|(\s)/.test( GetE('txtPopupName').value ) )

				{

					alert( FCKLang.DlnLnkMsgInvPopName ) ;

					return false ;

				}

				

				sUri = BuildPopupUri( sUri ) ;

			}



			break ;



		case 'email' :

			sUri = GetE('txtEMailAddress').value ;



			if ( sUri.length == 0 )

			{

				alert( FCKLang.DlnLnkMsgNoEMail ) ;

				return false ;

			}



			sUri = oParser.CreateEMailUri(

				sUri,

				GetE('txtEMailSubject').value,

				GetE('txtEMailBody').value ) ;

			break ;



		case 'anchor' :

			var sAnchor = GetE('cmbAnchorName').value ;

			if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;



			if ( sAnchor.length == 0 )

			{

				alert( FCKLang.DlnLnkMsgNoAnchor ) ;

				return false ;

			}



			sUri = '#' + sAnchor ;

			break ;

	}



	// No link selected, so try to create one.

	if ( !oLink )

		oLink = oEditor.FCK.CreateLink( sUri ) ;

	

	if ( oLink )

		sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).

	else

	{

		// If no selection, use the uri as the link text (by dom, 2006-05-26)



		sInnerHtml = sUri;



		// Built a better text for empty links.

		switch ( GetE('cmbLinkType').value )

		{

			// anchor: use old behavior --> return true

			case 'anchor':

				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;

				break ;



			// url: try to get path

			case 'url':

				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;

				var asLinkPath = oLinkPathRegEx.exec( sUri ) ;

				if (asLinkPath != null)

					sInnerHtml = asLinkPath[1];  // use matched path

				break ;



			// mailto: try to get email address

			case 'email':

				sInnerHtml = GetE('txtEMailAddress').value ;

				break ;

		}



		// Create a new (empty) anchor.

		oLink = oEditor.FCK.CreateElement( 'a' ) ;

	}



	oEditor.FCKUndo.SaveUndoStep() ;



	oLink.href = sUri ;

	SetAttribute( oLink, '_fcksavedurl', sUri ) ;



	oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML



	// Target

	if( GetE('cmbTarget').value != 'popup' )

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

	else

		SetAttribute( oLink, 'target', null ) ;



	// Advances Attributes

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

	SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;		// No IE. Set but doesnt't update the outerHTML.

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

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

	SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;

	SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;

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

	SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;

	SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;



	if ( oEditor.FCKBrowserInfo.IsIE )

	{

		SetAttribute( oLink, 'className', GetE('txtAttClasses').value ) ;

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

	}

	else

	{

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

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

	}



	// Select the link.

	oEditor.FCKSelection.SelectNode(oLink);

	

	return true ;

}



function BrowseServer()

{

	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;

}



function SetUrl( url )

{

	document.getElementById('txtUrl').value = url ;

	OnUrlChange() ;

	window.parent.SetSelectedTab( 'Info' ) ;

}



function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )

{

	switch ( errorNumber )

	{

		case 0 :	// No errors

			alert( 'Your file has been successfully uploaded' ) ;

			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 ;

		default :

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

			return ;

	}



	SetUrl( fileUrl ) ;

	GetE('frmUpload').reset() ;

}



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

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



function CheckUpload()

{

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

	

	if ( sFile.length == 0 )

	{

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

		return false ;

	}

	

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

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

	{

		OnUploadCompleted( 202 ) ;

		return false ;

	}

	

	return true ;

}

Hacked By AnonymousFox1.0, Coded By AnonymousFox