[img[quote.gif]] We are always on the anvil; by trials God is shaping us for higher things.\n-Henry Ward Beecher-
The surname "[[Longmore|http://www.werelate.org/wiki/Surname:Longmore]]" has at times been confused with "Lawnmower" when hearing it pronounced. So I get plenty of jokes about cutting grass. My understanding is that the surname Longmore orginated in England and is based on their locale being near a long or extensive [[moor|http://en.wikipedia.org/wiki/Moorland]]. In that case maybe being called a grasscutter isn't so far off after all.\n\nI am a life long resident of the state of [[Utah|Utah]] other than spending eighteens months in the state of [[Georgia|http://en.wikipedia.org/wiki/Georgia_%28U.S._state%29]] serving on a [[LDS|http://lds.org/]] [[mission|http://en.wikipedia.org/wiki/Mormon_missionaries]]. I currently live in [[Riverton|http://en.wikipedia.org/wiki/Riverton_Utah]] Utah along with my loving family. My family consists of a truly wonderful wife, a son, and two daughters.\n
<<option chkGenerateAnRssFeed>> GenerateAnRssFeed\n<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close\n^^(override with Control or other modifier key)^^\n<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP\n<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time\n^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^\n<<option chkConfirmDelete>> ConfirmBeforeDeleting\nMaximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>\nFolder name for backup files: <<option txtBackupFolder>>\n<<option chkInsertTabs>> Use tab key to insert tab characters instead of jumping to next field
I am interested in art. Here is a gallery of my art work. So far all the work I have done has been for personal satisfaction (never having sold a single work).
#cccc99
#ffffdd
Background: #fff\nForeground: #000\nPrimaryPale: #8cf\nPrimaryLight: #18f\nPrimaryMid: #04b\nPrimaryDark: #014\nSecondaryPale: #ffc\nSecondaryLight: #fe8\nSecondaryMid: #db4\nSecondaryDark: #841\nTertiaryPale: #eee\nTertiaryLight: #ccc\nTertiaryMid: #999\nTertiaryDark: #666\nError: #f88\n
#667755
#112233
#334422
#556677
774444
#225522
#996633
#552
email is dlongmore[at]gmail[dot]com
MyEpigraph
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
I use [[http://www.mfg-consult.com/phpGedView/pedigree.php|PhpGedview]] ,[[http://www.werelate.org/wiki/User:Dlongmore| Werelate]], and [[http://www.geni.com |GENi]]. I also frequently refer to the [[http://www.familysearch.org|largest collection of free family history]] available during my research. The familysearch group also recently started this [[https://wiki.familysearch.org/en/Main_Page|wiki]] that I having been checking out. [[http://www.google.co.uk/|Google.co.uk]] is useful when doing research in England. \n\n[[http://www.msheppard.com/|The Longmore Pages]] is a fantastic resource for anyone interested in the Longmore surname.\n\nTo view the Geni information requires an invite from a family relation who is already connected. \n\nAs the LDS Church is getting ready to release a new version of the family search website they have create a [[http://www.familysearchforum.org/forum/|forum]] to facilitate discussion. The [[http://www.byubroadcasting.org/ancestors/|Ancestor]] series by BYU Broadcasting has some good resources. As well as these courses offered through [[http://ce.byu.edu/is/site/courses/freecourses.cfm|BYU Independent Studies]].\n\nWhen producing [[http://simile.mit.edu/timeline/|timelines]] this looks like an interesting way to go. Of course [[http://earth.google.com/| google earth]] is the way to go when it comes to marking locations. \n\nThe [[http://kclibrary.nhmccd.edu/research.htm|Kingwood Library]] site is useful when you just want some general background on history for a given decade.
These are some of the links I refer to frequently. I am a member of the [[Church of Jesus Christ or Latter Day Saints|http://en.wikipedia.org/wiki/The_Church_of_Jesus_Christ_of_Latter-day_Saints]]. Otherwise referred to as [[Mormons|http://en.wikipedia.org/wiki/Mormon]]. There are many great gospel study resources availalable through the [[LDS.org web site|http://www.lds.org/portal/site/LDSOrg]]. I frequently reference the [[scriptures|http://scriptures.lds.org/]], the [[general conference reports|http://lds.org/conference/display/0,5234,23-1,00.html]], the [[gospel doctrine course materials| http://www.lds.org/ldsorg/v/index.jsp?vgnextoid=d7561b08f338c010VgnVCM1000004d82620aRCRD&locale=0&sourceId=32bfcb7a29c20110VgnVCM100000176f620a____]] for 2008, the [[ Melchizedek Priesthood Instruction Manual|http://www.lds.org/ldsorg/v/index.jsp?vgnextoid=05425f74db46c010VgnVCM1000004d82620aRCRD&locale=0&sourceId=ae2720596a845110VgnVCM100000176f620a____]] for 2008 is based on the teaching of the Prophet Joseph Smith. The "Book of Mormon" is the focus for 2008. These manuals ([[Student Study Guide|http://www.ldsces.org/inst_manuals/bm-ssg/manualindex.asp]], [[The Book of Mormon Student Manual|http://www.ldsces.org/inst_manuals/bm-in-sm1996/manualindex.asp]]) offered through the seminary and institute programs are very helpful. To go along with the priesthood studies there is [["The Presidents of the Church"|http://www.ldsces.org/inst_manuals/pres-sm/manualindex.asp]] and [["The Church History in the Fullness of Times"|http://www.ldsces.org/inst_manuals/chft/manualindex.asp]] The [[Mormon Encyclopedia|http://eom.byu.edu/index.php/Encyclopedia_of_Mormonism]] is a good reference source.
Go here to search a [[ food database|http://www.calorieking.com/foods/search.php?]] for calories and other info. Here is a [[basal metabolic rate calculator|http://health.discovery.com/tools/calculators/basal/basal.html]] that can be useful.
My [[hike log|http://www.activetrails.com/profile.cfm/dlongmore]]. As I have hiked I have encountered opportunities to learn about about the [[vegetation|http://www.rootcellar.us/wildflowers/contents.htm]] and the [[birds|http://www.utahbirds.org/]] and all kinds of other [[animals|http://dwrcdc.nr.utah.gov/ucdc/]]. I try to be safe when I hike by being aware of any [[bad weather|http://www.wrh.noaa.gov/slc/snow/]] or [[avalanche danger|http://www.avalanche.org/~uac/]]. Here are few place to begin your exploration of the mountains within Utah ([[Wasatch Range|http://www.peakbagger.com/range.aspx?rid=1452]], [[Uinta Range|http://www.peakbagger.com/range.aspx?rid=1453]], [[Great Basin Range|http://www.peakbagger.com/range.aspx?rid=133]], [[Colorado Plateau|http://www.peakbagger.com/range.aspx?rid=134]], [[Another Wasatch Mtn|http://www.micksmtn.20m.com/index.html]]). Here is a list of all the [[Utah highpoints|http://www.summitpost.org/list/171195/utah-county-highpoints.html]] for each county.
The online [[Oracle documentation|http://www.oracle.com/pls/db102/portal.portal_db?selected=2]] published by [[Oracle|http://www.oracle.com/index.html]] is my main reference source. My employer is [[Exevision|http://www.exevision.com/]]. They provide Oracle consulting and training and they are based in Utah. My current project with them involves supporting the MMCS System at [[Utah Department of Health|http://health.utah.gov/]]. This [[reference|http://johnbokma.com/textpad/textpad-reference.pdf]] on [[textpad|http://www.textpad.com/]] is useful when your memory fails you. The [[ask Tom|http://asktom.oracle.com]] is also another good Oracle related source for ideas and answers. Sometime I need some help remembering how to format something for a [[wiki entry|http://meta.wikimedia.org/wiki/Help:Advanced_editing]].
/***\n|''Name:''|LegacyStrikeThroughPlugin|\n|''Description:''|Support for legacy (pre 2.1) strike through formatting|\n|''Version:''|1.0.1|\n|''Date:''|Jul 21, 2006|\n|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|\n|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|\n|''License:''|[[BSD open source license]]|\n|''CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n\n***/\n\n//{{{\n\n// Ensure that the LegacyStrikeThrough Plugin is only installed once.\nif(!version.extensions.LegacyStrikeThroughPlugin)\n {\n version.extensions.LegacyStrikeThroughPlugin = true;\n\nconfig.formatters.push(\n{\n name: "legacyStrikeByChar",\n match: "==",\n termRegExp: /(==)/mg,\n element: "strike",\n handler: config.formatterHelpers.createElementAndWikify\n});\n\n} // end of "install only once"\n//}}}\n
I frequently refer to these libraries [["my personal library"|http://www.librarything.com/catalog/dlongmore]], the [[Salt Lake County library|http://www.slco.lib.ut.us/]], and the [[Salt Lake City library|http://www.slcpl.lib.ut.us/index.jsp]].
\n\n+++[Business Matters|Working for a living]\n \n<html>•</html> [[Resume|Resume_of_Daniel_Longmore]]\n<html>•</html> [[Addendum|Technology_Skills_Addendum]]\n\n===\n----\n+++[Off The Clock|Off The Clock Interests]\n<html>•</html> [[Family History|FamilyHistory]]\n===\n----\n[[Contact|Contact - Daniel Longmore]]\n----\n[[About|About_Daniel_Longmore]]\n----
/***\n|''Name:''|MediaWikiFormatterPlugin|\n|''Description:''|Allows Tiddlers to use [[MediaWiki|http://meta.wikimedia.org/wiki/Help:Wikitext]] ([[WikiPedia|http://meta.wikipedia.org/]]) text formatting|\n|''Source:''|http://martinswiki.com/prereleases.html#MediaWikiFormatterPlugin|\n|''Author:''|Martin Budden (mjbudden (at) gmail (dot) com)|\n|''Version:''|0.3.8|\n|''Status:''|alpha pre-release|\n|''Date:''|Oct 21, 2006|\n|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.1.0|\n\n|''Display instrumentation''|<<option chkDisplayInstrumentation>>|\n|''Display empty template links:''|<<option chkMediaWikiDisplayEmptyTemplateLinks>>|\n|''Allow zooming of thumbnail images''|<<option chkMediaWikiDisplayEnableThumbZoom>>|\n|''List references''|<<option chkMediaWikiListReferences>>|\n\nThis is an early release of the MediaWikiFormatterPlugin, which allows you to insert MediaWiki\nformated text into a TiddlyWiki.\n\nThe aim is not to fully emulate MediaWiki, but to allow you to create MediaWiki content off-line\nand then paste the content into your MediaWiki later on, with the expectation that only minor\nedits will be required.\n\nTo use MediaWiki format in a Tiddler, tag the Tiddler with MediaWikiFormat. See [[testMediaWikiFormat]]\nfor an example.\n\n!!!Issues\nThis is an early alpha release, with (at least) the following known issues:\n# Not all styles from http://meta.wikimedia.org/wiki/MediaWiki:Common.css incorporated\n## Styles for tables don't yet match Wikipedia styles.\n## Styles for image galleries don't yet match Wikipedia styles.\n# Anchors not yet supported.\n\n!!!Not supported\n# Magic words and variables http://meta.wikimedia.org/wiki/Help:Magic_words\n# Template substitution http://meta.wikimedia.org/wiki/Help:Substitution\n# Template colon functions http://meta.wikimedia.org/wiki/Help:Colon_function\n# Template parser functions (eg #if) http://meta.wikimedia.org/wiki/ParserFunctions\n\n***/\n\n//{{{\n// Ensure that the MediaWikiFormatter Plugin is only installed once.\nif(!version.extensions.MediaWikiFormatterPlugin) {\nversion.extensions.MediaWikiFormatterPlugin = {installed:true};\n\nif(version.major < 2 || (version.major == 2 && version.minor < 1))\n {alertAndThrow("MediaWikiFormatterPlugin requires TiddlyWiki 2.1 or later.");}\n\nif(config.options.chkDisplayInstrumentation == undefined)\n {config.options.chkDisplayInstrumentation = false;}\n\nif(config.options.chkMediaWikiDisplayEmptyTemplateLinks == undefined)\n {config.options.chkMediaWikiDisplayEmptyTemplateLinks = false;}\nif(config.options.chkMediaWikiDisplayEnableThumbZoom == undefined)\n {config.options.chkMediaWikiDisplayEnableThumbZoom = false;}\nif(config.options.chkMediaWikiListReferences == undefined)\n {config.options.chkMediaWikiListReferences = false;}\n\nMediaWikiFormatter = {}; // "namespace" for local functions\n\nmwDebug = function(out,str)\n{\n createTiddlyText(out,str.replace(/\sn/mg,"\s\sn").replace(/\sr/mg,"RR"));\n createTiddlyElement(out,"br");\n};\n\nwikify = function(source,output,highlightRegExp,tiddler)\n{\n if(source && source != "") {\n var w = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);\n w.linkCount = 0;\n w.tableDepth = 0;\n w.output = tiddler==null ? output : createTiddlyElement(output,"p");\n var time1,time0 = new Date();\n w.subWikifyUnterm(w.output);\n if(tiddler && config.options.chkDisplayInstrumentation) {\n time1 = new Date();\n var t = tiddler ? tiddler.title : source.substr(0,10);\n displayMessage("Wikify '"+t+"' in " + (time1-time0) + " ms");\n }\n }\n//#at point of usage can use:\n//#var output = w.output.nodeType==1 && w.output.nodeName=="P" ? w.output.parentNode : w.output;\n};\n\nMediaWikiFormatter.getTemplateParams = function(w)\n{\n//#{{test|a|b}}\n//#{{test|n=a|m=b}}\n var params = {};\n\n var i = 1;\n var text = w.source + "|";\n var pRegExp = /(?:([^\s|]*)=)?([^\s|]*)\s|/mg;\n var match = pRegExp.exec(text);\n if(match) {\n // skip template name\n match = pRegExp.exec(text);\n }\n while(match) {\n //params[match[1] ? match[1] : i++] = match[2];\n if(match[1]) {\n params[match[1]] = match[2];\n } else {\n params[i] = match[2];\n i++;\n }\n match = pRegExp.exec(text);\n }\n return params;\n};\n\nMediaWikiFormatter.expandTemplate = function(w,tiddler,params)\n// see http://meta.wikimedia.org/wiki/Help:Template\n{\n var text = tiddler.text;\n text = text.replace(/<noinclude>((?:.|\sn)*?)<\s/noinclude>/mg,"");// remove text between noinclude tags\n var ioRegExp = /<includeonly>((?:.|\sn)*?)<\s/includeonly>/mg;\n var t = "";\n var match = ioRegExp.exec(text);\n while(match) {\n t += match[1];\n match = ioRegExp.exec(text);\n }\n text = t == "" ? text : t;\n\n var paramsRegExp = /\s{\s{\s{(.*?)(?:\s|(.*?))?\s}\s}\s}/mg;\n t = "";\n var pi = 0;\n match = paramsRegExp.exec(text);\n while(match) {\n var name = match[1];\n var def = match[2];\n var val = params[name];\n if(!val) {\n val = def;\n }\n if(!val) {\n val = match[0];\n }\n t += text.substring(pi,match.index) + val;\n pi = paramsRegExp.lastIndex;\n match = paramsRegExp.exec(text);\n }\n return t == "" ? text : t;\n};\n\nMediaWikiFormatter.endOfParams = function(w,text)\n{\n var p = 0;\n var i = text.indexOf("|");\n if(i==-1) {return -1;}\n var n = text.indexOf("\sn");\n if(n!=-1 && n<i) {return -1;}\n var b = text.indexOf("[[");\n if(b!=-1 && b<i) {return -1;}// can't have [[ in parameters\n \n b = text.indexOf("{{");\n while(b!=-1 && b<i) {\n // have {{ before |, so need to find first "|" after "{{..}}" pairs\n //cut off the ..{{, find the }} cut off and repeat\n p += b;\n text = text.substr(b);\n var c = text.indexOf("}}");\n p += c;\n text = text.substr(c);\n i = text.indexOf("|");\n if(i==-1) {return -1;}\n n = text.indexOf("\sn");\n if(n!=-1 && n<i) {return -1;}\n b = text.indexOf("{{");\n i = -1;\n }\n return i;\n};\n\nMediaWikiFormatter.readToDelim = function(w)\n//!!! this is a bit rubish, needs doing properly.\n{\n//#delimiter, startBracket terminatorBracket\n var dRegExp = /\s|/mg;\n var sRegExp = /\s[\s[/mg;\n var tRegExp = /\s]\s]/mg;\n\n dRegExp.lastIndex = w.startMatch;\n var dMatch = dRegExp.exec(w.source);\n sRegExp.lastIndex = w.startMatch;\n var sMatch = sRegExp.exec(w.source);\n tRegExp.lastIndex = w.startMatch;\n var tMatch = tRegExp.exec(w.source);\n if(!tMatch) {\n //mwDebug(w.output,"ERROR1");\n return false;\n }\n\n while(sMatch && sMatch.index<tMatch.index) {\n if(dMatch && dMatch.index<sMatch.index) {\n //# delim is before startBracket, so return it\n//mwDebug(w.output,"di:"+dMatch.index+" dl:"+sRegExp.lastIndex);\n w.nextMatch = dRegExp.lastIndex;\n w.matchLength = dMatch.index - w.startMatch;\n return true;\n }\n//mwDebug(w.output,"si:"+sMatch.index+" sl:"+sRegExp.lastIndex);\n//mwDebug(w.output,"ti:"+tMatch.index+" tl:"+tRegExp.lastIndex);\n //# startBracket before termBracket, so skip over bracket pairs\n // found eg [[, so look for ]]\n tRegExp.lastIndex = sRegExp.lastIndex;\n tMatch = tRegExp.exec(w.source);\n//mwDebug(w.output,"xti:"+tMatch.index+" tl:"+tRegExp.lastIndex);\n \n // and look for another [[\n w.nextMatch = tRegExp.lastIndex;\n dRegExp.lastIndex = w.nextMatch;\n dMatch = dRegExp.exec(w.source);\n sRegExp.lastIndex = w.nextMatch;\n sMatch = sRegExp.exec(w.source);\n tRegExp.lastIndex = w.nextMatch;\n tMatch = tRegExp.exec(w.source);\n }\n \n if(dMatch && dMatch.index<tMatch.index) {\n //# delim is before term, so return it\n//mwDebug(w.output,"2di:"+dMatch.index+" dl:"+sRegExp.lastIndex);\n w.nextMatch = dRegExp.lastIndex;\n w.matchLength = dMatch.index - w.startMatch;\n return true;\n }\n if(tMatch) {\n //# delim is before term, so return it\n//mwDebug(w.output,"2ti:"+tMatch.index+" tl:"+tRegExp.lastIndex);\n w.nextMatch = tRegExp.lastIndex;\n w.matchLength = tMatch.index - w.startMatch;\n return false;\n }\n //mwDebug(w.output,"ERROR2");\n //# return term\n w.nextMatch = tRegExp.lastIndex;\n w.matchLength = -1;\n return false;\n};\n\nMediaWikiFormatter.getParams = function(w)\n{\n var params = [];\n var i = 1;\n w.startMatch = w.nextMatch;\n var read = MediaWikiFormatter.readToDelim(w);\n if(w.matchLength!=-1) {\n params[i] = w.source.substr(w.startMatch,w.matchLength);\n }\n while(read) {\n i++;\n w.startMatch = w.nextMatch;\n read = MediaWikiFormatter.readToDelim(w);\n if(w.matchLength!=-1) {\n params[i] = w.source.substr(w.startMatch,w.matchLength);\n }\n }\n return params;\n};\n\nMediaWikiFormatter.setFromParams = function(w,p)\n{\n var r = {};\n var re = /\ss*(.*?)=(?:(?:"(.*?)")|(?:'(.*?)')|((?:\sw|%|#)*))/mg;\n var match = re.exec(p);\n while(match)\n {\n var s = match[1].unDash();\n if(match[2]) {\n r[s] = match[2];\n } else if(match[3]) {\n r[s] = match[3];\n } else {\n r[s] = match[4];\n }\n match = re.exec(p);\n }\n return r;\n};\n\nMediaWikiFormatter.setAttributesFromParams = function(e,p)\n{\n var re = /\ss*(.*?)=(?:(?:"(.*?)")|(?:'(.*?)')|((?:\sw|%|#)*))/mg;\n var match = re.exec(p);\n while(match) {\n var s = match[1].unDash();\n if(s == "bgcolor") {\n s = "backgroundColor";\n }\n try {\n if(match[2]) {\n e.setAttribute(s,match[2]);\n } else if(match[3]) {\n e.setAttribute(s,match[3]);\n } else {\n e.setAttribute(s,match[4]);\n }\n }\n catch(ex) {}\n match = re.exec(p);\n }\n};\n\nconfig.mediaWikiFormatters = [\n{\n name: "mediaWikiHeading",\n match: "^={2,6}(?!=)\s\sn?",\n termRegExp: /(={2,6}\sn?)/mg,\n handler: function(w)\n {\n var output = w.output.nodeType==1 && w.output.nodeName=="P" ? w.output.parentNode : w.output;\n var e = createTiddlyElement(output,"h" + w.matchLength);\n var a = createTiddlyElement(e,"a");// drop anchor\n var t = w.tiddler ? w.tiddler.title + ":" : "";\n var len = w.source.substr(w.nextMatch).indexOf("=");\n a.setAttribute("name",t+w.source.substr(w.nextMatch,len));\n w.subWikifyTerm(e,this.termRegExp);\n w.output = createTiddlyElement(output,"p");\n }\n},\n\n{\n name: "mediaWikiTable",\n match: "^\s\s{\s\s|", // ^{|\n tableTerm: "\s\sn\s\s|\s\s}", // |}\n rowStart: "\s\sn\s\s|\s\s-", // \sn|-\n cellStart: "\s\sn!|!!|\s\s|\s\s||\s\sn\s\s|", //\sn! or !! or || or \sn|\n caption: "\s\sn\s\s|\s\s+",\n rowTerm: null,\n cellTerm: null,\n inCellTerm: null,\n tt: 0,\n debug: null,\n rowTermRegExp: null,\n handler: function(w)\n {\n if(!this.rowTermRegExp) {\n this.rowTerm = "(" + this.tableTerm +")|(" + this.rowStart + ")";\n this.cellTerm = this.rowTerm + "|(" + this.cellStart + ")";\n this.inCellTerm = "(" + this.match + ")|" + this.rowTerm + "|(" + this.cellStart + ")";\n this.caption = "(" + this.caption + ")|" + this.cellTerm;\n\n this.rowTermRegExp = new RegExp(this.rowTerm,"mg");\n this.cellTermRegExp = new RegExp(this.cellTerm,"mg");\n this.inCellTermRegExp = new RegExp(this.inCellTerm,"mg");\n this.captionRegExp = new RegExp(this.caption,"mg");\n }\n//this.debug = createTiddlyElement(w.output,"p");\n//mwDebug(this.debug,"start table");\n this.captionRegExp.lastIndex = w.nextMatch;\n var match = this.captionRegExp.exec(w.source);\n if(!match) {return;}\n //var inPara = w.output.nodeType==1 && w.output.nodeName=="P" ? true : false;\n //var output = inPara ? w.output.parentNode : w.output;\n var output = w.output;\n var table = createTiddlyElement(output,"table");\n var rowContainer = table;\n\n var i = w.source.indexOf("\sn",w.nextMatch);\n if(i>w.nextMatch) {\n MediaWikiFormatter.setAttributesFromParams(table,w.source.substring(w.nextMatch,i));\n w.nextMatch = i;\n }\n\n var rowCount = 0;\n var eot = false;\n if(match[1]) {\n // caption\n var caption = createTiddlyElement(table,"caption");\n w.nextMatch = this.captionRegExp.lastIndex;\n var captionText = w.source.substring(w.nextMatch);\n var n = captionText.indexOf("\sn");\n captionText = captionText.substr(0,n);\n i = MediaWikiFormatter.endOfParams(w,captionText);\n if(i!=-1) {\n captionText = w.source.substr(w.nextMatch,i);\n //captionText = captionText.replace(/^\s+/mg,"")//!!hack until I fix this properly\n //MediaWikiFormatter.setAttributesFromParams(caption,captionText);\n w.nextMatch += i+1;\n }\n if(caption != table.firstChild) {\n table.insertBefore(caption,table.firstChild);\n }\n w.subWikify(caption,this.cellTerm);\n w.nextMatch -= w.matchLength;// rewind to before the match\n this.cellTermRegExp.lastIndex = w.nextMatch;\n var match2 = this.cellTermRegExp.exec(w.source);\n if(match2) {\n if(match2[3]) {\n // no first row marker\n eot = this.rowHandler(w,createTiddlyElement(rowContainer,"tr"));\n rowCount++;\n }\n }\n } else if(match[3]) {\n // row\n w.nextMatch = this.captionRegExp.lastIndex-match[3].length;// rewind to before the match\n } else if(match[4]) {\n // cell, no first row marker in table\n w.nextMatch = this.captionRegExp.lastIndex-match[4].length;// rewind to before the match\n eot = this.rowHandler(w,createTiddlyElement(rowContainer,"tr"));\n rowCount++;\n }\n\n this.rowTermRegExp.lastIndex = w.nextMatch;\n match = this.rowTermRegExp.exec(w.source);\n while(match && eot==false) {\n if(match[1]) {\n // end table\n w.nextMatch = this.rowTermRegExp.lastIndex;\n if(w.tableDepth==0) {\n return;\n }\n } else if(match[2]) {\n // row\n var rowElement = createTiddlyElement(rowContainer,"tr");\n w.nextMatch += match[2].length;// skip over the match\n i = w.source.indexOf("\sn",w.nextMatch);\n if(i>w.nextMatch) {\n MediaWikiFormatter.setAttributesFromParams(rowElement,w.source.substring(w.nextMatch,i));\n w.nextMatch = i;\n }\n eot = this.rowHandler(w,rowElement);\n }\n rowCount++;\n this.rowTermRegExp.lastIndex = w.nextMatch;\n match = this.rowTermRegExp.exec(w.source);\n }//# end while\n if(w.tableDepth==0) {\n w.nextMatch +=3;// skip over tableterm, \sn|}\n }\n //if(inPara)\n // w.output = createTiddlyElement(output,"p");\n },//# end handler\n\n rowHandler: function(w,e)\n {// assumes w.nextMatch points to first cell terminator, returns false if any improperly terminated element\n var cell;\n this.inCellTermRegExp.lastIndex = w.nextMatch;\n var match = this.inCellTermRegExp.exec(w.source);\n while(match) {\n if(match[1])\n {// nested table\n w.tableDepth++;\n w.subWikify(cell,this.tableTerm);\n w.nextMatch = this.tt;\n w.tableDepth--;\n return false;\n } else if(match[2]) {\n //# end table\n this.tt = this.inCellTermRegExp.lastIndex;\n return true;\n } else if(match[3]) {\n //# end row\n return false;\n } else if(match[4]) {\n //# cell\n var len = match[4].length;\n cell = createTiddlyElement(e,match[4].substr(len-1)=="!"?"th":"td");\n w.nextMatch += len;//skip over the match\n\n this.inCellTermRegExp.lastIndex = w.nextMatch;\n var lookahead = this.inCellTermRegExp.exec(w.source);\n if(!lookahead) {\n return false;// improperly terminated table\n }\n var cellText = w.source.substr(w.nextMatch,lookahead.index-w.nextMatch);\n var oldSource = w.source;\n var i = MediaWikiFormatter.endOfParams(w,cellText);//cellText.indexOf("|");\n if(i!=-1) {\n cellText = cellText.replace(/^\s+/mg,""); //!!hack until I fix this properly\n MediaWikiFormatter.setAttributesFromParams(cell,cellText.substr(0,i-1));\n cellText = cellText.substring(i+1);\n }\n cellText = cellText.replace(/^\ss*/mg,""); //# remove leading spaces so not treated as preformatted\n w.source = cellText;\n w.nextMatch = 0;\n w.subWikifyUnterm(cell);\n w.source = oldSource;\n w.nextMatch = lookahead.index;\n }\n this.inCellTermRegExp.lastIndex = w.nextMatch;\n match = this.inCellTermRegExp.exec(w.source);\n }//# end while\n return false;\n }//# end rowHandler\n},\n\n{\n name: "mediaWikiList",\n match: "^[\s\s*#;:]+ ",\n lookaheadRegExp: /^([\s*#;:])+ /mg,\n termRegExp: /(\sn)/mg,\n handler: function(w)\n {\n var output = w.output.parentNode;\n var stack = [output];\n var currLevel = 0, currType = null;\n var listType, itemType;\n w.nextMatch = w.matchStart;\n this.lookaheadRegExp.lastIndex = w.nextMatch;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {\n switch(lookaheadMatch[1]) {\n case "*":\n listType = "ul";\n itemType = "li";\n break;\n case "#":\n listType = "ol";\n itemType = "li";\n break;\n case ";":\n listType = "dl";\n itemType = "dt";\n break;\n case ":":\n listType = "dl";\n itemType = "dd";\n break;\n default:\n break;\n }\n var listLevel = lookaheadMatch[0].length;\n w.nextMatch += listLevel;\n if(listLevel > currLevel) {\n for(var i=currLevel; i<listLevel; i++) {\n stack.push(createTiddlyElement(stack[stack.length-1],listType));\n }\n } else if(listLevel < currLevel) {\n for(i=currLevel; i>listLevel; i--) {\n stack.pop();\n }\n } else if(listLevel == currLevel && listType != currType) {\n stack.pop();\n stack.push(createTiddlyElement(stack[stack.length-1],listType));\n }\n currLevel = listLevel;\n currType = listType;\n var e = createTiddlyElement(stack[stack.length-1],itemType);\n w.subWikifyTerm(e,this.termRegExp);\n this.lookaheadRegExp.lastIndex = w.nextMatch;\n lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n }\n w.output = createTiddlyElement(output,"p");\n }\n},\n\n{\n name: "mediaWikiRule",\n match: "^----+$\s\sn?",\n handler: function(w)\n {\n var output = w.output.parentNode;\n createTiddlyElement(output,"hr");\n w.output = createTiddlyElement(output,"p");\n }\n},\n\n{\n name: "mediaWikiLeadingSpaces",\n match: "^ ",\n lookaheadRegExp: /^ /mg,\n termRegExp: /(\sn)/mg,\n handler: function(w)\n {\n var e = createTiddlyElement(w.output,"pre");\n while(true) {\n w.subWikifyTerm(e,this.termRegExp);\n createTiddlyElement(e,"br");\n this.lookaheadRegExp.lastIndex = w.nextMatch;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {\n w.nextMatch += lookaheadMatch[0].length;\n } else {\n break;\n }\n }\n }\n},\n\n/*\n[[Image:Westminstpalace.jpg|frame|none|caption text]]\n//http://en.wikipedia.org/wiki/Image:Westminstpalace.jpg\n<a href="/wiki/Image:Westminstpalace.jpg" class="internal" title="caption text">\n<img src="http://upload.wikimedia.org/wikipedia/commons/3/39/Westminstpalace.jpg"\n alt="caption text" width="400" height="300" longdesc="/wiki/Image:Westminstpalace.jpg" />\n</a>\n\n[[image:Stockholm.jpg|right|350px|thumb|Stockholm panorama from the City Hall]]\n<div class="thumb tright">\n <div style="width:352px;">\n <a href="/wiki/Image:Stockholm.jpg" class="internal" title="Stockholm panorama from the City Hall">\n <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Stockholm.jpg/350px-Stockholm.jpg" alt="Stockholm panorama from the City Hall" width="350" height="84" longdesc="/wiki/Image:Stockholm.jpg" />\n </a>\n <div class="thumbcaption">\n <div class="magnify" style="float:right">\n <a href="/wiki/Image:Stockholm.jpg" class="internal" title="Enlarge">\n <img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" />\n </a>\n </div>\n Stockholm panorama from the City Hall\n </div>\n </div>\n</div>\n*/\n\n{\n name: "mediaWikiImage",\n match: "\s\s[\s\s[(?:[Ii]mage|Bild):",\n lookaheadRegExp: /\s[\s[(?:[Ii]mage|Bild):/mg,\n defaultPx: 180,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var params = MediaWikiFormatter.getParams(w);\n var src = params[1];\n src = src.trim().replace(/ /mg,"_");\n src = src.substr(0,1).toUpperCase() + src.substring(1);\n var palign = null;\n var ptitle = null;\n var psrc = false;\n var px = null;\n var pthumb = false;\n var pframed = false;\n for(var i=2;i<params.length;i++) {\n //# right, left, center, none, sizepx, thumbnail (thumb), frame, and alternate (caption) text.\n var p = params[i];\n if(p=="right"||p=="left"||p=="center"||p=="none") {\n palign = p;\n } else if(p=="thumbnail"||p=="thumb") {\n pthumb = true;\n } else if(p=="framed") {\n pframed = true;\n } else if(/\sd{1,4} ?px/.exec(p)) {\n px = p.substr(0,p.length-2).trim();\n } else {\n ptitle = p;\n }\n }//#end for\n if(pthumb) {\n var output = w.output.nodeType==1 && w.output.nodeName=="P" ? w.output.parentNode : w.output;\n if(!palign) {\n palign = "right";\n }\n if(!px) {\n px = 180;\n }\n psrc = px + "px-" + src;\n var t = createTiddlyElement(output,"div",null,"thumb"+(palign?" t"+palign:""));\n var s = createTiddlyElement(t,"div");\n s.style["width"] = Number(px) + 2 + "px";\n var a = createTiddlyElement(s,"a",null,"internal");\n if(config.options.chkMediaWikiDisplayEnableThumbZoom) {\n a.href = src;\n }\n a.title = ptitle;\n var img = createTiddlyElement(a,"img");\n img.src = psrc;\n img.width = px;\n img.longdesc = "Image:" + src;\n img.alt = ptitle;\n\n var tc = createTiddlyElement(s,"div",null,"thumbcaption");\n var oldSource = w.source; var oldMatch = w.nextMatch;\n w.source = ptitle; w.nextMatch = 0;\n w.subWikifyUnterm(tc);\n w.source = oldSource; w.nextMatch = oldMatch;\n\n if(config.options.chkMediaWikiDisplayEnableThumbZoom) {\n var tm = createTiddlyElement(tc,"div",null,"magnify");\n tm.style["float"] = "right";\n var ta = createTiddlyElement(tm,"a",null,"internal");\n ta.title = "Enlarge";\n timg = createTiddlyElement(ta,"img"); timg.src = "magnify-clip.png"; timg.alt = "Enlarge"; timg.width = "15"; timg.height = "11";\n ta.href = src;\n }\n } else {\n // not pthumb\n a = createTiddlyElement(w.output,"a",null,"image");\n a.title = ptitle;\n img = createTiddlyElement(a,"img");\n if(palign) {img.align = palign;}\n img.src = px ? px + "px-" + src : src;\n if(px) {img.width = px;}\n img.longdesc = "Image:" + src;\n img.alt = ptitle;\n }\n }\n }//#end image handler\n},\n\n{\n name: "mediaWikiExplicitLink",\n match: "\s\s[\s\s[",\n lookaheadRegExp: /\s[\s[(?:([a-z]{2,3}:)?)(#?)([^\s|\s]]*?)(?:(\s]\s](\sw)*)|(\s|(.*?)\s]\s]))/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if(!lookaheadMatch[1]) {\n // not (eg) [[en:...]]\n var e;\n var link = lookaheadMatch[3];\n var text = link;\n link = link.substr(0,1).toUpperCase() + link.substring(1);\n if(lookaheadMatch[4]) {\n // Simple bracketted link\n if(lookaheadMatch[2]) {\n var a = createTiddlyElement(e,"a");// drop anchor\n a.setAttribute("name",link);\n } else {\n e = createTiddlyLink(w.output,link,false,null,w.isStatic);\n if(lookaheadMatch[5]) {\n text += lookaheadMatch[5];//add any non-space after the ]]\n }\n createTiddlyText(e,text);\n }\n } else if(lookaheadMatch[6]) {\n // Piped link\n if(config.formatterHelpers.isExternalLink(link)) {\n e = createExternalLink(w.output,link);\n } else {\n e = createTiddlyLink(w.output,link,false,null,w.isStatic);\n }\n var oldSource = w.source; var oldMatch = w.nextMatch;\n w.source = lookaheadMatch[7].trim(); w.nextMatch = 0;\n w.subWikifyUnterm(e);\n w.source = oldSource; w.nextMatch = oldMatch;\n }\n }\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n},\n\n//#{{Audio|sv-Stockholm.ogg|Stockholm}}\n//**tem//\n{\n name: "mediaWikiTemplate",\n match: "\s\s{\s\s{[^\s\s{]",\n lookaheadRegExp: /\s{\s{((?:.|\sn)*?)\s}\s}/mg,\n handler: function(w)\n {\n//mwDebug(w.output,"wt:"+w.matchText+" ws:"+w.matchStart+" wn:"+w.nextMatch+" wl:"+w.matchLength);\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n//mwDebug(w.output,"lm:"+lookaheadMatch);\n//mwDebug(w.output,"lmi:"+lookaheadMatch.index+" lI:"+this.lookaheadRegExp.lastIndex);\n//mwDebug(w.output,"lm1:"+lookaheadMatch[1]);\n//mwDebug(w.output,"lm2:"+lookaheadMatch[2]);\n var lastIndex = this.lookaheadRegExp.lastIndex;\n var contents = lookaheadMatch[1];\n // see http://meta.wikimedia.org/wiki/Help:Variable\n if(contents=="PAGENAME") {\n createTiddlyText(w.output,w.tiddler.title);\n w.nextMatch = lastIndex;\n return;\n }\n var i = contents.indexOf("|");\n var title = i==-1 ? contents : contents.substr(0,i);\n title = title.trim().replace(/_/mg," ");// Underscore in template name is equivalent to space\n title = "Template:" + title.substr(0,1).toUpperCase() + title.substring(1);\n var tiddler = store.fetchTiddler(title);\n var oldSource = w.source;\n if(tiddler) {\n params = {};\n w.source = lookaheadMatch[1];\n if(i!=-1) {\n w.nextMatch = 0;\n params = MediaWikiFormatter.getTemplateParams(w);\n }\n w.source = MediaWikiFormatter.expandTemplate(w,tiddler,params);\n w.nextMatch = 0;\n w.subWikifyUnterm(w.output);\n } else {\n if(config.options.chkMediaWikiDisplayEmptyTemplateLinks) {\n // for conveniece, output the name of the template so can click on it and create tiddler\n w.source = "[["+title+"]]";\n w.nextMatch = 0;\n w.subWikifyUnterm(w.output);\n }\n }\n w.source = oldSource;\n w.nextMatch = lastIndex;\n }\n }\n},\n\n{\n name: "mediaWikiParagraph",\n match: "\s\sn{2,}",\n handler: function(w)\n {\n var output = w.output.nodeType==1 && w.output.nodeName=="P" ? w.output.parentNode : w.output;\n w.output = createTiddlyElement(output,"p");\n }\n},\n\n{\n name: "mediaWikiExplicitLineBreak",\n match: "<br ?/?>",\n handler: function(w)\n {\n createTiddlyElement(w.output,"br");\n }\n},\n\n{\n name: "mediaWikiExplicitLineBreakWithParams",\n match: "<br(?:\s\ss*(?:(?:.*?)=[\s"']?(?:.*?)[\s"']?))*?\s\ss*/?>",\n lookaheadRegExp: /<br((?:\ss+(?:.*?)=["']?(?:.*?)["']?)*?)?\ss*\s/?>/mg,\n handler: function(w)\n {\n //# copes with erroneous <br clear="right">\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var e =createTiddlyElement(w.output,"br");\n if(lookaheadMatch[1]) {\n MediaWikiFormatter.setAttributesFromParams(e,lookaheadMatch[1]);\n }\n w.nextMatch = this.lookaheadRegExp.lastIndex;// empty tag\n }\n }\n},\n\n{\n name: "mediaWikiTitledUrlLink",\n match: "\s\s[" + config.textPrimitives.urlPattern + "(?:\s\ss+[^\s\s]]+)?" + "\s\s]",\n //# eg [http://www.nupedia.com] or [http://www.nupedia.com Nupedia]\n //# <sup id="_ref-1" class="reference"><a href="#_note-1" title="">[2]</a>\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp("\s\s[(" + config.textPrimitives.urlPattern + ")(?:\s\ss+([^\s[]+))?" + "\s\s]","mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index==w.matchStart) {\n var link = lookaheadMatch[1];\n var s = createTiddlyElement(w.output,"sup");\n var e = createExternalLink(s,link);\n if(lookaheadMatch[2]) {\n var oldSource = w.source; var oldMatch = w.nextMatch;\n w.source = lookaheadMatch[2].trim(); w.nextMatch = 0;\n w.subWikifyUnterm(e);\n w.source = oldSource; w.nextMatch = oldMatch;\n } else {\n w.linkCount++;\n createTiddlyText(e,"["+w.linkCount+"]");\n }\n w.nextMatch = lookaheadRegExp.lastIndex;\n }\n }\n},\n\n{\n name: "mediaWikiUrlLink",\n match: config.textPrimitives.urlPattern,\n handler: function(w)\n {\n w.outputText(createExternalLink(w.output,w.matchText),w.matchStart,w.nextMatch);\n }\n},\n\n{\n name: "mediaWikiBold",\n match: "'''",\n termRegExp: /('''|\sn)/mg,\n element: "strong",\n handler: config.formatterHelpers.createElementAndWikify\n},\n\n{\n name: "mediaWikiItalic",\n match: "''(?!')",\n termRegExp: /(''(?!')|\sn)/mg,\n element: "em",\n handler: config.formatterHelpers.createElementAndWikify\n},\n\n{\n name: "mediaWikiUnderline",\n match: "<u>",\n termRegExp: /(<\s/u>|\sn)/mg,\n element: "u",\n handler: config.formatterHelpers.createElementAndWikify\n},\n\n{\n name: "mediaWikiStrike",\n match: "<s>",\n termRegExp: /(<\s/s>|\sn)/mg,\n element: "strike",\n handler: config.formatterHelpers.createElementAndWikify\n},\n\n{\n name: "mediaWikiBoldTag",\n match: "<b>",\n termRegExp: /(<\s/b>|\sn)/mg,\n element: "b",\n handler: config.formatterHelpers.createElementAndWikify\n},\n\n{\n name: "mediaWikiTemplateParam",// note, this only gets invoked when viewing the template\n match: "\s\s{\s\s{\s\s{",\n lookaheadRegExp: /(\s{\s{\s{(?:.|\sn)*?\s}\s}\s})/mg,\n element: "span",\n handler: config.formatterHelpers.enclosedTextHelper\n},\n\n//# See http://en.wikipedia.org/wiki/Wikipedia:Footnotes\n//# for an explanation of how to generate footnotes using the <ref(erences/)> tags\n{\n name: "mediaWikiInsertReference",\n match: "<ref[^/]*>",\n lookaheadRegExp: /<ref(\ss+(?:.*?)=["']?(?:.*?)["']?)?>([^<]*?)<\s/ref>/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var x = {id:"",value:""};\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n if(!w.referenceCount) {\n w.referenceCount = 0;\n w.references = {};\n }\n var s = createTiddlyElement(w.output,"sup",null,"reference");\n var a = createTiddlyElement(s,"a");\n var prefix = w.tiddler ? w.tiddler.title + ":" : "";\n if(lookaheadMatch[1]) {\n var r = {};\n r = MediaWikiFormatter.setFromParams(w,lookaheadMatch[1]);\n var name = r.name ? r.name.trim() : "";\n name = name.replace(/ /g,"_");\n s.id = prefix + "_ref-" + name;// + "_" + nameCount;(w.referenceCount+1);\n if(!w.references[name]) {\n w.references[name] = x;\n w.references[name].id = w.referenceCount;\n w.references[name].value = lookaheadMatch[2].trim();\n }\n } else {\n w.references[w.referenceCount] = x;\n w.references[w.referenceCount].id = w.referenceCount;\n w.references[w.referenceCount].value = lookaheadMatch[2].trim();\n name = w.referenceCount;\n s.id = prefix + "_ref-" + w.referenceCount;\n }\n w.referenceCount++;\n a.title = lookaheadMatch[2].trim();//mb, extra to wikipedia\n a.href = "#" + prefix + "_note-" + name;\n a.innerHTML = "["+w.referenceCount+"]";\n//#<sup id="_ref-0" class="reference"><a href="#_note-0" title="">[1]</a></sup>\n//#<sup id="_ref-foreign_ministry_0" class="reference"><a href="#_note-foreign_ministry" title="">[2]</a></sup>\n }\n }\n},\n\n{\n name: "mediaWikiListReferences",\n match: "<references ?/>",\n lookaheadRegExp: /<references ?\s/>/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(config.options.chkMediaWikiListReferences && w.referenceCount) {\n var ol = createTiddlyElement(w.output,"ol",null,"references");\n var oldSource = w.source;\n if(w.referenceCount>0) {\n for(var i in w.references) {\n var li = createTiddlyElement(ol,"li");\n var prefix = w.tiddler ? w.tiddler.title + ":" : "";\n var b = createTiddlyElement(li,"b");\n var a = createTiddlyElement(b,"a");\n li.id = prefix + "_note-" + i;\n a.href = "#" + prefix + "_ref-" + i;\n a.innerHTML = "^";\n w.source = w.references[i].value;\n w.nextMatch = 0;\n w.subWikifyUnterm(li);\n }\n }\n w.source = oldSource;\n }\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n},\n\n{\n name: "mediaWikiRepeatReference",\n match: "<ref[^/]*/>",\n lookaheadRegExp: /<ref(\ss+(?:.*?)="(?:.*?)")?\ss*\s/>/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var x = {id:"",value:""};\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n//#<ref name="foreign ministry">\n//#<sup id="_ref-foreign_ministry_1" class="reference"><a href="#_note-foreign_ministry" title="">[2]</a></sup>\n var s = createTiddlyElement(w.output,"sup",null,"reference");\n var a = createTiddlyElement(s,"a");\n var prefix = w.tiddler ? w.tiddler.title : "";\n if(lookaheadMatch[1]) {\n var r = {};\n r = MediaWikiFormatter.setFromParams(w,lookaheadMatch[1]);\n var name = r.name ? r.name.trim() : "";\n name = name.replace(/ /g,"_");\n s.id = prefix + "_ref-" + name +"_" + (w.referenceCount+1);\n var count = w.references && w.references[name] ? (w.references[name].id+1) : "?";\n }\n a.href = "#" + prefix + "_note-" + name;\n a.innerHTML = "["+count+"]";\n a.title = name;\n }\n }//# end handler\n},\n\n{\n name: "mediaWikiHtmlEntitiesEncoding",\n match: "&#?[a-zA-Z0-9]{2,8};",\n handler: function(w)\n {\n createTiddlyElement(w.output,"span").innerHTML = w.matchText;\n }\n},\n\n{\n name: "mediaWikiComment",\n match: "<!\s\s-\s\s-",\n lookaheadRegExp: /<!\s-\s-((?:.|\sn)*?)\s-\s->/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n},\n\n{\n name: "mediaWikiIncludeOnly",\n match: "<includeonly>",\n lookaheadRegExp: /<includeonly>((?:.|\sn)*?)<\s/includeonly>/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n},\n\n{\n name: "mediaWikiNoWiki",\n match: "<nowiki>",\n lookaheadRegExp: /<nowiki>((?:.|\sn)*?)<\s/nowiki>/mg,\n element: "span",\n handler: config.formatterHelpers.enclosedTextHelper\n},\n\n{\n name: "mediaWikiPreNoWiki",\n match: "<pre>\ss*<nowiki>",\n lookaheadRegExp: /<pre>\ss*<nowiki>((?:.|\sn)*?)<\s/nowiki>\ss*<\s/pre>/mg,\n element: "pre",\n handler: config.formatterHelpers.enclosedTextHelper\n},\n\n{\n name: "mediaWikiPre",\n match: "<pre>",\n lookaheadRegExp: /<pre>((?:.|\sn)*?)<\s/pre>/mg,\n element: "pre",\n handler: config.formatterHelpers.enclosedTextHelper\n},\n\n{\n name: "mediaWikiGallery",\n match: "<gallery>",\n lookaheadRegExp: /[Ii]mage:(.*?)\sn/mg,\n handler: function(w)\n {\n//#basic syntax is:\n//#<gallery>\n//#Image:Wiki.png\n//#Image:Wiki.png|Captioned\n//#Image:Wiki.png|[[Help:Contents/Links|Links]] can be put in captions.\n//#Image:Wiki.png|Full [[MediaWiki]]<br />[[syntax]] may now be used…\n//#</gallery>\n//#<table class="gallery" cellspacing="0" cellpadding="0">\n//#<tr>\n//#...\n//#</tr>\n//#</table>\n var table = createTiddlyElement(w.output,"table",null,"gallery");\n table.cellspacing = "0";\n table.cellpadding = "0";\n var rowElem = createTiddlyElement(table,"tr");\n var col = 0;\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var nM = w.nextMatch;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n var oldSource = w.source;\n while(lookaheadMatch) {\n nM += lookaheadMatch[1].length;\n w.source = lookaheadMatch[1] +"]]";//!! ]] is hack until getParams is working\n w.nextMatch = 0;\n var params = MediaWikiFormatter.getParams(w);\n var src = params[1];\n src = src.trim().replace(/ /mg,"_");\n src = src.substr(0,1).toUpperCase() + src.substring(1);\n var palign = "right"; \n var psrc = "120px-"+src;\n var px = 120;\n var pframed = false;\n ptitle = null;\n for(var i=2;i<params.length;i++) {\n //right, left, center, none, sizepx, thumbnail (thumb), frame, and alternate (caption) text.\n var p = params[i];\n if(p=="right"||p=="left"||p=="center"||p=="none") {\n palign = p;\n } else if(p=="framed") {\n pframed = true;\n } else if(/\sd{1,4}px/.exec(p)) {\n px = p.substr(0,p.length-2).trim();\n psrc = px + "px-" + src;\n } else {\n ptitle = p;\n }\n }//#end for\n//#<td>\n//#<div class="gallerybox">\n//# <div class="thumb" style="padding: 26px 0;">\n//# <a href="/wiki/Image:Paul_C%C3%A9zanne_184.jpg" title="Image:Paul Cézanne 184.jpg">\n//# <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Paul_C%C3%A9zanne_184.jpg/120px-Paul_C%C3%A9zanne_184.jpg" width="120" height="94" alt="" />\n//# </a>\n//# </div>\n//# <div class="gallerytext">\n//# <p><i>La Pain et les Oeufs</i> (Bread and Eggs), thought to present austerity, 1865. Signed and dated. Possibly in Spanish style.</p>\n//# </div>\n//#</div>\n//#</td>\n var td = createTiddlyElement(rowElem,"td");\n var gb = createTiddlyElement(td,"div",null,"gallerybox");\n var t = createTiddlyElement(gb,"div",null,"thumb");\n t.style["padding"] = "26px 0";\n\n var a = createTiddlyElement(t,"a");\n if(config.options.chkMediaWikiDisplayEnableThumbZoom) {\n a.href = src;\n }\n a.title = ptitle;\n var img = createTiddlyElement(a,"img");\n img.src = psrc;\n img.width = px;\n img.alt = "";//ptitle;\n\n var gt = createTiddlyElement(gb,"div",null,"gallerytext");\n p = createTiddlyElement(gt,"p");\n var oldSource2 = w.source; var oldMatch = w.nextMatch;\n w.source = ptitle; w.nextMatch = 0;\n w.subWikifyUnterm(p);\n w.source = oldSource2; w.nextMatch = oldMatch;\n\n col++;\n if(col>3) {\n rowElem = createTiddlyElement(table,"tr");\n col = 0;\n }\n w.source = oldSource;\n lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n }\n w.nextMatch = nM + "<gallery>".length*2+1+"Image:".length;//!! hack\n }\n},\n\n{\n name: "mediaWikiHtmlTag",\n match: "<[a-zA-Z]{2,}(?:\s\ss*(?:(?:.*?)=[\s"']?(?:.*?)[\s"']?))*?>",\n lookaheadRegExp: /<([a-zA-Z]{2,})((?:\ss+(?:.*?)=["']?(?:.*?)["']?)*?)?\ss*(\s/)?>/mg,\n handler: function(w)\n {\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var e =createTiddlyElement(w.output,lookaheadMatch[1]);\n if(lookaheadMatch[2]) {\n MediaWikiFormatter.setAttributesFromParams(e,lookaheadMatch[2]);\n }\n if(lookaheadMatch[3]) {\n w.nextMatch = this.lookaheadRegExp.lastIndex;// empty tag\n } else {\n w.subWikify(e,"</"+lookaheadMatch[1]+">");\n }\n }\n }\n}\n];\n\nconfig.parsers.mediaWikiFormatter = new Formatter(config.mediaWikiFormatters);\nconfig.parsers.mediaWikiFormatter.formatTag = "MediaWikiFormat";\n} // end of "install only once"\n//}}}\n
\n \nYou found me! Now what you going to do? I am interested in the application of computer technology as it relates to my personal life . Beside that, my professional life centers around it as well. So you will see a little of both on this site. Mostly it deals with my personal side.\n\nYou can can view my [[family history|FamilyHistory]], [[gospel studies|GospelStudies]],[[resume|Resume_of_Daniel_Longmore]], [[libraries|Libraries]], [[hikes|Hikes]], [[art interests|ArtInterests]], [[job tools|JobTools]], [[health tools|HealthTools]], [[bookmarks|http://del.icio.us/dlongmore]], [[photo album|http://atpic.com/1267]], [[custom google searchs|http://www.google.com/coop/manage/cse/]], or [[blog|http://www.mfg-consult.com/blog]] from here.\n\nI am hoping to someday be able to mash-em-up into a really cool page. For now they are just here as a bunch of separate links.\n\nView [[my blog|http://www.mfg-consult.com/blog]] to hear the latest on what is going on in my life.\n
/***\n|''Name:''|NestedSlidersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#NestedSlidersPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater (with optional CSS width value)\n*mouse auto rollover\n*custom class/label/tooltip/accesskey\n*automatic blockquote\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsaves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{^width^}}} (or just {{{^}}})^^\nmakes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)^^\n* {{{*}}}^^\nautomatically opens/closes slider on "rollover" as well as when clicked^^\n* {{{{{class{[label=key|tooltip]}}}}}}^^\nuses custom label/tooltip/accesskey. {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n}}}\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n===\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}\n''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.\n''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"\n''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value\n''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label\n''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element\n''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position\n''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie\n''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)\n''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.\n''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.\n''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.\n''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)\n''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state\n''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\nformatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin\nmore documentation\n''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}\ntweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\ncode cleanup, added documentation\n''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\nchanged name to EasySlidersPlugin\n''2005.11.03 - 1.0.0'' initial public release\n<<<\n!!!!!Credits\n<<<\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^(?:[^\s\s^\s\s*\s\s[\s\s>]*\s\s^)?)?(\s\s*)?(?:\s\s{\s\s{([\s\sw]+[\s\ss\s\sw]*)\s\s{)?(\s\s[[^\s\s]]*\s\s])?(?:\s\s}{3})?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n // defopen=lookaheadMatch[1]\n // cookiename=lookaheadMatch[2]\n // header=lookaheadMatch[3]\n // panelwidth=lookaheadMatch[4]\n // rollover=lookaheadMatch[5]\n // class=lookaheadMatch[6]\n // label=lookaheadMatch[7]\n // blockquote=lookaheadMatch[8]\n // deferred=lookaheadMatch[9]\n\n lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie, no accesskey\n var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().slice(1,-1);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // parse custom label/tooltip/accesskey: [label=X|tooltip]\n if (lookaheadMatch[7]) {\n title = lookaheadMatch[7].trim().slice(1,-1);\n var pos=title.indexOf("|");\n if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }\n if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }\n if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);\n\n // set extra button attributes\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)\n btn.keyparam=key; // save the access key letter ("" if none)\n if (key.length) {\n btn.setAttribute("accessKey",key); // init access key\n btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus\n }\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.button = btn; // so the slider panel know which button it belongs to\n panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size\n btn.sliderPanel=panel;\n panel.style.display = show;\n panel.style.width=panel.defaultPanelWidth;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[9]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nwindow.onClickNestedSlider=function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n // reset to default width (might have been changed via plugin code)\n theSlider.style.width=theSlider.defaultPanelWidth;\n // align slider/floater position with target button\n if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n // if showing panel, set focus to first 'focus-able' element in panel\n if (theSlider.style.display!="none") {\n var ctrls=theSlider.getElementsByTagName("*");\n for (var c=0; c<ctrls.length; c++) {\n var t=ctrls[c].tagName.toLowerCase();\n if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")\n { ctrls[c].focus(); break; }\n }\n }\n if (this.sliderCookie && this.sliderCookie.length) {\n config.options[this.sliderCookie]=!isOpen;\n if (config.options[this.sliderCookie]!=this.defOpen)\n saveOptionCookie(this.sliderCookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n if (panelClass=="floatingPanel") {\n var left=0;\n var top=btn.offsetHeight; \n if (place.style.position!="relative") {\n var left=findPosX(btn);\n var top=findPosY(btn)+btn.offsetHeight;\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;\n if (p) { left-=findPosX(p); top-=findPosY(p); }\n }\n if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n\nfunction getWindowWidth() {\n if(document.width!=undefined)\n return document.width; // moz (FF)\n if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )\n return document.documentElement.clientWidth; // IE6\n if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )\n return document.body.clientWidth; // IE4\n if(window.innerWidth!=undefined)\n return window.innerWidth; // IE - general\n return 0; // unknown\n}\n//}}}
<div id='header'>\n<div id='titleLine'>\n<span id='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span id='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n</div>\n</div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
__''@@font-size:13pt;color: #00749E;Resume of Daniel Longmore@@''__\nemail: dlongmore[at]gmail[dot]com\n\n__''@@font-size:10pt;color: #00749E;Summary of Skills and Goals@@''__\nMy 19 years experience is comprised of enterprise application development with a concentration on database management and providing quality applications to the user community. Perfection is my passion. I have seen the full range of software application quality over the course of my 19 years of experience. I want to become a team member of an organization that is seeking for the highest levels of software development standards. My strongest assets are creative problem solving and a desire to constantly improve.\n* 19 Years of Information Systems & Technology Experience\n* 12 Years Supporting and Developing Enterprise Level Applications [[[Addendum - Tools and Databases|Technology_Skills_Addendum]]]\n* Key player on several major projects [[[Addendum - Major Projects|Technology_Skills_Addendum]]]\n* Strong supporter of application design based on user interaction and testing [[[Addendum - Methodologies|Technology_Skills_Addendum]]]\n* Continually seeking opportunities to learn and improve [[[Addendum - Education and Training|Technology_Skills_Addendum]]] \n__''@@font-size:10pt;color: #00749E;Professional History@@''__\nExevision, Salt Lake City UT, Senior Oracle Developer, July 2005 - Feb 2007\n* Designed, developed, implemented, and supported Health Care application (MAXeb) for the State of Georgia. The purpose of the MAXeb application is to assist individuals with the initial health care enrollment process. This entails the process whereby new individuals apply and are accepted as members of a prepaid health care plan. Some examples of submodules include: Call Center, Letter Processing, In/Outbound Interfaces.\nTomax Inc, Salt Lake City UT, Senior Oracle Developer, May 2003 - May 2005 \n* Improved the setup process for testbed environments. Created scripts to initialize the database and load it with initial test data. Directed and mentored development team in India. Provided design, development and support for enhancements/fixes to Retailnet Order Management System. Enhancements included: GECS Credit Processing, Customer Pricing, Incentive Compensation, Major rework of tendering codebase. Contract work: May 2003 - Aug 2003, Fulltime Employee: Aug 2003 - May 2005\nContract Work, Salt Lake City UT, Oracle Developer, Sept 2002 - May 2003\n* These contracts included the following: USANA Health Science where I created custom extensions and reports to several areas of the Oracles Apps; Stevens Henager College where I instructed students in Oracle; and at Novell I created a custom extension to the Oracle Order Entry module. \nUtah State Dept of Workforce Services , Salt Lake City UT, Oracle Developer - Contractor, July 2000 - Sept 2002\n* Designed and developed UWORKS job matching engine in PL/SQL. This query and matching engine is the very core of the UWORKS application. It served two frontend interfaces both an Oracle forms application and a webbased HTML system. Reliability and speed of this search engine were critical success factors in the UWORKS project. \n* Managed UWORKS data conversion, including merging of multiple sources of data, scheduling and coordination of long jobs, tuning of scripts. Provided training on Oracle Forms. Provided training and mentoring in SQL/PL/SQL/Forms/Report on as needed basis to staff members.\nMerit Medical, South Jordan UT, Oracle Applications Developer, July 1998 - June 2000\n* Designed and developed custom WIP transaction extension to Oracle Application. Improved the efficiency and accuracy of the process. Previous process involved navigating to six separate screens in most cases entering redundant data for each transaction. The new process was a single screen which defaulted most data and allowed several transactions to be entered in one batch. Improved forecast data input process including, use of excel spreadsheet for data input, SQL scripts to import the spreadsheet data. Also provided many support and maintenance related fixes to reports and forms in the Oracle Applications. \nTLR Consulting, Salt Lake City UT, Application Developer, Dec 1997 - July 1998 \n\n3Com, Salt Lake City UT, ERP Application Programmer, July 1993 - Dec 1997\n\nCUSA, Salt Lake City UT, Software Support Specialist, Feb 1990 - July 1993\n\nMrs. Fields, Park City UT, Technical Support, June 1989 - Feb 1990\n\n__''@@font-size:10pt;color: #00749E;Education@@''__\n* Degrees: \n** University of Utah, Salt Lake City UT, B.S. in Political Science, 1989 \n* Additional Education\n** See Addendum - Education and Training\n__''@@font-size:10pt;color: #00749E;References@@''__\n* Personal and Professional references are available upon request.\n
<html>\n<body>\n<form method="get" action="http://www.google.com/search" target="_blank">\n <input type="hidden" name="ie" value="UTF-8"> <input type="hidden" name="oe" value="UTF-8">\n <table>\n <tr>\n <td><input type="submit" name="btnG" value="Google Search"></td>\n </tr>\n <tr>\n <td><input type="text" name="q" size="18" maxlength="255"\n value=""> </td>\n </tr>\n </table>\n </form><!-- Search Google -->\n</body>\n</html>\n<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
//[[ . . . . . by Daniel Longmore|About_Daniel_Longmore]]//
[[My Web Home|MyEpigraph]]
#header { background-color: transparent; border-bottom: 1px solid #00749E; }\n\nbody {color: #000; font: normal 14px Arial,Helvetica,sans-serif; color: #000;}\n/*font-family: verdana, helvetica, arial; }*/\na { color: #00749E; }\na:hover{ background: #ffffff; color: #000000; text-decoration: underline;}\n\n\n#messageArea {background-color: #ffffff; position: absolute; top: 0; right: 0; }\n\n\n#titleLine {font-size: 12; font-weight: bold; text-align: left; color: #00749E; padding: 2.5em 1em 1em 0em; }\n#titleLine a {background-color: transparent; padding: 3px 5px 3px 5px; color: #00749E; text-decoration: none; }\n#titleLine a:hover {background-color: #ffffff; padding: 2px 4px 2px 4px; border: 1px solid; border-color: #ffffff; color: #000000; text-decoration: underline;}\n\n\n#siteTitle {font-size: 16pt; margin: 0em 1em 0em 12em; font-weight: bold; color: #000000; }\n#siteSubtitle { padding-left: 0em; font-size: 11pt; font-weight: normal; color: #000000; }\n#displayArea {margin: 0em 17.2em 10em 15.5em; }\n\n.tiddler {padding: 2px 10px 7px 8px; font-size: 9pt; border:none; }\n.tiddler.selected {padding: 1px 9px 6px 7px; background-color: #ffffff; border: 1px solid; border-color: #DADADA; }\n.tiddler .title {color: #00749E; }\n.selected .title {color: #00749E; padding: 0.1em 1.5em .1em 1em; border-style: solid; border-width: 1px 0px 0px 1px; border-color: #00749E; }\n\n#tiddlerMyEpigraph .title { display: none; }\n#tiddlerMyEpigraph .viewer { border-top: 1px solid #ffffff; border-left: 1px solid #ffffff; padding: 1em 2em 0em 2em; margin-right: 1em; background-image: url('quote.gif'); background-repeat: no-repeat; }\n\ndiv.tiddler:first-child {margin: 1em 0em 0em 0em;}\n\ndiv[tags~="epigraphs"].viewer { border-top: 1px solid #00749E; border-left: 1px solid #00749E; padding: 1em 2em 0em 2em; margin-right: 1em; background-image: url('quote.gif'); background-repeat: no-repeat; }\ndiv[tags~="epigraphs"] #tiddler .title { color: #ffffff; display: none; }\ndiv[tags~="Setup"].viewer { color: #ffffff; background-color: #00749E; padding: 1.5em; }
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n border: 0;\n}\n\n.externalLink {\n text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n.wizard {\n padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n font-size: 2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n font-size: 1.2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n margin: 0.5em 0em 0em 0em;\n font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n line-height: 1px;\n}\n\n.listBreak div {\n margin: 2px 0;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer table.listView {\n font-size: 0.85em;\n margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
__''@@font-size:13pt;color: #00749E;Daniel Longmore - Addendum@@''__\n\n''Major Projects:''\n* ~MAXeb Enrollment Broker Application (2005-2006 - Exevision)\n* Retailnet Order Management Application: (2003-2005 - Tomax)\n* UWORKS Application: Data conversion from Legacy System. (2000-2002 - DWS)\n* UWORKS Application: Job Search and Matching Engine. (2000-2002 - DWS)\n* Oracle Mfg Apps: (1998-2000 - Merit Medical) (2000-2005 - 10% Several)\n* Oracle Order Entry Apps: (1998-2000 - Merit Medical)\n* Warehouse Management System: (1997 - 3Com)\n* Shop Floor Data Collection System: (1995-1996 - 3Com)\n''Tools and Databases:''\n* ''Databases ''\n** Oracle SQL, Versions (10g, 9i, 8, 7), Steady since 1996\n** Oracle PLSQL, Versions (10g, 9i, 8, 7), Steady since 1996\n** Oracle Enterprise Manager (10g) Since 2006\n** Btrieve/Pervasive SQL, Steady from (1990-1998)\n** Sybase/SQL Server, Steady from (1994-1995) \n* ''Development''\n** Oracle Forms, Versions (10g, 9i, 6i, 4.5), Steady since 1998\n** Oracle Reports, Versions (10g, 9i, 6i, 2.5), Steady since 1998\n** Oracle Designer, Versions (9i, 8), 50% since 2000 \n** Oracle Apps Object Libraries, Versions (11i,11.03, 10.7SC), (Steady from 1998 - 2000), 10% since 2000\n** Oracle Apps Modules (INV, BOM, ENG, WIP, PUR, OM, AR), (Steady from 1998 - 2000), 10% since 2000\n** Magic Enterprise Developer, Versions (3,4,5,6), Steady from (1990-1998)\n** Gupta Developer, Steady from (1994-1995)\n''Methodologies''\n* Agile principles started with Tomax in 2003\n* RAD principles started with 3Com in 1993\n* Software and database design patterns started with UWORKS in 2000 \n* Relational database design principles. Self study and application steadily since 1987\n''Education and Training:''\n* ''Degree: ''\n** University of Utah, Salt Lake City UT, B.S. in Political Science, 1989 \n* ''Certifications:''\n** Oracle Associates, 2005\n** CPIM Certification, American Production Inventory Control Society, 1999 \n* ''Additional Training:''\n** Oracle University Online, Professional Subscription to Online Library, 2002 - 2003\n** Oracle University, Extending Oracle Applications Course, 1999\n** Weber State University, CPIM Exam Prep Classes, 1995 - 1997\n** Oracle University, Oracle Apps Implementation - Several, 1994 - 1995\n** Avid reader and researcher of content related to software development best practices.
My view of [[Utah|http://en.wikipedia.org/wiki/Utah]] consists of spending my most of my entire life living here. Exploring what the state has to offer both culturally and geographically is a quest of a lifetime. The origins of its name which is derived from the [[Ute Indian|http://en.wikipedia.org/wiki/Ute_tribe]] language, meaning "people of the mountains" conveys only a hint as to the variety of its terrain. Utah has three distinct geological regions: the [[Rocky Mountains|http://en.wikipedia.org/wiki/Rocky Mountains]], the [[Great Basin|http://en.wikipedia.org/wiki/Great Basin]], and the [[Colorado Plateau|http://en.wikipedia.org/wiki/Colorado Plateau]].
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler references'></div>\n<div class='title' macro='view title'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>