/*
 * Code SyntaxHighlighter for Lingo (Windows and MAC Platforms).
 * Version 1.1.2
 * Copyright Â© 1996-2007 Leedoriden DSFW.
 * http://leedoriden.com/
 * created : Nov / 23 / 2007
 * last modified :  Dec / 9 / 2007
 *  
 */

dp.sh.Brushes.Lingo = function()
{
	var keywords =  '_global _sound _mouse _player _movie _key _system ' +
// A
'activateapplication activatewindow abs activateatloc activatebutton add addat addbackdrop addcamera ' +
'addchild addmodifier addoverlay addprop addtoworld addvertex alert append appminimize atan ' +
'actorlist alerthook ancestor appearanceoptions auto activewindow alpha axisangle actionsenabled ' +
'animationstarted animationended addtoworldclone anglecount antialiasingenabled antialiasingsupported ' +
'aspectratio audio audiochannelcount audioformat audiolangext audiosamplerate audiostream ' +
'audiostreamcount audiotrack active3drenderer activecastlib add addat addbackdrop alignment ' +
'allowcustomcaching allowgraphicmenu allowsavelocal allowtransportcontrol allowvolumecontrol ' +
'allowzooming alphathreshold ambient ambientcolor angle anglecount animationenabled ' +
'antialias antialiasingenabled antialiasingsupported antialiasthreshold appearanceoptions ' +
'applicationname applicationpath appminimize aspectratio auto autoblend autocameraposition ' +
'automask autotab addbackdrop addoverlay attenuation attributevalue attributename animgif ' +
// B
'beginsprite backspace back beep beginrecording bitand bitnot bitor bitxor breakloop browsername ' +
'build backcolor backdrop beginrecording beveldepth bias blendconstant blendfactor blendfunction ' +
'blendfunctionlist blendsource blendsourcelist bonesplayer broadcastprops bottom box both ' +
'border blend blendlevel boolean balance buttoncount backgroundcolor backspace ' +
'beepon beveltype bgcolor bitmapsizes bitrate bitspersample blend blendconstantlist blendrange ' +
'blendtime bone bonesplayer bottomcap bottomradius bottomspacing boundary boundingsphere ' +
'boxdropshadow boxtype brightness broadcastprops buffersize buttonsenabled buttonstyle buttontype ' +
'bytesstreamed begintelltarget bitmap bold ' +
// C
'closewindow cuepassed char cursor castlibs castlib clickloc currentspritenum ' +
'cachedocverify cachesize call callancestor callframe camera cameracount cancelidleload channel ' +
'chaptercount charpostoloc chars chartonum clearasobjects clearcache clearerror clearframe ' +
'clearglobals clone clonedeep clonemodelfromcastmember clonemotionfromcastmember ' +
'close closefile closexlib color constrainh constrainv copypixels copytoclipboard cos count createfile ' +
'createmask creatematte crop cross crossproduct contains clickon checkbox cpuhogticks currenttime ' +
'cursor child colors comment color cylinder constant chapter closedcaptions colorpalette cameraposition ' +
'camerarotation cancelidleload castlibnum castmemberlist center crop centerregpoint centerstage ' +
'changearea channel channelcount chaptercount characterset charpostoloc chars charspacing ' +
'chartonum checkmark child chunksize clearasobjects clearatrender colorbuffer clearcache clearerror ' +
'clearframe clearglobals clearvalue clickloc clickmode clickon closed collision collisiondata collisionnormal ' +
'colorbufferdepth colordepth colorlist colorrange colors colorsteps commanddown comments compressed ' +
'contains controldown copyrightinfo copytoclipboard cpuhogticks creaseangle creases createfile createmask ' +
'creatematte creationdate cross crossproduct cuepointnames cuepointtimes currentloopstate currenttime ' +
'cursorsize curve controller ' +
// D
'deactivateapplication deactivatewindow dvdeventnotification debugplaybackenabled decaymode ' +
'date delay delete deleteat deletecamera deleteframe deletegroup deletelight deletemodel ' +
'deletemodelresource deletemotion deleteone deleteprop deleteshader deletetexture deletevertex ' +
'displayopen displaysave doneparsing dot dotproduct downloadnetthing draw duplicate duplicateframe ' +
'diffuse diffusecolor directtostage dockingenabled displaytemplate default down density depth depthbufferdepth ' +
'downleft downright dragregionmask document dialog debug depth doubleclick desktoprectlist ' +
'discid displayreallogo divide domain decaymode defaultrect defaultrectmode diffuselightmap digitalvideotimescale ' +
'digitalvideotype direction directionalcolor directionalpreset directtostage disableimagingtransformation ' +
'displayface displaymode displayopen distribution dither done downloadnetthing drag draw drawrect ' +
'dropshadow duration down ' +
// E
'endsprite enter empty enablehotspot endrecording erase error externalevent extrude3d externalparamname ' +
'externalparamvalue extractalpha endangle exitframe enabled exponential exponential2 editable ' +
'endtelltarget evalscript eventnotification editshortcutsenabled elapsedtime emissive emitter empty ' +
'emulatemultibuttonmouse enableflashlingo endangle endcolor endframe exit environment ' +
'endtelltarget endtime environmentproplist externalevent erase error eventpassmode exitlock ' +
'externalparamcount externalparamname externalparamvalue extractalpha extrude3d enterframe ' +
// F
'fadein fadeout fadeto fill findlabel findempty findpos findposnear finishidleload flashtostage ' +
'float flushinputevents floatp forget framestohms frameready framestep freeblock freebytes fog far ' +
'face frame framelabel floatprecision front fromfile fontstyle fontsize fadeout fadein fadeto fieldofview ' +
'filefreesize filename filesize fileversion fillcolor fillcycles filldirection filled fillmode filloffset fillscale ' +
'findempty findlabel findpos findposnear finishidleload firstindent fixedlinespace fixedrate fixstagesize ' +
'flashrect flat fliph flipv flushinputevents folder font forecolor filled framecount framelabel framepalette ' +
'framerate frameready framescript framesound1 framesound2 framestep framestohms frametempo ' +
'frametransition freeblock freebytes frontwindow fullscreen format ' +
// G
'getpropertydescriptionlist getbehaviortooltip getbehaviordescription getpos gotonetpage generatenormals ' +
'getaprop getat geterror geterrorstring getfinderinfo getflashproperty getframelabel gethardwareinfo ' +
'gethotspotrect getlast getlatestnetid getlength getnettext getnormalized getnthfilenameinfolder ' +
'getone getosdirectory getpixel getplaylist getposition getpref getprop getpropat getrendererservices ' +
'getstreamstatus getvariable getworldtransform go goloop gonext goprevious gotoframe gotonetmovie ' +
'gotonetpage group getaprop getboneid geturl globals glossmap gradienttype gravity group getvariable ' +
'getworldtransform graphic grayscale ' +
// H
'handler handlers hilite hittest hmstoframes hold html height hyperlinkclicked heightvertices ' +
'highlightpercentage highlightstrength hither hittest hotspot hotspotentercallback hotspotexitcallback ' +
'hyperlink hyperlinkrange hyperlinks hyperlinkstate ' +
// I i
'isoktoattach item identity idleloaddone ignorewhitespace image importfileinto insertbackdrop insertframe ' +
'insertoverlay inside installmenu integerp interface interpolate interpolateto intersect inverse ' +
'invert isbusy isinworld ispastcuepoint intersects invertmask instance ink integer idle ignorewhitespace ' +
'idlehandlerperiod idleloaddone idleloadmode idleloadperiod idleloadtag idlereadchunksize ' +
'imagecompression imageenabled imagequality immovable importfileinto in ink inker inlineimeenabled ' +
'insertbackdrop insertframe insertoverlay interval invert isvrmovie itemdelimiter inflate ' +
// K
'keypressed key kerning kerningthreshold keyboardfocussprite keycode keydownscript keyframeplayer ' +
'keyupscript keydown keyup ' +
// L
'loop loc locz long label last lastclick lastevent length light lineheight linepostolocv linkas list ' +
'listp loadfile loctocharpos locvtolinepos log labellist last lastchannel lasterror lastevent lastframe ' +
'lastkey lastroll left leftindent lengthvertices level lod loch locv linearlist liveresize line linear lifetime ' +
'linecolor linecount linedirection lineoffset linesize linked loaded locktranslation loctocharpos ' +
'locvtolinepos loopbounds loopcount loopendtime loopsremaining loopstarttime ' +
// M
'mouseword mouseloc mouseup mouseupoutside mousedown mouseleave mouseenter mousewithin ' +
'makelist member membernum members mperform makescriptedsprite makesublist map mapmembertostage ' +
'mapstagetomember marker max maximize mci member mergedisplaytemplate mergeprops mesh ' +
'min minimize model mod modelresource modelsunderloc modelsunderray modelunderloc motion move ' +
'movetoback movetofront movevertex movevertexhandle multiply mouseitem mouseword mousechar ' +
'model meshdeform month mouseh mousev moviepath menu menuitem menuitems media minspeed ' +
'mask metal mitter mouseline movewindow milliseconds magnitude margin markerlist maxinteger ' +
'maxspeed mediaready mediastatus mediaxtralist memorysize mergedisplaytemplate mergeprops ' +
'mipmapping missingfonts modela modelb modified modifiedby modifieddate modifier modifiers ' +
'mostrecentcuepoint motion motionquality mousedownscript mouselevel mousemember ' +
'mouseoverbutton mouseupscript move moveablesprite movetoback movetofront movevertex ' +
'movevertexhandle movie movierate movietime multisound maskimage ' +
// N
'number next neighbor netabort netdone neterror netlastmoddate netmime netstatus nettextresult newcamera ' +
'newcurve newgroup newlight newmember newmesh newmodel newmodelresource newmotion newobject ' +
'newshader newtexture normalize nothing nudge numtochar near normals none name nearfiltering ' +
'netpresent netthrottleticks next node nodeentercallback nodeexitcallback nodetype normallist normals ' +
'numchannels numparticles numsegments ' +
// O
'objectp offset open openfile openxlib object openwindow obeyscorerotation originh originv originemode ' +
'originpoint optiondown organizationname originalfont orthoheight overlay ' +
// P
'pi play productversion prepareframe param paramcount parsestring parseurl pasteclipboardinto pause ' +
'perpendicularto picturep play playfile playfromtotime playnext playerparentallevel point pointat ' +
'pointinhyperlink previous picture plane particle painter parent proxyserver pageheight ' +
'pointtochar pointtoitem pointtoline pointtoparagraph pointtoword pan preparemovie position ' +
'palette palettemapping paletteref pan paragraph password path pathname pathstrength pattern ' +
'pausedatstart percentbuffered percentplayed percentstreamed period perpendicularto persistent ' +
'picturep platform playbackmode playrate playbackrate playing playlist pointatorientation ' +
'pointinhyperlink pointofcontact position positionreset posterframe postnettext power preferred3drenderer ' +
'preload preloadbuffer preloadeventabort preloadmember preloadmode preloadmovie preloadnetthing ' +
'preloadram preloadtime premultiply prerotate prescale pretranslate primitives print printasbitmap ' +
'printfrom productname productversion projection proplist pttohotspotid puppetpalette puppetsprite ' +
'puppettempo puppettransition purgepriority plain ' +
// Q
'quit quicktimeversion qtregisteraccesskey qtunregisteraccesskey quad quality queue ' +
// R
'rgb radiobutton rawnew rotate rotation rect right random round replace range resizewindow ' +
'rightmousedown rightmouseup runpropertydialog radius ramneeded randomseed randomvector ' +
'rawnew readchar readfile readline readtoken readword realplayernativeaudio realplayerprompttoinstall ' +
'realplayerversion recordfont ref reflectionmap reflectivity region registerforevent registerscript regpoint ' +
'regpointvertex removebackdrop removefromworld removelast removemodifier removeoverlay removescriptedsprite ' +
'renderer rendererdevicelist renderformat renderstyle resetworld resizable resolution resolve ' +
'resolvea resolveb resource restart restore resume returntotitle reverttoworlddefaults ' +
'rewind rightindent rollover romanlingo rootlock rootmenu rootnode rotationreset rtf runmode ' +
// S
'space sprite spritenum short scroll shader shaderlist shadowpercentage scale ' +
'stageright stageleft stagebottom stagetop sound stepframe starttimer startmovie stopmovie ' +
'symbol startangle standard sphere shadow self string savedlocal sendxml stepframe ' +
'streamstatus scriptinstancelist setvariable scriptsenabled safeplayer samplecount samplerate ' +
'samplesize save savemovie scalemode score scorecolor scoreselection script scripted ' +
'scriptingxtralist scriptinstancelist scriptlist scriptnum scriptsenabled scripttext scripttype scrollbyline ' +
'scrollbypage scrolltop sds searchcurrentfolder searchpathlist seek selectatloc selectbutton '+
'selectbuttonrelative selectedbutton selectedtext selection selend selstart sendallsprites sendevent ' +
'sendsprite serialnumber setalpha setaprop setat setcallback setcollisioncallback setfiltermask ' +
'setfinderinfo setflashproperty setnewlineconversion setpixel setplaylist setposition setpref setprop ' +
'setscriptlist settingspanel settrackenabled setvariable shader shaderlist shadowpercentage ' +
'shadowstrength shapetype shiftdown silhouettes shininess showglobals showlocals showprops ' +
'shutdown sin size sizerange sizestate skew smoothness sort sound isbusy soundbusy soundchannel ' +
'sounddevice sounddevicelist soundenabled soundkeepdevice soundlevel soundmixmedia source ' +
'sourcefilename sourcerect space specular specularcolor specularlightmap specularlight spotangle ' +
'spotdecay spritespacetoworldspace sqrt stage stagetoflash startframe starts starttime starttimelist ' +
'state static staticquality status stilldown stop stopevent stoptime stoptimelist stream streammode ' +
'streamname streamsize stringp strokecolor strokewidth style subdivision subpicture subpicturecount ' +
'subpicturetype substitutefont suspendupdates swing switchcolordepth symbolp systemtrayicon ' +
'systemtraytooltip ' +
// T
'tab time timer text tan type transform translate texturecoordinates top timeout tool trayicondoubleclick ' +
'trayiconmousedown trayiconrightmousedown tracknextkeytime trackpreviouskeytime transform ' +
'typeof tabcount tabs target targetframerate tellstreamstatus telltarget tension texture texturecoordinatelist ' +
'texturecoordinates texturelayer texturelist texturemember texturemode texturemodelist texturerenderformat ' +
'texturerepeat texturerepeatlist texturetransform texturetransformlist texturetype thumbnail tilt timeouthandler ' +
'timeoutlist timescale title titlebaroptions titlecount titlemenu toolxtralist toon topcap topradius topspacing ' +
'trace traceload tracelogfile tracescript trackcount trackenabled tracknextkeytime tracknextsampletime ' +
'trackpreviouskeytime trackprevioussampletime trackstarttime trackstoptime tracktext tracktype ' +
'trails transform transitiontype transitionxtralist translate translation transparent triggercallback trimwhitespace ' +
'tunneldepth tweened tweenmode ' +
// U
'usediffusewithtexture updatestage up upright upleft unload updatemovieenabled usealpha ' +
'union unload unloadmember unloadmovie unregisterallevents update updateframe updatelock ' +
'updatemovieenabled updatestage url urlencode usediffusewithtexture usefastquads usehypertextstyles ' +
'uselineoffset userdata username usetargetframerate ' +
// V
'void voidp volume vector vertices vertexlist videoforwindowspresent value version vertex video ' +
'videoformat viewh viewpoint viewscale viewv visibility visible voicecount voiceget voicegetall ' +
'voicegetpitch voicegetrate voicegetvolume voiceinitialize voicepause voiceresume voiceset ' +
'voicesetpitch voicesetrate voicesetvolume voicespeak voicestate voicestop voicewordpos ' +
// W
'word width window windowtype world wordwrap warpmode widthvertices wind windowbehind windowinfront ' +
'windowlist windowpresent worldposition worldspacetospritespace worldtransform wraptransform wraptransformlist ' +
'writechar writereturn writestring Program' +
// X
'x xtra xaxis xtralist ' +
// Y
'y year yaxis yon ' +
// Z
'z zoomwindow zaxis zoombox';

	var specials =  '{{ }} else end false true on new if then global property quote repeat with do me into ' +
					'put the and or of to case not otherwise after before while into set define require ' +
					'return abort ilk pass halt result tell when result print_r this';
	
	var api =  'Program getConf getTpl this';
	var apivar = '{{ }} tpl apc';
	
   
    this.regexList = [
        { regex: dp.sh.RegexLib.SingleLineCComments,                            css: 'comment' },       // one line comments
        { regex: dp.sh.RegexLib.MultiLineCComments,                             css: 'comment' },       // multiline comments
        { regex: dp.sh.RegexLib.DoubleQuotedString,                             css: 'string' },        // strings
        { regex: dp.sh.RegexLib.SingleQuotedString,                             css: 'string' },        // strings
        { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'),    css: 'number' },        // numbers       
		{ regex: new RegExp(this.GetKeywords(keywords), 'gm'),                  css: 'keyword' },       // lingo keyword
		{ regex: new RegExp(this.GetKeywords(specials), 'gm'),                  css: 'special' },	
		{ regex: new RegExp(this.GetKeywords(api), 'gm'),                 		css: 'api' },
		{ regex: new RegExp(this.GetKeywords(apivar), 'gm'),                 		css: 'apivar' },
		{ regex: new RegExp('#', 'gm'),											css: 'preprocessor' },	// only char #
		{ regex: new RegExp('--.*$', 'gm'),                  					css: 'comment' }
		// old definition
		//{ regex: new RegExp('\\s*[a-zA-Z0-9_]*#', 'gm'),						css: 'preprocessor' },	// only char #
		//{ regex: new RegExp(' *--.*', 'gm'),                  				css: 'comment' }        // lingo comment
		// end old	
        ];

    this.CssClass = 'dp-ls';
    this.Style =	'.dp-ls .comment { color: #ff9900; font-weight: normal; }'+
    				'.dp-ls .string { color: #ff00ff; font-weight: normal; }'+
    				'.dp-ls .number { color: #ff00ff; text-transform: lowercase; font-weight: normal; }'+
    				'.dp-ls .keyword { color: #008000; text-transform: lowercase; font-weight: normal; }'+
					'.dp-ls .special { color: #0000c8;  font-weight: normal; }'+
					'.dp-ls .api { color: #0066CC;  font-weight: normal; }'+
					'.dp-ls .apivar { color: #0054A8;  font-weight: bold; }'+
					'.dp-ls .phptags { color: red;  font-weight: normal; }'+
					'.dp-ls .preprocessor { color: #008000; text-transform: lowercase; font-weight: normal; }';
}

dp.sh.Brushes.Lingo.prototype = new dp.sh.Highlighter();
dp.sh.Brushes.Lingo.Aliases = ['lingo', 'ls'];
