+ // Protected email link as encoded string.\r
+ else if ( !emailProtection || emailProtection == 'encode' )\r
+ {\r
+ if( emailProtection == 'encode' )\r
+ {\r
+ href = href.replace( encodedEmailLinkRegex,\r
+ function ( match, protectedAddress, rest )\r
+ {\r
+ return 'mailto:' +\r
+ String.fromCharCode.apply( String, protectedAddress.split( ',' ) ) +\r
+ ( rest && unescapeSingleQuote( rest ) );\r
+ } );\r
+ }\r
+\r
+ emailMatch = href.match( emailRegex );\r
+\r
+ if( emailMatch )\r
+ {\r
+ var subjectMatch = href.match( emailSubjectRegex ),\r
+ bodyMatch = href.match( emailBodyRegex );\r
+\r
+ retval.type = 'email';\r
+ var email = ( retval.email = {} );\r
+ email.address = emailMatch[ 1 ];\r
+ subjectMatch && ( email.subject = decodeURIComponent( subjectMatch[ 1 ] ) );\r
+ bodyMatch && ( email.body = decodeURIComponent( bodyMatch[ 1 ] ) );\r
+ }\r
+ }\r
+ // Protected email link as function call.\r
+ else if( emailProtection )\r
+ {\r
+ href.replace( functionCallProtectedEmailLinkRegex, function( match, funcName, funcArgs )\r
+ {\r
+ if( funcName == compiledProtectionFunction.name )\r
+ {\r
+ retval.type = 'email';\r
+ var email = retval.email = {};\r
+\r
+ var paramRegex = /[^,\s]+/g,\r
+ paramQuoteRegex = /(^')|('$)/g,\r
+ paramsMatch = funcArgs.match( paramRegex ),\r
+ paramsMatchLength = paramsMatch.length,\r
+ paramName,\r
+ paramVal;\r
+\r
+ for ( var i = 0; i < paramsMatchLength; i++ )\r
+ {\r
+ paramVal = decodeURIComponent( unescapeSingleQuote( paramsMatch[ i ].replace( paramQuoteRegex, '' ) ) );\r
+ paramName = compiledProtectionFunction.params[ i ].toLowerCase();\r
+ email[ paramName ] = paramVal;\r
+ }\r
+ email.address = [ email.name, email.domain ].join( '@' );\r
+ }\r
+ } );\r
+ }\r