/* name: feedback form javascript template file version: 0.05 / 2014-11-04 + custom fields check for only 1 required char version: 0.04 / 2007-11-20 + custom fields version: 0.03 / 2006-05-08 + anti cache parameters + encodings (page and mail) * bug fixed version: 0.01 / 2006-03-10 + initial release copyright (c) 2006 Sliven.NET; all rights reserved author: Hristo Drumev [www.hdrumev.com] */ function writeForm() { // check parameters from client if( typeof( _toEmail ) == 'undefined' || typeof( _successMessage ) == 'undefined' || typeof( _errorMessage ) == 'undefined' || typeof( _showFormAgain ) == 'undefined' || typeof( _captions ) == 'undefined' || _captions.length != 4 || typeof( _pageEncoding ) == 'undefined' || typeof( _mailEncoding ) == 'undefined' || ( typeof( _customFields ) != 'undefined' ) && !_customFields.length ) { var err_msg = 'ERROR\n\nSource: Feedback form generator javascript\n\nYou have a error on your page using this javascript feedback form. Please check your parameters.\n\n'; if( typeof( _toEmail ) == 'undefined' ) err_msg += 'Missing "_toEmail" parameter.\n'; if( typeof( _successMessage ) == 'undefined' ) err_msg += 'Missing "_successMessage" parameter.\n'; if( typeof( _errorMessage ) == 'undefined' ) err_msg += 'Missing "_errorMessage" parameter.\n'; if( typeof( _showFormAgain ) == 'undefined' ) err_msg += 'Missing "_showFormAgain" parameter.\n'; if( typeof( _captions ) == 'undefined' ) err_msg += 'Missing "_captions" parameter.\n'; if( typeof( _captions ) != 'undefined' && _captions.length != 4 ) err_msg += 'Parameter "_captions" is array and must have 4 items. See documentation for more info.\n'; if( typeof( _pageEncoding ) == 'undefined' ) err_msg += 'Missing "_pageEncoding" parameter.\n'; if( typeof( _mailEncoding ) == 'undefined' ) err_msg += 'Missing "_mailEncoding" parameter.\n'; if( typeof( _customFields ) != 'undefined' ) err_msg += 'Parameter "_customFields" must be array with captions of fields.\n'; window.alert( err_msg ); return; } // message if( _formResult !== null ) document.write( '
' + ( ( _formResult ) ? _successMessage : _errorMessage ) + '<\/div>' ); if( !( _showForm || _showFormAgain ) ) // !a && !b === !( a || b ) ;-) return; _formCode = _formCode.replace( 'SERVERADDRESS', _serverAddress ); _formCode = _formCode.replace( 'RECEIVER', _toEmail ); _formCode = _formCode.replace( 'CAPTIONNAME', _captions[0] ); _formCode = _formCode.replace( 'CAPTIONEMAIL', _captions[1] ); _formCode = _formCode.replace( 'CAPTIONTEXT', _captions[2] ); _formCode = _formCode.replace( 'CAPTIONSUBMIT', _captions[3] ); _formCode = _formCode.replace( 'PAGEENCODING', _pageEncoding ); _formCode = _formCode.replace( 'MAILENCODING', _mailEncoding ); _costomFieldsCode = ''; if( typeof( _customFields ) != 'undefined' ) { var _customFieldsTitles = ''; for( var i = 0; i < _customFields.length; i++ ) { _costomFieldsCode += '
'; _costomFieldsCode += ''; _costomFieldsCode += ''; _costomFieldsCode += '
'; _customFieldsTitles += ( _customFieldsTitles == '' ? '' : '^' ) + _customFields[i]; } _costomFieldsCode += '
' } _formCode = _formCode.replace( 'CUSTOMFIELDS', _costomFieldsCode ); _successURLCode = ''; if( typeof( _successURL ) != 'undefined' ) { _successURLCode = ''; } _formCode = _formCode.replace( 'SUCCESSURL', _successURLCode ); if( typeof( _isXHTML ) != 'undefined' && !_isXHTML ) _formCode = _formCode.replace( ' \/>', '>' ); document.write( _formCode ); } function emailCheck( emailStr ) { var emailPat = /^(.+)@(.+)$/; var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars = "\[^\\s" + specialChars + "\]"; var quotedUser = "(\"[^\"]*\")" var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; var atom = validChars + '+'; var word = "(" + atom + "|" + quotedUser + ")"; var userPat = new RegExp( "^" + word + "(\\." + word + ")*$" ); var domainPat = new RegExp( "^" + atom + "(\\." + atom +")*$" ); var matchArray = emailStr.match( emailPat ); if( matchArray == null ) return false; var user = matchArray[1]; var domain = matchArray[2]; if( user.match( userPat ) == null ) return false; var IPArray = domain.match( ipDomainPat ) if( IPArray != null ) { for( var i = 1; i <= 4; i++ ) if( IPArray[i] > 255 ) return false; return true } var domainArray=domain.match(domainPat) if( domainArray == null ) return false; var atomPat = new RegExp( atom, "g" ); var domArr = domain.match( atomPat ); var len=domArr.length; if( domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3 ) return false if ( len < 2 ) return false; return true; } function checkForm() { var error = false; var name = document.feedbackform._name.value; var email = document.feedbackform._email.value; var text = document.feedbackform._text.value; if( name.length < 2 || !emailCheck( email ) || text.length < 1 || text.length > 1000 ) error = true; else if( document.feedbackform['_custom' + '0'] ) { var i = 0; while( document.feedbackform['_custom' + i] ) if( document.feedbackform['_custom' + ( i++ )].value.length < 1 ) { error = true; break; } } if( error ) { if( typeof( _errorInFileds ) == 'undefined' ) window.alert( 'Error in fields. You cannot send the form. Please fix errors' ); else window.alert( _errorInFileds ); return false; } return true; } // source of the feedback form var _formCode = '
' + '
' + '
' + '
' + 'CUSTOMFIELDS' + '
' + '
' + '
' + '
' + 'SUCCESSURL' + '
' + '
'; /* * server side generated variables */ // to show feedback form var _showForm = 1; // result of last operation; 1 - success, 0 - failure, null - no result var _formResult = null; // server address var _serverAddress = 'https://new.sliven.net/sys/feedbackform.js?ts=1627517310'; writeForm();