/*
 * @package AJAX_Chat
 * @author Sebastian Tschan
 * @copyright (c) Sebastian Tschan
 * @license GNU Affero General Public License
 * @link https://blueimp.net/ajax/
 */

// Ajax Chat config parameters:
var ajaxChatConfig = {

        // The channelID of the channel to enter on login (the loginChannelName is used if set to null):
        loginChannelID: null,
        // The channelName of the channel to enter on login (the default channel is used if set to null):
        loginChannelName: null,

        // The time in ms between update calls to retrieve new chat messages:
        timerRate: 2000,

        // The URL to retrieve the XML chat messages (must at least contain one parameter):
        ajaxURL: './?ajax=true',
        // The base URL of the chat directory, used to retrieve media files (images, sound files, etc.):
        baseURL: './',

        // A regular expression for allowed source URL's for media content (e.g. images displayed inline);
        regExpMediaUrl: '^((http)|(https)):\\/\\/',

        // If set to false the chat update is delayed until the event defined in ajaxChat.setStartChatHandler():
        startChatOnLoad: true,

        // Defines the IDs of DOM nodes accessed by the chat:
        domIDs: {
                // The ID of the chat messages list:
                chatList: 'chatList',
                // The ID of the online users list:
                onlineList: 'onlineList',
                // The ID of the message text input field:
                inputField: 'inputField',
                // The ID of the message text length counter:
                messageLengthCounter: 'messageLengthCounter',
                // The ID of the channel selection:
                channelSelection: 'channelSelection',
                // The ID of the style selection:
                styleSelection: 'styleSelection',
                // The ID of the emoticons container:
                emoticonsContainer: 'emoticonsContainer',
                // The ID of the color codes container:
                colorCodesContainer: 'colorCodesContainer',
                // The ID of the flash interface container:
                flashInterfaceContainer: 'flashInterfaceContainer'
        },

        // Defines the settings which can be modified by users:
        settings: {
                // Defines if BBCode tags are replaced with the associated HTML code tags:
                bbCode: true,
                // Defines if image BBCode is replaced with the associated image HTML code:
                bbCodeImages: true,
                // Defines if color BBCode is replaced with the associated color HTML code:
                bbCodeColors: true,
                // Defines if hyperlinks are made clickable:
                hyperLinks: true,
                // Defines if line breaks are enabled:
                lineBreaks: true,
                // Defines if emoticon codes are replaced with their associated images:
                emoticons: true,

                // Defines if the focus is automatically set to the input field on chat load or channel switch:
                autoFocus: true,
                // Defines if the chat list scrolls automatically to display the latest messages:
                autoScroll: true,
                // The maximum count of messages displayed in the chat list (will be ignored if set to 0):
                maxMessages: 0,

                // Defines if long words are wrapped to avoid vertical scrolling:
                wordWrap: true,
                // Defines the maximum length before a word gets wrapped:
                maxWordLength: 32,

                // Defines the format of the date and time displayed for each chat message:
                dateFormat: '(%H:%i:%s)',

                // Defines if font colors persist without the need to assign them to each message:
                persistFontColor: false,
                // The default font color, uses the page default font color if set to null:
                fontColor: null,

                // Defines if sounds are played:
                audio: true,
                // Defines the sound volume (0.0 = mute, 1.0 = max):
                audioVolume: 1.0,

                // Defines the sound that is played when normal messages are reveived:
                soundReceive: 'sound_1',
                // Defines the sound that is played on sending normal messages:
                soundSend: 'sound_2',
                // Defines the sound that is played on channel enter or login:
                soundEnter: 'sound_3',
                // Defines the sound that is played on channel leave or logout:
                soundLeave: 'sound_4',
                // Defines the sound that is played on chatBot messages:
                soundChatBot: 'sound_5',
                // Defines the sound that is played on error messages:
                soundError: 'sound_6',

                // Defines if the document title blinks on new messages:
                blink: true,
                // Defines the blink interval in ms:
                blinkInterval: 500,
                // Defines the number of blink intervals:
                blinkIntervalNumber: 10
        },

        // Defines a list of settings which are not to be stored in a session cookie:
        nonPersistentSettings: new Array(
        ),

        // Defines the list of allowed BBCodes:
        bbCodeTags: new Array(
                'b',
                'i',
                'u',
                'quote',
                'code',
                'color',
                'url',
                'img'
        ),

        // Defines the list of allowed color codes:
        colorCodes: new Array(
                'gray',
                'silver',
                'white',
                'yellow',
                'orange',
                'red',
                'fuchsia',
                'purple',
                'navy',
                'blue',
                'aqua',
                'teal',
                'green',
                'lime',
                'olive',
                'maroon',
                'black'
        ),

        // Defines the list of allowed emoticon codes:
        emoticonCodes: new Array(
                ':)',
                ':(',
                ';)',
                ':P',
                ':D',
                ':|',
                ':O',
                ':?',
                '8)',
                '8o',
                'B)',
                ':-)',
                ':-(',
                ':-*',
                'O:-D',
                '>:-D',
                ':o)',
                ':idea:',
                ':important:',
                ':help:',
                ':error:',
                ':warning:',
                ':favorite:',
                ':10hallo2:'
       ),

         // Defines the list of emoticon files associated with the emoticon codes:
        emoticonFiles: new Array(
                'smile.png',
                'sad.png',
                'wink.png',
                'razz.png',
                'grin.png',
                'plain.png',
                'surprise.png',
                'confused.png',
                'glasses.png',
                'eek.png',
                'cool.png',
                'smile-big.png',
                'crying.png',
                'kiss.png',
                'angel.png',
                'devilish.png',
                'monkey.png',
                'idea.png',
                'important.png',
                'help.png',
                'error.png',
                'warning.png',
                'favorite.png',
                '10hallo2.gif'
        ),

        // Defines the available sounds loaded on chat start:
        soundFiles: {
                sound_1: 'sound_1.mp3',
                sound_2: 'sound_2.mp3',
                sound_3: 'sound_3.mp3',
                sound_4: 'sound_4.mp3',
                sound_5: 'sound_5.mp3',
                sound_6: 'sound_6.mp3'
        },


        // The following configuration options are usually overwritten by server-side values:

        // Session identification, used for style and setting cookies:
        sessionName: 'ajax_chat',

        // The time in days until the style and setting cookies expire:
        cookieExpiration: 365,
        // The path of the cookies, '/' allows to read the cookies from all directories:
        cookiePath: '/',
        // The domain of the cookies, defaults to the hostname of the server if set to null:
        cookieDomain: null,
        // If enabled, cookies must be sent over secure (SSL/TLS encrypted) connections:
        cookieSecure: null,

        // The name of the chat bot:
        chatBotName: 'ChatBot',
        // The userID of the chat bot:
        chatBotID: 2147483647,

        // Allow/Disallow registered users to delete their own messages:
        allowUserMessageDelete: true,

        // Minutes until a user is declared inactive (last status update) - the minimum is 2 minutes:
        inactiveTimeout: 2,

        // UserID plus this value are private channels (this is also the max userID and max channelID):
        privateChannelDiff: 500000000,
        // UserID plus this value are used for private messages:
        privateMessageDiff: 1000000000,

        // Defines if login/logout and channel enter/leave are displayed:
        showChannelMessages: true,

        // Max messageText length:
        messageTextMaxLength: 1040,

        // Defines if the socket server is enabled:
        socketServerEnabled: false,
        // Defines the hostname of the socket server used to connect from client side:
        socketServerHost: 'localhost',
        // Defines the port of the socket server:
        socketServerPort: 1935,
        // This ID can be used to distinguish between different chat installations using the same socket server:
        socketServerChatID: 0

}