/*
 * @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: 10,
      
      // 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: true,
      // 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:',
      ':baser:',
      ':cuao:',
      ':dance:',
      ':flipao:',
      ':grr:',
      ':hello:',
      ':jeje_ups:',
      ':jejeje:',
      ':juasjuas:',
      ':kidra:',
      ':lol:',
      ':ok:',
      ':razz2:',
      ':rolleyes:',
      ':timido:',
      ':whistle:'

   ),

   // Defines the list of emoticon files associated with the emoticon codes:
   emoticonFiles: new Array(
      'smile.gif',
      'sad.gif',
      'wink.gif',
      'razz.gif',
      'grin.gif',
      'plain.gif',
      'surprise.gif',
      'confused.gif',
      'glasses.gif',
      'eek.gif',
      'cool.gif',
      'smile-big.gif',
      'crying.gif',
      'kiss.gif',
      'angel.gif',
      'devilish.gif',
      'monkey.gif',
      'idea.gif',
      'important.gif',
      'help.gif',
      'error.gif',
      'warning.png',
      'favorite.png',
      'baser.gif',
      'cuao.gif',
      'dance.gif',
      'flipao.gif',
      'grr.gif',
      'hello.gif',
      'jeje_ups.gif',
      'jejeje.gif',
      'juasjuas.gif',
      'kidra.gif',
      'lol.gif',
      'ok.gif',
      'razz2.gif',
      'rolleyes.gif',
      'timido.gif',
      'whistle.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

}
