dp.sh.Brushes.Pawn = function()
{
    // SA-MP Callbacks
    var callbacks = 'OnDialogResponse OnEnterExitModShop OnFilterScriptExit OnFilterScriptInit OnGameModeExit OnGameModeInit OnObjectMoved OnPlayerClickPlayer OnPlayerCommandText '+
	                'OnPlayerConnect OnPlayerDeath OnPlayerDisconnect OnPlayerEnterCheckpoint OnPlayerEnterRaceCheckpoint OnPlayerEnterVehicle OnPlayerExitVehicle OnPlayerExitedMenu OnPlayerInteriorChange '+
	                'OnPlayerKeyStateChange OnPlayerLeaveCheckpoint OnPlayerLeaveRaceCheckpoint OnPlayerObjectMoved OnPlayerPickUpPickup OnPlayerPrivmsg OnPlayerRequestClass OnPlayerRequestSpawn OnPlayerSelectedMenuRow '+
	                'OnPlayerSpawn OnPlayerStateChange OnPlayerStreamIn OnPlayerStreamOut OnPlayerTeamPrivmsg OnPlayerText OnPlayerUpdate OnRconCommand OnRconLoginAttempt '+
	                'OnVehicleDeath OnVehicleMod OnVehiclePaintjob OnVehicleRespray OnVehicleSpawn OnVehicleStreamIn OnVehicleStreamOut OnClientMessage OnRecordingPlaybackEnd OnNPCConnect '+
					'OnNPCDisconnect OnNPCEnterVehicle OnNPCExitVehicle OnNPCModeExit OnNPCModeInit OnNPCSpawn';
	
    // SA-MP Functions	
	var functions = 'AddMenuItem AddPlayerClass AddPlayerClassEx AddStaticPickup AddStaticVehicle AddStaticVehicleEx AddVehicleComponent AllowAdminTeleport AllowInteriorWeapons AllowPlayerTeleport '+
                    'ApplyAnimation Attach3DTextLabelToPlayer Attach3DTextLabelToVehicle AttachObjectToPlayer AttachPlayerObjectToPlayer AttachTrailerToVehicle Ban BanEx CallLocalFunction CallRemoteFunction '+
                    'ChangeVehicleColor ChangeVehiclePaintjob ClearAnimations ConnectNPC Create3DTextLabel CreateExplosion CreateMenu CreateObject CreatePickup CreatePlayer3DTextLabel '+
                    'CreatePlayerObject CreateVehicle Db_close Db_free_result Db_get_field Db_num_fields Db_num_rows Db_open Db_query Delete3DTextLabel '+
                    'DeletePlayer3DTextLabel Deleteproperty DestroyMenu DestroyObject DestroyPickup DestroyPlayerObject DestroyVehicle DetachTrailerFromVehicle DisableInteriorEnterExits DisableMenu '+
                    'DisableMenuRow DisableNameTagLOS DisablePlayerCheckpoint DisablePlayerRaceCheckpoint EnableStuntBonusForAll EnableStuntBonusForPlayer EnableTirePopping EnableZoneNames Existproperty Fclose '+
                    'Fexist Flength Fopen ForceClassSelection Format Fread Fremove Fwrite GameModeExit GameTextForAll '+
                    'GameTextForPlayer GangZoneCreate GangZoneDestroy GangZoneFlashForAll GangZoneFlashForPlayer GangZoneHideForAll GangZoneHideForPlayer GangZoneShowForAll GangZoneShowForPlayer GangZoneStopFlashForAll '+
                    'GangZoneStopFlashForPlayer GetMaxPlayers GetObjectPos GetObjectRot GetPlayerAmmo GetPlayerArmour GetPlayerColor GetPlayerDrunkLevel GetPlayerFacingAngle GetPlayerFightingStyle '+
                    'GetPlayerHealth GetPlayerInterior GetPlayerIp GetPlayerKeys GetPlayerMenu GetPlayerMoney GetPlayerName GetPlayerObjectPos GetPlayerObjectRot GetPlayerPing '+
                    'GetPlayerPos GetPlayerScore GetPlayerSkin GetPlayerSpecialAction GetPlayerState GetPlayerSurfingVehicleID GetPlayerTeam GetPlayerTime GetPlayerVehicleID GetPlayerVehicleSeat '+
                    'GetPlayerVelocity GetPlayerVirtualWorld GetPlayerWantedLevel GetPlayerWeapon GetPlayerWeaponData GetServerVarAsBool GetServerVarAsInt GetServerVarAsString GetTickCount GetVehicleComponentInSlot '+
                    'GetVehicleComponentType GetVehicleHealth GetVehicleModel GetVehiclePos GetVehicleTrailer GetVehicleVelocity GetVehicleVirtualWorld GetVehicleZAngle GetWeaponName Getdate '+
                    'Getproperty Gettime GivePlayerMoney GivePlayerWeapon HideMenuForPlayer IsPlayerAdmin IsPlayerConnected IsPlayerInAnyVehicle IsPlayerInCheckpoint IsPlayerInRaceCheckpoint '+
                    'IsPlayerInRangeOfPoint IsPlayerInVehicle IsPlayerNPC IsPlayerStreamedIn IsTrailerAttachedToVehicle IsValidObject IsValidPlayerObject IsVehicleStreamedIn Kick KillTimer '+
                    'LimitGlobalChatRadius LinkVehicleToInterior MoveObject MovePlayerObject Tickcount TogglePlayerClock TogglePlayerControllable TogglePlayerSpectating Update3DTextLabelText UpdatePlayer3DTextLabelText '+
                    'UsePlayerPedAnims PauseRecordingPlayback ResumeRecordingPlayback SendChat SendCommand StartRecordingPlayback StopRecordingPlayback PlayCrimeReportForPlayer PlayerPlaySound PlayerSpectatePlayer '+
                    'PlayerSpectateVehicle Print Printf PutPlayerInVehicle Random RemovePlayerFromVehicle RemovePlayerMapIcon RemoveVehicleComponent RepairVehicle ResetPlayerMoney '+
                    'ResetPlayerWeapons SendClientMessage SendClientMessageToAll SendDeathMessage SendPlayerMessageToAll SendPlayerMessageToPlayer SendRconCommand SetCameraBehindPlayer SetDeathDropAmount SetDisabledWeapons '+
                    'SetGameModeText SetGravity SetMenuColumnHeader SetNameTagDrawDistance SetObjectPos SetObjectRot SetPlayerAmmo SetPlayerArmedWeapon SetPlayerArmour SetPlayerCameraLookAt '+
                    'SetPlayerCameraPos SetPlayerChatBubble SetPlayerCheckpoint SetPlayerColor SetPlayerDrunkLevel SetPlayerFacingAngle SetPlayerFightingStyle SetPlayerHealth SetPlayerInterior SetPlayerMapIcon '+
                    'SetPlayerMarkerForPlayer SetPlayerName SetPlayerObjectPos SetPlayerObjectRot SetPlayerPos SetPlayerPosFindZ SetPlayerRaceCheckpoint SetPlayerScore SetPlayerShopName SetPlayerSkillLevel '+
                    'SetPlayerSkin SetPlayerSpecialAction SetPlayerTeam SetPlayerTime SetPlayerVelocity SetPlayerVirtualWorld SetPlayerWantedLevel SetPlayerWeather SetPlayerWorldBounds SetSpawnInfo '+
                    'SetTeamCount SetTimer SetTimerEx SetVehicleHealth SetVehicleNumberPlate SetVehicleParamsForPlayer SetVehiclePos SetVehicleToRespawn SetVehicleVelocity SetVehicleVirtualWorld '+
                    'SetVehicleZAngle SetWeather SetWorldTime Setproperty ShowMenuForPlayer ShowNameTags ShowPlayerDialog ShowPlayerMarkers ShowPlayerNameTagForPlayer SpawnPlayer '+
                    'StartRecordingPlayerData StopObject StopPlayerObject StopRecordingPlayerData Strcat Strcmp Strdel Strfind Strins Strlen '+
                    'Strmid Strpack Strtok Strval TextDrawAlignment TextDrawBackgroundColor TextDrawBoxColor TextDrawColor TextDrawCreate TextDrawDestroy '+
                    'TextDrawFont TextDrawHideForAll TextDrawHideForPlayer TextDrawLetterSize TextDrawSetOutline TextDrawSetProportional TextDrawSetShadow TextDrawSetString TextDrawShowForAll TextDrawShowForPlayer '+
                    'TextDrawTextSize TextDrawUseBox';
	
	// Pawno Keywords
	var keywords =  'assert break case continue default do else exit for goto if return sleep ' +
                    'state switch while char defined sizeof state tagof const enum forward native new ' +
					'operator public static stock bool true false Float';
	
	this.regexList = [
	    // Comments
	    { regex:dp.sh.RegexLib.SingleLineCComments, css:'comments' },
	    { regex:dp.sh.RegexLib.MultiLineCComments, css:'comments' },
		
		// Strings
	    { regex:dp.sh.RegexLib.DoubleQuotedString, css:'strings' },
		
		// Preprocessors
	    { regex:new RegExp('^ *#.*','gm'), css:'preprocessors' },
		
		// Callbacks
	    { regex:new RegExp(this.GetKeywords(callbacks),'gm'), css:'callbacks' },
		
		// Functions
	    { regex:new RegExp(this.GetKeywords(functions),'gm'), css:'functions' },
		
		// Numbers
		{ regex:new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b','gi'), css:'numbers' },
		
		// Pawno Keywords
	    { regex:new RegExp(this.GetKeywords(keywords),'gm'), css:'keywords' }];
	
	// CSS Class
	this.CssClass = 'dp-pawn';
	
	// CSS Style
	this.Style = '.dp-pawn .callbacks { color: #804040; font-weight: bold; }' +
	             '.dp-pawn .functions { color: #5a3696; font-weight: bold; }' +
	             '.dp-pawn .keywords { color: #0000ff; font-weight: bold; }' +
                 '.dp-pawn .comments { color: #008000; font-style:italic; }' +
				 '.dp-pawn .numbers { color: #000080; }' +
				 '.dp-pawn .preprocessors { color: #0000ff; }' +
                 '.dp-pawn .strings { color: #000080; }';
}
	
dp.sh.Brushes.Pawn.prototype = new dp.sh.Highlighter();
dp.sh.Brushes.Pawn.Aliases = ['pawn', 'pwn', 'pawno'];

